Here's whats comin:
- What is Javascript?
- Basic Concepts
- Scope & Closure
- Callbacks and Lambda Expressions
- Prototypical Inheritance
Javascript Is:
- Dynamic as opposed to Static
- Loosely typed as opposed to Strictly typed
- Weakly typed as opposed to Strongly typed
- Prototypical as opposed to Classical
- Functionally Scoped as opposed to Lexically Scoped
- High Level as opposed to Low Level
- Object Oriented with a dash of Functional
BUT WHAT DOES IT MEAN?
Dynamic
- Dynamic means the code does not need to be pre-compiled to run
- Many tasks that other languages do during compilation are done during runtime
- Dynamic languages are easier to work with, but more error prone
Loose
- Dynamic languages are loosely typed: type is figured out at runtime
- Variables, Functions, etc do not need to specify a type
- JS has types! (we have typeof for a reason). The loosely typed system and lack of annotations just hides these details from you. I think this is a bad thing, personally
- JS primitive types are: Boolean, Null, Undefined, Number, String, Symbol (ES6 only)
- And Object
- Arrays are not a type in JS, technically. They are just objects.
Weak
- Types can be changed on a whim, via casting or coercion
- JS won't care if you change your int 5 to a float 5.5, they're all numbers to js
- You can even changes numbers to strings and vice versa, and the only error you'll get is if you try to use the wrong method on them. A tool like flow, or just basic type checking, can prevent this problem
- You've done type coercion if you've ever used a number or string method
Prototypical
- The big one, the most important, and the most misunderstood
- Most languages are Class based, javascript is not
- This is a good thing, but unfortunately the implementation of Prototypes in JS is not exactly user friendly
- Every object in JS is part of a prototype chain, and has a prototype
- Prototypes are just Objects (see a theme yet)
- 2 Types of Prototypes: Delegates and Mixins
- Delegates persist across all instances of a thing, Mixins are just copies
- When you create a new Array, it inherits the Delegate prototype of the Array object, gaining access to all Array methods in the process
Functionally Scoped
- Most languages are block scoped, not function scoped
- In JS only Functions can create scope, if, else, etc do not
- This will change in ES6, JS will also have Lexical scope as well as Function scope
- You can actually see scope, just use console.dir on a function
High Level
- The technical details of the computer are abstracted away from you
- Basically, you don't have to manage memory, or interact directly with hardware, etc
- By nature all Dynamic languages are high level
- High level languages: Javascript, Ruby, Python, PHP, Go
- Low level languages: C, Lisp, Rust, Nim, Swift (sorta)
Object Oriented
- Everything except for type primitives in JS is an object. EVERYTHING ( except undefined )
- JS coerces number, string, boolean primitives to Objects. undefined is the exception
- Numbers? Objects. Functions? Objects. Arrays? Objects Strings? Objects
- Think back to the slide on prototypical inheritance
- This is why myNum.toString() works
Scope, Closure, and Context
- Scope: Is created by a Function (in ES5, in ES6 JS is also lexical)
- Closure:
- Is when you have scope within scope (ie, functions within functions)
- Closures inherit the scope of their parent function, allowing you to share variables between scopes
- Using Closures to create privileged and private variables/functions is a very common pattern
- Context: Is the value of the this keyword, which i'm gonna need another slide to explain
This
- This behaves weirdly in javascript compared to other languages
- By default it refers to the window or global object, and with
'use strict'
on it returns undefined
- Other than that, it's value depends on where and how it's used
- This called in a function refers to where the function was called, not the internal scope of the function
- Yet when used inside an object literal it works as expected, referring to the object
- There are so many exceptions and rules i'll just refer you to the MDN page on it
Callbacks and Lambdas
- Javascript supports Closures, Functions as Objects, Higher Order Functions and Lambdas
- aka First Class Functions, or Functional Programming, depending on who you talk to
- Higher Order Functions are Functions that can take Functions as parameters
- Lambda Expressions is just when you can use a function's return as a value
So How Do Callbacks work anyway?
- I'm glad you asked Little Jimmy
- A callback is just a function, used as a parameter in another function
- It's basically just a pattern, often used to handle the result of some previous action
- Promises will prolly replace Callbacks for async, but callbacks will always have their uses
Prototypical Inheritance
- From Wiki:
Prototype-based programming is a style of object-oriented programming in which behaviour reuse (known as inheritance) is performed via a process of cloning existing objects that serve as prototypes. This model can also be known as prototypal, prototype-oriented, classless, or instance-based programming.
- You can create a Class system with Prototypes. You cannot create Prototypes with Classes.
- You use it all the time, whether you realize it or not.
Prototypical Inheritance 2
- A Prototype then is just a re-usable object available to all instances of something.
- If you create a new jQuery object, you have access to all of jQuery's methods.
- If you create a new Array, you have access to all Array methods ( slice, forEach, etc )
- If you create a new HTMLElement, you have access to the DOM methods ( .getElementBy etc etc )
- This kind of Prototype is called a Delegate Prototype
Prototypical Inheritance 3
- Everything in Javascript descends from the Object prototype (its Objects all the way down)
- All prototypes inherit the methods and properties of the prototype above them
- This is called the Prototype Chain, the example below is a DIV from the DOM api
- Object -> EventTarget -> Node -> Element -> HTMLElement -> HTMLDivElement
- Altering the prototypes of existing Objects is considered bad practice
- If we changed what
Array.slice()
did for instance, we could potentially break everything in the app that relied on Array.slice()
- Despite what I literally just typed above: altering the prototype like this is what a lot of polyfills are actually doing, although smart ones fallback to the native if available
Prototypical Inheritance 4
- For one off inheritance, you can also just straight up copy objects
- This approach is called a Mixin
- When you use a library's extend function, this is usually what they're doing
- You can combine the two techniques, or just copy from many objects if you want
- What happens if you copy an object and the keys conflict with another object's? Shit breaks, sorry
- This is easily avoided with proper scoping though
- A Prototypical Inheritance library like Stampit makes all the above very very easy
Thats it, we're done now
- What should I talk about next?
- Option 1: The DOM
- Option 2: Phoenix Front End Overview #2
- Option 3: Browserify / ES6 / FutureLyfe
- Option 4: Javascript Unit Testing
/


The gifts are many, and I am thankful for everyone. But one of the greatest gifts, is the gift of my dear Son.
Father - Ankur Sharma
Mother - Seema Sharma
Enter you comments for Avyan


Download
Usage
Including it in your page
<script src="japi.js" type="module"></script>
Importing it in your Javascript file
import JAPI from './japi.js'
Instantiate the class
const japi = new JAPI( 'https://yoursite.com', 'YOUR_JOOMLA_TOKEN' )
Examples
GET (list)
japi.get('content/article') .then(response => console.log(response))
GET (single)
japi.get('content/article/1') .then(response => console.log(response))
CREATE
japi.post('content/article', { alias: 'my-article', articletext: 'My text', catid: 2, language: '*', metadesc: '', metakey: '', title: 'My New Article' }).then(response => console.log(response))
DELETE
japi.delete('content/article/1') .then(response => console.log(response))
UPDATE
japi.update('content/article/1', { catid: 2, title: 'My Updated Article', }).then(response => console.log(response))
More info
Check out more infomation on Joomla's core APIs.


Grid One
Grid Two
Grid Two
Grid Three
Grid Three
Grid Three
Grid Four
Grid Four
Grid Four
Grid Four
Grid Five
Grid Five
Grid Five
Grid Five
Grid Five
Grid 200
Grid 400
Grid 400
Grid 200


Full stack developer with an emphasis on iOS front-end development.
Swift / Obj-C PostgreSQL
-
JavaScript HTML / CSS
-
Express Node.js
Mink | Lead iOS Developer
Allows user to find prominent colors from images
-
Snapvite | Full-stack Developer
Intuitive automated event creation and coordination
-
CustomPax Inc | Production
Support practitioners in creating targeted formulas
Tradecraft | Engineering
Feb 2015 - Present
-
UC Davis | B.A. Music Theory
Sept 2010 - June 2013
Traveler, thespian, musician, developer and dreamer. Always thinking of novel ways to use tech to change the future. In my spare time, you can find me composing songs or turning a passion project from idea to reality. I believe that learning is an ongoing process that never truly stops and I use experiences from my travels to help me grow.
Think you have the next big app idea or want to work on a film project? Even if it's just to chat, I'd love to hear from you!
N/A
-->


>
Team Profiles
Richard
Manager
- Employee ID: 1
- Email<EMAIL_ADDRESS>- Office Number: 12
Bob
Engineer
- Employee ID: 2
- Email<EMAIL_ADDRESS>- GitHub Username: bobbycodesalot
Ricky
Engineer
- Employee ID: 4
- Email<EMAIL_ADDRESS>- GitHub Username: rickythecoder
Ken
Intern
- Employee ID: 3
- Email<EMAIL_ADDRESS>- School: UC Davis
Ralph
Intern
- Employee ID: 5
- Email<EMAIL_ADDRESS>- School: UC Davis


Lecture 20: Amplicon sequencing and microbial ecology¶
DNA extraction (description of the process ; it’s easy, you can do it at home)
Polymerase chain reaction (definition ; discussion and video)
Barcoded PCR (description)
Gel electrophoresis (defintion http://www.nature.com/scitable/definition/gel-electrophoresis-286)
DNA sequencing (description)
- 16S resources:
Reference sequence databases
Greengenes (archaeal and bacterial)
Silva (archaeal, bacterial, and eukaryotic)
Ribosomal Database Project (RDP) (archaeal and bacterial)


Note: In SuccessWhale versions prior to v3.0.4, passwords were stored using the weak MD5 algorithm. v3.0.4 upgrades this to use the much more secure bcrypt algorithm, but as a side-effect users' previous passwords can no longer be used for login. If you are affected by this, please log in using Twitter or Facebook, then recreate your alternative login credentials from the Config page.
There is no evidence that the SuccessWhale database was compromised at any point, so there is no need to change your passwords.
Privacy
SuccessWhale is a Twitter and Facebook client — to use it, you must give it access to the Twitter and Facebook accounts you would like to use it with. This process is done using OAuth, which means that at no point does SuccessWhale see your Twitter or Facebook passwords.
We ask the services for the following permissions. For Twitter:
- To post as you
- To read your timelines
- To read your private messages
For Facebook:
- To update your status
- To publish to your wall
- To read your feeds and wall
- To manage your notifications
- To see your groups
- To see your photos
- To see your friends' photos
- To access your account without needing authorisation every time
SuccessWhale doesn't do anything with your accounts unless you ask it to.
Aside from access tokens for these services, SuccessWhale stores your user preferences, such as your column setup and preferred theme. It does not store any personal data, and does not log your activities.
At any time, you can disconnect one or more of your accounts from SuccessWhale, which will prevent SuccessWhale from accessing them. You may also delete all your SuccessWhale data at once if you leave the service, which will remove all accounts and user preferences. No records of your account will be retained.
Security
SuccessWhale is a Javascript-based web application that communicates with an API. All this communication is conducted using HTTPS, and the web application is also available via HTTPS. (Please note that I do not have a CA-signed certificate for the successwhale.com domain. SuccessWhale is hosted on my own server using a self-signed certificate. This means that your browser is likely to warn you when visiting https://www.successwhale.com that the connection is untrusted. If you prefer to avoid this potential issue, the application can be accessed at https://successwhale.heroku-app.com.)
Authentication between the web application and the API uses a complex token string stored in a cookie on your computer. You must therefore allow cookies from SuccessWhale's domain in order to use it.
The token string remains valid for one month once it is generated. After a month, the token becomes invalid and the user must log in again to continue using SuccessWhale.
For users who often use networks that block Twitter and Facebook, SuccessWhale offers an alternative method of logging in (other than authenticating with one of those services). SuccessWhale users can create a username and password with which they can authenticate directly with SuccessWhale. When creating an alternative login and when using it to log in, the password is only ever transmitted over HTTPS. On the server side, passwords are salted and hashed using bcrypt before being added to the database.


description
A bar chart displays one dimensional
categorical data
. Useful when there is
no relationship
between the values, for instance if the data is the result of a counting process. Also, it can handle
more categories
than a pie chart.
min.js
docs
source


Diversions in place after incident on Whitletts Road
Police have put divisions in place on Whitletts Road, Ayr, following a suspected road traffic incident.
by Paul Behan, https://www.dailyrecord.co.uk/authors/paul-behan/The road eastbound is closed near to the Tesco store and drivers re being advised to find alternative routes home.
It's unclear how long the road will be closed for.
Police are still at the scene.


@Deprecated public class PssmShadowRenderer extends java.lang.Object implements SceneProcessor
| Modifier and Type | Class and Description |
|---|---|
static class |
PssmShadowRenderer.CompareMode
Deprecated.
use
CompareMode |
static class |
PssmShadowRenderer.FilterMode
Deprecated.
|
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
applyFadeInfo
Deprecated.
|
protected boolean |
applyFilterMode
Deprecated.
|
protected boolean |
applyHWShadows
Deprecated.
|
protected boolean |
applyPCFEdge
Deprecated.
|
protected boolean |
applyShadowIntensity
Deprecated.
|
protected AssetManager |
assetManager
Deprecated.
|
protected PssmShadowRenderer.CompareMode |
compareMode
Deprecated.
|
protected boolean |
debug
Deprecated.
|
protected Vector3f |
direction
Deprecated.
|
protected Picture[] |
dispPic
Deprecated.
|
protected Texture2D |
dummyTex
Deprecated.
|
protected float |
edgesThickness
Deprecated.
|
protected Vector2f |
fadeInfo
Deprecated.
|
protected float |
fadeLength
Deprecated.
|
protected PssmShadowRenderer.FilterMode |
filterMode
Deprecated.
|
protected boolean |
flushQueues
Deprecated.
|
protected float |
lambda
Deprecated.
|
protected GeometryList |
lightReceivers
Deprecated.
|
protected Matrix4f[] |
lightViewProjectionsMatrices
Deprecated.
|
protected java.util.List<Material> |
matCache
Deprecated.
|
protected int |
nbSplits
Deprecated.
|
protected boolean |
needsfallBackMaterial
Deprecated.
|
protected boolean |
noOccluders
Deprecated.
|
protected Vector3f[] |
points
Deprecated.
|
protected Material |
postshadowMat
Deprecated.
|
protected java.lang.String |
postTechniqueName
Deprecated.
|
protected Material |
preshadowMat
Deprecated.
|
protected RenderManager |
renderManager
Deprecated.
|
protected Camera |
shadowCam
Deprecated.
|
protected FrameBuffer[] |
shadowFB
Deprecated.
|
protected float |
shadowIntensity
Deprecated.
|
protected Texture2D[] |
shadowMaps
Deprecated.
|
protected float |
shadowMapSize
Deprecated.
|
protected GeometryList |
splitOccluders
Deprecated.
|
protected ColorRGBA |
splits
Deprecated.
|
protected float[] |
splitsArray
Deprecated.
|
protected ViewPort |
viewPort
Deprecated.
|
protected float |
zFarOverride
Deprecated.
|
| Modifier | Constructor and Description |
|---|---|
|
PssmShadowRenderer(AssetManager manager,
int size,
int nbSplits)
Deprecated.
Create a PSSM Shadow Renderer More info on the technique at http://http.developer.nvidia.com/GPUGems3/gpugems3_ch10.html
|
protected |
PssmShadowRenderer(AssetManager manager,
int size,
int nbSplits,
Material postShadowMat)
Deprecated.
Create a PSSM Shadow Renderer More info on the technique at http://http.developer.nvidia.com/GPUGems3/gpugems3_ch10.html
|
| Modifier and Type | Method and Description |
|---|---|
void |
cleanup()
Deprecated.
Called when the SP is removed from the RM.
|
void |
displayDebug()
Deprecated.
For dubuging purpose Allow to "snapshot" the current frustrum to the
scene
|
void |
displayFrustum()
Deprecated.
|
protected void |
displayShadowMap(Renderer r)
Deprecated.
|
Vector3f |
getDirection()
Deprecated.
returns the light direction used by the processor
|
int |
getEdgesThickness()
Deprecated.
returns the edges thickness
|
float |
getLambda()
Deprecated.
returns the labda parameter see #setLambda(float lambda)
|
float |
getShadowIntensity()
Deprecated.
returns the shdaow intensity
|
float |
getShadowZExtend()
Deprecated.
How far the shadows are rendered in the view
|
float |
getShadowZFadeLength()
Deprecated.
get the length over which the shadow will fade out when using a
shadowZextend
|
void |
initialize(RenderManager rm,
ViewPort vp)
Deprecated.
Called in the render thread to initialize the scene processor.
|
boolean |
isFlushQueues()
Deprecated.
returns true if the PssmRenderer flushed the shadow queues
|
boolean |
isInitialized()
Deprecated.
|
void |
postFrame(FrameBuffer out)
Deprecated.
Called after a frame has been rendered and the queue flushed.
|
void |
postQueue(RenderQueue rq)
Deprecated.
Called after the scene graph has been queued, but before it is flushed.
|
void |
preFrame(float tpf)
Deprecated.
Called before a frame
|
void |
reshape(ViewPort vp,
int w,
int h)
Deprecated.
Called when the resolution of the viewport has been changed.
|
void |
setCompareMode(PssmShadowRenderer.CompareMode compareMode)
Deprecated.
sets the shadow compare mode see
CompareMode for more info |
void |
setDirection(Vector3f direction)
Deprecated.
Sets the light direction to use to compute shadows
|
void |
setEdgesThickness(int edgesThickness)
Deprecated.
Sets the shadow edges thickness.
|
void |
setFilterMode(PssmShadowRenderer.FilterMode filterMode)
Deprecated.
Sets the filtering mode for shadow edges see
PssmShadowRenderer.FilterMode for more
info |
void |
setFlushQueues(boolean flushQueues)
Deprecated.
Set this to false if you want to use several PssmRederers to have
multiple shadows cast by multiple light sources.
|
void |
setLambda(float lambda)
Deprecated.
|
protected void |
setPostShadowParams()
Deprecated.
|
void |
setShadowIntensity(float shadowIntensity)
Deprecated.
Set the shadowIntensity, the value should be between 0 and 1, a 0 value
gives a bright and invisilble shadow, a 1 value gives a pitch black
shadow, default is 0.7
|
void |
setShadowZExtend(float zFar)
Deprecated.
Set the distance from the eye where the shadows will be rendered default
value is dynamicaly computed to the shadow casters/receivers union bound
zFar, capped to view frustum far value.
|
void |
setShadowZFadeLength(float length)
Deprecated.
Define the length over which the shadow will fade out when using a
shadowZextend This is useful to make dynamic shadows fade into baked
shadows in the distance.
|
protected int nbSplits
protected float shadowMapSize
protected float lambda
protected float shadowIntensity
protected float zFarOverride
protected RenderManager renderManager
protected ViewPort viewPort
protected FrameBuffer[] shadowFB
protected Texture2D[] shadowMaps
protected Texture2D dummyTex
protected Camera shadowCam
protected Material preshadowMat
protected Material postshadowMat
protected GeometryList splitOccluders
protected Matrix4f[] lightViewProjectionsMatrices
protected ColorRGBA splits
protected float[] splitsArray
protected boolean noOccluders
protected Vector3f direction
protected AssetManager assetManager
protected boolean debug
protected float edgesThickness
protected PssmShadowRenderer.FilterMode filterMode
protected PssmShadowRenderer.CompareMode compareMode
protected Picture[] dispPic
protected Vector3f[] points
protected boolean flushQueues
protected boolean needsfallBackMaterial
protected java.lang.String postTechniqueName
protected boolean applyHWShadows
protected boolean applyFilterMode
protected boolean applyPCFEdge
protected boolean applyShadowIntensity
protected java.util.List<Material> matCache
protected Vector2f fadeInfo
protected float fadeLength
protected boolean applyFadeInfo
protected GeometryList lightReceivers
public PssmShadowRenderer(AssetManager manager, int size, int nbSplits)
manager
- the application asset managersize
- the size of the rendered shadowmaps (512,1024,2048, etc...)nbSplits
- the number of shadow maps rendered (the more shadow maps
the more quality, the less fps).nbSplits
- the number of shadow maps rendered (the more shadow maps
the more quality, the less fps).protected PssmShadowRenderer(AssetManager manager, int size, int nbSplits, Material postShadowMat)
manager
- the application asset managersize
- the size of the rendered shadowmaps (512,1024,2048, etc...)nbSplits
- the number of shadow maps rendered (the more shadow maps
the more quality, the less fps).postShadowMat
- the material used for post shadows if you need to
override itpublic final void setFilterMode(PssmShadowRenderer.FilterMode filterMode)
PssmShadowRenderer.FilterMode
for more
infofilterMode
- public final void setCompareMode(PssmShadowRenderer.CompareMode compareMode)
CompareMode
for more infocompareMode
- public void initialize(RenderManager rm, ViewPort vp)
SceneProcessor
initialize
in interface SceneProcessor
rm
- The render manager to which the SP was added tovp
- The viewport to which the SP is assignedpublic boolean isInitialized()
isInitialized
in interface SceneProcessor
public Vector3f getDirection()
public void setDirection(Vector3f direction)
direction
- public void postQueue(RenderQueue rq)
SceneProcessor
postQueue
in interface SceneProcessor
rq
- The render queuepublic void displayFrustum()
protected void displayShadowMap(Renderer r)
public void displayDebug()
public void postFrame(FrameBuffer out)
SceneProcessor
postFrame
in interface SceneProcessor
out
- The FB to which the scene was rendered.protected void setPostShadowParams()
public void preFrame(float tpf)
SceneProcessor
preFrame
in interface SceneProcessor
tpf
- Time per framepublic void cleanup()
SceneProcessor
cleanup
in interface SceneProcessor
public void reshape(ViewPort vp, int w, int h)
SceneProcessor
reshape
in interface SceneProcessor
public float getLambda()
public void setLambda(float lambda)
public float getShadowZExtend()
setShadowZExtend(float zFar)
public void setShadowZExtend(float zFar)
zFar
- the zFar values that override the computed onepublic float getShadowIntensity()
setShadowIntensity(float shadowIntensity)
public final void setShadowIntensity(float shadowIntensity)
shadowIntensity
- the darkness of the shadowpublic int getEdgesThickness()
setEdgesThickness(int edgesThickness)
public void setEdgesThickness(int edgesThickness)
edgesThickness
- public boolean isFlushQueues()
public void setFlushQueues(boolean flushQueues)
flushQueues
- public void setShadowZFadeLength(float length)
length
- the fade length in world unitspublic float getShadowZFadeLength()


--- layout: default --- {%- include variable-core.liquid -%} {%- if page.description -%}
{{ page.description }}
{%- endif -%} {{ content }}(Consult the report in its native JSON-LD format)
Not applicable
List of related assessments, referenced by date, which have been used and influenced the production of this conformance report.
This section is informative. The completion of the following work items may or may not be required to satisfy the main requirement. The intention is to refer to and identify related work items as they could be pertinent in the interpretation of this accessibility conformance report. Tracking their progress is out of scope.
Related to requirement: Not specified
| Date | Accuracy | Details |
|---|
|
| Requirement | Conformance | Comment |
|---|
|
Note: Based on the following ruleset: Not available


Personal Blog
Home
Blog
Contact Us
Contact Us
Feel free to drop us a line, give us feedback or just kudos! We would love to hear from you!
Submit


Romesh Ranganathan (born 1978-01-30[ref]) has appeared in 108 episodes between 2013-2019. Romesh Ranganathan on IMDB. Romesh Ranganathan on Wikipedia. Romesh Ranganathan on Chortle.


Happy Clients
- John Setzen
- John Setzen's Twin Brother
- Professional John Setzen Look Alike
Lace them together.
No.
Tough luck


Please Note:
Currently (February 2011) the Web Audio API only works in patched versions of Chrome and Safari. You can download builds of these patched browsers here.
The Web Audio API is currently under heavy development and this is just a first rough example that may at any time in the future break on new browser builds. Here is the current specification proposal by the W3C Audio Incubator Group.
This visualization is based on my original Audio Data API visualizer and uses Corban Brook's excellent DSP.js library for the FFT.
The music track for this visualization is an excerpt from "Truth 2" by Jon Gillham and is used with permission by the artist. Thanks, Jon!
You may also be interested to see some of my other explorations of new HTML5 features here.


Refresh
--Search by--
Device serial number
Student Id
reset
Submit
Search Results
Device serial number
Student Name
Student Id
Student Email
Check out Date
check in Date
Check in key
Status


This page displays measures for the network Semantic Network [Assets x Behavioral].
Network images have nodes colored by group and sized by betweenness centrality.
Assets-Level Measures
These measures were run on the specified network, and produced a vector of values, one value for each Assets node.
Input network: Semantic Network [Assets x Behavioral]
Measure Min Mean Max Std.Dev Centrality, Hub 0 0.031 0.289 0.075 Centrality, Hub [Unscaled] 0 0.022 0.204 0.053 Centrality, Out-Degree 0 0.012 0.118 0.030 Centrality, Out-Degree [Unscaled] 0 446.667 4,234 1,093.196 Behavioral-Level Measures
These measures were run on the specified network, and produced a vector of values, one value for each Behavioral node.
Input network: Semantic Network [Assets x Behavioral]
Measure Min Mean Max Std.Dev Centrality, Authority 0 0.058 0.483 0.086 Centrality, Authority [Unscaled] 0 0.041 0.342 0.061 Centrality, In-Degree 0 0.012 0.108 0.019 Centrality, In-Degree [Unscaled] 0 111.667 968 168.556 Overall Top-Ranked Assets
This chart shows the Assets nodes that are top-ranked overall using the node-level measures listed below. The value shown for a node is the average of its measure values, each of which is first converted into a z-score. The final scores are then normalized to be between zero and one.
There are 27 nodes in the nodeset.
Overall Score Measure List
Centrality, Hub [Semantic Network [Assets x Behavioral]]
Centrality, Out-Degree [Semantic Network [Assets x Behavioral]]
Centrality, Hub
A node is hub-central to the extent that its out-links are to nodes that have many in-links. Individuals or organizations that act as hubs are sending information to a wide range of others each of whom has many others reporting to them. Technically, an agent is hub-central if its out-links are to agents that have many other agents sending links to them. The scientific name of this measure is hub centrality and it is calculated on agent by agent matrices.
If the node of interest has a higher than normal value (greater than 1 standard deviation(s) above the mean) the row is colored red. The row is green if the node is within 1 standard deviation of the mean. Finally, the row is colored blue if the node has a lower than normal value (less than one standard deviation(s) below the mean).
Input network(s): Semantic Network [Assets x Behavioral]
Rank Assets Value Unscaled 1 gain 0.289 0.204 2 loss 0.252 0.178 3 policy 0.130 0.092 4 source 0.099 0.070 5 resource 0.046 0.032 6 rewards 0.015 0.011 7 communication_link 9.700e-04 6.859e-04 8 hypervisor 5.365e-04 3.793e-04 9 air 0 0 10 airline 0 0 11 airport 0 0 12 baggage 0 0 13 domain_generation_algorithms 0 0 14 facilities 0 0 15 firewalls 0 0 16 house 0 0 17 label 0 0 18 labels 0 0 19 list 0 0 20 news 0 0 21 product 0 0 22 remote_access_tools 0 0 23 report 0 0 24 rundll32 0 0 25 space 0 0 26 time 0 0 27 toc 0 0
Value statistics Min: 0 Mean: 0.031 Lower quartile: 0 Max: 0.289 Std.dev: 0.075 Median: 0 Upper quartile: 9.700e-04
Unscaled value statistics Min: 0 Mean: 0.022 Lower quartile: 0 Max: 0.204 Std.dev: 0.053 Median: 0 Upper quartile: 6.859e-04 Centrality, Out-Degree
For any node, e.g. an individual or a resource, the out-links are the connections that the node of interest has to other nodes. For example, imagine an agent by knowledge network where the number of out-links an agent would have is the number of pieces of knowledge it is connected to. The scientific name of this measure is out-degree and it can be calculated on any network.
If the node of interest has a higher than normal value (greater than 1 standard deviation(s) above the mean) the row is colored red. The row is green if the node is within 1 standard deviation of the mean. Finally, the row is colored blue if the node has a lower than normal value (less than one standard deviation(s) below the mean).
Input network(s): Semantic Network [Assets x Behavioral]
Rank Assets Value Unscaled 1 gain 0.118 4,234 2 loss 0.104 3,730 3 policy 0.051 1,836 4 source 0.040 1,421 5 resource 0.017 618 6 rewards 0.006 205 7 communication_link 2.503e-04 9 8 hypervisor 1.946e-04 7 9 air 0 0 10 airline 0 0 11 airport 0 0 12 baggage 0 0 13 domain_generation_algorithms 0 0 14 facilities 0 0 15 firewalls 0 0 16 house 0 0 17 label 0 0 18 labels 0 0 19 list 0 0 20 news 0 0 21 product 0 0 22 remote_access_tools 0 0 23 report 0 0 24 rundll32 0 0 25 space 0 0 26 time 0 0 27 toc 0 0
Value statistics Min: 0 Mean: 0.012 Lower quartile: 0 Max: 0.118 Std.dev: 0.030 Median: 0 Upper quartile: 2.503e-04
Unscaled value statistics Min: 0 Mean: 446.667 Lower quartile: 0 Max: 4,234 Std.dev: 1,093.196 Median: 0 Upper quartile: 9 Overall Top-Ranked Behavioral
This chart shows the Behavioral nodes that are top-ranked overall using the node-level measures listed below. The value shown for a node is the average of its measure values, each of which is first converted into a z-score. The final scores are then normalized to be between zero and one.
There are 108 nodes in the nodeset.
Overall Score Measure List
Centrality, Authority [Semantic Network [Assets x Behavioral]]
Centrality, In-Degree [Semantic Network [Assets x Behavioral]]
Centrality, Authority
A node is authority-central to the extent that its in-links are from nodes that have many out-links. Individuals or organizations that act as authorities are receiving information from a wide range of others each of whom sends information to a large number of others.
If the node of interest has a higher than normal value (greater than 1 standard deviation(s) above the mean) the row is colored red. The row is green if the node is within 1 standard deviation of the mean. Finally, the row is colored blue if the node has a lower than normal value (less than one standard deviation(s) below the mean).
Input network(s): Semantic Network [Assets x Behavioral]
Rank Behavioral Value Unscaled 1 personality 0.483 0.342 2 perceived_vulnerability 0.347 0.245 3 perception 0.276 0.195 4 combining 0.257 0.182 5 protection_effect 0.250 0.177 6 intrinsic_rewards 0.243 0.172 7 belief 0.241 0.171 8 possibility_effect 0.226 0.160 9 extrinsic_rewards 0.226 0.159 10 focus 0.210 0.149 11 appraisal 0.160 0.113 12 intelligence 0.158 0.112 13 physical_quality 0.151 0.107 14 process 0.138 0.097 15 behavior 0.137 0.097 16 participant_modeling 0.136 0.096 17 perceived_responsibility 0.132 0.093 18 syllogistic_rules 0.129 0.091 19 knowledge 0.120 0.085 20 segregating 0.113 0.080 21 fear_arousal 0.104 0.074 22 certainty_effect 0.104 0.073 23 isolation_effect 0.100 0.071 24 behavior_control-ability 0.097 0.069 25 activity 0.094 0.066 26 evaluating 0.090 0.064 27 action 0.085 0.060 28 intentionality 0.082 0.058 29 perceived_consensus 0.080 0.056 30 persistence 0.075 0.053 31 perceived_uniqueness 0.074 0.052 32 mental_calculation 0.073 0.052 33 learning 0.071 0.050 34 frustration_of_needs 0.070 0.049 35 experiential_awareness 0.065 0.046 36 impulsive_effect 0.061 0.043 37 satisfaction_of_needs 0.058 0.041 38 experience 0.054 0.038 39 vicarious_experience 0.051 0.036 40 function 0.049 0.034 41 constraint 0.042 0.030 42 situational_circumstance 0.042 0.030 43 mastery_experience 0.041 0.029 44 collection 0.040 0.028 45 live_modeling 0.035 0.025 46 norms 0.034 0.024 47 history 0.032 0.023 48 motivation 0.031 0.022 49 modeling 0.027 0.019 50 comply_effect 0.025 0.018 51 self-efficacy 0.024 0.017 52 imagination 0.022 0.016 53 circumstances 0.021 0.015 54 generalizing 0.020 0.014 55 internalization 0.016 0.012 56 arousal 0.015 0.010 57 a_memory 0.015 0.010 58 coding 0.013 0.009 59 symbolic_modeling 0.009 0.007 60 prospect 0.007 0.005 61 social_circumstance 0.005 0.003 62 forethought_capability 0.004 0.003 63 emotional_intelligence 0.004 0.003 64 social_identity 0.003 0.002 65 empowerment 0.003 0.002 66 disposition 0.003 0.002 67 subjective_norms 0.002 0.002 68 perceived_behavioral_control 0.002 0.001 69 injunctive_norm 0.002 0.001 70 response_efficacy 0.002 0.001 71 intrinsic_motivation 0.001 0.001 72 group_norms 0.001 9.874e-04 73 neuroticism 0.001 9.874e-04 74 threat_appraisal 9.243e-04 6.536e-04 75 alertness 6.982e-04 4.937e-04 76 introversion 6.982e-04 4.937e-04 77 adaptive_response 6.450e-04 4.561e-04 78 amplification 6.090e-04 4.306e-04 79 coping_appraisal 6.090e-04 4.306e-04 80 extrinsic_motivation 6.090e-04 4.306e-04 81 injunctive_norms 3.153e-04 2.230e-04 82 descriptive_norm 3.153e-04 2.230e-04 83 _do 0 0 84 _hate1 0 0 85 _hate2 0 0 86 _suicide1 0 0 87 _suicide2 0 0 88 active 0 0 89 adaptive 0 0 90 agreeableness 0 0 91 amotivation 0 0 92 awareness 0 0 93 cognitive_process 0 0 94 completeness 0 0 95 conscientiousness 0 0 96 control 0 0 97 descriptive_norms 0 0 98 extraversion 0 0 99 general 0 0 100 group 0 0
Value statistics Min: 0 Mean: 0.058 Lower quartile: 3.153e-04 Max: 0.483 Std.dev: 0.086 Median: 0.018 Upper quartile: 0.084
Unscaled value statistics Min: 0 Mean: 0.041 Lower quartile: 2.230e-04 Max: 0.342 Std.dev: 0.061 Median: 0.013 Upper quartile: 0.059 Centrality, In-Degree
The number of links directed into a node normalized by the maximum number of such links. This measure is also called Column Degree Centrality because it is computed by taking the sum of the column values in the input network.
If the node of interest has a higher than normal value (greater than 1 standard deviation(s) above the mean) the row is colored red. The row is green if the node is within 1 standard deviation of the mean. Finally, the row is colored blue if the node has a lower than normal value (less than one standard deviation(s) below the mean).
Input network(s): Semantic Network [Assets x Behavioral]
Rank Behavioral Value Unscaled 1 personality 0.108 968 2 perceived_vulnerability 0.076 680 3 perception 0.061 552 4 protection_effect 0.055 496 5 combining 0.055 491 6 belief 0.053 476 7 intrinsic_rewards 0.051 463 8 extrinsic_rewards 0.049 443 9 focus 0.047 423 10 possibility_effect 0.046 412 11 intelligence 0.037 329 12 appraisal 0.034 309 13 physical_quality 0.031 281 14 behavior 0.031 280 15 participant_modeling 0.030 274 16 process 0.030 269 17 syllogistic_rules 0.028 255 18 perceived_responsibility 0.028 254 19 knowledge 0.026 237 20 segregating 0.023 208 21 isolation_effect 0.023 203 22 certainty_effect 0.021 192 23 fear_arousal 0.021 188 24 activity 0.020 183 25 behavior_control-ability 0.019 174 26 action 0.018 163 27 evaluating 0.018 160 28 perceived_consensus 0.018 160 29 intentionality 0.017 151 30 persistence 0.016 146 31 perceived_uniqueness 0.016 145 32 mental_calculation 0.016 142 33 learning 0.015 138 34 frustration_of_needs 0.014 125 35 experiential_awareness 0.013 115 36 impulsive_effect 0.013 115 37 satisfaction_of_needs 0.012 109 38 experience 0.011 101 39 vicarious_experience 0.011 98 40 function 0.011 95 41 situational_circumstance 0.010 87 42 constraint 0.009 80 43 collection 0.009 78 44 mastery_experience 0.009 78 45 history 0.008 69 46 live_modeling 0.007 66 47 norms 0.007 65 48 motivation 0.007 60 49 modeling 0.006 50 50 self-efficacy 0.005 48 51 comply_effect 0.005 46 52 imagination 0.005 41 53 generalizing 0.004 38 54 circumstances 0.004 37 55 internalization 0.004 35 56 arousal 0.003 27 57 a_memory 0.003 24 58 coding 0.003 24 59 symbolic_modeling 0.002 18 60 prospect 0.001 11 61 social_circumstance 0.001 9 62 emotional_intelligence 7.786e-04 7 63 empowerment 7.786e-04 7 64 forethought_capability 7.786e-04 7 65 disposition 5.561e-04 5 66 perceived_behavioral_control 5.561e-04 5 67 social_identity 5.561e-04 5 68 subjective_norms 5.561e-04 5 69 intrinsic_motivation 4.449e-04 4 70 injunctive_norm 3.337e-04 3 71 response_efficacy 3.337e-04 3 72 adaptive_response 2.224e-04 2 73 group_norms 2.224e-04 2 74 neuroticism 2.224e-04 2 75 threat_appraisal 2.224e-04 2 76 alertness 1.112e-04 1 77 amplification 1.112e-04 1 78 coping_appraisal 1.112e-04 1 79 descriptive_norm 1.112e-04 1 80 extrinsic_motivation 1.112e-04 1 81 injunctive_norms 1.112e-04 1 82 introversion 1.112e-04 1 83 _do 0 0 84 _hate1 0 0 85 _hate2 0 0 86 _suicide1 0 0 87 _suicide2 0 0 88 active 0 0 89 adaptive 0 0 90 agreeableness 0 0 91 amotivation 0 0 92 awareness 0 0 93 cognitive_process 0 0 94 completeness 0 0 95 conscientiousness 0 0 96 control 0 0 97 descriptive_norms 0 0 98 extraversion 0 0 99 general 0 0 100 group 0 0
Value statistics Min: 0 Mean: 0.012 Lower quartile: 1.112e-04 Max: 0.108 Std.dev: 0.019 Median: 0.004 Upper quartile: 0.018
Unscaled value statistics Min: 0 Mean: 111.667 Lower quartile: 1 Max: 968 Std.dev: 168.556 Median: 36 Upper quartile: 160


Installing scientific packages¶
Contents
Scientific software tends to have more complex dependencies than most, and it will often have multiple build options to take advantage of different kinds of hardware, or to interoperate with different pieces of external software.
In particular, NumPy, which provides the basis for most of the software in the scientific Python stack can be configured to interoperate with different FORTRAN libraries, and can take advantage of different levels of vectorised instructions available in modern CPUs.
Starting with version 1.10.4 of NumPy and version 1.0.0 of SciPy, pre-built
32-bit and 64-bit binaries in the wheel
format are available for all major
operating systems (Windows, macOS, and Linux) on PyPI. Note, however, that on
Windows, NumPy binaries are linked against the ATLAS BLAS/LAPACK library, restricted to SSE2
instructions, so they may not provide optimal linear algebra performance.
There are a number of alternative options for obtaining scientific Python libraries (or any other Python libraries that require a compilation environment to install from source and don't provide pre-built wheel files on PyPI).
Building from source¶
The same complexity which makes it difficult to distribute NumPy (and many of the projects that depend on it) as wheel files also make them difficult to build from source yourself. However, for intrepid folks that are willing to spend the time wrangling compilers and linkers for both C and FORTRAN, building from source is always an option.
Linux distribution packages¶
For Linux users, the system package manager will often have pre-compiled versions of various pieces of scientific software, including NumPy and other parts of the scientific Python stack.
If using versions which may be several months old is acceptable, then this is likely to be a good option (just make sure to allow access to distributions installed into the system Python when using virtual environments).
Windows installers¶
Many Python projects that don't (or can't) currently publish wheel files at least publish Windows installers, either on PyPI or on their project download page. Using these installers allows users to avoid the need to set up a suitable environment to build extensions locally.
The extensions provided in these installers are typically compatible with the CPython Windows installers published on python.org.
For projects which don't provide their own Windows installers (and even some which do), Christoph Gohlke at the University of California provides a collection of Windows installers. Many Python users on Windows have reported a positive experience with these prebuilt versions.
As with Linux system packages, the Windows installers will only install into a system Python installation - they do not support installation in virtual environments. Allowing access to distributions installed into the system Python when using virtual environments is a common approach to working around this limitation.
The Wheel project also provides a wheel convert subcommand that can convert a Windows bdist_wininst installer to a wheel.
macOS installers and package managers¶
Similar to the situation on Windows, many projects (including NumPy) publish macOS installers that are compatible with the macOS CPython binaries published on python.org.
macOS users also have access to Linux distribution style package managers
such as MacPorts
. The SciPy site has more details on using MacPorts to
install the scientific Python stack
SciPy distributions¶
The SciPy site lists several distributions that provide the full SciPy stack to end users in an easy to use and update format.
Some of these distributions may not be compatible with the standard pip
and virtualenv
based toolchain.
Spack¶
Spack is a flexible package manager
designed to support multiple versions, configurations, platforms, and compilers.
It was built to support the needs of large supercomputing centers and scientific
application teams, who must often build software many different ways.
Spack is not limited to Python; it can install packages for C
, C++
,
Fortran
, R
, and other languages. It is non-destructive; installing
a new version of one package does not break existing installations, so many
configurations can coexist on the same system.
Spack offers a simple but powerful syntax that allows users to specify versions and configuration options concisely. Package files are written in pure Python, and they are templated so that it is easy to swap compilers, dependency implementations (like MPI), versions, and build options with a single package file. Spack also generates module files so that packages can be loaded and unloaded from the user's environment.
The conda cross-platform package manager¶
Anaconda is a Python distribution published by Anaconda, Inc. It is a stable collection of Open Source packages for big data and scientific use. As of the 5.0 release of Anaconda, about 200 packages are installed by default, and a total of 400-500 can be installed and updated from the Anaconda repository.
conda
is an open source (BSD licensed) package management system and
environment management system included in Anaconda that allows users to install
multiple versions of binary software packages and their dependencies, and
easily switch between them. It is a cross-platform tool working on Windows,
macOS, and Linux. Conda can be used to package up and distribute all kinds of
packages, it is not limited to just Python packages. It has full support for
native virtual environments. Conda makes environments first-class citizens,
making it easy to create independent environments even for C libraries. It is
written in Python, but is Python-agnostic. Conda manages Python itself as a
package, so that conda update python is possible, in contrast to
pip, which only manages Python packages. Conda is available in Anaconda and
Miniconda (an easy-to-install download with just Python and conda).


|
JTS Topology Suite version 1.13 | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface PreparedGeometry
An interface for classes which prepare Geometry
s
in order to optimize the performance
of repeated calls to specific geometric operations.
A given implementation may provide optimized implementations
for only some of the specified methods,
and delegate the remaining methods to the original Geometry
operations.
An implementation may also only optimize certain situations,
and delegate others.
See the implementing classes for documentation about which methods and situations
they optimize.
Subclasses are intended to be thread-safe, to allow PreparedGeometry
to be used in a multi-threaded context
(which allows extracting maximum benefit from the prepared state).
| Method Summary | |
|---|---|
boolean |
contains(Geometry geom)
Tests whether the base Geometry contains a given geometry. |
boolean |
containsProperly(Geometry geom)
Tests whether the base Geometry properly contains a given geometry. |
boolean |
coveredBy(Geometry geom)
Tests whether the base Geometry is covered by a given geometry. |
boolean |
covers(Geometry geom)
Tests whether the base Geometry covers a given geometry. |
boolean |
crosses(Geometry geom)
Tests whether the base Geometry crosses a given geometry. |
boolean |
disjoint(Geometry geom)
Tests whether the base Geometry is disjoint from a given geometry. |
Geometry |
getGeometry()
Gets the original Geometry which has been prepared. |
boolean |
intersects(Geometry geom)
Tests whether the base Geometry intersects a given geometry. |
boolean |
overlaps(Geometry geom)
Tests whether the base Geometry overlaps a given geometry. |
boolean |
touches(Geometry geom)
Tests whether the base Geometry touches a given geometry. |
boolean |
within(Geometry geom)
Tests whether the base Geometry is within a given geometry. |
| Method Detail |
|---|
Geometry getGeometry()
Geometry
which has been prepared.
boolean contains(Geometry geom)
Geometry
contains a given geometry.
geom
- the Geometry to test
Geometry.contains(Geometry)
boolean containsProperly(Geometry geom)
Geometry
properly contains a given geometry.
The containsProperly
predicate has the following equivalent definitions:
[T**FF*FF*]
Geometry.contains(com.vividsolutions.jts.geom.Geometry)
predicate,
in which test geometries can intersect the target's boundary and still be contained.
The advantage of using this predicate is that it can be computed efficiently, since it avoids the need to compute the full topological relationship of the input boundaries in cases where they intersect.
An example use case is computing the intersections of a set of geometries with a large polygonal geometry.  In these cases the intersection is known a priori to be exactly the original test geometry.
geom
- the Geometry to test
Geometry.contains(com.vividsolutions.jts.geom.Geometry)
boolean coveredBy(Geometry geom)
Geometry
is covered by a given geometry.
geom
- the Geometry to test
Geometry.coveredBy(Geometry)
boolean covers(Geometry geom)
Geometry
covers a given geometry.
geom
- the Geometry to test
Geometry.covers(Geometry)
boolean crosses(Geometry geom)
Geometry
crosses a given geometry.
geom
- the Geometry to test
Geometry.crosses(Geometry)
boolean disjoint(Geometry geom)
Geometry
is disjoint from a given geometry.
This method supports GeometryCollection
s as input
geom
- the Geometry to test
Geometry.disjoint(Geometry)
boolean intersects(Geometry geom)
Geometry
intersects a given geometry.
This method supports GeometryCollection
s as input
geom
- the Geometry to test
Geometry.intersects(Geometry)
boolean overlaps(Geometry geom)
Geometry
overlaps a given geometry.
geom
- the Geometry to test
Geometry.overlaps(Geometry)
boolean touches(Geometry geom)
Geometry
touches a given geometry.
geom
- the Geometry to test
Geometry.touches(Geometry)
boolean within(Geometry geom)
Geometry
is within a given geometry.
geom
- the Geometry to test
Geometry.within(Geometry)
|
JTS Topology Suite version 1.13 | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


{{dish.description}}
Customer Comments: Sort by
{{com.rating}} Stars {{com.comment}}
{{com.rating}} Stars
{{com.comment}}
Task 3: Here you include the code to show the live preview of the comment
The comment should be shown only when the form contains valid information and is not pristine
Task 2: You need to validate that the user name and comments are entered


CryMa
1 Abstract
CryMa, short for Cryptocurrency Manager, is an online application with the purpose of managing cryptocurrency information. The website uses the power of semantic web and combines ontology engineering to model cryptocurrency knowlege.
2 Motivation
The world of today grows one's need to model information in such a way that both machines and humans understand.
Systems capable of displaying diverse, up to date information are very sought after.
Smart information visualisation, current and future growth prediction and sorting by different criteria are the capabilities and tools needed for the next financial shift, empowering the people and giving them the oportunity to make the best decisions with the right perspective of the market.
3 Features
The website wishes to provide the following big features :
- Top cryptocurrency value : value ( in $ ), change in 24h ( with percentage ), market share and an evolution graphic.
- Machine Learning prediction of the coin values' tendencies
- News about cryptocurrencies
- Distribute server architecture using modern architectural patterns
- OpenAPI specification for developers.
Application requirements :
- Ease of use through intuitive and attractive design of the application.
- Robustness and functionality.
- Performance and scalability.
- Modern approach of the problem.
4 Architecture
In this section the application architecture will be presented, as it is a key application feature.
4.1 Microservices architecture
Each microservice will have a specific function, they will all be called via the GatewayAPI, having the following functions:
News
: will model data related to the cryptocurrency newsPlot
: using the Prediction microservice, that will predict future coin data based on past information, it's purpose is providing plot data for the front end, based on the filters and preferences set by the latterPrediction
: based on a coin it calls the Python Prediction microservice to predict a future value of a coinPython Prediction
: calls the python library to give Python Prediction a responsePython Library
: runs the neural network algorithm to predict the value of a coinCoinTology
: will give information related to coinsFuseki Server
: stores all the ontology data and supports SPARQL QueriesZuul
: proxy for the microservicesEureka
: registry for resilient mid-tier load balancing
4.2 Class Diagram
For each microservice a class diagram has been made, in order to fully detail the system.
5 Use-Case
Describing the use-case, a diagram is best suited, thus possible interactions with the system are described as seen below.
6 Activity Diagram
To further clarify, the activity diaram describes the dynamic aspects of the system, representing the flow from one activity to another.
7 Front-End & User Guide
The technologies used are CSS and HTML and jQuery, in order to ease the development process and to decouple the "smart" front-end from the cloud based, REST back-end.
7.1 Charts
As with every application, the first thing the user sees is the main page, so with use the first page presents the user with the top currency tabel, giving him, from the start, a large number of information.
The users can filter the information; they can choose to order every information in the header ascending or descending; they can see the price, market cap, change etc. A nice feature is the fact that they can search for a specific currency.
Also visible on the main page is an overall pie chart of the market, that gives the user possible investment perspective on the market.
The distribution of the top currencyes is easy to read and takes up little space, bringing insight of the market.
The ontology we created also associates coins with news, we are able to list all the news available by preference to the user.
The first page embodies all the features described in the beginning of this section and many more. As it can be seen it has a feature of "Top currency growth" that shows the top three biggest cryptocurrencies.
7.1 Coin
Selectin a coin ( e.g Bitcoin ) in the top chart will redirect the user to a page dedicated to that coin.
The coin page exposes information such as current value, market capital, volume, supply and 24h change.
The news will be sorted only for the coin selected.
A price evolution chart is also available, this price also includes a prediction for the next day.
8 Back-End
The back-end application was written in Java using the Spring Boot Framework. Also, as a dependency management tool it was chosen Maven.
A very important part in the back-end is the Apache Jena Framework that has the capabilities for building Semantic Web and Linked Data applications.
From Jena it we used the following functionalities :
In order to build a modern application, in the development phase, as stated in the start of the paper, we used Microservices
Each microservice created registers to a service using the Eureka Service.
8.1 Eureka
All the microservices register to eureka in order to keep track of them.
In order to send a request to another microservice, it doesn't use the absolute path, but a relative one, comprised of it's used name at registry time; thus eureka resolves the name and an abstraction between microservices is achieved.
@Autowired private RestTemplate restTemplate;
private String predictionURL = "http://cryma-python-prediction/predict/";
The RestTemplate object prior to sending the request to the microservice resolves the name by asking eureka and then, with the resolved url can use it.
Eureka offers a clean solution for seeing the online services.
8.2 Zuul
Netflix Zuul is the front door for all requests from devices and web sites to the backend. It's a proxy server that routes different request to specific microservices. It is also a microservice that registers to Eureka.
As it can be seen Zuul creates routes for each microservice that is registered to Eureka.
8.3 News
The news microservice provides news data related to the coins.
The news was modeled in the OWL and the data is stored inside the fuseki server, the data is queried via HTTP.
The news microservice exposes an endpoint capable of querying news in fuseki in two ways:
- Get all coin news
- Get news only for a certain coin
The endpoint return information such as :
- Name
- Description
- Url
- Date
- Photos
Example of request to the news microservice with turle output selecting all news for all coins.
Example of request to the news microservice with JSON-LD output selecting news only for bitcoin.
8.4 Plot
The plot microservice provides plot data related to the coins.
It uses both fuseki and a database for storing data.
In order to provide Top Coin Data a database for the coins was created, the database was populated using a python script found in the "Database" folder on Github.
The TopCoin return information such as :
- Id
- Name
- Market Capital
- Price
- Supply
- Volume
- Change value in 24h
- Abbreviation
This provides data for the top currency table on the front end.
This microservice supports multiple pagination and sorting options, such as:
- Read data by page with a certain size
- Sort by any information above, ASC or DESC
Besides this database endpoint the service creates queries to the SPARQL Fuseki endpoint. Exposing information such as querying by a coin abbreviation, start date and end date.
The endpoint searches all the data related to a coin ( from a plotting view ). The query returns a list of all data : value, date and the coin associated with them.
Examples :
- https://cryma-plot.cfapps.io/coin?page=1&size=50&sort=volume,asc
- https://cryma-plot.cfapps.io/coin?page=1&size=50&sort=price,desc
- Date checking in order to see if format respects the ISO 8601 date format
- If Jena format is in supported ranges, for example : "JSON-LD","TURTLE" etc
- Modelling the received graph and modifying diverse properties
- Translating the model in diverse formats
- Creating queries that are sent to the fuseki endpoint
As it can be seen selecting a bitcoin between 2014-05-23T10:20:13 and 2019-05-23T10:20:13 in the RDF/XML format returns values.
8.5 Cointology
The endpoint searches all the data related to a coin information in the onthology.
One endpoint queries all the coins exposing both information and values and one can query only for one coin.
As stated in the previous microservices the endpoints give out data in many kind of formats.
8.6 Prediction
This multitude of microservices are used to predict a future value of a coin.
We use a python library that runs a neural network over a set of history data for the coins.
When the application requests a prediction, the microservices start working giving a possible future value.
8.7 Approach
In order to create a proficient application we used several software engineering patterns.
First of all, Spring by default is an IoC container that helps us inject dependencies.
We also used the MVC pattern, the model is the front-end that is deployed on a server and though REST it communicates with the controller and the latter with the model.
Zuul Proxy hides the system complexity by automatically redirecting requests to the desired microservices.
Most of the microservices use a service interface that creates all the business logic and a repository interface that handles all the data handling.
To filter the request and check the parameters we used Interceptors and Filters that were provided either by Spring or either by the JavaEE platform. Some checkings include :
In order to model the fuseki queries, Jena comes into play, it is able to model the response graph and it eases our development time considerably. Jena helped in :
9 Modelling And Prediction
9.1 Prediction
Our application provides a prediction feature for the tendencies of a coin's value.
Our approach is based on artificial neural networks.
Since the historical data of a coin is a sequence, the algorithm will use a recurrent neural network, which is specialised for sequences, more specifically, a Long Short Term Memory architecture. Neural networks are a great candidate for this task because they have a great degree of generality(they perform well on unseen data), they’re efficient to use and they have architectures specialised for sequences. The more common approaches for this task used vanilla neural networks, as seen in Stock Market Value Prediction Using Neural Networks and Stock Prediction using Artificial Neural Networks , but the more recent LSTMs outperformed these models and, considering the form of the input, are more fitted for the task and Predicting Stock Prices Using LSTM .
Our module is built with LSTM neural networks which were trained on the historical data of many cryptocurrencies to try to find structure in the price fluctuations. The training consists in giving the network an array with a consecutive values of a cryptocurrency as input and the value that follows that sequence as a target. The network adapts its inner parameters to minimize the difference between its outputs and the target outputs.
A neural network trains with a huge amount of data (because its hidden features are multidimensional, which means that the training inputs will be sparse in the hyperspace of the network), and cryptocurencies have a relatively recent history. As expected, the network didn’t fit the test data very closely, but it predicted correctly the tendencies of the cryptocurrency.
Model predicts<PHONE_NUMBER>$. Current value is 400.17$ thus the model predicts an increase of 250$
The accuracy may vary, as seen in the model evaluation figure. Unfortunately a lot of data was older and considering that the cryptocurrency market has risen very sharply in the last months it set the model off with a certain degree.
9.2 Modelling
In order to model our data, we used the open source ontology editor Protege which allowed us to create our own ontology, load an existing ontology and edit it, query the loaded ontologies using SPARQL etc.
For the model of a cryptocurrency, we started with the DOACC (Description Of A Crpto Currency) ontology, which already models important aspect of a cryptocurrencies, such as its download page or cryptographic algorithm and we added the elements that we were interested in, such as a class for the logo of a cryptocurrency, an object property to assign a logo to a cryptocurrency, dataproperties for price, market capital, maximum supply of a coin etc. In order to populate the ontology with individuals, we used a python script that made calls to the CoinMarketCap API., which provides real time values for the existing cryptocurrencies and rewrote the JSON responses in order to fit the description of our ontology.
The combination of ontologies was called Cryma and it was decided to be stored, as many other ontologies have, on Purl.
Cryma is a combination of other ontologies such as :
- dc: http://purl.org/dc/elements/1.1/
- ns: http://www.w3.org/2003/06/sw-vocab-status/ns#
- ccy: http://purl.org/net/bel-epa/ccy
- owl: http://www.w3.org/2002/07/owl#
- rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
- xml: http://www.w3.org/XML/1998/namespace
- xsd: http://www.w3.org/2001/XMLSchema#
- foaf: http://xmlns.com/foaf/0.1/
- rdfs: http://www.w3.org/2000/01/rdf-schema#
- skos: http://www.w3.org/2004/02/skos/core#
- vann: http://purl.org/vocab/vann/
- doacc: http://purl.org/net/bel-epa/doacc#
We also used DBpedia to link data such as coin entities with already existing DBpedia entries.
For example :Bitcoin rdfs:seeAlso http://dbpedia.org/page/Bitcoin
10 Open API
The OpenApi specification can be found at : OpenAPI.
11 SPARQL And Fuseki
11.1 Fuseki
In order to process all the SPARQL requests a deployed Fuseki server was deployed into cloud.
The fuseki war was deployed on OpenShift and combined with persistent storage in order to save the created fuseki model.
All the data was uploaded from a TTL format file.
The fuseki server is available at the address : Fuseki Server
The server has a very high up time, since it was first deployed it has run with 100% uptime.
11.2 SPARQL
SPARQL queries were sent using Jena to the Fuseki server.
This code send a request to fuseki for the plot endpoint to select all values
related to a coin, filtering by start date and end date. An jena, with this line
model.write(out, format);
outputs in a certain format specified.
Examples of SPARQL queries are as follows :
Select all the news related to a coins. As some fields are optional they were marked accordingly.
Select only the news that are related to a specific coin, in this case Bitcoin was chosen.
Only 25 coins with some details were selected, details such as abbreviation, capital, supply, 24h change and volume.
In another query we ordered the coins by capital,
adding the ORDER BY DESC(?capital) LIMIT 25
at the end of the query
To select a certai coin with all it's values we created the above query.
The formats available on the site are :
- TURTLE
- N-Triples
- JSON-LD
- RDF/XML-ABBREV
- RDF/XML
- N3
- RDF/JSON
12 Deployment
The microservices were deployed on the cloud. Some on Pivotal and Fuseki on OpenShift.
We embraced a serverless architecture. Our apps run on the Pivotal Cloud Foundry Web Application container, Pivotal beeing a PaaS service.
Web applications are managed via Web UI or basic client CLI commands, the deployment process beeing very easy : specify the jar and the application on the cloud. The system takes care of the rest.
Some applications needed an SQL database, thus a database was attached to the service with only a few clicks and connection string changes. The SQL database was populated using a Python script that pulls data from the web and inserts it into the cloud.
Same as SQL database the Fuseki server needed a persistent storage service, OpenShift provides such a posibility, simply specify the ammount of storage and the mounting path to the service.
In order to ease de deployment process an automated bat script was created that logins, builds and pushes the apps.
In order to take advantage of free hosting we created several accounts to host our apps, this shows that microservices offer a great flexibility, only for the fact that a normal application would have needed a great deal of processing power thus costing in the long term. This flexibility was also translated into running the aplication on multiple clouds, we have three. bat line.
Addresses :
Fuseki : http://cryma-fuseki-cryma.1d35.starter-us-east-1.openshiftapps.com
Eureka : https://cryma-eureka-service.cfapps.io
Zuul Gateway API: https://cryma.cfapps.io/
Plot : https://cryma-plot.cfapps.io
Cointology : https://cryma-cointology.cfapps.io/
Prediction : https://cryma-prediction.cfapps.io/
Python Prediction : https://cryma-python-prediction.cfapps.io
Python Prediction Library : https://cryma-python-library.herokuapp.com/BTC
13 Conclusion
To conclude the technical paper, CryMa takes advantage of many modern technologies mentioned above ( i.e : Microservices, OWL and so on ) in order to create a smart extensible application.
14 Bibliography
1.Hochreiter S. et al, Long Short Term Memory architecture (1997)
2.Naeini M. P. et al, Stock Market Value Prediction Using Neural Networks (2010)
3.Kar A., Stock Prediction using Artificial Neural Networks (2010)
4.Roondiwala M. et al, Predicting Stock Prices Using LSTM (2017)
5.RDF API
6.CCY
7.DOACC
8.Fixer.IO
11.CoinBase
12.Strategy Guide: How to Pick the Best Cryptocurrency to Invest In
13.How to Choose Your Favorite Cryptocurrency
15.Nakamoto S., Bitcoin: A Peer-to-Peer Electronic Cash System (2009)


@@include('components/page-blocks/_head.html',{
"lang":"en",
"title":"SIGMA-SQUAD",
"description":"SIGMA-SQUAD html/css template for new user",
"keywords":"",
"favicon":"img/favicons/favicon",
})
@@include('components/page-blocks/header/_header.html')
@@include('components/page-blocks/left-menu/_nav.html')
@@include('components/page-blocks/typography/_typography.html')
@@include('components/page-blocks/buttons/_buttons.html')
@@include('components/page-blocks/grid/_grid.html')
@@include('components/page-blocks/avatar/_avatar.html')
@@include('components/page-blocks/list/_list.html')
@@include('components/page-blocks/card/_card.html')
@@include('components/page-blocks/figure/_figure.html')
@@include('components/page-blocks/footer/_footer.html')
@@include('components/page-blocks/_scripts.html')


Back Color:
Markers:
Hour Hand:
(
12
:59:59)
Minute Hand:
(12:
59
:59)
Second Hand:
(12:59:
59
)
Date:
Hide
Show
Date Color:
(31)
Week:
Hide
Show
Week Color:
(MON)
Seconds:
Only show second hand between the hours of
and
Power:
Hide second hand if battery is under
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
to save battery life.


Use these awesome forms to login or create new account in your project for free.
Minimum 8 characters