v5.1.2
terminal-notifier
memory leak as seen in https://github.com/facebook/jest/issues/2999 and https://github.com/julienXX/terminal-notifier/issues/173.v5.0.2
Non-obligatory fail. Fixes issue with multiple actions for macOS.
v5.0.1
Obligatory fail. Fixes minor issue with non-JSON output for macOS.
v5.0.0
Note/TL;DR: If you are just using node-notifier
with things like message
, title
and icon
, v5 should work just as before.
notify
bin when installing node-notifier
. To get this do npm i [-g] node-notifier-cli
toast.exe
to Snoretoast. This means if you are using your custom fork, you need to change. SnoreToast has some better default implemented functionality.v1.7.1
. With that there can be changes in the API, and supports now reply and buttons. Output has changed to JSON by default, this means the output of some functions of the terminal-notifier has broken. See https://github.com/julienXX/terminal-notifier for more details. See README for documentation on how to use the new features, or an example file.notify
method will now throw error if second argument is something else than function (still optional): #138.javascript
{
title: void 0, // String. Required
message: void 0, // String. Required if remove is not defined
icon: void 0, // String. Absolute path to Icon
sound: false, // Bool | String (as defined by http://msdn.microsoft.com/en-us/library/windows/apps/hh761492.aspx)
wait: false, // Bool. Wait for User Action against Notification or times out
id: void 0, // Number. ID to use for closing notification.
appID: void 0, // String. App.ID. Don't create a shortcut but use the provided app id.
remove: void 0, // Number. Refer to previously created notification to close.
install: void 0 // String (path, application, app id). Creates a shortcut
Internal changes for those who might be interested.
lodash.deepClone
). Now uses JSON serialize/deserialize instead.prettier
.DEBUG
env-var to true
. See CONTRIBUTE.md for more details.v4.6.1
v4.6.0
notify
callback (by @MadLittleMods)file:///xxx
protocol icon paths for Windows 8.1 (by @gucong3000)v4.5.0
notify
. Now able to just pass message:
js
notifier.notify('My message');
See #45 for more info.
semver
dependency to support Webpacking with Electron.v4.4.0
v4.3.1
Obligatory patch fix: 1. Adds new stdin CLI options to docs
v4.3.0
node-notifier
installed as a CLI npm i -g node-notifier
)shell
➜ echo "Message" | notify
➜ echo "Message" | notify -t "My Title"
➜ echo "Some message" | notify -t "My Title" -s
v4.2.3
v4.2.2
which
test to be sync, avoiding some edge cases with multiple notifications.v4.2.1
v4.2.0
v4.1.2
v4.1.1
v4.1.0
v4.0.3
v4.0.2
wait : false
)v4.0.1
v4.0.0
Major changes and breaking API.
1. require(‘node-notifier’) now returns an instance with fallbackable notifications.
js
var notifier = require('node-notifier');
notifier.notify();
2. Introduced a wait
property (default false
), to get user input for
Notification Center, Windows Toaster, Windows Balloons and Growl. Sadly not
for notify-send.
js
var notifier = require('node-notifier');
notifier.notify({ wait: true }, function (err, response) {
// response is response after user have interacted
// with the notification or the notification has timed out.
});
3. All notification instances are now event emitters, emitting events
click
or timeout
. This is only applicable if { wait: true }
.
js
var notifier = require('node-notifier');
notifier.on('click', function (notificationObject, options) {
// options.someArbitraryData === 'foo'
});
notifier.notify({ wait: true, someArbitraryData: 'foo' });
4. WindowsToaster and NotificationCenter now can have sounds by doing { sound: true }
.
Default NotificationCenter sound is Bottle. Can still use define sound on
Mac:
js
var notifier = require('node-notifier');
notifier.notify({ sound: true });
// For mac (same as sound: true on Windows 8)
notifier.notify({ sound: 'Morse' });
v3.4.0
v3.3.0
v3.2.1
v3.2.0
v3.1.0
v3.0.6
Gulp
to Node
.v3.0.5
v3.0.4
v3.0.2
v3.0.0


We engage the community in a variety of different ways, through social gatherings, online platforms and educational talks. In the past, we've run Games, Jackbox, Trivia and Movie Nights, BBQs, study sessions, end-of-semester drinks, and workshops; we also frequently collaborate with other tech and related interests societies, both in and out of UQ.
We have an extremely active Discord community comprised of current students, alumni, and other people in the Brisbane tech community.
By providing mentors, advertisement, and helping with infrastructure, we support workshops held by Django Girls (a group photo of which is pictured below!).
How can I get involved?
The best way to get involved is attending our twice-weekly events and sticking around after the presentation to talk to other members and indulge in some free pizza. Joining our Discord server, finding channels you’re interested in, asking questions and sharing your opinions is another great way of getting to know the rest of UQCS’ members and enhancing your university experience.
UQCS is made up of a management committee of around a dozen people, composed of the President, Secretary and Treasurer, and the remaining members being part of the general committee. The management committee is elected towards the end of each year at the Annual General Meeting (AGM).
If you're a student at UQ and a member of UQCS, regardless of what you study or what year you're in, you're eligible to run for one of the committee positions, and we strongly encourage you to! There are also subcommittees that are formed at the discretion of the management committee which help in running of the club.
When opportunities to join the committee/subcommittee come up, they'll be widely advertised on UQCS’s social media and in the weekly newsletters we send out to our members (so stay in touch!). All of this is not a comprehensive list to get involved in UQCS by any means; if you would like to be involved in the running of the club, reach out to one of our }}">friendly committee members.
Giving talks
Another great way to get involved is to give a talk at a UQCS event. Previous talks have ranged from speech sythesis to an intro to the Rust programming language to property-based testing. If you'd be interested in giving a talk at UQCS, fill out an expression of interest here!


{% extends "base.html" %} {% block title %}ChemDataExtractor{% endblock %} {% block content %} Automatically extract chemical information from scientific documents Learn more Extract chemical information from journal articles, theses and patents. Resolve chemical names, abbreviations and identifiers. Extract experimental properties and spectroscopy. Try our online demo to see it in action Try it now {{utils.icon('chevron-right')}} {% endblock %}


{% extends "layout-full.html" %} {% block title -%} Subscription error {%- endblock %} {% block desc -%} Your subscription was not successfuly received. {%- endblock %} {% block content_main %}
Your subscription was not successfuly received.
Please go back and check the following:


Dino Melaye Speaks On Boycotting Kogi West Senatorial Supplementary Election
by Enioluwa AdeniyiThe former senator representing Kogi West Senatorial district, Dino Melaye, has reacted to the alleged plan to boycott the November 30 supplementary election.
The People Democratic Party’s candidate was losing to the candidate of the All Progressives Congress, Smart Adeyemi, during the re-ordered election which was conducted on November 16 before the election was declared inconclusive.
The Independent National Electoral Commission has fixed the supplementary election for November 30.
Melaye while speaking on Channels TV on Sunday stated that the reported plan to boycott the Saturday’s election was a misrepresentation by PDP spokesman.
The Senator stated that he and his party will contest in the election on Saturday despite alleged falsified results.
Melaye said: “The reports about me boycotting Saturday election is just the imagination of APC. We never said we are boycotting the election.”
“PDP only rejected the results of the past election. The PDP is the people’s party and will never shy away from political participation though we know they are not credible and fair.”
“PDP respects the constitutionalism of democracy and will never boycott election even though figures from Kabba local government area are wrong.”
“I will not boycott Saturday’s election.”


WITNESS LIST State Health Care Expenditures, Select Committee July 15, 2003-12:00P HB 70 On: Beckett, Sheila (Employees Retirement System (ERS)) Dunlap, Charles (Teacher Retirement System) Hawkins, Albert (Health and Human Services Commission (HHSC)) Mattax, David (Office of the Attorney General (OAG))


{% load staticfiles %} {% load bootstrap %}
{{ username }}
{{ fullname }}
{{ email }}
Thanks you for register!, We have sent an email for you. Please verify your email and confirm!.


A channel to discuss trading. For useful links and more info click the pinned messages to the right.
100 messages
Before 05-Dec-19 12:00 AM
grewalsatinder30-May-19 09:28 AM
nothing else
KMD is much much better choice if have to only buy something today.
just coz I was one of the first ICO participant, I did not buy any IOTA
I'm only holding tiny bit of what is left of after selling major part of what I got from that ICO
did not buy a single IOTA off the market.
LocoMB30-May-19 09:35 AM
@klein IOTA is a completely different tech than blockchains - it is like difference between an aircrafft carrier and submarine..
but you are right about the uninformed part and the steaming pile of shit
or nuclear fission and fusion (edited)
mrlynch30-May-19 09:39 AM
do they still go down when someone tries to charge their phone and unplugs the servers?!
klein30-May-19 09:44 AM
@LocoMB I just remember hearing the project had lots of problems
LocoMB30-May-19 09:46 AM
yaaaaa... these were really vicisous smear campaigns
the problems that did exist were much smaller than the attackers tried to paint them as
lies, falsehoods decpetions- that is what certain interests used in their attempts to harm the project
and Yes, Dorothy, there are also lots of corrupt fuckers in the academic world, pompous titles and all notwithstanding (edited)
klein30-May-19 09:58 AM
Regardless of whether IOTA is a steaming pile of shit or genuinely pushing the boundaries of innovation, if Supernet is going to be a komodo based asset it should not hold IOTA
whether its going to zero or going to mars should NOT be any basis or judgement to hold IOTA in Supernet(edited)
KomodoWorld30-May-19 10:00 AM
the iota pump is because they found a way to remove the coordinator, that was one of the main criticisms
I've now had the chance to speak about the new proposal with the inventor. Since there are no fees, stake or block rewards in this DPoS proposal, it is also entirely insecure. Read this thread to learn about their broken game-theory reasoning. https://t.co/wXnvQtxyD2
I don't understand enough to say if it will work or not
jl777c30-May-19 10:03 AM
@klein SuperNET predates KMD
it is not mandated to be only for KMD ecosystem
klein30-May-19 10:03 AM
Yes I realise
But my impression was that for it to become a KMD ecosystem asset?
Am I wrong?
jl777c30-May-19 10:04 AM
it is the largest holder of KMD
it is an important part of the ecosystem
but it has no "must divest if not KMD ecosystem" mandate
so i will not take that into account
i will do it if it makes sense to do
klein30-May-19 10:05 AM
So its not going to "become" a komodo ecosystem asset?
soley
jl777c30-May-19 10:06 AM
komodo does not force anybody to become KMD exclusive
why should it do that to SuperNET? which is in a way its parent
that being said, I would indeed be willing to swap IOTA for KMD
it is just easier said than done
grewalsatinder30-May-19 10:08 AM
@klein treat SuperNET asset like a Berkshire Corporation. Just to imagine it as a coroporation, who just invests in companies while they are small, and have possibly big future increasing their value.
It all depends on the evaluator of the SuperNET asset manager who manages it's funds value and diversify it's portfolio to what class of assets and to what kind of assets in that class.
From that understanding I understand that SuperNET is NOT only strictly locked to ONLY Komodo Platform Ecosystem.
In my opinion it'd not be ideal to ONLY stick with KMD. The value of the whole cryptocurrency ecosystem is the ideal choice to be in.
And in case if it can have somehow reach it's target holdings, it's best for all the SuperNET holders.
2
2
klein30-May-19 10:10 AM
Are they any investment rules for Supernet or is it purely discretionary
jl777c30-May-19 10:10 AM
purely discretionary
grewalsatinder30-May-19 10:11 AM
From early days of NXT, this SuperNET asset diversified it's value to some potential cryptocurrency projects.
I guess it might keep doing so if some outside KMD ecosystem project also comes in it's notice.
jl777c30-May-19 10:12 AM
the space is much more difficult now, very crowded and saturated. for new investments it has been limited to the ecosystem projects
but existing investments are not easy to change
jorian30-May-19 10:13 AM
can you say SuperNET is an investment fund, run solely by jl777?
klein30-May-19 10:13 AM
I'd admit a discretionary fund is interesting
jl777c30-May-19 10:14 AM
you can say that, but it does more than pure investing. it helped incubate KMD
granted by doing that, it helped its biggest holding
also, it is not apparent yet as the assetchains are not really producing revenues (other than CRYPTO), but it does have significant stakes in all the potential revenue streams
klein30-May-19 10:17 AM
I guess I was wrong, some how I thought supernet was going to become more of mandated KMD asset
can you prove the majority of masternodes are not controlled by a single entity?
when all the masternodes were created, the coin distribution was still very concentrated
so issues like the instamine are actually relevant, even years later
Tek30-May-19 10:29 AM
can you prove the majority of kmd is not controlled by a single entity?
when kmd was created, the coin distributed was still very concentrated
mrlynch30-May-19 10:29 AM
eeek just had a look through my portofolio - 1300% on a buy in arrr
already miss teh dumpers
small buy though
jorian30-May-19 10:30 AM
@Tek are you comparing KMD holders to masternodes in Dash?
mrlynch30-May-19 10:30 AM
he does love his dash
Tek30-May-19 10:30 AM
no man but its stupid to always say "instamine so dash is a scam" shit
Satoshi has 1 million coins from the very start
Ethereum had a huge premine of 70 milllion eth
i mean... if you gonna shit on dash, shit on those facts to
mrlynch30-May-19 10:33 AM
there's a difference between mining as per consensus rules (btc, not interested in eth so don't know) and having a few special blocks just for your lonesome
LocoMB30-May-19 10:33 AM
lol .. have some more cool aid dude... bcs "instamine so dash is a scam"
Tek30-May-19 10:34 AM
whats the differnece if you mine them before anyone knows about the coin
LocoMB30-May-19 10:34 AM
besides, those few handfuls of masternodes are controlled by a few shady insiders - in contrast to KMD NN nodes, who do not control the content(edited)
Tek30-May-19 10:34 AM
there's no difference, when satoj and frens mined in the beginning before telling all the rest what buttcoin is
mrlynch30-May-19 10:34 AM
the difference is in the consensus rules
jorian30-May-19 10:34 AM
they could tell, but nobody cared
LocoMB30-May-19 10:34 AM
yes, but that is A transparent, and B Satoshi is poofed
mrlynch30-May-19 10:34 AM
they did tell the world what it was, crypto world was far smaller then that's all
jorian30-May-19 10:34 AM
i think we would all have wanted to know about BTC
in 2009
LocoMB30-May-19 10:36 AM
I did in 2010 and was annoyed because I connected it somehow to Facebook... oh my, what the psychotherapy sessions have cost me.. (edited)
klein30-May-19 10:36 AM
nah you don't
you would have alot more regrets
mrlynch30-May-19 10:36 AM
if i put up a chain rn, post on btt and start mining (because i have to to keep the chain alive) is very different to me putting up a chain with 10% of coins in first 10 or whatever blocks
i get that you like <insert coin here> but let's keep it real shall we?!
Tek30-May-19 10:38 AM
the results are the same. the creators have vast amounts of coins
mrlynch30-May-19 10:38 AM
aah, so you're looking for equality of outcome
that's not how the world works and plenty of spec miners can tell u so
sorry but your line of reasoning on this matter is flawed to say the least
you NEED to mine the chain to get it going, you can't wait for 1000+ miners from btt to keep it alive
Tek30-May-19 10:41 AM
be me satoj
invent crypto currency
mine 1 million coins while testing stuff
tell the world
mrlynch30-May-19 10:42 AM
as a result, yes you do get a fair amount of coins until gpu, fpga and asics hit u
that is incorrect
Tek30-May-19 10:42 AM
be me vitalik
build ethereum
premine 70 million and give it to myself/ frens and icos
no one cares
mrlynch30-May-19 10:42 AM
the world knew before he had 1 mil btc, way before
Tek30-May-19 10:42 AM
be me dash
2 million instamine the first week
everyone cares
mrlynch30-May-19 10:42 AM
i don't care about eth as i already mentioned
but comparing dash instamine with btc consensus rule mining when only a few knew what crypto is - that is flawed
Tek30-May-19 10:43 AM
the results are the same dude
mrlynch30-May-19 10:44 AM
no they're not
i just told you why
Tek30-May-19 10:44 AM
i also just told you why
jorian30-May-19 10:44 AM
satoshi didn't even know initially if it would all work out
mrlynch30-May-19 10:45 AM
one creator has coins due to consensus rules, the other has it because greed and hopium for moon


To use this service, you will need to be mining Walton using original 1.0.17 Wallet version found here. If you have already upgraded to the newer version of the miner, that is OK. You can uninstall that one and "downgrade" to the older one. In the meantime, we will work on a way to get the newer version working here!
Once you have installed and confirmed that the miner is working, we reccommend you head over to our GitHub to download the EasyWaltonMiner. This will allow you an easy way to setup your miner for this service.
This website works by tracking the Walton blockchain and specifically targetting the "extradata" attached to each block. Therefore, to use this service, all you have to do is add some extra data to your miner. You can follow the instructions on the EasyWaltonMiner Github to set this up properly.


Week 17 Google Cloud and AWS Oh My¶
so many technical options and choices - so little time.
What does this class teach again?¶
How to exploit the AWS Cloud via CHS
PANGEO - Xarray, Pandas, Holoviews …
DevOps for the science guys
Moving, Wrangling Data with less effort and less time
Don’t MOVE your data - teleport to Oregon - us-west-2
Jupyter and Python - easy to write - easy to run
Docker its in there
Future Classes¶
Logan - HLS experiments for ECO-invasive
Aaron - s3 direct access LPDAAC HLS
Kelcy - time series landsat
Pat Danielson, Kory, Brett, Brian Tolk – Compositing - NLCD and FireScience
Simson –> Jupyter Quick Start
Erica Degagga –> Landfire Initiatives in the Cloud
Tony –> Searching disorganized git repos
Neal CoP presentation on using Cloud + Cloud + HPC + AI/ML/DL
Past Videos¶
teams does not make it easy to share for new users
past channel is not available
test with Simson negative result
Game of Thrones is 67 hours – this is less than 20 so far
Pangeo Access¶
https://taskmgr.chs.usgs.gov/servicedesk/customer/portal/10/create/251
https://taskmgr.chs.usgs.gov/servicedesk/customer/portal/10
Evapo Cartoon¶
https://github.com/tonybutzer/et/blob/master/docs/source/00status.md
https://github.com/tonybutzer/et/blob/master/docs/source/00status.md
Class Context¶
Projects that use mutiple modern compute resources
CHS AWS development accounts - EC2 elastic, ephemeral computer – with S3 and git for persistence
HPC - especially Tallgrass - cause its availabkle and has GPUs
Part of our model family SSEBop is computed/modeled using Google Cloud Platform and GEE
GSUTIL and RCLONE featured
Refresher on DOCKER and SINGULARITY
using pangeo.chs.usgs.gov for displaying ssebop
Open Data Cube abstractions BUT with PANGEO for Landsat Albers Scenes
Demo Overview¶
Look at google cloud bucket assets - ssebop
demo how to replicate/sync/copy those to our AWS DataLake
demo using docker to build an image for gsutil – google utility
demo running the container on AWS
demo running the container/sif on Tallgrass
demo looking at the tif file with Pangeo on tallgrass via ssh tunnel of port 8888
redo Nate’s Waubay for albers and rgb
composite repo?
https://console.cloud.google.com/storage/browser/ssebop-modis/Annual
Rclone Examples¶
tony –> umyssh minipangeo
1984 cat Dockerfile
1985 cat Makefile
1986 cd
1987 ls
1988 rclone config
1989 ls
1990 rclone listremotes
1991 rclone config
1992 rlone ls sbop:/ssebop-modis/
1993 rclone ls sbop:/ssebop-modis/
1994 rclone sync -P sbop:/ssebop-modis/Annual et-data:/dev-et-data/datalake/ssebop-modis/Annual/
1995 aws s3 ls dev-et-data/datalake/ssebop-modis/Annual/
1996 aws s3 ls dev-et-data/datalake/ssebop-modis/Annual/ --human
1997 gdalinfo /vsis3/dev-et-data/datalake/ssebop-modis/Annual/y2003_modisSSEBopETv4_actual_mm.tif
1998 ls
1999 ls -l
2000 rclone listremotes
2001 rclone ls sbop:/ssebop-modis
2002 rclone ls sbop:/ssebop-modis --help
2003 rclone lsjson sbop:/ssebop-modis
2004 rclone lsjson sbop:/ssebop-modis/Annual
2005 rclone ls sbop:/ssebop-modis/Annual
2006 history
ARCPY vs. Open Source¶
Databases are so yesterday¶
But if you insist on postgres¶
I am talking to you OpenDataCube¶
THEN - at least use docker to minimize the PAIN!
ubuntu@ip-10-12-68-246:/opt/cube-in-a-box$ more docker-compose.yml
version: '3'
services:
postgres:
image: postgis/postgis:10-2.5
environment:
- POSTGRES_DB=opendatacube
- POSTGRES_PASSWORD=opendatacubepassword
- POSTGRES_USER=opendatacube
ports:
- 5432:5432
restart: always
jupyter:
build: .
environment:
- DB_HOSTNAME=postgres
- DB_USERNAME=opendatacube
- DB_PASSWORD=opendatacubepassword
- DB_DATABASE=opendatacube
- AWS_NO_SIGN_REQUEST=true
- STAC_API_URL=https://earth-search.aws.element84.com/v0/
ports:
- "8080:8888"
volumes:
- ./notebooks:/notebooks
restart: always
command: jupyter notebook --allow-root --ip="<IP_ADDRESS>" --NotebookApp.token='secretpassword'
What does a world class data center look like?¶
lean and agile
Highly TRAINED
communicates across informal channels
Common Goal - effective use of the planet’s limited resources -
A world or universe view
fosters the right CULTURE
sharing and confidence
respects each other’s expertise
has each other’s back
has fun at work
rejects management styles that don’t inspire
These classes propose PANGEO as a way for science¶
Open Data Cube - is an instance of PANGEO
its database for me represents a barrier to entry
that said its a cool and powerful abstraction for building xarray timeseries applications that run in Pangeos


SURF(Speeded-up Robust Feature)
Speeded Up Robust Feature (SURF) is an image region descriptor and detector that is constant with respect to scale, orientation, and illumination. To detect interest points, SURF uses an integer approximation of the determinant of Hessian blob detector, which can be computed with 3 integer operations using a precomputed integral image. Its feature descriptor is based on the sum of the Haar wavelet response around the point of interest. These can also be computed with the aid of the integral image.
- It is an enhanced version of SIFT.
- It is faster than SIFT.
A feature detector detects the keypoints and a feature descriptor describes the keypoints(how does the surrounding or pixels look like)
Keypoints are points of interest in an image that can be used to compare images and perform tasks such as image alignment and image registration.
A feature descriptor is an algorithm which takes an image and outputs feature descriptors/feature vectors. Feature descriptors encode interesting information into a series of numbers and act as a sort of numerical "fingerprint" that can be used to differentiate one feature from another. Ideally this information would be invariant under image transformation, so we can find the feature again even if the image is transformed in some way. SURF descriptors have been used :
- to locate and recognize objects, people or faces
- to reconstruct 3D scenes
- to track objects and to extract points of interest.
SURF was first published by Herbert Bay, Tinne Tuytelaars, and Luc Van Gool,
and presented at the 2006 European Conference on Computer Vision.
The algorithm has three main parts:
- interest point detection
- local neighborhood description
- matching.
Interest Point Detection
SURF uses a blob detector based on the Hessian matrix to find points of interest. The determinant of the Hessian matrix is used as a measure of local change around the point and points are chosen where this determinant is maximal.
SURF also uses the determinant of the Hessian for selecting the scale,<
The sum of the original image within a rectangle can be evaluated quickly using the integral image, requiring evaluations at the rectangle's four corners.
SURF uses a blob detector based on the Hessian matrix to find points of interest. The determinant of the Hessian matrix is used as a measure of local change around the point and points are chosen where this determinant is maximal. In contrast to the Hessian-Laplacian detector by Mikolajczyk and Schmid, SURF also uses the determinant of the Hessian for selecting the scale, as is also done by Lindeberg. Given a point p=(x, y) in an image I, the Hessian matrix H(p, σ) at point p and scale σ, is:
import cv2
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
#read image and convert to grayscale
image = cv2.imread('index.png')
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
#instantiate surf object
surf = cv2.xfeatures2d.SURF_create(400)
#calculate keypoints and their orientation
keypoints,descriptors = surf.detectAndCompute(gray,None)
with_keypoints = cv2.drawKeypoints(gray,keypoints)
plt.imshow(with_keypoints)
Surf Implementation on Jupyter Notebook (click the link , you will reach to python notebook )
This is the most basic and simple explanation of surf
Happy Learning !! 📚


Page width
Display mode
Paper texture
Book fold
Realistic lighting
Side pages
Book shadow
Dark Theme
Light Theme


Pounce Quick Start
Select an example
Math, postfix notation
Stack shuffeling
Word definition (add-one)
factorial, by word compose
factorial, by linrec
Fibonachi Numbers
Fibonachi sequence
Named stack positions
Calculate y = mx + b
Quick sort, using binrec
prime factors
map
map may use what is below on the stack
filter
reduce
stack-copy & filter
debugging OFF
debugging to level 1
debugging to level 2
debugging to level 3
debugging way down
stack results listed below
write a Pounce program here


| Package | Description |
|---|---|
| de.uni_mannheim.informatik.dws.winter.matching |
Package for Schema Matching and Identity Resolution.
|
| de.uni_mannheim.informatik.dws.winter.matching.rules | |
| de.uni_mannheim.informatik.dws.winter.model.defaultmodel.comparators | |
| de.uni_mannheim.informatik.dws.winter.usecase.movies.identityresolution |
| Modifier and Type | Method and Description |
|---|---|
Processable<Correspondence<SchemaElementType,SchemaElementType>> |
MatchingEngine.runLabelBasedSchemaMatching(DataSet<SchemaElementType,SchemaElementType> schema,
Comparator<SchemaElementType,SchemaElementType> labelComparator,
double similarityThreshold)
Runs label-based schema matching on the provided dataset using the specified comparator.
|
Processable<Correspondence<SchemaElementType,SchemaElementType>> |
MatchingEngine.runLabelBasedSchemaMatching(DataSet<SchemaElementType,SchemaElementType> schema1,
DataSet<SchemaElementType,SchemaElementType> schema2,
Comparator<SchemaElementType,SchemaElementType> labelComparator,
double similarityThreshold)
Runs label-based schema matching on the provided datasets using the specified comparator.
|
| Modifier and Type | Class and Description |
|---|---|
class |
AggregableMatchingRule<RecordType extends Matchable,SchemaElementType extends Matchable>
A matching rule that specifies how correspondences are grouped for aggregation.
|
class |
AggregateByFirstRecordRule<RecordType extends Matchable,SchemaElementType extends Matchable>
An
IdentityMatchingRule that specifies that correspondences should be grouped by their left-hand side |
class |
FilteringMatchingRule<RecordType extends Matchable,SchemaElementType extends Matchable>
Super-class for matching rules for schema matching
|
class |
IdentityMatchingRule<TypeA extends Matchable,TypeB extends Matchable>
A matching rule that returns the input correspondences above the specified threshold and specifies that correspondences should be grouped by both elements.
|
class |
LinearCombinationMatchingRule<RecordType extends Matchable,SchemaElementType extends Matchable>
A
MatchingRule that is defined by a weighted linear
combination of attribute similarities. |
class |
MatchingRule<RecordType extends Matchable,SchemaElementType extends Matchable>
Super class for all matching rules.
|
class |
VotingMatchingRule<RecordType extends Matchable,SchemaElementType extends Matchable>
A matching rule that generates a vote for every causal correspondence that is passed and aggregates these votes with the provided voting strategy.
|
| Modifier and Type | Method and Description |
|---|---|
void |
LinearCombinationMatchingRule.addComparator(Comparator<RecordType,SchemaElementType> comparator,
double weight)
Adds a comparator with the specified weight to this rule.
|
| Modifier and Type | Class and Description |
|---|---|
class |
LabelComparatorJaccard
A comparator that compares attribute names with Jaccard similarity.
|
class |
LabelComparatorLevenshtein
A comparator that compares attribute names with Levenshtein similarity
|
| Modifier and Type | Class and Description |
|---|---|
class |
MovieDateComparator10Years
|
class |
MovieDateComparator2Years
|
class |
MovieDirectorComparatorJaccard
Comparator for Movie s based on the
Movie.getDirector() values, and their
TokenizingJaccardSimilarity similarity. |
class |
MovieDirectorComparatorLevenshtein
Comparator for Movie s based on the
Movie.getDirector() values, and their LevenshteinSimilarity
similarity. |
class |
MovieDirectorComparatorLowerCaseJaccard
Comparator for Movie s based on the
Movie.getDirector() values, and their
TokenizingJaccardSimilarity similarity, with a lower casing
beforehand. |
class |
MovieTitleComparatorEqual
|
class |
MovieTitleComparatorJaccard
Comparator for Movie s based on the Movie.getTitle()
value and their TokenizingJaccardSimilarity value. |
class |
MovieTitleComparatorLevenshtein
|


Next:
Definition of the field-line-following
Up:
Notes on tokamak equilibrium
Previous:
Radial differential operator
Field-line-following coordinates
Subsections
Definition of the field-line-following coordinates
Visualization of field-line-following coordinates
Periodic conditions of physical quantity along
and
in field-line-following coordinates
Numerical implementation of periodic condition (290)
contours on a magnetic surface
contours in a toroidal annulus
Some discussions
Numerical verification of the field-aligned coordinates
Expression of metric elements of magnetic coordinate system
Other expressions for magnetic field
Expression of current density
yj 2018-03-09


Journalist loses Indian citizenship after piece criticizing PM Modi
by Morgan PhillipsA British Indian journalist was stripped of his citizenship Thursday after he published works critical of Prime Minister Narendra Modi.
Aatish Taseer was born in the U.K. but raised in India. He was stripped of his overseas citizenship of India (OCI) on Thursday and will never be able to return to the country.
He told The Guardian the government’s move was “highly suspicious and systematic.”
“They are making an example of me and sending a warning message to other journalists,” he added.
The decision came after the front-page piece he wrote for Time magazine in May, just before Indian elections, titled “India’s Divider in Chief,” which was highly critical of Modi’s leadership.
INDIAN OFFICIAL BURNED ALIVE BY LAND OWNER OVER REPORTED PROPERTY DISPUTE
“Within India, the Modi government has completely altered the media climate, everyone critical has been muffled or silenced,” Taseer explained. “And now my case shows that even those who think they are protected because they write abroad or for a foreign publisher, they are not going to be safe either.”
The reasoning of India’s home ministry was that Taseer had “concealed the fact that his late father was of Pakistani origin” which made him ineligible for OCI status.
Taseer said his connection to Pakistan had never been hidden. He said he’d never been given an official notice and instead found out via a public tweet on Thursday.
Taseer’s father, Salman Taseer, was a Pakistani born in pre-partition British India. He later served as governor of Pakistan’s Punjab Province until he was assassinated in 2011 for opposing the country’s blasphemy laws.
NEW DELHI TOXIC SMOG PREVENTS PLANES FROM LANDING, SHUTS DOWN SCHOOLS
Taseer said he had no connection to his father at all growing up and was raised by his single mother, a prominent journalist. Even so, Taseer said his father’s name had been listed on all Indian citizenship status documents.
“I never had any problems with my citizenship until after the Time piece was written,” said Taseer. “There have been a number of times where my father’s Pakistani nationality has been as clear as day. I wrote a book on discovering him aged 21. He was assassinated in 2011 and it was a major story across the world.”
Taseer’s Time piece triggered a smear campaign against him led by a spokesman for Modi’s party, which Modi himself eventually joined in on. Taseer was repeatedly described as having an anti-Indian agenda due to his “Pakistani political family” background.
CLICK HERE FOR THE FOX NEWS APP
Taseer’s fate bolstered accusations of Modi’s intolerance to criticism. Since Modi came to power in 2014, India has fallen to 140th out of 180 on the World Press Freedom Index.


NavCoin is an easy to use digital currency - run by its community. It’s programmable money that lowers the cost of doing business in the Web3 economy.
WalletsDesigned for fast, cheap, and secure peer-to-peer payments. A network that's driven to lowering the cost of doing business.
Decentralization isn’t just a buzzword. It’s built into the very foundation of the network, to create a culture of permissionless innovation.
NavCoin funds itself using the most advanced community fund ever built. The first fully-decentralised, fully-autonomous fund that only the community controls.
Cryptocurrencies are complicated, but it doesn’t need to be that way. NavCoin aims to make paying with crypto so easy your parents can do it.
NavCoin runs on Proof of Stake, which consumes a fraction of the energy of a Proof of Work network.
Testing shows current capacity at 260+ transactions per second, alongside active research into layer 2 scaling solutions.
Send money cheaply, anywhere in the world, without needing to go through a bank.
Privacy has always been a central part of NavCoin, from the original NavTech to the upcoming improvements.
Transactions show up in seconds, and are confirmed within 30 seconds, making it ideal for business.
NavCoin uses OpenAlias to make sending money as easy as typing an email address.
No one is in control of NavCoin - everyone is free to contribute however they want. There are no forced changes, and every wallet gets a say in the direction of NavCoin.
Open source is the backbone of NavCoin. Every line of code is viewable, and anyone can contribute to the website. Trust has to be built through transparency.
Being a peer to peer network means that there are no banks or intermediaries getting in the way. An economic system where your vote counts.
NavCoin is symbol of change for how the entire global economic system works - one that returns freedom, privacy, and financial power back to the individual.
No one lives in a bubble - we all affect the world in different ways. This is why NavCoin strives to be energy efficient to do right by our planet.
Privacy is about giving you a choice. You get to take back control of your personal information, along with who gets access to it.
The NavCoin blockchain forms the foundation for everything, is completely open source, and secured by nodes running all around the world.
Get InvolvedNavHub is the 2nd layer of our ecosystem, and is where you can see the various projects being built on top of the NavCoin protocol.
Explore NavHubAnyone can get involved in NavCoin, and even get paid for their efforts. Join our community channels to hear the latest news & updates.
Join CommunityAnyone can join our community of doers: developers, entrepreneurs and technologists all working together to build a new economic system.


| 1 | /* =========================================================== | |
| 2 | * JFreeChart : a free chart library for the Java(tm) platform | |
| 3 | * =========================================================== | |
| 4 | * | |
| 5 | * (C) Copyright 2000-2008, by Object Refinery Limited and Contributors. | |
| 6 | * | |
| 7 | * Project Info: http://www.jfree.org/jfreechart/index.html | |
| 8 | * | |
| 9 | * This library is free software; you can redistribute it and/or modify it | |
| 10 | * under the terms of the GNU Lesser General Public License as published by | |
| 11 | * the Free Software Foundation; either version 2.1 of the License, or | |
| 12 | * (at your option) any later version. | |
| 13 | * | |
| 14 | * This library is distributed in the hope that it will be useful, but | |
| 15 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
| 16 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public | |
| 17 | * License for more details. | |
| 18 | * | |
| 19 | * You should have received a copy of the GNU Lesser General Public | |
| 20 | * License along with this library; if not, write to the Free Software | |
| 21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
| 22 | * USA. | |
| 23 | * | |
| 24 | * [Java is a trademark or registered trademark of Sun Microsystems, Inc. | |
| 25 | * in the United States and other countries.] | |
| 26 | * | |
| 27 | * --------------- | |
| 28 | * NumberTick.java | |
| 29 | * --------------- | |
| 30 | * (C) Copyright 2003-2008, by Object Refinery Limited. | |
| 31 | * | |
| 32 | * Original Author: David Gilbert (for Object Refinery Limited); | |
| 33 | * Contributor(s): -; | |
| 34 | * | |
| 35 | * Changes | |
| 36 | * ------- | |
| 37 | * 07-Nov-2003 : Version 1 (DG); | |
| 38 | * 20-Jun-2007 : Removed JCommon dependencies (DG); | |
| 39 | * 02-Aug-2007 : Added new constructor with tick type (DG); | |
| 40 | * | |
| 41 | */ | |
| 42 | ||
| 43 | package org.jfree.chart.axis; | |
| 44 | ||
| 45 | import org.jfree.chart.text.TextAnchor; | |
| 46 | ||
| 47 | /** | |
| 48 | * A numerical tick. | |
| 49 | */ | |
| 50 | public class NumberTick extends ValueTick { | |
| 51 | ||
| 52 | /** The number. */ | |
| 53 | private Number number; | |
| 54 | ||
| 55 | /** | |
| 56 | * Creates a new tick. | |
| 57 | * | |
| 58 | * @param number the number (null not permitted). | |
| 59 | * @param label the label. | |
| 60 | * @param textAnchor the part of the label that is aligned with the anchor | |
| 61 | * point. | |
| 62 | * @param rotationAnchor defines the rotation point relative to the text. | |
| 63 | * @param angle the rotation angle (in radians). | |
| 64 | */ | |
| 65 | public NumberTick(Number number, String label, | |
| 66 | TextAnchor textAnchor, | |
| 67 | TextAnchor rotationAnchor, double angle) { | |
| 68 | ||
| 69 | super(number.doubleValue(), label, textAnchor, rotationAnchor, angle); | |
| 70 | this.number = number; | |
| 71 | ||
| 72 | } | |
| 73 | ||
| 74 | /** | |
| 75 | * Creates a new tick. | |
| 76 | * | |
| 77 | * @param tickType the tick type. | |
| 78 | * @param value the value. | |
| 79 | * @param label the label. | |
| 80 | * @param textAnchor the part of the label that is aligned with the anchor | |
| 81 | * point. | |
| 82 | * @param rotationAnchor defines the rotation point relative to the text. | |
| 83 | * @param angle the rotation angle (in radians). | |
| 84 | * | |
| 85 | * @since 1.0.7 | |
| 86 | */ | |
| 87 | public NumberTick(TickType tickType, double value, String label, | |
| 88 | TextAnchor textAnchor, | |
| 89 | TextAnchor rotationAnchor, double angle) { | |
| 90 | ||
| 91 | super(tickType, value, label, textAnchor, rotationAnchor, angle); | |
| 92 | this.number = new Double(value); | |
| 93 | ||
| 94 | } | |
| 95 | ||
| 96 | /** | |
| 97 | * Returns the number. | |
| 98 | * | |
| 99 | * @return The number. | |
| 100 | */ | |
| 101 | public Number getNumber() { | |
| 102 |
1
1. getNumber : mutated return of Object value for org/jfree/chart/axis/NumberTick::getNumber to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return this.number; |
| 103 | } | |
| 104 | ||
| 105 | } | |
Mutations | ||
| 102 |
1.1 |


| i_am {here} | R Documentation |
Add a call to here::i_am("<project-relative path>.<ext>")
at the top of your R script or in the first chunk of your rmarkdown document.
This ensures that the project root is set up correctly:
subsequent calls to here()
will refer to the implied project root.
If the current working directory is outside of the project
where the script or report is intended to run, it will fail
with a descriptive message.
i_am(path, ..., uuid = NULL)
path |
|
... |
Must be empty, reserved for future use. |
uuid |
If not |
Relying on the project root determined with a project file,
the default for versions prior to 1.0.0,
only weakly protects against running a script from an arbitrary directory
outside the intended project.
The i_am()
function offers a stronger way to define the project root:
it will ensure that the project root actually contains a file in that location,
optionally checking for file contents that uniquely identify the file
via the nonce
argument.
This function will fail if the script or report is moved within the project.
Update the i_am()
call to reflect the new location.
If you use the nonce
argument for extra safety, be sure to change it
when you save an existing script or report under a new name.
This function is called for its side effects.
## Not run: here::i_am("prepare/penguins.R") here::i_am("analysis/report.Rmd", uuid = "f9e884084b84794d762a535f3facec85") ## End(Not run)


Your browser does not support HTML5 video.
Perfect and awesome template to present your future product service.
Hooking audience attention in the opener.
More Information
Get Notified
Subscribe to our Newsletter
Daily Newsletter


- CheckBoxNumbers - Variable in class passwordGenerator.Language
-
Title from the Checkbox Numbers (0 to 9)
- CheckBoxSpezial - Variable in class passwordGenerator.Language
-
Title from the Checkbox Special chars (!\"#$%&'()*+,-./:;<=>?@)
- checkForUpdate() - Method in class passwordGenerator.windows.JFramePasswordGenerator
-
This method connecting to the Internet, check if a new version of this application is available and shows the user if his version is up to date
or not.
if its up to date a dialog will be shown to visual the user that there is no update.
if its NOT up to date a dialog will be shown, inform the user that there is new version to download and if he want to download the new version
- if the user want to download, a new updater will fired (JFrameDownloadUpdate)
- checkForUpdateSilent() - Method in class passwordGenerator.windows.JFramePasswordGenerator
-
This method connecting to the Internet, check if a new version of this application is available and shows the user if his version IS NOT up to
date.
if its up to date nothing happens.
if its NOT up to date a dialog will be shown, inform the user that there is new version to download and if he want to download the new version
- if the user want to download, a new updater will fired (JFrameDownloadUpdate)
- CURRENT_LANG - Static variable in class passwordGenerator.Language
-
holds (as int) the current language
- currentLanguage - Static variable in class passwordGenerator.Main
-
holds the current language


11:00
US fisherman rescued by tanker after 66 days lost at sea
12:00
Overseas aid must rise by £1bn in next two years, says Europe
13:00
Muslim population looks likely to double in size
15:00
Heathrow cuts passenger levy to boost domestic flights
16:00
Couple plotted to sell their new baby online for €5,000
11:00
US fisherman rescued by tanker after 66 days lost at sea
12:00
Overseas aid must rise by £1bn in next two years, says Europe
13:00
Muslim population looks likely to double in size
15:00
Heathrow cuts passenger levy to boost domestic flights
16:00
Couple plotted to sell their new baby online for €5,000
Flash News
11:00
US fisherman rescued by tanker after 66 days lost at sea
12:00
Overseas aid must rise by £1bn in next two years, says Europe
13:00
Muslim population looks likely to double in size
15:00
Heathrow cuts passenger levy to boost domestic flights
16:00
Couple plotted to sell their new baby online for €5,000
11:00
US fisherman rescued by tanker after 66 days lost at sea
12:00
Overseas aid must rise by £1bn in next two years, says Europe
13:00
Muslim population looks likely to double in size
15:00
Heathrow cuts passenger levy to boost domestic flights
16:00
Couple plotted to sell their new baby online for €5,000
11:00
test with "little text"
12:00
test with "little text"


Common fonts used for newspaper template design
#} {##} {# #} {#
{% extends "layout.html" %} {% block content %}
I am a professional Django Developer & Project Manager
Involved with latest web technologies
feel free to contact me.
With more than 5 years working on development for clients of all around the world and more than 7 years learning the latest technologies, I really enjoy creating systems with the best practices and the latest technology. I have plenty of experience developing complex backends, since a normalized DB to the stripe forms, always working with the performance (but never forget that “premature optimization is the root of all evil.” - Donald Knuth )
I have been working as a web developer since 2012. My expertise is Python/Django but I have experience with some other frameworks (for example this webpage is running with flask, Django is too much for this). I have plenty of experience managing teams of different sizes, always following scrum.
Thanks to my studies of OOP I get all the basic to start in the IT world, here I learn a lot about programming, networks, Databases, and more
I'm still studying to get my BA, even when work and study at the same time is not easy, the experience is really gratified
I did a change from UDELAR to ORT in order to get better knowledge in a University with the best professors in the Country.
During this time I specialized in Python Django and worked with various technologies like NoSQL Databases, RestFul APIs, HTML, CSS, AWS infraestructures, Big Data, Unix systems, on projects of very diverse size and requirements. This revealed my passion for building scalable and maintainable platforms. While I was growing professionally I also helped consolidate partnerships for the company, providing attentive and timely help for both our customers and team members, which consolidated my future position as CTO.
As the Company's CTO, I'm responsible for the study of new technologies, leading and working close to the IT team to increase their skills, general quality & professionalism. My responsibilities also include supervising the recruitment process, improving the development workflow and assisting the developers to achieve their goals with maximum efficiency possible. I ensure that the team is up to date with the best practices of each area and get new employees up to speed with the company's tech stacks.
As a PM in Trafilea I have the oportunity to improve a lot my leadership skills, creating from scratch a development area to create a system to manage thousent of visists at day in continuesly growing company


Welcome to Sayingfy!
Where you can vote on the quotes added by other users
And share the quotes that are closest to your heart


| BaseApp |
The base class for CooL applications. |
| BaseConfig |
The base class for classes that inspect and manipulate configurations. |
| ClassHelper |
Convenience functions for performing object-oriented class and object manipulation. |
| DataHelper |
Convenience functions for performing data manipulation. |
| DisplayHelper |
Convenience functions for inspecting and manipulating the display. |
| DisplayManager |
Manages the display as configured by Corona and CooL. |
| FileHelper |
Convenience functions for files, file systems, file names, and directories. |
| FrameworkConfig |
Convenience methods to inspect and manipulate the state of the CooL configuration. |
| FrameworkDisplay |
Convenience methods to inspect and manipulate the state of the display, as configured by CooL. |
| PlatformConfig |
Convenience methods to inspect and manipulate the state of the Corona configuration. |
| PlatformDisplay |
Convenience methods to inspect and manipulate the state of the display, as configured by Corona. |
| PlatformFileHelper |
Convenience functions for files, file systems, file names, and directories in Corona. |
| SpriteSheet |
Represents Corona SpriteSheet objects. |
| SpriteSheetData |
Represents Corona SpriteSheet data. |
| classpath.lua |
Base 'classpath' file that includes CooL classes and defines certain CooL global variables. |
| globals |
Global convenience functions and variables. |


This plugin is made to display a data table on Angular Dart platform. Currently it support a simple data table with or without server processing.
This class is used to define a column and how you want to format the data.
| Attribute | Type | Usage |
|---|---|---|
| title | String | This attribute is used to define the column title. |
| selector | String | This attribute is used as a key name from the map data. The default value is camel cased title. |
| sort | ColumnSort - Enum(none, normal, asc, desc) | Define how you want to sort the data. The default value is none and it would not print the sorting icon on the header. |
| formatter | Function(dynamic) | If you want to format the data before showing it on the table, you can use this function. The parameter of this function is not just a single data but the entire row data. With this function you can event process a list of non json object as the input of ngd_datatable. |
| component | ComponentFactory | Sometimes you need to place a component instead of just a string. This attribute is allowing you to do so. It will ignore the formatter function the value is not null. |
| initComponent | Function(ComponentRef, dynamic) | To initialize the component with some specific parameter, you can use this function. |
| searchable | bool | Define if the column is searchable. Default value is false. |
| filter | String | Filter value. Can be use to set default search value and get the current search value |
| filterOptions | Map<String, String> | The default search column is input text. If you want to turn it into dropdown, you can use this attribute to set the options. |
| alignment | CellAlignment - Enum(left, center, right, justify) | Set the cell alignment |
| headerAlignment | CellAlignment - Enum(left, center, right, justify) | Set the header cell alignment |
| width | int | Column width can be set by px. e.g. 50 |
| flexWidth | int | Column width can be set relatively using flex. The default value for each column is 1. If flexWidth used with width, the flexWidth would be ignored. |
| cellClass | String | Additional class(es) that you can attach to cell |
| headerClass | String | Additional class(es) that you can attach to header cell |
Data is based on json array
<ngd-datatable [columns]="columns" [data]="data" ></ngd-datatable>
List<NgdDataColumn> columns = [ NgdDataColumn( title: 'Employee Name', sort: ColumnSort.normal ), NgdDataColumn( title: 'Department', sort: ColumnSort.normal ), NgdDataColumn( title: 'Marital Status' ), NgdDataColumn( title: 'Joined Year' ), NgdDataColumn( title: 'Employee Number', sort: ColumnSort.normal ), ]; List<dynamic> data = [ { "employeeName":"Emerson", "department":"Payroll", "maritalStatus":"Single", "joinedYear":2019, "employeeNumber":76123 }, { "employeeName":"Tamara", "department":"Customer Service", "maritalStatus":"Married", "joinedYear":2015, "employeeNumber":93040 } ];
| Attribute | Type | Usage |
|---|---|---|
| [columns] | List<NgdDataColumn> | |
| [data] | List<dynamic> | |
| [count] | int | |
| [pageLimit] | int | default 25 |
| [externalProcessing] | bool | default false |
| [loading] | bool | default false |
| [(page)] | int | default 1 |
| (pageClick) | Function(int page) | |
| (sortClick) | Function(NgdDataColumn column) | This function would be called when a sortable header clicked and when initialize component with column = null if externalProcessing is false. |
| (filterChange) | Function(NgdDataColumn column) | This function would be called when a searchable column filter changed and when initialize component with column = null if externalProcessing is false. |
Load all the data at once and let the ngd-datatable handle the pagination and sorting.
Load page by page data and handle the pagination and sorting externally e.g. by api call.
Load non JSON Object data type without formatting into JSON Object. In this example we are using List<Employee> as the data
Load all the data at once and let the ngd-datatable handle the pagination and sorting.


I am a 21 year old Computer Engineering major at the University of California, Irvine. I was born in Northern California but I am currently living in Southern California. I enjoy watching TV shows, reading books, listening to music, and coding. I am fluent in both English and Vietnamese. I have a lot of interest in technology, especially in web and mobile app development.
Bachelor in Computer Engineering, expected in 2016
Completed — Certificate
Completed — Certificate
Completed — Certificate
Completed — Certificate
Completed — Certificate
Completed — Certificate


Chapter 3 Package
As with many other things in R, the threshold of complexity for writing your own package has recently lowered dramatically. If you are writing some of your own functions in R to use for your research, and you’ve become comfortable with writing functions, you should try putting them in an R package. You don’t have to share this package through publishing it on CRAN or another repository—instead, it’s fine to start by just writing packages for your own use, or for your research group’s private use. However, once you start writing packages, you will see how straightforward it is, and you may want to take the extra steps to prepare your package for CRAN and submit it.
An R package is just “a directory of files which extend R” (https://cran.r-project.org/doc/manuals/r-release/R-exts.html).
You should consider writing your own package anytime you find yourself cutting and pasting
functions to different directories on your computer, so you can use them for different
projects. The RStudio team has created a number of tools to make this process easier, including
some functionality in the RStudio IDE as well as the devtools
package (Wickham, Hester, and Chang 2019).
3.1 Components of R packages
3.1.1 R code
Without R code, there’s not much point to an R package.4 The R function code will go in the package’s “R”
subdirectory. You can use as many or as few “.R” files in this section as you want to
organize your code.
Define your functions in this section as you would if you were creating functions in
an R script. As you become more advanced in writing packages, you may want to start
adapting your function code a bit. For example, the package::function
notation can
help keep clear which package you mean for a function to call a function from, and so
the behavior will be stable regardless of the order that a user loaded packages.
Also, if you intend for your functions to be used inside tidyverse pipelines, you’ll
want to take a look at the developing Tidy evaluation book.
Although it is not required for a package you’re creating just to use yourself, you should think about adding help documentation to your code very early. You can then access this documentation through helpfiles in R, just like you do with other R packages. Even if you are just creating a package for yourself, you should add documentation for all the “top-level” functions5
Years ago, you would need to write this documentation in separate “.Rd” files
and save them in the “man” subdirectory. Now, the easiest thing to do is to use
“roxygen” conventions to write the help information right above each function.
With this style, you’ll use a special type of commenting character (#'
) at the
start of each line with documentation, and there are special codes (e.g.,
@param
when you’re defining one of the function’s parameters) to annotate this
code. This help documentation will then, when you build your package, be
converted to the “.Rd” files you used to have to write yourself and saved in the
“man” directory. Several of the resources listed in “Learn more” give more
details on writing and rendering this help documentation.
3.1.2 DESCRIPTION file
Every package directory must have a DESCRIPTION file, but if you aren’t sharing the package, there’s no harm in leaving this as the original template file you get when you start a package directory using RStudio (you’ll try this out in just a minute). The exception is when your functions rely on functions from other R packages—in this case, you’ll want to add in these dependencies in the DESCRIPTION file. That way, when you load your package, all of these will also be loaded.
If you plan to share your package with others, however, and especially if you plan to publish your package in CRAN or another repository, you’ll need to do a lot more with the DESCRIPTION file. This file provides the metadata on your package, including the authors, version, description, and dependencies on other packages. The R Packages book referenced in the “Learn More” section has extensive advice on editing this file for packages meant for publication.
3.1.3 Other package components
So far, I’ve described the barebones elements you’ll need to have to create a very minimalist package. There are, however, a number of other elements you’ll often want to add to the package. As with the R code for package functions and the DESCRIPTION file, there is a specific location and format required for each of these elements within an R package.
Some of the most common components you’ll want to add include example datasets
(which will go in a data
subdirectory), tutorials for using the package
(vignettes
subdirectory), and unit tests for the functions (tests
subdirectory). To help you set up these extra components, you may want to take a
look at the use_*
family of functions in the usethis
(Wickham and Bryan 2018)
package6 For example, if you
want to include example data in your package, you should check out the
use_data
function, while if you want to add unit tests to your package, check
out the use_test
function. When you run one of these, you’ll notice that the
function adds files and subdirectories when needed to your R package
directory. This may throw you at first, since most R functions don’t make
changes to your file directory, but you’ll need those added files to add the
package components, and it’s much easier to remember a single function call to
run when you need to add one than to remember all the details of which files (and
in what structure) need to be added.
3.2 Try it out
I suggest you try out the following steps to experiment with writing your own package. I’ve included a function for you to build your package around in the “package.R” file of the R project with examples for the workshop.
- Create a new R Project for your R package
- Build the package
- Move a function into the right place in the package
- Edit the DESCRIPTION file as needed
- Add example data into the right place in the package
- Add some unit tests for the function
- Add documentation using roxygen2 notation
- Add a short vignette
I’ll walk you through the first three steps, and then I suggest you use Hadley Wickham’s R Packages book (see the “Learn More” section) to get some tips as you try out the rest on your own.
Create a new R Project for an R package. Open RStudio and go to “File” -> “New Project”. Choose “New Directory” and then “R Package”. Name your package “convertr”. Then click on “Create Project”.
The R Project you’ve just created will open in RStudio. If you look in the “R” subdirectory, you’ll see there’s one file called “hello.R”. There’s also a subdirectory called “man”and three files in the top directory called “.Rbuildignore”, “DESCRIPTION”, and “NAMESPACE”.
Build the package. This project opens with a template—a very small but working package that can
serve as a skeleton as you adapt the files to create your own package. Before you
do anything to change from the template, try building the package using the
build
function from the devtools
package:
library(devtools)
build()
You should get some output like this:
✔ checking for file ‘/Users/georgianaanderson/Documents/r_workshops/convertr/DESCRIPTION’ ...
─ preparing ‘convertr’:
✔ checking DESCRIPTION meta-information ...
─ checking for LF line-endings in source and make files and shell scripts
─ checking for empty or unneeded directories
─ building ‘convertr_0.1.0.tar.gz’
Congratulations! You’ve built (maybe) your first R package. You should now be able to load it like any other R package on computer and run its function. Try running:
library(convertr)
hello()
To build the package in a way that you can use it anywhere on your computer, go to the “Build” tab in RStudio and click “Install and Restart”. As long as you don’t get warning messages, you should be able to load and use the package from any R session on your computer.
Move a function into the right place in the package.
Now try adapting the template into your own package. Delete the file
“hello.R” in the “R” subdirectory. Create a new file in this subdirectory
called something like “temp_conversions.R”. Copy the code for the
c_to_f
function, which is in the “package.R” file of the R Project
with examples for this workshop. Save the file and rebuild the package,
either with the build
call to build within that project or with the
“Install and Restart” button in the “Build” tab to make it available
anywhere on your computer.
3.4 Learn more
One wonderful resource for writing and publishing R packages is the book R
Packages by Hadley Wickham (Wickham 2015). This book
is available for a reasonable price in paperback (many Barnes & Nobles carry it
in their computer section) and is also available for free online. The author of
this book also created and maintains the devtools
package8 The “Package
Development” cheatsheet available through RStudio’s
cheatsheets complements these
resources.
Along with Roger Peng and Sean Kross, I co-teach a Coursera Specialization on Mastering Software Development in R, and we also have an online book on bookdown on the topic. The official CRAN resource for writing packages, “Writing R Extensions”, is available online. However, it gets very technical, and so I recommend starting with other resources and working up to this document.
To learn more about best practices for creating R, especially for publication, check out ROpenSci’s handbook. ROpenSci conducts peer review for R packages, and it’s all conducted openly. You can learn a lot about packages and package development, especially for more complex packages, by following this peer review package. It’s all conducted through the “Issues” in a GitHub repo.
If you end up writing and publishing a lot of R packages through your scientific research, you may find that you need to help your supervisors and peers understand this research project. One recent article discusses how academic research in the data science realm is changing, as well as how department chairs and others can evaluate these new research products, including for promotion and tenure (Waller 2018).
References
Wickham, Hadley, Jim Hester, and Winston Chang. 2019. Devtools: Tools to Make Developing R Packages Easier. https://github.com/r-lib/devtools.
Wickham, Hadley, and Jennifer Bryan. 2018. Usethis: Automate Package and Project Setup. https://CRAN.R-project.org/package=usethis.
Wickham, Hadley. 2015. R Packages: Organize, Test, Document, and Share Your Code. " O’Reilly Media, Inc.".
Waller, Lance A. 2018. “Documenting and Evaluating Data Science Contributions in Academic Promotion in Departments of Statistics and Biostatistics.” The American Statistician 72 (1): 11–19.
The exception? A data-only package, where the package’s purpose is to share data rather than R functions. We’ll look at an example in the “Collect” section.↩
top-level functions. The functions in your package that you expect your users (including yourself) to call directly. Your package may also include some functions that are “helpers”, only used within other functions to help keep the code clean and avoid replication, but never used directly by package users.↩
The
use_*
family of functions were previously in thedevtools
package, but they are being deprecated there and moved to theusethis
package. The R Packages book was written before they were deprecated indevtools
, and so it discusses them asdevtools
functions. As long as you install and load theusethis
package, though, you’ll have no problem following along with the examples in that book.↩This call assumes that the other person has “convertr.tar.gz” saved in his or her working directory. Otherwise, use a pathname to direct R to where the file is saved on the computer.↩
devtools
package. An R package with functions that facilitate R package development. These functions are well-documented in the package documentation as well as through the book R Packages. This package also includes a function for installing R packages from code posted on GitHub (install_github
), which is very useful if you want to find and use packages that are not yet available on CRAN and other repositories or if you want to use the latest, “development” version of a package. This package is available on CRAN and so can be installed withinstall.packages("devtools")
.↩


Basic HWPC Bug Ticket Tracking Project Template. ==> RESET <== I was having multiple problems, I've seen all the parts work and multiple of them together but I keep breaking things. Time for a reset.
On https://hwpc.visualstudio.com I had to go to Control panel -> Default Collection -> HWPC.cc | Security Tab | Member of | and add Build Admin, Contrib, Project Admin and Project Valid Users
Then make a change in source and do commit 'Add Ticket.cs to kick off build to Azure', which it did and you can see the build in hwpc.vsol under Build - Deployed
This deployment did not trigger a db change and the old db was for some other code, so I disable the db link at this url and also deleted the db at this url
Milestone 2: Db Seed - Goal: Create Db from code - Status: TODOSo I want a 'deployment' that will build and seed a data site from scrach. The current build is using the data from App_Data/CodeCamper.sdf and I would like to get off SQLce and also create the seed data from code.
Steps
First need to get my local build to use localdb, not the SQLce it is setup for. I've had lots of strange issues with SQLce and it's primaraly do to the fact that MS is dropping support for ce and I'm using VS2013. Also would like this to build and seed to Azure MSSQL db.
So the Connections string in Web.config is where all this starts.
In Web.config
Set connection string to sue locaDB
Take out provider SqlServerCe
Set DbProviderFactory to use SqlCLient
That broke the app as it now fails to connect, but somewhere it is picking up the Error retrieving data.Cannot attach the file 'C:\Users\cat8d_000\Source\Repos\HWPC.cc\CC.Web\App_Data\CodeCamper.mdf' as database
So how is it picking up nothing. After a chat with CK, decided I should create the seed using CE... so back to CodeCamper.sdf (baically revert the web.config changes but leave as commetns)
Ok back to working... now lets setup migrations. Create a dir DataMigrations
Pull in my old configuration file
Plumb up Ticket.cs model
Add Tickets HttpGet to Contollers/BreezeController.cs
That I think should have worked... But I think I did not have automigrations turned on so I don't know how to have the 'seed built'... So I'm going to leave this and move on... I got this to work under the config hwpc.azurewebsites.net, so need to go revisit when I get a local build going
Milestone 3: Contacts - Goal: Put Contact table association into the Ticket Table - Status: DONEGet a one to one entity relationship while also creating a Contacts table and view with nav and editing.
Steps
We are going to use the Person model as Contact in Ticket. This will be same way Session uses Person as a Speaker.
Add Contact to Ticket as public virtual Person and a public int ContactId into Ticket
Add an ICollection of Ticket called ContactTickets to Person so we have nav from Person to Tickets
Add TicketConfiguration.cs to DataAccess and call the model in CodeCamperDbContext (line 27)
Had some errors deciced to correct by cleaing everything to start over... deleted the CodeCamper.mdf file started getting db attach errors... this is a know issue as MSSQL was attached... short answer is I need to get EF configured so I can do this clean
Getting automatic migrations othe EF stuff configured
Web.config - Setup DefaultConnection to point to CatTest.mdf file
CodeCamperDbContext.cs - Use DefaultConnection for nameOrConnectionString
Well... I got totally lost in something... so I Reset back to the Milestone 2 checkin and started again. I repeted the same process up to the update-database being careful to make sure stuff worked. It ended up being lots of small stuff, but ultimately the Error: "Unable to determine the principal end of the 'CC.DataAccess.Person_ContactTickets' relationship. Multiple added entities may have the same primary key." was due to my Seed not running. The onlything left in the in the git stash (see git stash command) that I might want to use is changing the : base(nameOrConnectionString: "CodeCamper") { } on line 11.
This is working now, so I want to check this in and drop the stash. The other things I was attempting to do in the stash was to setup various auto-migrations which I should re-visit as a separate milestone.
Visual Studio Team Checkin
Team Explorer -> Changes -> Untraced Files (4) click Add All
Commit Message -> Milestone 3: Contacts
Click Commit
Click Sync link, which takes you to Unsynced Commits
Click Sync
Should be successful and the Outgoing commit will disappear
The build will take a bit, but appears in Queued, then appears in Deployed, refresh till you see Succeeded
Deployment hwp_CD_20140222.1
Go to http://hwp.azurewebsites.net/#/ should see nothing as I don't have the db setup correctly. If you go to tickets it will attempt the load and you'll get lots of db error toast
To build and test locally
Team Explorer -> Incomming Commits click Pull
It will probably run now, but you can rebuild the db via
Search -> Pack (should get Package Manager Console)
Delete the migration so it will rebuild
Delete the CodeCamper.mdf file (make sure MSSQL is not attached to the file by deleting the connection if it exists or all hell breaks loose)
Milestone 4: UI - Goal: Candy up the UI to HWPC - Status: DONEBasically I want to drop in a custom template for HWPC. Ideally this would just be a css change, but I'll be going through the steps manually to get the feel of what we could do template wise with build directives.
Steps
In app/layout/topnav.html change title, comment out things we don't need
change ccfavicon.ico and favicon.ico to the bug one (just file replacement / rename)
change content/images/icon.png bug one
Add link rel="shortcut icon" href="bug.ico" in index.html
Add existing item bug.ico to project
In app/config.js change CC to HWPC
In app/dashboard/dashboard.html comment out stuff we don't want
Add the Tickets Icon and Count stuff to dashboard.js (line 14, 40 and 57)
Pull in bootstrap 3 NuGet -> Bootstrap for MVC 5.1
This is going to mess up some of the css... so we'll need to fix as we see it... but first attempt to pull in the bs3 docview.html into app/ticket/ticketdetail.html
Wow... that sort of worked... need to start connecting up the bindings... but heck... not bad... I'm going to attempt to resist messing with the css and let CK do that...
Start in on the bindings... we don't have all the data for those bindings so we'll do some kind of fake in the controller to get going. We can then go back to EF code-first to add the backend data structure and seed it.
Add the Hawk.jpg into content/images/Hawk.jpg
bind Ticket ID: {{vm.ticket.id}}
bind Contact: {{vm.ticket.contact.firstName}}
Figure out a dropdown edit for contact
So... we'll do this the same way they did speakers. I had exposed Persons as iQueryable, but I did not create a new repository, so I'll do that
Create repository.contact.js based off of repository.speaker.js
Add entityName to app/services/model.js line 19
Add createNullo to app/services/model.js line 51 (this is for display when it is null)
Add this.isContact = false to app/services/model.js line 73
Add repoNames to app/services/datacontext.js line 19
Add to load to app/services/datacontext.js line 107
Add to personEntityName to app/services/datacontext.js line 134
Add || changedProp === 'isSpeaker' to app/services/datacontext.js line 192
Add IQueryable Contacts to BreezeController.cs line 41
Add IQueryable Contacts to CodeCamperRepository line 39
Now, I don't think I changed anything in the data model, so lets see if this builds and runs
Error in ticketdetails.js - woops I wanted vm.contacts on line 100
Error unknown provider - woops forgot to add repository.speaker.js to index.html
Error unable to locate propery isContact - woops forgot to add this.isContact = false to app/services/model.js line 73
The drop down was not populating with contacts... then I messed with stuff and broke something
So CRAP... git stash (back to Milestone 3: Contacts)
That was a disaster... shit's not working and now I suspect somehting in the Tickets table stuff either metadata or breeze or breeze is confused about what the metadata... or somehow not loading somthing...
I went to the other user and downloaded Milestone 3: Contacts repo and it had something 'like' the error but with Ticket's instead of Rooms. So, I'm going to attempt to backtrace the Milestone 3 steps.
WHAT THE F... was just setting up to backtrace... I decided to go nuke all the Browser stuff (Local Storage, Session Storage, Cookies) and it started to work... CRAP...
Switching back to other<EMAIL_ADDRESS>from<EMAIL_ADDRESS>Ok... it's back to what it was... going to commit right now
Visual Studio Team Checkin
Team Explorer -> Changes -> Untraced Files (77) click Add All
Included Changes (139)
Commit Message -> Milestone 4: UI
Click Commit
Click Sync link, which takes you to Unsynced Commits
Click Sync
Should be successful and the Outgoing commit will disappear
Milestone 5: Db on Azure - Goal: Db running on Azure like local - Status: TODOSo I've got EF working locally but I PM> command line to do add-migrations and update. I need to set up auto-migrations so they will be triggered automatically in the build.
Steps
Starting from
$ git log
commit 0fc41ad80cc355ba72000cc0565c4417d76821a6
Author: CAT Windows8Dev<EMAIL_ADDRESS>Date: Sat Feb 22 10:26:59 2014 -0600
Milestone 3: Contacts
I modified the following to point to local SQLExpress
Web.config line 16, add name="DefaultConnection" connectionString="Data Source=CAT8DEVE\SQLEXPRESS;Initial Catalog=CodeCamper;Integrated Security=True;Trusted_Connection=true;" providerName="System.Data.SqlClient"
Web.config line 14, comment out the old connection
CodeCamperDbContext.cs line 12, comment out the old connection
CodeCamperDbContext.cs line 11, add "DefaultConnection
In MS SQL Server Management Tools create CodeCamper Database (use defaults)
Try to use online manager (use firefox) but couldn't get SQL query to run
Went back to MS SQL Server Management Studio.. connect to vhgopfx0dl.database.windows.net (cathwpc)
Then I could verify db was fine... so it had to be on web side
Started to look at Web.config again... woops... connections string was attempting to attach CAT8DEVE
Use connectionString="Server=tcp:vhgopfx0dl.database.windows.net,1433;Database=CodeCamper;User ID=cathwpc@vhgopfx0dl;Password=Time2Invest;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"
Now I need to work at getting this branch functionally ahead of the master so I can do a stow/branch change/merge back to a master branch. I don't want to just merge because I had broken something between this branch and the last master commit... and I'm not sure how VS will follow... so rather just re-do stuff to make this branch work.
Well poo... I named the commit "Milestone 6: Template Task" it should be "Milestone 5: Db on Azure" guess I'll keep going on these instructions till I get to "Milestone 6: Template Task"
So now I want to 'redo' the edits I made in "Milestone 4: UI" so I'll call out deviations
Milestone 4: UI - REDO
Steps 1 - 9 done
Hold off on Step 10 - Pull in Bootstrap 3... wait till the rest is done
The display is really jacked without BS3 but it works.
Add the Route and Contact bindings to see if the join stuff works
Ok... I added bindings and they work. Right now the Contact does not generate until the ticket is edited. This is the same as the Session dropdown select for speaker is generated from scanning the sessions speakerId for uniques
So this is where I was before I started to mess with models.js and added repository.contact.js
Milestone 4: UI - Step 18: Create a new repository repository.contact.js
Before I go mess with all the breeze and promise stuff... I want to make sure I can add non-complex columns through the migrations stuff
OK... got basic edit of ticket working... commit this
Visual Studio Team Checkin -> Branch: AzureDeployDbSetuFromMilestone3 -> Milestone 6: Template Task - Commit 2
Team Explorer -> Changes -> Untraced Files (8) click Add All
Well... I need to create some kind of loader app to transfer the old data. Going to to that in a new project as it will probably be a one-time or back-up type thing
I thought I was going to have to setup another project to do the import, but found out I could switch to the local db and do the bulk insert
Create repositiory.hwpcticket.js, add to index.html
Add hwpcticket to model.js
line 26: add to entityNames
line 43: configureMetadataStore registerHWPCTicket
line 129: Create registerHWPCTicket function
Add hwpcticket to datacontext.js
line 19: add repoNames 'hwpcticket'
Got really lost... attempted to create hwpcticket based on ticket.... had some success but ran into issues I forget as I was getting very frustrated... I chased a problem down to Scripts/angular.breeze.storagewip.js line 69 where he was keying on sessions and attendees for isLoaded.... also line 99.... at this point I !_@)#$#()(*) so decided to shit-can Hot Towel
I should have snapped a commit when things were partially working... but didn't... so I'm going to leave them as is... switch to something to get HWPC up... come back later. MEGA DEPRESSED with this... the danger of OPS (other peoples shit)


High Priest Raymond:
To become an Oracle, one who lives to seek the will of Eva, the goddess of water whom the Elves serve, your level must be at least 20, and you must also pass the Test of the Oracle.
Description of an Oracle
Change profession to an Oracle
Return


{% extends "common/base.html" %} {% block page_content %} {% from 'macros/sent.html' import sent %} {{ sent("Wait a minute!", "You've exceeded a maximum amount of emails per minute.") }} {% endblock %}


The WYSIWYG Editor Commands
Help Home
[sTxtHelpNote]

[sTxtHelpSaveTitle]: [sTxtHelpSave]

[sTxtHelpFullscreenTitle]: [sTxtHelpFullscreen]

[sTxtHelpCutTitle]: [sTxtHelpCut]

[sTxtHelpCopyTitle]: [sTxtHelpCopy]

[sTxtHelpPasteTitle]: [sTxtHelpPaste]

[sTxtHelpPasteTextTitle]: [sTxtHelpPasteText]

[sTxtHelpPasteWordTitle]: [sTxtHelpPasteWord]

[sTxtHelpFindReplaceTitle]: [sTxtHelpFindReplace]

[sTxtHelpUndoTitle]: [sTxtHelpUndo]

[sTxtHelpRedoTitle]: [sTxtHelpRedo]

[sTxtHelpSpellcheckTitle]: [sTxtHelpSpellcheck]

[sTxtHelpRemoveFormattingTitle]: [sTxtHelpRemoveFormatting]

[sTxtHelpBoldTitle]: [sTxtHelpBold]

[sTxtHelpUnderlineTitle]: [sTxtHelpUnderline]

[sTxtHelpItalicTitle]: [sTxtHelpItalic]

[sTxtHelpStrikethroughTitle]: [sTxtHelpStrikethrough]

[sTxtHelpINListTitle]: [sTxtHelpINList]

[sTxtHelpIBListTitle]: [sTxtHelpIBList]

[sTxtHelpDIndentTitle]: [sTxtHelpDIndent]

[sTxtHelpIIndentTitle]: [sTxtHelpIIndent]

[sTxtHelpSuperscriptTitle]: [sTxtHelpSuperscript]

[sTxtHelpSubscriptTitle]: [sTxtHelpSubscript]

[sTxtHelpALeftTitle]: [sTxtHelpALeft]

[sTxtHelpACenterTitle]: [sTxtHelpACenter]

[sTxtHelpARightTitle]: [sTxtHelpARight]

[sTxtHelpJustifyTitle]: [sTxtHelpJustify]

[sTxtHelpIHLineTitle]: [sTxtHelpIHLine]

[sTxtHelpCMHyperLinkTitle]: [sTxtHelpCMHyperLink]

[sTxtHelpCELinkTitle]: [sTxtHelpCELink]

[sTxtHelpIMAnchorTitle]: [sTxtHelpIMAnchor]

[sTxtHelpFontTitle]: [sTxtHelpFont]

[sTxtHelpFSizeTitle]: [sTxtHelpFSize]

[sTxtHelpFormatTitle]: [sTxtHelpFormat]

[sTxtHelpStyleTitle]: [sTxtHelpStyle]

[sTxtHelpFColorTitle]: [sTxtHelpFColor]

[sTxtHelpHColorTitle]: [sTxtHelpHColor]

[sTxtHelpTFunctionsTitle]: [sTxtHelpTFunctions]

[sTxtHelpITableTitle]: [sTxtHelpITable]

[sTxtHelpMTPropertiesTitle]: [sTxtHelpMTProperties]

[sTxtHelpMCPropertiesTitle]: [sTxtHelpMCProperties]

[sTxtHelpICttRightTitle]: [sTxtHelpICttRight]

[sTxtHelpICttLeftTitle]: [sTxtHelpICttLeft]

[sTxtHelpIRAboveTitle]: [sTxtHelpIRAbove]

[sTxtHelpIRBelowTitle]: [sTxtHelpIRBelow]

[sTxtHelpDRowTitle]: [sTxtHelpDRow]

[sTxtHelpDColumnTitle]: [sTxtHelpDColumn]

[sTxtHelpICSpanTitle]: [sTxtHelpICSpan]

[sTxtHelpDCSpanTitle]: [sTxtHelpDCSpan]

[sTxtHelpFFunctionsTitle]: [sTxtHelpFFunctions]

[sTxtHelpIFormTitle]: [sTxtHelpIForm]

[sTxtHelpMFPropertiesTitle]: [sTxtHelpMFProperties]

[sTxtHelpIMTFieldTitle]: [sTxtHelpIMTField]

[sTxtHelpIMTAreaTitle]: [sTxtHelpIMTArea]

[sTxtHelpIMHAreaTitle]: [sTxtHelpIMHArea]

[sTxtHelpIMButtonTitle]: [sTxtHelpIMButton]

[sTxtHelpIMCheckboxTitle]: [sTxtHelpIMCheckbox]

[sTxtHelpIMRButtonTitle]: [sTxtHelpIMRButton]

[sTxtHelpIMSListTitle]: [sTxtHelpIMSList]

[sTxtHelpIMFlashTitle]: [sTxtHelpIMFlash]

[sTxtHelpIMImageTitle]: [sTxtHelpIMImage]

[sTxtHelpIMMediaTitle]: [sTxtHelpIMMedia]

[sTxtHelpTextboxTitle]: [sTxtHelpTextbox]

[sTxtHelpISCharactersTitle]: [sTxtHelpISCharacters]

[sTxtHelpMPPropertiesTitle]: [sTxtHelpMPProperties]

[sTxtHelpCUHTMLCodeTitle]: [sTxtHelpCUHTMLCode]

[sTxtHelpCustomHTMLTitle]: [sTxtHelpCustomHTML]

[sTxtHelpAbsoluteTitle]: [sTxtHelpAbsolute]

[sTxtHelpSHGuidelinesTitle]: [sTxtHelpSHGuidelines]

[sTxtHelpSModeTitle]: [sTxtHelpSMode]

[sTxtHelpPModeTitle]: [sTxtHelpPMode]


"Traffic"
The world of international drug trafficking is a high stakes and high-risk world where billions of dollars can be made pandering to the addictions of American society. Steven Soderbergh's latest work, "Traffic," explores that world and its players while showing the tragic results of addiction on the family.
Soderbergh, since his radical debut in 1989 with "sex, lies and video tape," has marched to his own filmmaking drummer and, though not always successful ("Kafka"), has always been interesting. He not only proves to be innovative, he can also wow the movie-going public with mainstream stuff, too ("Erin Brockovitch"). On the heels of the latter film, Soderbergh could have rested on his laurels but, instead, hits us with one of the best films released in 2000.
The huge ensemble cast is wonderfully utilized to tell the several different stories that inexorably intertwine and come together in the end. Mexican cop Javier Rodriguez (Benicio Del Toro) works the border around Tijuana with his friend and partner Manolo Sanchez (Jacob Vargas) under Mexico's numero uno crime fighter, General Salazar (Tomas Milian). Their job is to destroy the powerful Obregon drug cartel that is funneling billions of dollars of illicit narcotics into the US.
Across the border, pretty housewife, Helena Ayala (Catherine Zeta-Jones), is shocked to learn that her businessman husband Carl (Steven Bauer) was arrested for drug trafficking. Her greatest fear in life, that she be left a "debt-ridden 30-year old mother of two," is about to be realized if she can't figure a way out. She is in hock to the cartel for millions and her life threatened, forcing the innocent women to become a ruthless businesswoman in her own right as survival, then greed, take over.
Michael Douglas is Ohio Supreme Court Justice Robert Wakefield, a conservative, anti-drug advocate recruited by the President to become the new US drug czar. While Wakefield throws himself into learning all he can about drug smuggling, his teenage daughter, Caroline (Erika Christensen), is a willing participant in the drug culture her father is tasked to destroy. For Caroline, it is a steady downward spiral as she, first, experiments with cocaine and freebase, then gives herself over sexually for the intoxicating numbness of heroin.
Undercover DEA agents Montel Gordon (Don Cheadle) and Ray Castro (Luis Guzman) rep the US involvement in the War on Drugs as they work overtime to build their own case against the Obregon drug cartel. They bust mid-level drug dealer Eduardo Ruiz (Mel Ferrer) and cut a deal to get him to testify against Helena's husband. From here, the stories take on a further complexity as the inexorably intertwine.
Soderbergh musters the best ensemble performance of the year from this big cast that is also supplemented with a plethora of cameo perfs that flesh out the complexly crafted tale. Michael Douglas and Benicio Del Toro give Oscar-worthy performances as Judge Wakefield and honest cop Rodriguez. The beauty about these and other perfs in the film is the depth the actors get to plumb with their characters. Without a great deal of screen time, each actor develops his or her role into multi-dimensional people. This is a combination of fine acting and a deft hand by the helmer.
Catherine Zeta-Jones is cast in the less than glamorous role of a protective mom. The pretty actress is given a character, in Helena, which arcs across the screen. The confused, scared wife and mother is not someone to be taken lightly as she learns of the extent of her financial burden. As Helena takes control of her destiny, we see a frightening ruthlessness develop. When she orders, "I want the principal witness against my husband killed," she knows what she is doing and what she wants. It's the first film where Zeta-Jones isn't just a pretty face and she acquits herself well.
Don Cheadle and Luis Guzman ably man the action north of the border in their own quest to bring down Juan Obregon. They have the more meat and potatoes story as they catch, then turn state's witness, trafficker Ruiz. This part of the tale is reminiscent of Steve McQueen's "Bullitt" as the two cops struggle to keep their ward alive long enough to testify.
There are, as I said, lots of cameos and small roles with the likes of James Brolin, Peter Riegert and Albert Finney showing up. Dennis Quaid is a prominent background character as Helena's attorney and advisor. Amy Irving is effective as the judge's wife, Barbara.
Tech credits are the best. Photography, by Soderbergh himself, is striking as it changes from crisp, colder images when north of the border to soft, sepia tones when south. The rest of the techs are just as notable. Stephen Gaghan's script is as remarkable as the rest of the efforts on this film, weaving a complex tale that loses none of its threads.
Steven Soderbergh gives a double whammy this year and could have simply rode on the popular coattails of "Erin Brockovitch" and its star Julia Roberts. Instead, he produced one of the best, if not the best, American films of year 2000. I give "Traffic" an A.
For more Reeing reviews visit www.reelingreviews.com
<EMAIL_ADDRESS><EMAIL_ADDRESS>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


What could be more logical awesome than no logic at all?
mustache.js is an implementation of the Mustache template system in JavaScript.
Mustache is a logic-less template syntax. It can be used for HTML, config files, source code - anything. It works by expanding tags in a template using values provided in a hash or object.
We call it "logic-less" because there are no if statements, else clauses, or for loops. Instead there are only tags. Some tags are replaced with a value, some nothing, and others a series of values.
For a language-agnostic overview of Mustache's template syntax, see the
mustache(5)
manpage.
You can use mustache.js to render templates in many various scenarios where you can use JavaScript. For example, you can render templates in a browser, server-side using node, in CouchDB views, or in almost any other environment where you can use JavaScript.
An updated list of mustache.js users is kept on the Github wiki. Add yourself or your company if you use mustache.js!
Below is quick example how to use mustache.js:
var view = {
title: "Joe",
calc: function () {
return 2 + 4;
}
};
var output = Mustache.render("{{title}} spends {{calc}}", view);
In this example, the Mustache.render
function takes two parameters: 1) the
mustache template and 2) a view
object that
contains the data and code needed to render the template.
mustache.js is usable without any modification in both browsers and CommonJS environments like node.js. To use it as a CommonJS module, simply require the file, like this:
var Mustache = require("mustache");
A mustache template is a string that contains
any number of mustache tags. Tags are indicated by the double mustaches that
surround them. {{person}}
is a tag, as is {{#person}}
. In both examples we
refer to person
as the tag's key.
There are several types of tags available in mustache.js.
The most basic tag type is a simple variable. A {{name}}
tag renders the value
of the name
key in the current context. If there is no such key, nothing is
rendered.
All variables are HTML-escaped by default. If you want to render unescaped HTML,
use the triple mustache: {{{name}}}
. You can also use &
to unescape a
variable.
Template:
* {{name}}
* {{age}}
* {{company}}
* {{{company}}}
* {{&company}}
View:
{
"name": "Chris",
"company": "GitHub"
}
Output:
* Chris
*
* GitHub
* GitHub
* GitHub
JavaScript's dot notation may be used to access keys that are properties of objects in a view.
Template:
* {{name.first}} {{name.last}}
* {{age}}
View:
{
"name": {
"first": "Michael",
"last": "Jackson"
},
"age": "RIP"
}
Output:
* Michael Jackson
* RIP
Sections render blocks of text one or more times, depending on the value of the key in the current context.
A section begins with a pound and ends with a slash. That is, {{#person}}
begins a person
section, while {{/person}}
ends it. The text between the two
tags is referred to as that section's "block".
The behavior of the section is determined by the value of the key.
If the person
key exists and has a value of null
, undefined
, or false
,
or is an empty list, the block will not be rendered.
Template:
Shown.
{{#nothin}}
Never shown!
{{/nothin}}
View:
{
"person": true
}
Output:
Shown.
If the person
key exists and is not null
, undefined
, or false
, and is
not an empty list the block will be rendered one or more times.
When the value is a list, the block is rendered once for each item in the list. The context of the block is set to the current item in the list for each iteration. In this way we can loop over collections.
Template:
{{#stooges}}
{{name}}
{{/stooges}}
View:
{
"stooges": [
{ "name": "Moe" },
{ "name": "Larry" },
{ "name": "Curly" }
]
}
Output:
Moe
Larry
Curly
When looping over an array of strings, a .
can be used to refer to the current
item in the list.
Template:
{{#musketeers}}
* {{.}}
{{/musketeers}}
View:
{
"musketeers": ["Athos", "Aramis", "Porthos", "D'Artagnan"]
}
Output:
* Athos
* Aramis
* Porthos
* D'Artagnan
If the value of a section variable is a function, it will be called in the context of the current item in the list on each iteration.
Template:
{{#beatles}}
* {{name}}
{{/beatles}}
View:
{
"beatles": [
{ "firstName": "John", "lastName": "Lennon" },
{ "firstName": "Paul", "lastName": "McCartney" },
{ "firstName": "George", "lastName": "Harrison" },
{ "firstName": "Ringo", "lastName": "Starr" }
],
"name": function () {
return this.firstName + " " + this.lastName;
}
}
Output:
* John Lennon
* Paul McCartney
* George Harrison
* Ringo Starr
If the value of a section key is a function, it is called with the section's literal block of text, un-rendered, as its first argument. The second argument is a special rendering function that uses the current view as its view argument. It is called in the context of the current view object.
Template:
{{#bold}}Hi {{name}}.{{/bold}}
View:
{
"name": "Tater",
"bold": function () {
return function (text, render) {
return "" + render(text) + "";
}
}
}
Output:
Hi Tater.
An inverted section opens with {{^section}}
instead of {{#section}}
. The
block of an inverted section is rendered only if the value of that section's tag
is null
, undefined
, false
, or an empty list.
Template:
{{#repos}}{{name}}{{/repos}}
{{^repos}}No repos :({{/repos}}
View:
{
"repos": []
}
Output:
No repos :(
Comments begin with a bang and are ignored. The following template:

Today{{! ignore me }}.

Will render as follows:

Today.

Comments may contain newlines.
Partials begin with a greater than sign, like {{> box}}.
 Just avoid infinite loops.
They also inherit the calling context. Whereas in ERB you may have this:
<%= partial :next_more, :start => start, :size => size %>
Mustache requires only this:
{{> next_more}}
Why? Because the next_more.mustache
file will inherit the size
and start
variables from the calling context. In this way you may want to think of
partials as includes, or template expansion, even though it's not literally true.
For example, this template and partial:
base.mustache:

Names

{{#names}}
{{> user}}
{{/names}}
user.mustache:
{{name}}
Can be thought of as a single, expanded template:

Names

{{#names}}
{{name}}
{{/names}}
In mustache.js an object of partials may be passed as the third argument to
Mustache.render
. The object should be keyed by the name of the partial, and
its value should be the partial text.
Set Delimiter tags start with an equals sign and change the tag delimiters from
{{
and }}
to custom strings.
Consider the following contrived example:
* {{ default_tags }}
{{=<% %>=}}
* <% erb_style_tags %>
<%={{ }}=%>
* {{ default_tags_again }}
Here we have a list with three items. The first item uses the default tag style, the second uses ERB style as defined by the Set Delimiter tag, and the third returns to the default style after yet another Set Delimiter declaration.
According to ctemplates, this "is useful for languages like TeX, where double-braces may occur in the text and are awkward to use for markup."
Custom delimiters may not contain whitespace or the equals sign.
To stream template results out of mustache.js, you can pass an optional callback
to the call to Mustache.render
:
Mustache.render(template, view, partials, function (chunk) {
print(chunk);
});
When the template is finished rendering, the callback will be called with null
after which it won't be called anymore for that rendering.
By default mustache.js may be used in a browser or any CommonJS environment, including node. Additionally, mustache.js may be built specifically for several different client libraries and platforms, including the following:
These may be built using Rake and one of the following commands:
$ rake jquery
$ rake mootools
$ rake dojo
$ rake yui
$ rake requirejs
$ rake qooxdoo
Mustache.js wouldn't kick ass if it weren't for these fine souls:


Figure cyclic SCC direct stress-strain monotonic results specimens tension tensile experimental mechanical curve loading {border-style curves prismatic behaviors compressive concrete px;} #ffffff;} ratio strength compression energy model strain materials self-compacting different unloading dissipation load mean properties loading. uniaxial Poisson’s Sample case. cube damage envelope specimen Cycle Experimental Mater. Materials S.Z., T-Prism Y.Z., approximately case close considering number px; stress tension. {font-family ./j.conbuildmat... Additionally, Build. C.F., Constr. Direct G.J.; L.X., able compression. equipment evolution font-size loading, observed obtained relationship tests used C-Prism Furthermore, Table analysis double; method predicted response shows Compressive Cyclic Fathi However, NVC Therefore, border-color border-width conducted external irreversible material micro normalized quasi-brittle range rate resolution solid; specimen, strain. structures suggested tested {font-style {font-weight ./ma Concrete Cube S.Z. SCC, Shan Tension Typical based bold comparison constant courier; current cycle denote designed determining effect em; example, generally higher illustrates including investigations listed lower mixture models peak pt;} reported statistical strength, tension, test testing total verified work,