Best Practices
1. Understand Promises
Make sure you learn at least the basic practices of A+ promises before diving too deep into Dexie.
Here’s a little test. Please review the code below and then ask yourself if you understood what it was doing…
function doSomething() {
// Important: Understand why we use 'return' here and what we actually return!
return db.friends.where('name').startsWith('A').first().then(function (aFriend) {
return aFriend.id; // Important: Understand what 'return' means here!
}).then (function (aFriendsId) {
// Important: Understand what it means to return another Promise here:
return fetch ('https://blablabla/friends/' + aFriendsId);
});
}
// Important: Undestand how you would call and consume the doSomething() function.
Was there any of the “Understand” parts that you didn’t understand? Then you would benefit from learning a little about promises. This will be useful knowledge whatever lib you’ll be using. Some links to dive into:
- http://www.html5rocks.com/en/tutorials/es6/promises/
- https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html
2. Be wise when catching promises!
Short Version:
Top-level code (such as on event handlers) is where you should catch promises.
Everywhere else, you should return promises to your callers rather than
catching them, unless:
...you really handle the error (not just log it)
...you just want to log it, but then also re-throw it.
Long Version:
It’s bad practice to do this everywhere:
function somePromiseReturningFunc() {
return db.friends.add({
name: 'foo',
age: 40
}).catch (function (err) {
console.log(err);
});
}
It’s much better to do just this:
function somePromiseReturningFunc() {
return db.friends.add({
name: 'foo',
age: 40
});
// Don't catch! The caller wouldn't find out that an error occurred if you do!
// We are returning a Promise, aren't we? Let caller catch it instead!
}
If you catch a promise, your resulting promise will be considered successful. It’s like doing try..catch in a function where it should be done from the caller, or caller’s caller instead. Your flow would continue even after the error has occured.
In transaction scopes, it is even more important to NOT catch promises because if you do, transaction will commit! Catching a promise should mean you have a way to handle the error gracefully. If you don’t have that, don’t catch it!
function myDataOperations() {
return db.transaction('rw', db.friends, db.pets, function(){
return db.friends.add({name: 'foo'}).then(function(id){
return db.pets.add({name: 'bar', daddy: id});
}).then (function() {
return db.pets.where('name').startsWith('b').toArray();
}).then (function (pets) {
....
}); // Don't catch! Transaction SHOULD abort if error occur, shouldn't it?
}); // Don't catch! Let the caller catch us instead! I mean we are returning a promise, aren't we?!
}
But on an event handler or other root-level scope, always catch! Why?! Because you are the last one to catch it since you are NOT returning Promise! You have no caller that expects a promise and you are the sole responsible of catching and informing the user about any error. If you don’t catch it anywhere, an error will end-up in the standard unhandledrejection event.
somePromiseReturningFunc().catch(function (err) {
$('#appErrorLabel').text(err);
console.error(err.stack || err);
});
Sometimes you really WANT to handle an explicit error because you know it can happen and you have a way to work around it.
function getHillary() {
return db.friends
.where('[firstName+lastName]')
.equals(['Hillary', 'Clinton'])
.toArray()
.catch('DataError', function (err) {
// May fail in IE/Edge because it lacks support for compound keys.
// Use a fallback method:
return db.friends
.where('firstName')
.equals('Hillary')
.and(function (friend) {
return friend.lastName == 'Clinton';
});
});
}
In the above exampe, we are handling the error because we know it may happen and we have a way to solve that.
What about if you want to log stuff for debugging purpose? Just remember to rethrow the error if you do.
function myFunc() {
return Promise.resolve().then(function(){
return db.friends.add({name: 'foo'});
}).catch(function (err) {
console.error("Failed to add foo!: " + err);
throw err; // Re-throw the error to abort flow!
}).then(function(id){
return db.pets.add({name: 'bar', daddy: id});
}).catch(function (err) {
console.error("Failed to add bar!: " + err);
throw err; // Re-throw the error!
}).then (function() {
...
});
};
3. Avoid using other async APIs inside transactions
IndexedDB will commit a transaction as soon as it isn’t used within a tick. This means that you MUST NOT call any other async API (at least not wait for it to finish) within a transaction scope. If you do, you will get a TransactionInactiveError thrown at you as soon as you try to use the transaction after having waited for the other async API.
In case you really need to call a short-lived async-API, Dexie 2.0 can actually keep your transaction alive for you if you use Dexie.waitFor().
4. Stick to Dexie.Promise and never use another Promises within transactions!
Dexie.Promise is ES6 and A+ compliant, meaning that you can use any favourite promise together with Dexie. However, within transactions, DO NOT use any other promise implementation than Dexie.Promise! Otherwise the effective transaction will be gone.
This part is no more relevant with Dexie 2.0. Instead:
4. Use the global Promise within transactions!
Make sure to use the global promise (window.Promise) within transactions. You may use a Promise polyfill for old browsers like IE10/IE11, but just make sure to put it on window.Promise in your page bootstrap.
OK:
import PromisePolyfill from 'promise-polyfill-of-your-choice';
// To add to window
if (!window.Promise) {
window.Promise = PromisePolyfill;
}
...
db.transaction(..., ()=>{
Promise.all()
Promise.race()
new Promise((resolve, reject) => { ... })
})
NOT OK:
import Promise form 'promise-polyfill-of-your-choice';
db.transaction(..., ()=>{
Promise.all()
Promise.race()
new Promise((resolve, reject) => { ... })
})
In the case you write a library (not an app) and you want your library to work on old browsers without requiring a Promise polyfill, it is still safe to use Dexie.Promise:
STILL ALSO OK:
db.transaction(..., ()=>{
Dexie.Promise.all()
Dexie.Promise.race()
new Dexie.Promise((resolve, reject) => { ... })
})
5. Use transaction() scopes wherever you gonna make more than one operation
Whenever you are going to do more than a single operation on your database in a sequence, use a transaction. This will not only encapsulate your changes into an atomic operation, but also optimize your code! Internally, non-transactional operations also use a transaction but it is only used in the single operation, so if you surround your code within a transaction, you will perform less costly operations in total.
Using transactions gives you the following benefits:
- Robustness: If any error occur, transaction will be rolled back!
- Simpler code: You may do all operations sequencially - they get queued on the transaction.
- One single line to catch them all - exceptions, errors wherever they occur.
- You can just fire off database operations without handling returned promises. The transaction block will catch any error explicitely.
- Faster execution
- Remember that a browser can close down at any moment. Think about what would happen if the user closes the browser somewhere between your operations. Would that lead to an invalid state? If so, use a transaction - that will make all operations abort if browser is closed between operations.
Here is how you enter a transaction block:
db.transaction("rw", db.friends, db.pets, function() {
db.friends.add({name: "Måns", isCloseFriend: 1}); // unhandled promise = ok!
db.friends.add({name: "Nils", isCloseFriend: 1}); // unhandled promise = ok!
db.friends.add({name: "Jon", isCloseFriend: 1}); // unhandled promise = ok!
db.pets.add({name: "Josephina", kind: "dog"}); // unhandled promise = ok!
// If any of the promises above fails, transaction will abort and it's promise
// reject.
// Since we are in a transaction, we can query the table right away and
// still get the results of the write operations above.
var promise = db.friends.where("isCloseFriend").equals(1).toArray();
// Make the transaction resolve with the last promise result
return promise;
}).then(function (closeFriends) {
// Transaction complete.
console.log("My close friends: " + JSON.stringify(closeFriends));
}).catch(function (error) {
// Log or display the error.
console.error(error);
// Notice that when using a transaction, it's enough to catch
// the transaction Promise instead of each db operation promise.
});
Notes:
friends
andpets
are objectStores registered using Version.stores() method."rw"
should be replaced with"r"
if you are just going to read from database.- Also errors occurring in nested callbacks in the block will be catched by the catch() method.
6. Rethrow errors if transaction should be aborted
Saying this again.
When you catch database operations explicitely for logging purpose, transaction will not abort unless you rethrow the error or return the rejected Promise.
db.transaction("rw", db.friends, function () {
return Promise.all([
db.friends.add ({name: "Måns", isCloseFriend: 1})
.catch(function (error) {
console.error("Couldnt add Måns to the database");
// If not rethrowing here, error will be regarded as "handled"
// and transaction would not abort.
throw error;
}),
db.friends.add ({name: "Nils", isCloseFriend: 1})
]);
}).then(function () {
// transaction committed
}).catch(function (error) {
// transaction failed
});
If not rethrowing the error, Nils would be successfully added and transaction would commit since the error is regarded as handled when you catch the database operation.
An alternate way of rethrowing the error is to replace throw error;
with return Promise.reject(error)
.
7. (Optionally:) Declare Classes
When you declare your object stores (db.version(1).stores({...})
), you only specify nescessary indexes, not all properties. A good practice is to have a more detailed class declaration for your persistant classes. It will help the IDE with autocomplete making life easier for you while coding. Also, it is very good to have a reference somewhere of what properties are actually used on your objects.
There are two different methods available to accomplish this. Use whichever you prefer:
- mapToClass() - map an existing class to an objectStore
- defineClass() - let Dexie declare a class for you
Whichever method you use, your database will return real instances of your mapped class, so that the expression
(obj instanceof Class)
will return true, and you may use any methods declared via
Class.prototype.method = function(){}
.
Method 1: Use mapToClass() (map existing class)
var db = new Dexie("MyAppDB");
db.version(1).stores({
folders: "++id,&path",
files: "++id,filename,extension,folderId"
});
// Folder class
function Folder(path, description) {
this.path = path;
this.description = description;
}
Folder.prototype.save = function () {
return db.folders.put(this);
}
/// File class
function File(filename, extention, parentFolderId) {
this.filename = filename;
this.extention = extention;
this.folderId = parentFolderId;
}
File.prototype.save = function () {
return db.files.put(this);
}
db.folders.mapToClass(Folder);
db.files.mapToClass(File);
Method 2: Use defineClass()
var db = new Dexie("MyAppDB");
db.version(1).stores({
folders: "++id,&path",
files: "++id,filename,extension,folderId"
});
var Folder = db.folders.defineClass({
id: Number,
path: String,
description: String
});
Folder.prototype.save = function () {
return db.folders.put(this);
}
var File = db.files.defineClass({
id: Number,
filename: String,
extension: String,
folderId: Number,
tags: [String]
});
File.prototype.save = function () {
return db.files.put(this);
}
Back to Tutorial
Table of Contents
- API Reference
- Best Practices
- Building Addons
- Collection
- Collection.and()
- Collection.clone()
- Collection.count()
- Collection.delete()
- Collection.desc()
- Collection.distinct()
- Collection.each()
- Collection.eachKey()
- Collection.eachPrimaryKey()
- Collection.eachUniqueKey()
- Collection.filter()
- Collection.first()
- Collection.keys()
- Collection.last()
- Collection.limit()
- Collection.modify()
- Collection.offset()
- Collection.or()
- Collection.primaryKeys()
- Collection.raw()
- Collection.reverse()
- Collection.sortBy()
- Collection.toArray()
- Collection.uniqueKeys()
- Collection.until()
- Compound Index
- Consuming Dexie as a module
- Deprecations
- Derived Work
- Design
- Dexie
- Dexie.AbortError
- Dexie.BulkError
- Dexie.ConstraintError
- Dexie.DataCloneError
- Dexie.DataError
- Dexie.DatabaseClosedError
- Dexie.IncompatiblePromiseError
- Dexie.InternalError
- Dexie.InvalidAccessError
- Dexie.InvalidArgumentError
- Dexie.InvalidStateError
- Dexie.InvalidTableError
- Dexie.MissingAPIError
- Dexie.ModifyError
- Dexie.NoSuchDatabaseErrorError
- Dexie.NotFoundError
- Dexie.Observable
- Dexie.Observable.DatabaseChange
- Dexie.OpenFailedError
- Dexie.PrematureCommitError
- Dexie.QuotaExceededError
- Dexie.ReadOnlyError
- Dexie.SchemaError
- Dexie.SubTransactionError
- Dexie.Syncable
- Dexie.Syncable.IDatabaseChange
- Dexie.Syncable.IPersistentContext
- Dexie.Syncable.ISyncProtocol
- Dexie.Syncable.StatusTexts
- Dexie.Syncable.Statuses
- Dexie.Syncable.registerSyncProtocol()
- Dexie.TimeoutError
- Dexie.TransactionInactiveError
- Dexie.UnknownError
- Dexie.UnsupportedError
- Dexie.UpgradeError()
- Dexie.VersionChangeError
- Dexie.VersionError
- Dexie.[table]
- Dexie.addons
- Dexie.async()
- Dexie.backendDB()
- Dexie.close()
- Dexie.currentTransaction
- Dexie.debug
- Dexie.deepClone()
- Dexie.defineClass()
- Dexie.delByKeyPath()
- Dexie.delete()
- Dexie.derive()
- Dexie.events()
- Dexie.exists()
- Dexie.extend()
- Dexie.fakeAutoComplete()
- Dexie.getByKeyPath()
- Dexie.getDatabaseNames()
- Dexie.hasFailed()
- Dexie.ignoreTransaction()
- Dexie.isOpen()
- Dexie.js
- Dexie.name
- Dexie.on()
- Dexie.on.blocked
- Dexie.on.error
- Dexie.on.populate
- Dexie.on.populate-(old-version)
- Dexie.on.ready
- Dexie.on.versionchange
- Dexie.open()
- Dexie.override()
- Dexie.semVer
- Dexie.setByKeyPath()
- Dexie.shallowClone()
- Dexie.spawn()
- Dexie.table()
- Dexie.tables
- Dexie.transaction()
- Dexie.transaction()-(old-version)
- Dexie.verno
- Dexie.version
- Dexie.version()
- Dexie.vip()
- Dexie.waitFor()
- DexieError
- Docs Home
- Download
- Export and Import Database
- Getting Started
- Hello World
- How To Use the StorageManager API
- Inbound
- IndexSpec
- Indexable Type
- IndexedDB on Safari
- Migrating existing DB to Dexie
- MultiEntry Index
- Promise
- Promise.PSD
- Promise.catch()
- Promise.finally()
- Promise.on.error
- Promise.onuncatched
- Questions and Answers
- Releasing Dexie
- Samples
- Simplify with yield
- Table
- Table Schema
- Table.add()
- Table.bulkAdd()
- Table.bulkDelete()
- Table.bulkGet()
- Table.bulkPut()
- Table.clear()
- Table.count()
- Table.defineClass()
- Table.delete()
- Table.each()
- Table.filter()
- Table.get()
- Table.hook('creating')
- Table.hook('deleting')
- Table.hook('reading')
- Table.hook('updating')
- Table.limit()
- Table.mapToClass()
- Table.name
- Table.offset()
- Table.orderBy()
- Table.put()
- Table.reverse()
- Table.schema
- Table.toArray()
- Table.toCollection()
- Table.update()
- Table.where()
- The three main limitations of IndexedDB
- Transaction
- Transaction.abort()
- Transaction.on.abort
- Transaction.on.complete
- Transaction.on.error
- Transaction.table()
- Tutorial
- Typescript
- Understanding the basics
- Version
- Version.stores()
- Version.upgrade()
- WhereClause
- WhereClause.above()
- WhereClause.aboveOrEqual()
- WhereClause.anyOf()
- WhereClause.anyOfIgnoreCase()
- WhereClause.below()
- WhereClause.belowOrEqual()
- WhereClause.between()
- WhereClause.equals()
- WhereClause.equalsIgnoreCase()
- WhereClause.inAnyRange()
- WhereClause.noneOf()
- WhereClause.notEqual()
- WhereClause.startsWith()
- WhereClause.startsWithAnyOf()
- WhereClause.startsWithAnyOfIgnoreCase()
- WhereClause.startsWithIgnoreCase()
- db.syncable.connect()
- db.syncable.delete()
- db.syncable.disconnect()
- db.syncable.getOptions()
- db.syncable.getStatus()
- db.syncable.list()
- db.syncable.on('statusChanged')
- db.syncable.setFilter()
- unhandledrejection-event


--- title: "Global Trends" author: "Parth Khare" date: 2021-09-30T21:13:14-05:00 categories: ["Summary Stats"] tags: ["R Markdown", "plot", "regression"] ---
Trends from VIIRS annual product released recently for 2012-2020.
You can also embed plots. See Figure 1 for example:
par(mar = c(0, 1, 0, 1))
pie(
c(280, 60, 20),
c('Sky', 'Sunny side of pyramid', 'Shady side of pyramid'),
col = c('#0292D8', '#F7EA39', '#C4B632'),
init.angle = -50, border = NA
)


{% assign section_name = section_arr[0][0] %}
{% assign section_url = section_arr[0][1] %}
{% for subsection_arr in section_arr[1] %}
{% assign subsection_name = subsection_arr[0] %}
{% assign subsection_url = subsection_arr[1] %}
{{ subsection_name }}
{% endfor %}


PASSWORD GENERATOR
PASSWORD SIZE
PREFERENCE
NUMBERS
LOWERCASE ALPHABETS
UPPERCASE ALPHABETS
CHARACTERS [!@#$%^&*_-=+?]
CHARACTERS [`~,.<>;:{}[]|]
GENERATE
COPY
Note
Click on Generate Button to generate new password
Click on Copy Button to copy generated password
You need to specify at least one set of preference to generate a password
Its adviced to keep your password long and complicated
Always use a unique password for each account you create
Don’t use personally identifiable information in your passwords
Make sure your passwords are at least 12 characters long
Make sure your passwords contain letters, numbers, and special characters
Try using phrases and add random characters, but don't replace them in easy patterns
Avoid using similar passwords that change only a single word or character
You should never share your passwords via email or text message
Password Copied


[t]Dear client,[/t]
[t]As you know, OTYS works with Textkernel and Actonomy . They provide technology for CV extraction and intelligent search technology. There are some conditions for this technology for job boards. One of the most important points of OTYS is to help you become successful. We have therefore decided to use a model for job boards based on growth. We measure your actual Actonomy and Textkernel consumption, on this basis, we will inform the above parties . You will receive at the end of the year from them a bill for actual use. This model is cheaper for you than an annual price.[/t]
[t]What does this mean for your job board?[/t]
[t]As you know, OTYS works with Textkernel and Actonomy . They provide technology for CV extraction and intelligent search technology. There are some conditions for this technology for job boards. One of the most important points of OTYS is to help you become successful. We have therefore decided to use a model for job boards based on growth. We measure your actual Actonomy and Textkernel consumption, on this basis, we will inform the above parties. You will receive at the end of the year from them a bill for actual use. This model is cheaper for you than an annual price.[/t]
[t]Yours sincerely,[/t]
[t]OTYS Recruiting Technology[/t]


| Struts 2 > Home > Tutorials > Step by Step > Understanding Interceptors |
Many Actions share common concerns. Some Actions need input validated. Other Actions may need a file upload to be pre-processed. Another Action might need protection from a double submit. Many Actions need drop-down lists and other controls pre-populated before the page displays.
The Struts Action Framework makes it easy to share solutions to these concerns using an "Interceptor" strategy. When you request a resource that maps to an "action", the framework invokes the Action object. But, before the Action is executed, the invocation can be intercepted by another object. After the Action executes, the invocation could be intercepted again. Unsurprisingly, we call these objects "Interceptors."
Interceptors can execute code before and after an Action is invoked. Most of the framework's core functionality is implemented as Interceptors. Features like double-submit guards, type conversion, object population, validation, file upload, page preparation, and more, are all implemented with the help of Interceptors. Each and every Interceptor is pluggable, so you can decide exactly which features an Action needs to support.
Interceptors can be configured on a per-action basis. Your own custom Interceptors can be mixed-and-matched with the Interceptors bundled with the framework. Interceptors "set the stage" for the Action classes, doing much of the "heavy lifting" before the Action executes.
| Action Lifecyle |
|---|
In some cases, an Interceptor might keep an Action from firing, because of a double-submit or because validation failed. Interceptors can also change the state of an Action before it executes.
The Interceptors are defined in a stack that specifies the execution order. In some cases, the order of the Interceptors on the stack can be very important.
<package name="default" extends="struts-default"> <interceptors> <interceptor name="timer" class=".."/> <interceptor name="logger" class=".."/> </interceptors> <action name="login" class="tutorial.Login"> <interceptor-ref name="timer"/> <interceptor-ref name="logger"/> <result name="input">login.jsp</result> <result name="success" type="redirect-action">/secure/home</result> </action> </package>
With most web applications, we find ourselves wanting to apply the same set of Interceptors over and over again. Rather than reiterate the same list of Interceptors, we can bundle these Interceptors together using an Interceptor Stack.
<package name="default" extends="struts-default"> <interceptors> <interceptor name="timer" class=".."/> <interceptor name="logger" class=".."/> <interceptor-stack name="myStack"> <interceptor-ref name="timer"/> <interceptor-ref name="logger"/> </interceptor-stack> </interceptors> <action name="login" class="tutuorial.Login"> <interceptor-ref name="myStack"/> <result name="input">login.jsp</result> <result name="success" type="redirect-action">/secure/home</result> </action> </package>
Looking inside struts-default.xml, we can see how it's done.
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">  <interceptor-stack name="basicStack"> <interceptor-ref name="exception"/> <interceptor-ref name="servlet-config"/> <interceptor-ref name="prepare"/> <interceptor-ref name="static-params"/> <interceptor-ref name="params"/> <interceptor-ref name="conversionError"/> </interceptor-stack>  <interceptor-stack name="validationWorkflowStack"> <interceptor-ref name="basicStack"/> <interceptor-ref name="validation"/> <interceptor-ref name="workflow"/> </interceptor-stack>  <interceptor-stack name="fileUploadStack"> <interceptor-ref name="fileUpload"/> <interceptor-ref name="basicStack"/> </interceptor-stack>  <interceptor-stack name="componentStack"> <interceptor-ref name="component"/> <interceptor-ref name="basicStack"/> </interceptor-stack>  <interceptor-stack name="modelDrivenStack"> <interceptor-ref name="model-driven"/> <interceptor-ref name="basicStack"/> </interceptor-stack>  <interceptor-stack name="chainStack"> <interceptor-ref name="chain"/> <interceptor-ref name="basicStack"/> </interceptor-stack>  <interceptor-stack name="chainStack"> <interceptor-ref name="i18n"/> <interceptor-ref name="basicStack"/> </interceptor-stack>  <interceptor-stack name="executeAndWaitStack"> <interceptor-ref name="basicStack"/> <interceptor-ref name="execAndWait"/> </interceptor-stack>  <interceptor-stack name="defaultStack"> <interceptor-ref name="exception"/> <interceptor-ref name="alias"/> <interceptor-ref name="prepare"/> <interceptor-ref name="servlet-config"/> <interceptor-ref name="i18n"/> <interceptor-ref name="chain"/> <interceptor-ref name="model-driven"/> <interceptor-ref name="fileUpload"/> <interceptor-ref name="static-params"/> <interceptor-ref name="params"/> <interceptor-ref name="conversionError"/> <interceptor-ref name="validation"/> <interceptor-ref name="workflow"/> </interceptor-stack>  <interceptor-stack name="completeStack"> <interceptor-ref name="defaultStack"/> </interceptor-stack> </interceptors> <default-interceptor-ref name="defaultStack"/> </package> </xwork>
Since we included struts-default.xml in our struts.xml, all the predefined interceptors and stacks are available for us to use in our actions.
| timer | clocks how long the action (including nested interceptors and view) takes to execute |
| logger | logs the action being executed |
| chain | makes the previous action's properties available to the current action. Used to make action chaining (reference: Result Types) |
| static-params | sets the parameters defined in struts.xml onto the action. These are the <param /> tags that are direct children of the <action /> tag |
| params | sets the request (POST and GET) parameters onto the action class. We have seen an example of this in TODO |
| model-driven | if the action implements ModelDriven, pushes the getModel() result onto the Value Stack |
| component | enables and makes registered components available to the actions. |
| token | checks for valid token presence in action, prevents duplicate form submission |
| token-session | same as above, but storing the submitted data in session when handed an invalid token; |
| validation | performs validation using the validators defined in {Action}-validation.xml (reference: Validation). |
| workflow | calls the validate method in your action class. If action errors created then it returns the INPUT view. Good to use together with the validation interceptor (reference: Validation) |
| servlet-config | give access to HttpServletRequest and HttpServletResponse (think twice before using this since this ties you to the Servlet API) |
| prepare | allows you to programmatic access to your Action class before the parameters are set on it. |
| conversionError | Adds field errors if any type-conversion errors occurred\ |
| execAndWait | Spawns a separate thread to execute the action |
| fileUpload | Sets uploaded files as action files (File objects) |
In addition to the prepackaged Interceptors, struts-default.xml includes prepackaged combinations in named Interceptor Stacks.
If the stock Interceptors aren't enough, you can implement custom Interceptors to solve a new problem or and old problem differently.
Suppose several pages in an application would like to to display a greeting that changes according to the time of day. A good way to solve this use case is to use an Interceptor to place the greeting in the session on each request. As soon as the time of day changes, so would the greeting. As an Interceptor, the greeting can be created automatically, so that the Actions need not be bothered.
package tutorial; import java.util.Calendar; import com.opensymphony.xwork.interceptor.Interceptor; import com.opensymphony.xwork.ActionInvocation; public class GreetingInterceptor implements Interceptor { public void init() { } public void destroy() { } public String intercept(ActionInvocation invocation) throws Exception { Calendar calendar = Calendar.getInstance(); int hour = calendar.get(Calendar.HOUR_OF_DAY); String greeting = (hour < 6) ? "Good evening" : ((hour < 12) ? "Good morning": ((hour < 18) ? "Good afternoon": "Good evening")); invocation.getInvocationContext().getSession().put("greeting", greeting); String result = invocation.invoke(); return result; } }
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <include file="struts-default.xml" /> <package name="default" extends="struts-default"> <interceptors> <interceptor name="greeting" class="tutorial.GreetingInterceptor" /> </interceptors> <action name="greeting" class="tutorial.GreetingAction"> <interceptor-ref name="greeting" /> <result name="success" type="velocity">greeting.vm</result> </action>  </package> </struts>
package tutorial; import com.opensymphony.xwork.ActionSupport; public class GreetingAction extends ActionSupport { public String execute() throws Exception { return SUCCESS; } }
  <title>Understanding Interceptors</title>   #set ($ses = $req.getSession())
${ses.getAttribute('greeting')}!

Let's take a look at our Interceptor class first. An Interceptor must implement com.opensymphony.xwork.interceptor.Interceptor which expects three methods.
The Greeting Interceptor returns the result from invocation.invoke. The invokemethod executes the next Interceptor in the stack or, if this is the last Interceptor, the appropriate method of the Action class. The invokemethod grants the Interceptor the power to short-circuiting the Action Invocation. Instead of calling invoke, the Interceptor can return a result String and bypass any remaining Interceptors on the stack and the Action's execute method.
An Interceptor can also execute code after the Action method executes. Just place more code after the invocation.invoke call. Control returns to each Interceptor on the stack in reverse order. When the call to invoke returns, you can continue processing.
Many Interceptors execute code only before or after the Action, but some do execute code in both places. To make coding Interceptors a little easier, the framework provides an abstract class that implements the "before and after" behaviour. Instead of calling invoke}] itself, an Interceptor can extend {{com.opensymphony.xwork.interceptor.AroundInterceptor and implement the methods before(ActionInvocation invocation) and after(ActionInvocation dispatcher, String result).
The Interceptor strategy promotes reusability and simplicity. Interceptors make it easier to separate concerns, so that we can solve one problem at a time. The best part is that each application, and each Action, controls exactly what Interceptors are used in what order.
| Next | Onward to Understanding Validation |
|---|---|
| Prev | Return to Selecting Results |


--- layout: post status: publish published: true title: Now Available in Print author: display_name: Tomas Restrepo login: tomasr email<EMAIL_ADDRESS>url: http://winterdom.com/ author_login: tomasr author_email<EMAIL_ADDRESS>author_url: http://winterdom.com/ wordpress_id: 225 wordpress_url: http://winterdom.com/2006/10/nowavailableinprint date: '2006-10-18 07:52:35 +0000' date_gmt: '2006-10-18 07:52:35 +0000' categories: - Personal - Blogging tags: [] comments: [] ---
My good friend Christian Weyer reprimanded me today because my weblog was rather impossible to print. Unfortunately, he was completely right; when I did the redesign of the site it never even occurred to me to consider that someone might want to print it, so it really was rather useless in that respect.
The good news is that I have now modified my weblog template slightly and added a new CSS sheet for print that trims the header, gets rid of the sidebar, ads and navigation menu, and positions the body of the page correctly. Hopefully this will make it far easier for those of you wanting to print portions of my site!


Roo is a JavaScript graphics library used to create HTML5 canvas element based applications. It provides a simple & easy to understand set of tools to draw shapes, images and text, attach event hadlers to those objects and many more.
Contact developer for help?


█ █ ██
The background image of starry sky is 20 years old, back from 2001. Reused from the following project:
When I was 17, I had a plan to create a space travelling adventure game. I got it to a point of a working prototype of the game interface. You can have a look:
Here's my recent arrangement of the game visual material:
[click image to see more]


|
1-Wire API for Compact.NET Version 4.00
|
Abstract base class for all 1-Wire Adapter objects. More...
Inherited by SerialAdapter, SerialAdapterX, and TMEXLibAdapter.
Public Member Functions | |
| abstract void | Dispose () |
| Gets or sets the ISite associated with this component. | |
| abstract bool | OpenPort (String PortName) |
| Opens the specified port and verifies existance of the adapter. | |
| void | FreePort () |
| Closes the port and frees all resources from use. | |
| bool | BeginExclusive (bool blocking) |
| Obtain exclusive control of this adapter object. | |
| void | EndExclusive () |
| Release exclusive control of this adapter object. | |
| abstract OWResetResult | Reset () |
| Sends a Reset to the 1-Wire Network. | |
| abstract void | PutBit (bool bitValue) |
| Sends a bit to the 1-Wire Network. | |
| abstract void | PutByte (int byteValue) |
| Sends a byte to the 1-Wire Network. | |
| abstract bool | GetBit () |
| Gets a bit from the 1-Wire Network. | |
| abstract int | GetByte () |
| Gets a byte from the 1-Wire Network. | |
| abstract byte[] | GetBlock (int len) |
| Get a block of data from the 1-Wire Network. | |
| abstract void | GetBlock (byte[] arr, int len) |
| Get a block of data from the 1-Wire Network and write it into the provided array. | |
| abstract void | GetBlock (byte[] arr, int off, int len) |
| Get a block of data from the 1-Wire Network and write it into the provided array. | |
| abstract void | DataBlock (byte[] data, int offset, int length) |
| Sends a block of data and returns the data received in the same array. | |
| abstract void | SetPowerDuration (OWPowerTime powerDur) |
| Sets the duration to supply power to the 1-Wire Network. | |
| abstract bool | StartPowerDelivery (OWPowerStart changeCondition) |
| Sets the 1-Wire Network voltage to supply power to an iButton device. | |
| abstract void | SetProgramPulseDuration (OWPowerTime pulseDur) |
| Sets the duration for providing a program pulse on the 1-Wire Network. | |
| abstract bool | StartProgramPulse (OWPowerStart changeCondition) |
| Sets the 1-Wire Network voltage to eprom programming level. | |
| abstract void | StartBreak () |
| Sets the 1-Wire Network voltage to 0 volts. | |
| abstract void | SetPowerNormal () |
| Sets the 1-Wire Network voltage to normal level. | |
| abstract bool | GetFirstDevice (byte[] address, int offset) |
Returns
true
if the first iButton or 1-Wire device is found on the 1-Wire Network. | |
| abstract bool | GetNextDevice (byte[] address, int offset) |
Returns
true
| |
| abstract bool | IsPresent (byte[] address, int offset) |
| Verifies that the iButton or 1-Wire device specified is present on the 1-Wire Network. | |
| abstract bool | IsAlarming (byte[] address, int offset) |
| Verifies that the iButton or 1-Wire device specified is present on the 1-Wire Network and in an alarm state. | |
| virtual bool | SelectDevice (byte[] address, int offset) |
| Selects the specified iButton or 1-Wire device by broadcasting its address. | |
| abstract void | SetSearchOnlyAlarmingDevices () |
| Set the 1-Wire Network search to find only iButtons and 1-Wire devices that are in an 'Alarm' state that signals a need for attention. | |
| abstract void | SetNoResetSearch () |
| Set the 1-Wire Network search to not perform a 1-Wire reset before a search. | |
| abstract void | SetSearchAllDevices () |
| Set the 1-Wire Network search to find all iButtons and 1-Wire devices whether they are in an 'Alarm' state or not and restores the default setting of providing a 1-Wire reset command before each search. | |
| virtual void | TargetAllFamilies () |
| Removes any selectivity during a search for iButtons or 1-Wire devices by family type. | |
| virtual void | TargetFamily (int family) |
| Takes an integer to selectively search for this desired family type. | |
| virtual void | TargetFamily (byte[] family) |
| Takes an array of bytes to use for selectively searching for acceptable family codes. | |
| virtual void | ExcludeFamily (int family) |
| Takes an integer family code to avoid when searching for iButtons. | |
| virtual void | ExcludeFamily (byte[] family) |
| Takes an array of bytes containing family codes to avoid when finding iButtons or 1-Wire devices. | |
| override int | GetHashCode () |
| Get Hash Code (proxies to .ToString().GetHashCode()) | |
| override bool | Equals (System.Object o) |
| Tells if objects are equal (proxies to .ToString().Equals()) | |
| override string | ToString () |
| Returns a string representation of this adapter (i.e. | |
Protected Member Functions | |
| abstract void | Dispose (bool disposing) |
| Dispose's all resources for this object. | |
| virtual void | onReset (OWResetResult rslt) |
| onReset event, fires event for all listeners | |
| virtual void | onSpeedChange (OWSpeed OldSpeed, OWSpeed NewSpeed) |
| onSpeedChange event, fires event for all listeners | |
| virtual void | onDataIO (bool isTransmit, byte[] data) |
| onDataIO event, fires for all data IO | |
| virtual internal bool | isValidFamily (byte familyCode) |
| Checks to see if the family found is in the desired include group. | |
Protected Attributes | |
| internal byte[] | exclude = null |
| exclude family codes | |
| internal byte[] | include = null |
| include family codes | |
Properties | |
| abstract OWSpeed | Speed [get, set] |
| OWSpeed representing current speed of communication on 1-Wire network. | |
| abstract bool | CanOverdrive [get] |
| Returns whether adapter can physically support overdrive mode. | |
| abstract bool | CanHyperdrive [get] |
| Returns whether the adapter can physically support hyperdrive mode. | |
| abstract bool | CanFlex [get] |
| Returns whether the adapter can physically support flex speed mode. | |
| abstract bool | CanProgram [get] |
| Returns whether adapter can physically support 12 volt power mode. | |
| abstract bool | CanDeliverPower [get] |
| Returns whether the adapter can physically support strong 5 volt power mode. | |
| abstract bool | CanDeliverSmartPower [get] |
| Returns whether the adapter can physically support "smart" strong 5 volt power mode. | |
| abstract bool | CanBreak [get] |
| Returns whether adapter can physically support 0 volt 'break' mode. | |
| abstract string | AdapterName [get] |
| The name of this adapter type. | |
| abstract string | PortName [get] |
| The port name for this adapter type (i.e. | |
| abstract string | PortTypeDescription [get] |
| Detailed description for this port type. | |
| abstract System.Collections.IList | PortNames [get] |
| Collection of valid port names for this port type. | |
Events | |
| ResetEventHandler | ResetEvent |
| An event for indicating when a 1-Wire Reset occurs and what the result is. | |
| SpeedChangeEventHandler | SpeedChangeEvent |
| An event for indicating when a 1-Wire Reset occurs and what the result is. | |
| DataIOEventHandler | DataIOEvent |
| event for indicating when data is transmitted |
Abstract base class for all 1-Wire Adapter objects.
| bool BeginExclusive | ( | bool | blocking | ) |
Obtain exclusive control of this adapter object.
| blocking | if true, blocks until available |
| abstract void DataBlock | ( | byte[] | data, |
| int | offset, | ||
| int | length | ||
| ) | [pure virtual] |
Sends a block of data and returns the data received in the same array.
This method is used when sending a block that contains reads and writes. The 'read' portions of the data block need to be pre-loaded with 0xFF's. It starts sending data from the index at offset 'off' for length 'len'.
| data | array of data to transfer to and from the 1-Wire Network. |
| offset | offset into the array of data to start |
| length | length of data to send / receive starting at 'off' |
| abstract void Dispose | ( | ) | [pure virtual] |
Gets or sets the ISite associated with this component.
Represents the method that handles the Disposed event of a component. Dispose's all resources for this object
| abstract void Dispose | ( | bool | disposing | ) | [protected, pure virtual] |
Dispose's all resources for this object.
| void EndExclusive | ( | ) |
Release exclusive control of this adapter object.
| override bool Equals | ( | System.Object | o | ) |
| virtual void ExcludeFamily | ( | int | family | ) | [virtual] |
Takes an integer family code to avoid when searching for iButtons.
or 1-Wire devices. If this method is used, then no devices of this family will be found by any of the search methods.
| family | the code of the family type NOT to target in searches |
| virtual void ExcludeFamily | ( | byte[] | family | ) | [virtual] |
Takes an array of bytes containing family codes to avoid when finding iButtons or 1-Wire devices.
If used, then no devices with family codes in this array will be found by any of the search methods.
| family | array of family cods NOT to target for searches |
| void FreePort | ( | ) |
Closes the port and frees all resources from use.
| abstract bool GetBit | ( | ) | [pure virtual] |
Gets a bit from the 1-Wire Network.
| abstract void GetBlock | ( | byte[] | arr, |
| int | len | ||
| ) | [pure virtual] |
Get a block of data from the 1-Wire Network and write it into the provided array.
| arr | array in which to write the received bytes |
| len | length of data bytes to receive |
| abstract void GetBlock | ( | byte[] | arr, |
| int | off, | ||
| int | len | ||
| ) | [pure virtual] |
Get a block of data from the 1-Wire Network and write it into the provided array.
| arr | array in which to write the received bytes |
| off | offset into the array to start |
| len | length of data bytes to receive |
| abstract byte [] GetBlock | ( | int | len | ) | [pure virtual] |
Get a block of data from the 1-Wire Network.
| len | length of data bytes to receive |
| abstract int GetByte | ( | ) | [pure virtual] |
Gets a byte from the 1-Wire Network.
| abstract bool GetFirstDevice | ( | byte[] | address, |
| int | offset | ||
| ) | [pure virtual] |
Returns
true
if the first iButton or 1-Wire device is found on the 1-Wire Network.
If no devices are found, then
false
will be returned.
| address | device address found |
| offset | offset into array where address begins |
true
| override int GetHashCode | ( | ) |
Get Hash Code (proxies to .ToString().GetHashCode())
| abstract bool GetNextDevice | ( | byte[] | address, |
| int | offset | ||
| ) | [pure virtual] |
Returns
true
if the next iButton or 1-Wire device is found.
The previous 1-Wire device found is used as a starting point in the search. If no more devices are found then
false
will be returned.
| address | device address found |
| offset | offset into array where address begins |
true
| abstract bool IsAlarming | ( | byte[] | address, |
| int | offset | ||
| ) | [pure virtual] |
Verifies that the iButton or 1-Wire device specified is present on the 1-Wire Network and in an alarm state.
This does not affect the 'current' device state information used in searches (findNextDevice...).
| address | device address to verify is present and alarming |
| offset | offset into array where address begins |
true
false
| abstract bool IsPresent | ( | byte[] | address, |
| int | offset | ||
| ) | [pure virtual] |
Verifies that the iButton or 1-Wire device specified is present on the 1-Wire Network.
This does not affect the 'current' device state information used in searches (findNextDevice...).
| address | device address to verify is present |
| offset | offset into array where address begins |
true
false
| virtual internal bool isValidFamily | ( | byte | familyCode | ) | [protected, virtual] |
Checks to see if the family found is in the desired include group.
true
| virtual void onDataIO | ( | bool | isTransmit, |
| byte[] | data | ||
| ) | [protected, virtual] |
onDataIO event, fires for all data IO
| isTransmit | if true, this is a transmit event, otherwise it is echo |
| data | The data transmitted or received |
| virtual void onReset | ( | OWResetResult | rslt | ) | [protected, virtual] |
onReset event, fires event for all listeners
| rslt | the result of the 1-Wire reset |
| virtual void onSpeedChange | ( | OWSpeed | OldSpeed, |
| OWSpeed | NewSpeed | ||
| ) | [protected, virtual] |
onSpeedChange event, fires event for all listeners
| OldSpeed | the 1-Wire speed before change |
| NewSpeed | the 1-Wire speed after change |
| abstract bool OpenPort | ( | String | PortName | ) | [pure virtual] |
Opens the specified port and verifies existance of the adapter.
| abstract void PutBit | ( | bool | bitValue | ) | [pure virtual] |
Sends a bit to the 1-Wire Network.
| bitValue | the bit value to send to the 1-Wire Network. |
| abstract void PutByte | ( | int | byteValue | ) | [pure virtual] |
Sends a byte to the 1-Wire Network.
| byteValue | the byte value to send to the 1-Wire Network. |
| abstract OWResetResult Reset | ( | ) | [pure virtual] |
Sends a Reset to the 1-Wire Network.
| virtual bool SelectDevice | ( | byte[] | address, |
| int | offset | ||
| ) | [virtual] |
Selects the specified iButton or 1-Wire device by broadcasting its address.
This operation is refered to a 'MATCH ROM' operation in the iButton and 1-Wire device data sheets. This does not affect the 'current' device state information used in searches (findNextDevice...).
Warning, this does not verify that the device is currently present on the 1-Wire Network (See isPresent).
| address | iButton to select |
| offset | offset into array where address begins |
true
false
| abstract void SetNoResetSearch | ( | ) | [pure virtual] |
Set the 1-Wire Network search to not perform a 1-Wire reset before a search.
This feature is chiefly used with the DS2409 1-Wire coupler. The normal reset before each search can be restored with the 'setSearchAllDevices()' method.
| abstract void SetPowerDuration | ( | OWPowerTime | powerDur | ) | [pure virtual] |
Sets the duration to supply power to the 1-Wire Network.
This method takes a time parameter that indicates the program pulse length when the method startPowerDelivery().
Note: to avoid getting an exception, use the canDeliverPower() and canDeliverSmartPower() method to check it's availability.
| powerDur | time factor |
| abstract void SetPowerNormal | ( | ) | [pure virtual] |
Sets the 1-Wire Network voltage to normal level.
This method is used to disable 1-Wire conditions created by startPowerDelivery and startProgramPulse. This method will automatically be called if a communication method is called while an outstanding power command is taking place.
| OneWireIOException | on a 1-Wire communication error |
| OneWireException | on a setup error with the 1-Wire adapter or the adapter does not support this operation |
| abstract void SetProgramPulseDuration | ( | OWPowerTime | pulseDur | ) | [pure virtual] |
Sets the duration for providing a program pulse on the 1-Wire Network.
This method takes a time parameter that indicates the program pulse length when the method startProgramPulse().
Note: to avoid getting an exception, use the canDeliverPower() method to check it's availability.
| pulseDur | time factor |
| abstract void SetSearchAllDevices | ( | ) | [pure virtual] |
Set the 1-Wire Network search to find all iButtons and 1-Wire devices whether they are in an 'Alarm' state or not and restores the default setting of providing a 1-Wire reset command before each search.
(see setNoResetSearch() method).
| abstract void SetSearchOnlyAlarmingDevices | ( | ) | [pure virtual] |
Set the 1-Wire Network search to find only iButtons and 1-Wire devices that are in an 'Alarm' state that signals a need for attention.
Not all iButton types have this feature. Some that do: DS1994, DS1920, DS2407. This selective searching can be canceled with the 'setSearchAllDevices()' method.
| abstract void StartBreak | ( | ) | [pure virtual] |
Sets the 1-Wire Network voltage to 0 volts.
This method is used rob all 1-Wire Network devices of parasite power delivery to force them into a hard reset.
| abstract bool StartPowerDelivery | ( | OWPowerStart | changeCondition | ) | [pure virtual] |
Sets the 1-Wire Network voltage to supply power to an iButton device.
This method takes a time parameter that indicates whether the power delivery should be done immediately, or after certain conditions have been met.
Note: to avoid getting an exception, use the canDeliverPower() and canDeliverSmartPower() method to check it's availability.
| changeCondition | change condition |
true
false
| abstract bool StartProgramPulse | ( | OWPowerStart | changeCondition | ) | [pure virtual] |
Sets the 1-Wire Network voltage to eprom programming level.
This method takes a time parameter that indicates whether the power delivery should be done immediately, or after certain conditions have been met.
Note: to avoid getting an exception, use the canProgram() method to check it's availability.
| changeCondition | change condition |
true
if the voltage change was successful,
false
otherwise.
OneWireIOException on a 1-Wire communication error
OneWireException on a setup error with the 1-Wire adapter or the adapter does not support this operation
| virtual void TargetAllFamilies | ( | ) | [virtual] |
Removes any selectivity during a search for iButtons or 1-Wire devices by family type.
The unique address for each iButton and 1-Wire device contains a family descriptor that indicates the capabilities of the device.
| virtual void TargetFamily | ( | int | family | ) | [virtual] |
Takes an integer to selectively search for this desired family type.
If this method is used, then no devices of other families will be found by any of the search methods.
| family | the code of the family type to target for searches |
| virtual void TargetFamily | ( | byte[] | family | ) | [virtual] |
Takes an array of bytes to use for selectively searching for acceptable family codes.
If used, only devices with family codes in this array will be found by any of the search methods.
| family | array of the family types to target for searches |
| override string ToString | ( | ) |
Returns a string representation of this adapter (i.e.
"DS9097U COM1")
internal byte [] exclude = null [protected] |
exclude family codes
internal byte [] include = null [protected] |
include family codes
abstract string AdapterName [get] |
The name of this adapter type.
abstract bool CanBreak [get] |
Returns whether adapter can physically support 0 volt 'break' mode.
true
false
abstract bool CanDeliverPower [get] |
Returns whether the adapter can physically support strong 5 volt power mode.
true
false
abstract bool CanDeliverSmartPower [get] |
Returns whether the adapter can physically support "smart" strong 5 volt power mode.
"smart" power delivery is the ability to deliver power until it is no longer needed. The current drop it detected and power delivery is stopped.
true
false
abstract bool CanFlex [get] |
Returns whether the adapter can physically support flex speed mode.
true
false
abstract bool CanHyperdrive [get] |
Returns whether the adapter can physically support hyperdrive mode.
true
false
abstract bool CanOverdrive [get] |
Returns whether adapter can physically support overdrive mode.
true
false
abstract bool CanProgram [get] |
Returns whether adapter can physically support 12 volt power mode.
true
false
abstract string PortName [get] |
The port name for this adapter type (i.e.
COM1, LPT1, etc)
abstract System.Collections.IList PortNames [get] |
Collection of valid port names for this port type.
abstract string PortTypeDescription [get] |
Detailed description for this port type.
abstract OWSpeed Speed [get, set] |
OWSpeed representing current speed of communication on 1-Wire network.
| DataIOEventHandler DataIOEvent |
event for indicating when data is transmitted


That wraps up a basic introduction to Core Data using a Swift and a Playground. The Core Data framework is big and there's much more explore. For more information, consider reading through the Core Data Programming Guide or looking at the source for a Core Data template project in Xcode.


[.–.] French vaccination coverage fever Guiana {border-style px;} #ffffff;} Guiana. population Guiana, years Yellow individuals health Health Vaccination municipalities number territory Ref children study household particularly populations South []. enrolled estimated forest risk yellow CI: areas reported America Sciences [–[, area conducted located low outbreak px; review unvaccinated {font-family Dis. Euro Surveill. [–[ age case cases entire font-size households levels recent survey transmission vulnerable western <− (.%, ArdillonV, Brazil Brazilian FlamandC, adults confirmed considered data double; high large residents status threat ;./-.ES.... CI] Despite European Fever Immunization Infect People QGIS Trop based border-color border-width campaigns coastal context cross-border general groups included index ith living primary river selected socioeconomic solid; statistical stratum, vaccine village weight {font-style {font-weight .–.) Brazil, Data EPIARBO Ecology FritzellC, Geographic Geographical Information Med Medicine Negl Papaïchton Public Regional [,]. [–] associated authorities bold border born catch-up center compulsory courier; coverage, dengue em; emerging estimate evidence geographical indexes insurance involved lived local lowest municipality need observed overseas places pt;} received responsible size travelers using vaccination, virus


Home
Products
Register
Order
Contact
Fruits
Choose the desired quality, size, ripeness, etc. of your produce
Ripe Mango
Calamansi
Vegetables
Choose the desired quality, size, ripeness, etc. of your produce
Carrots
Okra
Grains
Choose the desired quality, size, ripeness, etc. of your produce
White Rice
Brown Rice


title: {{object.title}}
author: {{object.author}}
content: {{object.content}}
created_at: {{object.created_at|date:'Y-m-d, H:i'}}
modified_at: {{object.modified_at|date:'Y-m-d, H:i'}}


SelectedFilePattern()
Syntax
Result = SelectedFilePattern()Description
Returns the selected pattern index chosen with OpenFileRequester() or SaveFileRequester().
Parameters
None.
Return value
The selected pattern index chosen with OpenFileRequester() or SaveFileRequester(). The first pattern is at position 0.
Example
StandardFile$ = "C:\autoexec.bat" ; initial path + file Pattern$ = "Text (*.txt)|*.txt;*.bat|" ; set first pattern (index = 0) Pattern$ + "PureBasic (*.pb)|*.pb|" ; set second pattern (index = 1) Pattern$ + "Bmp (*.bmp)|*.bmp|" ; set third pattern (index = 2) Pattern$ + "Jpeg (*.jpg)|*.jpg|" ; set fourth pattern (index = 3) Pattern$ + "All files (*.*)|*.*" ; set fifth pattern (index = 4) Pattern = 1 ; use the second of the five possible patterns as standard ; Now we open a filerequester, you can change the pattern and will get the index after closing File$ = OpenFileRequester("Please choose file to load", StandardFile$, Pattern$, Pattern) Index = SelectedFilePattern() If Index > -1 MessageRequester("Information", "Following pattern index was selected: "+Str(Index), 0) Else MessageRequester("Information", "The requester was canceled.", 0) EndIf
Supported OS
All


Better handling of additional arguments in makeFunctionsByName
convertTo{Minimization,Maximization} now flips sign of optima
Miscelaneous
logging and couting wrapper now have class smoof_function
smoof 1.5
New features
Added shortcuts {s,m}nof for generating single-/multi-objective objective functionswith numeric parameters only
Added: missing single-objective tag for BBOB functions
Added: log.scale argument for autoplot
Added: CITATION file
Bugfixes
Fixed: precision issue caused by rPython respectively RJSONIO::toJSON, which by default strips numeric values to only 4 digits.
Fixed: ggplot2 warnings
Fixed: wrong lower bound in MOP3 test function
Fixed: issue in definition of Cosine Mixture Function due to faulty online sources
Fixed: issue with min<->max conversion if functions has.simple.signature = FALSE and explicit return statement was used.
Fixed: mean function was not set properly for noisy functions
Improved docs slighly
smoof 1.4
New features
Added makeGOMOPFunction to create multi-objective test function based on a set of single objective functions.
Added new single-objective functions: Branin (modified version by Forrester et al. (2008))
Added new multi-objective functions: Van Valedhuizen’s test suite (MOP1-7), Binh-Korn function, BiSphere (bi-objective Sphere), Dent function, Viennet function.
Added first mixed parameter space funtion: Zhou2011
visualizeParetoOptimalFront now draws lines instead of points
Added possibility to draw interactive 3D surface plots via smoof::plot3D(fn, package = “plotly”)
Bugfixes
Fixed: issue in formula and global optimum of BukinN2 function
overworked and refactored autoplot functions
dropped use.facets parameter (always use facets now if discrete parameters exist)
We now support mixed functions with up to two numeric params (or one numeric vector param of length 2) and up to 2 discrete/logical (or a corresponding vector param)
visualizeParetoOptimalFront now draws lines instead of points
Removed S3 method definition of getParamSet. This function is now contained in ParamHelpers 1.8
smoof 1.3
New features
Added optional reference point ref.point for multi-objective functions
Reference point for ZDT functions is (11, 11)
Reference point for DTLZ function family is r = (11, …, 11) with #r = #objectives
Added getter getRefPoint
Added possibility to pass the true mean function of a noisy function, i.e., the “unnoisy” via the smoof parameter fn.mean
Added getter getMeanFunction
makeMPM2Function now has additional parameters rotated and peak.shape
Modified: function name is optional now
smoof 1.2
New features
Added: functions convertToMaximization and convertToMinimization
Added: main parameter for plot and autoplot. By default the function name is used for the plot title.
objective functions now can be passed an additional id attribute. All predefined smoof functions have an id now.
visualizeParetoOptimalFront now works for bi-objective functions with arbitrary search space dimensions and works by calling the mco::nsga2 algorithm. Due to this, the parameters show.only.front, limits.by.front are dropped.
Renamed makeFunctionByName to makeFunctionsByName
Added tags ‘single-objective’ and ‘multi-objective’
filterFunctionByTags now stops if both ‘single-objective’ and ‘multi-objective’ tags are passed
All functions now check the passed paramter to be of the right dimension and type
makeFunctionsByName now expects a character vector generator names (the list methods was removed)
Generator names now do not contain the ‘Function’ suffix
Bugfixes
Fixed: autoplot and plot do not work for wrapped functions.
Fixed: hasConstraints for wrapped smoof functions
Fixed: getUpperBoxConstraints
smoof 1.1
New features
Parameter set of predefined smoof function now contains a single vector parameter instead of multiple single numeric parameters. This is consistent with function calls now, since these always expect a single vector or list.
Added helper function get{Lower,Upper}BoxConstraints
smoof functions now expect an optional ‘minimize’ argument which indicates which objectives should be minimized or maximized respectively
Added shouldBeMinimized function
Added function makeFunctionByName, which expects a function name or a list of functions names. The corresponding generator(s) is/are called.
Added hasTags helper function.
filterFunctionByTags now has an additional logical argument ‘or’. If this is set to TRUE, a subset of the passed tags is sufficient to select a function.


CouchRevision Class Reference
| Inherits from | CouchResource : RESTResource : NSObject |
| Declared in | CouchRevision.h |
Tasks
Other Methods
-
document
The document this is a revision of.
property -
documentID
The document’s ID.
property -
revisionID
The ID of this revision.
property -
isCurrent
Is this the current/latest revision of its document?
property -
isDeleted
Does this revision mark the deletion of its document?
property -
properties
The document as returned from the server and parsed from JSON. (Synchronous)
propertyKeys beginning with "_" are defined and reserved by CouchDB; others are app-specific. The properties are cached for the lifespan of this object, so subsequent calls after the first are cheap. (This accessor is synchronous.)
-
userProperties
The user-defined properties, without the ones reserved by CouchDB.
propertyThis is based on properties, with every key whose name starts with "_" removed.
-
– propertyForKey:
Shorthand for [self.properties objectForKey: key]. (Synchronous)
-
– objectForKeyedSubscript:
Same as propertyForKey:. Enables “[]” access in Xcode 4.4+
-
propertiesAreLoaded
Has this object fetched its contents from the server yet?
property -
– putProperties:
Creates a new revision with the given properties.
This is asynchronous. Watch response for conflict errors! If successful, the new CouchRevision will be available as the operation's resultObject.
-
attachmentNames
The names of all attachments (array of strings).
property -
– attachmentNamed:
Looks up the attachment with the given name (without fetching its contents).
-
– createAttachmentWithName:type:
Creates a new attachment object, but doesn’t write it to the database yet.
To actually create the attachment, you'll need to call -PUT on the CouchAttachment. It's OK to call this with an attachment name that already exists; saving will overwrite the old attachment contents.
Extension Methods
Properties
attachmentNames
The names of all attachments (array of strings).
@property (readonly) NSArray *attachmentNames
Discussion
The names of all attachments (array of strings).
Declared In
CouchRevision.h
document
The document this is a revision of.
@property (readonly) CouchDocument *document
Discussion
The document this is a revision of.
Declared In
CouchRevision.h
documentID
The document’s ID.
@property (readonly) NSString *documentID
Discussion
The document’s ID.
Declared In
CouchRevision.h
isCurrent
Is this the current/latest revision of its document?
@property (readonly) BOOL isCurrent
Discussion
Is this the current/latest revision of its document?
Declared In
CouchRevision.h
isDeleted
Does this revision mark the deletion of its document?
@property (readonly) BOOL isDeleted
Discussion
Does this revision mark the deletion of its document?
Declared In
CouchRevision.h
properties
The document as returned from the server and parsed from JSON. (Synchronous)
Keys beginning with "_" are defined and reserved by CouchDB; others are app-specific.
The properties are cached for the lifespan of this object, so subsequent calls after the first are cheap.
(This accessor is synchronous.)
@property (readonly, copy) NSDictionary *properties
Discussion
The document as returned from the server and parsed from JSON. (Synchronous)
Keys beginning with "_" are defined and reserved by CouchDB; others are app-specific.
The properties are cached for the lifespan of this object, so subsequent calls after the first are cheap.
(This accessor is synchronous.)
Declared In
CouchRevision.h
propertiesAreLoaded
Has this object fetched its contents from the server yet?
@property (readonly) BOOL propertiesAreLoaded
Discussion
Has this object fetched its contents from the server yet?
Declared In
CouchRevision.h
revisionID
The ID of this revision.
@property (readonly) NSString *revisionID
Discussion
The ID of this revision.
Declared In
CouchRevision.h
userProperties
The user-defined properties, without the ones reserved by CouchDB.
This is based on properties, with every key whose name starts with "_" removed.
@property (readonly, copy) NSDictionary *userProperties
Discussion
The user-defined properties, without the ones reserved by CouchDB.
This is based on properties, with every key whose name starts with "_" removed.
Declared In
CouchRevision.h
Instance Methods
attachmentNamed:
Looks up the attachment with the given name (without fetching its contents).
- (CouchAttachment *)attachmentNamed:(NSString *)name
Discussion
Looks up the attachment with the given name (without fetching its contents).
Declared In
CouchRevision.h
createAttachmentWithName:type:
Creates a new attachment object, but doesn’t write it to the database yet.
To actually create the attachment, you'll need to call -PUT on the CouchAttachment.
It's OK to call this with an attachment name that already exists; saving will overwrite the old attachment contents.
- (CouchAttachment *)createAttachmentWithName:(NSString *)name type:(NSString *)contentType
Discussion
Creates a new attachment object, but doesn’t write it to the database yet.
To actually create the attachment, you'll need to call -PUT on the CouchAttachment.
It's OK to call this with an attachment name that already exists; saving will overwrite the old attachment contents.
Declared In
CouchRevision.h
initWithDocument:properties:
- (id)initWithDocument:(CouchDocument *)document properties:(NSDictionary *)contents
initWithDocument:revisionID:
- (id)initWithDocument:(CouchDocument *)document revisionID:(NSString *)revisionID
objectForKeyedSubscript:
Same as propertyForKey:. Enables “[]” access in Xcode 4.4+
- (id)objectForKeyedSubscript:(NSString *)key
Discussion
Same as propertyForKey:. Enables “[]” access in Xcode 4.4+
Declared In
CouchRevision.h
propertyForKey:
Shorthand for [self.properties objectForKey: key]. (Synchronous)
- (id)propertyForKey:(NSString *)key
Discussion
Shorthand for [self.properties objectForKey: key]. (Synchronous)
Declared In
CouchRevision.h
putProperties:
Creates a new revision with the given properties.
This is asynchronous. Watch response for conflict errors!
If successful, the new CouchRevision will be available as the operation's resultObject.
- (RESTOperation *)putProperties:(NSDictionary *)properties
Discussion
Creates a new revision with the given properties.
This is asynchronous. Watch response for conflict errors!
If successful, the new CouchRevision will be available as the operation's resultObject.
Declared In
CouchRevision.h


Introduction to Computer Programming > {{ group?.name }}
#
Title
No chapters in this class.
{{ chapter.name }}
{{ showModal() }}
Quick Guide
This is the teacher's chapters' area. This displays the list of chapters of the selected module. The teacher can lock/unlock all the chapters. Progress and View button will be discussed on the next step.


Aston Martin eyes luxury SUV buyers in China
Financially struggling company unveils first-ever sports-utility vehicle
by AT ContributorBritish carmaker Aston Martin unveiled its first-ever sports utility vehicle Wednesday at events in Beijing and Los Angeles, signalling it was banking on China’s growing appetite for luxury to prop up sales.
Dubbed the DBX, the new vehicle is the biggest expansion in Aston Martin’s range in the brand’s history, CEO Andy Palmer said at its launch.
The company – whose cars play a central role in the fictional British spy James Bond blockbuster films – has struggled financially in recent years, posting a loss of 13.5 million pounds last quarter.
But with its growing appetite for gas-guzzling SUVs, China presents an opportunity for the ailing carmaker, which has been hit by Brexit woes and slowing demand in Europe.
Founded in 1913, Aston Martin hopes to “more than double” its sales in China, which currently stand at around 500 units per year, Palmer told AFP.
Nearly half of all new car purchases registered in China last year were SUVs, according to industry sources.
But the growing demand for SUVs was causing environmental headaches.
Emissions from SUVs were the second-largest contributor to the increase in global carbon dioxide (Co2) emissions from 2010 to 2018 after power generation, the International Energy Agency said last month.
In that period, SUVs more than doubled their global market share from 17 percent to 39 percent, with a contribution to annual emissions rising to more than 700 megatons of Co2, the agency said.
Palmer said that the DBX was “obviously geared for performance, that’s what an Aston Martin is all about” when asked about the environmental impact of the new car.
With a four-liter V8 twin turbo-charged engine, the DBX is capable of a top speed of 181 miles (291 kilometres) per hour and doing 0-60 miles (97 kilometres) per hour in 4.5 seconds.
Aston Martin says it has splurged on the details and is betting on China’s growing demand for luxury for success.
The five-seater is priced at $189,900 in the US, with officials saying they expect a similar price in China.
Palmer said Aston Martin plans to follow in the footsteps of its German rival Porsche, which unveiled an electric model in September, and relaunch its Lagonda series “as a fully electric brand” by 2022 or 2023.
– AFP


All phenotypes that were measured over the different experiments
Yield related traits :
PW – Plant Weight : fresh weight of plant
canopy. Presented as Kg per M2.
TY – Total Yield : total fruit yield measured for each plant or plot.
Presented as Kg per M2.
BM – Biomass : Total biomass. Calculated as
TY+PW. Presented as Kg per M2.
BX – Brix (TSS) : Total Soluble solids.
Measured on sample from 10 fruits per plant/plot. Presented as precentage.
BX*Y – Brix*Total yield : Presented per M2.
To obtain the value in g/ M2 multiply by ten.
HI – Harvest Index : calculated as [ TY/(TY+PW) ]*100.
Presented as precentage.
%RED – percent red yield : calculated as the
percent of red fruit yield from total fruit yield (red & green).
Fruit morphology :
FW – Fruit Weight : average fruit weight as
measured from a random sample of 20 fruits per plant/plot. Presented as g per
fruit.
LEN – average fruit length. Measured on three fruits per plant. Presented in
mm, except for data from 2000-faculty, where measurements were taken on fruit scans and units are
arbitrary.
WID – average fruit width. Measured on three fruits per plant. Presented in
mm, except for data from 2000-faculty, where measurements were taken on fruit scans and units are
arbitrary.
LEN/WID – fruit length divided
by fruit width
PER – pericarp thickness. Measured on three fruits per plant. Measurement
was taken at the widest spot on one locule per fruit. Presented in mm, except
for data from 2000-faculty, where
measurements were taken on fruit scans and units are arbitrary.
SW – seed weight. Average seed weight from a 50 seeds sample, that were extracted from five fruits
of a single plant. Presented as weight (g) of 1000 seeds.
IC - Internal fruit color : measured as
subjective ratings for the
intensity of the color. Range is from 1 to 5 where 1 is light color
and 5 is dark.
EC – External fruit color : measured as
subjective ratings for the
intensity of the color. Range is from 1 to 5 where 1 is light color
and 5 is dark.
a* - chromaticity coordinates -green-to-red scale,
b* - chromaticity coordinates -green-to-red scale,
fruit biochemistry
CAR – carotene content in the fruit. Units are mg/g fruit
LYC – lycopene content in the fruit. Units are mg/g fruit


AmfPHP Entry Point
Feedback
Forum
Documentation
Class Reference
Source Code
AmfPHP Website
Silex Labs
More Plugins
This is the URL where you must send your requests to process them. In the
documentation
it is known as the 'entry point'. You might also see 'gateway' in some other documentation.


opycleid.musicmonoids
This module includes musical monoids and groups commonly encountered in TMT.
Noll_Monoid
opycleid.musicmonoids.Noll_Monoid()
This monoid of 8 elements acts on the set of the twelve pitch classes encoded with the usual semi-tone encoding, i.e. the set with .
It is defined by Thomas Noll as the monoid generated by the two transformations and such that and
References
Thomas Noll: The topos of triads, In: Colloquium on Mathematical Music Theory, Volume 347 of Grazer Math. Ber. Karl-Franzens-Univ. Graz, pp. 103–135, (2005).
TI_Group_PC
opycleid.musicmonoids.TI_Group_PC()
This group is the commonly named group which acts on the set of the twelve pitch classes encoded with the usual semi-tone encoding.
It is isomorphic to the dihedral group of order 24, and is generated by the following two transformations.
- The transformation is called the transposition operation, and is such that
- The transformation is called the inversion operation, and is such that
Example
from opycleid.musicmonoids import TI_Group_PC
my_group = TI_Group_PC()
print(my_group.get_operation("D","A")) ## ['T7', 'I11']
print(my_group.apply_operation("I11","B")) ## ['C']
print(my_group.mult("I11","T3")) ## "I8"
References
Alissa S. Crans, Thomas M. Fiore & Ramon Satyendra: Musical Actions of Dihedral Groups, The American Mathematical Monthly, 116:6, pp. 479-495, (2018).
TI_Group_Triads
opycleid.musicmonoids.TI_Group_Triads()
This group is the commonly named group which acts simply transitively on the set of the 24 major and minor triads, where (resp. ) represents a major (resp. minor) triad with root in the usual semi-tone encoding of pitch classes.
It is isomorphic to the dihedral group of order 24, and is generated by the following two transformations.
- The transformation is called the transposition operation, and is such that
- The transformation is called the inversion operation, and is such that
In effect, the and operations act element-wise on the pitch classes constituting the chords.
Example
from opycleid.musicmonoids import TI_Group_Triads
my_group = TI_Group_Triads()
print(my_group.get_operation("E_M","Gs_m")) ## ['I7']
print(my_group.apply_operation("I7","B_M")) ## ['Cs_m']
print(my_group.mult("I7","T4")) ## "I3"
References
Alissa S. Crans, Thomas M. Fiore & Ramon Satyendra: Musical Actions of Dihedral Groups, The American Mathematical Monthly, 116:6, pp. 479-495, (2018).
PRL_Group
opycleid.musicmonoids.PRL_Group()
This group is the group commonly used in neo-Riemannian theory, which acts simply transitively on the set of the 24 major and minor triads, where (resp. ) represents a major (resp. minor) triad with root in the usual semi-tone encoding of pitch classes.
It is isomorphic to the dihedral group of order 24, and is generated by the following two transformations.
- The transformation is called the leading-tone operation, and is such that
- The transformation is called the relative operation, and is such that
Though not a generator, the operation , called the parallel operation, is often considered, and is such that .
Example
from opycleid.musicmonoids import PRL_Group
my_group = PRL_Group()
print(my_group.get_operation("E_M","Gs_m")) ## ['L']
print(my_group.apply_operation("LPR","B_M")) ## ['C_m']
print(my_group.mult("R","LPR")) ## "PL"
References
- Alissa S. Crans, Thomas M. Fiore & Ramon Satyendra (2018): Musical Actions of Dihedral Groups, The American Mathematical Monthly, 116:6, 479-495.
- Neo-Riemannian theory.
UTT_Group
opycleid.musicmonoids.UTT_Group()
This group is called the group of Uniform Triadic Transformations (UTT) and was introduced by Julian Hook in his Ph.D. dissertation. It acts on the set of the 24 major and minor triads, where (resp. ) represents a major (resp. minor) triad with root in the usual semi-tone encoding of pitch classes.
The UTT group is isomorphic to the wreath product of order 288 and its elements are usually notated as , with , , and . Their action is as follows.
- The UTT sends the major triad to , and the minor triad to .
- The UTT sends the major triad to , and the minor triad to .
Example
from opycleid.musicmonoids import UTT_Group
my_group = UTT_Group()
print(my_group.get_operation("E_M","Gs_m"))
## Returns
## ['<4,1,->', '<4,3,->', '<4,9,->', '<4,7,->', '<4,2,->',
## '<4,11,->', '<4,6,->', '<4,10,->', '<4,4,->', '<4,0,->',
## '<4,5,->', '<4,8,->']
print(my_group.apply_operation("<7,6,->","A_M")) ## ['E_m']
print(my_group.mult("<3,5,->","<2,9,->")) ## "<7,0,+>"
References
Julian Hook: Uniform triadic transformations, Journal of Music Theory, 46(1/2), pp. 57–126, (2002).
Left_Z3Q8_Group
opycleid.musicmonoids.Left_Z3Q8_Group()
Like the group and the group, this group is an extension of by which acts simply transitively on the set of the 24 major and minor triads as defined above.
It is generated by the following two transformations.
- The transformation such that
- The transformation such that
Example
from opycleid.musicmonoids import Left_Z3Q8_Group
my_group = Left_Z3Q8_Group()
print(my_group.get_operation("E_M","Gs_m")) ## ['J0']
print(my_group.apply_operation("J0","Gs_m")) ## ['Bb_M']
print(my_group.mult("J3","T2")) ## "J1"
References
Alexandre Popoff: Building Generalized Neo-Riemannian Groups of Musical Transformations as Extensions, Journal of Mathematics and Music, 7(1), pp. 55–72, (2013).
Right_Z3Q8_Group
opycleid.musicmonoids.Right_Z3Q8_Group()
This group is the right version of the 'Left_Z3Q8_Group' above. It also acts simply transitively on the set of major and minor triads, and is generated by the following two transformations.
- The transformation such that
- The transformation such that
Example
from opycleid.musicmonoids import Right_Z3Q8_Group
my_group = Right_Z3Q8_Group()
print(my_group.get_operation("E_M","Gs_m")) ## ['J8']
print(my_group.apply_operation("J0","Gs_m")) ## ['D_M']
print(my_group.mult("J3","T2")) ## "J1"
References
Alexandre Popoff: Building Generalized Neo-Riemannian Groups of Musical Transformations as Extensions, Journal of Mathematics and Music, 7(1), pp. 55–72, (2013).
UPL_Monoid
opycleid.musicmonoids.UPL_Monoid()
A monoid which acts on the set of the 28 major, minor, and augmented triads, where (resp. , ) represents a major (resp. minor, augmented) triad with root in the usual semi-tone encoding of pitch classes.
It is generated by the following three relations.
-
The relation is the symmetric relation such that we have for , and for . This is the relational analogue of the neo-Riemannian operation.
-
The relation is the symmetric relation such that we have for , and for . This is the relational analogue of the neo-Riemannian operation.
-
The relation is the symmetric relation such that we have for , and for . It relates major and minor triads to augmented triads.
Note that for any of these generators, two triads are related if they differ by a single semi-tone move.
Example
from opycleid.musicmonoids import UPL_Monoid
my_group = UPL_Monoid()
print(my_group.get_operation("E_M","F_aug"))
## Returns ['PUPUU', 'UPUU', 'UPUPU', 'PUPUPU']
print(my_group.apply_operation("U","F_aug"))
## Returns ['Cs_M', 'F_M', 'A_M', 'D_m', 'Fs_m', 'Bb_m']
print(my_group.mult("U","UUPUU")) ## "UPUU"
References
Alexandre Popoff, Moreno Andreatta, Andrée Ehresmann: Relational PK-Nets for Transformational Music Analysis, arXiv:1611.02249.
S_Monoid
opycleid.musicmonoids.S_Monoid()
A monoid which acts on the set of the 28 major, minor, and augmented triads, where (resp. , ) represents a major (resp. minor, augmented) triad with root in the usual semi-tone encoding of pitch classes.
It is generated by the relation defined as the symmetric relation such that we have , , , and for . This relations is the same as the relation introduced by Douthett in his work on parsimonious graphs. Two triads are related by if they differ by a single semi-tone move.
Example
from opycleid.musicmonoids import S_Monoid
my_group = S_Monoid()
print(my_group.get_operation("E_M","F_aug"))
## Returns ['SSSS', 'SSSSSS']
print(my_group.apply_operation("S","E_M"))
## Returns ['E_m', 'Gs_m', 'C_aug']
References
Douthett, J., Steinbach, P.: Parsimonious Graphs: A Study in Parsimony, Contextual Transformations, and Modes of Limited Transposition, Journal of Music Theory, 42(2), pp. 241-263, (1998).
T_Monoid
opycleid.musicmonoids.T_Monoid()
A monoid which acts on the set of the 28 major, minor, and augmented triads, where (resp. , ) represents a major (resp. minor, augmented) triad with root in the usual semi-tone encoding of pitch classes.
It is generated by the relation defined as the symmetric relation such that we have, for ,
- and
This relation is the same as the relation introduced by Douthett in his work on parsimonious graphs. Two triads are related by if they differ by two semi-tone moves.
Example
from opycleid.musicmonoids import T_Monoid
my_group = T_Monoid()
print(my_group.get_operation("E_M","F_aug"))
## Returns ['TT', 'TTT']
print(my_group.apply_operation("T","E_M"))
## Returns ['C_M', 'Gs_M', 'F_m', 'A_m', 'G_aug']
References
Douthett, J., Steinbach, P.: Parsimonious Graphs: A Study in Parsimony, Contextual Transformations, and Modes of Limited Transposition, Journal of Music Theory, 42(2), pp. 241-263, (1998).
K_Monoid
opycleid.musicmonoids.K_Monoid()
A monoid which acts on the set of the 28 major, minor, and augmented triads, where (resp. , ) represents a major (resp. minor, augmented) triad with root in the usual semi-tone encoding of pitch classes.
It is generated by the relation. This is the same as the relation introduced by Douthett in his work on parsimonious graphs. Two triads are related by if they differ by the movement of two notes by a semitone each, and the remaining note by a tone.
References
Douthett, J., Steinbach, P.: Parsimonious Graphs: A Study in Parsimony, Contextual Transformations, and Modes of Limited Transposition, Journal of Music Theory, 42(2), pp. 241-263, (1998).
W_Monoid
opycleid.musicmonoids.W_Monoid()
A monoid which acts on the set of the 28 major, minor, and augmented triads, where (resp. , ) represents a major (resp. minor, augmented) triad with root in the usual semi-tone encoding of pitch classes.
It is generated by the relation. This is the same as the relation introduced by Douthett in his work on parsimonious graphs. Two triads are related by if they differ by the movement of a single note by a semitone, and the remaining notes by a tone each.
References
Douthett, J., Steinbach, P.: Parsimonious Graphs: A Study in Parsimony, Contextual Transformations, and Modes of Limited Transposition, Journal of Music Theory, 42(2), pp. 241-263, (1998).
ST_Monoid
opycleid.musicmonoids.ST_Monoid()
A monoid which acts on the set of the 28 major, minor, and augmented triads, where (resp. , ) represents a major (resp. minor, augmented) triad with root in the usual semi-tone encoding of pitch classes.
It is generated by the two relations and described above.


NodeJS To Do List
Todo List
Task
Status
Priority
Due Date
Note
Last Modify Time
Create Time
Edit
Delete
Add ToDo
Adding Todo by api server
Task:
Status:
Priority:
Due Date:
Note:


#include <math_ops.h>
Multiply the matrix "a" by the matrix "b".
The inputs must be two-dimensional matrices and the inner dimension of "a" (after being transposed if transpose_a is true) must match the outer dimension of "b" (after being transposed if transposed_b is true).
Note: The default kernel implementation for MatMul on GPUs uses cublas.
Arguments:
Optional attributes (see Attrs
):
Returns:
Output
: The product tensor.
Constructors and Destructors |
|
|---|---|
MatMul(const ::tensorflow::Scope & scope, ::tensorflow::Input a, ::tensorflow::Input b)
|
|
MatMul(const ::tensorflow::Scope & scope, ::tensorflow::Input a, ::tensorflow::Input b, const MatMul::Attrs & attrs)
|
Public attributes |
|
|---|---|
operation
|
|
product
|
Public functions |
|
|---|---|
node() const
|
::tensorflow::Node *
|
operator::tensorflow::Input() const
|
|
operator::tensorflow::Output() const
|
|
Public static functions |
|
|---|---|
TransposeA(bool x)
|
|
TransposeB(bool x)
|
Structs |
|
|---|---|
|
tensorflow:: |
Optional attribute setters for MatMul. |
Operation operation
::tensorflow::Output product
MatMul( const ::tensorflow::Scope & scope, ::tensorflow::Input a, ::tensorflow::Input b )
MatMul( const ::tensorflow::Scope & scope, ::tensorflow::Input a, ::tensorflow::Input b, const MatMul::Attrs & attrs )
::tensorflow::Node * node() const
operator::tensorflow::Input() const
operator::tensorflow::Output() const
Attrs TransposeA( bool x )
Attrs TransposeB( bool x )


Tmply dummy text of the printing and typesetting indust Lorem Ipsum has been theitry's snce simply dummy text of the printing.Phasellus enim libero, blandit vel sapien vitae, condimentum ultricies magna euismod.Tmply dummy text of the printing and typesetting indust Lorem Ipsum has been theitr.
Tmply dummy text of the printing and typesetting industry. Lorem Ipsum has been theindustry's standard dummy text ever since the 1500s, when an unknown printer took.
Dorem Ipsum has been the industry's standard dummy text ever since the en an unknown printer galley dear.
Dorem Ipsum has been the industry's standard dummy text ever since the en an unknown printer galley dear.
Dorem Ipsum has been the industry's standard dummy text ever since the en an unknown printer galley dear.
PROFESSIONAL TEACHER
NEWS COURSES EVERY YEARS
NEWS COURSES EVERY YEARS
REGISTERED STUDENTS


Popular country pub The Battleaxes given a zero food hygiene rating
The new owners are working to make improvements
by Heather PickstockAn historic North Somerset pub, built as part of a sprawling Gothic estate, has been given a zero food hygiene rating.
North Somerset Council environmental health officers inspected the Battleaxes in Wraxall last month, telling operators 'major improvements' were needed.
Pub operators – the Country Pub Group – have been told ‘major improvement’ is needed to its food handling procedures and the management of food safety
It has also been told to improve the cleanliness and condition of the facilities and the building.
The owners, who purchased the pub in August, are now working with North Somerset Council to bring forward the necessary improvements.
Environmental health officers (EHO) are expected to revisit the pub this week.
Matthew Lowe of the Country Pub Group said the poor rating was as a result of some structural issues which had been remedied.
He added issues with paperwork had arisen as a result of food safety system used by the former operators being phased out and replaced with new procedures used by the Country Pub Group.
'We believe the kitchen is of a good level'
Mr Lowe said: “Following instruction from EHO we are working closely to improve our rating.
“A lot of structural issues were identified such as needing to replace some flooring and painting of walls which we have now completed.
“We are always working with EHO to improve our record keeping and paperwork.
“We believe the kitchen is of a good level and if EHO thought it was unsafe they would have shut it down.
“We would also like to welcome any customers into the kitchen at any time to see for themselves.”
The Country Pub Group, owned by hospitality entrepreneur Mr Lowe, purchased The Battleaxes from the Flatcappers chain in August.
The group has three other pubs – two of which have a five-star food hygiene ratings and one of which has a four-star rating.
The purchase of the Battleaxes by the group has created nine new jobs and seen a major supply chain move from national to local suppliers, pumping additional cash into the local economy.
Mr Lowe said the EHO visit will not affect any bookings. A revamp of the menu is also planned in January.
As well as a bar and large restaurant and function room, the Battleaxes also boasts boutique hotel rooms and a small basement bar called The Shindig.
The history of the pub
The Battleaxes – which is a popular venue for wedding parties and Sunday lunches - was built as a Temperance house by the benevolent Matilda Blanche Gibbs, widow of wealthy merchant William Gibbs, in 1881.
She wanted the Victorian building as somewhere for estate workers to meet without drinking alcohol.
But at the outbreak of World War I the Temperance House was leased to Georges Brewery, later Courage Brewery.
When Courage’s gave back the lease to the late Lord Wraxall (Richard Gibbs) in the 1960s he promptly sold the building.
Changes in ownership and name followed with reports of a fire in the 1970s. Success varied but a brief spell as an Indian restaurant didn’t suit the locals.
For the latest news in and around Bristol, check back on Bristol Live's homepage.


val hasEnded: Boolean
Returns true if the progress tracker has ended, either by reaching the DONE step or prematurely with an error


| Name of Site: | URL | Date Added |
|---|---|---|
| ClassLink | launchpad.classlink.com | 2-26-19 |
| Google Classroom | classroom.google.com | 2-26-19 |
| Infinite Campus | icampus.sf.k12.sd.us/campus/portal/student/siouxfalls.jsp | 2-27-19 |
| Synergy (CTE) | synergy.pitsco.com | 2-26-19 |
| Socrative | www.socrative.com | 2-26-19 |
| Kahoot | www.kahoot.it | 2-26-19 |
| Gimkit | www.gimkit.com/play | 2-27-19 |
| Desmos - Student | student.desmos.com | 3-1-19 |


Continued education in finance, accounting, and analysis.
Pull resources to identify investment oppertunities.
Share data, ideas and analysis.
A social club to share ideas and have compelling conversations.


Get articles currently on a section front or the home page.
Popular articles on NYTimes.com.
Real-time feed of NYT published articles.


--- layout: page title: Page not found image: permalink: /404.html ---
The page you are looking for doesn't exist or has been moved.
Back to the bLog


Set focus on a grid, then use ARROW keys. This plugin does not do any focus management, it only handles state, and triggers an event on state change. Autowrap is set to false by default.
View developer console to see all debug output.
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |


Kaia Gerber brings Pete Davidson as her wedding date
by Leah GrothPete Davidson and Kaia Gerber are getting more serious by the moment!
On Saturday night, supermodel Kaia brought Pete as a wedding date to her pal's nuptials, holding hands as they walked into the event. Kaia looked incredible in a blue and white dress, while Pete cleaned up nicely in a black, tailored suit.
Hours earlier the hot new couple were spotted packing on the PDA at their Miami hotel.
The two have been attached at the hip since they were first linked in October.
"My love language, when I'm in a relationship, is I treat the person I'm with like a princess," Pete, 26, recently told Paper magazine for its #BreakTheInternet issue. "I try and go as above and beyond as possible, because that's what you're supposed to do? If you're in a relationship with someone, you're just supposed to make that person feel as special as possible."
The latest celeb PDA pics:


Owner, therapist and teacher
(Thailand)
The Chiang Mai
Wellness Centre
2014 – Present
I am the owner of a holistic clinic located in Chiang Mai, Thailand where I facilitate therapy and teach personal development workshops. Therapy integrates hypnotherapy, counseling, EMDR, EFT and NLP with applied Tibetan and Kabbalistic healing practices and is conducted within the belief system of the client.
Therapist and teacher
(Thailand)
2012 - 2014
Facilitated therapy practice and taught Reiki and a variety of personal development workshops from these wellness centres located in Chiang Mai, Thailand.
Workshop leader
(Thailand)
2011
Hosted a sequence of personal development workshops at The Sanctuary, Ko Pangan, Thailand.
Reiki master and therapist
(India)
Magic Park and
Bliss Garden
2009 – 2011
Taught Reiki workshops and facilitated personal therapy from these spiritual centres located in Goa, India.
2007 – 2009
Clinical hypnotherapist working alongside the well known Irish herbs doctor, Dr. Dillis Clare.
Hypnotherapist and teacher
(Netherlands)
2003 – 2007
Began private therapy practice and built client base and experience in Amsterdam.


The Innocents (1961)
Grade: 87
"The Innocents" is an excellent ghost story, set in Victorian-era England. The script, based on the Henry James novel 'The Turn of the Screw', is first rate, as is the direction and casting. Child actors Martin Stephens and Pamela Franklin give performances far better than could be expected, and the plot has much drama and suspense.
The story has indifferent playboy Michael Redgrave hiring first-time governess Deborah Kerr to care for his orphaned cousins Flora (Franklin) and Miles (Stephens). Upon arrival at the large, wealthy estate and mansion, Kerr finds the children to be both happy and friendly. But she is troubled by what she considers to be sinister aspects to their personalities.
Kerr is startled but not intimidated by apparitions. These ghosts resemble descriptions by housekeeper Megs Jenkins of the former governess and valet, who had a twisted affair and died violently. Kerr believes that these evil spirits are possessing the souls of the children, and takes upon herself the task of exorcising them.
Screenwriters William Archibald and Truman Capote no doubt enjoyed adding creepy touches to the children's dialogue (e.g. Flora delightedly tells Kerr: "Look! A spider is eating a butterfly!") and in making the ever-saintly Kerr appear to be losing her sanity.
Kerr's lack of assurance in the film's early stages doesn't jive with her later strong will to confront the spirits. Jenkins' character concedes the children's possession but disagrees with Kerr's confrontational methods for helping them.
"The Innocents" was unjustly ignored by Oscar, but it was awarded Best British Film by the British Academy Awards.
<EMAIL_ADDRESS>http://members.tripod.com/~Brian_Koller/movies.html
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


{% include 'partials/head.html' %}
These wonderful people made a pull request JuniorDev Perth does Hacktoberfest!


Registered users can be part of great community. They have access to many TV show details and can join up to three TV show fan groups and comment in them
It will be a lot of fun!


CKI (Circle K International) is an organization at the collegiate and university levels. The main focus of CKI is to promote community service, leadership development, as well as fellowship and friendship. Registering allows you to easily sign up for events with just one click! However, you also not have to be an official member to come out to many of our events!


>>
<<
Usr
Pri
JfC
LJ
Phr
Dic
Voc
!:
Help
Primer
Link - dyad ;
The dyad ; (link) makes it easy to create a list of boxed nouns.
2 3 4 ; 4 7 9
+-----+-----+
|2 3 4|4 7 9|
+-----+-----+
'abc' ; 5 7 9
+---+-----+
|abc|5 7 9|
+---+-----+
(2 3 $ 'abcdef') ; (i. 3 4) ; 23
+---+---------+--+
|abc|0 1 2 3|23|
|def|4 5 6 7| |
| |8 9 10 11| |
+---+---------+--+
Look link up in the J Dictionary. Note that its dyad rank is _ _ so it applies to its entire left and entire right argument. It always boxes its left argument, and its right argument is boxed only if not already boxed. Boxing its right argument only if not already boxed makes the following work:
'abc' ; 'defg' ; 'hijkl'
+---+----+-----+
|abc|defg|hijkl|
+---+----+-----+
This is evaluated from right-to-left as:
'abc' ; ('defg' ; 'hijkl')
So the right argument to the leftmost link is already boxed, and will not be boxed again. Boxed again? What would that look like?
'abc' ; < 'defg' ; 'hijkl'
+---+------------+
|abc|+----+-----+|
| ||defg|hijkl||
| |+----+-----+|
+---+------------+
Boxes can be nested!
>>
<<
Usr
Pri
JfC
LJ
Phr
Dic
Voc
!:
Help
Primer


CrimPapers
Articles published on 27 April 2018
On 27 April 2018, 9 new articles were published in 9 journals.
The Effects of Recurrent Physical Abuse on the Co-Development of Behavior Problems and Posttraumatic Stress Symptoms Among Child Welfare-Involved Youth
Privatizing Punishment: Testing Theories of Public Support For Private Prison and Immigration Detention Facilities by Peter K.enns
,
mark D.ramirez
Mean Lives, Mean Laws: Oklahoma’s Women Prisoners by Kimberly R. Kras
Counting Dead Women in Australia: An In-Depth Case Review of Femicide
Uniting Needs, Responses, and Theory During Reentry: the Distinct and Joint Contributions of Peer Influence and Religious/spiritual Support on Substance Use by Thomas J. Mowen, John H. Boman, Richard Stansfield
Recent Police Recruits’ Existing Knowledge of the Police and Organisational Commitment
Variation in Detainee Risk Assessment Within Police Custody Across England and Wales by Melanie-Jane Stoneman, Lisa Jackson, Sarah Dunnett, Louise Cooke
Punishment and Welfare Revisited by David Garland
How Safe Are Women-Only Parks Perceived to Be?


Tech Watch
is SERIOUS BUSINESS
Thus said the Ancients:
The 5 first phases
of the Tech Watch Process
in IT firms
are...
1/5 - Identify and analyse
the company's information needs
2/5 - Search and obtain the necessary information
3/5 - Evaluate and analyse the information obtained
4/5 - Disseminate the results
5/5 - Use the information
in the decision making process
These five phases are executed
continuously and cyclically.
Often the decisions made imply the existence
of new researches, starting a new cycle.
But AFAIK,
this all POV is an ideal scenario
and such things just never happend this way.
in tech agencies
DISRUPTION
is the natural way things happend.
You just don't even know
what the next project is made of.
Now let's avoid stop-gap solutions
(& stack-overflow driven development)
You need serious stuff
Choose your weapons technologies
Prepare to fight code & ship
and use MAGIC as often as possible
Some simple hints
that you could be interested in
Read articles.
75% of my TW is reading, 25% is practicing
If you don't read, just don't write neither.
Read, comment, share
tag as favorite any good finding
You won't memorize it all
but you'll always know where to find it again
Improve your Elfish English
through reading technical english articles,
If you can't stand reading
technical english articles
just stop computer science right now.
But no worries about your English
Skills come with practice.
The Art Of Staying Up To Date
- Follow the trends
- Observe other's passions
- Note public successfull projects
- Note what the
nice leazy guys use
- But be warn of tech adverstising hidden in tech talks
Right now, you are just choosing
what your carrier will be!
So let's detail the good stuff:
Follow people who tweets about TECH
- Sharing, not taunting nore live-tweeting
- Unfollow talkative parrots
- Leave your own Twitter timeline clean
(recruiters read such things)
Subscribe to a few newsletters
Weekly newsletters is best tempo
Keep an eye in best active places
Always check the community size
Always evaluate the adoption rate
Be aware of tech you hear over and over
git, vagrant, BDD, Agile, NOSQL,
Scala, Golang, whatever
You're not getting old
if you're not getting bored
Stay curious for the rest of your life. Get excited
Not out of compulsion
Choose a small list of very smart sources,
and just read them regularly
Unfollowing, unsubscribing is very OK
Start a devlog
Do not underestimate the power of writing things down.
Share your experiences & expect feedbacks
IMHO, for developers
devblogging is personal branding the right way.
DEMO : Write Pages on Github
DEMO : FOLLOW & organize LISTS
[TODO] Promote your
weekly tech watch