| | 1 | = Upgrade Instructions = |
| | 2 | [[TracGuideToc]] |
| | 3 | |
| | 4 | A Trac environment sometimes needs to be upgraded before it can be used with a new version of Trac. This document describes the steps necessary to upgrade an environment. |
| | 5 | |
| | 6 | '''Note''': ''Environment upgrades are not necessary for minor version releases unless otherwise noted. For example, there's no need to upgrade a Trac environment created with (or upgraded) 0.8.0 when installing 0.8.4 (or any other 0.8.x release).'' |
| | 7 | |
| | 8 | == General Instructions == |
| | 9 | |
| | 10 | Typically, there are four steps involved in upgrading to a newer version of Trac: |
| | 11 | |
| | 12 | === Update the Trac Code === |
| | 13 | |
| | 14 | Get the new version of Trac, either by downloading an offical release package or by checking it out from the [http://projects.edgewall.com/trac/wiki/SubversionRepository Subversion repository]. |
| | 15 | |
| | 16 | If you're doing a major version upgrade (such as from 0.8 to 0.9), it is ''highly'' recommended that you first remove the existing Trac code. To do this, you need to delete the `trac` directory from the Python `lib/site-packages` directory. You may also want to remove the Trac `cgi-bin`, `htdocs`, `templates` and `wiki-default` directories that are commonly found in a directory called `share/trac` (the exact location depends on your platform). |
| | 17 | |
| | 18 | If you have a source distribution, you need to run |
| | 19 | {{{ |
| | 20 | python setup.py install |
| | 21 | }}} |
| | 22 | |
| | 23 | to install the new version. If you've downloaded the Windows installer, you execute it, and so on. |
| | 24 | |
| | 25 | === Upgrade the Trac Environment === |
| | 26 | |
| | 27 | Unless noted otherwise, upgrading between major versions (such as 0.8 and 0.9) involves changes to the database schema, and possibly the layout of the [wiki:TracEnvironment environment directory]. Fortunately, Trac provides automated upgrade scripts to ease the pain. These scripts are run via [wiki:TracAdmin trac-admin]: |
| | 28 | {{{ |
| | 29 | trac-admin /path/to/projenv upgrade |
| | 30 | }}} |
| | 31 | |
| | 32 | This command will do nothing if the environment is already up-to-date. |
| | 33 | |
| | 34 | Note that if you are using a PostgreSQL database, this command will fail with the message that the environment can only be backed up when you use an SQLite database. This means that you will have to backup the repository and the database manually. Then, to perform the actual upgrade, run: |
| | 35 | {{{ |
| | 36 | trac-admin /path/to/projenv upgrade --no-backup |
| | 37 | }}} |
| | 38 | |
| | 39 | === Update the Trac Documentation === |
| | 40 | |
| | 41 | Every [wiki:TracEnvironment Trac environment] includes a copy of the Trac documentation for the installed version. As you probably want to keep the included documentation in sync with the installed version of Trac, [wiki:TracAdmin trac-admin] provides a command to upgrade the documentation: |
| | 42 | {{{ |
| | 43 | trac-admin /path/to/projenv wiki upgrade |
| | 44 | }}} |
| | 45 | |
| | 46 | Note that this procedure will of course leave your `WikiStart` page intact. |
| | 47 | |
| | 48 | === Restart the Web Server === |
| | 49 | |
| | 50 | In order to reload the new Trac code you will need to restart your web server (note this is not necessary for [wiki:TracCgi CGI]). |
| | 51 | |
| | 52 | == Specific Versions == |
| | 53 | |
| | 54 | The following sections discuss any extra actions that may need to be taken to upgrade to specific versions of Trac. |
| | 55 | |
| | 56 | == From 0.9.x to 0.10.x == |
| | 57 | |
| | 58 | Due to some changes in the Wiki syntax, you may notice that certain parts of your pages no longer work as expected: |
| | 59 | * Previously, links to images would result in that image being embedded into the page. Since 0.10, links to images remain plain links. If you want to embed an image in the page, use the `[[Image]]` macro. |
| | 60 | * You can no longer use `%20` in wiki links to encode spaces. Instead, you should quote the name containing spaces (for example, use `wiki:"My page"` instead of `wiki:My%20page`.) |
| | 61 | |
| | 62 | Several enhancements have been made to the version control subsystem, in particular for the support of scoped repositories has been improved. |
| | 63 | It is recommended that you perform a [TracAdmin#InteractiveMode trac-admin] '''`resync`''' operation to take advantage of these improvements. |
| | 64 | |
| | 65 | Also note that the argument list of the [TracAdmin trac-admin] '''`initenv`''' command has changed: there's a new argument for determining the type of version control system. The old usage was: |
| | 66 | {{{ |
| | 67 | initenv <projectname> <db> <repospath> <templatepath> |
| | 68 | }}} |
| | 69 | The new usage is: |
| | 70 | {{{ |
| | 71 | initenv <projectname> <db> <repostype> <repospath> <templatepath> |
| | 72 | }}} |
| | 73 | If you're using any scripts that automate the creation of Trac environments, you will need to update them. If you're using Subversion, specify `svn` for the `<repostype>` argument. |
| | 74 | |
| | 75 | == From 0.9.3 to 0.9.4 == |
| | 76 | |
| | 77 | There is a bug in Pysqlite 1.x that causes reports using the "%" character for `LIKE` clauses or date formatting to fail. You will need to use escape the percent characters with another: "%%". |
| | 78 | |
| | 79 | == From 0.9.x to 0.9.3 or later == |
| | 80 | |
| | 81 | If you are using plugins you might need to upgrade them. See http://projects.edgewall.com/trac/milestone/0.9.3 for further details. |
| | 82 | |
| | 83 | == From 0.9-beta to 0.9 == |
| | 84 | |
| | 85 | If inclusion of the static resources (style sheets, javascript, images) is not working, check the value of the `htdocs_location` in trac.ini. For [wiki:TracModPython mod_python], [wiki:TracStandalone Tracd] and [wiki:TracFastCgi FastCGI], you can simply remove the option altogether. For [wiki:TracCgi CGI], you should fix it to point to the URL you mapped the Trac `htdocs` directory to (although you can also remove it and then [wiki:TracCgi#MappingStaticResources map the static resources]). If you're still having problems after removing the option, check the paths in the `trac/siteconfig.py` file and fix them if they're incorrect. |
| | 86 | |
| | 87 | If you've been using plugins with a beta release of Trac 0.9, or have disabled some of the built-in components, you might have to update the rules for disabling/enabling components in [wiki:TracIni trac.ini]. In particular, globally installed plugins now need to be enabled explicitly. See TracPlugins and TracIni for more information. |
| | 88 | |
| | 89 | If you want to enable the display of all ticket changes in the timeline (the “Ticket Details” option), you now have to explicitly enable that in [wiki:TracIni trac.ini], too: |
| | 90 | |
| | 91 | {{{ |
| | 92 | [timeline] |
| | 93 | ticket_show_details = true |
| | 94 | }}} |
| | 95 | |
| | 96 | == From 0.8.x to 0.9 == |
| | 97 | |
| | 98 | [wiki:TracModPython mod_python] users will also need to change the name of the mod_python handler in the Apache HTTPD configuration: |
| | 99 | {{{ |
| | 100 | from: PythonHandler trac.ModPythonHandler |
| | 101 | to: PythonHandler trac.web.modpython_frontend |
| | 102 | }}} |
| | 103 | |
| | 104 | If you have [http://initd.org/tracker/pysqlite PySQLite] 2.x installed, Trac will now try to open your SQLite database using the SQLite 3.x file format. The database formats used by SQLite 2.8.x and SQLite 3.x are incompatible. If you get an error like ''“file is encrypted or is not a database”'' after upgrading, then you must convert your database file. |
| | 105 | |
| | 106 | To do this, you need to have both SQLite 2.8.x and SQLite 3.x installed (they have different filenames so can coexist on the same system). Then use the following commands: |
| | 107 | {{{ |
| | 108 | $ mv trac.db trac2.db |
| | 109 | $ sqlite trac2.db .dump | sqlite3 trac.db |
| | 110 | }}} |
| | 111 | |
| | 112 | To update multiple database files at once on linux you may use the following command (replace {{{/var/trac}}} withe the location where your trac installtions reside): |
| | 113 | {{{ |
| | 114 | $ find /var/trac/ -iname "trac.db" | xargs -i bash -c "mv {} {}.2; sqlite {}.2 .dump | sqlite3 {};" |
| | 115 | }}} |
| | 116 | |
| | 117 | Remember the give the webserver write permission to trac.db. |
| | 118 | |
| | 119 | After testing that the conversion was successful, the `trac2.db` file can be deleted. For more information on the SQLite upgrade see http://www.sqlite.org/version3.html. |
| | 120 | |
| | 121 | == From 0.7.x to 0.8 == |
| | 122 | |
| | 123 | 0.8 adds a new roadmap feature which requires additional permissions. While a |
| | 124 | fresh installation will by default grant ROADMAP_VIEW and MILESTONE_VIEW |
| | 125 | permissions to anonymous, these permissions have to be granted manually when |
| | 126 | upgrading: |
| | 127 | {{{ |
| | 128 | $ trac-admin /path/to/projectenv permission add anonymous MILESTONE_VIEW |
| | 129 | $ trac-admin /path/to/projectenv permission add anonymous ROADMAP_VIEW |
| | 130 | }}} |
| | 131 | |
| | 132 | ----- |
| | 133 | See also: TracGuide, TracInstall |


Justin Comerford
Front-End Web Developer
Business-Computer-Office-Laptop
by
rawpixel
is licensed under
CC BY 2.0
FEATURED WORK
Animal Card
First project through Udacity.
CodePen
Mock-up to Article
Second project through Udacity.
CodePen
Pixel Art Maker
Third project through Udacity.
CodePen


speechrecognizer Module allows you to use full features of Android SpeechRecognizer API.
You can
1) use three actions of Free Form, Web search and Hands free.
2) select the language from many languages which SpeechRecognizer service supports.
3) receive all events from SpeechRecognizer service (error, changeRms etc.)
4) check the supported features of Android device that SpeechRecognizer module is running on.
5) do safely everything because of SpeechRecognizer module handles the differrce of API Lavels (currently support API Level 8-16)
6) make your own custom UI design for SpeechRecognize. SpeechRecognizer module uses direct mode of SpeechRecognizer API.
Android min-sdk: Android 2.2 (API Level 8) Titanium 2.1.0.GA
To access this module from JavaScript, you would do the following:
var speechrecognizerModule = require("jp.isisredirect.speechrecognizer");
The speechrecognizerModule variable is a reference to the Module object.
To create speechrecognizer object from JavaScript, you would do the following:
var speechrecognizer = speechrecognizerModule.createSpeechRecognizer();
The speechrecognizer variable is a reference to the SpeechRecognizer object.
speechrecognizerModule object is coresponding to the static methods on SpeechRecognizer API.
On the other hand, SpeechRecognizer object is coresponding to the non static methods.
Whether Android device supports SpeechRecognizer.
true if Android device supports SpeechRecognizer.
Whether Android device supports Voice Search Hands Free feature.
true if Android device supports Voice Search Hands Free feature.
Requests the language informations supported by SpeechRecognizer.
This method's result is priovided by languagedetails event.
More technical details is here:
http://developer.android.com/reference/android/speech/RecognizerIntent.html#ACTION_GET_LANGUAGE_DETAILS
create SpeechRecognizer object.
Properties to set on a new object, including any defined by SpeechRecognizer
Fired when the results of speechrecognizerModule.getLanguageDetails() are ready after required by speechrecognizerModule.getLanguageDetails().
Source object that fired the event.
Name of the event fired.
represents the current language preference this user has specified - a locale string like "en-US".
represents the languages supported by this implementation of voice recognition - a Array of strings like "en-US", "cmn-Hans-CN", etc.
specifies the action of SpeechRecognizer.
there are three actions
1: Speech
2: Web search
3: Voice Search Hands Free
More technical details is here:
http://developer.android.com/reference/android/speech/RecognizerIntent.html#ACTION_RECOGNIZE_SPEECH
http://developer.android.com/reference/android/speech/RecognizerIntent.html#ACTION_WEB_SEARCH
informs the recognizer to perform speech recognition in a language.
You can use one of supported_languanges property of languagedetails event.
Android device setting
Informs the recognizer which speech model to prefer when performing action.
available values are :
"freeform" (speechrecognizerModule.FREEFORM predefined)
"websearch" (speechrecognizerModule.WEBSEARCH predefined)
"freeform"
specifies limit on the maximum number of results to return when performing action.
1
indicate whether partial results should be returned by the recognizer as the user speaks.
false
be used with action web search, to indicate whether to only fire web searches in response to a user's speech.
(note : this property may have no effect in this time. Because of direct mode recognition used in module, or the implementation of the recognizer service on current Android device.
false
can be used with action web search to indicate the referer url of a page in which speech was requested.
(note : this property may have no effect in this time. Because of direct mode recognition used in module, or the implementation of the recognizer service on current Android device.
""
indicates that a "hands free" voice search was performed while the device was in a secure mode
Starts listening for speech.
Cancels the speech recognition.
Stops listening for speech.
release recognizer resources.
gets error message from error code which is provided in error event.
error code received in error event.
error string that is correcponding to error code.
Source object that fired the event.
Name of the event fired.
The user has started to speak.
Source object that fired the event.
Name of the event fired.
More sound has been received.
The purpose of this function is to allow giving feedback to the user regarding the captured audio.
There is no guarantee that this method will be called (depend on implementation of the recognizer service).
Source object that fired the event.
Name of the event fired.
The sound level in the audio stream has changed. There is no guarantee that this method will be called. There is no guarantee that this method will be called (depend on implementation of the recognizer service).
Source object that fired the event.
Name of the event fired.
the new RMS dB value
Called after the user stops speaking.
Source object that fired the event.
Name of the event fired.
A network or recognition error occurred.
Source object that fired the event.
Name of the event fired.
error code
Reserved for adding future events.
Source object that fired the event.
Name of the event fired.
Called when partial recognition results are available.
Source object that fired the event.
Name of the event fired.
the possible recognition results, where the first element is the most likely candidate.
same size array as results, includes the confidence score of each result.
This value is optional and might not be provided.
The confidence score is ranging from 0.0 to 1.0, or -1 to represent an unavailable confidence score.
More technicall details :
http://developer.android.com/reference/android/speech/SpeechRecognizer.html#CONFIDENCE_SCORES
Called when recognition results are ready.
Source object that fired the event.
Name of the event fired.
the possible recognition results, where the first element is the most likely candidate.
same size array as results, includes the confidence score of each result.
This value is optional and might not be provided.
The confidence score is ranging from 0.0 to 1.0, or -1 to represent an unavailable confidence score.
More technicall details :
http://developer.android.com/reference/android/speech/SpeechRecognizer.html#CONFIDENCE_SCORES
The most simply example of usage of SpeechRecoginither module is below:
var speechrecognizerModule = require('jp.isisredirect.speechrecognizer');
Ti.API.info("module is => " + speechrecognizerModule);
var speechrecognizer = speechrecognizerModule.createSpeechRecognizer();
Ti.API.info("proxy is => " + speechrecognizer);
speechrecognizer.addEventListener(speechrecognizerModule.READYFORSPEECH, function(e) {
// notify to user that Recognize is ready
});
speechrecognizer.addEventListener(speechrecognizerModule.BEGINNINGOFSPEECH, function(e) {
// notify to user that Recognizer detected user's voice
});
speechrecognizer.addEventListener(speechrecognizerModule.RESULTS, function(e) {
// recognized results in e.results
});
speechrecognizer.start();
For more deep usage, you see /example/app.js
Kastumi ISHIDA (isis re-direct) in k.i.office.
<EMAIL_ADDRESS>Copyright (c) 2013 Katsumi ISHIDA. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Three quarters of a million nomads from across Mongolia now inhabit the “Ger Areas” – a ring of unplanned communities and low-income neighborhoods surrounding the capital city of Ulaanbaatar. In the next decade these areas are expected to grow by an estimated 400,000 additional residents, making the Ger Areas of Ulaanbaatar one of the largest unplanned settlements in Asia.
A key challenge facing the city government as it struggles to provide water, education, transportation, and other basic urban services to the Ger Areas is a shortage of good data. Current maps of Ulaanbaatar do not represent the existing Ger Areas in much detail. Satellite imagery accessible to the city is often of a low resolution or obscured by cloud cover. Without good geospatial data, planning for the delivery of basic services is very difficult.
Working with the City of Ulaanbaatar, The Asia Foundation is collecting high-quality imagery and elevation data for the city using Unmanned Aerial Vehicles (UAVs) and earth-imaging satellites.  And in a bid to make this information open and accessible to all, the maps were shared with OpenStreetMap (OSM), a world-wide, community-driven mapping project.


Before Change
// simple TCN model.
max_len = 100
max_features = 50
i = Input(shape=(max_len,))
x = Embedding(max_features, 16)(i)
x = TCN(nb_filters=12,
dropout_rate=0.5, // with dropout here.
kernel_size=6,
dilations=[1, 2, 4])(x)
x = Dropout(0.5)(x) // and dropout here.
x = Dense(1, activation="sigmoid")(x)
model = Model(inputs=[i], outputs=[x])
if os.path.exists("tcn.npz"):
// Load checkpoint if file exists.
w = np.load("tcn.npz", allow_pickle=True)["w"]
After Change
// Make inference.
out2 = reloaded_model.predict(inputs)[0, 0]
print("*" * 80)
print("Inference after loading:", out2)


NAUZENE - trisodium citrate dihydrate, dextrose and fructose syrup
Alva-Amco Pharmacal Companies, Inc.
Disclaimer: Most OTC drugs are not reviewed and approved by FDA, however they may be marketed if they comply with applicable regulations and policies. FDA has not evaluated whether this product complies.
Active ingredients (in each 15-mL tablespoon)
Dextrose (glucose) 4.35 g...........................anti-nausea
Levulose (fructose) 4.17 g...........................anti-nausea
Sodium citrate dihydrate, 0.921 g................antacid
Uses
For the relief of nausea associated with upset stomach, including that due to overindulgence in food or drink.
Do not use if you have Hereditary Fructose Intolerance (HFI). This product contains fructose.
Ask a doctor before use if you
- you have diabetes because this product contains sugar
- are on a sodium-restricted diet.
Ask a doctor or pharmacist before use if you are taking any other medications. Antacids may interact with certain prescription drugs.
When using this product do not take more than 6 does in a 24-hour period.
Stop use and ask a doctor if nausea lasts more than two weeks or recurs frequently.
If pregnant or breastfeeding, ask a health professional before use.
Keep out of reach of children. In case of overdose, get medical help or contact a Poison Control Center right away.
Directions
- Read all package directions and warnings before use and use only as directed.
- Adults: 1 - 2 tablespoons (15 - 30 mL).
- Children: Consult a doctor for appropriate dosage.
- Dosage may be repeated after 30 minutes not to exceed 6 doses in a 24-hour period unless advised by a doctor.
- For maximum effectiveness never dilute Nauzene or drink fluids of any kind immediately before or after taking Nauzene.
- Nauzene Liquid is intended for use by normally healthy persons only.
- Persons under 18 years of age should use only as directed by a doctor.
Other information
- Sodium content 193 mg/tablespoon (15 mL).
- Store at room temperature.
- ** Contents sealed: Each bottle of Nauzene Liquid has a tamper evident seal around the cap and a safety seal under the cap. Do not use if either of these seals appears broken. NOTE: Nauzene is not intended as a substitute for a balanced nutritional diet or as an electrolyte replenishment.
- Serious side effects associated with the use of this product may be reported to the phone number provided below.
Inactive ingredients
Corn syrup, FDC Red No. 40 lake, flavor, fructose syrup, glycerin, methylparaben, phosphoric acid, purified water.
Questions? 1-800-792-2582
Alva-Amco Pharmacal Companies, Inc.


DANTE'S PEAK A film review by Chuck Dowling Copyright 1997 Chuck Dowling
Dante's Peak (1997) *1/2 out of ***** - Cast:Pierce Brosnan, Linda Hamilton, Charles Hallahan. Writer:Leslie Bohem. Director:Roger Donaldson.
Much has been said about the "return" of the Irwin Allen-style disaster film. I don't think that the comparison is entirely accurate. Sure there were lots of cheesy "disaster" movies in the 70s, "Airport", "The Towering Inferno", "The Poseidon Adventure" and "Earthquake" are just a few. What made those movies watchable was the fact that every character in the film was played by a HUGE star. That made it tolerable enough. Nowadays, all the money goes to the special effects, so we're stuck with maybe one star, one minor star, and a huge group of bit actors or unknowns. That's not a lot of fun.
"Dante's Peak" is the first of two volcano movies to be released in 1997. "Volcano", the other one, is set to be released later in the year. Even though it has the dumber title, I think that "Volcano" should easily be superior to this insult to our intelligence. The premise for "Volcano" sounds interesting, an unknown volcano underneath the city of Los Angeles erupts. The premise of "Dante's Peak" is limp. Scientists think a volcano may erupt in a small northwestern town and spend the first hour of the film debating whether or not to evacuate the town. The first hour of the film is hereby proclaimed worthless, because everyone in the theater KNOWS the volcano is going to erupt. That's why we're there.
Brosnan plays volcano expert (keep that in mind, he's an EXPERT) Harry Dalton. In true disaster-movie style, he has suffered some sort of trauma due to a volcano. In the first scene in the movie we see his girlfriend killed when a hot rock hits her in the head. While this may seem tragic on paper and it must be heartwrenching in real life, on film its pure cornball. Hard to keep from laughing at that. And thus the tone is set for the film.
Flash forward some months to now, or whatever. We see a building. On the building is a big sign which reads "United States Geological Institute" (or something very similar). Then these words appear on the screen: "United States Geological Institute" telling us that we indeed are looking at the "United States Geological Institute". This is the mentality we are dealing with here. We are letting people make big budget motion pictures who don't realize that we can READ THE WORDS WRITTEN ON THE BUILDING. Director Roger Donaldson we salute you.
Anyway, inside the "United States Geological Institute" we learn that there is volcano activity in Dante's Peak and so Dalton's boss sends his best man, volcano expert Harry Dalton, to investigate. Keep in mind that Harry Dalton is both a volcano expert and the best man they've got at the "United States Geological Institute".
Meanwhile in Dante's Peak, two punk teenagers decide to go skinny dipping in a hot spring.  We're watching a slasher movie here folks.
Volcano expert Harry Dalton arrives in town and is escorted around by the town's mayor and coffee shop owner (Hamilton). The mayor is divorced with two kids, and gee whiz, I wonder if hunky Brosnan and sultry Hamilton will end up together at the end?
Anyway, volcano expert Harry Dalton makes his expert conclusion that the volcano is going to erupt and the town should evacuate. But before they can begin, his boss and a team of volcano experts show up. They listen to his expert opinion, and immediately brush it off. His boss basically reacts like "I know you're an expert and my best man and all, but next time, why don't you just stick to what you know?"
The volcano teams goes up to the volcano to send some sort of robot down the volcano to take scientfic readings. Again, slasher-movie mentality takes over. The robot malfunctions, creepy music starts to play, and one scientist goes down, alone and against all logical advice, to repair it. The scene plays as if this action angers the volcano, and the volcano makes rocks fall onto the scientist. I know that's not how it's intended to seem, but it does.
 For various inane reasons which I don't even feel like talking about, Brosnan, Hamilton, and the kids all travel TOWARDS the volcano instead of away from it, and then spend the rest of the film trying to get back out. Thank god volcano expert Harry Dalton is along to help out. For example, when journeying across a lake to escape a rapid flowing river of lava, Dalton notices that the lake has turned to acid. He is able to scientifically deduce this because the bottom of the boat is being eaten away by acid. His expert advice to the group is "don't touch the water". Thank god he's with them.
"Dante's Peak" is an hour of nothing, twenty minutes of special effects (all of which are in the trailers), and then has just about the most ANTI-climatic ending to any disaster movie ever. I could have written the script in less time than it takes to actually run the film. I've got my money riding on "Volcano".
-- Chuck Dowling Visit Chuck's Movie Reviews at http://users.southeast.net/~chuckd21/ Over 1,600 movies rated and/or reviewed! Movie news, box office reports, film related links, and reader's polls and reviews.
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


Punta Gorda Christmas Parade ready to hit the street this weekend
by WFTX Digital TeamPUNTA GORDA, Fla. -- Southwest Florida residents and visitors are invited to come out and enjoy a Punta Gorda holiday tradition this weekend.
On Saturday, December 14th, the Charlotte County Chamber of Commerce will be hosting the 41st Annual Christmas Parade in Punta Gorda.
The parade will begin at the Charlotte Performing Arts Center (CPAC) at 12:00 PM and will travel on Carmalita Street to Taylor Road, ending at the Charlotte Harbor Event & Conference Center.
Motorists should expect travel delays during the parade and are encouraged to find an alternative route between 12:00 PM and 1:30 PM if possible.


THE AVENGERS
Release Date: August 14, 1998 Starring: Ralph Fiennes, Uma Thurman, Sean Connery, Jim Broadbent, Fiona Shaw, Patrick Macnee, Eddie Izzard Directed by: Jeremiah S. Chechik Distributed by: Warner Brothers MPAA Rating: PG (action violence, some innuendo) URL: http://www.execpc.com/~kinnopio/reviews/1998/avengers.htm
Making the jump from television series to major American motion picture is a timeless and storied art mastered by few directors and filmmakers. At first glance, the transition might not seem nearly as difficult as it is, but upon closer examination it becomes apparent that the differences between the two media are large enough to cause significant problems. The episodic fallback of TV - that is, if it doesn't happen this week, it can always happen next week - is not present; and directors who have become used to directing forty-two-minute segments must suddenly deal with at least ninety and sometimes upwards of 120 minutes of footage. THE AVENGERS, a spinoff of the popular 1960's British show of the same name, is neither the first nor the last to fail at making the jump; if anything, its failure to come together was imminent enough.
Everyone involved here has seen better days, including Director Jeremiah Chechik. His last big-screen feature, DIABOLIQUE, was a suspenseful and engaging mystery thriller. Here, his work approaches comic book territory in an ignorant fashion similar to that of the last two BATMAN features. The characters are larger than life - in a bad sense - and are never quite on the audience's level. All three principals are played by A-list names, but each of the three have seen better days. Connery's work here is uncharacteristically drab, and not since 1996's THE ROCK has he been much fun. Ralph Fiennes and Uma Thurman, too, are fine for the roles apart but fail to start much in the way of romantic chemistry together.
If anything, the movie is fun to watch for several reasons, although you may have trouble convincing a friend to see the movie with you. Even though Connery is rather drab, it's been over two years since the infamous Brit has been on the scene; any dialogue he speaks is invariably fun to listen to. Also, the movie's one bit of vulgar language comes both from an unlikely character and at a horribly unlikely moment; it's over and done so fast that you might not believe your ears. Finally, in typical comic book fashion, the bad guys are surly, hulking fellows with third-grade vocabularies or women in tight catsuits. Both elicit attention from the audience, for varying reasons and lengths of time.
But any ground made there is lost in the terribly convoluted and laborious plot that THE AVENGERS sports. John Steed (Fiennes) and Emma Peel (Thurman) are suave and debonaire secret agents, charged with finding the cause in a recent sabotage of a British defense mechanism called Prospero. Prospero, it seems, has the ability to create a weather "shield" around the British Isles should the Union Jack come under siege. In the wrong hands (August de Wynter, played by Connery), though, the controllable weather turns into an extortion plan. De Wynter will bombard the isles with typhoons and lightning unless paid an appropriate sum. Several questions are left completely or partially unanswered throughout the movie, including an Emma Peel clone. Overall, THE AVENGERS is too goofy to be much fun; and with luck its box office returns will be nil, sparing us of a sequel.
FINAL AWARD FOR "THE AVENGERS": 1.5 stars - a below average movie.
-- Craig Roush<EMAIL_ADDRESS>-- Kinnopio's Movie Reviews http://www.execpc.com/~kinnopio
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


Hello PrimeAcademy! My name is Julian Keefe, and I am a current business/design/ tech hybrid looking to make the leap into full time development. I have experience in UX/ UI design, became involved in my univiersity's startup ecosysystem, and currently work at a top Salesforce implementation firm helping companies move their IT infrastructure to the cloud. My ultimate dream in learning to code is to be able to bring my side-projects from wireframes to fully functional web applications, and work at a company or startup that I believe in the mission and team.
Major: Informatics
Minor: Human Centered Computing
-Admin Certified. Community Cloud Certified. Current Business Analyst.
-PHP, Ruby, Python, SQL
-UX, Sketch, UI, basic HTML/CSS
Skillquestor is an e-learning application centered around learning hobbies and skills using the Internet and good design. As part of my senior capstone project, myself and two other classmates created an iOS app. I served as the priamry UI designer and also worked on creating the database for the app. Listed is an updated UI for a Web app I would like to create.
See Interactive PrototypePodcast notes is an app idea I have had for 2 years centering around adding notetaking and documentation to the growing podcast market. I created this with 2 other classmates as part of a PHP course, and also created mockups for a fully -featured version that would incorporate APIs and social sharing to allow users to share notes and connect with content creaters.
Prototype GitHubHoopsUp is a basketball app I co-founded with a classmate (the one who suggested Prime Academy to me) as part of a student entreprenurship competition @ IU know as the BEST Program. We were one of 3 teams selected and granted with $5,000 in funding to bring our concept to life. The application allowed schools and community centers to rent out their basketball gyms for pickup games for members on our platform. While we had mild success, the project was put on hold due to lack of proper infrastructure. This experience was a huge motivator for me to learn to how to program as I was able to create a successful MVP with mild hype, but was held back by not being able to scale.
PrototypeI lead the design and implementation of a SquareSpace site for the IUPUI Dance Marathon, which raised over $100,000 for Riley Children's hospital.
Won First Place at IU Target Case Competition and $2500 prize. Our team came up with a concept for new roommates to connect on Facebook and create pre-populated carts and shopping lists for freshman dorms.
PrototypeStadiumHero was created in a 24 hour hacakthon and polished over the next 2 weeks for the IUPUI Student entreprenurship pitch contest. Our team created a concept and prototype for an AR gamified mobile application to use at sports stadiums to increase fan engagement.
PressCompeted in 48 hour hacakthon focused on projects to help the city of Indianapolis. Our team created a prototype for an augmented reality game which would provide points, leaderboards, and challenges around doing service in the city.
PrototypePerformed market research for second place project named Canvas that helped capture company-specific knowledge to pass down to new workers.


Spacebar to go forward,
p to go backwards,
Presentable to go anywhere!
Presentable is a small script/plugin/widget/thingy that adds a table of contents to HTML based presentations. You can see an example of it in action in this very presentation.
If you're interested in the presentation framework itself, which is kind of awesome, you should talk to this guy. He made it. It's called Reveal.js and as you may have heard, it's kind of awesome.
I'm glad you asked.
Presentable creates a table of contents by parsing the HTML of the presentation. It's mainly looking for header tags, but you can identify other elements too as you'll see.
Reveal.js, html5slides, io-2012-slides, Shower and impress.js are supported out of the box and Presentable can theoretically handle other frameworks, although your mileage may vary.
Presentable should work modern browsers like Firefox, Chrome, Safari, WebKit et al and IE9/10

This will be the title in the table of contents

This will not

table of contents title

No title

<link rel="stylesheet" href="path/to/presentable.css">

Your Presentation Title Here

Table of Contents

Reveal.initialize({
// Other configs...
dependencies: [
// Not all dependencies shown...
{ src: 'lib/js/data-markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
// presentable.js must come after data-markdown.js
{ src: 'path/to/presentable.js', callback: function() { presentable.toc({framework: "revealjs"}); } }
]
});
Reveal.initialize({
// Other configs...
dependencies: [
// Not all dependencies shown...
{ src: 'path/to/presentable.js', callback: function() { presentable.toc({framework: "revealjs"}); } }
]
});
See the Configuration slide for more details on the object being passed to presentable.toc().
See Presentable wiki for instructions covering older versions of Reveal.js.
(click here for an example integration)
<link rel="stylesheet" href="path/to/presentable.css">

Table of Contents

See the Configuration slide for more details on the object being passed to presentable.toc().
(click here for an example integration)
<link rel="stylesheet" href="path/to/presentable.css">
<slide>
<hgroup>

Table of Contents

</hgroup>

</slide>

require(['order!path/to/presentable.min', 'order!../slide_config', 'order!modernizr.custom.45394',
'order!prettify/prettify', 'order!hammer', 'order!slide-controller',
'order!slide-deck'], function(presentable) {
presentable.toc({
framework: "io2012slides"
});
});
See the Configuration slide for more details on the object being passed to presentable.toc().
(click here for an example integration)
<link rel="stylesheet" href="path/to/presentable.css">

Table Of Contents

See the Configuration slide for more details on the object being passed to presentable.toc().
(click here for an example integration)
<link rel="stylesheet" href="path/to/presentable.css">

Table Of Contents

See the Configuration slide for more details on the object being passed to presentable.toc().
Several configurations can be passed to presentable.toc(). The options and their default values are demonstrated below.
presentable.toc({
// Custom presentation structure. See following slide.
// "framework" is ignored
data: {"slides": []},
// Accepts "revealjs", "html5slides", "io-2012-slides", "shower", or "impressjs".
// "data" is ignored.
framework: "",
// keyCode used for keyboard navigation back to TOC slide.
keyCode: 84 // 84 = 't' key, false to disable
// Text displayed in TOC when no title is found. See following slide.
noTitle: "Untitled Slide"
// Untitled slides are excluded from TOC
hideNoTitle: false
// Reload when Presentable link is clicked. For frameworks without navigation API
reload: false,
// HTML IDs, classes, and elements to be considered slide titles
titles: "h1,h2,h3,.presentable-title",
// URL hash pattern
urlHash: "#"
});
"framework" or "data" is required. The rest are optional.
A JSON object can be passed to presentable.toc() making it possible to generate a table of contents for otherwise unsupported presentation frameworks.
The JSON object should have the following format:
var customData = {"slides": [
{"index": "1", "title": "slide 1"},
{"index": "2", "title": "slide 2", "toc": true},
{"index": "3", "title": "slide 3", "nested": [
{"index": "3/0", "title": "slide 3/0"},
{"index": "3/1", "title": "slide 3/1"}
]},
{"index": "4", "title": "slide 4"},
...
]};
presentable.toc({
data: customData,
// Other config options
});
"toc": true identifies slide containing #presentable-toc.
Presentable can be used with any language!
The following demonstrates the config options you might want to change based on your language.
presentable.toc({
// Update with your language of choice
noTitle: "Untitled Slide"
// Use keyCode suitable for your language / keyboard
// http://www.asquare.net/javascript/tests/KeyCode.html
keyCode: 84 // 84 = t
});
Presentable exposes the slideTitle() function which returns the title of a slide identified by an index which matches the URL hash corresponding to that slide.
presentable.slideTitle("11"); // returns "Bonus! Getting a Slide Title"
presentable.slideTitle("0/1"); // returns "Table of Contents"
One possible use is to track traffic to specific slides by passing the slide title to your web analytics provider each time it is visited.
by Frederick C. Feibel


This wallet is the consequence of an effort to create a fully secure and easy-to-use interface that needs no trust.
It features:
As you notice, the site and documentation is still under construction. However, here are some specs:
-
User login : 60K rounds of PBKDF2-HMAC-SHA512.
-
Secret hash: Hash of answers is encrypted with a derivative of password hash + PIN using 10K rounds of PBKDF2-HMAC-SHA512 + AES-256 and kept in DB.
-
Encrypted PIN: Encrypted with user information hash using 10K rounds of PBKDF2-HMAC-SHA512 + AES-256 and kept in DB.
Master Private Key: Generated with PIN + User information hash through 30K rounds of PBKDF2.
-
Wallet Addresses: Multi-signature key pairs generated through cross-matching children of the master node. Receiving addreses are generated and managed in the server by using the master public key.
All operations takes place in client-side JS and all password derivation is completed with user's unique salt.
This scheme makes password and PIN recovery possible by providing high entropy for all encrypted data.
Very special thanks to Vibernoff for AsmcryptoJS library and all BitcoinJS devs.


Blacksmith Altran:
Is this from the blade of the Sword of Solidarity? If only we could find the other half!


src/hamiltonian/ProtrusionConstraint.js
/*
todo:
- what about the potential when a focal point detaches?
- postsetpixlistener needs sourcei. This is now done with a bit of a hack,
by caching the source of every deltaH evaluation - which should be equal to
the source used for the setpix event. But this may go wrong if things ever happen
in parallel.
Alternative: let the setpix method have an optional sourcei input argument that it
can pass on to its listeners?
*/
import SoftConstraint from "./SoftConstraint.js"
import ParameterChecker from "./ParameterChecker.js"
import Centroids from "../stats/Centroids.js"
import CentroidsWithTorusCorrection from "../stats/CentroidsWithTorusCorrection.js"
/** @experimental */
class ProtrusionConstraint extends SoftConstraint {
constructor( conf ){
super( conf )
this.focalpoints = {
num : {},
points : {} } // track all the cell's focal points
this._lastrequestedcopy = []
}
confChecker(){
let checker = new ParameterChecker( this.conf, this.C )
checker.confCheckParameter( "P_DETACH", "KindArray", "NonNegative" )
checker.confCheckParameter( "G_PROTRUSION", "KindArray", "NonNegative" )
// add one for N_Protrusion.
}
G( kind ){
return this.conf["G_PROTRUSION"][kind]
}
distance( p1, p2 ){
let dim = p1.length
let distance = 0
for( let d = 0; d < dim; d++ ){
distance += ( p1[d] - p2[d] )*( p1[d] - p2[d] )
}
return Math.sqrt( distance )
}
getCentroid( cellid ){
let centroids
if( this.C.torus.some( function(value){return value}) ){
centroids = this.C.getStat( CentroidsWithTorusCorrection )
} else {
centroids = this.C.getStat( Centroids )
}
return centroids[cellid]
}
/* ======= Protrusion constraint ======= */
/* Hamiltonian computation */
deltaH ( sourcei, targeti, src_type, tgt_type ){
let deltaH = 0
const src_kind = this.C.cellKind( src_type )
const tgt_kind = this.C.cellKind( tgt_type )
// Penalty P_detach if a focal point detaches (if the copy goes into
// a focal point)
if( this.isFocalPoint( targeti ) ){
deltaH += this.conf["P_DETACH"][tgt_kind]
}
// If the source is a focal point, this means the focal point will move.
// This will change its distance to the center of mass of the cell, and thus
// the potential in H. Update it accordingly.
if( this.isFocalPoint( sourcei ) ){
let centroid = this.getCentroid( src_type )
let sourcep = this.C.grid.i2p( sourcei )
let targetp = this.C.grid.i2p( targeti )
let H_before = this.G( src_kind ) / this.distance( sourcep, centroid )
let H_after = this.G( src_kind ) / this.distance( targetp, centroid )
deltaH += H_after - H_before
}
this._lastrequestedcopy = [sourcei, targeti, src_type, tgt_type]
return deltaH
}
addFocalPoint( i, cellid ){
if( !( cellid in this.focalpoints["num"] ) ){
this.focalpoints["num"][cellid] = 0
}
if( i in this.focalpoints["points"] ){
throw( "Cannot add focal point i " + i + " : is already a focal point!")
}
if( this.C.grid.pixti(i) != cellid ){
throw("Something went wrong! point " + i + " does not belong to cellid " + cellid + "!")
}
this.focalpoints["points"][i] = true
this.focalpoints["num"][cellid]++
}
removeFocalPoint( i, cellid ){
if( !(i in this.focalpoints["points"] ) ){
this.log( cellid )
this.log( this.C.grid.pixti(i))
throw("Cannot remove focalpoint " + i + " : i is not a focal point!")
}
/*if( !( this.C.grid.pixti(i) == cellid ) ){
this.log( cellid )
this.log( this.C.grid.pixti(i))
throw("Something went wrong! focalpoint " + i + " does not belong to cellid " + cellid + "!")
}*/
delete this.focalpoints["points"][i]
this.focalpoints["num"][cellid]--
}
currentNumberFocalPoints( cellid ){
if( cellid in this.focalpoints["num"] ){
return this.focalpoints["num"][cellid]
}
return 0
}
isFocalPoint( i ){
return ( i in this.focalpoints["points"] )
}
lastSource(){
return this._lastrequestedcopy[0] || NaN
}
log( message ){
/* eslint-disable no-console*/
console.log(message)
}
postMCSListener(){
// remove all focalpoints that are no longer at the border.
for( let fp of Object.keys( this.focalpoints["points"] ) ){
if( !this.C.borderpixels.contains( fp ) ){
let cellid = this.C.pixti(fp)
this.removeFocalPoint( fp, cellid )
}
}
}
/* eslint-disable no-unused-vars*/
postSetpixListener( i, t_old, t ){
let kind = this.C.cellKind( t )
// If i was a focalpoint of t_old, it is now lost.
if( this.isFocalPoint(i) ){
this.removeFocalPoint( i, t_old )
}
// The point can only become a focal point if N_PROTRUSION of this kind is nonzero
// and if the new cell is non-background
if( t != 0 && this.conf["N_PROTRUSION"][kind] > 0 ){
// This point becomes a focal point of the new cell t in two cases:
// 1) A copy from a focal point moves that focal point from the sourcei to i,
// but only if the number of focal points is not already too large. If that is the
// case, drop it. (This should only happen when the N_PROTRUSION) changes during
// the simulation, eg via HTML controls.
let sourcei = this.lastSource()
if( this.isFocalPoint( sourcei ) ){
this.removeFocalPoint( sourcei, t )
if( this.currentNumberFocalPoints(t) <= this.conf["N_PROTRUSION"][kind] ){
this.addFocalPoint( i, t )
}
}
// 2) If the copy did not come from a focalpoint, but the cell that has just
// gained a pixel (t) has too few focal points, this pixel becomes a focalpoint.
else if( this.currentNumberFocalPoints(t) < this.conf["N_PROTRUSION"][kind] ){
this.addFocalPoint( i, t )
}
}
}
}
export default ProtrusionConstraint


Train Tracker
Current Train Schedule
Train Name
Destination
Frequency (min)
Next Arrival
Minutes Away
Add Train
Train Name:
Destination:
First Train Time: (HH:mm - military time)
Frequency: (min)
Submit


Computation times¶
02:18.771 total execution time for auto_examples_linear_model files:
- 00:55.339: Early stopping of Stochastic Gradient Descent (
plot_sgd_early_stopping.py
) - 00:25.488: Comparing various online solvers (
plot_sgd_comparison.py
) - 00:23.989: MNIST classfification using multinomial logistic + L1 (
plot_sparse_logistic_regression_mnist.py
) - 00:11.897: Multiclass sparse logisitic regression on newgroups20 (
plot_sparse_logistic_regression_20newsgroups.py
) - 00:05.577: Robust linear estimator fitting (
plot_robust_fit.py
) - 00:03.914: Regularization path of L1- Logistic Regression (
plot_logistic_path.py
) - 00:01.614: Lasso on dense and sparse data (
plot_lasso_dense_vs_sparse_data.py
) - 00:01.579: Theil-Sen Regression (
plot_theilsen.py
) - 00:01.339: Lasso model selection: Cross-Validation / AIC / BIC (
plot_lasso_model_selection.py
) - 00:00.791: Automatic Relevance Determination Regression (ARD) (
plot_ard.py
) - 00:00.781: L1 Penalty and Sparsity in Logistic Regression (
plot_logistic_l1_l2_sparsity.py
) - 00:00.636: Orthogonal Matching Pursuit (
plot_omp.py
) - 00:00.579: Bayesian Ridge Regression (
plot_bayesian_ridge.py
) - 00:00.518: Plot multinomial and One-vs-Rest Logistic Regression (
plot_logistic_multinomial.py
) - 00:00.514: Lasso and Elastic Net (
plot_lasso_coordinate_descent_path.py
) - 00:00.385: Plot Ridge coefficients as a function of the L2 regularization (
plot_ridge_coeffs.py
) - 00:00.371: SGD: Penalties (
plot_sgd_penalties.py
) - 00:00.330: Sparsity Example: Fitting only features 1 and 2 (
plot_ols_3d.py
) - 00:00.307: Plot multi-class SGD on the iris dataset (
plot_sgd_iris.py
) - 00:00.285: Robust linear model estimation using RANSAC (
plot_ransac.py
) - 00:00.282: Ordinary Least Squares and Ridge Regression Variance (
plot_ols_ridge_variance.py
) - 00:00.276: Joint feature selection with multi-task Lasso (
plot_multi_task_lasso_support.py
) - 00:00.274: Logistic Regression 3-class Classifier (
plot_iris_logistic.py
) - 00:00.219: Plot Ridge coefficients as a function of the regularization (
plot_ridge_path.py
) - 00:00.199: SGD: Weighted samples (
plot_sgd_weighted_samples.py
) - 00:00.166: SGD: convex loss functions (
plot_sgd_loss_functions.py
) - 00:00.166: HuberRegressor vs Ridge on dataset with strong outliers (
plot_huber_vs_ridge.py
) - 00:00.164: Linear Regression Example (
plot_ols.py
) - 00:00.163: Polynomial interpolation (
plot_polynomial_interpolation.py
) - 00:00.162: Lasso path using LARS (
plot_lasso_lars.py
) - 00:00.158: Logistic function (
plot_logistic.py
) - 00:00.156: SGD: Maximum margin separating hyperplane (
plot_sgd_separating_hyperplane.py
) - 00:00.153: Lasso and Elastic Net for Sparse Signals (
plot_lasso_and_elasticnet.py
)


xLearn Command Line Guide¶
Once you built xLearn from source code successfully, you will get two executable files
xlearn_train
and xlearn_predict
in your build
directory. Now you can use these
two executable files to perform training and prediction tasks.
Quick Start¶
Make sure that you are in the build
directory of xLearn, and you can find the demo data
small_test.txt
and small_train.txt
in this directory. Now type the following
command to train a model:
./xlearn_train ./small_train.txt
Here, we show a portion of the xLearn’s output. Note that the loss value shown in your machine could be different.
Epoch Train log_loss Time cost (sec)
1 0.567514 0.00
2 0.516861 0.00
3 0.489884 0.00
4 0.469971 0.00
5 0.452699 0.00
6 0.437590 0.00
7 0.425759 0.00
8 0.415190 0.00
9 0.405954 0.00
10 0.396313 0.00
By default, xLearn will use the logistic regression (LR) to train our model within 10 epoch.
We can see that a new file called small_train.txt.model
has been generated in the current directory.
This file stores the trained model checkpoint, and we can use this model file to make prediction in
the future
./xlearn_predict ./small_test.txt ./small_train.txt.model
After that, we can get a new file called small_test.txt.out
in the current directory. This is output
prediction. Here we show the first five lines of this output by using the following command
head -n 5 ./small_test.txt.out
-1.9872
-0.0707959
-0.456214
-0.170811
-1.28986
These lines of data are the prediction score calculated for examples in the test set. The
negative data represents the negative example and positive data represents the positive example.
In xLearn, you can convert the score to (0-1) by using --sigmoid
option, or you can convert
your result to binary result (0 and 1) by using --sign
option
./xlearn_predict ./small_test.txt ./small_train.txt.model --sigmoid
head -n 5 ./small_test.txt.out
0.120553
0.482308
0.387884
0.457401
0.215877
./xlearn_predict ./small_test.txt ./small_train.txt.model --sign
head -n 5 ./small_test.txt.out
0
0
0
0
0
Users may want to generate different model files, so you can set the name of the model
checkpoint file by using -m
option. By default, the name of the model file equals to
training_data_name
+ .model
./xlearn_train ./small_train.txt -m new_model
Also, users can save the model in txt format by using -t
option. For example:
./xlearn_train ./small_train.txt -t model.txt
After that, we get a new file called model.txt
, which stores the trained model in txt format.
For now, xLearn only supports to save the bias and linear term in txt file.
head -n 5 ./model.txt
-0.688182
0.458082
0
0
0
Users can also set -o
option to specify the output file. For example:
./xlearn_predict ./small_test.txt ./small_train.txt.model -o output.txt
head -n 5 ./output.txt
-2.01192
-0.0657416
-0.456185
-0.170979
-1.28849
By default, the name of the output file equals to test_data_name
+ .out
.
Choose Machine Learning Algorithm¶
For now, xLearn can support three different machine learning algorithms, including LR, FM and FFM.
Users can choose different machine learning algorithms by using -s
option:
-s <type> : Type of machine learning model (default 0)
for classification task:
0 -- linear model (GLM)
1 -- factorization machines (FM)
2 -- field-aware factorization machines (FFM)
for regression task:
3 -- linear model (GLM)
4 -- factorization machines (FM)
5 -- field-aware factorization machines (FFM)
For LR and FM, the input data format can be CSV
or libsvm
. For FFM, the
input data should be the libffm
format.
libsvm format:
label index_1:value_1 index_2:value_2 ... index_n:value_n
CSV format:
value_1 value_2 .. value_n label
libffm format:
label field_1:index_1:value_1 field_2:index_2:value_2 ...
Users can also give a libffm
file to LR and FM. At that time, xLearn will treat this data
as libsvm
format. The following command shows how to use different
machine learning algorithms to solve the binary classification problem:
./xlearn_train ./small_train.txt -s 0 # Linear model
./xlearn_train ./small_train.txt -s 1 # Factorization machine (FM)
./xlearn_train ./small_train.txt -s 2 # Field-awre factorization machine (FFM)
Set Validation Dataset¶
A validation dataset is used to tune the hyperparameters of a machine learning model.
In xLearn, users can use -v
option to set the validation dataset. For example:
./xlearn_train ./small_train.txt -v ./small_test.txt
A portion of xLearn’s output:
Epoch Train log_loss Test log_loss Time cost (sec)
1 0.575049 0.530560 0.00
2 0.517496 0.537741 0.00
3 0.488428 0.527205 0.00
4 0.469010 0.538175 0.00
5 0.452817 0.537245 0.00
6 0.438929 0.536588 0.00
7 0.423491 0.532349 0.00
8 0.416492 0.541107 0.00
9 0.404554 0.546218 0.00
Here we can see that the training loss continuously goes down. But the validation loss (test loss) goes down
first, and then goes up. This is because our model has already overfitted current training dataset. By default,
xLearn will calculate the validation loss in each epoch, while users can also set different evaluation
metrics by using -x
option. For classification problems, the metric can be : acc
(accuracy), prec
(precision), f1
(f1 score), auc
(AUC score). For example:
./xlearn_train ./small_train.txt -v ./small_test.txt -x acc
./xlearn_train ./small_train.txt -v ./small_test.txt -x prec
./xlearn_train ./small_train.txt -v ./small_test.txt -x f1
./xlearn_train ./small_train.txt -v ./small_test.txt -x auc
For regression problems, the metric can be mae
, mape
, and rmsd
(rmse). For example:
cd demo/house_price/
../../xlearn_train ./house_price_train.txt -s 3 -x rmse --cv
../../xlearn_train ./house_price_train.txt -s 3 -x rmsd --cv
Cross-Validation¶
Cross-validation, sometimes called rotation estimation, is a model validation technique for assessing
how the results of a statistical analysis will generalize to an independent dataset. In xLearn, users
can use the --cv
option to use this technique. For example:
cd build
./xlearn_train ./small_train.txt --cv
On default, xLearn uses 5-folds cross validation, and users can set the number of fold by using
-f
option:
./xlearn_train ./small_train.txt -f 3 --cv
Here we set the number of folds to 3. The xLearn will calculate the average validation loss at the end of its output message.
[------------] Average log_loss: 0.549417
[ ACTION ] Finish Cross-Validation
[ ACTION ] Clear the xLearn environment ...
[------------] Total time cost: 0.03 (sec)
Choose Optimization Method¶
In xLearn, users can choose different optimization methods by using -p
option. For now, users can
choose sgd
, adagrad
, and ftrl
method. By default, xLearn uses the adagrad
method.
For example:
./xlearn_train ./small_train.txt -p sgd
./xlearn_train ./small_train.txt -p adagrad
./xlearn_train ./small_train.txt -p ftrl
Compared to traditional sgd method, adagrad adapts the learning rate to the parameters, performing larger updates for infrequent and smaller updates for frequent parameters. For this reason, it is well-suited for dealing with sparse data. In addition, sgd is more sensitive to the learning rate compared with adagrad.
FTRL (Follow-the-Regularized-Leader) is also a famous method that has been widely used in the large-scale sparse problem. To use FTRL, users need to tune more hyperparameters compared with sgd and adagard.
Hyperparameter Tuning¶
In machine learning, a hyperparameter is a parameter whose value is set before the learning process begins. By contrast, the value of other parameters is derived via training. Hyperparameter tuning is the problem of choosing a set of optimal hyperparameters for a learning algorithm.
First, the learning rate
is one of the most important hyperparameters used in machine learning.
By default, this value is set to 0.2
, and we can tune this value by using -r
option:
./xlearn_train ./small_train.txt -v ./small_test.txt -r 0.1
./xlearn_train ./small_train.txt -v ./small_test.txt -r 0.5
./xlearn_train ./small_train.txt -v ./small_test.txt -r 0.01
We can also use the -b
option to perform regularization. By default, xLearn uses L2
regularization, and
the regular_lambda has been set to 0.00002
.
./xlearn_train ./small_train.txt -v ./small_test.txt -r 0.1 -b 0.001
./xlearn_train ./small_train.txt -v ./small_test.txt -r 0.1 -b 0.002
./xlearn_train ./small_train.txt -v ./small_test.txt -r 0.1 -b 0.01
For the FTRL method, we also need to tune another four hyperparameters, including -alpha
, -beta
,
-lambda_1
, and -lambda_2
. For example:
./xlearn_train ./small_train.txt -p ftrl -alpha 0.002 -beta 0.8 -lambda_1 0.001 -lambda_2 1.0
For FM and FFM, users also need to set the size of latent factor by using -k
option. By default, xLearn
uses 4
for this value.
./xlearn_train ./small_train.txt -s 1 -v ./small_test.txt -k 2
./xlearn_train ./small_train.txt -s 1 -v ./small_test.txt -k 4
./xlearn_train ./small_train.txt -s 1 -v ./small_test.txt -k 5
./xlearn_train ./small_train.txt -s 1 -v ./small_test.txt -k 8
xLearn uses SSE instruction to accelerate vector operation, and hence the time cost for k=2
and k=4
are the same.
For FM and FFM, users can also set the hyperparameter -u
for model initialization. By default, this value is set to 0.66.
./xlearn_train ./small_train.txt -s 1 -v ./small_test.txt -u 0.80
./xlearn_train ./small_train.txt -s 1 -v ./small_test.txt -u 0.40
./xlearn_train ./small_train.txt -s 1 -v ./small_test.txt -u 0.10
Set Epoch Number and Early-Stopping¶
For machine learning, one epoch consists of one full training cycle on the training set.
In xLearn, users can set the number of epoch for training by using -e
option.
./xlearn_train ./small_train.txt -e 3
./xlearn_train ./small_train.txt -e 5
./xlearn_train ./small_train.txt -e 10
If you set the validation data, xLearn will perform early-stopping by default. For example:
./xlearn_train ./small_train.txt -s 2 -v ./small_test.txt -e 10
Here, we set epoch number to 10
, but xLearn stopped at epoch 7 because we get the best model
at that epoch (you may get different a stopping number on your machine)
[ ACTION ] Early-stopping at epoch 7
[ ACTION ] Start to save model ...
Users can disable early-stopping by using --dis-es
option
./xlearn_train ./small_train.txt -s 2 -v ./small_test.txt -e 10 --dis-es
At this time, xLearn performed 10 epoch for training.
Lock-Free Training¶
By default, xLearn performs Hogwild! lock-free training, which takes advantages of multiple cores to accelerate training task. But lock-free training is non-deterministic. For example, if we run the following command multiple times, we may get different loss value at each epoch.
./xlearn_train ./small_train.txt
The 1st time: 0.396352
The 2nd time: 0.396119
The 3nd time: 0.396187
...
Users can set the number of thread for xLearn by using -nthread
option:
./xlearn_train ./small_train.txt -nthread 2
If you don’t set this option, xLearn uses all of the CPU cores by default.
Users can disable lock-free training by using --dis-lock-free
./xlearn_train ./small_train.txt --dis-lock-free
In thie time, our result are determinnistic.
The 1st time: 0.396372
The 2nd time: 0.396372
The 3nd time: 0.396372
The disadvantage of --dis-lock-free
is that it is much slower than lock-free training.
Instance-wise Normalization¶
For FM and FFM, xLearn uses instance-wise normalizarion by default. In some scenes like CTR prediction, this technique is very
useful. But sometimes it hurts model performance. Users can disable instance-wise normalization by using --no-norm
option
./xlearn_train ./small_train.txt -s 1 -v ./small_test.txt --no-norm
Note that we usually use --no-norm
in regression tasks.
Quiet Training¶
When using --quiet
option, xLearn will not calculate any evaluation information during the training, and
it just train the model quietly
./xlearn_train ./small_train.txt --quiet
In this way, xLearn can accelerate its training speed.


Normally, if a server exports two filesystems one of which is mounted on the other, then the client will have to mount both filesystems explicitly to get access to them. If it just mounts the parent, it will see an empty directory at the place where the other filesystem is mounted. That filesystem is "hidden".
Not hiding option is currently only effective on single host exports. It does not work reliably with netgroup, subnet, or wildcard exports.
This option can be very useful in some situations, but it should be used with due care, and only after confirming that the client system copes with the situation effectively.
exportfs options: hide, nohide


Man accused of being a 'pervert' after he points out issue with woman's leggings
A man who told a fellow gym-goer about her wardrobe malfunction is dividing opinion online
by Luke Matthews, https://www.mirror.co.uk/authors/luke-matthews/A man who thought he was being helpful by pointing out a potentially embarrassing problem with a woman's outfit instead found himself being labelled a 'f***ing pervert'.
After making his way to the gym, the man headed to the squat rack and began his workout.
In between sets and feeling a little worse for wear, he starred into the mirror in front and noticed a woman doing a similar session behind him.
As she reached the bottom of her squat, he said he 'immediately noticed that I can clearly see her a** through her pants'.
He got back to his routine after admitting he usually wants to be left alone and ignores everyone else in the gym, but later noticed again as at the bottom of her squat the yoga pants went so see through that he could 'pretty much see everything'.
Writing on Reddit , he said: "No idea why I cared (I'm married and completely uninterested) but I go into helpful mode and pull my headphones out and turn around quietly enough that only the two of us can hear and say this: 'Hey this is super creepy, but I’d feel creepier if I didn’t say something.

"Again I thought I was being helpful and that she’d want to know, but wholly s*** did she not see it that way."
"This girl practically screams :“You f***ing pervert!
Returning home with his tail between his legs, he says his wife agreed he was in the wrong for pointing it out and would be 'super embarrassed' if someone did that to her.
Asking if he was wrong for telling her, his handling of the situation divided opinion.
One said: "I would definitely want someone to tell me if my pants were see through when I moved.
"If she already knew and didn’t care she could have just said thanks and left it. You are not a pervert for noticing someone’s wearing see through clothing."
Others argued that the problem came from his choice of wording, rather than simply pointing it out.
"You're the a**hole for making it awkward and creepy by even mentioning her a**," replied another.
"You could have just said her pants were see-through and left it at that."


Hello
.
I am Peter Detmers
.
about
me
I am a UX- and Web Designer.
I am a digital media student.
I am an admirer of design and usability.
I am fascinated about technology since ever.
Skills:
UI/UX Design
Bootstrap
JavaScript
Wordpress
Logo Design
social
media
Twitter
Instagram
Facebook
Behance
Let's have a chat
Impressum
Datenschutzerklärung


--- layout: default title: SWAG Improvement Proposals ---
SWAG Improvement Proposals (IPs) describe standards for the SWAG.FINANCE platform, including core protocol specifications, client APIs, and contract standards.
Your first PR should be a first draft of the final IP. An editor will manually review the first PR for a new IP and assign it a number before merging it. Make sure you include a
discussions
header with the URL to a discussion forum or open GitHub issue where people can discuss the IP as a whole.
When you believe your IP is mature and ready to progress past the DRIP phase, you should ask to have your issue added to the next governance meeting where it can be discussed for inclusion in a future platform upgrade. If the community agrees to include it, the IP editors will update the state of your IP to
Approved
.


Hi {{currentUser.firstName}}!
Welcome to Offensive Language Detector Application.
Using this appliaction, you can check if your text is either Offensive, Hateful, or Clean.
So let's get started!
Please enter the text you wish to check in the textbox below:
All registered users:
-
{{user.username}} ({{user.firstName}} {{user.lastName}})
- Delete
Result:{{resultbinding}}


Pittsburgh Node.js Meetup 2013
Unix Pipe
cat results.txt | grep "success" | wc -l
Count lines that match "success" from results.txt
We should have some ways of coupling programs like garden hose--screw in another segment when it becomes necessary to massage data in another way. This is the way of IO also.
._read(), .push()
.read()
._write()
.write()
._read(), .push(), ._write()
.read(), .write()
._transform(), .push()
.read(), .write()
er... well... um
take a nap
...and of course
.pipe()
Do stuff to stuff while stuff
Command line fu
Latency!!!
Efficiency!!!


{% extends "poll/plain_base.html" %} {% import "bootstrap/wtf.html" as wtf %} {% import "_macros.html" as macros %} {% block title %}The General Opinion{% endblock %} {% block page_content %}


--- layout: post title: Minesweeper into Flowers date: 2006-10-01 00:00:00 categories: digital-media play ---
Tom Peters on Minesweeper: "Microsoft is changing the game MINESWEEPER to placate those who thought the game was insensitive to landmine plagued communities worldwide. With the Vista release you will be able to, at least virtually, turn landmines into flowers"


Intro To Node Js And Npm
Package Management using npm
In this lesson, we will learn how to use the package manager npm, a node.js command line client, to setup a custom front-end web development environment and automated build process.
A package manager (or package management system) is a collection of tools that automates the process of installing, upgrading, configuring, and removing software in a consistent manner.
– Wikipedia
npm is a package manager for the JavaScript programming language. It is the default package manager for the JavaScript runtime environment Node.js. It consists of a command line client, also called npm, and an online database of public and paid-for private packages, called the npm registry. The registry is accessed via the client, and the available packages can be browsed and searched via the npm website. The package manager and the registry are managed by npm, Inc.
– Wikipedia
Node.js is an open-source, cross-platform JavaScript run-time environment for executing JavaScript code server-side. Historically, JavaScript was used primarily for client-side scripting, in which scripts written in JavaScript are embedded in a webpage's HTML, to be run client-side by a JavaScript engine in the user's web browser. Node.js enables JavaScript to be used for server-side scripting, and runs scripts server-side to produce dynamic web page content before the page is sent to the user's web browser. Consequently, Node.js has become one of the foundational elements of the "JavaScript everywhere" paradigm, allowing web application development to unify around a single programming language, rather than rely on a different language for writing server side scripts.
– Wikipedia
Why use a package manager like npm?
As front-end web development environments and build tools become more and more complex, the amount of time spent setting up new projects can be exhaustive. To avoid wasting time via repetition, package managers help to simplify the process with one simple command: npm install
.
$ npm install
Package managers like npm can save front-end developers a lot of time, especially when starting new projects from scratch (e.g. to avoid setting up everything manually), when working with complex projects with multiple dependencies (e.g. to avoid installing each dependency with the latest version of each), and when working on large projects with multiple developers (to ensure a consistency across all computers).
Outcomes
- Learn how to install an existing npm-based web project
- Learn how to setup a custom npm-based web project from scratch
Steps
- Install Node.js and npm
- Install an existing npm project (Sitebase 3)
- Setup a custom npm project from scratch (my-npm-project)
Step 1
Install Node.js and npm
Make sure that you have node.js installed.
$ node -v
$ npm -v
If installed, you should see the version number for each. If not, you'll need to download Node.js from https://nodejs.org/en/ and follow their installation instructions.
Step 2
Install an existing npm project: Sitebase 3
Inside of your target parent directory (the folder where you will be placing your new project folder), copy the source project files for Sitebase 3.0 on Github. If you already have git installed and/or already have a github account, from inside of your target parent directory, you can simply clone the repo:
$ git clone https://github.com/kccnma/sitebase3-npmgulp
If you do not have git installed, you can download the zip file (https://github.com/kccnma/sitebase3-npmgulp/archive/master.zip) then manually unzip it into your target parent directory.
Once copied/cloned, your local environment should look like this:
targetparentdirectory/
└── sitebase3-npmgulp/
├── dist/
├── src/
├── .gitignore
├── README.md
├── gulpfile.js
├── package.json
Take a look inside of package.json and you'll notice two sections toward the bottom: dependencies and devDependencies. These are the list of dependencies that this existing project is already using. In this case, this project is using gulp as a task manager to watch for changes, compile source files (e.g. SASS via a gulp plugin called gulp-sass), sync browsers (via browser-sync), compress all images (via gulp-imagemin), and then compile and copy all final files into the /dist/ folder.
Testing
If you try to run gulp
right away, it will not work. You'll get an error (e.g. "Local gulp not found"
). The key step (whenever you are setting up a new project via npm) is to run npm install
from inside of your project folder first. Note: you only need to do this once.
$ cd sitebase3-npmgulp
$ npm install
You'll notice a progress bar as npm installs all of the project dependencies. Afterward, you'll notice a new folder was created entitled "node_modules" that contains all of the dependencies. Note: this "node_modules" folder is quite large, so if you are using git, be sure to add it to your .gitignore file (which is already included as part of Sitebase 3).
To test it out, run gulp
and see if it works. It should spin up a web server, launch the project in a browser, and watch your files for changes.
$ gulp
Congratulations - you just setup your first npm-based web project!
Step 3 (Optional)
Advanced: Setup a custom npm project from scratch (my-npm-project)
Let's say you do not want to start from an existing project or base, and would prefer to setup a completely new npm-based project from scratch. The steps are simple:
npm init
First, wherever you are working (e.g. your target parent folder), create a new primary "projectname" folder to be the project root directory. Then, run the npm init
command from inside your target parent directory.
$ npm init
The npm init
command will create a package.json file that will store information about the project, such as the dependencies used in the project (e.g. Gulp, Sass, etc.) and it will also create a new "node_modules" folder that will include all dependencies. In order to create the package.json file with accurate information, it will prompt you "Is this ok? (yes)?
Type yes
.
If you look inside of your project folder, you should see both the new package.json file and the new node_modules folder.
Add Dependencies
Once you have your package.json file all set up and ready, whenever you need to add a new dependency to your project, you'll need to 1) manually install each dependency and 2) save it to your list of dependencies inside of your project's package.json file. This two-part process is actually quite simple and done in one step via the following command:
$ npm install dependencyname --save-dev (replacing dependencyname with the name of your dependency)
Be sure to include the "--save-dev"
part, or else the dependency will not be added to your list of dependencies inside of your project's package.json file. As an example, let's install gulp.
$ npm install gulp --save-dev
If you look inside of your package.json file, you should see "gulp" along with the version number inside of the "devDependencies" area.
Since this lesson is about npm (not gulp), we are not going to create a complex gulpfile.js. However, we can setup a quick one to test that our custom environment is working OK.
First, we'll need to create a new file named "gulpfile.js" that will store all of your gulp tasks. I suggest using your favorite text editor (IDE) for this step. Inside of your gulpfile.js, we'll need to add a task for testing purposes. Whenever you add a new task using gulp, such as adding a new dependency, it is a 2-step process:
1) First, you need to add a "require" statement that will tell Node to look into the node_modules folder for the new package (in this case it is a package named gulp). To do this, you need to create a new variable named gulp
and assign the plugin contents to it:
var gulp = require('gulp');
2) Next, you need to define the task. The following is the syntax for a typical gulp task:
gulp.task('task-name', function() {
// Statements go here
});
In this case, we are going to do a simple "Hello" console log statement to a task named hello.
gulp.task('hello', function() {
console.log('Hello');
});
After you saved your gulpfile from your text editor, switch to your command line interface and test it out via the following command:
$ gulp hello
Congratulations! You just created a custom npm-project!
Closing thoughts:
Project managers can speed up the setup and installation of project dependencies, build tools, and processes. Once you have npm installed on your machine, you can quickly and easily take advantage of existing npm-based projects that use npm install for project setup and the many npm packages and dependencies that it supports.
Resources:
- Node.js - https://nodejs.org/en/
- npm - https://www.npmjs.com/


eTournaments
Tournament creation
Tournament´s name
Tournament´s info
Game
Select your game
Rocket League
League of Legends
Pokemon
Number of players
Select number of players
2
4
8
16
32
Select the tournament´s image to be displayed
Upload
Choose file
Post


1 Shiny and the Web
Shiny is designed so that, as an R user, you don’t need to learn about the details of HTML …
shiny (Chang et al. 2021) allows the development of web applications with R in minutes. Let’s face it: this is quite mind blowing! While this may not be a production ready app, it will still be a fully functional, working prototype. Believe me, doing a web application with pure HTML/CSS and JavaScript is more difficult, especially for someone with a non-web developer background.
We first load shiny:
1.1 Shiny generates HTML code from R
Let’s start with a little exercise:
- Run the following code:
p("Hello World")
- Copy and paste this code to the R console. What do you observe?
Notice the output format is an example of an HTML tag. The p
function generates HTML (see chapter 3). The main difference between HTML tags and Shiny tags is the absence of closing tag for Shiny. For instance, in raw HTML, we expect

to be closed by

. In Shiny, we only call p(...)
, where ...
may be attributes like class/id or children tags. For a R developer, being able to generate HTML code from R allows to remain focused on the main task instead of the web development burdens.
As stated in the general introduction ??, a production app sometimes needs to custom elements that are not contained or hidden in Shiny’s core.
Is a Shiny app less customizable than a classic web app? Not at all! Under the hood, Shiny has its own engine to build HTML tags, through R, meaning that all HTML elements are available. You may also include any custom JavaScript code.
1.2 HTML 101
This chapter provides a short introduction to the 3 main web languages, namely HTML, CSS and JavaScript. The following content is crucial to understand part 3 about HTML generation from R.
1.2.1 HTML Basics
HTML (Hypertext Markup Language) is derived from SGML (Standard Generalized markup Language). An HTML file contains tags that may be divided into 2 categories:
- paired-tags: the text is inserted between the opening and the closing tag
- closing-tags
Tags may be divided into 3 categories, based on their role:
- structure tags: they constitute the skeleton of the HTML page (
<title></title>
,
,
) - control tags: script, inputs and buttons (and more). Their role is to include external resources, provide interactivity with the user
- formatting tags: to control the size, font of the wrapped text
Finally, we distinguish block and inline elements:
- block elements may contain other tags and take the full width (block or inline).

is the most commonly used block element. All elements of a block are printed on top of each others - inline elements (for instance

,
) are printed on the same line. They can not contain block tags but may contain other nested inline tags. In practice, we often see
- inline-block elements allow to insert block element in an inline
Consider the following example. This is clearly a bad use of HTML conventions since an inline tag can not host block elements.
Importantly,

and
don’t have any semantic meaning, contrary to
and
, which allow to structure the HTML page.
1.2.2 Tag attributes
Attributes are text elements allowing to specify some properties of the tag. For instance for a link tag (
), we actually expect more than just the tag itself: a target url and how to open the new page … In all previous examples, tags don’t have any attributes. Yet, there exist a large range of attributes and we will only see 2 of them for now (the reason is that these are the most commonly used in CSS and JavaScript):
- class: may be shared between multiple tags
- id: each must be unique

Both attributes are widely used by CSS and JavaScript (see Chapter 10 with the jQuery selectors) to apply a custom style to a web page. Class attributes apply to multiple elements, however the id attribute is restricted to only one item.
Interestingly, there exists another attribute category, know as non-standard attributes like data-toggle
. We will see them later in the book (see Chapter 18).
1.2.3 The simplest HTML skeleton
An HTML page is a collection of tags which will be interpreted by the web browser step by step. The simplest HTML page may be defined as follows:
<!DOCTYPE HTML>

<title>A title</title>

-

is the may wrapper -

and
are the 2 main children-

contains dependencies like styles and JavaScript files (but not only), -

contains the page content and it is displayed on the screen. We will see later that JavaScript files are often added just before the end of the
.
-
Only the body content is displayed on the screen! W3C validation imposes at list a title
tag in the head
section and a lang
attribute to the html
tag!
Let’s write the famous Hello World in HTML:
<!DOCTYPE HTML>

<title>A title</title>

Hello World

In order to preview this page in a web browser, you need to save the above snippet to a script hello-world.html
and double-click on it. It will open with your default web browser.
Below is how we would do with a Shiny app, only for demonstration purpose (static HTML would be enough if no user interaction is required).
ui <- fluidPage(p("Hello World"))
server <- function(input, output, session) {}
shinyApp(ui, server)
From outside, it looks identical even though we’ll see in Chapter 2 that this simple app actually contains much more HTML than our previous example.
1.2.4 About the Document Object Model (DOM)
The DOM stands for “Document Object Model” and is a convenient representation of the html document. There actually exists multiple DOM types, namely DOM-XML and DOM-HTML but we will only focus on the latter. If we consider the last example (Hello World), the associated DOM tree may be inspected in Figure 1.1.
<IP_ADDRESS> Visualizing the DOM with the HTML inspector
Below, we introduce a tool that will facilitate our exploration of beautiful shiny user interfaces. In this section, we restrict the description to the first panel of the HTML inspector.1 This feature is available in all web browsers, however for demonstration purposes, we will only focus on the Chrome DevTools. It may be opened:
- After a right click and selecting inspect
- After clicking on F12 (windows), fn + F12 on Mac (or Command+Option+C)
In the following:
- Open the hello-world.html example with Chrome
- Right-click to open the HTML inspector (developer tools must be enabled if it is not the case)
The HTML inspector is a convenient tool to explore the structure of the current HTML page. On the left-hand side, the DOM tree is displayed where we clearly see that
is the parent of
and
.
has also 1 child, that is

. We may preview any style (CSS) associated with the selected element on the right panel as well as Event Listeners (JavaScript), which will be discussed later in the book.
<IP_ADDRESS> HTML Inspector 101
In the following, we enumerate key features of the inspector Elements
tab. In addition to explore the HTML structure, the inspector allows to:
- Dynamically change CSS at run time
- Debug JavaScript code (put break points, …)
- Run JavaScript code from the console.
- Monitor any error or warning that may prevent your app or website from properly working
Another important feature is the ability to switch between different devices, especially mobile platforms and to do a global performance audit with Google LightHouse. The book from Colin Fay et al. details the most relevant elements for Shiny app development.
We propose at set of quick exercises to review the most important HTML inspector capabilities that are commonly needed during Shiny app customization. We consider the app already defined above:
ui <- fluidPage(p("Hello World"))
server <- function(input, output, session) {}
shinyApp(ui, server)
<IP_ADDRESS>.1 Exercise: Altering the DOM structure
- Run the
Hello World
app, right click on the only text element and click on inspect - Notice we could have done similarly by clicking on the very top left corner
Inspect
icon (Command + maj + C for Mac) and hovering over theHello World
text
You should see a result similar to Figure 1.2, the Inspect
icon being in blue. The selected element is highlighted and a white box displays the main CSS properties like text-color
, font-size
, margins, as well as accessibility parameters.
- In the
Elements
panel, double click between the

and

tags to edit the current text. Press enter when finished - Let’s add some children to our
p
tag. Right click and select theEdit as HTML
option. You may enter any valid HTML code inside. Don’t forget about some rules relative to inline and block tags (inline tags cannot contain block tags!!!)
As depicted in Figure 1.3, we could have done a right click on the p
tag to display more options like:
- Add/edit an attribute. You may try to add it a class
class="awesome-text"
and an idid="only-text"
- Delete the current tag (the
return
key would do it as well) - Copy the element with all nested elements
- Only copy the outside HTML (ignore nested elements)
- Extract the CSS selector or JavaScript path (code to select the element):
body > div > p
anddocument.querySelector("body > div > p")
, respectively.  Try to copy and pastedocument.querySelector("body > div > p")
in the JavaScript console at the bottom of the inspector window. It returns the selected HTML element, as shown in Figure 1.4! Amazing isn’ it? - Hide the element
- Force a specific state. For instance buttons may be
active
,inactive
Whenever you are looking for a specific tag in a more complex page, the search tag
option is a game changer (Ctrl + F on Windows, command + F within the Elements tab on a Mac). See Figure 1.5.
Finally, the inspector toolkit allows to reorder DOM elements with a rather intuitive drag and drop feature. I invite the reader to carefully explore those features as they will be crucial in the next chapters.
1.2.5 Preliminary introduction to CSS and JavaScript
To introduce this section, I propose to look at the very first website, early in the 90’s (August 1991 exactly). From an aesthetic point of view (see Figure 1.6), this is far from what we can observe today as shown in Figure 1.7.
How can we explain that difference? One of the main reason is the absence of CSS (Cascading Style Sheet) since the first CSS release only appeared in December 1996, that is 5 years later than the first web site publication. CSS allows to deeply customize the appearance of any web page by changing colors, fonts, margins and much more. We acknowledge, the role of JavaScript cannot be demonstrated through the previous example. Yet its impact is as important as CSS, so that it is now impossible to dissociate HTML, CSS and JavaScript.
<IP_ADDRESS> HTML and CSS
CSS (Cascading Style Sheets) changes the style of HTML tags by targeting specific classes or ids. For instance, if we want all p
tags to have red color we will use:
To include CSS in an HTML page, we use the
<title>A title</title>

Hello World

You may update the hello-world.html script and run it in your web-browser to see the difference. The example may be slight, but shows how we may control the look and feel of the display. In a development context, we will see later that css files may so big that it is better to include them in external files.
Let’s build a shiny app that does similar things. As a reminder, you may use tags$style
to include small pieces of CSS in your app:
<IP_ADDRESS> HTML and JavaScript
You will see how quickly/seamlessly you may add awesome features to your shiny app.
In the following example, we defined the changeColor
function that targets the element
having hello
id and change its color property to green. The HTML element has an onClick
attribute
that triggers the changeColor
function each time the button is clicked.
<!DOCTYPE HTML>

<title>A title</title>

Hello World

In few lines of code, you can change the color of the text. This is only the beginning!
We see below that the process is not dramatically different in a Shiny app. We wrap our custom JavaScript in the tags$script
function (prefer external scripts to add more code), as below:
ui <- fluidPage(
tags$script(
"alert('Click on the Hello World text!');
// change text color
function changeColor(color){
document.getElementById('hello').style.color = 'green';
}
"
),
p(id = "hello", onclick="changeColor('green')", "Hello World")
)
server <- function(input, output, session) {}
shinyApp(ui, server)
As demonstrated above, developing a shiny app is basically building a website from R and is completely compatible with the web languages, that is CSS and JavaScript. Sections 4 and 12 present more robust tools and concepts to extend Shiny.
… However, if you already know HTML (or want to learn!) you can also work directly with HTML tags to achieve any level of customization you want


System Architect Symbol details for "Incident Involvement Type"
AC/Direction (Generalization Node)
- Base Class:
"Associative Category"
- Definitions Used:
-
Associative Category (Class)
Associative Category (Class)
- Description:
"Category" capable of classifying associations between "Objects".
classifier (Association)
- From Class:
"Incident Involvement Type"
- To Class:
"Involvement In Incident"
- From Class:
"Incident Involvement Type"
- To Class:
"Involvement In Incident"
Incident Involvement Type (Class)
- Description:
"Associative Category" capable of classifying an "Involvement In Incident".
Inter Subject Relationship Type (Class)
- Description:
"Associative Category" capable of classifying an "Inter Subject Relationship".
Involvement In Incident (Class)
- Description:
"Subject Property" associating the "Subject" with an "Incident".
- Comment:
-
Location Structure Type (Class)
- Description:
"Associative Category" capable of classifying "Location Structures".
- Comment:
-
Ways in which locations may be connected include:
Included within
Adjacent to
Not adjacent
Complete superposition
Partial superposition.
Phenomenon Qualifier Type (Class)
- Description:
"Associative Category" capable of classifying a "Phenomenon Qualifier"
- Comment:
This classifies the nature of the qualifier, eg "laterality of" when speaking about a fractured rib.
The actual laterality (ie left or right) is the Category used as the Value by the Phenomenon
Qualifier.
Subject Location Type (Class)
- Description:
"Associative Category" capable of classifying a relationship between a "Subject" and a "Location".
Temporal Link Type (Class)
- Description:
"Associative Category" capable of classifying "Temporal Phenomenon Links" and "Timepoint
Associations".
- Comment:
-
The types of link are:
A starts and ends before B starts
A starts before B starts and ends when B starts
A starts before B starts and ends after B starts but before it ends
A starts before B starts and ends when B ends
A starts before B starts and ends after B ends
A starts when B starts and ends when B starts
A starts when B starts and ends after B starts and before B ends
A starts when B starts and ends when B ends
A starts when B starts and ends after B ends
A starts after B starts but before it ends and ends before B ends
A starts after B starts but before it ends and ends when B ends
A starts after B starts but before it ends and ends after B ends
A starts when B ends and ends when B ends
A starts when B ends and ends after B ends
A starts and ends after B ends.
For linked objects which are of zero duration, the start and end are simultaneous.


Beauty is seen through a lens
Perspective matters.
All my photographs try to capture that perspective, however
subtle.
Perspective matters.
All my photographs try to capture that perspective, however
subtle.
Deep in the deserts of Morroco, lies a dried-up valley, featuring some of the most exquisite rock formations, carved millions of years ago.
To truly experience these beautiful formations, one has to visit them in person. I hope my photos have managed to capture the sheer size – gravitas even – and spellbinding nature of these eroded walls.


Login to LeanKanban
UserName
Password
Remember me
Forgot your password ?
Login
Not member ?
Create an account
First Name
Last Name
Email
Create an account
Already member ?
Welcome to LeanKan
Your login is
{Login}
Please confirm your registration and choose your password.
Password:
Confirm your password:
Remember me
Confirm registration
Reset your password
Fill your email address and we send you an email with a link to reset your password.
Email
Reset password


My Large Header
Hello there, here is a list of my favourite websites.
Ricemedia
The Guardian
Trail Runner Magazine
Github