|
Nexmo .NET Library
5.0.0
Nexmo REST API client for .NET, ASP.NET, ASP.NET MVC written in C#. API support for SMS, Voice, Text-to-Speech, Numbers, Verify (2FA) and more. https://developer.nexmo.com/
|
Public Member Functions | |
| NumberInsightClient (Credentials creds=null) | |
| BasicInsightResponse | GetNumberInsightBasic (BasicNumberInsightRequest request, Credentials creds=null) |
| Provides basic number insight information about a number. More... | |
| StandardInsightResponse | GetNumberInsightStandard (StandardNumberInsightRequest request, Credentials creds=null) |
| Provides standard number insight information about a number. More... | |
| AdvancedInsightsResponse | GetNumberInsightAdvanced (AdvancedNumberInsightRequest request, Credentials creds=null) |
| Provides advanced number insight information about a number synchronously, in the same way that the basic and standard endpoints do. Nexmo recommends accessing the Advanced API asynchronously More... | |
| AdvancedInsightsAsyncResponse | GetNumberInsightAsync (AdvancedNumberInsightAsynchronousRequest request, Credentials creds=null) |
| Provides advanced number insight number information asynchronously using the URL specified in the callback parameter. Vonage recommends asynchronous use of the Number Insight Advanced API, to avoid timeouts. More... | |
| void | ValidateNumberInsightResponse (NumberInsightResponseBase response) |
Properties | |
| Credentials | Credentials [get, set] |
| AdvancedInsightsResponse Nexmo.Api.NumberInsights.NumberInsightClient.GetNumberInsightAdvanced | ( | AdvancedNumberInsightRequest | request, |
| Credentials | creds = null |
||
| ) |
Provides advanced number insight information about a number synchronously, in the same way that the basic and standard endpoints do. Nexmo recommends accessing the Advanced API asynchronously
| request | |
| creds |
Implements Nexmo.Api.NumberInsights.INumberInsightClient.
| AdvancedInsightsAsyncResponse Nexmo.Api.NumberInsights.NumberInsightClient.GetNumberInsightAsync | ( | AdvancedNumberInsightAsynchronousRequest | request, |
| Credentials | creds = null |
||
| ) |
Provides advanced number insight number information asynchronously using the URL specified in the callback parameter. Vonage recommends asynchronous use of the Number Insight Advanced API, to avoid timeouts.
| request | |
| creds |
Implements Nexmo.Api.NumberInsights.INumberInsightClient.
| BasicInsightResponse Nexmo.Api.NumberInsights.NumberInsightClient.GetNumberInsightBasic | ( | BasicNumberInsightRequest | request, |
| Credentials | creds = null |
||
| ) |
Provides basic number insight information about a number.
| request | |
| creds |
Implements Nexmo.Api.NumberInsights.INumberInsightClient.
| StandardInsightResponse Nexmo.Api.NumberInsights.NumberInsightClient.GetNumberInsightStandard | ( | StandardNumberInsightRequest | request, |
| Credentials | creds = null |
||
| ) |
Provides standard number insight information about a number.
| request | |
| creds |
Implements Nexmo.Api.NumberInsights.INumberInsightClient.


Below is an overview of simple and fair pricing plans. Choose a plan that best suits your project and get started.
(1) No General Solicitation or Advertising to Market the Securities; and (2) Securities may not be sold to more than 35 non-accredited investors.
Companies conducting an offering under Rule 506(c) can raise an unlimited amount of money and can sell securities to an unlimited number of accredited investors.
Companies conducting an offering under Rule 504 are afforded an exemption from registration requirements of federal securities laws for so long as they offer and sell up to $5,000,000 of their securities in any 12-month period. Additionally, the entity must file at the state level for any state the tokens are being offered, which subjects them to limitations at the state level.
no state-costs included
Companies conducting an offering through Regulation CF are able to raise a maximum aggregate amount of $1,070,000 from any individual in a 12-month period. All transactions must take place online through an SEC-registered intermediary, either a broker-dealer or a funding portal. In addition, a company must draft and file a Form C with the SEC before proceeding with their raise.
no state-costs included
Offer securities in the form of tokens to foreign investors and employees, advisers, and independent contractors based outside the United States.
no state-costs included
Offer employees, advisers, and independent contractors equity for services with an equity plan.
Token distribution is only one aspect of a blockchain-based project. Tribaldex is proud to offer these other services.
no state-costs included
Create a legal corporation within the United States.
no state-costs included
Cayman Islands, Malta, BVI, Singapore, Bermuda, Caymans, Liechtenstein, and more.
no state-costs included
Create a legal corporation within the United States.
no state-costs included
Cayman Islands, Malta, BVI, Singapore, Bermuda, Caymans, Liechtenstein, and more.
no state-costs included
Attorney review of all promotional materials used in connection with the offering for material misrepresentations, omissions, and compliance with Securities and Exchange Commission (SEC) rules.


steel-dynamics
Businessmodel of Steel Dynamics
Customer Segments
Steel Dynamics provides a range of steel and scrap products. The Company principally serves customers operating within the metals industry, dividing its customers by product category:
- Sheet steel customers, comprising steel processors and steel service centre operators, which act as intermediaries between primary sheet steel producers and end-user manufacturers, as well as customers in the heating, ventilation and air conditioning, construction, agriculture, and consumer goods markets;
- Ferrous and no-ferrous scrap customers, comprising various end-users such as arc furnace steel mills, integrated steelmakers, foundries, secondary smelters, metal brokers, aluminium sheet and ingot manufacturers, brass and bronze ingot makers, copper refineries, specialty steelmakers, alloy manufacturers, wire and cable producers, utilities, and telephone networks.
- Steel fabrication customers, comprising non-residential steel fabricators, metal building companies, general construction contractors, developers, and governmental entities. Steel Dynamics serves a large domestic customer base across the US, with its facilities primarily located in the Upper Midwest and the Southeastern states. The Company does not currently serve an international customers base outside of North America.
Value Propositions
Steel Dynamics provides value to its customers in the following ways:
- Its quality and low-cost production processes, with the Company committed to maintaining a low operating cost structure, without sacrificing quality, employing efficient plant designs combined with a high productivity rate, that enables it to provide an efficient service to clients
- Its secure supply of high-quality raw materials, with the Company having a secured reliable supply of ferrous raw material resources through its own metals recycling operations;
- Its diversified product portfolio, with the Company offering a broad range of products and services, organised into several product categories, including sheet products, long products, steel finishing and fabrication services, and metals recycling services;
- Its specialist personnel and experienced industry executives, with the Company employing specialist personnel across its three operating segments, led by a team of experienced industry executives; and
- Its strategic geographic locations, with the Company operating steelmaking facilities across the US near sources of scrap materials and close to its existing customer base, allowing it provide products quickly and reliably. ### Channels
Steel Dynamics operates a website at www.steeldynamics.com, through which it provides information on its various products, services, and locations. The Company does not an online sales channel, nor does it operate an online customer portal, however it does allow customers to make sales enquiries through an online contact form on its website.
Steel Dynamics makes it sales through an in-house direct sales force that is organised by operating segment and geographic region. Most of the Company’s ferrous scrap customers purchase processed scrap through negotiated spot sales contracts which establish a quantity purchase for the month. Steel Dynamics also collaborates with a range of third party distributors and independent sales agents, that support the Company’s own sales force.
Steel Dynamics operates its own network of processing facilities and electric arc furnace steel mills, through which it produces its products, as well as its own distribution centres and logistics infrastructure.
Customer Relationships
Steel Dynamics does not operate a self-service sales channel or customer portal. Instead, customers are able to interact directly with the Company’s sales personnel, who consult closely with clients to ensure that their individual needs are met. The Company and its customers mutually agree the details of sales and distribution, which typically last several years. Steel Dynamics seeks establish longstanding customer relationships.
Steel Dynamics provides ongoing support to its customers, including FAQs, news articles, scrap specifications, and product details. Customers are also able to contact members of the Company’s support personnel over the phone and via email, and receive a personalised response to queries and complaints. Steel Dynamics also has social media accounts with Twitter, Facebook, and LinkedIn, through which it can interact directly with customers and keep them updated with company developments.
Key Activities
Steel Dynamics is a steel producing and a metal recycling company. It is engaged in the manufacturing and selling of steel products, processing and selling of recycled ferrous and non-ferrous metals, and fabricating and selling of steel joist and deck products.
The Company organises its operations into three business segments: Steel Operations, which includes the operations of many of the Company’s most important divisions, including the Butler Flat Roll Division, Columbus Flat Roll Division, The Techs galvanising lines, Structural and Rail Division, Roanoke Bar Division, Steel of West Virginia, and Iron Dynamics; Metals Recycling Operations, which includes both ferrous and nonferrous scrap metal processing, transportation, marketing, brokerage and consulting services; and Steel Fabrication Operations, which include a network of New Millennium Building Systems joist and deck plants across the US and Northern Mexico.
Key Partners
Steel Dynamics works in conjunction with a number of companies and organisations throughout the process of producing and distributing its products. These partners include:
- Supplier and Vendor Partners, including suppliers of tools, raw materials, services, equipment, and technology that are utilised across the Company various division and operating segments in support of its operations;
- Channel and Distribution Partners, including various distributors, logistics providers, and independent sales agents that support and supplement the Company’s sales and distribution activities;
- Community and Sustainability Partners, including various non-profits and charitable organisations with which the Company collaborates on community and environmental sustainability projects; and
- Joint Venture Partners, comprising steel processing and metals companies with which the Company collaborates on joint production, marketing and sales projects through mutually-owned entities. Steel Dynamics has launched several partnerships in recent years, including a joint venture deal with La Farga Group to produce copper wire rod from recycled copper and a partnership with Manchester University to provide a year-long leadership development program.
Key Resources
Steel Dynamics’s key resources are its raw materials and supply chain, its manufacturing and processing infrastructure, its catalogue of products, its sales and distribution channels, its partnerships, and its personnel.
Steel Dynamics owns and or leases a portfolio of properties, primarily in the US. This notably includes its network of steel mills, scrap processing facilities, fabrication facilities, and finishing plants, which are key to the Company ability to conduct its core business processes. The Company’s properties also include a network of administrative and sales offices.
Cost Structure
Steel Dynamics incurs costs in relation to the procurement of raw materials and supplies, the operation of its production and processing infrastructure, the operation of its sales and distribution channels, the management of its partnerships, and the retention of its personnel.
In 2015 Steel Dynamics accrued selling, general and administrative expenses – including all costs associated with sales, finance and accounting, and administrative departments, as well as labour and related benefits, professional services expenses – in the amount of $376.00 million. The Company’s plant, machinery, and equipment costs totaled $3.97 billion for the year, comprising the bulk of the Company’s total property, plant and equipment costs in the amount of $5.08 billion.
Revenue Streams
Steel Dynamics generates revenue through the manufacture, processing, and sale of metals and related products, including sheet products, and long products. The Company also provides various processing services, steel finishing services, fabrication services, consulting services, and metals recycling services, through which it derives a portion of its revenue.
In 2015 Steel Dynamics recorded total annual net sales of $8.75 billion, down on the $10.46 billion recorded by the Company in 2014. The majority of the Company’s sales are attributed to its Steel Operations segment, which in 2015 recorded net sales of $5.42 billion. The bulk of the remaining net sales were generated by the Company’s Metals Recycling Operations segment, which generated $2.34 billion.


Login
Welcome to Ondo State Centralized Census Management System
Email Address
Password
Remember me
Login


public class FileHandler
extends java.util.logging.Handler
The following configuration properties are available:
directory
- The directory where to create the log file.
If the path is not absolute, it is relative to the current working
directory of the application. The Apache Tomcat configuration files usually
specify an absolute path for this property,
${catalina.base}/logs
Default value: logs
rotatable
- If true
, the log file will be
rotated on the first write past midnight and the filename will be
{prefix}{date}{suffix}
, where date is yyyy-MM-dd. If false
,
the file will not be rotated and the filename will be {prefix}{suffix}
.
Default value: true
prefix
- The leading part of the log file name.
Default value: juli.
suffix
- The trailing part of the log file name. Default value: .log
bufferSize
- Configures buffering. The value of 0
uses system default buffering (typically an 8K buffer will be used). A
value of <0
forces a writer flush upon each log write. A
value >0
uses a BufferedOutputStream with the defined
value but note that the system default buffering will also be
applied. Default value: -1
encoding
- Character set used by the log file. Default value:
empty string, which means to use the system default character set.level
- The level threshold for this Handler. See the
java.util.logging.Level
class for the possible levels.
Default value: ALL
filter
- The java.util.logging.Filter
implementation class name for this Handler. Default value: unsetformatter
- The java.util.logging.Formatter
implementation class name for this Handler. Default value:
java.util.logging.SimpleFormatter
| Modifier and Type | Field and Description |
|---|---|
protected java.util.concurrent.locks.ReadWriteLock |
writerLock
Lock used to control access to the writer.
|
| Constructor and Description |
|---|
FileHandler() |
FileHandler(java.lang.String directory,
java.lang.String prefix,
java.lang.String suffix) |
| Modifier and Type | Method and Description |
|---|---|
void |
close()
Close the currently open log file (if any).
|
protected void |
closeWriter() |
void |
flush()
Flush the writer.
|
protected void |
open()
Open the new log file for the date specified by
date . |
protected void |
openWriter() |
void |
publish(java.util.logging.LogRecord record)
Format and publish a LogRecord.
|
protected java.util.concurrent.locks.ReadWriteLock writerLock
public FileHandler()
public FileHandler(java.lang.String directory, java.lang.String prefix, java.lang.String suffix)
public void publish(java.util.logging.LogRecord record)
publish
in class java.util.logging.Handler
record
- description of the log eventpublic void close()
close
in class java.util.logging.Handler
protected void closeWriter()
public void flush()
flush
in class java.util.logging.Handler
protected void open()
date
.protected void openWriter()


Tim Duncan
If I could save time in a bottle, the first thing that I'd like to do, is to save every day until eternity passes away, just to spend them with you, If I could make days last forever, if words could make wishes come true, I'd save every day like a treasure and then, again I would spend them with you


Description:Ollert is a Trello analytics tool. Uses the Trello API to build charts and information about Trello boards.
Description:A set of libraries, interfaces, and utilities to run apps using X11 in a Mir environment on Ubuntu and Ubuntu Touch.
Description:RESTful API for getting data to construct fortune cookies. Built with NodeJS and Mongoose. API designed using
apiary.io.
Time Spent in Development:Aug 2014 - Oct 2014
Description:Simple and easy-to-use NodeJS Mongoose Schema plugin to pull random documents
Time Spent in Development:Sep 2014
To Download: npm install mongoose-simple-random
Health2Wealth - Closed
Description:Health2Wealth is a system designed to allow companies to monitor activity tracker usage and distribute rewards based on goals.
Description:OpenID Store using Mongoid. Used to store Association and Nonce data in a Mongoid database.
Time Spent in Development: Feb 2013
To Download: gem install openid-store-mongoid
Description: Pokephile is a web application to search a database of Pokemon to view some basic information about each monster. This app was created primarily to familiarize myself with schemaless databases using Mongo, unit testing with RSpec, and integration testing with Capybara and Cucumber.
Time Spent in Development: Dec 2012 - Jan 2013
Description: Capital Punishment is a pain-free way to memorize states and capitals. Pick your poison from the side bar, and then match the given state to its capital and answer the next question. If you can't get the hang of a question, just move on and try again later. You'll be shocked at how well you know your states and capitals when you're done playing. Click the center button to inject a twist into your game by getting a capital and then answering with the state!
Time Spent in Development: Sep 2012 - Oct 2012


DrumKit
C
clap
H
hihat
K
kick
O
openhat
B
boom
R
ride
S
snare
T
tom
L
tink
Made with ♥ by
Sabbir Rahman


There are 4 primary attributes to encode data visually:
Visualizations are used to tell
a directed story or to make a point.
Think one page scrollers or visualizations
embedded in news articles.
Tend to generally have a stronger focus on design and mood, as there is no cumbersome utilitarian interface to get in the way.
Visualizations that foster a free user-experience, letting them draw their own hypotheses and conclusions.
Usually some sort of sandbox or interface
with a lot of user defined control.
Stronger attention needs to be paid to the organization of user interface elements, to make them both visually unobstrusive and easy to learn.
cd your-code-folder
Python v2:
python -m SimpleHTTPServer
Python v3:
python -m http.server 8000
“Scales are a convenient abstraction for a fundamental task in visualization: mapping a dimension of abstract data to a visual representation. Although most often used for position-encoding quantitative data, such as mapping a measurement in meters to a position in pixels for dots in a scatterplot, scales can represent virtually any visual encoding, such as diverging colors, stroke widths, or symbol size.”
As an example, let's say you have
a dataset containing travel distances:
// distances are in miles
var data = [0.2, 2.4, 4.7, 3.1];
var xScale = d3.scaleLinear()
.domain([0, 5])
.range([0, window.innerWidth]);
var firstX = xScale(data[0]);
D3 allows us to attach event listeners to any selection to trigger functions on mouse events:
d3.selectAll("circle").on("click", function(d) {
console.log(d.name);
});
“The axis component renders human-readable reference marks for scales. This alleviates one of the more tedious tasks in visualizing data.”
var axis = d3.axisBottom(xScale);
d3.select("g").call(axis);
Whether storing in a file on your computer or using an API, set up an HTML page that loads some of the data you need for your final project into Javascript using D3 (the code from last week). Use console.log to display your data and we will look at it next class all together.
Don't worry about drawing anything based on the data, this exercise is solely for exploring the data in the console.


Model.Package.entries package¶
Submodules¶
Model.Package.entries.base_entry module¶
-
class
Model.Package.entries.base_entry.
BaseEntry
(name, package)[source]¶ Bases:
object
This is basis class for all entries.
-
full_name
¶ Return full path in current tree in form of: /a/b/c/...
-
label
¶ Returns the correct mutation of the entry’s label
-
name
¶ get name
-
package
¶ get package
-
parent
¶ get name
-
root
¶ Return root of tree.
-
Model.Package.entries.bool module¶
Model.Package.entries.container module¶
Model.Package.entries.entry module¶
-
class
Model.Package.entries.entry.
Entry
(name, package)[source]¶ Bases:
src.Model.Package.entries.base_entry.BaseEntry
,src.Model.Package.inconsistency.Inconsistency
This is basis class for all entries.
-
active
¶ Dynamic activity is the activity set by dependencies
-
full_name
¶ Return full path in current tree in form of: /a/b/c/...
-
group
¶
-
help
¶
-
multiple
¶
-
parent
¶ get name
-
static_active
¶ Static activity indicates that the entry is switched on or off. Entries that are off are not processed in the client and cannot be turned on by dependencies
-
Model.Package.entries.fuzzy module¶
-
class
Model.Package.entries.fuzzy.
Fuzzy
(name, package)[source]¶ Bases:
src.Model.Package.entries.key_word.KeyWord
This is a class for keyword entries of type fuzzy.
-
convert_value
(value)[source]¶ Check if given value can be converted to value for this entry, and if so, return converted value.
-
default_grade
¶ Get grade of default value.
-
grade
¶
-
max
¶
-
min
¶
-
output_value
¶ convert value to output string format
-
type
¶
-
Model.Package.entries.key_word module¶
-
class
Model.Package.entries.key_word.
KeyWord
(name, package)[source]¶ Bases:
src.Model.Package.entries.entry.Entry
,src.Model.Package.inconsistency.Inconsistency
This is a class for keyword entries
-
default_value
¶
-
list
¶
-
mandatory
¶ Dynamic mandatority is the mandatority set by dependencies
-
output_value
¶ convert value to output string format
-
static_mandatory
¶ Static mandatority indicates that the entry is mandatory or not. Entries that are statically mandatory cannot be set non-mandatory by dependencies
-
type
¶
-
value
¶
-
Model.Package.entries.number module¶
-
class
Model.Package.entries.number.
Number
(name, package)[source]¶ Bases:
src.Model.Package.entries.key_word.KeyWord
This is a class for keyword entries of type number.
-
convert_value
(value)[source]¶ Check if given value can be converted to value for this entry, and if so, return converted value.
-
leading_zeros
¶
-
max
¶
-
min
¶
-
output_value
¶ convert value to output string format
-
precision
¶
-
print_sign
¶
-
step
¶
-
type
¶
-
Model.Package.entries.string module¶
-
class
Model.Package.entries.string.
String
(name, package)[source]¶ Bases:
src.Model.Package.entries.key_word.KeyWord
This is a class for keyword entries if type string from template file.
-
convert_value
(value)[source]¶ Check if the given value can be converted to a value for this entry, and if so, return converted value.
-
output_value
¶ convert value to output string format
-
type
¶
-


Ninja features a standalone mode where you do not need a separate servlet container. The standalone mode enables you to package your application along with a fast, embedded HTTP server (Jetty in that case). There are several options for packaging your application using standalone mode.
This allows you to drop that self-executing file to your server run your application with zero external dependencies. Due to Ninja’s client-side sessions it becomes really simple to have one reverse proxy in front of many Ninja instances.
In order to do so you have to first of all add ninja-standalone as dependency to your pom.xml:
<dependency> <groupId>org.ninjaframework</groupId> <artifactId>ninja-standalone</artifactId> <version>X.X.X</version> </dependency>
Don’t forget to change packaging value from war to jar.
<packaging>jar</packaging>
Packaging the application is done via the maven shade plugin.  Usually that file is named roughly MY-APPLICATION-jar-with-dependencies.jar
You can generate the fat jar by calling
mvn clean compile package
Running the fat jar (and your app) is as simple as calling:
java -Dninja.port=9000 -jar MY-APPLICATION-jar-with-dependencies.jar
Incompatibility notice
Please be aware that since Ninja 6.4.3, alongside with Jetty 9.4.12, the dependency allowing Jetty servlets annotations (that should not be useful for your Ninja Framework project) have been excluded from the stack. This was caused by an incompatibility between the version of the java bytecode handler ASM used by this module (6.2) and the java bytecode handler javassist used by Hibernate.
If you’d like to run your application as a proper daemon on Unix/Mac or as a service on Windows, another option is using the Stork Maven Plugin.
Stork is a collection of utilities for optimizing your “after-build” workflow by filling in the gap between Maven and eventual app execution. In just a couple quick steps, stork will package your Ninja app into a professional .tar.gz file ready for deployment.
Here is an article describing how Ninja apps can be packaged with Stork.
Here is a demo application that integrates with Stork.
Regardless of which option you choose, you can customize your application startup via the following command line parameters:
If you use option #1 and want to register your Ninja standalone application on your Linux box (Debian, Ubuntu) you can use and adapt the following script. The script should be copied at /etc/init.d/ninja and can be run via service ninja start.
#!/bin/bash # chkconfig: 345 20 80 # description: Ninja start/shutdown script # processname: java # # Installation: # copy file to /etc/init.d # chmod +x /etc/init.d/ninja # chkconfig --add /etc/init.d/ninja # chkconfig ninja on # OR on a Debian system # sudo update-rc.d ninja defaults # # Usage: (as root) # service ninja start # service ninja stop # service ninja status # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Path to the application APPLICATION_NAME=my-ninja-service APPLICATION_PATH=/srv/ninja_applications/${APPLICATION_NAME} APPLICATION_JAR=my-ninja-service-1.0-SNAPSHOT-jar-with-dependencies.jar PID_FILE=/var/run/${APPLICATION_NAME}.pid PORT=9013 # Path to the JVM JAVA_BIN=/opt/java-oracle/jdk1.7.0/bin/java PARAMS="-Dninja.port=${PORT} -jar ${APPLICATION_PATH}/${APPLICATION_JAR}" # User running the Ninja process USER=ninja RETVAL=0 start() { if [ -f ${PID_FILE} ]; then echo "Ninja application ${APPLICATION_NAME} already running" else DAEMON_START_LINE="start-stop-daemon --chdir=${APPLICATION_PATH} --make-pidfile --pidfile ${PID_FILE} --chuid ${USER} --exec ${JAVA_BIN} --background --start -- ${PARAMS}" ${DAEMON_START_LINE} RETVAL=$? echo -n "Starting Ninja Application: ${APPLICATION_NAME}... " if [ $RETVAL -eq 0 ]; then echo " - Success" else echo " - Failure" fi echo fi echo } stop() { kill -9 `cat ${PID_FILE}` RETVAL=$? rm -rf ${PID_FILE} echo -n "Stopping Ninja application: ${APPLICATION_NAME}" if [ $RETVAL -eq 0 ]; then echo " - Success" else echo " - Failure" fi echo } status() { if [ -f ${PID_FILE} ]; then echo "Ninja application ${APPLICATION_NAME} running" else echo "Ninja application ${APPLICATION_NAME} not running" fi echo } clean() { rm -f ${PID_FILE} } case "$1" in start) start ;; stop) stop ;; restart|reload) stop sleep 10 start ;; status) status ;; clean) clean ;; *) echo "Usage: $0 {start|stop|restart|status}" esac


--- layout: page title: People --- {% include headshot.html name="Warren Hoburg" caption="Principal Investigator" href="http://web.mit.edu/~whoburg/www/" %}
{% include headshot.html name="Scott Nill" caption="PhD Student" %} {% include headshot.html name="Arthur Brown" caption="Master's Student" href="arthurb_bio" %} {% include headshot.html name="Edward Burnell" caption="Master's Student" %} {% include headshot.html name="Michael Burton" caption="Master's Student" href="mjburton_bio" %} {% include headshot.html name="Cody Karcher" caption="Master's Student" %} {% include headshot.html name="Berk Ozturk" caption="Master's Student" href="bozturk_bio" %} {% include headshot.html name="Ali Saab" caption="Master's Student" href="saab_bio"%} {% include headshot.html name="Martin York" caption="Master's Student" href="mayork_bio" %} {% include headshot.html name="Lochie Ferrier" caption="Undergraduate Researcher" %} {% include headshot.html name="Bjarni Kristinsson" caption="Undergraduate Researcher" %}


See: Description
| Interface | Description |
|---|---|
| EntityResultSegment |
A "compiled" version of a
EntityResult descriptor. |
| ParameterizedQuery |
Defines a query that can serve as a template for other queries.
|
| PrefetchProcessor |
A hierarchical visitor interface for traversing a tree of PrefetchTreeNodes.
|
| Query |
Defines minimal API of a query descriptor that is executable via Cayenne.
|
| QueryMetadata |
Provides a common interface for accessing query metadata.
|
| QueryRouter |
An interface used by Queries to route themselves to an appropriate QueryEngine.
|
| ScalarResultSegment | |
| SQLAction |
Defines API for query execution strategy over JDBC connection (as in Strategy Pattern).
|
| SQLActionVisitor |
A factory interface to create standard SQLActions for a set of standard queries.
|
| Class | Description |
|---|---|
| AbstractQuery |
A common superclass of Cayenne queries.
|
| BatchQuery |
BatchQuery and its descendants allow to group similar data for the batch database
modifications, including inserts, updates and deletes.
|
| DeleteBatchQuery |
Batched delete query.
|
| EJBQLQuery |
An EJBQL query representation in Cayenne.
|
| IndirectQuery |
A convenience superclass of the queries that resolve into some other queries during the
routing phase.
|
| InsertBatchQuery |
Batched INSERT query.
|
| NamedQuery |
A query that is a reference to a named parameterized query stored in the mapping.
|
| ObjectIdQuery |
A query that matches zero or one object or data row corresponding to the ObjectId.
|
| Ordering |
Defines object sorting criteria, used either for in-memory sorting of object lists or
as a specification for building ORDER BY clause of a SelectQuery query.
|
| PrefetchSelectQuery |
A SelectQuery to perform a prefetch based on another query.
|
| PrefetchTreeNode |
Defines a node in a prefetch tree.
|
| ProcedureQuery |
A query based on Procedure.
|
| QualifiedQuery |
An abstract superclass of queries with Expression qualifiers.
|
| QueryChain |
A Query decorator for a collection of other queries.
|
| RefreshQuery |
A query that allows to explicitly clear both object and list caches either via refetch
(eager refresh) or invalidate (lazy refresh).
|
| RelationshipQuery |
A query that selects objects related to a given object via a mapped relationship.
|
| SelectQuery |
A query that selects persistent objects of a certain type or "raw data" (aka DataRows).
|
| SQLTemplate |
A query that executes unchanged (except for template preprocessing) "raw" SQL specified
by the user.
|
| UpdateBatchQuery |
Batched UPDATE query.
|
| Enum | Description |
|---|---|
| CapsStrategy |
Defines forced capitalization of the result column names in the DataRow.
|
| QueryCacheStrategy |
Defines query result caching policy.
|
| SortOrder |
Constants to order query results (the ORDER BY clause).
|
Cayenne can "execute" any object as a query as long as it implements Query interface and provides meaningful implementation of either Query.route(...) and/or Query.createSQLAction(SQLActionVisitor)} methods. So users can extend/customize queries if they need to. Custom implementations would normally either create a query from a standard Cayenne set and delegate the execution to it (acting as a sort of "query builder"), or can implement its own non-standard SQLAction.
Copyright © 2001–2014 Apache Cayenne. All rights reserved.


{% extends 'base/base.html' %} {% load i18n %} {% load static %} {% block content %}
| {% trans 'Column title' %} 1 | {% trans 'Column title' %} 2 | {% trans 'Column title' %} 3 | |
|---|---|---|---|
| 1 | {% trans 'Item'%} 1 | $1 | |
| 2 | {% trans 'Item'%} 2 | $2 | |
| 3 | {% trans 'Item'%} 3 | $1 | |
| 7 | {% trans 'Item'%} 7 | $2 | |
| 5 | {% trans 'Item'%} 5 | $1 | |
| 6 | {% trans 'Item'%} 6 | $2 | |
| 4 | {% trans 'Item'%} 4 | $1 | |
| 8 | {% trans 'Item'%} 8 | $2 |
One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed in his bed into a horrble vermin. He lay on his armour-like back, and if he lifted his head a little he could see his brown belly, slightly doomed and divided by arches into stiff sections. The bedding was hardly able to cover it and seemed ready to slide off any moment.


Taglet v0.4.1 Taglet View Source
Documentation for Taglet. Taglet allows you to manage tags associated to your records.
Please read README.md to get more info about how to use that package.
Link to this section Summary
Functions
Get a persisted struct and inserts a new tag associated to this struct for a specific context
Get a persisted struct and removes the tag association for a specific context
It searchs the associated tags for a specific context
Given a tag, module and context (‘tag’ by default), will find all the module resources associated to the given tag
The same than tagged_with/3 but returns the query instead of db results
Link to this section Types
Link to this section Functions
Get a persisted struct and inserts a new tag associated to this struct for a specific context.
You can pass a tag or a list of tags.
In case the tag would be duplicated nothing will happen.
It returns the struct with a new entry for the given context.
Get a persisted struct and removes the tag association for a specific context.
In case the association doesn’t exist nothing will happen.
In the same way that add/3 it returns a struct
It searchs the associated tags for a specific context.
You can pass as first argument an struct or a module (phoenix model)
- With a struct: it returns the list of tags associated to that struct and context.
- With a module: it returns all the tags associated to one module and context.
Given a tag, module and context (‘tag’ by default), will find all the module resources associated to the given tag.
You can pass a simple tag or a list of tags.
The same than tagged_with/3 but returns the query instead of db results.
The purpose of this function is allow you to include it in your filter flow or perform actions like paginate the results.


result of an elaborated classification of DC anodes, a container class, storing TAAnode objects that belongs to the same SFE16 Ampli-Shape-Discri chip, which is desigend to contain 16 channels.
More...
#include <TADCSFE16.h>
result of an elaborated classification of DC anodes, a container class, storing TAAnode objects that belongs to the same SFE16 Ampli-Shape-Discri chip, which is desigend to contain 16 channels.
- Author
- SUN Yazhou, asia..nosp@m.rabb.nosp@m.it@16.nosp<EMAIL_ADDRESS>- Date
- Created: 2017/10/1 Last revised: 2017/10/12, SUN Yazhou.
- Copyright
- 2017-2018, SUN Yazhou.
◆ TADCSFE16()
| TADCSFE16::TADCSFE16 |
( |
const string & |
name = "" , |
|
|
const string & |
title = "" , |
|
|
unsigned |
uid = 999999999 |
|
) |
| |
◆ ~TADCSFE16()
| TADCSFE16::~TADCSFE16 |
( |
| ) |
|
|
virtual |
◆ Configure()
| void TADCSFE16::Configure |
( |
| ) |
|
|
virtual |
◆ GetAnode()
| TAAnode * TADCSFE16::GetAnode |
( |
int |
n | ) |
const |
◆ GetChipId()
| int TADCSFE16::GetChipId |
( |
| ) |
const |
◆ Initialize()
| void TADCSFE16::Initialize |
( |
| ) |
|
|
virtual |
◆ SetAnode()
| void TADCSFE16::SetAnode |
( |
int |
n, |
|
|
TAAnode * |
ano |
|
) |
| |
◆ SetChipId()
| void TADCSFE16::SetChipId |
( |
int |
id | ) |
|
◆ fAnodeArr
| array<TAAnode *, 16> TADCSFE16::fAnodeArr |
|
protected |
◆ fChipId
The documentation for this class was generated from the following files:


Pros:
Cons:
There is no inlining of assembly code in a go file.
Special names for the assembly files (_386.s, _amd64.s, _arm.s).
Declare the assembly function in the go code.
Special character for function declerations in the .s files
Middle dot: · (Unicode code point U+00B7)
Example:
TEXT ·Test(SB), 7, $0
Have you tried...
If nothing else works then you can consider rewriting in parts or as a whole the computationaly intence function in optimized assembly.
Alignment, Page boundaries, Overflows, Special cases etc.
[Instruction] [src], [dst]
Immediate values:
Size of the operands:
Registers:
Addressing:
The offsets from AX can be replaced by offsets from FP or SB to access names:
Examples:
MOVQ AX, BX //; Move the value of AX in to BX
MOVQ (AX), BX //; Move 8 bytes from where AX is pointing in to BX
MOVQ (AX)(BX*4), CX //; Move 8 bytes from where AX + 4*BX is pointing
MOVQ 10(AX)(BX*4), CX //; Move 8 bytes from where AX + 4*BX + 10 is pointing
MOVQ asdf+0(FP), AX //; Move the first 8 bytes located at the Frame pointer in to AX.
//; This is usualy the first argument, or part of the first argument to a function.
//; asdf in this case is just a lable for conviniance.
Docs:
http://plan9.bell-labs.com/sys/doc/asm.html
http://www.doxsey.net/blog/go-and-assembly/index.htm
Examples (all .s files for the architecture you are interested in):
http://golang.org/src/pkg/math/
http://golang.org/src/pkg/runtime/
http://golang.org/src/pkg/crypto/aes/
http://golang.org/src/pkg/crypto/md5/
Usually when optimising a function you already have the function written in go, if this is the case you can easely get a good starting point for your assembly by outputing the compiler generated assembly for the function.
go tool 6g -S gofile.go
package typehack // ToByteSlice returns the string s as a []byte. Note that cap in bs is // set to the length of s. WARNING! bs uses the same memory as s and has // therefore broken the immutability of the string s. This can lead to // serious bugs, vulnerabilities or other errors if used incorrectly. func ToByteSlice(s string) (bs []byte) // ToString returns the []byte bs as a string. Note that the cap value // from bs is discarded. WARNING! s uses the same memory as bs and is // therfor not Immutable. This can lead to serious bugs, vulnerabilities // or other errors if used incorrectly. func ToString(bs []byte) (s string) // Fallback for not supported architectures func toByteSlice(s string) (bs []byte) { return []byte(s) } // Fallback for not supported architectures func toString(bs []byte) (s string) { return string(bs)
}
//; func ToByteSlice(s string) (bs []byte) TEXT ·ToByteSlice(SB),7,$0 // s+0(FP) contains pointer to the s data // s+8(FP) contains length of s // bs+16(FP) contains pointer to bs data // bs+24(FP) contains length of bs // bs+32(FP) contains cap of bs //; Pointer to data in s is moved to bs pointer so that bs now refers to //; the same data. MOVQ s+0(FP), AX MOVQ s+8(FP), BX MOVQ AX, bs+16(FP) MOVQ BX, bs+24(FP) MOVQ BX, bs+32(FP) RET
//; func ToString(bs []byte) (s string) TEXT ·ToString(SB),7,$0 // bs+0(FP) contains pointer to the bs data // bs+8(FP) contains length of bs // bs+16(FP) contains cap of bs // s+24(FP) contains pointer to s data // s+32(FP) contains length of s //; Pointer to data in bs is moved to s pointer so that bs now refers to //; the same data. MOVQ bs+0(FP), AX MOVQ bs+8(FP), BX MOVQ AX, s+24(FP) MOVQ BX, s+32(FP) RET
To get more information on how the internal structure of []byte and strings please visit:
typehack_arm.s:
//; func ToByteSlice(s string) (bs []byte) TEXT ·ToByteSlice(SB),NOSPLIT,$0 B ·toByteSlice(SB) //; func ToString(bs []byte) (s string) TEXT ·ToString(SB),NOSPLIT,$0 B ·toString(SB)
typehack_386.s:
//; func ToByteSlice(s string) (bs []byte) TEXT ·ToByteSlice(SB),NOSPLIT,$0 JMP ·toByteSlice(SB) //; func ToString(bs []byte) (s string) TEXT ·ToString(SB),NOSPLIT,$0 JMP ·toString(SB)
package typehack_test import "fmt" import typehack "." func ExampleToByteSlice() { s := "Hello, Gophers!" fmt.Println("ToByteSlice:", typehack.ToByteSlice(s)) fmt.Println("Raw s:", s) // Output: // ToByteSlice: [72 101 108 108 111 44 32 71 111 112 104 101 114 115 33] // Raw s: Hello, Gophers! } func ExampleToString() { bs := []byte("Hello, Gophers!") fmt.Println("ToString:", typehack.ToString(bs)) fmt.Println("Raw bs:", bs) // Output: // ToString: Hello, Gophers! // Raw bs: [72 101 108 108 111 44 32 71 111 112 104 101 114 115 33] }
Go Stockholm Meetup
23 May 2014
Daniel Lidén
| Table of Contents | t |
|---|---|
| Exposé | ESC |
| Full screen slides | e |
| Presenter View | p |
| Source Files | s |
| Slide Numbers | n |
| Toggle screen blanking | b |
| Show/hide slide context | c |
| Notes | 2 |
| Help | h |


{% block preview %}{% endblock %}
OCEAN.
{% block title %}{% endblock %}
{% now 'd F\, Y \a\t g\:i a' %}
Dear {{ user }},
{% block body %}{% endblock %}
Looking forward to seeing you!
The ocean-pv team
You are receiving this email because you registered with
{{ website_address }}
.
You can unsubscribe by updating your profile and opting out of
recieve emails
.


Brief intro
- LEDE (Linux Embedded Development Environment) is a fork of OpenWRT the well known Linux distro for routers.
- MPTCP (MultiPath Transmission Control Protocol) is defined in RFC 6824. Designed to use multiple network interfaces (Ethernet, Wi-Fi, LTE, etc.) for a communication session.
- shadowsocks-libev is a lightweight proxy application. It has TCP redirection functionality (ss-redir module) which is used later.
Main problem and the goal of the project
In a Wi-Fi mesh network (like Freifunk backbone) there are multiple point-to-point links between the single nodes. I’m not really into it, but secondary links might be used for failover purposes or some load balancing work between the different paths. For better resource allocation, the free capacity on the secondary links should be used if it exists. That’s where MPTCP comes in: we can build MPTCP subflows over them, and because of the smart congestion control algorithm it only uses as many bandwidth on the secondary link as many available. In this project, I will show step-by-step how You can achieve this kind of operation in real life environment. There are few things which are required for the project:
- 2 routers
- 4 Wi-Fi bridge for two point-to-point WAN Wi-Fi links (or 2 UDP cable for testing)
- LEDE with MPTCP support
- shadowsocks-libev
Operation example
- Clients are connecting to the routers. They only supporting regular TCP.
- When a client starts a TCP session, which runs through the router, we redirect it on the router to the local port if the ss-redir with an iptables rule.
- The router supports MPTCP and builds multiple subflows over the Wi-Fi WAN paths with the second router.
- On the second router ss-server reintercepts the traffic of the subflows into a recently opened regular TCP flow to the client’s original destination.
- The endpoints are enjoying the benefits of multiple WAN paths (larger bandwidth, better and faster failover).
Guide for reproducing the project
1. Get the required software environment and build the LEDE images for the routers
First, we need to download my fork of LEDE which contains the patch for MPTCP support.
$ git clone https://github.com/spyff/lede-mptcp.git
Before we go ahead, let’s make sure we have the required dependencies for the built environment and install them.
$ sudo apt-get install subversion g++ zlib1g-dev build-essential git python rsync man-db
$ sudo apt-get install libncurses5-dev gawk gettext unzip file libssl-dev wget
Then lets prepare the build environment and get the latest package infos and patches.
$ cd lede-mptcp
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a
In the next step, we need to turn on MPTCP support for the build and enable shadowsocks-libev packages for the final LEDE build.
We can choose between the regular built in shadowsocks-libev components from original LEDE packages or my fork of shadowsocks-libev which is called shadowsocks-libev-nocrpyto where the encryption is optional (for turning off, choose none
for cipher).
$ make menuconfig
First, select the device (router) where You want to install LEDE as the target. For testing, use x86
and VirtualBox VDI image
as output. Then navigate to Network > Web Servers/Proxies
and select shadowsocks-libev-nocrypto-ss-local
and shadowsocks-libev-nocrypto-ss-redir
. Of course, You can select the regular versions from them without -nocrypto
, but I recommend the nocrypto versions because of the better performance. Save the configuration!
Next step we have to enable the MPTCP support in the kernel.
$ make kernel_menuconfig
Then navigate into the Networking support > Networking options
and enable MPTCP protocol
. Save the configuration!
We are ready with the configuration so let’s build the image!
$ make
After that, You should repeat the steps for another device. The output is a flashable image in every case, somewhere in the lede-mptcp/bin/targets
and selected architecture folder. For flashing the images to the router You should find more information for searching the specific model. In most cases that is a simple firmware upgrade in the web admin GUI.
2. Assemble the physical test environment
- For the tests, I use the following hardware:
- Netgear R7000 router
- Netgear R7800 router
- 2 Ubiquiti Loco M5 Wi-Fi bridges
- 2 Ubiquiti M5 Wi-Fi bridges
- Lots of small UTP cables
- A PC and a Laptop (or in some cases a RaspberryPi and a Laptop for the portable setup)
- The schematic figure of my setup on the image above. We need 2 WAN connection and 1 LAN on every router. The most simple way if we are creating 3 VLANs. On these routers, there are 5 RJ-45 switch ports, I decided to put LAN to the original WAN port, WAN1 to port 1-2 and WAN2 to port 3-4.
- Every Wi-Fi bridge is using DHCP to get the IP address. Path #1 bridges configured to use 5180 MHz frequency band, Path #2 bridges on 5700 MHz.
- I put Path #1 bridges to WAN1 (connected to port 1 on each router) and Path #2 bridges to WAN2 (connected to port 3 on each router).
- Client machines connected to the LAN port (which is the original yellow WAN port) on each router. They don’t need any config and get their IP addresses from the router LAN’s DHCP server.
- WAN1 and WAN2 on the router which will run the ss-redir configured to get IP over DHCP. The router which runs the ss-server is configured with static IP and running a DHCP server.
- Very simple adressing:
- LAN on R7000 router: <IP_ADDRESS>/24
- LAN on R7800 router: <IP_ADDRESS>/24
- WAN1 on each router: <IP_ADDRESS>/24
- WAN2 on each router: <IP_ADDRESS>/24
- For the switch and network configuration I attached my examples which might be give some pointers even for different routers. Original and modified
etc/config/network
files included for both devices: R7000 original and modified file, R7800 original and modified file. For applying the modified configs You should SSH into the LEDE and type:# cat > /etc/config/network
And paste the content of the new config. Then press
Ctrl+D
to close the file. For updating the old config:# uci commit network # uci commit
Then reboot the router and You should see the new config running. Don’t forget to connect your cable into the new LAN port!
3. Apply the proxy configuration
Setup for proxy client:
SSH into the proxy-client device with the following command but replace the IP address with your router’s LAN IP (<IP_ADDRESS>
on R7000 and <IP_ADDRESS>
on R7800 in my case). I used R7800 as the proxy client.
$ ssh<EMAIL_ADDRESS>In the root prompt, check if ss-redir and ss-server are available.
# ss-redir
This command maybe runs, maybe drops an error with invalid config path but in both cases is good for us. We create a config file for the ss-redir somewhere. In my case /etc/ss_redir.json
which contains:
{
"server" : ["<IP_ADDRESS>", "<IP_ADDRESS>"],
"server_port" : 8388,
"local_address" : "<IP_ADDRESS>",
"local_port" : 1080,
"password" : "",
"timeout" : 300,
"method" : "none",
"fast_open" : false,
}
You can choose other ciphers as well instead of none
. Check shadowsocks-libev manual on the web for all the available ciphers. I added both WAN IP address of the other router.
Then I opened up /etc/rc.local
and added the following line before the exit 0
line, to start ss-redir when the router boots up:
ss-redir -c /etc/ss_redir.json
For redirecting, all the TCP traffic to ss-redir, add another lines into the /etc/rc.local
. The 4. line is because we don’t want to redirect traffic inside of the LAN.
iptables -t nat -N SSREDIR
iptables -t nat -A PREROUTING -p tcp -j SSREDIR
iptables -t nat -A SSREDIR -d <IP_ADDRESS>/8 -j RETURN
iptables -t nat -A SSREDIR -d <IP_ADDRESS>/24 -j RETURN
iptables -t nat -A SSREDIR -p tcp -j REDIRECT --to-ports 1080
The config for this router has done, reboot it.
Setup for proxy server: SSH into the another router which acts as a proxy server. In my case:
$ ssh<EMAIL_ADDRESS>Then create a configuration file for the ss-server. For example /etc/ss_server.json
:
{
"server" : "<IP_ADDRESS>",
"server_port" : 8388,
"local_address" : "<IP_ADDRESS>",
"local_port" : 1080,
"password" : "",
"timeout" : 300,
"method" : "none",
"fast_open" : false,
}
Add the following line before the exit 0
into the /etc/rc.local
to start ss-server on the router startup:
ss-server -c /etc/ss_server.json
Thats it, reboot the router.
4. Verification of the MPTCP proxy operation
To try out if the testbed works well, just start an iperf3 measurement between the client machines. For example, in my case between the PC and the notebook:
iperf3 -s
on the PC which is connected to the R7800 LAN.
iperf3 -c <IP_ADDRESS>
on the notebook which is connected to the R7000 LAN. The IP address there is my PC’s IP address. If everything works, You should see the sum of the two Wi-Fi bridges throughput. Check the video from my test environment below.
Summary
For more information from the project please check Freifunk blog posts linked below. This page is intended for my Google Summer of Code project summary page. My contributions:
- LEDE fork with MPTCP support, check the git diff which contains my modifications.
- shadowsocks-libev fork shadowsocks-libev-nocrpyto with optional cipher support. Check the git diff for my modifications.
- LEDE feed for my package(s).
- Blog posts on Freifunk blog.
- This manual with the configuration steps and examples.


Node.js Authentication Services
consent
login-aad
Username:
Password:
node-login-ad
Web API Authentication Services
login-ad
Java Authentication Services
Service Providers
who am I?
hello WebAPI
hello WCF
hello Function


Go Shuttle Service
.
Home
Reservation
About Us
Pricing
Contact
Reservation
Reserve your trip between Omaha and Lincoln below


redo - Builds files atomically.
redux redo [OPTION]... [TARGET]...
-?=false: Show help
-d=false: Alias for debug
-debug=false: Print debugging output.
-h=false: Show help
-help=false: Show help
-sh="": Extra arguments for /bin/sh.
-task=false: Run .do script for side effects and ignore output.
-v=false: Alias for verbose
-verbose=false: Be verbose. Repeat for intensity.
The redo command builds files atomically by running a do script asssociated with the target.
redo normally requires one or more target arguments. If no target arguments are provided, redo searches for the script @all.do in the current directory, and runs it if found. %!(EXTRA string=@all, <EMAIL_ADDRESS>This command can be invoked as redux redo
or, through a symlink, as redo
.
A redo target is produced by an sh script whose name has a '.do' file extension and, as such, is called a do script.
For a given target named target.ext
, the corresponding do file may be named, in order of decreasing specificity, target.ext.do
, default.ext.do
or, finally, default.do
.
Redo searches for each of these script files, in order of specificity, starting in the target's directory and moving into parent directories. The search stops when a script is found or when the project root directory has been unsuccessfully searched.
In the latter case, if the target file exists on disk, it is taken to be a source file, not generated by script and its metadata is stored in the database. The file will be subsequently watched for changes.
In the former case, where the script is found, it is assumed to be an sh script and executed with three arguments:
$1 = path to target, relative to do script directory $2 = basename of target without a suffix $3 = temporary file name
The script is executed by /bin/sh with the current working directory (cwd) set to its directory and with stdout opened to a temporary file (which is unnamed and different from $3). It is normally expected to produce output on stdout or write to the file specified by its $3 parameter. It is an error for a script to write to both outputs.
If the script completes successfuly, redo chooses the correct output, renames the temporary file to the target file and updates its database with the new file's metadata record. Since only one of the two temporary files can have content, redo has no trouble selecting the correct one. Conversely, if neither file has content, then either is a valid candidate.
In the do file, which is an sh script, the line
redo-ifchange A B C
specifies the files A, B, and C as prerequisites for the target file.
Similarly, a call to
redo-ifcreate A
specifies that the target should be rebuilt when the non-existent file A appears or is deleted.
As a special case, a do file whose name is prefixed with '@' is run for side effect. redux does not create a temporary file when running such a file and uses '/dev/stdout' as the output file name so its output is visible but is otherwise not saved. While the $3 parameter is provided for consistency, it is an error for a task script to write to it since its output is discarded.
A call to redo without an argument will search for a file named @all.do
in the current directory.
A '@' prefixed task is analogous to a .PHONY
target in make. Any do file can also be run as a task by invoking 'redo' with the '-task' flag.


{:ldf('常见问题','FAQ')}
{:ldf('查看常见问题或者通过左侧窗口进行提问，我们会尽快给您答复。','View common questions or ask questions in the left window,We will give you a reply as soon as possible.')}
{foreach $data as $ss => $slabel}
{/foreach}
{foreach $list[$slabel['type']] as $ol}
{/foreach}
{if !count($list[$slabel['type']])}
{$ol['answer']}
{:ldf('目前还没有提问!','There is no question yet.')}
{/if}


Provides graphical user interface for the packages 'bayesTFR', 'bayesLife' and 'bayesPop'.
| Version: | 2.5-1 |
| Depends: | R (≥ 2.14.2), gWidgets, gWidgetsRGtk2, bayesTFR (≥ 5.0-4), bayesLife (≥ 3.0-1), bayesPop (≥ 6.0-0) |
| Imports: | RGtk2, wpp2015 |
| Suggests: | wpp2012, wpp2010 |
| Published: | 2016-11-22 |
| Author: | Hana Sevcikova |
| Maintainer: | Hana Sevcikova <hanas at uw.edu> |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| URL: | https://bayespop.csss.washington.edu |
| NeedsCompilation: | no |
| Materials: | ChangeLog |
| CRAN checks: | bayesDem results |
| Reference manual: | bayesDem.pdf |
| Package source: | bayesDem_2.5-1.tar.gz |
| Windows binaries: | r-devel: bayesDem_2.5-1.zip, r-release: bayesDem_2.5-1.zip, r-oldrel: bayesDem_2.5-1.zip |
| OS X binaries: | r-release: not available, r-oldrel: not available |
| Old sources: | bayesDem archive |
Please use the canonical form https://CRAN.R-project.org/package=bayesDem to link to this page.


|
Little Heroes
|
This container is used in OnPhotonSerializeView() to either provide incoming data of a PhotonView or for you to provide it. More...
Public Member Functions | |
| PhotonStream (bool write, object[] incomingData) | |
| Creates a stream and initializes it. More... | |
| object | ReceiveNext () |
| Read next piece of data from the stream when isReading is true. More... | |
| object | PeekNext () |
| Read next piece of data from the stream without advancing the "current" item. More... | |
| void | SendNext (object obj) |
| Add another piece of data to send it when isWriting is true. More... | |
| object[] | ToArray () |
| Turns the stream into a new object[]. More... | |
| void | Serialize (ref bool myBool) |
| Will read or write the value, depending on the stream's isWriting value. More... | |
| void | Serialize (ref int myInt) |
| Will read or write the value, depending on the stream's isWriting value. More... | |
| void | Serialize (ref string value) |
| Will read or write the value, depending on the stream's isWriting value. More... | |
| void | Serialize (ref char value) |
| Will read or write the value, depending on the stream's isWriting value. More... | |
| void | Serialize (ref short value) |
| Will read or write the value, depending on the stream's isWriting value. More... | |
| void | Serialize (ref float obj) |
| Will read or write the value, depending on the stream's isWriting value. More... | |
| void | Serialize (ref PhotonPlayer obj) |
| Will read or write the value, depending on the stream's isWriting value. More... | |
| void | Serialize (ref Vector3 obj) |
| Will read or write the value, depending on the stream's isWriting value. More... | |
| void | Serialize (ref Vector2 obj) |
| Will read or write the value, depending on the stream's isWriting value. More... | |
| void | Serialize (ref Quaternion obj) |
| Will read or write the value, depending on the stream's isWriting value. More... | |
Properties | |
| bool | isWriting [get] |
| If true, this client should add data to the stream to send it. More... | |
| bool | isReading [get] |
| If true, this client should read data send by another client. More... | |
| int | Count [get] |
| Count of items in the stream. More... | |
This container is used in OnPhotonSerializeView() to either provide incoming data of a PhotonView or for you to provide it.
The isWriting property will be true if this client is the "owner" of the PhotonView (and thus the GameObject). Add data to the stream and it's sent via the server to the other players in a room. On the receiving side, isWriting is false and the data should be read.
Send as few data as possible to keep connection quality up. An empty PhotonStream will not be sent.
Use either Serialize() for reading and writing or SendNext() and ReceiveNext(). The latter two are just explicit read and write methods but do about the same work as Serialize(). It's a matter of preference which methods you use.
| PhotonStream.PhotonStream | ( | bool | write, |
| object[] | incomingData | ||
| ) |
Creates a stream and initializes it.
Used by PUN internally.
| object PhotonStream.PeekNext | ( | ) |
Read next piece of data from the stream without advancing the "current" item.
| object PhotonStream.ReceiveNext | ( | ) |
Read next piece of data from the stream when isReading is true.
| void PhotonStream.SendNext | ( | object | obj | ) |
Add another piece of data to send it when isWriting is true.
| void PhotonStream.Serialize | ( | ref bool | myBool | ) |
Will read or write the value, depending on the stream's isWriting value.
| void PhotonStream.Serialize | ( | ref int | myInt | ) |
Will read or write the value, depending on the stream's isWriting value.
| void PhotonStream.Serialize | ( | ref string | value | ) |
Will read or write the value, depending on the stream's isWriting value.
| void PhotonStream.Serialize | ( | ref char | value | ) |
Will read or write the value, depending on the stream's isWriting value.
| void PhotonStream.Serialize | ( | ref short | value | ) |
Will read or write the value, depending on the stream's isWriting value.
| void PhotonStream.Serialize | ( | ref float | obj | ) |
Will read or write the value, depending on the stream's isWriting value.
| void PhotonStream.Serialize | ( | ref PhotonPlayer | obj | ) |
Will read or write the value, depending on the stream's isWriting value.
| void PhotonStream.Serialize | ( | ref Vector3 | obj | ) |
Will read or write the value, depending on the stream's isWriting value.
| void PhotonStream.Serialize | ( | ref Vector2 | obj | ) |
Will read or write the value, depending on the stream's isWriting value.
| void PhotonStream.Serialize | ( | ref Quaternion | obj | ) |
Will read or write the value, depending on the stream's isWriting value.
| object [] PhotonStream.ToArray | ( | ) |
Turns the stream into a new object[].
|
get |
Count of items in the stream.
|
get |
If true, this client should read data send by another client.
|
get |
If true, this client should add data to the stream to send it.


Introduction
Welcome to the API documentation for the IOTA Data Marketplace. This provides you with the means to interact with the Marketplace programmatically. All interactions with this API will also effect the user interface, including your stream purchases and the devices you created/delete.
The API exists for two purposes:
- For users who want to consume data streams from devices on the Marketplace
- For users that want to manage their devices on the Marketplace
To get started with the Marketplace API you will need to authenticate yourself with a Google account and get an API key from the website.
Authentication
These are an example of the keys required to use the API:
{
"apiKey": "422c17ca-3f4d-4b6a-be50-51607fe0a324",
"id": "iEG6V9x70oPOMH7PHXfZlpx4VtG2"
}
In order to use the API you will need to get your API key and User ID from the Data Marketplace user dashboard. The dashboard provides a graphical interface for the API in case you aren't comfortable with using this API.
API key
With this key you will be able to administer the devices you own and access the API for general use.
User ID
You will also need your id
in order to attribute purchases to your self.
Consuming data
Get All Devices
const fetch = require('node-fetch');
const sendRequest = async () => {
const response = await fetch('https://api.marketplace.tangle.works/devices');
const json = await response.json();
console.log(json);
}
sendRequest();
The above command returns JSON structured like this:
[
{
"sensorId": "Hello",
"type": "Weather Station",
"value": "82913",
"location": {
"country": "Australia",
"city": "Dianella"
},
"lon": "52.442",
"lat": "-12.32",
"dataTypes": [
{
"id": "temp",
"unit": "c",
"name": "Temperature"
},
{
"name": "Humidity",
"id": "hum",
"unit": "hpa"
}
],
"owner": "OtvxJHA2c5gNvqtwkOA767QrAnE3",
"address": "ZXYZZULDJWZTKFNNPAGIYQCVLCMLGTQEXJYBLEUOLJMLF9MY"
},
{...}
]
This endpoint retrieves all devices.
HTTP Request
GET https://api.marketplace.tangle.works/devices
Create and Fund Wallet
const fetch = require('node-fetch');
const sendRequest = async () => {
const response = await fetch('https://api.marketplace.tangle.works/wallet',
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
userId: 'xlXMajjxTleDwmeIEG9SHddlCM02',
})
});
const json = await response.json();
console.log(json);
}
sendRequest();
The above command returns JSON structured like this:
{
"success" : true
}
This endpoint creates a new wallet and funds it with free IOTA tokens. Please note that Devnet tokens can not be used on the Mainnet or exchanged on any Cryptocurrency exchange platform.
HTTP Request
POST https://api.marketplace.tangle.works/wallet
Query Parameters
| Parameters | Required | Description |
|---|---|---|
| userId | true | Your user ID |
Get User
const fetch = require('node-fetch');
const sendRequest = async () => {
const response = await fetch('https://api.marketplace.tangle.works/user?userId=xlXMajjxTleDwIEG9SHddlCM02');
const json = await response.json();
console.log(json);
}
sendRequest();
The above command returns JSON structured like this:
{
"wallet":{
"seed":"WSNPJGVBXVGCUDYIEXRHTJGZXHHEYDHQRTVMZJKSBEBDPMHPQPIFFEOSBMI9SMWQVVFUXTPFOR9IDMLZG",
"balance":1000000,
"address":"IKBQMFJEJGJYAYMWGUKNREZCLKXMQTQNDXLTQXJATUMWOWDVKRVSLSM9TOYNDJMANM9NCELYCFFDGMMMDOXVS9YURD",
"keyIndex":0
}
}
This endpoint returns data of a given user
HTTP Request
GET https://api.marketplace.tangle.works/user
Query Parameters
| Parameters | Required | Description |
|---|---|---|
| userId | true | Your user ID |
Query Stream
const fetch = require('node-fetch');
const sendRequest = async () => {
const response = await fetch('https://api.marketplace.tangle.works/stream?deviceId=star-wars-test&userId=xlXMajjxTleDwmeIEG9SHddlCM02&time=null');
const json = await response.json();
console.log(json);
}
sendRequest();
If the device stream was not purchased, the above command returns JSON structured like this:
{
"success": false
}
If the device stream was already purchased, the above command returns JSON structured like this:
[
{
"time":1550057296806,
"root":"XXNHWURJOQIYSTAQVBDBVQILNCJQQORZEIWGSSWDXMWQANZWCQLXIEOGICPP9DXVR9KGSZ9MJEGEHFUIX",
"sidekey":"GZ9FKCYWQTBKYSNNM9SZNLLLCMRCCXZPHBIFIXUNCBYSWTLGZUSNAYRXTWXGXTNHKKSWFXSN9LMP9AOVK"
},
{
"time":1550053854946,
"root":"LNYSJXWON9OXFSXSVBK9XGJZRLFQVDKGYBOKVJQYOD9CRSVMOXMDAEDPXBNTKMMQJGQKSYSQDM9TXGPU9",
"sidekey":"MGZHCGKQIINYSGYPWPKPXJTQOAETGDXJWLPKKARZIHUFDYQOFVYVOUMZC99YEMPBNCXSEDPYLLUFD9ZFR"
},
{ ... }
]
This endpoint queries a purchased stream.
This request returns an array of JSON objects, which contain information like MAM stream root and encryption key. This information is used to retrieve data from IOTA Tangle.
The data is retrieved in chunks. To retrieve the next chunk of data, determine the earliest (smallest) value of the time attribute from the response, and send this value as time parameter with the next request
https://api.marketplace.tangle.works/stream?deviceId=star-wars-test&userId=xlXMajjxTleDwmeIEG9SHddlCM02&time=1550053854946
HTTP Request
GET https://api.marketplace.tangle.works/stream
Query Parameters
| Parameters | Required | Description |
|---|---|---|
| userId | true | Your user ID |
| deviceId | true | The ID of the device's stream you'd like access to. |
| time | false | Timestamp of the first data package. Default is null |
Purchase Stream
const fetch = require('node-fetch');
const sendRequest = async () => {
const response = await fetch('https://api.marketplace.tangle.works/purchaseStream',
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
userId: '76D1ppAqXNOYPDCsEm9tAj5rPhG3',
deviceId: 'star-wars'
})
});
const json = await response.json();
console.log(json);
}
sendRequest();
The above command returns JSON structured like this:
{
"success" : true
}
This endpoint purchases access for a user.
HTTP Request
POST https://api.marketplace.tangle.works/purchaseStream
Query Parameters
| Parameters | Required | Description |
|---|---|---|
| userId | true | Your user ID |
| device | true | The ID of the device's stream you'd like access to. |
Managing Devices
Create New Device
const fetch = require('node-fetch');
const sendRequest = async () => {
const response = await fetch('https://api.marketplace.tangle.works/newDevice',
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
apiKey: 'aaaaaaa-0b7a-4e44-7777-ef661777b9d2',
id: 'star-wars-test',
device: {
owner: 'R7zlZYlhSGKDJ5KKZrw6sJ4CQvG2',
sensorId: 'star-wars',
type: 'Star Wars Vehicle',
company: 'Galactic Empire Inc.',
price: '100',
date: '14 February, 2019 11:16 am',
inactive: true,
dataTypes: [
{ id: 'name', name: 'Vehicle Name', unit: 'name' },
{ id: 'model', name: 'Vehicle Model', unit: 'model' },
{ id: 'class', name: 'Vehicle Class', unit: 'class' },
{ id: 'manufacturer', name: 'Vehicle Manufacturer', unit: 'manufacturer' }
],
location:{
city: 'Theed',
country: 'Naboo'
},
lat: 40,
lon: 20
}
})
});
const json = await response.json();
console.log(json);
}
sendRequest();
The above command returns JSON structured like this:
{
"success" : true
}
This endpoint creates a new device for a given user.
HTTP Request
POST https://api.marketplace.tangle.works/newDevice
Query Parameters
| Parameters | Required | Description |
|---|---|---|
| apiKey | true | Your API Key |
| id | true | The proposed ID of your device |
| device | true | A fully formed device object |
Publish Data Packet
const fetch = require('node-fetch');
const crypto = require('crypto');
const Mam = require('@iota/mam');
const { asciiToTrytes } = require('@iota/converter');
// Initialise MAM State
let mamState = Mam.init('https://testnet140.tangle.works'); // IOTA Node
// Random Key Generator
const generateRandomKey = length => {
const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ9';
const values = crypto.randomBytes(length);
return Array.from(new Array(length), (x, i) => charset[values[i] % charset.length]).join('');
};
// Publish to Tangle
const publishData = async payload => {
const time = Date.now();
const packet = { time, data: { ...payload } };
// Change MAM encryption key on each loop
let mamKey = generateRandomKey(81);
// Set channel mode & update key
mamState = Mam.changeMode(mamState, 'restricted', mamKey);
// Create Trytes
const trytes = asciiToTrytes(JSON.stringify(packet));
// Get MAM payload
const message = Mam.create(mamState, trytes);
// Save new mamState
mamState = message.state;
// Attach the payload.
await Mam.attach(message.payload, message.address);
// Store encryption key in Firebase
await storeKey({ sidekey: mamKey, root: message.root, time });
};
const storeKey = async packet => {
const response = await fetch('https://api.marketplace.tangle.works/newData',
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
id: 'star-wars-test',
sk: 'IGLDKSJSJGKFXA', // secret key of your device
packet
})
});
const json = await response.json();
console.log(json);
}
publishData({ message: 'my test payload' })
The above command returns JSON structured like this:
{
"success" : true
}
This endpoint publishes new MAM event for a given device.
HTTP Request
POST https://api.marketplace.tangle.works/newData
Query Parameters
| Parameters | Required | Description |
|---|---|---|
| device | true | The ID of the device's stream you are publishing to. |
| sk | true | Device's secret key (sk) |
| packet | true | A fully formed packet including time (timestamp ) and "restricted" mode MAM root and sidekey |
Get User Devices
const fetch = require('node-fetch');
const sendRequest = async () => {
const response = await fetch('https://api.marketplace.tangle.works/devices?userId=xlXMajjxTleDwIEG9SHddlCM02&apiKey=1111-gfgfdfg-46467-dsbhsjs-jgu');
const json = await response.json();
console.log(json);
}
sendRequest();
The above command returns JSON structured like this:
[
{
"lon":20,
"location":{
"city":"Theed",
"country":"Naboo"
},
"company":"Galactic Empire Inc.",
"type":"Star Wars Vehicle",
"date":"13 February, 2019 11:16 am ",
"price":"100",
"timestamp":1550053001462,
"lat":40,
"sensorId":"star-wars",
"address":"YTGYEHBMEYPLIROTWBTLVZPOLJLXHNF9RXUPBGHSWGISAVIVEX9EHBMDVYYI9UEZ9UQJBCMXFGXNUKIWW",
"inactive":true,
"owner":"76D1ppAqXNOYPDCsEm9tAj5rPhG3",
"dataTypes":[
{
"id":"name",
"unit":"name",
"name":"Vehicle Name"
},
{
"name":"Vehicle Model",
"id":"model",
"unit":"model"
},
{
"name":"Vehicle Class",
"id":"class",
"unit":"class"
},
{
"id":"manufacturer",
"unit":"manufacturer",
"name":"Vehicle Manufacturer"
}
],
"sk":"IHOHDLGKDLSJJXA"
},
{ ... }
]
This endpoint returns all devices created by given used.
HTTP Request
GET https://api.marketplace.tangle.works/devices
Query Parameters
| Parameters | Required | Description |
|---|---|---|
| userId | true | Your user ID |
| apiKey | true | Your API key |
Remove Device
const fetch = require('node-fetch');
const sendRequest = async () => {
const response = await fetch('https://api.marketplace.tangle.works/delete',
{
method: 'DELETE',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
apiKey: 'aaaaaaa-0b7a-4e44-7777-ef661777b9d2',
deviceId: 'star-wars-test',
})
});
const json = await response.json();
console.log(json);
}
sendRequest();
The above command returns JSON structured like this:
{
"success" : true
}
This endpoint removes a device from the database.
HTTP Request
DELETE https://api.marketplace.tangle.works/delete
Query Parameters
| Parameters | Required | Description |
|---|---|---|
| apiKey | true | Your API key |
| deviceId | true | The ID of the device's stream you'd like access to. |
Errors
The Kittn API uses the following error codes:
| Error Code | Meaning |
|---|---|
| 400 | Bad Request -- Your request sucks |
| 401 | Unauthorized -- Your API key is wrong |
| 403 | Forbidden -- The kitten requested is hidden for administrators only |
| 404 | Not Found -- The specified kitten could not be found |
| 405 | Method Not Allowed -- You tried to access a kitten with an invalid method |
| 406 | Not Acceptable -- You requested a format that isn't json |
| 410 | Gone -- The kitten requested has been removed from our servers |
| 418 | I'm a teapot |
| 429 | Too Many Requests -- You're requesting too many kittens! Slow down! |
| 500 | Internal Server Error -- We had a problem with our server. Try again later. |
| 503 | Service Unavailable -- We're temporarially offline for maintanance. Please try again later. |


Spanner
Spanner is Google’s globally distributed NewSQL database, the successor to BigTable. Google describes Spanner as not a pure relational system because each table must have a primary-key column.
Currently, F1, Google’s advertisement platform, uses Spanner. Gmail and Google Search will also use it soon.
NewSQL VS. NoSQL
NewSQL, a wholly different database architecture, differentiated from NoSQL, is beginning to emerge.
NoSQL
There are many reasons why NoSQL products have been popular. As there are a variety of NoSQL products. As you can see in Hadoop or Cassandra, main advantages of NoSQL is its horizontal scalability.
As these NoSQL products don’t provide Strong Consistency, they cannot be used where high-level data consistency is required.
NewSQL
NewSQL has as excellent scalability as NoSQL, and at the same time it guarantees ACID like RDBMS which is performed in a single node.
What is Spanner?
Spanner is a NewSQL created by Google. It is a distributed relational database that can distribute and store data in Google’s BigTable storage system in multiple data centers. Spanner meets ACID (of course, it supports transaction) and supports SQL.
Data R/W eff: When you read data, Spanner connects you to the data center that is geographically closest to you, and when you write data, it distributes and stores it to multiple data centers.
Failure: If the data center you try to access has a failure, of course, you can read the data from another data center that has a replica of the data (in US, 5 replica).
The Spanner client automatically performs a failover between replicas. When the number of servers storing data is changed or a failure occurs in equipment, Spanner automatically re-distributes data through data transfer among the equipments.
More details of Spanner: will come later.


Posts Criterion A dive into Criterion internals and Haskell performance Heap View Adding heap introspection to GHC Dependencies The search for organization and stability in code


Coronation Street's Brooke Vincent broke down in tears and felt 'ashamed' of her post-baby body
Brooke gave birth last month
by Charlotte RodriguesActress Brooke Vincent broke down in tears and felt "ashamed" after trying on "23 outfits" following her pregnancy, but none of them fitted.
The Coronation Street star was hoping her old jeans would "instantly fit" and she would be back to her "old self" but with her newborn baby Mexx by her side, but she was left disappointed that she couldn't get into numerous articles of her pre-pregnancy clothing.
Sharing a picture of herself in watermelon pyjamas, she wrote on Instagram: "Tonight I was supposed to look completely different, I was supposed to be dressed up, hair and makeup done ready to eat some nice food and maybe have my first cocktail in 11 months with Kean, our first time away from Mexx for an hour or two, instead I look like this.
"I look like this because I naively thought that 4 weeks after my baby I would be in all my old clothes looking exactly like I did before I got pregnant.
"I thought my jeans would instantly fit and I would just be my 'old self' only with my new beautiful baby.
"How wrong I was, I tried 23 outfits on at least, nothing looked right, nothing looked like me and I felt like I was looking at a completely different person, I suppose to a certain extent I now am, I am Mexx's mum.
"I sat and cried and felt ashamed that I haven’t just been able to pick up where I left off like people seem to do here on Instagram!"
Read More: Coronation Street viewers distracted by Ed Bailey's voice
Brooke has urged other new mums who feel the same not to beat themselves up, admitting the most important thing is that she and her four-week-old baby are "healthy and happy".
She added: "The reason for this post is that even when you're in this bizarre industry you still get sucked in, you still feel a certain way when you see others posts.
"So this was so important for me to say, for all the women who think they should look, act or feel a certain way after a baby DON'T!
"Do you and if 4/6/8 weeks or even a year after giving birth you don’t fit in your old clothes don't worry, you can always join my club. It's important to be honest because being a new mummy is daunting enough!
"The most important thing is me and Mexx are healthy and happy and as soon as my baby boy looked at me, I realised he doesn't care if I fit in my old jeans or not... So I guess creased watermelon PJs and slippers for now it is."
Read More: Coronation Street SPOILERS: Fiz and Tyrone's kids 'are taken into care'
Celebrities and co-stars rushed to support Brooke.

 Love you."
Emmerdale actress Charley Webb, who plays Debbie Dingle, wrote: "You're a beauty inside and out." Hollyoaks' Cleo McQueen actress Nadine Mulkerrin, who also gave birth to her first baby recently said: "Love this post! And you're doing amazing mumma x."
Brooke took to Instagram last month to reveal she had welcomed her and significant other Kean Bryan's son into the world on October 23.
Leave us a comment on our Facebook page @EntertainmentDailyFix and let us know what you think!


The default material used by [page:Points].
const vertices = [];
for ( let i = 0; i < 10000; i ++ ) {
const x = THREE.MathUtils.randFloatSpread( 2000 );
const y = THREE.MathUtils.randFloatSpread( 2000 );
const z = THREE.MathUtils.randFloatSpread( 2000 );
vertices.push( x, y, z );
}
const geometry = new THREE.BufferGeometry();
geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( vertices, 3 ) );
const material = new THREE.PointsMaterial( { color: 0x888888 } );
const points = new THREE.Points( geometry, material );
scene.add( points );
[example:misc_controls_fly misc / controls / fly]
[example:webgl_buffergeometry_drawrange WebGL / BufferGeometry / drawrange]
[example:webgl_buffergeometry_points WebGL / BufferGeometry / points]
[example:webgl_buffergeometry_points_interleaved WebGL / BufferGeometry / points / interleaved]
[example:webgl_camera WebGL / camera ]
[example:webgl_geometry_convex WebGL / geometry / convex]
[example:webgl_geometry_shapes WebGL / geometry / shapes]
[example:webgl_interactive_raycasting_points WebGL / interactive / raycasting / points]
[example:webgl_multiple_elements_text WebGL / multiple / elements / text]
[example:webgl_points_billboards WebGL / points / billboards]
[example:webgl_points_dynamic WebGL / points / dynamic]
[example:webgl_points_sprites WebGL / points / sprites]
[page:Object parameters] - (optional) an object with one or more
properties defining the material's appearance. Any property of the
material (including any property inherited from [page:Material]) can be
passed in here.
The exception is the property [page:Hexadecimal color], which can be
passed in as a hexadecimal string and is `0xffffff` (white) by default.
[page:Color.set]( color ) is called internally.
See the base [page:Material] class for common properties.
The alpha map is a grayscale texture that controls the opacity across the
surface (black: fully transparent; white: fully opaque). Default is
null.
Only the color of the texture is used, ignoring the alpha channel if one
exists. For RGB and RGBA textures, the [page:WebGLRenderer WebGL] renderer
will use the green channel when sampling this texture due to the extra bit
of precision provided for green in DXT-compressed and uncompressed RGB 565
formats. Luminance-only and luminance/alpha textures will also still work
as expected.
[page:Color] of the material, by default set to white (0xffffff).
Whether the material is affected by fog. Default is `true`.
Sets the color of the points using data from a [page:Texture]. May optionally include an alpha channel, typically combined with [page:Material.transparent .transparent] or [page:Material.alphaTest .alphaTest].
Defines the size of the points in pixels. Default is `1.0`.
Will be capped if it exceeds the hardware dependent parameter
[link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/getParameter gl.ALIASED_POINT_SIZE_RANGE].
Specify whether points' size is attenuated by the camera depth. (Perspective camera only.) Default is true.
See the base [page:Material] class for common methods.
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]


Although production has increased over the years, the number of people employed in manufacturing has been on a constant decline. Given an average blue collar salary of $31,400 and a corporate income tax of 15%, the lost revenue from income tax was $25,000,000,000 in 2010 given 5.6 million at $4,400 per person each year.
RoboTax estimates a required yearly tax on an automated system given information on replaced employees. The estimation is designed to raise tax revenue and compensate for lower income tax as robots and algorithms replace workers.
Old employee yearly taxes divided by productivity is equal to taxes on automation and new hires divided by productivity of the automation.


I’m a 30-year-old vibrant female persuing a career change to web development. Currently I’m enrolled in the Full Stack Flex Coding Bootcamp through the University of Minnesota. The program teaches the MERN stack and I’ll graduate in May 2021. When I’m not in class or studying, I enjoy trail running with my dog, cooking, snowboarding, or catching up on reality TV shows.
By day, I’m a Software Implementation Specialist for a global media software company, Naviga. I started with this company in February of 2014 as a support analyst. I loved support because I was able to help clients resolve their issues, but I still had a craving for making a bigger difference in the world. In July 2015 I quit my job and moved to Costa Rica to volunteer teach English at a small non-profit learning center. I fell in love with the children and adults who were bettering themselves each day by choosing to actively learn English with me. I also fell in love with the lush, green mountains and agricultural landscape of the small town I lived in. I stayed in Costa Rica until March 2020 when Covid-19 forced me back.
While living in Costa Rica, I was fortunate to regain my position with Naviga and worked part-time in support from December 2015-February 2020. Due to the diminishing newspaper industry, I was laid off, but thankfully only for a short 6-week period. I was able to rejoin the company when a deal to merge two of the biggest newspaper companies in the US, Gannett and GateHouse, was signed in April 2020. Now that I’m in implementation, I work with the clients to transfer their existing data into a new, consolidated database. This mostly includes translations of setup to a standardized setup that can easily be sustained by a centralized team. It’s a complicated and new situation for all involved but results in a more efficient and standardized database that will require less upkeep in the long run.
Upon graduating the coding bootcamp, I'll have new knowledge about website development that I can use with my existing knowledge of software development. This will allow me to be fully prepared to seek new employment as full-stack developer for a software company, or otherwise. Regardless of where I find myself after the bootcamp, I'll always keep striving to make a positive impact in this crazy world.


open class StageBase : Stage
Parent class for Scene2D stage classes
Provides easier access to certain game properties and auto-disposable RxKotlin subscription.
| <init> |
StageBase(game: GameCore)
Parent class for Scene2D stage classes |
| assets |
val assets: Assets |
| messages |
val messages: SerializedSubject<Any, Any> |
| state |
val state: State |
| style |
val style: Styles |
| subscription |
val subscription: CompositeSubscription |
| dispose |
open fun dispose(): Unit |
| hide |
open fun hide(): Unit |
| show |
open fun show(): Unit |
| plusAssign |
operator fun Stage.plusAssign(actor: Actor): Unit
Adds an actor to the stage |
| ConnectStage |
class ConnectStage : StageBase
Stage with [ServersGroup] and [RoomsGroup] |
| GameStage |
class GameStage : StageBase
Stage with [PlayGroup] and [ScoresAndChatGroup] |
| SplashStage |
class SplashStage : StageBase
Stage with splash picture |


“Lahuko vata me kāyo,
Phuṭṭho ca pītisukhena vipulena;
Tūlamiva eritaṁ mālutena,
Pilavatīva me kāyo”ti.
… Khitako thero ….
Hey! My body is light,
full of so much rapture and happiness.
My body feels like it’s floating,
like cotton in the wind.


{% extends '_layout.html' %} {% block body %}
You may have come here since you mistyped or whatever. Go to the homepage
To see valid links within this site.


<script src="RGraph.common.core.js"></script> <script src="RGraph.bipolar.js"></script>Put this where you want the chart to show up:
<canvas id="cvs" width="600" height="450"> [No canvas support] </canvas>This is the code that generates the chart - it should be placed AFTER the canvas tag(s):


What's this?
A command line tool for customizing WebHostingHub Glyphs. And a Bower repository as well!
Installation steps & documentation
Head over to the GitHub repository in order to read all our documentation for now.
Available Icons
TODO.
A command line tool for customizing WebHostingHub Glyphs. And a Bower repository as well!
Head over to the GitHub repository in order to read all our documentation for now.
TODO.


| createProjectTemplate {rstudioapi} | R Documentation |
Create a project template. See https://rstudio.github.io/rstudio-extensions/rstudio_project_templates.html for more information.
createProjectTemplate( package = ".", binding, title, subtitle = paste("Create a new", title), caption = paste("Create", title), icon = NULL, open_files = NULL, overwrite = FALSE, edit = TRUE )
package |
The path to an package sources. |
binding |
The skeleton function to associate with this project template. This is the name of the function that will be used to initialize the project. |
title |
The title to be shown within the New Project... wizard. |
subtitle |
(optional) The subtitle to be shown within the New Project... wizard. |
caption |
(optional) The caption to be shown on the landing page for this template. |
icon |
(optional) The path to an icon, on disk, to be used in the
dialog. Must be an |
open_files |
(optional) Files that should be opened by RStudio when the project is generated. Shell-style globs can be used to indicate when multiple files matching some pattern should be opened – for example, OpenFiles: R/*.R would indicate that RStudio should open all .R files within the R folder of the generated project. |
overwrite |
Boolean; overwrite a pre-existing template file if one exists? |
edit |
Boolean; open the file for editting after creation? |


This tool will add PayPal "buy now" or "add to cart" buttons into the captions of your photos. For more information about this tool, and some important notes, please read the description of this tool on my website.
Log in to your PayPal account. Click on the "Merchant Services" tab, then click on the "Buy Now buttons" link on the right.
In Step 1, change the "button type" to "buy now" (if you only want one item per order) or "shopping cart" (recommended).
Enter something in both the "item name" and "item ID" boxes. These values will later be replaced by the details of the photo your customer selected.
If you are offering multiple photo sizes or multiple product options, tick one of the "add drop-down menu" options and fill in the details you want displayed. Otherwise just enter the price for your single product. Sorry, the "add a text field" option is not supported.
Enter your shipping and tax information. Choose the option to use your secure merchant account ID.
In Step 2, untick the option to "save button at PayPal".
Now click "Create Button". On the next screen that appears, click the link "remove code protection".
Finally, copy the code from the code box and paste it into the text box in the next section of this page.
If you are creating an "add to cart" button, you will also want to create a "view cart" button so that your visitors can view the contents of their PayPal cart. Just after creating the "add to cart" button, you will see this banner at the bottom of the page:
Click on "create a view cart button". Choose the display options you like, then click "create button". Click the link "remove code protection". Now copy the HTML code from the box that appears. In the SmugMug customiser for your gallery, create an HTML block to hold the View Cart button, and paste the HTML code into it.
For some ideas about where to place the View Cart button on your gallery page, please check out the information on my website.
Click on any image to select it, click it again to deselect it.
This will add PayPal buttons to the captions of each of the photos you have selected, replacing any PayPal buttons that might have been there already.


{% extends "user_mailer/base.html" %} {% load uni_form_tags %} {% block body %}
Email templates are created via admin for now.


# (c) 2012, Michael DeHaan<EMAIL_ADDRESS>#
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import os
from ansible.plugins.action import ActionBase
[docs]class ActionModule(ActionBase):
TRANSFERS_FILES = True
[docs] def run(self, tmp=None, task_vars=None):
''' handler for file transfer operations '''
if task_vars is None:
task_vars = dict()
result = super(ActionModule, self).run(tmp, task_vars)
if self._play_context.check_mode:
result['skipped'] = True
result['msg'] = 'check mode not supported for this module'
return result
remote_user = task_vars.get('ansible_ssh_user') or self._play_context.remote_user
if not tmp:
tmp = self._make_tmp_path(remote_user)
self._cleanup_remote_tmp = True
creates = self._task.args.get('creates')
if creates:
# do not run the command if the line contains creates=filename
# and the filename already exists. This allows idempotence
# of command executions.
if self._remote_file_exists(creates):
self._remove_tmp_path(tmp)
return dict(skipped=True, msg=("skipped, since %s exists" % creates))
removes = self._task.args.get('removes')
if removes:
# do not run the command if the line contains removes=filename
# and the filename does not exist. This allows idempotence
# of command executions.
if not self._remote_file_exists(removes):
self._remove_tmp_path(tmp)
return dict(skipped=True, msg=("skipped, since %s does not exist" % removes))
# the script name is the first item in the raw params, so we split it
# out now so we know the file name we need to transfer to the remote,
# and everything else is an argument to the script which we need later
# to append to the remote command
parts = self._task.args.get('_raw_params', '').strip().split()
source = parts[0]
args = ' '.join(parts[1:])
if self._task._role is not None:
source = self._loader.path_dwim_relative(self._task._role._role_path, 'files', source)
else:
source = self._loader.path_dwim_relative(self._loader.get_basedir(), 'files', source)
# transfer the file to a remote tmp location
tmp_src = self._connection._shell.join_path(tmp, os.path.basename(source))
self._transfer_file(source, tmp_src)
# set file permissions, more permissive when the copy is done as a different user
self._fixup_perms(tmp, remote_user, execute=True, recursive=True)
# add preparation steps to one ssh roundtrip executing the script
env_string = self._compute_environment_string()
script_cmd = ' '.join([env_string, tmp_src, args])
result.update(self._low_level_execute_command(cmd=script_cmd, sudoable=True))
# clean up after
self._remove_tmp_path(tmp)
result['changed'] = True
return result