Harmony Core Key Segment Loop Extensions
Expansion Tokens
<HARMONYCORE_SEGMENT_DATATYPE>
If the field associated with the current key segment has a custom data type (as signified by the presence of a special token in the format of HARMONYCORE_CUSTOM_FIELD_DATATYPE=type;) then that custom data type is inserted. Otherwise the fields actual Synergy .NET data type (<SEGMENT_SNTYPE>) is inserted.
Alternate forms: none
Expressions
<IF HARMONYCORE_CUSTOM_SEGMENT_DATATYPE>
Tests whether the field associated with the current key segment has a custom data type (as signified by the presence of a special token in the format of HARMONYCORE_CUSTOM_FIELD_DATATYPE=type;)
Copyright © 2021 Synergex International, Inc.


public class UriAdapter extends java.lang.Object implements UriAssoc, AutoCloseable
UriAssoc
but it hides all physical systems and protocols (file system, compressed file, HTTP, database, etc.).
Actually, programmers should use this class for processing (creating, copying, renaming, deleting, getting reader, getting writer, etc.) on objects identified by URI, instead of implementing UriAssoc
.
The completion level of UriAdapter
is higher than the completion level of UriAssocDefault
.
UriAdapter
is the most complete URI associator and it can use other URI associators for different physical systems and protocols.
Concretely, the internal variable assoc
refers to other URI associators.
In current implementation, UriAdapter
uses UriAssocDefault
in default case and UriAdapter
does not support FTP protocol yet.
As a convention, UriAdapter
is also called URI adapter.| Modifier and Type | Class and Description |
|---|---|
static class |
UriAdapter.AdapterReader
This class is the
Reader (for reading operations on archives identified by URI) with support of URI adapter UriAdapter . |
static class |
UriAdapter.AdapterWriteChannel
This class is the
ByteChannel (for both writing and reading operations on archives identified by URI) with support of URI adapter UriAdapter . |
static class |
UriAdapter.AdapterWriter
This class is the
Writer (for writing operations on archives identified by URI) with support of URI adapter UriAdapter . |
| Modifier and Type | Field and Description |
|---|---|
protected UriAssoc |
assoc
This is the internal variable
assoc refers to other URI associators for different storage systems and protocols. |
| Constructor and Description |
|---|
UriAdapter()
Default construction with current directory (.) in file system.
|
UriAdapter(DataConfig config)
Construction with specified configuration.
|
UriAdapter(java.lang.String urispec)
Construction with specified URI connection string.
|
UriAdapter(xURI uri)
Construction with specified URI.
|
| Modifier and Type | Method and Description |
|---|---|
xURI |
chooseDefaultUri(java.awt.Component comp,
boolean open,
xURI curStore)
This method is similar to the method
UriAssoc.chooseUri(Component, boolean, String[], String[], xURI) when it also allows users to select object except that it only lists default objects for choice. |
xURI |
chooseStore(java.awt.Component comp)
This method shows choice dialog allowing users to select only store (directory).
|
xURI |
chooseUri(java.awt.Component comp,
boolean open,
java.lang.String[] exts,
java.lang.String[] descs,
xURI curStore)
This method shows a graphic user interface (GUI) allowing users to select object (archive-file, store-directory) they want.
|
boolean |
clearContent(xURI uri,
UriFilter filter)
Clearing content of the object identified by specified URI with regard to specified filter.
|
void |
close()
The main method of this interface, which is responsible for releasing resources occupied by auto-closable object.
|
boolean |
connect(DataConfig config)
Initializing an URI associator by connecting to a URI based on a configuration.
|
boolean |
connect(java.lang.String urispec)
Initializing an URI associator by connecting to the specified URI connection string.
|
boolean |
connect(xURI uri)
Initializing an URI associator by connecting to the specified URI.
|
boolean |
copy(xURI src,
xURI dst,
boolean moved,
UriFilter filter)
Copying the object from source URI to destination URI with regard to specified filter.
|
boolean |
create(xURI uri,
boolean isStore)
Creating an object identified by specified URI.
|
boolean |
delete(xURI uri,
UriFilter filter)
Deleting the object identified by specified URI with regard to specified filter.
|
boolean |
exists(xURI uri)
Checking whether the specified URI exists.
|
protected void |
finalize() |
java.io.InputStream |
getInputStream(xURI uri)
Retrieving the input stream of the resource object identified by specified URI.
|
java.io.OutputStream |
getOutputStream(xURI uri,
boolean append)
Retrieving the output stream of the object identified by specified URI.
|
java.nio.channels.ByteChannel |
getReadChannel(xURI uri)
Retrieving the read
ByteChannel of the resource object identified by specified URI. |
java.io.Reader |
getReader(xURI uri)
Retrieving the
Reader of the resource object identified by specified URI. |
xURI |
getStoreOf(xURI uri)
Getting the store (directory) of the resource object referred by the specified URI.
|
java.util.List<xURI> |
getUriList(xURI store,
UriFilter filter)
Retrieving the list of URI (s) referring objects inside the specified store with regard to specified filter.
|
java.nio.channels.ByteChannel |
getWriteChannel(xURI uri,
boolean append)
Retrieving the writing
ByteChannel of the resource object identified by specified URI. |
java.io.Writer |
getWriter(xURI uri,
boolean append)
Retrieving the
Writer of the resource object identified by specified URI. |
boolean |
isArchive(xURI uri)
Checking whether the specified URI is "archive".
|
boolean |
isStore(xURI uri)
Checking whether the specified URI is "store".
|
DataConfig |
makeFlatDataConfig(xURI ratingsUri)
Given a store (directory) that contains objects (units) of data set in which rating matrix is the most important one.
|
java.nio.file.Path |
newPath(java.lang.String path)
Creating a new
Path from specified string of path. |
java.nio.file.Path |
newPath(xURI uri)
Creating a new
Path from specified URI. |
static java.lang.String |
packageSlashToDot(java.lang.String slashPackage)
Given slash package "java/lang/annotation" or "java\lang\annotation", this method converts such slash package into normal dot package "java.lang.annotation".
|
java.util.List<java.lang.StringBuffer> |
readLines(xURI uri)
Reading text from the archive (file) in line-by-line manner.
|
java.lang.StringBuffer |
readText(xURI uri)
Reading text from the archive (file) identified by URI by optimal way.
|
boolean |
rename(xURI src,
xURI dst)
Copying and renaming the object from source URI to destination URI.
|
boolean |
saveText(xURI uri,
java.lang.String content,
boolean append)
Saving (writing) text to the archive (file) identified by URI by optimal way.
|
void |
uriListProcess(xURI store,
UriFilter filter,
UriProcessor processor)
Firstly, this method retrieves a list of URI (s) referring objects inside the specified store with regard to specified filter.
|
protected UriAssoc assoc
assoc
refers to other URI associators for different storage systems and protocols.
In default case, this variable refers to UriAssocDefault
.public UriAdapter(DataConfig config)
config
- Specified configurationpublic UriAdapter(xURI uri)
uri
- Specified URIpublic UriAdapter(java.lang.String urispec)
urispec
- Specified URI connection stringpublic UriAdapter()
public boolean connect(DataConfig config)
UriAssoc
public boolean connect(xURI uri)
uri
- specified URIpublic boolean connect(java.lang.String urispec)
urispec
- URI connection stringpublic java.nio.file.Path newPath(xURI uri)
UriAssoc
Path
from specified URI.public java.nio.file.Path newPath(java.lang.String path)
UriAssoc
Path
from specified string of path.public boolean exists(xURI uri)
UriAssoc
public boolean isStore(xURI uri)
UriAssoc
public boolean isArchive(xURI uri)
UriAssoc
public boolean create(xURI uri, boolean isStore)
UriAssoc
public boolean clearContent(xURI uri, UriFilter filter)
UriAssoc
clearContent
in interface UriAssoc
uri
- Specified URIfilter
- Specified filter represented by UriFilter
public boolean delete(xURI uri, UriFilter filter)
UriAssoc
public boolean copy(xURI src, xURI dst, boolean moved, UriFilter filter)
UriAssoc
public boolean rename(xURI src, xURI dst)
UriAssoc
public java.util.List<xURI> getUriList(xURI store, UriFilter filter)
UriAssoc
getUriList
in interface UriAssoc
store
- The store containing retrieved objects.filter
- Specified filter represented by UriFilter
public java.io.InputStream getInputStream(xURI uri)
UriAssoc
getInputStream
in interface UriAssoc
uri
- Specified URIpublic java.io.OutputStream getOutputStream(xURI uri, boolean append)
UriAssoc
getOutputStream
in interface UriAssoc
uri
- Specified URIappend
- Whether or not "append" mode is applied for writing. In "append" mode, content is added continuously to the end of the archive (file). Otherwise, the archive (file) is made empty and then content is put into the archive (file) from beginning.public java.io.Reader getReader(xURI uri)
UriAssoc
Reader
of the resource object identified by specified URI. Such Reader
is used for reading later.public java.io.Writer getWriter(xURI uri, boolean append)
UriAssoc
Writer
of the resource object identified by specified URI. Such Writer
is used for writing later.getWriter
in interface UriAssoc
uri
- specified URI of the resource object.append
- Whether or not "append" mode is applied for writing. In "append" mode, content is added continuously to the end of the archive (file). Otherwise, the archive (file) is made empty and then content is put into the archive (file) from beginning.Writer
of the resource object identified by specified URIpublic java.nio.channels.ByteChannel getReadChannel(xURI uri)
UriAssoc
ByteChannel
of the resource object identified by specified URI. Such read ByteChannel
is used for reading later.getReadChannel
in interface UriAssoc
uri
- specified URI of the resource object.ByteChannel
of the resource object identified by specified URI.public java.nio.channels.ByteChannel getWriteChannel(xURI uri, boolean append)
UriAssoc
ByteChannel
of the resource object identified by specified URI. Such read ByteChannel
is used for reading later.getWriteChannel
in interface UriAssoc
uri
- specified URI of the resource object.append
- Whether or not "append" mode is applied for writing. In "append" mode, content is added continuously to the end of the archive (file). Otherwise, the archive (file) is made empty and then content is put into the archive (file) from beginning.ByteChannel
of the resource object identified by specified URI.public xURI getStoreOf(xURI uri)
UriAssoc
getStoreOf
in interface UriAssoc
uri
- specified URI.public xURI chooseUri(java.awt.Component comp, boolean open, java.lang.String[] exts, java.lang.String[] descs, xURI curStore)
UriAssoc
chooseUri
in interface UriAssoc
comp
- The graphic user interface (GUI) component works as a parent component of choice dialog.open
- If true then, choice dialog is open dialog allowing users to choose and open files. Otherwise, choice dialog is save dialog allowing users to choose and save objects.exts
- The specified array of archive (file) extensions which are used to filter objects that users select, for example, "*.hdp", "*.xls". Each extension has a description. The respective array of extension descriptions is specified by the parameter descs
.descs
- The specified array of descriptions, for example, "Hudup file", "Excel 97-2003". Note that each extension has a description and the respective array of file extensions is represented by the parameter exts
.curStore
- Current store (directory) to open choice dialogxURI
of chosen object.public xURI chooseDefaultUri(java.awt.Component comp, boolean open, xURI curStore)
UriAssoc
UriAssoc.chooseUri(Component, boolean, String[], String[], xURI)
when it also allows users to select object except that it only lists default objects for choice.
In current implementation, defaults objects are archives (files) having extensions: "*.*" (all files), "*.hdp" (Hudup files), and "*.xls" (97-2003 Excel files).chooseDefaultUri
in interface UriAssoc
comp
- The graphic user interface (GUI) component works as a parent component of choice dialog.open
- If true then, choice dialog is open dialog allowing users to choose and open files. Otherwise, choice dialog is save dialog allowing users to choose and save objects.curStore
- Current store (directory) to open choice dialog.xURI
of chosen object.public xURI chooseStore(java.awt.Component comp)
UriAssoc
chooseStore
in interface UriAssoc
comp
- The graphic user interface (GUI) component works as a parent component of choice dialog.xURI
of chosen store (directory).public DataConfig makeFlatDataConfig(xURI ratingsUri)
DataConfig
with full of units (user profile, item profile, rating matrix, etc.) from the specified URI of rating matrix.ratingsUri
- Specified URI of rating matrix.DataConfig
with full of units (user profile, item profile, rating matrix, etc.).public void uriListProcess(xURI store, UriFilter filter, UriProcessor processor)
UriProcessor
is responsible for doing such task.
In current implementation, this method calls UriAssocAbstract.uriListProcess(UriAssoc, xURI, UriFilter, UriProcessor)
.store
- URI of specified store.filter
- Specified filter represented by UriFilter
.processor
- Specified UriProcessor
is responsible for doing such task on the object referred by each retrieved URI.public java.lang.StringBuffer readText(xURI uri)
uri
- URI of specified archive (file).StringBuffer
containing text from specified archive (file).public java.util.List<java.lang.StringBuffer> readLines(xURI uri)
uri
- URI of specified archive (file).public boolean saveText(xURI uri, java.lang.String content, boolean append)
uri
- URI of specified archive (file).content
- Text content to saved to the specified archive (file).append
- Whether or not "append" mode is applied for writing. In "append" mode, content is added continuously to the end of the archive (file). Otherwise, the archive (file) is made empty and then content is put into the archive (file) from beginning.public void close()
AutoCloseable
finalize()
method of auto-closable class should call AutoCloseable.close()
method so that AutoCloseable.close()
method is called automatically before the Java garbage collector destroys auto-closable object.close
in interface AutoCloseable
protected void finalize() throws java.lang.Throwable
finalize
in class java.lang.Object
java.lang.Throwable
public static java.lang.String packageSlashToDot(java.lang.String slashPackage)
slashPackage
- Specified slash package, for example, "java/lang/annotation", "java\lang\annotation".


Police launch hunt for missing 14-year-old girl in Nottinghamshire
Officers are concerned for her safety
by Ben ReidPolice have launched a hunt for a missing 14-year-old girl in Nottinghamshire.
Officers are concerned for the safety of Abigail Tungate after she was reported missing from the Kirkby-in-Ashfield area at around 12.45pm on Monday, December 9.
Abigail is described as a white female, of medium build and is around 5ft 7ins tall.
She is described as having short, brown bobbed hair and was last seen wearing a pink and grey jumper and black leggings.
If you have seen Abigail or have any information about her whereabouts, contact Nottinghamshire Police on 101, quoting incident number 359 of December 9 2019.
With the General Election approaching we want to give you all the results and reactions as they happen. Join our new WhatsApp service to receive breaking news alerts throughout the night by texting ELECTION to<PHONE_NUMBER>2.
The first messages will go out December 12 after polls close.


Spark Jobs
(
?
)
Total Uptime:
15 min
Scheduling Mode:
FIFO
Active Jobs:
1
Event Timeline
Enable zooming
Active Jobs (1)
Job Id
Description
Submitted
Duration
Stages: Succeeded/Total
Tasks (for all stages): Succeeded/Total
0
reduce at SparkPi.scala:36
2016/06/29 10:56:46
15 min
0/1
569069/1000000


FRANK
Home
TODO
Disabled
Welcome to my page
I am Frank. Try to make a webpage for myself.
Hi, there!
Not yet done!


Motivation
Airbnb is an online vacation rental marketplace servicing a community of hosts and travellers. Hosts are able to list their space for rental to travellers anywhere in the world. The data generated by Airbnb provides rich information, including structured data such as price and location, as well as unstructured data such as reviews and listing descriptions. Current statistical and analytical tools like SAS JMP are often subscription-based and require technical knowledge to mine and draw insights from. This project aims to overcome these hurdles by developing an app which is concise, interactive, and user-friendly regardless of one’s technical ability. Thus, with our app, anyone and everyone would be able to make data-based decisions effortlessly.
Objective
This project aims to utilise various R packages, mainly TidyText, TidyModels and ggstatsplot, to build an interactive R Shiny application that serves as an integrated platform which allows users to perform the following analysis:
-
Text Analysis
-
Exploratory and Confirmatory Data Analysis
-
Predictive Analytics
Application Use case
- Hosts: In 2014, Airbnb launched the Superhost programme to reward hosts with outstanding hospitality. As a Superhost, one will have better earnings, more visibility, and are able to earn exclusive rewards such as increased earnings compared to regular hosts. To become a Superhost, these are the criteria to be met:
-
4.8 or higher overall rating based on reviews
-
Completed at least 10 stays in the past year or 100 nights over at least 3 completed stays
-
Less than 1% cancellation rate, not including extenuating circumstances
-
Responds to 90% of new messages within 24 hours.
- Guests: With over 60,000 members and 6000 properties listed on Airbnb website, a dilemma on which is the right space might be of concern to users.
Hence, this dashboard allows users to analyse their needs and compare across other listings.
Data
Dataset used is obtained from Inside Airbnb. In particular, we extracted the following files:
- listing.csv.gz: This dataset consists of 74 variables and 4256 data points.
- Reviews.csv.gz: This dataset provides 6 variables and 52368 data points.
The location is Singapore, with latest date compiled on 27 January 2021.
Proposed Analytical Methods and Visualisation
Map
To show the distribution of listings in Singapore. The intensity of colour can be used to highlight price range, superhost, room type, etc.
Word Cloud
To explore the frequency of textual data of reviews and listings. This allows users to identify the words that are most commonly associated (proportionate to size) with a particular listing / neighbourhood, etc.
Sentiment
To identify positive and negative words associated with the listings, cloud comparison is used.
Exploratory Data Analysis
To explore the Airbnb dataset and identify interesting trends with the interactive visualization.
Confirmatory Data Analysis
To perform statistical test on listings data to augment findings found in the “Exploratory” tab.
Distribution of variables
To have better understanding of the variables and their potential to be a predictor of a response variable (price/rating), predictive analysis with different model types can be done.
Correlation matrix
To visualise the relationships between the independent variables and check for signs of multi-collinearity among the independent variables. Highly correlated variables to be excluded from the model.
Multiplot
To check for any signs for complete and/or quasi-complete separation, which must be excluded from the predictive model as they will prevent the convergence of the maximum likelihood estimates for the coefficient and ultimately distorting the model.
Data splitting and sampling
To partition the data into training/test/validation sets and apply selected cross validation.
Note: Percentage of target must be proportionate across the different dataset.
Model calibration
To select calibrate different classification and regression models.
Model evaluation
To select assessment method for model, compute confusion matrix and display variable importance of selected model.
Proposed R Packages
| Packages | Purpose |
|---|---|
| Tidyverse | For data manipulation |
| cld3 | To filter out non-English observations |
| Tidytext | For processing textual data |
| wordcloud | To create word cloud |
| Plotly | Create interactive plots for exploratory analysis |
| ggstatsplot | Create plots with statistical tests included within plot |
| Tidymodels | Build prediction models |
Revelant work
Bion R, Chang R, Goodman J. 2017. How R helps Airbnb make the most of its data. PeerJ Preprints 5:e3182v1 https://doi.org/10.7287/peerj.preprints.3182v1
Lu, Y., Garcia, R., Hansen, B., Gleicher, M., & Maciejewski, R. (2017). The State-of-the-Art in Predictive Visual Analytics. Computer Graphics Forum, 36(3), 539–562. https://doi-org.libproxy.smu.edu.sg/10.1111/cgf.13210
Scrivner, Olga & Chakilam, Vinita & Poojary, Jivitesh & Sahoo, Nilima & Uppuluri, Chandan & De Spiegeleire, Stephan. (2017). Building Customized Text Mining Tools via Shiny Framework: The Future of Data Visualization.
Staniak, M., & Biecek, P. (2019). The Landscape of R Packages for Automated Exploratory Data Analysis. R J., 11, 347.


Microsoft to re-position its Bing search engine - Gizchina.com
by Efe UdinRate this post
According to the latest report, Microsoft is repositioning Bing as the company’s search engine. According to the company, Bing has a 25% share of the US search engine market. However, StatCounter Global Stats data shows that on a global scale, Bing’s market share is only about 3%. In contrast, Google’s share is as high as 93%. While Google is dominating the search engine market, Bing is driving search capabilities for applications such as Outlook and Microsoft 365.
Microsoft may be wisely turning Bing from a general-purpose engine to an engine that is specifically for meeting business needs. Companies can now create private, internal search results on Bing, allowing their employees to save time searching for information.
The types of search that Bing hopes to provide include: office location and floor plan (with direction), the meaning of company acronyms, and details of internal policies (such as how long is maternity leave?). Microsoft also introduced a better Edge web browser to turn off tracking cookies on any website. In addition, it also provides a feature for reviewing phishing.
Microsoft is in a good position to re-position Bing because it accumulates a large amount of data by connecting multiple services. These services contain information from Fortune 500 companies, such as usage trends, meeting times, and team information.
Bing has also become smarter. Microsoft claims that users can now type in a vague search term and still pick up the most accurate information. Its new features also provide recommendations for employees with specific skills, expertise and experience. Furthermore, it will even indicate the specific work that people are doing.


| Package | Description |
|---|---|
| org.apache.struts2.components | |
| org.apache.struts2.components.template |
| Modifier and Type | Class and Description |
|---|---|
class |
ActionError
Render action errors if they exists the specific layout of the rendering depends on
the theme itself.
|
class |
ActionMessage
Render action messages if they exists, specific rendering layout depends on the
theme itself.
|
class |
Anchor |
class |
Checkbox
Renders an HTML input element of type checkbox, populated by the specified property from the ValueStack.
|
class |
CheckboxList
Creates a series of checkboxes from a list.
|
class |
ClosingUIBean
ClosingUIBean is the standard superclass for UI components such as div etc.
|
class |
ComboBox |
class |
DateTextField |
class |
Debug |
class |
DoubleListUIBean
DoubleListUIBean is the standard superclass of all Struts double list handling components.
|
class |
DoubleSelect
Renders two HTML select elements with second one changing displayed values depending on selected entry of first one.
|
class |
FieldError
Render field errors if they exists.
|
class |
File
Renders an HTML file input element.
|
class |
Form |
class |
FormButton
FormButton.
|
class |
GenericUIBean |
class |
Head
Renders parts of the HEAD section for an HTML file.
|
class |
Hidden
Renders an HTML input element of type hidden, populated by the specified property from the ValueStack.
|
class |
InputTransferSelect |
class |
Label |
class |
ListUIBean
DoubleListUIBean is the standard superclass of all Struts list handling components.
|
class |
OptionTransferSelect |
class |
Password |
class |
Radio |
class |
Reset
Render a reset button.
|
class |
Select
Render an HTML input tag of type select.
|
class |
Submit
Render a submit button.
|
class |
TextArea |
class |
TextField |
class |
Token |
class |
UpDownSelect |
| Modifier and Type | Method and Description |
|---|---|
protected Map |
UIBean.getTooltipConfig(UIBean component) |
| Modifier and Type | Method and Description |
|---|---|
UIBean |
TemplateRenderingContext.getTag() |
| Constructor and Description |
|---|
TemplateRenderingContext(Template template,
Writer writer,
ValueStack stack,
Map params,
UIBean tag)
Constructor
|
Copyright © 2000–2020 Apache Software Foundation. All rights reserved.


Flash4 Cookie Tutorial and HTMLTemplate
First be aware.
This method uses Javascript, which doesn't communicate with Flash within
IE on the Mac. If you have an important business need for using a cookie
you would be better off with a server side tool, which doesn't suffer
from this limitation. But for artists and experimenters, this method is
pretty nice. The best use of it may be to save a string on the hard drive
if you want to distribute via CD. A cookie only saves one string. If you
want to save more than one string, you might want to use something like
a stack or a list and concatenate the string values together before saving
them. On reentry pop the values back off the stack or list to get back
your information.
Also, be sure to test with cookies disabled to make sure that your movie degrades gracefully if cookies are turned off.
So how do you use the cookieJar HTML template?
First place the cookieJar.html file in your Flash HTML template directory.
On windows this default would be C:/Program Files/Macromedia/Flash/HTML/.
Before you publish your fla, go to File/Publish on the menu. Choose the HTML tab and change the Template to CookieJar.
When you want to update the value of the cookie send an FS Command with "setCookies" as the command and the string you want to save as the argument.
For example this code could be put in a button.
On (Release)
FS Command ("setCookies", "Peanut Butter")
End On
Clicking this button would then set the value of the cookie to the string "Peanut Butter". The Javascript code will then also update the "/:CookieJar" variable in Flash to "Peanut Butter" as well. The code tells the cookie to persist for a year from the last time it was set.
I would suggest that you don't use the "/:CookieJar" variable directly as the second argument in the call to FS Command. If you want to use a variable, create it separately, calling it "/:CookieValue", for example. That would make it easier to debug and also would avoid situations where Javascript and ActionScript both are trying to change the CookieJar variable at the same time.
So you would write to CookieValue and send that to the JavaScript code. The JavaScript code writes to CookieJar which you only read from.
There is an example .fla that you can use to examine this more. You can look at it here.
So how does it work?
When you first come to the page there is an OnLoad handler in the
HTML that is called when the page first finishes loading. This handler
calls the FSCommand Function with "GetCookies" as the command.
This function gets the cookie value if it it exists, otherwise it initializes
the cookie with the string value "initialized" and saves it
for the user.
Now the Flash movie can call the FSCommand function further with "setCookies" and "a string value" as described above, which will update the cookie value to what was set.
cookieJar.html template
- this is a blank HTML template so use "view source"
cookieJar.fla - the example .fla


Npt documentation.
Reference: ANSI Common Lisp npt
The following functions of the npt-system
package are described.
defun sysctl
sysctl: memory-stream, sizearray
sysctl: memory-stream, sysctl: memory-stream, cache
sysctl: clos, slots
no-applicable-method
sysctl: recovery, no-next-method sysctl: recovery,
structure, check
sysctl: structure, delete
sysctl: structure, type sysctl:
random-state, integer
sysctl: random-state, make
sysctl: random-state, write sysctl:
sysctl
This function performs the following operations.
defun sysctl (type &rest args) ...) -> *
(
type, object
Input:
Input: args* Output:
The type
can be any of the following
memory-stream
clos
recovery
structure
random-state
sysctl
: memory-stream
Retrieves information from a memory-stream
object.
Execution is done as follows.
* (setq x (make-memory-io-stream ...))
* (sysctl x ...)
Continue accepting the next argument.
size
array
cache
sysctl
: memory-stream
, size
Get the size
of memory-stream
.
size
is the number of bytes of the internal buffer.
An example of execution is shown below.
* (setq x (make-memory-io-stream :size 10))
* (sysctl x 'size)
10
T
sysctl
: memory-stream
, array
Get the array
of memory-stream
.
array
is the number of internal buffers.
An example of execution is shown below.
* (setq x (make-memory-io-stream :array 20))
* (sysctl x 'array)
20
T
sysctl
: memory-stream
, cache
Get the cache
of memory-stream
.
The cache
is whether the open
function should use the cache or not.
An example of execution is shown below.
* (setq x (make-memory-io-stream :cache t))
* (sysctl x 'cache)
T T
sysctl
: clos
Get information from a clos
object.
A clos
object is anything created by make-instance
, including instances of structure-object
, structure-object
.
It also includes instances of standard-class
, structure-class
, and built-in-class
.
However, corresponding instances of class of built-in-class
are not included because they are Lisp objects.
Execution is done as follows.
* (setq x (make-instance ...))
* (sysctl x ...)
Continue accepting the next argument.
slots
sysctl
: clos
, slots
Get all slots.
An execution example is shown below.
* (sysctl (find-class 'class) 'slots)
(NPT-CLOS::NAME NPT-CLOS::DIRECT-SLOTS NPT-CLOS::DIRECT-SUBCLASSES
NPT-CLOS::DIRECT-SUPERCLASSES NPT-CLOS:CLASS-PRECEDENCE-LIST NPT-CLOS::EFFECTIVE-SLOTS
NPT-CLOS::FINALIZED-P NPT-CLOS::PROTOTYPE NPT-CLOS::DEFAULT-INITARGS
NPT-CLOS::DIRECT-DEFAULT-INITARGS NPT-CLOS::VERSION NPT-CLOS::DOCUMENTATION
NPT-CLOS::REDEFINED-CLASS) T
sysctl
: recovery
recovery
restores the specified content to its initial state.
The execution is done as follows.
* (sysctl 'recovery ...)
The 'recovery
argument is treated as a string
and is checked with equalp
.
It will continue to accept the next argument.
no-applicable-method
no-next-method
sysctl
: recovery
, no-applicable-method
Restore the generic function no-applicable-method
to its initial state.
The execution is as follows.
* (sysctl 'recovery 'no-applicable-method)
T T
sysctl
: recovery
, no-next-method
Restore the generic function no-next-method
to its initial state.
The execution is as follows.
* (sysctl 'recovery 'no-next-method)
T T
sysctl
: structure
structure
performs operations on structures.
Execution is done as follows.
* (sysctl 'structure ...)
The 'structure
argument is treated as a string
and is checked with equalp
.
It continues to accept the next argument.
check
delete
type
sysctl
: structure
, check
Checks for the existence of a structure with the specified name that does not belong to the structure-class
.
When you define a structure, a class belonging to the structure-class
is normally generated.
However, if you specify list
or vector
as the :type
argument of defstruct
, a structure different from the class system will be generated, which cannot be checked by functions such as find-class
.
check
will check for the existence of such a structure.
The execution is as follows.
* (defstruct (aaa (:type list)))
* (sysctl 'structure 'check 'aaa)
T
T* (defstruct bbb)
* (sysctl 'structure 'check 'bbb)
NIL T
sysctl
: structure
, delete
Deletes the structure with the specified name.
Removes both structures of structure-class
and structures that do not belong to it.
Remove access functions, constructor
, copier
, and print-object
for structures.
The following is an example of execution.
* (defstruct aaa)
* (sysctl 'structure 'delete 'aaa)
T
T* (find-class 'aaa nil)
NIL
* (defstruct (bbb (:type vector)))
* (sysctl 'structure 'delete 'bbb)
T
T* (sysctl 'structure 'check 'bbb)
NIL
T* (fboundp 'make-bbb)
NIL
sysctl
: structure
, type
Returns the type of the structure with the specified name.
The returned value is as follows
class
list
vector
An example of how to do this is shown below.
* (defstruct aaa)
* (defstruct (bbb (:type (vector (unsigned-byte 8)))))
* (sysctl 'structure 'type 'aaa)
CLASS
T* (sysctl 'structure 'type 'bbb)
8))
(VECTOR (UNSIGNED-BYTE T
sysctl
: random-state
Performs operations on random-state
objects.
Execution is done as follows.
* (sysctl 'random-state ...)
The 'random-state
argument is treated as a string
and is checked with equalp
.
It continues to accept the next argument.
integer
make
write
sysctl
: random-state
, integer
Output the internal state of random-state
as an integer.
npt implements xorshift
as a random number algorithm, and has 128-bit integer in the internal state of random-state
.
This function outputs the internal state as an integer.
The output internal state can be restored by make
and write
.
The following is an example of execution.
* (setq *print-base* 16)
* (setq x (make-random-state t))
#xF3F85807E6E2837033526396D518DAD1>
#<RANDOM-STATE * (sysctl 'random-state 'integer x)
F3F85807E6E2837033526396D518DAD1 T
sysctl
: random-state
, make
Generates a random-state
with the specified argument set to the internal state.
Since the argument is obtained by 128 bits with ldb
, negative values can be set.
* (setq *print-base* 16)
* (setq x (sysctl 'random-state 'make #xABCD))
#xABCD>
#<RANDOM-STATE
T* (sysctl 'random-state 'integer x)
ABCD T
sysctl
: random-state
, write
Specifies the internal state of a random-state
object.
Since the argument is obtained by 128 bits with ldb
, negative values can be set.
* (setq *random-state* (make-random-state t))
#x14F392860E2329DE919C083F0B764EC5>
#<RANDOM-STATE * (setq y (sysctl 'random-state 'integer *random-state*))
27849259905073490890992780948155027141
T* (random 10)
3
* (random 10)
6
* (random 10)
7
* (sysctl 'random-state 'write *random-state* y)
#x14F392860E2329DE919C083F0B764EC5>
#<RANDOM-STATE
T* (random 10)
3
* (random 10)
6
* (random 10)
7


WittyMail will automate sending emails based on your sheet below.
Review the mappings to your column headers and click on the 'view e-mail'
button to preview the e-mail contents for a particular row.
You can specify an e-mail address to use instead of the actual sponsor's e-mail address
to test how the e-mail would look like in your inbox.
E-Mail{{col}}
{{row['status']}}
{{row[col]}}
{{selectedRows.length}} e-mails will be sent.
E-mail Contents
E-mail sent successfully.
Failed to send e-mail: {{sendEmailDetails.errorMessage}}
Send Test E-mail
A test e-mail will be sent for the first row in the sheet to the following address instead of the actual sponsor.
Test e-mail sent successfully, please check your inbox.
Failed to send test e-mail: {{testEmailDetails.errorMessage}}
Send All E-mails
{{selectedRows.length}} e-mails are ready to be sent.
All e-mails sent successfully.
Failed to send some e-mails, view the report again for current status.


Our favorite Quake II server is alot
like our families. Warm, loving, dangerous, with a whopping
serving of disfunctionality thrown in for good measure.
Yoda's Barn is all those
things and more. Connect late at night, and you're likely to witness a
conversation between the children, obsessed with acquaintences of
theirs who are "gay", or "fags", or who play Quake
like "girls".
Visit the Barn's message board around the
dinner hour and you might witness
Dark Priest, the
Barn's administrator and authoritarian father figure, actually
threatening to physically beat Barclay into a pastey dough if he
doesn't use the message
board according to DP's rules. We may whisper to each
other later in our rooms that we "hate" him, but deep down
inside, we know that he's the only father we've got...that if we
piss him off too much, he just might kick us out of his house.
It's times like this when we miss our own fathers, and each man's
particular brand of tough love. And just as we now feel
affection for our fathers, perhaps someday we will know that DP only
made those threats because he cares about us, and not just because
he's obsessed with important Quake players liking him.
And, late at night, when we're in our beds
thinking black thoughts, we wonder whether DP will ever find for us
the mommy we never had. We silently
plead with him to stop working so hard, and start smelling the
roses. If that would only happen, we tell ourselves, then
maybe...just maybe...he'd stop threatening to beat us to a pulp
whenever we clog the toilet.
Remember, DP, it's all in good clean
fun.
We lowly, unimportant players love your server.


Settings.ini Advanced Settings
- You can also create a unique shortcut in Clipjump to copy/cut data only to System Clipboard
and not Clipjump. To create these shortcuts, open the [Advanced] section of Settings.ini and write down shortcut values for windows_copy_shortcut
and
windows_cut_shortcut
. As you may have guessed, these shortcuts are disabled by default and by writing shortcut values for them in the ini you create them.
These shortcuts can be very useful when in need to copy sensitive or crap information of the Clipboard.
You can change the Action Mode easy keys from the Advanced section of the Settings.ini file. Navigate to the key actionmode_keys
and you will see space
separated values. These are the values for easy keys of the components in the following order --
1. History_Tool
2. Channel_Selector
3. Copy_File_Path
4. Copy_Active_Folder_Path
5. Copy File Data
6. Toggle Clipjump Status
7. PitSwap
8. One Time Stop
9. Settings Editor
10. Open Help File
Note that you cannot disable an easy key for a component i.e. there should always be 10 space-separated keys present.
Showing the Pasting tooltip
- You can make Clipjump show a Pasting..
tip when you paste some data. To do so, change the value of Show_pasting_tip
in the [Advanced] section of Settings.ini to 1.
Translate


Digital engagement, web designer, developer
Head of Digital at EQtwo. 11 years experience in digital engagement. Living in London.
Skills
- Strategy
- Communication
- Design
- Full Stack Developer
- Data Analysis
- Reporting
- Copywriting
- More about me
Languages and frameworks
- Javascript
- PHP
- Swift
- HTML5
- CSS3
- Python
- Objective-C
- Rust
- jQuery
- Node
- Laravel
- Ember
- Slim
- Electron
- React
- Redux
- My Projects


Huawei sells over 7 million Mate 30 units in two months
by YordanToday Huawei had a massive event where the Mediapad Pro tablet was unveiled. During the keynote, Richard Yu, CEO at Huawei, revealed the company has managed to sell over 7 million phones of the Mate 30 family, which is a massive 75% increase compared to the Mate 20.
Huawei is still offering the Mate 30 series predominantly in China, although they can be found at other Asia Pacific markets. Nevertheless, the 7-million milestone in the first two months is surely an accomplishment, given the situation the company has fallen into.
It is worth noting that this amount includes the Huawei Mate 30, Huawei Mate 30 Pro, Huawei Mate 30 5G, Huawei Mate 30 Pro 5G, and the Huawei Mate 30 RS Porsche Design.
There are two key reasons why the Mate 30 phones are so successful - it is an overall amazing phone, as we established in our review back at the beginning of October, and a lot of people in China are switching to Huawei devices, pushed by a sense of pride and patriotism.
Combined with the multitude of price tags, depending on the variety of memory storage and Pro features, there is a Mate 30 flagship for every taste. Currently, no one knows whether Huawei will be allowed to trade with Google, so only time will tell whether the Mate 30 lineup will be successful (or available at all) across markets like Europe or India.


| Purpose | Helpdesk | Helpdesk Number | Working Hours |
|---|---|---|---|
| General Queries related to Income Tax | Aayakar Sampark Kendra (ASK) | 1800 180 1961 (or) 1961 |
08:00 hrs - 22:00 hrs (Monday to Saturday) |
| Rectification, Refund, Intimation and other Income Tax Processing Related Queries |
Centralized Processing Center | 1800 103 4455 (or) 1800 425 2229 (or) +91-80-46605200 (or) +91-80-22546500 |
08:00 hrs - 20:00 hrs (Monday to Friday) |
| e-Filing of Income Tax Return or Forms and other value
added services provided through e-Filing Portal |
e-Filing |
1800 103 0025 (or) +91-80-46122000 +91-80-26500026 |
09:00 hrs - 20:00 Hrs (Monday to Saturday) |
| Form 16, Tax Credit (Form 26AS) and other queries related to TDS statement, Form 15CA processing |
TDS Reconciliation Analysis and Correction Enabling System (TRACES) |
1800 103 0344
(or) +91-120-4814600 |
10:00 hrs - 18:00 Hrs (Monday to Saturday) |
| Queries related to PAN & TAN application for Issuance/Update through NSDL |
Tax Information Network - NSDL | +91-20-27218080 |
07:00 Hrs - 23:00 Hrs (All Days) |
Web Manager
🏢 e-Filing Unit,
Centralized Processing Centre,
Income Tax Department,
Bengaluru 560500.
📧 efilingwebmanager@incometax.gov.in


One can improve performance on many systems by overlapping communication and computation. This is especially true on systems where communication can be executed autonomously by an intelligent communication controller. Light-weight threads are one mechanism for achieving such overlap. An alternative mechanism that often leads to better performance is to use nonblocking communication. A nonblocking send start call initiates the send operation, but does not complete it. The send start call will return before the message was copied out of the send buffer. A separate send complete call is needed to complete the communication, i.e., to verify that the data has been copied out of the send buffer. With suitable hardware, the transfer of data out of the sender memory may proceed concurrently with computations done at the sender after the send was initiated and before it completed. Similarly, a nonblocking receive start call initiates the receive operation, but does not complete it. The call will return before a message is stored into the receive buffer. A separate receive complete call is needed to complete the receive operation and verify that the data has been received into the receive buffer. With suitable hardware, the transfer of data into the receiver memory may proceed concurrently with computations done after the receive was initiated and before it completed. The use of nonblocking receives may also avoid system buffering and memory-to-memory copying, as information is provided early on the location of the receive buffer.
Nonblocking send start calls can use the same four modes as blocking sends: standard, buffered, synchronous and ready. These carry the same meaning. Sends of all modes, ready excepted, can be started whether a matching receive has been posted or not; a nonblocking ready send can be started only if a matching receive is posted. In all cases, the send start call is local: it returns immediately, irrespective of the status of other processes. If the call causes some system resource to be exhausted, then it will fail and return an error code. Quality implementations of MPI should ensure that this happens only in ``pathological'' cases. That is, an MPI implementation should be able to support a large number of pending nonblocking operations.
The send-complete call returns when data has been copied out of the send buffer. It may carry additional meaning, depending on the send mode.
If the send mode is synchronous, then the send can complete only if a matching receive has started. That is, a receive has been posted, and has been matched with the send. In this case, the send-complete call is non-local. Note that a synchronous, nonblocking send may complete, if matched by a nonblocking receive, before the receive complete call occurs. (It can complete as soon as the sender ``knows'' the transfer will complete, but before the receiver ``knows'' the transfer will complete.)
If the send mode is buffered then the message must be buffered if there is no pending receive. In this case, the send-complete call is local, and must succeed irrespective of the status of a matching receive.
If the send mode is standard then the send-complete call may return before a matching receive occurred, if the message is buffered. On the other hand, the send-complete may not complete until a matching receive occurred, and the message was copied into the receive buffer.
Nonblocking sends can be matched with blocking receives, and vice-versa.
[] Advice to users.
The completion of a send operation may be delayed, for standard mode, and must be delayed, for synchronous mode, until a matching receive is posted. The use of nonblocking sends in these two cases allows the sender to proceed ahead of the receiver, so that the computation is more tolerant of fluctuations in the speeds of the two processes.
Nonblocking sends in the buffered and ready modes have a more limited impact. A nonblocking send will return as soon as possible, whereas a blocking send will return after the data has been copied out of the sender memory. The use of nonblocking sends is advantageous in these cases only if data copying can be concurrent with computation.
The message-passing model implies that communication is initiated by
the sender.
The communication will generally have lower overhead if a receive is
already posted when the sender initiates the communication (data can be moved
directly to the receive buffer, and there is no need to queue a pending send
request). However,
a receive operation can complete only after the matching send has occurred.
The use of nonblocking receives allows one to achieve lower communication overheads
without blocking the receiver while it waits for the send.
( End of advice to users.)


K-Means like algorithm with medoids (so that the cluster prototype is always a member of the dataset). More...
Public Member Functions | |
| def | __init__ |
| Constructor. | |
| def | perform_clustering |
| Does the actual clustering. | |
| def | seeding_to_str |
| Convenience function to build the details string. | |
| def | convergence |
| Checks if the medoid list has changed. | |
| def | get_closer_medoid |
| Says which medoid is closer to an element. | |
| def | gen_medoid_to_cluster_id_map |
| It generates a map defining the relationship between cluster classes and medoids. | |
| def | cluster_update |
| Assigns each element to a cluster (updating its class), depending on which medoid is closer. | |
| def | update_medoids |
| Regenerates the medoids list once the new clusters have been generated. | |
| def | seeding |
| Does the initial seeding using the stated seeding process. | |
| def | random_seeding |
| Returns k random medoids. | |
| def | equidistant_seeding |
| def | gromos_seeding |
| The first k medoids are selected running the gromos algorithm with an initial cutoff defined in 'seeding_max_cutoff' until it gets at least k clusters. | |
Static Public Member Functions | |
| def | seeding_types |
| Returns the possible initial seeding types. | |
Public Attributes | |
| condensed_matrix | |
| total_elements | |
| class_list | |
| gromos_clusters_bookkeeping | |
| k | |
| seeding_type | |
| seeding_max_cutoff | |
Static Public Attributes | |
| int | MAX_ITERATIONS = 500 |
K-Means like algorithm with medoids (so that the cluster prototype is always a member of the dataset).
It has 3 different initial seeding implementations.
Definition at line 20 of file kMedoidsAlgorithm.py.
| def pyproct.algorithms.kmedoids.kMedoidsAlgorithm.KMedoidsAlgorithm.__init__ | ( | self, | |
| condensed_matrix, | |||
| kwargs | |||
| ) |
Constructor.
Sets up some class variables.
| condensed_matrix,: | The dataset's distance matrix. |
| rand_seed,: | A number to set the random seed or None if we don't want to set it. Useful to be able to reproduce results. |
Definition at line 45 of file kMedoidsAlgorithm.py.
| def pyproct.algorithms.kmedoids.kMedoidsAlgorithm.KMedoidsAlgorithm.cluster_update | ( | self, | |
| medoids, | |||
| condensed_matrix | |||
| ) |
Assigns each element to a cluster (updating its class), depending on which medoid is closer.
| medoids,: | The medoid list. |
| condensed_matrix,: | The dataset's distance matrix. |
Definition at line 169 of file kMedoidsAlgorithm.py.
| def pyproct.algorithms.kmedoids.kMedoidsAlgorithm.KMedoidsAlgorithm.convergence | ( | self, | |
| current, | |||
| last | |||
| ) |
Checks if the medoid list has changed.
If not, then the algorithm has converged.
| current,: | The current medoid list in this step. |
| last,: | The medoid list of the previous step. |
Definition at line 117 of file kMedoidsAlgorithm.py.
| def pyproct.algorithms.kmedoids.kMedoidsAlgorithm.KMedoidsAlgorithm.equidistant_seeding | ( | self, | |
| k, | |||
| number_of_elements | |||
| ) |
| k,: | The number of medoids we need. |
| number_of_elements,: | Number of elements of the dataset. |
Definition at line 234 of file kMedoidsAlgorithm.py.
| def pyproct.algorithms.kmedoids.kMedoidsAlgorithm.KMedoidsAlgorithm.gen_medoid_to_cluster_id_map | ( | self, | |
| medoids | |||
| ) |
It generates a map defining the relationship between cluster classes and medoids.
For instance if k = 3 and our medoid list is [10, 23, 50], class 0 corresponds to medoid 10, so cluster_id_map[10] = class 0
| medoids,: | The medoid list. |
Definition at line 155 of file kMedoidsAlgorithm.py.
| def pyproct.algorithms.kmedoids.kMedoidsAlgorithm.KMedoidsAlgorithm.get_closer_medoid | ( | self, | |
| element, | |||
| medoids, | |||
| condensed_matrix | |||
| ) |
Says which medoid is closer to an element.
| element,: | The element of the dataset we want to test. |
| condensed_matrix,: | The dataset's distance matrix. |
Definition at line 138 of file kMedoidsAlgorithm.py.
| def pyproct.algorithms.kmedoids.kMedoidsAlgorithm.KMedoidsAlgorithm.gromos_seeding | ( | self, | |
| k, | |||
| seeding_max_cutoff | |||
| ) |
The first k medoids are selected running the gromos algorithm with an initial cutoff defined in 'seeding_max_cutoff' until it gets at least k clusters.
If it can't, it will use the random seeding strategy.
| k,: | The number of medoids we need(and thus the number of clusters we want GROMOS to produce) |
| seeding_max_cutoff,: | The initial seeding cutoff to use with the gromos algorithm. |
Definition at line 252 of file kMedoidsAlgorithm.py.
| def pyproct.algorithms.kmedoids.kMedoidsAlgorithm.KMedoidsAlgorithm.perform_clustering | ( | self, | |
| kwargs | |||
| ) |
Does the actual clustering.
| kwargs,: | Dictionary with this mandatory keys:
|
Definition at line 66 of file kMedoidsAlgorithm.py.
Returns k random medoids.
| k,: | The number of medoids we need. |
Definition at line 221 of file kMedoidsAlgorithm.py.
| def pyproct.algorithms.kmedoids.kMedoidsAlgorithm.KMedoidsAlgorithm.seeding | ( | self, | |
| k, | |||
| seeding_max_cutoff, | |||
| seeding_type | |||
| ) |
Does the initial seeding using the stated seeding process.
| k,: | The number of medoids we need. |
| seeding_max_cutoff,: | The initial seeding cutoff to use with the GROMOS algorithm. |
| seeding_type,: | The seeding process type ( |
Definition at line 199 of file kMedoidsAlgorithm.py.
Convenience function to build the details string.
Definition at line 101 of file kMedoidsAlgorithm.py.
Returns the possible initial seeding types.
Definition at line 34 of file kMedoidsAlgorithm.py.
Regenerates the medoids list once the new clusters have been generated.
Definition at line 181 of file kMedoidsAlgorithm.py.
Definition at line 45 of file kMedoidsAlgorithm.py.
Definition at line 45 of file kMedoidsAlgorithm.py.
Definition at line 45 of file kMedoidsAlgorithm.py.
Definition at line 66 of file kMedoidsAlgorithm.py.
int pyproct::algorithms::kmedoids::kMedoidsAlgorithm.KMedoidsAlgorithm::MAX_ITERATIONS = 500 [static] |
Definition at line 22 of file kMedoidsAlgorithm.py.
Definition at line 66 of file kMedoidsAlgorithm.py.
Definition at line 66 of file kMedoidsAlgorithm.py.
Definition at line 45 of file kMedoidsAlgorithm.py.


Using a PC as a simple synth with a MIDI controller
The simplest way to play sounds with a MIDI keyboard controller connected to a Windows PC
[Update 2010/10/30] Added using MuseScore music notation program. See below.
Now and then I want to play notes on a keyboard to help with my double bass practice. For example, to hear intervals in order to sing them and to check my intonation. Also a keyboard is often the most natural way to visualise scales and harmony. So I required a simple way to play notes and perhaps chords with a keyboard.
One solution would be to use a simple on-screen virtual piano or syth. That’s great if you also have a touch screen, which I do.
However I already have an Akai LPK25 25 key mini (micro) keyboard MIDI controller and liked the idea of having real keys, even though they take up desk space. And that’s despite the fact the LPK25’s keys are tiny and feel horribly springy compared to a piano or weighted controller keyboard. MIDI controllers produce no sounds, rather they just send MIDI messages and a MIDI syth or other sound generator is required to make any sounds
Solution
Like most modern MIDI controllers, the LPK25 connects to a PC using USB midi which makes life simpler than the old MIDI 5 pin DIN connectors. It also sends on MIDI ch 1 by default so should be fine in any configuration. AKAI provide a little settings editor but I found it was unecessary in this case.
The setup steps are:
- Connect the keyboard to the laptop using a USB cable
- Optionally install a MIDI Synth to make the sounds. Windows has long shipped with one but it’s truely aweful
- Virtually connect the keyboard to the synth via software
The MIDI Synth I used is CoolSoft’s Virtual Midi Synth which requires you to also install a SoundFont. I used the recommended FluidR3_GM General Midi font as I’ve used it before and found it to be good enough.
To connect the keyboard to the synth in the PC via software I used the venerable MIDI-OX midi toolkit which works fine on Windows 10. MID-OX also allows viewing and manipulating MIDI messages if you are so inclined. Once installed, you link up the controller to the synth by selecting the input an output dvices with Options -> Midi Devices.
That’s it. As long as MIDI-OX is running any key press should be heard in your audio output. The default GM voice is 1 Acoustic Grand Piano which is fine for me. Note though that with such a simple non ASIO driver set up there is a small but noticable latency.
Alternative Solution - using MuseScore
Thanks to Arash Zargamy for pointing out that the free and open source MuseScore notation and compostition program will also act as a simple MIDI synth. There’s no need to install an extra synth or route the midi as Musecore includes a synth and picks up the MIDI input device.
Just install the MuseScore program and play notes on the keyboard. You might need to check edit -> preferences -> I/O
to ensure your keyboard is the MIDI input device. The default voice is GM piano.
An advantage of Muscore is you can also easily record the dots for your playing. Just click the note input icon on the left of the note toolbar.


Destinations
Chiang Mai, Thailand/Arts & Culture
Eco-Travel on Nangan Island, Taiwan
A Modern Travel Guide to Seoul
2018 Pyeongchang Winter Olympicss
Olympic Fun in Seoul & PyeongChang
Hotel Reviews
Hoshinoya Ryokans/Tokyo & Kyoto
Ready to get started? Call or send me an email, and I will reach out as soon as possible!
1-310-497-7157


Allows custom commands to be repeated using the Repeat tool or the Repeat command on the Edit menu. Also allows custom commands to be recorded using the macro recorder.
Syntax
CUSTOM.REPEAT(macro_text, repeat_text, record_text)
Macro_text is the name of, or a reference to, the macro you want to run when the Repeat command is chosen. If macro_text is omitted, no repeat macro is run, but the custom command can still be recorded.
Repeat_text is the text you want to use as the repeat command on the Edit menu (for example, "Repeat Reports"). You can omit repeat_text and macro_text if you only want to record the formula specified by record_text when using the macro recorder.
Record_text is the formula you want to record. For example, if the user clicks a command named Run Reports in Macro 1, the record_text argument would be "=Macro1!RunReports()", where RunReports is the name of the macro called by the Run Reports command.
References in record_text must be in R1C1 format.
If record_text is omitted, the macro recorder records normally (a RUN function with the first cell of the macro as its argument).
If you are not recording a macro, record_text is ignored.
Tip Place CUSTOM.REPEAT at the end of the macro you will want to repeat. If you place it before the end, then the macro formulas that follow CUSTOM.REPEAT may interfere with the desired effects of CUSTOM.REPEAT. The Repeat tool and the Repeat command continue to change as you click subsequent commands that can be repeated.
Example
The following macro formula specifies that the macro RepeatReport on the MenuMacros macro sheet in the current workbook will be run when the Repeat Report command is chosen:
CUSTOM.REPEAT("MenuMacros!RepeatReport", "Repeat Report")
Related Function
CUSTOM.UNDO Specifies a macro to run to undo a custom command
Return to index


Alvi Bot is a multi- purpose discord bot for all your needs!
Commands include moderation, fun, utilities, music (Coming Soon) and economy(Coming Soon).
This site is still under heavy development. Don't forget to join our Discord server so you don't miss out on any updates! Thank You!


Introduction to Limits
Mathematics Research Project
Welcome to my Web site on limits. In this site you will find information on what a limit is, how to find it, and how to identify the non-existence of a limit. See the site map below.
Goal
To provide a tool for students and/or teachers to deeply investigate an important why question, while connecting topics across the secondary school curriculum and college-level mathematics.
Task
Investigate one of the why questions touched upon in class and posted on Blackboard. Your project should make use of technology and existing web resources. You will share the final product on the Internet through media such as YouTube, Wikipedia, The Math Forum, a blog, a math education listserv, or an online journal. Whatever forum you choose, make sure you understand your intended audience: secondary school teachers and/or students.
Make sure you build from what is already out there on the Internet so that you are not just re-inventing the wheel, so to speak. This means your project should begin with a thorough search of various media on the Internet. You may want to hyperlink or otherwise refer to existing products to enhance your own new product.
Grading Rubric
Mathematical Depth
The product should entail deep mathematical insights that make connections to college-level mathematical topics.
Pedagogy
The product should clearly target an appropriate audience and explicitly build from what that audience should understand already, motivating the audience to engage in mathematical thinking.
Utility
The product should be easy to use and likely will be used by teachers and/or students.


here we put our header data (the first elements to see)
- i have to prepare my diner
- clean the dishes
- taking out the trash
- i have to prepare my diner
- clean the dishes
- i have to prepare my diner
- clean the dishes
- taking out the trash
What is
CSS
here to put the main content of our website


Social App
01 Feb 2019
Mobile App
Web Service
Tech Stack
- Item one
- Item two
- Item three
Blockquote
Awesome website!
Customizable HTML Content
Lorem ipsum dolor sit amet consectetur adipisicing elit. Assumenda porro voluptatum natus expedita vitae nisi cum? Fugit eius nam tempora fuga error harum animi at. Pariatur sit non adipisci tenetur?
Card
Some quick example text to build on the card title and make up the bulk of the card's content.
Image Card
This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.


Welcome User, [[${user.username}]]
Tasks
Add Task
ID
Task Name
Description
Start Date
End Date
Severity
Action
Update
Delete
Logout


RubyJS
Shortcuts
You can quickly search and jump through the documentation by using the fuzzy finder dialog:
Open fuzzy finder dialog: Ctrl-T
In frame mode you can toggle the list naviation frame on the left side:
Toggle list view: Ctrl-L
You can focus a list in frame mode or toggle a tab in frameless mode:
- Class list:
Ctrl-C
- Method list:
Ctrl-M
- Extras list:
Ctrl-E
You can focus and blur the search input:
- Focus search input: `Ctrl-S
- Blur search input:
Esc
- In frameless mode you can close the list tab:
Esc
Namespace
RubyJS
is the official namespace of all classes and mixins. R
is an alias to RubyJS
. In the documentation both versions are used interchangeably.
RubyJS('foo')
RubyJS.String
RubyJS.Array
// Equivalent to:
R('foo')
R.String
R.Array
R
additionaly includes R.Kernel, so methods defined there can be used with R.
R.puts('hello world')
String
RubyJS.String wraps a native String primitive.
R('foo')
new R.String('foo')
R.String.new('foo')
R.$String(1) // Emulates Ruby String(1)
Destructive methods have a _bang suffix.
str = R('foo')
str.capitalize() //=> 'Foo'
str //=> 'foo'
str.capitalize_bang() //=> 'Foo'
str //=> 'Foo'
Create multiple R.Strings with R.w
equivalent to Ruby %w[]
.
words = R.w('foo bar baz')
Array
Arrays are ordered, integer-indexed collections of any object. Array indexing starts at 0, as in C or Java. A negative index is assumed to be relative to the end of the array—that is, an index of -1 indicates the last element of the array, -2 is the next to last element in the array, and so on.
RubyJS.Array wraps a native JavaScript array. Members are not directly accessible using []
notation, use RubyJS.Array.get(1)
and set(1, 'foo')
instead.
Array includes optimized versions of RubyJS.Enumerable methods.
R([1,2,3]) // => an R.Array of Number primitives
R([1,2,3], true) // => an R.Array of R.Fixnums
new R.Array([1,2,3])
Enumerable, Enumerator
The Enumerable mixin provides collection classes with several traversal and searching methods, and with the ability to sort. The class must provide a method each
, which yields successive members of the collection. If Enumerable#max, #min, or #sort is used, the objects in the collection must also implement a meaningful <=> operator, as these methods rely on an ordering between members of the collection.
Enumerable is currently included in Array, Range and Enumerator. Array implements optimized versions of the methods.
Numerics
Numeric and Integer are both modules. Functional number types are Fixnum (an Integer) and Float.
- Fixnum includes Numeric, Integer
- Float includes Numeric
Mathematic operations like +, -, * with RubyJS numerics is expensive as for every operation extra objects are created. It is suggested to use JavaScript native primitives for calculations, especially in loops.
Aliases
Where Ruby methods conflict with JavaScript naming the following aliases are used.
You can also use the old names through property the brackets, e.g. ['==']
.
str.equals('foo')
str['==']('foo')
# '?' is removed
include : include?
# '!'' => _bang
upcase_bang: upcase!
append : <<
equals : ==
equal_case : ===
cmp : <=>
lt : <
lteq : <=
gt : >
gteq : >=
modulo : %
plus : +
minus : -
multiply : *
exp : **
divide : /
# Typecasting:
R.$String(): String()
R.$Float() : Float()
# Special variables
R['$~'] : $~
R['$;'] : $;
R['$,'] : $,


I like to play Roblox a lot. It is very fun. There are so many games you can play! My favorite game is Exreme Skydiving.
My favorite Star Wars creature is a porg. They are soooooooooooo adorable. They are in all of the new Star Wars movies
Today we did a coke and mentos experiment at the park with my brother, sister, and my dad.
My favorite youtubers are DanTDM, unspeakable, and infinite.


Exhibt J
Data Trust Ethical Principles
[Data Trust Members should review Exhibit F and provide feedback on current ethical principles as well as include additional Ethical Principles]
Values
The Data Trust including, Trustee, Members, and Approved Users, commit to the following key values in developing and maintaining the Data Trust-managed Data Resources, Projects, and Allowable Uses.
Fairness
Understand, mitigate and communicate the presence of bias in both data practice and consumption.
Benefit
Set people before data and be responsible for maximizing social benefit and minimizing harm.
Openness
Practice humility and openness. Transparent practices, community engagement, and responsible communications are an integral part of data ethics.
Reliability
Ensure that every effort is made to glean a complete understanding of data, where it came from, and how it was created. Extend this effort for future users of all data and derivative data.
Data Trust Ethical Principles
All Data Trust Members, Trustee and Affiliates, researchers and other approved users commit to:
A. Consider collecting informed and purposeful consent of data subjects for all projects, regardless of legal requirements, and discard resulting data when that consent expires.
B. Make best effort to guarantee the security of data, subjects, and algorithms to prevent unauthorized access, disclosure of sensitive information, policy violations, tampering, or harm to data subjects.
C. Make best effort to protect anonymous data subjects, and any associated data, against any attempts to reverse-engineer, de-anonymize, or otherwise expose confidential information. * This includes all intermediate results, working with individuals or companies to help them maintain the anonymity of all data and parties involved, and supporting the rights to explanation, recourse, and rectification for any data subjects impacted by data work.
D. Practice responsible transparency as the default where possible, throughout the entire data lifecycle. * This includes providing enough context and documentation to enable other trained practitioners to understand and evaluate the use of data.
E. Foster diversity and openness by making efforts to ensure inclusion of participants from a variety of communities and socioeconomic backgrounds and with a broad representation of viewpoints. * This can be achieved by: being conscious of, and owning the results of actions, regardless of intent; promoting the voices of marginalized groups; acknowledging and self-checking privilege; accepting checks of privilege by others in good faith, and using privilege to advocate for equity. * The data community will not remain silent when witnessing others behaving in a manner that is not accessible, open, welcoming and inclusive.
F. Acknowledge and mitigate unfair bias throughout all aspects of data work. * This includes but is not limited to providing details and methodologies around data collection, processing and storage; and actively working to identify and disclose bias in algorithms, training data, and test data.
G. Make datasets with clearly established provenance the expected norm, rather than the exception. * As a data collector, be responsible for recording provenance; as a data publisher, be responsible for propagating provenance; as a data scientist, be responsible for reviewing, considering, and declaring what is known about data provenance. * Provenance is a living part of data work and can evolve with the project and all reasonable efforts should be made to understand and pass on provenance work.
H. Respect the needs of all stakeholders as they relate to privacy and data ownership.
I. Take great care to communicate clearly, responsibly and accessibly. * This includes: acknowledging and disclosing caveats and limitations to the process and outputs; considering and providing clear opportunities for feedback from all stakeholders; considering and discussing whether something should be done (not just if it can be done); and clearly identifying and communicating who may be impacted, and how they are impacted, in order to minimize any potential harm from data work.
J. Ensure that all data practitioners take responsibility for exercising ethical imagination in their work, including considering the implication of what came before and what may come after, and actively working to increase benefit and prevent harm to others.
OCAP® Committment
Additionally, all Data Trust Members, Trustee and Affiliates, researchers and other approved users commit to following The First Nations Principles of OCAP® when First Nations data is collected, protected, used, or shared.
There are four components of OCAP®: Ownership, Control, Access and Possession.
Ownership refers to the relationship of First Nations to their cultural knowledge, data, and information. This principle states that a community or group owns information collectively in the same way that an individual owns his or her personal information.
Control affirms that First Nations, their communities, and representative bodies are within their rights in seeking to control over all aspects of research and information management processes that impact them. First Nations control of research can include all stages of a particular research project-from start to finish. The principle extends to the control of resources and review processes, the planning process, management of the information and so on.
Access refers to the fact that First Nations must have access to information and data about themselves and their communities regardless of where it is held. The principle of access also refers to the right of First Nations communities and organizations to manage and make decisions regarding access to their collective information. This may be achieved, in practice, through standardized, formal protocols.
Possession While ownership identifies the relationship between a people and their information in principle, possession or stewardship is more concrete: it refers to the physical control of data. Possession is the mechanism by which ownership can be asserted and protected.
OCAP® is a registered trademark of the First Nations Information Governance Centre (FNIGC) www.FNIGC.ca/OCAP
[INSERT ADDITIONAL DATA TRUST ETHICAL PRINCIPLES]
An electronic registry of EXHIBIT F is maintained and updated at [insert Data Trust Ethical Principles Registry URL]


This was my group's final project. The San Diego JavaScript meetup group commissioned the task of creating a raffle program for real-world use in their monthly meetups. We held a couple client meetings for requirements and client review, as well as running a real-world raffler in the May meetup. The requirement was an easy-to-run by the admins and easy-to-register for the users. What's easier than registering using text messaging. We also added registration via URL and by the admins for the cell-phone impaired.

It should be noted that Dev Bootcamp is primarily taught in Rails. For this project we had less than one-week to teach ourselves Node.js, IBM Loopback, MongoDB, and Mocha/Chai to complete this project. This was not an easy feat, especially with Loopback's terse documentation and virtual lack of external examples (i.e., no StackOverflow examples whatsoever).
This was a three-day four-man group mini-project. Again, using an API for the movie images, we developed a mini version of Rotten Tomatoes movie review website. My role, along with my peer, was setting up the back-end database models, migrations, and validations using the Active Record ORM and training the group on the use of git flow workflow.
This was a class assignment of the classic game 2048. Here is my group's mini version called 256. My role was working out the algorithm with another partner, the game logic, the JavaScript classes and the CSS color-changes.
This was a mini two-man, two-day project to quickly build a website that made use of an API. Here we offer jokes. My role was to connect to the API source and also reduce the cost of the API by creating the logic to cache all jokes retrieved from the API source.
JavaScript Object Literals and Functions cheat sheet I created for myself to use throughout DBC. This came in real handy.
 This was a Minimum Viable Product (MVP) meant to help solidify our JavaScript intro understanding. In the future I would probably beautify the graphics and especially the reels. I would also update the "winning rules" to more closely match the payouts from a real old-school Vegas-style slot machine, but you can see the basic components at work. I was in Las Vegas the weekend of this assignment, hence the inspiration.
In this week's solo challenge, we were asked to wireframe the concept for the very website you're browsing now.
For the sake of completeness, I'm including one of my very first programs I worked on when I was 15 - 17 years old, circa 1993 - 1995. I took a Star Trek BASIC game in an old programming book I found at a thrift store and wrote an etch-a-sketch program to add graphics and an ASCII GUI front-end, as well as many other gameplay modifications. I plan to port this to JavaScript for fun after Dev Bootcamp.


Fn::ToJsonString
The Fn::ToJsonString
intrinsic function converts an object or array to its
corresponding JSON string.
You must use the AWS::LanguageExtensions transform to use the Fn::ToJsonString
intrinsic function.
Declaration
JSON
{ "Fn::ToJsonString":
Object
}
{ "Fn::ToJsonString":
Array
}
YAML
Fn::ToJsonString:
Object
Fn::ToJsonString:
Array
Parameters
Object
-
The object you want to convert to a JSON string.
Array
-
The array you want to convert to a JSON string.
Return value
The object or array converted to a JSON string.
Examples
Convert an object to a JSON string
This example snippet converts the object passed to the intrinsic function to a JSON string.
JSON
{ //... "Transform": "AWS::LanguageExtensions" //... "Fn::ToJsonString": { "key1": "value1", "key2": { "Ref": "ParameterName" } } //... }
YAML
Transform: 'AWS::LanguageExtensions' #... Fn::ToJsonString: key1: value1 key2: !Ref ParameterName #...
In both of these examples, if the Ref
to
ParameterName
resolves to resolvedValue
, the
function resolves to the following JSON string:
"{\"key1\":\"value1\"},{\"key2\":\"resolvedValue\"}"
Convert an array to a JSON string
This example snippet converts the array passed to the intrinsic function to a JSON string.
JSON
{ //... "Transform": "AWS::LanguageExtensions" //... "Fn::ToJsonString": [{ "key1": "value1", "key2": { "Ref": "ParameterName" } }] //... }
YAML
Transform: 'AWS::LanguageExtensions' #... Fn::ToJsonString: - key1: value1 key2: !Ref ParameterName #...
In both of these examples, if the Ref
to
ParameterName
resolves to resolvedValue
, the
function resolves to the following JSON String:
"[{\"key1\":\"value1\"},{\"key2\":\"resolvedValue\"}]"
Supported functions
You can use the following functions in the Fn::ToJsonString
intrinsic
function or array:
-
Fn::Base64
-
Fn::FindInMap
-
Fn::GetAtt
-
Fn::GetAZs
-
Fn::If
-
Fn::ImportValue
-
Fn::Join
-
Fn::Length
-
Fn::Select
-
Fn::Split
-
Fn::Sub
-
Fn::ToJsonString
-
Ref


Provides access to the 'Vagalume' API <https://api.vagalume.com.br>. The data extracted is basically lyrics of songs and information about artists/bands.
| Version: | 0.1.4 |
| Depends: | R (≥ 3.2.4) |
| Imports: | jsonlite, httr, stringr, plyr, magrittr |
| Suggests: | lattice, ggplot2, knitr, tm |
| Published: | 2018-11-22 |
| Author: | Bruna Wundervald |
| Maintainer: | Bruna Wundervald <brunadaviesw at gmail.com> |
| BugReports: | https://github.com/r-music/vagalumeR/issues |
| License: | GPL-2 |
| URL: | https://github.com/r-music/vagalumeR |
| NeedsCompilation: | no |
| CRAN checks: | vagalumeR results |
| Reference manual: | vagalumeR.pdf |
| Package source: | vagalumeR_0.1.4.tar.gz |
| Windows binaries: | r-devel: vagalumeR_0.1.4.zip, r-release: vagalumeR_0.1.4.zip, r-oldrel: vagalumeR_0.1.4.zip |
| OS X binaries: | r-release: vagalumeR_0.1.4.tgz, r-oldrel: vagalumeR_0.1.4.tgz |
| Old sources: | vagalumeR archive |
Please use the canonical form https://CRAN.R-project.org/package=vagalumeR to link to this page.


This article describes how to cutover from an Apache web server to an NGINX web server.
Difficulty: 1
Time: 15 minutes
NGINX is a webserver technology rapidly gaining wider acceptance due to it's ability to deliver extremely high volumes with very low resource loads. If you currently have an Apache webserver this article will help you transition cleanly from Apache to NGINX. It assumes you have an existing LAMP stack and wish to change over to a LEMP stack. The process is fairly straightforwar because the "L" and the "M" parts of your configuration will not change.
Most of this article is concerned with translating your Apache configuration to NGINX so we will start with a translation table.
| Apache | NGINX |
|---|---|
| VirtualHost | Server |
| [virtualHost] *:80 | Listen 80; |
| ServerName | server_name |
| DocumentRoot | root |
| DirectoryIndex | index |
| ErrorLog | error_log |
| CustomLog | access_log |
| Alias | location |
/etc/php.ini
.
Paths and Directories
./etc/php-fpm.d/www.conf
. file.
listen
directives and set it as follows:
www.conf listen.owner
, listen.group
, and listen.mode
directives.listen.owner
, listen.group
, and listen.mode
directives and confirm/modify them as follows:
www.conf listen.owner
, listen.group
, and listen.mode
directives.owner
and group
directives, and modify them as follows:
/etc/nginx/nginx.conf
http
context:
server
context:
This line requests that any file with a conf
extension be referenced at this point in the nginx.conf
file. In the unlikely event this line does not exist, add it.
The configuration file now will look something like this:
http { ... index index.php index.html index.htm; server { listen 80; root /usr/share/nginx/html; server_name localhost; include /etc/nginx/default.d/*.conf;
index
and server_name
parameters to look like this:
server { listen 81; ...
/etc/nginx/default.d/php.conf
and edit it so it looks like the example below:# pass the PHP scripts to FastCGI server listening on the php-fpm socket location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/run/php-fpm/php-fpm.sock; fastcgi_index index.php fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
As long as the fastcgi_pass
in the nginx.conf
file matches the listen
directive in the PHP configuration file, NGINX should be able to pass requests on to PHP.
If NGINX fails to restart, check your edits. Make sure that all of your braces ({}) are closed and that each directive ends with a semi-colon (;).
/usr/share/nginx/html/info.php
, with the following contents:
Once you copy your site content over to the NGINX root folder, test that everything works (using the :81 suffix). Once you are satisfied and ready to cutover:
/etc/nginx/nginx.conf
for editing.
listen
directive server { listen 80; server_name ...
If you want to continue to use Apache for some requests and NGINX for others, you must make sure they are listening on different ports.
Your configuration is probably a bit more complex than the example on shown above. Depending on your needs / interests you can configure your virtual hosts (server blocks), set up NGINX as a proxy server, and explore NGINX further.


SMTP
Smtp interface provides the service to send emails using the Simple Mail Transfer Protocol.
To create an ISmtp instance, at first an instance of ISmtpProvider, ISocketProvider (TCP) and ISocketProvider (TLS) must be created.
This need to be done by calling CreateSmtpProvider(), CreateTCPSocketProvider() and CreateTLSSocketProvider(tcpSocketProvider).
An ISmtpProvider can be used to create multiple ISmtp instances. To read more about the ISocket, please check:
ISocket.
When a new TaskSmtpSend is started, the connection with the SMTP server is established using TCP.
If the server allows STARTTLS, the connection will be upgraded to TLS. Otherwise TCP will continue to be used.
File information
Functions
Functions to initialize
class ISmtpProvider * CreateSmtpProvider();
CreateSmtpProvider
Creates an instance of the ISmtpProvider.
Return value
The actual ISmtpProvider instance. That instance can be freed as soon as it no longer is used by calling the C++ delete operator.
Classes
ISmtpProvider
class ISmtpProvider {
public:
virtual ~ISmtpProvider() {}
virtual class ISmtp * CreateSmtp(class IIoMux * iomux, class ISocketProvider * tcpSocketProvider, class ISocketProvider * tlsSocketProvider, class IInstanceLog * const log) = 0;
};
Overview
This class provides ISmtp instance to manage the task to send emails.
Public functions
CreateSmtpProvider
Returns a new ISmtp instance.
Parameters
| class IIoMux * const iomux | The IIoMux instance the smtp will be registered to. |
| class ISocketProvider * tcpSocketProvider | The socket provider for the TCP connection. |
| class ISocketProvider * tlsSocketProvider | The socket provider for the TLS connection. |
| class IInstanceLog * const log | The IInstanceLog instance used for loging purposes. |
Return value
An ISmtp instance that can be used to manage the task to send emails.
Remarks
The application should store a pointer to it.
ISmtp
class ISmtp {
public:
virtual ~ISmtp() {}
virtual class ISmtpSend * CreateSend(const char *from, const char *fromName, const char *subject, const char *host, const char *server, const char *userSmtp, const char *password) = 0;
virtual void SendChunk(const char *attachmentChunk, int sChunk, bool lastChunk, dword fileIndex) = 0;
};
Overview
This class provides ISmtpSend task to send an email.
Public functions
CreateSend
Returns a new SMTP Provider.
Parameters
| const char * from | The sender's email address. |
| const char * fromName | The sender's name on UTF-8. |
| const char * subject | The subject for the email on UTF-8. |
| const char * host | The host name from the SMPT server. |
| const char * server | The SMTP server. |
| const char * userSmtp | The sender's user, if authentication is required. |
| const char * password | The sender's password, if authentication is required. |
Return value
An ISmtpSend task that can be used to send an email.
SendChunk
Returns a new SMTP Provider.
Parameters
| const char * attachmentChunk | The chunk of the file that will be attached. |
| int sChunk | The size of the chunk. |
| bool lastChunk | This indicates if this is the last chunk of the attachment (true) or there are still more (false). |
| dword fileIndex | The number that identifies the attached file (starting on 0 and ending with the number of files been attached minus 1). |
Remarks
This must be called inside TaskProgress if at least one file has been attached to the email.
ISmtpSend
class ISmtpSend : public ITask {
public:
virtual void AddAttachment(const char *attachmentUrl) = 0;
virtual void AddTo(const char *rcpt) = 0;
virtual void AddCc(const char *rcpt) = 0;
virtual void AddBcc(const char *rcpt) = 0;
virtual void AddBody(const char *data, const char *format, const char *charset) = 0;
virtual void Start(class UTask * user) = 0;
};
Overview
This class implements the task to send an email.
Public functions
AddAttachment
Adds a new attachment to the email.
Parameters
| const char * attachmentUrl | The filename of the attachment that will be sent. |
Remarks
It should be called once per attachment.
AddTo
Adds a new receiver to the recipients list.
Parameters
| const char * rcpt | The receiver's email address. |
Remarks
It should be called at least once before Start(). The email will be sent to every rcpt if they are reachable (for example, it could be unreachable if your SMTP server is on "Relay Access denied" mode).
If none of the receivers is reachable, the email will not be sent.
AddCc
Adds a new receiver to the recipients list. The email will be sent as a Carbon Copy to this receiver.
Parameters
| const char * rcpt | The receiver's email address. |
Remarks
It should be called at least once before Start(). The email will be sent to every rcpt if they are reachable (for example, it could be unreachable if your SMTP server is on "Relay Access denied" mode).
If none of the receivers is reachable, the email will not be sent.
AddBcc
Adds a new receiver to the recipients list. The email will be sent as a Blind Carbon Copy to this receiver.
Parameters
| const char * rcpt | The receiver's email address. |
Remarks
It should be called at least once before Start(). The email will be sent to every rcpt if they are reachable (for example, it could be unreachable if your SMTP server is on "Relay Access denied" mode).
If none of the receivers is reachable, the email will not be sent.
AddBody
Adds the body to the email.
Parameters
| const char * data | The text that will be sent on the body. |
| const char * format | The text format i.e., text/html or text/plains. |
| const char * charset | The text charset i.e., ISO-8859-1 or UTF-8. |
Remarks
This function must be called at least one. If the email should not have a body, this function must still be called with and empty string as body and valid format and charset values.
Start
Starts the task that sends the email.
Parameters
| class UTask * user | Used for the callbacks for task completion. |
Remarks
Several ISmtpSend tasks can be called at once and the emails will be queued.
Code Examples
Initialize the Provider
#include "common/interface/smtp.h"
...
ISmtpProvider * smtpProvider = CreateSmtpProvider();
...
AppService * service = new AppService(iomux, localSocketProvider, tcpSocketProvider, tlsSocketProvider, ..., smtpProvider, &serviceArgs);
...
delete smtpProvider;
Create the ISmtp instance
app::app(IIoMux * const iomux, ISocketProvider * localSocketProvider, IWebserverPluginProvider * const webserverPluginProvider, IDatabaseProvider * databaseProvider, class Service * service, ISmtpProvider * smtpProvider, AppInstanceArgs * args) :
AppInstance(service, args)
{
this->smtp = smtpProvider->CreateSmtp(iomux, tcpSocketProvider, tlsSocketProvider, this, "<IP_ADDRESS>");
this->logFlags |= LOG_SMTP; // to show the flags generated by the SMTP class
}
app::~app()
{
if (webserverPlugin) delete webserverPlugin;
if (smtp) delete smtp;
}
Send Emails
SendEmail::SendEmail(class App * app): taskSmtp(this, &SendEmail::SmtpSendComplete, &SendEmail::SmtpSendFailed, &SendEmail::SmtpSendProgress)
{
...
}
SendEmail::~SendEmail()
{
...
}
void SendEmail::Send()
{
ISmtpSend * emailTask =<EMAIL_ADDRESS>"SenderName", "Subject", "sophos", "sophos.innovaphone.com", "usersmtp", "password");
emailTask->AddTo("receiver@innovaphone.com");
emailTask->AddTo("otherreceiver@innovaphone.com");
emailTask->AddBody("Body of the email...", "text/html", "ISO-8859-1");
emailTask->AddAttachment("test.txt");
emailTask->AddAttachment("Fish.png");
emailTask->AddAttachment("rfc821.pdf");
bufferrb = (char*)malloc(sizeof(char) * 4096);
emailTask->Start(&taskSmtp);
}
void SendEmail::SmtpSendComplete(class TaskSmtpSend * task)
{
...
}
void SendEmail::SmtpSendFailed(class TaskSmtpSend * task)
{
...
}
void SendEmail::SmtpSendProgress(class TaskSmtpSend * task, dword progress)
{
//SmtpSendProgress will be called for every attachment added. For each attachment it will be called until lastChunk will be set as true.
//progress indicates the number of the attachment requested by the task.
//It starts with "0" for the first filename added.
appInstance->smtp->SendChunk(ReadFiles(progress), len, lastChunk, progress);
}
char * SendEmail::ReadFiles(dword file) //Example function to get the attachments chunks.
{
char * path = (char*)"";
switch (file)
{
case 0:
path = (char*)"/path/test.txt";
break;
case 1:
path = (char*)"/path/Fish.png";
break;
case 2:
path = (char*)"/path/rfc821.pdf";
break;
default:
break;
}
if (!opened)
{
opened = true;
pFile = fopen(path, "rb");
fseek(pFile, 0, SEEK_END);
lSize = ftell(pFile);
rewind(pFile);
lastChunk = false;
bytesRead = 0;
}
if (!feof(pFile))
{
len = 0;
len = fread(bufferrb, 1, 4096, pFile);
bytesRead += len;
if (bytesRead >= lSize) lastChunk = true;
}
if (lastChunk)
{
opened = false;
fclose(pFile);
}
return bufferrb;
}


Jorge Dominguez
About
|
Portfolio
|
Contact
Portfolio
Crystal Game
Trivial Trivia Game
Giphy Mania
Anytime is train time!
Rock Paper Scissors


Project
The TS 60 and TS 40 phones were designed for different purposes, combining solutions for homes and offices. Inspired by the emotional relationship between people and their objects, the design has an outstanding personality expressed through the display that embraces the phone, the oblong keys and the contrast between silky and glossy textures.
In order to develop a friendly interface we invited users to co-criate images to represent common features (e.g hour and agenda, settings, contacts). The results oriented us to design a new set of icons for a matrix display.


Preparation time
less than 30 mins
Cooking time
1 to 2 hours
Serves
Serves 8
Dietary
I love the combination of strong cheese and tart chunky pickle in a ploughman's, and that’s my inspiration for this recipe. Cut through the cheesy filling and you’ll find a hidden layer of pickle waiting to tantalize your taste buds.
Equipment: You will need a 23cm/9in loose-bottomed flan tin.
Preheat the oven to 180C/160C Fan/Gas 4 and put a baking tray in to heat up.
Lay the pastry on a work surface dusted with a little flour, sprinkle the paprika over and knead the pastry lightly until the paprika has been incorporated. Wrap the pastry in cling film and chill in the fridge for 15 minutes.
Dust the work surface with a little more flour and roll the pastry into a circle that will easily cover the 23cm/9in tin, about the thickness of a pound coin. Lay the pastry over the tin and press it into the edges, right into the grooves, leaving some overhanging.
Line the pastry with baking paper and fill with ceramic baking beans to cover the base. Putthe lined tin on the preheated baking tray and bake in the oven for 25 minutes. Remove the paper and the baking beans and return to the oven for 15 minutes, until cooked through and golden-brown.
Meanwhile, mix the eggs in a jug with the milk. Spread the base of the tart shell with sandwich pickle over the base, sprinkle over the grated cheese evenly and pour in the egg mixture. Put the whole tray back in the oven on the middle shelf for 25–30 minutes, until the filling is set with just a very slight wobble in the middle.
Once the tart has cooled enough to handle, trim off the excess pastry using a sharp serrated knife. Leave to cool in the tin for 30 minutes, then transfer to a wire rack to cool completely. The tart is best served warm or cold the next day.


First Player
I warrant your honour.
HAMLET
Be not too tame neither, but let your own discretion
be your tutor: suit the action to the word, the
word to the action; with this special o'erstep not
the modesty of nature: for any thing so overdone is
from the purpose of playing, whose end, both at the
first and now, was and is, to hold, as 'twere, the
mirror up to nature; to show virtue her own feature,
scorn her own image, and the very age and body of
the time his form and pressure. Now this overdone,
or come tardy off, though it make the unskilful
laugh, cannot but make the judicious grieve; the
censure of the which one must in your allowance
o'erweigh a whole theatre of others. O, there be
players that I have seen play, and heard others
praise, and that highly, not to speak it profanely,
that, neither having the accent of Christians nor
the gait of Christian, pagan, nor man, have so
strutted and bellowed that I have thought some of
nature's journeymen had made men and not made them
well, they imitated humanity so abominably.
First Player
I hope we have reformed that indifferently with us,
sir.
HAMLET
O, reform it altogether. And let those that play
your clowns speak no more than is set down for them;
for there be of them that will themselves laugh, to
set on some quantity of barren spectators to laugh
too; though, in the mean time, some necessary
HAMLET
question of the play be then to be considered:
that's villanous, and shows a most pitiful ambition
in the fool that uses it. Go, make you ready.
Exeunt Players
Enter POLONIUS, ROSENCRANTZ, and GUILDENSTERN
How now, my lord! I will the king hear this piece of work?
LORD POLONIUS
And the queen too, and that presently.
HAMLET
Bid the players make haste.
Exit POLONIUS
Will you two help to hasten them?
GUILDENSTERN
We will, my lord.
Exeunt ROSENCRANTZ and GUILDENSTERN
HAMLET
What ho! Horatio!
Enter HORATIO
HORATIO
Here, sweet lord, at your service.
HAMLET
Horatio, thou art e'en as just a man
As e'er my conversation coped withal.
HORATIO
O, my dear lord,--
HAMLET
Nay, do not think I flatter;
For what advancement may I hope from thee
That no revenue hast but thy good spirits,
To feed and clothe thee? Why should the poor be flatter'd?
No, let the candied tongue lick absurd pomp,
And crook the pregnant hinges of the knee
Where thrift may follow fawning. Dost thou hear?
Since my dear soul was mistress of her choice
And could of men distinguish, her election
Hath seal'd thee for herself; for thou hast been
As one, in suffering all, that suffers nothing,
A man that fortune's buffets and rewards
Hast ta'en with equal thanks: and blest are those
Whose blood and judgment are so well commingled,
That they are not a pipe for fortune's finger
To sound what stop she please. Give me that man
That is not passion's slave, and I will wear him
In my heart's core, ay, in my heart of heart,
As I do thee.--Something too much of this.--
There is a play to-night before the king;
One scene of it comes near the circumstance
Which I have told thee of my father's death:
I prithee, when thou seest that act afoot,
Even with the very comment of thy soul
Observe mine uncle: if his occulted guilt
Do not itself unkennel in one speech,
It is a damned ghost that we have seen,
And my imaginations are as foul
HAMLET
And my imaginations are as foul
As Vulcan's stithy. Give him heedful note;
For I mine eyes will rivet to his face,
And after we will both our judgments join
In censure of his seeming.
HORATIO
Well, my lord:
If he steal aught the whilst this play is playing,
And 'scape detecting, I will pay the theft.
HAMLET
They are coming to the play; I must be idle:
Get you a place.
Danish march. A flourish. Enter KING CLAUDIUS, QUEEN GERTRUDE, POLONIUS, OPHELIA, ROSENCRANTZ, GUILDENSTERN, and others
KING CLAUDIUS
How fares our cousin Hamlet?
HAMLET
Excellent, i' faith; of the chameleon's dish: I eat
the air, promise-crammed: you cannot feed capons so.
KING CLAUDIUS
I have nothing with this answer, Hamlet; these words
are not mine.
HAMLET
No, nor mine now.
To POLONIUS
My lord, you played once i' the university, you say?
LORD POLONIUS
That did I, my lord; and was accounted a good actor.
HAMLET
What did you enact?

HAMLET
It was a brute part of him to kill so capital a calf
there. Be the players ready?

QUEEN GERTRUDE
Come hither, my dear Hamlet, sit by me.
HAMLET
No, good mother, here's metal more attractive.
LORD POLONIUS
[To KING CLAUDIUS] O, ho! do you mark that?
HAMLET
Lady, shall I lie in your lap?
Lying down at OPHELIA's feet
OPHELIA
No, my lord.


--- layout: default title: "The Most Beautiful Venue" id: venue ---
The Omni Amelia Island Resort will be the home to {{site.name}} once again and it is the perfect setting for an amazing time. Unlike a typical hackerspace or maker event, JSConf US is being presented in a uniqe and intimate space to encourage social interactions and give you unprecedented access to speakers and vendors. This getaway is the perfect environment to have three days, or a whole week, of complete focus on JS and community building, all while providing for your every whim. This venue, this space, this event -- it is amazing.
Nestled in Florida, just south of Georgia, the barrier island of Amelia Island is an absolute paradise, in part because it is remote location. The closest airport is Jacksonville International Airport (JAX), roughly 29 miles from the resort. If you opt to rent a car OR drive to Amelia Island, there is plenty of free parking on the resort If you do bring a car, you can head to the historic and beautiful Fernandina Beach.
How To Get Here!