WebRTC
Video Recording using
MediaStreamRecorder
Time Interval (milliseconds):
Start Recording
Stop Recording
Match the two circles by placing your head in the center of the screen.
Starting....
Be sure to
Keep your head facing straight forward. Both of your ears should be visible.
Look at your webcam, not the screen, once recording starts.


Hostname
Metalnx Remote Monitor
-
IP:
| Used: | |
| Free: | |
| Total Capacity: |
Resources not available. iCAT not reachable. Something may be blocking your access to the iCAT server. Please, make sure the iCAT server is running, and check both firewall and network connections.


Prev
•
RelevantData – User's Guide
Version 0.0.1 – December 2015
•
Next
Table of Contents
•
Single PDF
RelevantData – User's Guide
Table of Contents
Preface
Software versioning
Licenses
Support
Installation
Requirements
Quick install guide
Installing from source
Deploying EGI virtual appliances
Troubleshooting
Configuration
Common configuration
Configuring the LVL service
Configuring the LVL IdP & AuthX server
Security
General considerations
External services and applications
OAuth 2.0 authorization
Authenticating with LinkedIn
Database
Configuration
Compatibility with GenBank and PubMed
RESTful API
Resources
Endpoints
JSON support
GeoJSON support
Search
Search sequences
Leishmaniasis e-compendium
User Interface
Run locally
Programming models
Mobile versions
UI resources
Country flags
Query language
LVL query language definition
Examples
RESTful API examples
Submit a new sequence
Get a sequence using the accession number
Update a sequence
Delete a sequence
List sequences
Find nearby sequences
Import new sequences into the database
Export a set of sequences to a dataset
Export a public link to a sequence
OAuth2 examples
Get access token for user/password
Access to protected resource
Task examples
Import sequences from external databases (PubMed)
Known limitations
Usage limits
Desired features list
About this guide
TO-DO
TO-DO
TO-DO
Good and not-so-good ideas:
Extend mongoDB connector with new versions of the find methods that return JSON directly, avoiding conversion to domain classes.
High-Concurrency HTTP Clients on the JVM
Apache HttpAsyncClient
Supervisor Strategy


My Projects | all projects were done using HTML, bootstrap, CSS and a little javascript
project #1
This is where i learned to use just HTML to make a basic webpage
Project #2
This is where i learned to use just HTML to make a blog for a dog
project #3
This is where i learned to use just HTML, CSS, and a little javascript to create a webpage
Project #4
This is where i learned to use Branching to make two versions of a webpage as well as ussing CSS to make a navbar
Project #5
This is were I practiced more with inheritance and cascading stylesheets
Project #6
This is were I practiced using bootstrap to use rows, columns, and anav to to recreate the home page of Wikipedia


In this unit we learned how to 3-D scan people and 3-D printing using Fusion 360 and Meshmix for design and Makerbot to print.
The 3D printing process that MakerBot Replicator uses is Fused Desposition Modeling (FDM) which is the additive manufacturing process in which plastic filament is heated and fed through an extruder to build your object layer by layer. The advantages of the FDM is that it is most widely used because it is perfect for consumers and great for making protypes. The FDM has the lowest resolution and accuracy when compared to SLA or SLS and is not the best option for printing complex designs or parts with intricate features.
In order to mesh the two 3D items together I first fixed up my 3D scan then made sure to do a plane cut in order to easily add the two models together. Then I selected both of the objects and merged them together. I then added a few touches to my face just to explore all the capacities of Meshmixer.
This is an image of the my 3D model of myself, the pedestal for my head and lastly the combination of the two in the final product.
Description of the image


Notebooks
Story: Avoidance behaviour relating to lions
Avoidance behaviour relating to lions
Title
Avoidance behaviour relating to lions
Collection
Summary
The Lion. Power over the time of sunset, and over the water–skins of the Bushmen, possessed by him. Flies tell him that a Bushman intends to fetch water, to-day. Caution in fetching water is recommended. In the Katkop dialect, by Díä!kwãin (L V.-11. 4869 rev.-4879 rev.). Dia!kwain's mother tells of lions and their doings when they want to catch and eat people. They make the sun set quickly to catch people out in the veld away from home and they make the waterskin tear .
Comments
1) This story is found in Book V-11
Contributors
Date
2 July 1875
Categories
Custom and daily life, Plants and animals
Keywords
lion (its nature and habits) , lion (the ways it catches and kills people) , lion (makes waterbags leak) , lion (want to catch people out in the veld away from home) , lion (deceives people) , lion (its power) , lion (and flies, which inform it) , lion (and water-holes) , lion (flies tell it that a person intends to fetch water) , lion (its magic powers) , lion (has power over the sun) , lion (its power over the waterskin) , lion (is cunning) , lion (avoidance behaviour relating to) , teaching (children not to play at the water) , teaching (about the doings of the lion) , teaching (and warnings) , teaching (about collecting water) , teaching (about the power of lions) , teaching (and avoidance behaviour relating to lions) , teaching (about flies and lions) , flies (inform the lion) , flies (and the lion) , flies (spy on the people) , flies (and avoidance behaviour relating to lions) , flies (tell lion that a person intends to fetch water) , sun (lion's power over) , sun (avoidance behaviour relating to lions) , water-holes (children taught not to play there) , water-holes (and avoidance behaviour relating to lions) , waterskin (lion's power over) , waterskin (and avoidance behaviour relating to lions) , water (children taught not to play at water–holes) , water (flies tell lion that a person intends to fetch water) , water (and avoidance behaviour relating to lions) , water (about collecting it safely) , water (–skin, lion's power over) , children (taught not to play at water–holes) , children (taught about lions) , children (taught about flies and lions) , children (and avoidance behaviour relating to lions) , education (of children not to play at the water) , education (about the doings of the lion) , education (and warnings) , education (about collecting water safely) , education (about the power of lions) , education (and avoidance behaviour relating to lions) , magic powers (of lions over the sun and the waterskin) , magic powers (avoidance behaviour relating to lions)
Story Pages
4869v-4879v


Skills
day-to-day comfort
Experience with
Work Experience
Retail Sales Associate/Support Back-End Web Developer.
Level One Game Shop
, Kansas City, MO, May 2019 - Present
Was assigned....
Primary code utlization included Jupyter Notebook, Pandas and Numpy.
Guest Management and translator/interpretor
Naka-Kon Anime Convenction
, Kansas City, MO, May 2019 - Present
Helped as guest manager, translator/interpreter and VISA acquisition assistant in 2017 and 2019, guest host manager and translator/interpreter in 2015, assistant guest host in 2014, assistant accountant and general affair in 2013
Japanese Language Teacher
Kansas City Japanese School and Self-Employed Japanese language teacher
,
Kansas City, MO, May 2019 - Present
Tutor Japanese language and culture to students in various levels, ranging from beginner to college level. Assisted the teacher and facilitated classes for adult American students at KC Japanese School.
Education


{% extends "header.html" %} {% block body %}
This series is concerning "unsupervised machine learning." The difference between supervised and unsupervised machine learning is whether or not we, the scientist, are providing the machine with labeled data.
Unsupervised machine learning is where the scientist does not provide the machine with labeled data, and the machine is expected to derive structure from the data all on its own.
There are many forms of this, though the main form of unsupervised machine learning is clustering. Within clustering, you have "flat" clustering or "hierarchical" clustering.
Flat Clustering
Flat clustering is where the scientist tells the machine how many categories to cluster the data into.
Hierarchical
Hierarchical clustering is where the machine is allowed to decide how many clusters to create based on its own algorithms.
Now, what can we use unsupervised machine learning for? In general, unsupervised machine learning can actually solve the exact same problems as supervised machine learning, though it may not be as efficient or accurate.
Unsupervised machine learning is most often applied to questions of underlying structure. Genomics, for example, is an area where we do not truly understand the underlying structure. Thus, we use unsupervised machine learning to help us figure out the structure.
Unsupervised learning can also aid in "feature reduction." A term we will cover eventually here is "Principal Component Analysis," or PCA, which is another form of feature reduction, used frequently with unsupervised machine learning. PCA attempts to locate linearly uncorrelated variables, calling these the Principal Components, since these are the more "unique" elements that differentiate or describe whatever the object of analysis is.
There is also a meshing of supervised and unsupervised machine learning, often called semi-supervised machine learning. You will often find things get more complicated with real world examples. You may find, for example, that first you want to use unsupervised machine learning for feature reduction, then you will shift to supervised machine learning once you have used, for example, Flat Clustering to group your data into two clusters, which are now going to be your two labels for supervised learning.
What might be an actual example of this? How about we're trying to differentiate between male and female faces. We aren't already sure what the defining differences between a male and female face are, so we take to unsupervised machine learning first. Our hopeful goal will be to create an algorithm that will naturally just group the faces into two groups. We're likely to go ahead and use Flat Clustering for this, and then we'll likely test the algorithm to see if it was indeed accurate, using labeled data only for testing, not for training. If we find the machine is successful, we now actually have our labels, and features that make up a male face and a female face. We can then use PCA, or maybe we already did. Either way, we can try to get feature count down. Once we've done this, we use these labels with their Principle Components as features, which we can then feed into a supervised machine learning algorithm for actual future identification.
Now that you know some of the uses and some key terms, let's see an actual example with Python and the Scikit-learn (sklearn) module.
 If you need Python, click on the link to python.org and download the latest version of Python.
Scikit-learn (sklearn) is a popular machine learning module for the Python programming language.
The Scikit-learn module depends on Matplotlib, SciPy, and NumPy as well. You can use pip to install all of these, once you have Python.
Don't know what pip is or how to install modules?Pip is probably the easiest way to install packages Once you install Python, you should be able to open your command prompt, like cmd.exe on windows, or bash on linux, and type:
pip install scikit-learn
Having trouble still? No problem, there's a tutorial for that: pip install Python modules tutorial.
If you're still having trouble, feel free to contact us, using the contact in the footer of this website.
import numpy as np import matplotlib.pyplot as plt from matplotlib import style style.use("ggplot") from sklearn.cluster import KMeans
Here, we're just doing our basic imports. We're importing NumPy which is a useful numbers crunching module, then matplotlib for graphing, and then KMeans from sklearn.
If you're confused about imports, you may need to first run through the Python 3 Basics series, or specifically the module import syntax tutorial.
The KMeans import from sklearn.cluster is in reference to the K-Means clustering algorithm. The general idea of clustering is to cluster data points together using various methods. You can probably guess that K-Means uses something to do with means. What ends up happening is a centroid, or prototype point, is identified, and data points are "clustered" into their groups by the centroid they are the closest to.
Clusters being Called Cells, or Voronoi Cells, and references to Lloyd's AlgorithmOne of the things that makes any new topic confusing is a lot of complex sounding terms. I do my best to keep things simple, but not everyone is as kind as me.
Some people will refer to the style of clusters that you wind up seeing as "Voronoi" cells. Usually the "clusters" have defining "edges" to them that, when shaded or colored in, look like geometrical polygons, or cells, like this:
The K-Means algorithm gets its origins from "Lloyd's Algorithm," which basically does the exact same thing.
x = [1, 5, 1.5, 8, 1, 9] y = [2, 8, 1.8, 8, 0.6, 11] plt.scatter(x,y) plt.show()
This block of code is not required for machine learning. What we're doing here is plotting and visualizing our data before feeding it into the machine learning algorithm.
Running the code up to this point will provide you with the following graph:
This is the same set of data and graph that we used for our Support Vector Machine / Linear SVC example with supervised machine learning.
You can probably look at this graph, and group this data all on your own. Imagine if this graph was 3D. It would be a little harder. Now imagine this graph is 50-dimensional. Suddenly you're immobilized!
In the supervised machine learning example with this data, we were allowed to feed this data to the machine along with labels. Thus, the lower left group had labeling, and the upper right grouping did too. Our task there was to then accept future points and properly group them according the groups. Easy enough.
Our task here, however, is a bit different. We do not have labeled data, and we want the machine to figure out all on its own that it needs to group the data.
For now, since we're doing flat-clustering, our task is a bit easier since we can tell the machine that we want it categorized into two groups. Still, however, how might you do this?
K-Means approaches the problem by finding similar means, repeatedly trying to find centroids that match with the least variance in groups
This repeatedly trying ends up leaving this algorithm with fairly poor performance, though performance is an issue with all machine learning algorithms. This is why it is usually suggested that you use a highly stream-lined and efficient algorithm that is already tested heavily rather than creating your own.
You also have to decide, as the scientist, how highly you value precision as compared to speed. There is always a balance between precision and speed/performance. More on this later, however. Moving on with the code
X = np.array([[1, 2], [5, 8], [1.5, 1.8], [8, 8], [1, 0.6], [9, 11]])
Here, we're simply converting our data to a NumPy array. See the video if you're confused. You should see each of the brackets here are the same x,y coordinates as before. We're doing this because a NumPy array of features is what Scikit-learn / sklearn expects.
kmeans = KMeans(n_clusters=2) kmeans.fit(X) centroids = kmeans.cluster_centers_ labels = kmeans.labels_ print(centroids) print(labels)
Here, we initialize kmeans to be the KMeans algorithm (flat clustering), with the required parameter of how many clusters (n_clusters).
Next, we use .fit() to fit the data (learning)
Next, we're grabbing the values found for the Centroids, based on the fitment, as well as the labels for each centroid.
Note here that the "labels" here are labels that the machine has assigned on its own, same with the centroids.
Now we're going to actually plot and visualize the machine's findings based on our data, and the fitment according to the number of clusters we said to find.
colors = ["g.","r.","c.","y."] for i in range(len(X)): print("coordinate:",X[i], "label:", labels[i]) plt.plot(X[i][0], X[i][1], colors[labels[i]], markersize = 10) plt.scatter(centroids[:, 0],centroids[:, 1], marker = "x", s=150, linewidths = 5, zorder = 10) plt.show()
The above code is all "visualization" code, having nothing more to do with Machine Learning than just showing us some results.
First, we have a "colors" list. This list will be used to be iterated through to get some custom colors for the resulting graph. Just a nice box of colors to use.
We only need two colors at first, but soon we're going to ask the machine to classify into other numbers of groups just for learning purposes, so I decided to put four choices here. The period after the letters is just the type of "plot marker" to use.
Now, we're using a for loop to iterate through our plots.
If you're confused about the for loop, you may need to first run through the Python 3 Basics series, or specifically the For Loop basics tutorial.
If you're confused about the actual code being used, especially with iterating through this loop, or the scatter plotting code slices that look like this: [:, 0], then check out the video. I explain them there.
The resulting graph, after the one that just shows the points, should look like:
Do you see the Voronoi cells? I hope not, we didn't draw them. Remember, those are the polygons that mark the divisions between clusters. Here, we have each plot marked, by color, what group it belongs to. We have also marked the centroids as big blue "x" shapes.
As we can see, the machine was very successful!  First, decide how many clusters you will do, then try to predict where the centroids will be.
We do this in the video, choosing 3 and 4 clusters. It's relatively easy to predict with these points if you understand how the algorithm works, and makes for a good learning exercise.
That's it for our Flat Clustering example for unsupervised learning, how about Hierarchical Clustering next?


This is a collection of knowledge which you may find useful when working with the OpenOffice.org API and the SDK.
The following sections are currently available:


BTS's Jimin tops individual boy group member brand values this month, G-Dragon makes first entry in 2nd place
by beansssThe Korea Institute of Corporate Reputation has released its brand value rankings for individual boy group members in the month of November, after analyzing big data of 565 male idols from October 15 through November 15, 2019.
Taking up the first place spot once again with an overwhelming 9,861,176 points was BTS member Jimin, followed by Big Bang's G-Dragon who made his first ever entry on the brand value analysis rankings this month, in second place with 8,744,418 points. Next, BTS member Jungkook came in third with a total of 6,845,846 points.
From 4th through 10th place are, in order: BTS's V, BTS's Jin, BTS's SUGA, NU'EST's Minhyun, BTS's RM, ASTRO's Cha Eun Woo, and NU'EST's Baekho.


“Yo pubbe karaṇīyāni,
pacchā so kātumicchati;
Sukhā so dhaṁsate ṭhānā,
pacchā ca manutappati.
Whoever wishes to do afterwards
what they should have done before
has lost the causes for happiness,
and afterwards they’re tormented by regrets.
Yañhi kayirā tañhi vade,
yaṁ na kayirā na taṁ vade;
Akarontaṁ bhāsamānaṁ,
parijānanti paṇḍitā.
You should only say what you would do;
you shouldn’t say what you wouldn’t do.
The wise will recognize
one who talks without doing.
Susukhaṁ vata nibbānaṁ,
sammāsambuddhadesitaṁ;
Asokaṁ virajaṁ khemaṁ,
yattha dukkhaṁ nirujjhatī”ti.
… Hārito thero ….
Oh! Extinguishment is so very blissful,
as taught by the fully awakened Buddha:
sorrowless, stainless, secure,
where suffering all ceases.


This SRFI proposes a simple library for programmatic drawing of pictures compatible with Section 2.2.4 of Structure and Interpretation of Computer Programs.
It aims to close the gap between the Scheme suggested for study in the book and portable Scheme.


S. Pachnev
40
Sets
0
0
0
0
0
0
J. Verma
15
Set 1
Game 1
Unforced Error
0–15
15–15
Unforced Error
Return Error
15–30
Return Error
15–40
Unforced Error
15–40
Game 2
0–15
15–15
Forced Error
Service Winner
30–15
40–15
Unforced Error
40–15
Unforced Error
Game 3
Unforced Error
0–15
Forced Error
0–30
0–40
Winner
15–40
Unforced Error
Return Error
15–40
Game 4
Winner
15–0
Forced Error
15–15
30–15
Return Error
Winner
40–15
40–30
Winner
Forced Error
40–40
Unforced Error
40–40
Game 5
15–0
Unforced Error
30–0
Unforced Error
Unforced Error
30–15
Unforced Error
30–30
Return Error
30–40
Unforced Error
30–40
Game 6
Winner
15–0
30–0
Unforced Error
Unforced Error
30–15
Winner
40–15
40–30
40–30
Unforced Error
Game 7
15–0
30–0
Unforced Error
Return Error
30–15
Winner
40–15
40–15
Forced Error
Game 8
15–0
Unforced Error
15–15
Unforced Error
15–30
30–30
Unforced Error
40–30
Return Error
Winner
40–30
Game 9
15–0
Unforced Error
Unforced Error
15–15
30–15
Unforced Error
40–15
Unforced Error
40–30
Winner
40–40
Winner
40–40
Forced Error
Game 10
15–0
Unforced Error
Winner
30–0
40–0
Return Error
40–0
Unforced Error


Packaging and Running Programs
About Ballerina packages
A Ballerina program can consist of a number of Ballerina files, which you can organize into packages simply by creating subdirectories as follows:
program-name/
package-directory-1/
package-directory-2/
...
Each Ballerina entity (function, service, etc.) has a globally unique qualified name consisting of its package name and entity name (the file name is NOT part of the entity's name) concatenated with periods. For example, let's say you have a service named StockQuoteService inside a file named foo.bal
, which is located in the following directory structure:
myProgram
resources
services
foo.bal
The StockQuoteService entity's fully qualified name would be: myProgram.services.StockQuoteService
When you create a Ballerina program in the Composer, you can declare the program's package in the Package box in the upper left corner of the canvas. Or you can simply type package <package-name>;
in the Source view. Using the StockQuoteService example, you would add package myProgram.services;
at the top of foo.bal
. When you declare a package in the program file, be sure to save the file in the correct directory hierarchy to match that package, such as saving foo.bal
in the myProgram/services
directory as shown above. If a package is not declared, the program will be in the default (unnamed) package.
Note: When you name your files, directories, and packages, and when you name your Ballerina elements such as services and resources, be sure to avoid using the reserved names.
The <program-name>
directory contains all the code that the developer writes and may have files in multiple packages (and therefore multiple directories) as in the example above. However, third-party dependencies (which are specified via import statements as described below) are discovered from a repository and are not physically located within the program source hierarchy.
Each Ballerina program can have at most one main()
function, which serves as the entry point for command-line execution, and zero or more services that are exposed as network entry points when the program is run as a service. Therefore, when organizing your files under a <program-name>
directory, be sure that there is no more than one file containing the main()
function.
Importing packages
To import a package into your program, you can use the Imports box in the upper left corner of the canvas, or simply type import <package-name>;
in the Source view.
All built-in Ballerina library functions and connectors are defined in the ballerina.*
packages. You don’t need to add import statements for system packages that start with ballerina.lang.*
because they are imported by default and can be accessed by qualifying the symbol with the last part of the package name. For example, you can access all message data type related functions (which live in the ballerina.lang.message
package) as message:FunctionName
.
Ballerina libraries
You can package collections of Ballerina code as a library so that the resulting package can be shared. Such a library can contain code coming from one or more Ballerina packages.
A Ballerina library is organized similar to a program:
library-name/
package-directory-1/
package-directory-2/
...
To install a library into your repository, you add it as follows:
ballerina repository add [library-archive-name]
If the library archive name is not specified, the current directory is assumed to be a library source directory and is inserted into the repository. Library archives have the file extension .blz
.
Note: In the current release, you can use existing libraries, but you cannot yet build your own library archives.
The Ballerina repository
The Ballerina repository is a collection of Ballerina libraries.
The Ballerina language distribution ships with a built-in repository containing all the core language libraries (containing the ballerina.*
packages) as well as third-party libraries. In addition to the default repository, every developer can have a private repository. The default location of the private repository is ~/.ballerina
, but you can change the location by setting the BALLERINA_REPOSITORY environment variable.
A repository is organized as follows:
repository-directory/
src/
dir1/
version/
.bal files in package dir1 of the indicated version
dir2/
version/ # one version
.bal files in package dir1.dir2 of the indicated version
version/ # another version
.bal files in package dir1.dir2 of the indicated version
dir3/
version/
.bal files in ...
dir4/
dir5/
version/
.bal files in ...
Creating Ballerina archives
You can execute Ballerina programs directly from the program directory. However, if you want to create a self-contained package containing all the program code and third-party dependencies, you must build the program into a packaged format. When a program is packaged using the ballerina build
command, the resulting archive will contain not just the Ballerina files that contain the main function and/or services, but also all the Ballerina packages that are imported by all the code needed to execute the main function and/or services. If you want to host a Ballerina program in WSO2 Integration Cloud, you build a Ballerina service archive (.bsz
) as described below and upload it to the Cloud.
To create an archive, take the following steps:
- Make sure the Ballerina files you are archiving each have the correct package declaration at the top of the file and are in a directory structure that reflects that package path as described at the top of this page.
- Open a command prompt and navigate to the directory above the package root directory. For example, for the StockQuoteService example described at the top of this page, if the
myProgram
directory is in the root C:\ directory on Windows, you would navigate to C:\ at the command line. - Use one of the following
ballerina build
commands to create the archive. The syntax below assumes the Ballerinabin
directory is in your path. If it is not, specify its path before theballerina
command. For example, if your Ballerina home directory isC:\Ballerina_Home
on Windows, you would typeC:\Ballerina_Home\bin\ballerina build
followed by the options.
To build a Ballerina executable archive containing a main()
function, use the following command to build the .bmz
file:
ballerina build main <main-package-name> [-o filename]
To build a Ballerina service archive containing one or more services, use the following command to build the .bsz
file:
ballerina build service <pkg1> [<pkg2> <pkg3> ...] [-o filename]
Note: When specifying the package names in the ballerina build
command, delineate them with slashes instead of periods, such as org/foo/bar
instead of org.foo.bar
. If you do not specify a name for the archive file using the -o
flag, the archive will be named after the last part of the package name.
For example, to archive the StockQuoteService described at the top of this page as a file called StockQuoteService.bsz
, you would navigate to the C:\ directory and type: ballerina build service myProgram/services -o StockQuoteService.bsz
For a tutorial on creating archives, see Create an Archive of your Program.
Running a Ballerina program
The ballerina
command runs a Ballerina program/service in its packaged or unpackaged format.
To execute main()
from a .bal
file or a package or archive file:
ballerina run main (filename | packagename | mainarchive)
To run named services:
ballerina run service (filename | packagename | servicearchive)+
To run a collection of service archives from service root:
ballerina run service [-sr serviceroot]
Creating and running a Docker image of the archive
After you have built an archive, you can create a Docker image of it and run it in the container.
To create a Docker image from a Ballerina package, you run ballerina docker
and provide the package name as an argument:
ballerina docker helloWorld.bmz
ballerina: build docker image [helloworld:latest] in docker host [localhost]? (y/n): y
ballerina: docker image helloworld:latest successfully built.
Use the following command to start a container.
docker run --name determined_aluminum -it helloworld:latest
You can additionally provide a customized image name:
ballerina docker helloWorld.bmz -t myhelloworld:0.1
ballerina: build docker image [myhelloworld:0.1] in docker host [localhost]? (y/n): y
ballerina: docker image myhelloworld:0.1 successfully built.
Use the following command to start a container.
docker run --name burning_aids -it myhelloworld:0.1
If you want to use a remote Docker daemon, you can specify it using the -H flag so the Docker image is created at the remote end:
ballerina docker helloWorld.bmz -H http://<IP_ADDRESS>:2375
ballerina: build docker image [myhelloworld:0.1] in docker host [http://<IP_ADDRESS>:2375]? (y/n): y
ballerina: docker image helloworld:latest successfully built.
Use the following command to start a container.
docker run --name future_aquarium -it helloworld:latest
For more information on the usage of this command, type ballerina docker --help
.


|
3 Simple Tricks for Unique Watercolor Textures
Playing around with the way different watercolors react to different liquids is one of the most relaxing ways I can spend an afternoon.
In this video, I share 3 quick and simple tricks to create unique watercolor textures in a snap.
|
|
|---|
|
|
Eye Candy: 8 Inspiring Watercolor Textures
One of my favorite ways to make my designs stand out is by integrating hand made textures, lettering or doodles/illustrations into my work. Finding new textures and artwork that inspires me is usually *just* the spark I need to get creating. If you need a little pick-me-up, here are
8 inspiring watercolor textures to jump start your new work!
|
|
|---|
|
|
New Class: Brush Lettering with Watercolor
Here is the official announcement to my newest class,
Brush Lettering with Watercolor! In the class, we deep dive into establishing your own personal lettering style with either a paintbrush or waterbrush, plus 6 unique blending techniques, too. The class is packed with bonuses so you'll have everything you need to start creating beautiful artwork in no time!
|
|
|---|
|
|
The 3 Best Watercolor Types for Brush Lettering
Have you wanted to get into brush lettering with watercolor, but just weren't sure where to start? Here are my 3 recommendations on the best types of watercolor to use and what makes each of them different.
|
|
|---|
|
|
A Colorful Crash Course in Type Anatomy
Understanding letterforms as a hand letterer or a graphic designer is essential to creating balanced layouts and harmonious designs.
In this video, I walk you through the most significant parts of type anatomy I've had to be familiar with over the course of my career. Includes free cheat sheet!
|
|
|---|
|
|
3 Unexpected Truths of being a Full Time Design Blogger
Every-Tuesday turned 3 years old in October! In this post, I share how the first every-tuesday post came about and 3 lessons I've learned since going full time as a design blogger.
|
|
|---|
|
|
How to Create a Foil Stamp Effect in Illustrator
Earlier this year, I shared how to create a foil stamp effect in Photoshop. In this tutorial, I share how to accomplish the same effect in Illustrator - scale it infinitely!
|
|
|---|
|
|
Subscriber Freebie: 5 Vector Leaves
It's November! That means it's time for apple cider, sweaters, scarves and the crinkle of leaves beneath your feet ;) Grab the digital kind in vector format: 5 hand drawn leaves as an ai + eps file for versions of Illustrator, CS3 or newer. Usage rights
available here, download to your desktops + laptops (zip file, ~1.5mb), click here!
|
|
|---|
|
|
|


KPD Animal Control accepting pet supply donations
by Robert GrantKNOXVILLE, Tenn. (WVLT) -- The Knoxville Police Department is accepting your pet supply donations.
KPD said they're taking everything including dog food, cat food, treats, leashes, and dog houses.
Officers said they often see pets in need while they're on other welfare checks. These donations will be used by animal control to help owners and their pets in need.
Donations can be dropped off at the Public Safety building at 800 Howard Baker Jr. Avenue in Knoxville. You can also call<PHONE_NUMBER>.
KPD said there's many pets in need. They also said if you suspect something is wrong, call the animal control office at the number listed above.


--- layout: post title: '' date: type: post published: false status: draft categories: tags: [] meta: _edit_last: '1' author: login: admin email<EMAIL_ADDRESS>display_name: admin first_name: Carina C. last_name: Zon ---
Last weekend, I volunteered as a coach for the first RailsGirls workshop in the U.S. Exciting! Among the many reasons to look forward to it: a chance to see Tokaido in action. There's nothing like a random collection of Macs to stress test an approach for getting Ruby 1.9.* to consistently install smoothly in the hands of novices. Boy did this one go smoothly. And fast, in comparison to the XCode Commandline Tools method.
The only glitch was experienced by some of the Lion users: the bash script would declare installation a success and yet their terminal would still only find system Ruby and system gems. Even after opening a new tab, the shell seemed to have no awareness of Tokaido's existence. Kenneth Reitz, author of oxs-gcc-installer, peeked over some shoulders and realized that the problem was that the script writes to ~/.profile. His fix was easy:
echo "source ~/.profile" >> ~/.bash_profile
Then open yet another tab. Voila.
So that got me curious. It's a pain to keep straight .profile vs .bash_profile vs. .bashrc (not to mention /etc/profile, and ~/.MacOSX/environment.plist, oy vey!). So it wasn't immediately obvious why .bash_profile was needed. If it doesn't exist, shouldn't OSX source ~/.profile anyway?


The
library originates from
Konstantin Knizhnik's winbgi shareware.
I spent some time adding
a new initwindow
function (to allow the graphics window to be
initially opened at any size) and three new functions to allow simple
mouse-driven processing. Mark Richardson then added some new functions
to allow more than sixteen colors.
You are welcome to use and modify this library as you like. Let me know if you make interesting modifications.
graphics.h
.
-lbgi -lgdi32 -lcomdlg32
-luuid -loleaut32 -lole32
(in
that order) after any other file arguments to the compiler. For
example, to compile the bgidemo0.cpp
program you would give the compile command:
g++ bgidemo0.cpp -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 -o bgidemo0.exeNote that each of these library options begins with the letter l (not the number one).
If you are working with the CS1300 version of the g++ compiler (from www.cs.colorado.edu/~main/cs1300/README.html), then you can get all these libraries automatically by using the bgi++ command instead of g++. For example:
bgi++ bgidemo0.cpp -o bgidemo0.exeThis command creates an executable file called bgidemo0.exe. Note that when it runs, it creates a small graphics window where all the bgi operations are performed. Any text i/o with cin and cout will be done in the other (console) window.
Initialization: Normally, you initialize the BGI graphics by a call to
detectgraph
and a call to initgraph
.
You can still use those two function calls, or you may call a
new function named initwindow
. The function
has two arguments that are the size of the graphics window that you
want to create in pixels (width and height). For example, you can
create a window that is 450 pixels wide and 300 pixels high with
the statement:
initwindow(450, 450);
RGB Colors: The winbgim package supports two types of colors that may be used with any of the functions that expect colors as arguments:
BLACK BLUE GREEN CYAN RED MAGENTA BROWN LIGHTGRAY DARKGRAY LIGHTBLUE LIGHTGREEN LIGHTCYAN LIGHTRED LIGHTMAGENTA YELLOW WHITE
Three other macros (RED_VALUE, GREEN_VALUE, BLUE_VALUE, IS_BGI_COLOR and IS_RGB_COLOR) are explained in the examples below.
RGB Examples:
setcolor(BLUE); // Change drawing color to BLUE. setcolor(COLOR(255,100,0); // Change drawing color to reddish-green. setpalette(4, BLUE); // Change palette entry 4 to BLUE. setpalette(4, COLOR(9,9,9));// Change palette entry 4 to nearly black. int current = getcolor( ); // Set current to current drawing color. if (IS_BGI_COLOR(current)) // Check whether it is a BGI color. cout << "Current BGI drawing color is: " << current << end; if (IS_RGB_COLOR(current)) // Check whether it is an RGB color. cout << "Current RGB drawing color has these components:\n" << "Red: " << RED_VALUE(current) << '\n' << "Green: " << GREEN_VALUE(current) << '\n' << "Blue: " << BLUE_VALUE(current) << '\n'
int getdisplaycolor(int color)
int mousex( )
int mousey( )
bool ismouseclick(kind)
This function returns true if there is an unprocessed mouse event of
the specified kind.
The argument to ismouseclick
is
one of these constants from the winbgim.h
file:
WM_MOUSEMOVE
WM_LBUTTONDBLCLK
WM_LBUTTONDOWN
WM_LBUTTONUP
WM_MBUTTONDBLCLK
WM_MBUTTONDOWN
WM_MBUTTONUP
WM_RBUTTONDBLCLK
WM_RBUTTONDOWN
WM_RBUTTONUP
The middle mouse button handlers aren't working on my machine. I haven't yet tracked down the reason--it could be a broken mouse or it could be a bug in my programming.
getmouseclick
(which gets the coordinates of the event), or by calling
clearmouseclick
(which processes the event without providing its coordinates).
These two functions are described below.
void getmouseclick(kind, int& xint& y)
This function sets x and y to the pixel coordinates of an
unprocessed event of the specified kind. If there is no such
event, then the function sets both x and y to -1.
The value of the argument kind may be any of the constants
listed above. After calling getmouseclick
,
for a particular kind of event, the ismouseclick
will return false for that kind of event until another such event occurs.
void clearmouseclick(kind)
This is just like getmouseclick
, except it does not
provide the x and y coordinates of the event.
The value of the argument kind
may be any of the constants
listed above. After calling clearmouseclick
,
for a particular kind of event, the ismouseclick
will return false for that kind of event until another such event occurs.
void registermousehandler(kind, h)
Most mouse processing can be carried out with the
ismouseclick
and getmouseclick
.
But sometimes you need more control.
In general, you can obtain more control by
writing a different "handler function"
to handle each different
kind of mouse event, and you "register" each of your
handlers by calling registermousehandler
.
The first argument to registermousehandler
is
one of the constants listed above.
The second argument to registermousehandler
must be the name of the handler function that you wrote. This
function must be a void function with two int parameters.
Whenever the specified mouse event occurs, your handler will
be called and the two int parameters will be the x and y positions
where the event happened.
ismouseclick
and getmouseclick
void wait_for_left_click( ) { const int DELAY = 50; // Milliseconds of delay between checks int x, y; while (!ismouseclick(WM_LBUTTONDOWN)) delay(DELAY); getmouseclick(WM_LBUTTONDOWN, x, y); cout << "Latest left click at: " << x << " " << y << endl; }
void my_right_click_handler(int x, int y) { cout << "Right mouse click at " << x << " and " << y << endl; }Now, somewhere in your program (after you've initialized the graphics window), you must register this fine handler with the statement:
registermousehandler(WM_RBUTTONDOWN, my_right_click_handler);
In general, the work carried out in a handler must be small. If you need to do a lot of work, have the handler change a global variable that will later trigger the large work. Then the handler can return quickly.
void delay(int millisec)
int getch( )
int kbhit( )
c = (char) getch( );
If you press one of the keypad keys (arrows, Home, etc.), then
getch first returns the value 0. Then, at the next call, it will
KEY_HOME
KEY_UP
KEY_PGUP
KEY_LEFT
KEY_CENTER
KEY_RIGHT
KEY_END
KEY_DOWN
KEY_PGDN
KEY_INSERT
KEY_DELETE
The kbhit function returns 0 if there are no characters now waiting
to be read (with getch). It returns a non-zero if there are some
characters waiting to be read.
getactivepage()
and
getvisualpage()
to help support double-buffering.
They return the page number of the active page (where drawing is
currently taking place) and the visual page (the one on the screen).
The original winbgi was designed to support up to 16 pages, but I have
only used pages 1 and 2 myself. NOTE: Using page number 0 might
mess up the colors. I use pages 1-2 for double buffering.
bgiout
. It's
used is described in bgiout.html.
The graphics window now has a print option in the windows menu button, so the user can print the screen at any time. In additon, there are these new functions:
The initiwindow function can now be called multiple times to create more than one graphics window. The initwindow documentation describes how these multiple windows are used.
You may have noticed that any program that's compiled with g++ or bgi++ will always open a DOS command window when the program is run. If you want to stop this window from opening, then add the option -mwindows to the compile line (just after g++ or bgi++).


LaughingClouds
The guy who makes a tribute to himself...dumb little fellow...ain't he...
[This is a work in progress]
The guy who makes a tribute to himself...dumb little fellow...ain't he...
[This is a work in progress]
I am SUPER SPREADER MOOOOOOOOODEEEEEEE!!!!!!
-- Indian Prime Minister Narendra Moody


Updating rbenv on Linux(Ubuntu)
Description
My rbenv needed to be updated one time and didn't know how to go about doing that process. However came across the following and its as simple as the commands below.
Ref: https://www.endpoint.com/blog/2015/11/03/updating-rbenv-ruby-build-on-ubuntu
cd ~/.rbenv/plugins/ruby-build/
git pull


Across: 1. Disobedience at the installation of the Vicar Of Holy Loch? (15) 9. Big ones could be important in Leicester, Gloucester or Cheshire (7) 10. Hired man hesitates with vehicle in road (7) 11. Initially not in Grand Hotel, but close! (4) 12. Senior professor circles you in History (5) 13. James Head and I follow Grand Prix in tropical island (4) 16. Tex ordered army unit to the edge (7) 17. Princess standing by measureless empty church is two-faced! (7) 18. Perfect turn beat man! (7) 21. Equipment for Police fishing team? (7) 23. The picnic eventually included one biscuit (4) 24. Hurry, swap luxury car for French actress's spouse (5) 25. Family with 50 in 27 (4) 28. Compiler sits with one who outstays welcome (7) 29. Mr Shankar mixes oil in Italian dish (7) 30. Confused, a taller slim monarch has innovative approach (7 8) Down: 1. Lightweight Inca Queen lost in confusion (15) 2. Cunning look about the French! (7) 3. Supreme footballer? (4) 4. Put back with ease or with energy (7) 5. Des and Tina circulated in one's place (7) 6. Flying writers flee aerobics! (4) 7. One second in the midst of this stupidity could lead to madness! (7) 8. Despite taking observations about comic, workman goes around half-past (15) 14. Dug out spun material (5) 15. Traps set for mackerel hunt (5) 19. Leading characters from "Old Camp Crimpers" intend to set the back of one's head (7) 20. Late run made by person leaning neither one way nor the other (7) 21. Girl got back around York (7) 22. He comes back to steal from me in Kenya (7) 26. Employer returns after you and me (4) 27. 25 in quick move north (4)


5 steps to guide the organization, teams and individuals through the change
Becoming an Agile Organization is like becoming a driver. As child you are not aware, that you can't drive, because your parents take you everywhere.
As a teenager the desire to drive is rising, depending where you want to go on your own. As soon as the pain about not be able to drive is strong enough, you start making plans to visit a driving school, begging your parents for money or taking on holiday jobs to pay the driving school yourself.
Now you learn to drive. After the final test you are able to drive, but you are still very insecure.
Now you need a lot of practice and re-assurance, that you keep going....!


Come learn how to node! We'll be working together on open-source workshop lessons from nodeschool.io (see the registration page for which workshops we'll be doing each event). Come for the first time or come back and repeat a lesson over again--repetition is a good thing! Chances are good that you'll get further and understand more this time. :)
Come help others learn how to node!  Register as a mentor for any/all of our events and we'll be in touch with more details.
Still not sure if this is a good fit for you? Join our slack team.
Without sponsors, nodeschool would be in Jason's living room with very few chairs and no snacks. We'll be making sponsor tickets available on our registration page shortly, which will get you a place to put your sign/swag and a 2 minute pitch during our mid-event break. Stay tuned for more info...
We have a code of conduct that we're very serious about. Read it! If you don't agree, this is probably not the event for you.
Have suggestions about how we could improve the event for everybody? We want to hear them. (So bad.) Email us with anything -><EMAIL_ADDRESS>We're serious when we say we care about including everyone--so much that Jason gave a talk at CascadiaJS about the topic. You can watch the video here if you're interested in hearing more, and like we've already said, get in touch if you have suggestions.
We want to make sure everyone who comes to NodeSchool gets the most out of it, so here are a few things to keep in mind:


rps numit genes gene RPS nucp expression selection positive sites Malus mitochondrial amino evolution rps, acid using sequence a/K analysis rosid test Arabidopsis file species ribosomal (Figure RNA rps. different Additional Biol used {border-style selected divergence model px;} rosids #ffffff;} Mol duplication editing levels protein Evol data organ purifying indicate transcripts patterns sequences < DNA nuclear organs positively present site (see alignment branch comparison duplicated ratio stress acids compared copy expressed likelihood Citrus Figure Glycine Gossypium Plant Populus RT-PCR adaptive changes chloroplast copies derived detection following models neutral occurred proteins similar specific (Table Adams Expression PCR better coli duplicate evidence evolutionary functional maximum nucleus positions seven structure types Malus, Yang accelerated based determine function inferred obtained phylogenetic plant products provide px; rate second selection, selection. shown significant study targeting thaliana values {font-family Arabidopsis, BMC Bayes Numit acting common conditions examined font-size genes, genes. including leaves lost microarray mutations partitioning ratios reverse rosids. searches showed statistical statistically thermophilus tree > BLAST CN, Click GenBank LINK Ma-M Medicago PAML RPS. Sci Table USA Value abiotic analyses analysis. analyzed ancestor asymmetric codon difference double; experienced functions genome higher hypothesis identified indicates multiple observed pattern performed product reaction region results rosids, sequences. sequencing shows stages suggesting transfer (A) Acad Co-expression ESTs Evolution Gene Genet Gossypium, Natl Nucleic Overall Proc RPS, Thermus analysis, border-color border-width branches d.f. differences encodes gel genomic infer interact large level lineage min, non-synonymous number organellar possibility rates regions retained roots, rps) sites, solid; study. suggest tests {font-style {font-weight α-helix, (B) (the ./--- ./pnas. A). Acids BEB Cell Curr EST Genetics Genome M-M Malus. N-terminal Palmer Phylogenetic Res Selected Selection apple background bold cDNA cob codons coil conducted contains convergent courier; days detect determined developmental domestica duplication. em; encoding environmental evolution, evolutionarily expected experiencing greater high implemented increased instead likely mixture molecular new nucleotide one, package phylogeny place plants polyploidy primers process pt;} regulatory relationships relative relatively residue residues sequence, sequenced set showing significantly signs sixteen species, species. structural studied substitution support table transcribed types, undergo water


{{+bindTo:partials.standard_nacl_api}}
| class | BackPointer |
| class | CallbackData |
| class | Dispatcher0 |
| class | Dispatcher1 |
| class | Dispatcher2 |
| class | Dispatcher3 |
| class | DispatcherWithOutput0 |
| class | DispatcherWithOutput1 |
| class | DispatcherWithOutput2 |
| class | DispatcherWithOutput3 |
| CompletionCallbackFactory (T *object=NULL) | |
| ~CompletionCallbackFactory () | |
| void | CancelAll () |
| void | Initialize (T *object) |
| T * | GetObject () |
| template<typename Method > | |
| CompletionCallback | NewCallback (Method method) |
| template<typename Method > | |
| CompletionCallback | NewOptionalCallback (Method method) |
| template<typename Output > | |
| CompletionCallbackWithOutput < typename internal::TypeUnwrapper < Output >::StorageType > | NewCallbackWithOutput (void(T::*method)(int32_t, Output)) |
| template<typename Method , typename A > | |
| CompletionCallback | NewCallback (Method method, const A &a) |
| template<typename Method , typename A > | |
| CompletionCallback | NewOptionalCallback (Method method, const A &a) |
| template<typename Output , typename A > | |
| CompletionCallbackWithOutput < typename internal::TypeUnwrapper < Output >::StorageType > | NewCallbackWithOutput (void(T::*method)(int32_t, Output, A), const A &a) |
| template<typename Method , typename A , typename B > | |
| CompletionCallback | NewCallback (Method method, const A &a, const B &b) |
| template<typename Method , typename A , typename B > | |
| CompletionCallback | NewOptionalCallback (Method method, const A &a, const B &b) |
| template<typename Output , typename A , typename B > | |
| CompletionCallbackWithOutput < typename internal::TypeUnwrapper < Output >::StorageType > | NewCallbackWithOutput (void(T::*method)(int32_t, Output, A, B), const A &a, const B &b) |
| template<typename Method , typename A , typename B , typename C > | |
| CompletionCallback | NewCallback (Method method, const A &a, const B &b, const C &c) |
| template<typename Method , typename A , typename B , typename C > | |
| CompletionCallback | NewOptionalCallback (Method method, const A &a, const B &b, const C &c) |
| template<typename Output , typename A , typename B , typename C > | |
| CompletionCallbackWithOutput < typename internal::TypeUnwrapper < Output >::StorageType > | NewCallbackWithOutput (void(T::*method)(int32_t, Output, A, B, C), const A &a, const B &b, const C &c) |
CompletionCallbackFactory<T> may be used to create CompletionCallback objects that are bound to member functions.
If a factory is destroyed, then any pending callbacks will be cancelled preventing any bound member functions from being called. The CancelAll() method allows pending callbacks to be cancelled without destroying the factory.
Note: CompletionCallbackFactory<T>
isn't thread safe, but it is somewhat thread-friendly when used with a thread-safe traits class as the second template element. However, it only guarantees safety for creating a callback from another thread, the callback itself needs to execute on the same thread as the thread that creates/destroys the factory. With this restriction, it is safe to create the CompletionCallbackFactory
on the main thread, create callbacks from any thread and pass them to CallOnMainThread().
Example:
class MyClass { public: // If an compiler warns on following using |this| in the initializer // list, use PP_ALLOW_THIS_IN_INITIALIZER_LIST macro. MyClass() : factory_(this) { } void OpenFile(const pp::FileRef& file) { pp::CompletionCallback cc = factory_.NewCallback(&MyClass::DidOpen); int32_t rv = file_io_.Open(file, PP_FileOpenFlag_Read, cc); CHECK(rv == PP_OK_COMPLETIONPENDING); } private: void DidOpen(int32_t result) { if (result == PP_OK) { // The file is open, and we can begin reading. // ... } else { // Failed to open the file with error given by 'result'. } } pp::CompletionCallbackFactory<MyClass> factory_; };
Passing additional parameters to your callback
As a convenience, the CompletionCallbackFactory
can optionally create a closure with up to three bound parameters that it will pass to your callback function. This can be useful for passing information about the request to your callback function, which is especially useful if your class has multiple asynchronous callbacks pending.
For the above example, of opening a file, let's say you want to keep some description associated with your request, you might implement your OpenFile and DidOpen callback as follows:
void OpenFile(const pp::FileRef& file) { std::string message = "Opening file!"; pp::CompletionCallback cc = factory_.NewCallback(&MyClass::DidOpen, message); int32_t rv = file_io_.Open(file, PP_FileOpenFlag_Read, cc); CHECK(rv == PP_OK_COMPLETIONPENDING); } void DidOpen(int32_t result, const std::string& message) { // "message" will be "Opening file!". ... }
Optional versus required callbacks
When you create an "optional" callback, the browser may return the results synchronously if they are available. This can allow for higher performance in some cases if data is available quickly (for example, for network loads where there may be a lot of data coming quickly). In this case, the callback will never be run.
When creating a new callback with the factory, there will be data allocated on the heap that tracks the callback information and any bound arguments. This data is freed when the callback executes. In the case of optional callbacks, since the browser will never issue the callback, the internal tracking data will be leaked.
Therefore, if you use optional callbacks, it's important to manually issue the callback to free up this data. The typical pattern is:
pp::CompletionCallback callback = callback_factory.NewOptionalCallback( &MyClass::OnDataReady); int32_t result = interface->GetData(callback); if (result != PP_OK_COMPLETIONPENDING) callback.Run(result);
Because of this additional complexity, it's generally recommended that you not use optional callbacks except when performance is more important (such as loading large resources from the network). In most other cases, the performance difference will not be worth the additional complexity, and most functions may never actually have the ability to complete synchronously.
Completion callbacks with output
For some API calls, the browser returns data to the caller via an output parameter. These can be difficult to manage since the output parameter must remain valid for as long as the callback is pending. Note also that CancelAll (or destroying the callback factory) does not cancel the callback from the browser's perspective, only the execution of the callback in the plugin code, and the output parameter will still be written to! This means that you can't use class members as output parameters without risking crashes.
To make this case easier, the CompletionCallbackFactory can allocate and manage the output data for you and pass it to your callback function. This makes such calls more natural and less error-prone.
To create such a callback, use NewCallbackWithOutput and specify a callback function that takes the output parameter as its second argument. Let's say you're calling a function GetFile which asynchronously returns a pp::FileRef. GetFile's signature will be int32_t GetFile(const CompletionCallbackWithOutput<pp::FileRef>& callback);
and your calling code would look like this:
void RequestFile() { file_interface->GetFile(callback_factory_.NewCallbackWithOutput( &MyClass::GotFile)); } void GotFile(int32_t result, const pp::FileRef& file) { if (result == PP_OK) { ...use file... } else { ...handle error... } }
As with regular completion callbacks, you can optionally add up to three bound arguments. These are passed following the output argument.
Your callback may take the output argument as a copy (common for small types like integers, a const reference (common for structures and resources to avoid an extra copy), or as a non-const reference. One optimization you can do if your callback function may take large arrays is to accept your output argument as a non-const reference and to swap() the argument with a vector of your own to store it. This means you don't have to copy the buffer to consume it.
| pp::CompletionCallbackFactory< T, ThreadTraits >::CompletionCallbackFactory | ( | T * | object = NULL | ) | [inline, explicit] |
This constructor creates a CompletionCallbackFactory
bound to an object.
If the constructor is called without an argument, the default value of NULL
is used. The user then must call Initialize() to initialize the object.
param[in] object Optional parameter. An object whose member functions are to be bound to CompletionCallbacks created by this CompletionCallbackFactory
. The default value of this parameter is NULL
.
| pp::CompletionCallbackFactory< T, ThreadTraits >::~CompletionCallbackFactory | ( | ) | [inline] |
Destructor.
| void pp::CompletionCallbackFactory< T, ThreadTraits >::CancelAll | ( | ) | [inline] |
CancelAll() cancels all CompletionCallbacks
allocated from this factory.
| T* pp::CompletionCallbackFactory< T, ThreadTraits >::GetObject | ( | ) | [inline] |
GetObject() returns the object that was passed at initialization to Intialize().
| void pp::CompletionCallbackFactory< T, ThreadTraits >::Initialize | ( | T * | object | ) | [inline] |
Initialize() binds the CallbackFactory
to a particular object.
Use this when the object is not available at CallbackFactory
creation, and the NULL
default is passed to the constructor. The object may only be initialized once, either by the constructor, or by a call to Initialize().
This class may not be used on any thread until initialization is complete.
| [in] | object | The object whose member functions are to be bound to the CompletionCallback created by this CompletionCallbackFactory . |
| CompletionCallback pp::CompletionCallbackFactory< T, ThreadTraits >::NewCallback | ( | Method | method | ) | [inline] |
NewCallback allocates a new, single-use CompletionCallback
.
The CompletionCallback
must be run in order for the memory allocated by the methods to be freed.
| [in] | method | The method to be invoked upon completion of the operation. |
CompletionCallback
. | CompletionCallback pp::CompletionCallbackFactory< T, ThreadTraits >::NewCallback | ( | Method | method, |
| const A & | a | ||
| ) | [inline] |
NewCallback() allocates a new, single-use CompletionCallback
.
The CompletionCallback
must be run in order for the memory allocated by the methods to be freed.
| [in] | method | The method to be invoked upon completion of the operation. Method should be of type: void (T::*)(int32_t result, const A& a) |
| [in] | a | Passed to method when the completion callback runs. |
CompletionCallback
. | CompletionCallback pp::CompletionCallbackFactory< T, ThreadTraits >::NewCallback | ( | Method | method, |
| const A & | a, | ||
| const B & | b | ||
| ) | [inline] |
NewCallback() allocates a new, single-use CompletionCallback
.
The CompletionCallback
must be run in order for the memory allocated by the methods to be freed.
| method | The method taking the callback. Method should be of type: void (T::*)(int32_t result, const A& a, const B& b) | |
| [in] | a | Passed to method when the completion callback runs. |
| [in] | b | Passed to method when the completion callback runs. |
CompletionCallback
. | CompletionCallback pp::CompletionCallbackFactory< T, ThreadTraits >::NewCallback | ( | Method | method, |
| const A & | a, | ||
| const B & | b, | ||
| const C & | c | ||
| ) | [inline] |
NewCallback() allocates a new, single-use CompletionCallback
.
The CompletionCallback
must be run in order for the memory allocated by the methods to be freed.
| method | The method taking the callback. Method should be of type: void (T::*)(int32_t result, const A& a, const B& b, const C& c) | |
| [in] | a | Passed to method when the completion callback runs. |
| [in] | b | Passed to method when the completion callback runs. |
| [in] | c | Passed to method when the completion callback runs. |
CompletionCallback
. | CompletionCallbackWithOutput< typename internal::TypeUnwrapper<Output>::StorageType> pp::CompletionCallbackFactory< T, ThreadTraits >::NewCallbackWithOutput | ( | void(T::*)(int32_t, Output) | method | ) | [inline] |
NewCallbackWithOutput() allocates a new, single-use CompletionCallback
where the browser will pass an additional parameter containing the result of the request.
The CompletionCallback
must be run in order for the memory allocated by the methods to be freed.
| [in] | method | The method to be invoked upon completion of the operation. |
CompletionCallback
. | CompletionCallbackWithOutput< typename internal::TypeUnwrapper<Output>::StorageType> pp::CompletionCallbackFactory< T, ThreadTraits >::NewCallbackWithOutput | ( | void(T::*)(int32_t, Output, A) | method, |
| const A & | a | ||
| ) | [inline] |
NewCallbackWithOutput() allocates a new, single-use CompletionCallback
where the browser will pass an additional parameter containing the result of the request.
The CompletionCallback
must be run in order for the memory allocated by the methods to be freed.
| [in] | method | The method to be invoked upon completion of the operation. |
| [in] | a | Passed to method when the completion callback runs. |
CompletionCallback
. | CompletionCallbackWithOutput< typename internal::TypeUnwrapper<Output>::StorageType> pp::CompletionCallbackFactory< T, ThreadTraits >::NewCallbackWithOutput | ( | void(T::*)(int32_t, Output, A, B) | method, |
| const A & | a, | ||
| const B & | b | ||
| ) | [inline] |
NewCallbackWithOutput() allocates a new, single-use CompletionCallback
where the browser will pass an additional parameter containing the result of the request.
The CompletionCallback
must be run in order for the memory allocated by the methods to be freed.
| [in] | method | The method to be invoked upon completion of the operation. |
| [in] | a | Passed to method when the completion callback runs. |
| [in] | b | Passed to method when the completion callback runs. |
CompletionCallback
. | CompletionCallbackWithOutput< typename internal::TypeUnwrapper<Output>::StorageType> pp::CompletionCallbackFactory< T, ThreadTraits >::NewCallbackWithOutput | ( | void(T::*)(int32_t, Output, A, B, C) | method, |
| const A & | a, | ||
| const B & | b, | ||
| const C & | c | ||
| ) | [inline] |
NewCallbackWithOutput() allocates a new, single-use CompletionCallback
where the browser will pass an additional parameter containing the result of the request.
The CompletionCallback
must be run in order for the memory allocated by the methods to be freed.
| method | The method to be run. | |
| [in] | a | Passed to method when the completion callback runs. |
| [in] | b | Passed to method when the completion callback runs. |
| [in] | c | Passed to method when the completion callback runs. |
CompletionCallback
. | CompletionCallback pp::CompletionCallbackFactory< T, ThreadTraits >::NewOptionalCallback | ( | Method | method | ) | [inline] |
NewOptionalCallback() allocates a new, single-use CompletionCallback
that might not run if the method taking it can complete synchronously.
Thus, if after passing the CompletionCallback to a Pepper method, the method does not return PP_OK_COMPLETIONPENDING, then you should manually call the CompletionCallback's Run method, or memory will be leaked.
| [in] | method | The method to be invoked upon completion of the operation. |
CompletionCallback
. | CompletionCallback pp::CompletionCallbackFactory< T, ThreadTraits >::NewOptionalCallback | ( | Method | method, |
| const A & | a | ||
| ) | [inline] |
NewOptionalCallback() allocates a new, single-use CompletionCallback
that might not run if the method taking it can complete synchronously.
Thus, if after passing the CompletionCallback to a Pepper method, the method does not return PP_OK_COMPLETIONPENDING, then you should manually call the CompletionCallback's Run method, or memory will be leaked.
| [in] | method | The method to be invoked upon completion of the operation. Method should be of type: void (T::*)(int32_t result, const A& a) |
| [in] | a | Passed to method when the completion callback runs. |
CompletionCallback
. | CompletionCallback pp::CompletionCallbackFactory< T, ThreadTraits >::NewOptionalCallback | ( | Method | method, |
| const A & | a, | ||
| const B & | b | ||
| ) | [inline] |
NewOptionalCallback() allocates a new, single-use CompletionCallback
that might not run if the method taking it can complete synchronously.
Thus, if after passing the CompletionCallback to a Pepper method, the method does not return PP_OK_COMPLETIONPENDING, then you should manually call the CompletionCallback's Run method, or memory will be leaked.
| [in] | method | The method taking the callback. Method should be of type: void (T::*)(int32_t result, const A& a, const B& b) |
| [in] | a | Passed to method when the completion callback runs. |
| [in] | b | Passed to method when the completion callback runs. |
CompletionCallback
. | CompletionCallback pp::CompletionCallbackFactory< T, ThreadTraits >::NewOptionalCallback | ( | Method | method, |
| const A & | a, | ||
| const B & | b, | ||
| const C & | c | ||
| ) | [inline] |
NewOptionalCallback() allocates a new, single-use CompletionCallback
that might not run if the method taking it can complete synchronously.
Thus, if after passing the CompletionCallback to a Pepper method, the method does not return PP_OK_COMPLETIONPENDING, then you should manually call the CompletionCallback's Run method, or memory will be leaked.
| [in] | method | The method taking the callback. Method should be of type: void (T::*)(int32_t result, const A& a, const B& b, const C& c) |
| [in] | a | Passed to method when the completion callback runs. |
| [in] | b | Passed to method when the completion callback runs. |
| [in] | c | Passed to method when the completion callback runs. |
CompletionCallback
.


Test passed in 32 seconds on T-Mobile myTouch 3G
| Timestamp | Level | Tag | Message |
|---|---|---|---|
| 02-12 12:28:20.691 | info | TestRunner | started: testMakeASandwich_ItTastesGood(com.example.spoon.ordering.tests.OrderActivityTest) |
| 02-12 12:28:21.461 | info | dalvikvm | Could not find method android.app.Activity.getFragmentManager, referenced from method com.jayway.android.robotium.solo.Waiter.getFragment |
| 02-12 12:28:21.461 | warn | dalvikvm | VFY: unable to resolve virtual method 30: Landroid/app/Activity;.getFragmentManager ()Landroid/app/FragmentManager; |
| 02-12 12:28:21.461 | debug | dalvikvm | VFY: replacing opcode 0x6e at 0x0008 |
| 02-12 12:28:21.461 | info | dalvikvm | Could not find method android.app.Activity.getFragmentManager, referenced from method com.jayway.android.robotium.solo.Waiter.getFragment |
| 02-12 12:28:21.461 | warn | dalvikvm | VFY: unable to resolve virtual method 30: Landroid/app/Activity;.getFragmentManager ()Landroid/app/FragmentManager; |
| 02-12 12:28:21.461 | debug | dalvikvm | VFY: replacing opcode 0x6e at 0x0017 |
| 02-12 12:28:21.461 | warn | dalvikvm | VFY: unable to find class referenced in signature (Landroid/app/Fragment;) |
| 02-12 12:28:21.461 | debug | dalvikvm | VFY: dead code 0x000b-000f in Lcom/jayway/android/robotium/solo/Waiter;.getFragment (Ljava/lang/String;I)Landroid/app/Fragment; |
| 02-12 12:28:21.461 | debug | dalvikvm | VFY: dead code 0x001a-001f in Lcom/jayway/android/robotium/solo/Waiter;.getFragment (Ljava/lang/String;I)Landroid/app/Fragment; |
| 02-12 12:28:21.471 | warn | dalvikvm | VFY: unable to find class referenced in signature (Landroid/app/Fragment;) |
| 02-12 12:28:22.771 | debug | dalvikvm | GC_EXTERNAL_ALLOC freed 3259 objects / 295184 bytes in 130ms |
| 02-12 12:28:22.811 | info | global | Default buffer size used in BufferedOutputStream constructor. It would be better to be explicit if an 8k buffer is required. |
| 02-12 12:28:24.641 | debug | dalvikvm | GC_EXTERNAL_ALLOC freed 1327 objects / 119136 bytes in 127ms |
| 02-12 12:28:24.701 | info | global | Default buffer size used in BufferedOutputStream constructor. It would be better to be explicit if an 8k buffer is required. |
| 02-12 12:28:26.001 | info | global | Default buffer size used in BufferedOutputStream constructor. It would be better to be explicit if an 8k buffer is required. |
| 02-12 12:28:27.961 | debug | dalvikvm | GC_EXTERNAL_ALLOC freed 2046 objects / 195328 bytes in 156ms |
| 02-12 12:28:28.051 | info | global | Default buffer size used in BufferedOutputStream constructor. It would be better to be explicit if an 8k buffer is required. |
| 02-12 12:28:29.411 | info | global | Default buffer size used in BufferedOutputStream constructor. It would be better to be explicit if an 8k buffer is required. |
| 02-12 12:28:32.581 | debug | dalvikvm | GC_EXTERNAL_ALLOC freed 3860 objects / 339288 bytes in 152ms |
| 02-12 12:28:32.641 | info | global | Default buffer size used in BufferedOutputStream constructor. It would be better to be explicit if an 8k buffer is required. |
| 02-12 12:28:33.911 | info | global | Default buffer size used in BufferedOutputStream constructor. It would be better to be explicit if an 8k buffer is required. |
| 02-12 12:28:38.201 | debug | dalvikvm | GC_EXTERNAL_ALLOC freed 4643 objects / 418232 bytes in 142ms |
| 02-12 12:28:38.261 | info | global | Default buffer size used in BufferedOutputStream constructor. It would be better to be explicit if an 8k buffer is required. |
| 02-12 12:28:39.521 | info | global | Default buffer size used in BufferedOutputStream constructor. It would be better to be explicit if an 8k buffer is required. |
| 02-12 12:28:41.431 | debug | dalvikvm | GC_EXTERNAL_ALLOC freed 2794 objects / 241440 bytes in 162ms |
| 02-12 12:28:41.481 | info | global | Default buffer size used in BufferedOutputStream constructor. It would be better to be explicit if an 8k buffer is required. |
| 02-12 12:28:42.741 | info | global | Default buffer size used in BufferedOutputStream constructor. It would be better to be explicit if an 8k buffer is required. |
| 02-12 12:28:44.261 | info | dalvikvm | Could not find method android.widget.CheckedTextView.getCheckMarkDrawable, referenced from method org.fest.assertions.api.android.widget.CheckedTextViewAssert.hasCheckMarkDrawable |
| 02-12 12:28:44.271 | warn | dalvikvm | VFY: unable to resolve virtual method 896: Landroid/widget/CheckedTextView;.getCheckMarkDrawable ()Landroid/graphics/drawable/Drawable; |
| 02-12 12:28:44.271 | debug | dalvikvm | VFY: replacing opcode 0x6e at 0x0007 |
| 02-12 12:28:44.271 | debug | dalvikvm | VFY: dead code 0x000a-0023 in Lorg/fest/assertions/api/android/widget/CheckedTextViewAssert;.hasCheckMarkDrawable (Landroid/graphics/drawable/Drawable;)Lorg/fest/assertions/api/android/widget/CheckedTextViewAssert; |
| 02-12 12:28:45.151 | debug | dalvikvm | GC_EXTERNAL_ALLOC freed 3631 objects / 294320 bytes in 165ms |
| 02-12 12:28:45.241 | info | global | Default buffer size used in BufferedOutputStream constructor. It would be better to be explicit if an 8k buffer is required. |
| 02-12 12:28:50.511 | info | dalvikvm | Jit: resizing JitTable from 2048 to 4096 |
| 02-12 12:28:50.681 | info | global | Default buffer size used in BufferedOutputStream constructor. It would be better to be explicit if an 8k buffer is required. |
| 02-12 12:28:51.691 | warn | ResourceType | Entry identifier 0xff is larger than entry count 0xa2 |
| 02-12 12:28:51.991 | debug | dalvikvm | GC_EXTERNAL_ALLOC freed 10031 objects / 862320 bytes in 165ms |
| 02-12 12:28:52.101 | info | global | Default buffer size used in BufferedOutputStream constructor. It would be better to be explicit if an 8k buffer is required. |
| 02-12 12:28:52.761 | debug | dalvikvm | GC_EXPLICIT freed 1719 objects / 122152 bytes in 152ms |
| 02-12 12:28:52.881 | debug | dalvikvm | GC_EXPLICIT freed 90 objects / 4208 bytes in 113ms |
| 02-12 12:28:52.901 | info | TestRunner | finished: testMakeASandwich_ItTastesGood(com.example.spoon.ordering.tests.OrderActivityTest) |


---
title : "Collections"
permalink : /collections/
excerpt : 'A list of blog posts made by Steven Smethurst a Vancouver based maker, hacker, and installation artist'
---
About
Steven Smethurst is a Vancouver based maker, hacker, and installation artist.
Some of my most recent writings:
{% for post in site.posts limit:3 %}
{% if post.link %}
{{ post.title }} Permalink,
{% else %}
{{ post.title }},
{% endif %}
{% endfor %}
You can find out more about my blog posts here.
Projects
{% for post in site.projects reversed %}
{% if post.header.teaser %}
{% capture teaser %}{{ post.header.teaser }}{% endcapture %}
{% endif %}
{% if post.excerpt %}{{ post.excerpt | markdownify | strip_html | truncate: 160 }}
{% endif %}
{% endfor %}
Flocking AI
{% for post in site.flockingai reversed %}
{% endfor %}


| Category: containers | Component type: type |
Looking up an element in a hash_multimap by its key is efficient, so hash_multimap is useful for "dictionaries" where the order of elements is irrelevant. If it is important for the elements to be in a particular order, however, then multimap is more appropriate.
struct eqstr { bool operator()(const char* s1, const char* s2) const { return strcmp(s1, s2) == 0; } }; typedef hash_multimap<const char*, int, hash<const char*>, eqstr> map_type; void lookup(const map_type& Map, const char* str) { cout << str << ": "; pair<map_type::const_iterator, map_type::const_iterator> p = Map.equal_range(str); for (map_type::const_iterator i = p.first; i != p.second; ++i) cout << (*i).second << " "; cout << endl; } int main() { map_type M; M.insert(map_type::value_type("H", 1)); M.insert(map_type::value_type("H", 2)); M.insert(map_type::value_type("C", 12)); M.insert(map_type::value_type("C", 13)); M.insert(map_type::value_type("O", 16)); M.insert(map_type::value_type("O", 17)); M.insert(map_type::value_type("O", 18)); M.insert(map_type::value_type("I", 127)); lookup(M, "I"); lookup(M, "O"); lookup(M, "Rn"); }
| Parameter | Description | Default |
|---|---|---|
| Key | The hash_multimap's key type. This is also defined as hash_multimap::key_type. | |
| Data | The hash_multimap's data type. This is also defined as hash_multimap::data_type. | |
| HashFcn | The hash function used by the hash_multimap. This is also defined as hash_multimap::hasher. | hash<Key> |
| EqualKey | The hash_multimap's key equality function: a binary predicate that determines whether two keys are equal. This is also defined as hash_multimap::key_equal. | equal_to<Key> |
| Alloc | The hash_set's allocator, used for all internal memory management. | alloc |
| Member | Where defined | Description |
|---|---|---|
| key_type | Associative Container | The hash_multimap's key type, Key. |
| data_type | Pair Associative Container | The type of object associated with the keys. |
| value_type | Pair Associative Container | The type of object, pair<const key_type, data_type>, stored in the hash_multimap. |
| hasher | Hashed Associative Container | The hash_multimap's hash function. |
| key_equal | Hashed Associative Container | Function object that compares keys for equality. |
| pointer | Container | Pointer to T. |
| reference | Container | Reference to T |
| const_reference | Container | Const reference to T |
| size_type | Container | An unsigned integral type. |
| difference_type | Container | A signed integral type. |
| iterator | Container | Iterator used to iterate through a hash_multimap. [1] |
| const_iterator | Container | Const iterator used to iterate through a hash_multimap. |
| iterator begin() | Container | Returns an iterator pointing to the beginning of the hash_multimap. |
| iterator end() | Container | Returns an iterator pointing to the end of the hash_multimap. |
| const_iterator begin() const | Container | Returns an const_iterator pointing to the beginning of the hash_multimap. |
| const_iterator end() const | Container | Returns an const_iterator pointing to the end of the hash_multimap. |
| size_type size() const | Container | Returns the size of the hash_multimap. |
| size_type max_size() const | Container | Returns the largest possible size of the hash_multimap. |
| bool empty() const | Container | true if the hash_multimap's size is 0. |
| size_type bucket_count() const | Hashed Associative Container | Returns the number of buckets used by the hash_multimap. |
| void resize(size_type n) | Hashed Associative Container | Increases the bucket count to at least n. |
| hasher hash_funct() const | Hashed Associative Container | Returns the hasher object used by the hash_multimap. |
| key_equal key_eq() const | Hashed Associative Container | Returns the key_equal object used by the hash_multimap. |
| hash_multimap() | Container | Creates an empty hash_multimap. |
| hash_multimap(size_type n) | Hashed Associative Container | Creates an empty hash_multimap with at least n buckets. |
hash_multimap(size_type n, const hasher& h) |
Hashed Associative Container | Creates an empty hash_multimap with at least n buckets, using h as the hash function. |
hash_multimap(size_type n, const hasher& h, const key_equal& k) |
Hashed Associative Container | Creates an empty hash_multimap with at least n buckets, using h as the hash function and k as the key equal function. |
template <class InputIterator> hash_multimap(InputIterator, InputIterator) [2] |
Multiple Hashed Associative Container | Creates a hash_multimap with a copy of a range. |
template <class InputIterator> hash_multimap(InputIterator, InputIterator, size_type n) [2] |
Multiple Hashed Associative Container | Creates a hash_multimap with a copy of a range and a bucket count of at least n. |
template <class InputIterator> hash_multimap(InputIterator, InputIterator, size_type n, const hasher& h) [2] |
Multiple Hashed Associative Container | Creates a hash_multimap with a copy of a range and a bucket count of at least n, using h as the hash function. |
template <class InputIterator> hash_multimap(InputIterator, InputIterator, size_type n, const hasher& h, const key_equal& k) [2] |
Multiple Hashed Associative Container | Creates a hash_multimap with a copy of a range and a bucket count of at least n, using h as the hash function and k as the key equal function. |
| hash_multimap(const hash_multimap&) | Container | The copy constructor. |
| hash_multimap& operator=(const hash_multimap&) | Container | The assignment operator |
| void swap(hash_multimap&) | Container | Swaps the contents of two hash_multimaps. |
| iterator insert(const value_type& x) | Multiple Associative Container | Inserts x into the hash_multimap. |
template <class InputIterator> void insert(InputIterator, InputIterator) [2] |
Multiple Associative Container | Inserts a range into the hash_multimap. |
| void erase(iterator pos) | Associative Container | Erases the element pointed to by pos. |
| size_type erase(const key_type& k) | Associative Container | Erases the element whose key is k. |
| void erase(iterator first, iterator last) | Associative Container | Erases all elements in a range. |
| void clear() | Associative Container | Erases all of the elements. |
| const_iterator find(const key_type& k) const | Associative Container | Finds an element whose key is k. |
| iterator find(const key_type& k) | Associative Container | Finds an element whose key is k. |
| size_type count(const key_type& k) const | Associative Container | Counts the number of elements whose key is k. |
pair<const_iterator, const_iterator> equal_range(const key_type& k) const |
Associative Container | Finds a range containing all elements whose key is k. |
pair<iterator, iterator> equal_range(const key_type& k) |
Associative Container | Finds a range containing all elements whose key is k. |
bool operator==(const hash_multimap&, const hash_multimap&) |
Hashed Associative Container | Tests two hash_multimaps for equality. This is a global function, not a member function. |
[1] Hash_multimap::iterator is not a mutable iterator, because hash_multimap::value_type is not Assignable. That is, if i is of type hash_multimap::iterator and p is of type hash_multimap::value_type, then *i = p is not a valid expression. However, hash_multimap::iterator isn't a constant iterator either, because it can be used to modify the object that it points to. Using the same notation as above, (*i).second = p is a valid expression.
[2] This member function relies on member template functions, which at present (early 1998) are not supported by all compilers. If your compiler supports member templates, you can call this function with any type of input iterator. If your compiler does not yet support member templates, though, then the arguments must either be of type const value_type* or of type hash_multimap::const_iterator.


Toggle navigation
Home
About
Contact
All Neighborhoods
North Seattle
Broadview
Bitter Lake
North Beach
Crown Hill
Greenwood
Northgate
Haller Lake
Pinehurst
North College Park
Maple Leaf
More...
{{back[0]}}
Refine Your Recommendation
Age
Income
Other Important Factors
Children?
Car?
Single?
Foodie?
Live music nearby?
Commute by:
Walk
Bike
Bus/Train
Drive
Education Level
High School
Bachelors
Graduate Degree
Professional Degree
{% block body %}{% endblock %}


Authentication
Contribution Guidelines Edit | Report
On Sunbird, if a user forgets the password , generally the reset password link is sent on users registered email but in certain cases where users have registered with phone numbers instead of email address, the SMS based verification is done to authenticate the legitimacy of the user. The reset process is started by sending an One Time Password (OTP) as a SMS to the users registered mobile number. This One Time Password (OTP) is used by the user to validate and reset the password.
Implementation of Keycloak authenticator is rather simple. A user with pre-knowledge about various terms used while implementation process makes the whole process quite simple. For further assistance in setting up Keycloak resource ,visit.Also to get a clear understanding about role of Authentication SPI and Service Provider Interfaces(SPI) in implementationvisit
Meanwhile, a thorough understanding of Authentication SPI i.e., authenticating the user with a “Secret Question”, will help in easy implementation of SMS(OTP) authenticatorIts recommended to check the example give in the previous link by importing it into Intellij/Eclipse IDE as an Maven Project and understand what interfaces are to be implemented when developing a custom authenticator.
Once the understanding is clear about how an authenticator is implemented, you can proceed to SMS Authenticator code which can be accessed here,its located in the folder “sms-provider”. This code needs to be imported to Intellij/Eclipse IDE as an Maven Project to start building the authenticator.
Build Process for Keycloak SMS Based Authenticator
To build the complete project and check the working of the SMS Authenticator follow the steps.
- Import the project from here
to Intellij/Eclipse as Maven project (preference should be given to Intellij Community Edition) to make the process easy . - Build the artifact(jar) using the command
mvn clean package
from the SMS-provider path in the terminal. - The generated artifact will be in the “target” folder in the project, with the same name as project. (ex - keycloak-email-phone-
authenticator-1.0-SNAPSHOT.jar) -
Add the jar to the Keycloak server: (“providers” folder will be created in the Keycloak home path if it does not exist)
$ cp target/keycloak-sms-authenticator-sns-*.jar _KEYCLOAK_HOME_/providers/
- Add three templates to the Keycloak server:
$ cp templates/password-reset-email.ftl _KEYCLOAK_HOME_/themes/base/login/ $ cp templates/sms-validation.ftl _KEYCLOAK_HOME_/themes/base/login/ $ cp templates/sms-validation-error.ftl _KEYCLOAK_HOME_/themes/base/login/
-
Place the credentials file in the “sms-provider” folder within “bin” folder of the
_KEYCLOAK_HOME_
with the relevant name. -
The same path has to be provided in the
KeycloakSmsAuthenticatorConstants
file with the proper name (ex - MSG91_SMS_PROVIDER_CONFIGURATIONS_PATH = “sms-provider/Msg91Creds.json”)
Template of the credentials file will look like , which can be extended to add all the parameters needed for any specific provider.
{ "auth_key": "XXXXXXXXXXXXXX", "sender": "XXXXXX", "country": "XX", "route": "X", "sms_method_type": "XXXX" }
-
Configure your REALM to use the SMS Authentication. First create a new REALM (or select a previously created REALM).
-
Under Authentication > Flows:
-
Copy ‘Browse’ flow to ‘Browser with SMS’ flow
-
Click on ‘Actions > Add execution on the ‘Browser with SMS Forms’ line and add the ‘SMS Authentication’
-
Set ‘SMS Authentication’ to ‘REQUIRED’ or ‘ALTERNATIVE’
-
To configure the SMS Authenticator, click on Actions Config and fill in the attributes.
-
-
Under Authentication > Bindings:
- Select ‘Browser with SMS’ as the ‘Browser Flow’ for the REALM.
The current SMS Authenticator is forked from the github repo visit


BranchError
class containing the message to display in logs when calls have been
made to apply a referral code, but the Branch object has not been properly initialised or
cannot contact the server due to a network connectivity issue.BranchError
class containing the message to display in logs when a Branch referral
URL could not be created.BranchError
class containing the message to display in logs where the same
referral code has been applied already, potentially identifying an erroneously repeated
code block or poorly implemented loop.BranchError
class containing the message to display in logs where an alias request
has been submitted that has different parameters attached.BranchError
class containing the message to display in logs where a request to the
server to fetch a user's credit history has failed due to poor connectivity or an internal
system error.BranchError
class containing the message to display in logs where a request to the
server to fetch a user's current credit balance has failed due to poor connectivity or an internal
system error.BranchError
class containing the message to display in logs where the referral
code has not been received properly by the server.BranchError
class containing the message to display in logs where a request to the
server to fetch the current referral count has failed due to poor connectivity or an internal
system error.BranchError
class containing the message to display in logs where the Branch
initialisation process has failed due to poor connectivity, or because the App Key in use in
the current application is misconfigured.BranchError
class containing the message to display in logs where the
referral code is invalid, suggesting an implementation error in handling generated codes, or
input validation failure where the code is input manually by the user.Branch.BranchLinkCreateListener
, defining a single method that takes a URL
String
format, and an error message of BranchError
format that will be
returned on failure of the request response.Branch.BranchListResponseListener
, defining a single method that takes a list of
JSONArray
format, and an error message of BranchError
format that will be
returned on failure of the request response.BranchError
class containing the message to display in logs for when calls have
been made to a Branch object when a connection has not been established.Branch.BranchReferralInitListener
, defining a single method that takes a list of params in
JSONObject
format, and an error message of BranchError
format that will be
returned on failure of the request response.Branch.BranchReferralStateChangedListener
, defining a single method that takes a value of
Boolean
format, and an error message of BranchError
format that will be
returned on failure of the request response.BranchError
class containing the message to display in logs in cases where the
user alias cannot be set.BranchError
class containing the message to display in logs where the referral
code cannot be validated due to a lack of communication, or valid response from, the Branch
server.enum
class containing the sort options for return of credit history.NetworkCallback
interface and provides the required state
and response logic for the process of interacting with the Branch referral network service.BranchLinkData
object is based on JSONObject
and expands
the class to enable collections of tags.JSONObject
.


[gecode-users] Symbolic Constraints - fd_relation contraint in Gecode?
Pedro Salgueiro
pds at di.uevora.pt
Sat Jun 13 12:22:08 CEST 2009
Hi!
I have been busy on something else, and just now got back to this.
On Tue, 2009-05-26 at 11:42 +0200, Mikael Zayenz Lagerkvist wrote:
> On Tue, May 26, 2009 at 11:36 AM, Pedro Salgueiro <pds at di.uevora.pt> wrote:
> > On Mon, 2009-05-25 at 16:30 +0200, Mikael Zayenz Lagerkvist wrote:
> > Sorry, my bad, didn't noticed that on the documentation... Now I
> > understand why it gets really slow, as the domain gets really big.
> >
> > So, there is no easy way of preventing the translation of this sparse
> > domain to a dense domain, even if it is just to make some tests and see
> > the behavior of Gecode under those circumstances?
>
> If your domain is big (not just a big width but lots of values) then
> extensional constraints always takes a lot of memory. This is due to
> the nature of extensional constraints.
>
> If your domain has a large width (difference between minimum and
> maximum element) but few elements (say {-1000, 0, +1000}), then the
> problem can be solved. You just need to translate your large domain
> into a smaller domain (say {0, 1, 2}). The translation can either be
> done by reformulating the problem or by channeling to a new variable
> using an element constraint.
>
To start, sorry if I am saying something stupid :).
Translating the large domain to a smaller one is a good idea, the
problem is that besides I need to use the extensional constraint to make
sure that the values belong to some matrix, I also have to apply
constraints to some of the values individual values of the tuple, based
on the values of the large domain. So, if I translate the domain to a
smaller one, then I have no way to apply such constraints.
For instance, let's suppose I have the following matrix:
matrix={{9900, 1234, 2349}
{9901, 2345, 5678}}
wich will be translated to:
translated_matrix={{0,1,2,3}
{4,5,6,7}}
Then I will apply an extensional constraint to make sure that the
variables C={X1,X2,X3} and C1={Y1,Y2,Y3} belongs to translated_matrix.
Then I need to apply constraints that relate individual values on each
of the tuple, such as
Y1 - X1 < 10
The problem is that this last constraint should be applied over the
initial values, and with the translated domain I can not apply such
constraints because I don't have the original values...
About the element constraint, I didn't got that one. For what I
understood on the documentation, it just constraints one variable to an
element of an array. How do this fit this problem?
Thank you,
Pedro Salgueiro
>
> Cheers,
> Mikael
>
More information about the gecode-users
mailing list


Understanding neuroplasticity is an important part of learning and once you understand it, it becomes undeniable proof that you can teach yourself anything
In regards to neuroplasticity i might utilize repetition and use this to master what i'm looking to learn/do
As someone who likes knowing the fundementals of something i can use this as a framework for how i engage with things i want to learn
Well a growth mindset is the belief that "a person's capacities and talents can be improved over time" and that with this particular mindset you are more likely to achieve desired results
I wouldn't say that anything really supprised me though having someone else talk to you about such an idea does cement in my head prior beliefs, i guess the thing that changed is that the idea retains more clout now
Oneway i will intergrate it is via setting reminders on my phone, i find that physical reminders of ideas for me tend to work, like post it notes over my walls


Instructions to play the game:
Hit the tile is a very simple iOS game. The user just has to launch the game and click 'Play'. A coloured tile appears of the screen which the user has to remove by tapping on it. If the user taps inside the tile he gets a point and if he taps outside the tile or does not click anywhere then the game is over.
Feel free to contact me in case you encounter any bugs or crashes.
Mail<EMAIL_ADDRESS>LinkedIn
Github Stackoverflow
Twitter: @ankitank


[gecode-users] Propagator
Jan Kelbel
kelbelj at fel.cvut.cz
Tue May 26 16:36:24 CEST 2009
Hi, finally I found the bug:
in the copy constructor of my propagator, I called SharedArray(int n)
constructor, that allocated each time new memory. I did it only in the
version inherited from NaryPropagator class, which is the reason why the
other version was OK.
Cheers, Jan
Jan Kelbel wrote:
> Hello,
>
> some months ago I implemented N-ary propagator (it is that edge-finder).
> When I used it to solve larger problem instances, I noticed that it
> consumes memory in rate of about 1MB/s.
> I tested it in Gecode 2.2.0 (where it was even about 3MB/s) and in
> Gecode 3.1.0., using MS Visual C++ 2008.
>
> This propagator is inherited from class NaryPropagator. In the propagate
> method, there is an array for sorting, which is created using the Region
> allocation.
>
> When I changed the edge-finder to inherit directly from the class
> Propagator, the growing memory consumption disappeared.
>
> My question is, are there some rules, what should be implemented in
> propagator inherited from NaryPropagator in order allocate/dealocate
> memory correctly?
>
> Thank you.
>
> Regards, Jan
More information about the gecode-users
mailing list


This is a sample Arethusa API Client. It calls the API via the Perseus Template Template Treebank Service.
Treebank Template URL:
Get Morph: Sentence:
Toggle
Refresh
Next Chunk
Prev Chunk
Goto Ref: Sentence: Word: Word:
Find Word: In Sentence: Word: Prefix: Suffix:
Service Response:


A passionate CS master student in deep learning
It is very expensive to manually label tens of millions of bilingual sentence pairs for training your machine-translation model.
Consider the following two figures,
The learning of the proposed method [1] is shown in the following steps, and given an English sentence ,
A reinforcement learning (i.e. policy gradient) is employed to train both and simultaneously.
The learning of the model is based on unlabel bilingual sentence pairs which can be obtained massively.
It is expected that using reinforcement learning for the proposed method is time-comsunimg.