All modules for which code is available
- benchbuild.cli.bootstrap
- benchbuild.cli.config
- benchbuild.cli.experiment
- benchbuild.cli.log
- benchbuild.cli.main
- benchbuild.cli.project
- benchbuild.cli.report
- benchbuild.cli.run
- benchbuild.cli.slurm
- benchbuild.container
- benchbuild.db.versions.001_Remove_RegressionTest_table
- benchbuild.db.versions.002_Remove_GlobalConfig_table
- benchbuild.db.versions.003_Unmanage_Events
- benchbuild.driver
- benchbuild.experiment
- benchbuild.experiments
- benchbuild.extensions.base
- benchbuild.extensions.compiler
- benchbuild.extensions.log
- benchbuild.extensions.run
- benchbuild.extensions.time
- benchbuild.likwid
- benchbuild.project
- benchbuild.projects
- benchbuild.projects.apollo.rodinia
- benchbuild.projects.apollo.scimark
- benchbuild.projects.benchbuild.bots
- benchbuild.projects.benchbuild.bzip2
- benchbuild.projects.benchbuild.ccrypt
- benchbuild.projects.benchbuild.crafty
- benchbuild.projects.benchbuild.crocopat
- benchbuild.projects.benchbuild.ffmpeg
- benchbuild.projects.benchbuild.gzip
- benchbuild.projects.benchbuild.js
- benchbuild.projects.benchbuild.lammps
- benchbuild.projects.benchbuild.lapack
- benchbuild.projects.benchbuild.leveldb
- benchbuild.projects.benchbuild.linpack
- benchbuild.projects.benchbuild.lulesh
- benchbuild.projects.benchbuild.mcrypt
- benchbuild.projects.benchbuild.minisat
- benchbuild.projects.benchbuild.openssl
- benchbuild.projects.benchbuild.povray
- benchbuild.projects.benchbuild.python
- benchbuild.projects.benchbuild.rasdaman
- benchbuild.projects.benchbuild.ruby
- benchbuild.projects.benchbuild.sdcc
- benchbuild.projects.benchbuild.sevenz
- benchbuild.projects.benchbuild.sqlite3
- benchbuild.projects.benchbuild.tcc
- benchbuild.projects.benchbuild.x264
- benchbuild.projects.benchbuild.xz
- benchbuild.projects.gentoo.autoportage
- benchbuild.projects.gentoo.bzip2
- benchbuild.projects.gentoo.crafty
- benchbuild.projects.gentoo.eix
- benchbuild.projects.gentoo.gentoo
- benchbuild.projects.gentoo.gzip
- benchbuild.projects.gentoo.info
- benchbuild.projects.gentoo.lammps
- benchbuild.projects.gentoo.portage_gen
- benchbuild.projects.gentoo.postgresql
- benchbuild.projects.gentoo.sevenz
- benchbuild.projects.gentoo.x264
- benchbuild.projects.gentoo.xz
- benchbuild.projects.lnt.lnt
- benchbuild.projects.polybench.polybench
- benchbuild.projects.test.test
- benchbuild.reports
- benchbuild.signals
- benchbuild.statistics
- benchbuild.utils
- benchbuild.utils.actions
- benchbuild.utils.bootstrap
- benchbuild.utils.compiler
- benchbuild.utils.container
- benchbuild.utils.db
- benchbuild.utils.dict
- benchbuild.utils.download
- benchbuild.utils.log
- benchbuild.utils.path
- benchbuild.utils.progress
- benchbuild.utils.run
- benchbuild.utils.schedule_tree
- benchbuild.utils.schema
- benchbuild.utils.settings
- benchbuild.utils.slurm
- benchbuild.utils.uchroot
- benchbuild.utils.unionfs
- benchbuild.utils.user_interface
- benchbuild.utils.versions
- benchbuild.utils.wrapping
- plumbum.cli.switches
- pygtrie
- sqlalchemy.orm.attributes
- sqlalchemy.sql.selectable
- sqlalchemy.sql.sqltypes


---
layout: post
title: Deep Learning
date: '2017-06-21T11:24:00.000-04:00'
author: Mahyar
tags:
- Robotics
- Python
- Deep Learning
- Grasp
modified_time: '2017-06-23T14:03:09.048-04:00'
blogger_id: tag:blogger.com,1999:blog-727803219276813688.post-6817000731871957689
blogger_orig_url: http://www.etedal.net/2017/06/deep-learning.html
---
The best book for deep learning: http://www.deeplearningbook.org
Best language: Python
Best Library: Tensorflow


WebGL Fluid Simulation with Javascript
Find this project and others from
David Martínez Ros
on
https://davidmartinezros.com
/ mail
davidnezan@gmail.com


Toggle navigation
SWAPNIL
Home
(current)
About ME
My Work
Contact
MEET ME
My work
Socially connect me at:
2017 swapnil
Icons by
Flat icons


XIII. Workspaces¶
Workspaces in CPA are a way of saving the state of your plots so they can be reopened later and even applied as a template to new datasets.
Suppose you are performing quality control on a biological screen in which new plates (or slides) are imaged every week. The way you process and perform quality control on each new plate is largely the same. For example, you first run a CellProfiler pipeline producing various QC measures such as focus scores and stain intensities. Then, in CPA, you want to create (for example) a DNA content histogram and a scatterplot of Measurement_X vs. Measurement_Y while filtering for your controls. You also display Measurement_Z in P**late Viewer** to look for wells that may be out of focus. All of these plots can be saved in a workspace file by CPA, and 42 applied to new data later.
To create a workspace, simply open and configure the plots that you wish to save. Then choose File > Save workspace from the CPA file menu. The file that you save will contain configuration details for all of the currently open plots (Note: Table Viewer and Classifier do not yet support saving configurations). These same plots can be reopened in CPA by choosing File > Load workspace from the CPA file menu when the same properties file is used. To apply the workspace to a new dataset, simply open CPA with a different properties file that points to your other data, then choose File > Load workspace from the CPA file menu. CPA will try to apply the same settings to all of the plots that were open while using your new data.
Warning: If you save a histogram plot of per_image.Measurement_X in a workspace and try to open the workspace with a dataset that doesn’t have a Measurement_X column in it’s per_image table, CPA will simply use the first measurement in your per_image table instead.


For the past couple weeks, we have mostly been using methods to organize our code in ruby, and use the built-in objects that ruby provides. Most recently we have started to learn how to use Ruby Classes. A class in ruby is essentially a way to create numerous methods within one object, and gives you the ability to call on various attributes of that class from anywhere.
Lets look through an example of a Class where we ask what the ticket prices and timings are for a movie in a theater.
Within this class, we have three different methods. The initialize method is absolutely necessary in any class. This method takes the parameter (movie_name) and also is what sets the instance variables. These variables are essentially variables that are able to accessed by any method within a class by putting a "@" in front of their names. This allows us to bypass the issue of scope within the class.
These methods within classes are also only able to be changed within the class itself, but as you can see, can be executed outside the class. A new class can be created using the new_class = Class.new syntax. Its methods can be executed using new_class.method.
Classes are really useful tools in ruby because they allows us to create specific objects that can be accessed externally and used for any number of purposes. It has been really exciting for me to learn over the past week how to utilize classes, and I'm looking forward to making more complex ones in the future!
Thanks for reading,
Vineet Rastogi


Styleguide of the Gendercomics Webportal
Introduction
Our shared design framework enables us to create consistent and delightful user experiences.
As a multi-disciplinary team united by a human-centred approach, we work together to design the Gendercomics digital experiences.
These areas of design are the foundations on which the Gendercomics platform is built.

Meta Information
Default card with action
There is a caption too.
Meta Information
Card with image
There is a caption too.
Meta Information
Multimedia card
There is a caption too.
⤒ Back to Top


Minimum Members: 2   Maximum Members: 5
“Success is no accident. It is hard work. Perseverance, Learning, Studying, Sacrifice and most of all, love of what you are doing or learning to do." -- Pele
Everything is fair in love, war and soccer. Humans play, compete, excel and strike to win. But wouldn’t it be interesting to see machines do the same. This summer fierce and furious robots will increase the heat, fighting for goals and points. Manually controlled robots will fight for glory, in this exciting event.
Problem Statement ::
Rounds and details ::
Rules ::
Judging Criteria ::
FREQUENTLY ASKED QUESTIONS ::
· Q1: What is the maximum allowed weight for participating robots?
Ans: The maximum permissible weight of the robot is 5 kg for wireless robots and 3.5 kg for wired robots.
· Q2: What are the maximum allowed dimensions of the robots?
Ans: The maximum permissible dimensions of the robot are 35cmx30cmx30cm.
· Q3: What types of weapon systems can be used in the event?
Ans: Pneumatic/Hydraulic/Cutter/Projectile/Entanglement etc. mechanisms are NOT allowed.


--- layout: newsstory title: News Story match: BSC Yeltz 7 Villa 4 ---
Yeltz 7 Villa 4. Of course this is a serious tournament. Brian Little must be worried for his job after the team that's in the last 8 of the UEFA Cup is been dumped out of the B'ham Senior Cup by the mighty Yeltz.
Scorers: Piearce 2, Crisp 2 (1 pen), Cooper, Reed and Yates - it was after extra time, but 7 is a pretty good total.


×
Add Lead
{{lead_error}}
Company Name
This field is required.
Lead From
This field is required.
Type
Select Type
New
Old
This field is required.
Contact Person
This field is required.
Contact Number
This field is required.
Email
This field is required.
Lead Added By
This field is required.
Address
This field is required.
Date Created
Date Modified
Interested
Yes
No
Comments
This field is required.
Save
×
Update Lead
{{lead_error}}
Company Name
This field is required.
Lead From
This field is required.
Type
Select Type
New
Old
This field is required.
Contact Person
This field is required.
Contact Number
This field is required.
Email
This field is required.
Lead Added By
This field is required.
Address
This field is required.
Data Created
Data Modified
Interested
Yes
No
Comments
This field is required.
Update
×
{{title_text}}
Comments
Enter Alphabet only.
Enter OTP
×
Add Detail
Date
Time
Lead Number
Company Name
Follow Up By
Contacted To
Next Schedule Date
Deal Done
Interaction Detail
Save
×
Follow Up List
Date
Time
Follow Up By
Contacted To
Interaction Details
Next Scheduled Date
{{d.date}}
{{d.time}}
{{d.follow_up_by}}
{{d.contact_to}}
{{d.interation_details}}
{{d.next_scheduled_date}}
×
Follow Up
The deal have already been done...Thank you..!!
Ok


Circular Buffers and Motivations
The lovely thing about programming at a low level is you have to make due with limited resources. When you are stretching an Arduino-like board to it’s limit, and concurrently managing several real time tasks, you really need to keep this in mind.
An instructive example of the limited resources found on embedded devices is found when looking at our wireless Bluetooth communication protocol. We send packets to and from our device over Bluetooth in order to relay information or to set the type of feedback the band is giving. What happens if you take too long to parse a packet that has been received over Bluetooth? Well the Bluetooth module internally has a memory buffer that either overflows or is flushed. So the first thing you need to do is check this buffer as frequently as possible.
In some cases though, this might just not be enough. And it may be okay to miss a few packets, so you may decide to allow the buffer to overflow every so often. But another problem arises when this overflow occurs: your packets are no longer aligned with your buffer. So now you need a way to find a packet in a buffer that is potentially full of garbage.
These concerns, and others, led us to our circular buffer implementation. The circular buffer allows us to accumulate data read from the Bluetooth’s internal memory buffer, search for packets, reject any packet/buffer misalignment, and accomplishes this all without using much memory.

The head indicates the next index to read from, and the tail indicates the next index to write to. Now for a write, you just write to the buffer and update the tail.
Simple right? Except the whole point of the circular buffer is that it’s circular, and all we’ve done is a linear copy! What happens when we fill the buffer? We have to wrap around to the start.
Reading is implemented similarly, reading from the buffer to another destination, moving the head, and checking for wrap arounds. Once you begin to think about the read implementation, you realize that when writing you need to check if you wrote past the head, which means the end of the write function needs a small addition.
The more important and less trivial implementation detail is actually parsing packets in place within the circular buffer, which is what allows the circular buffer to solve the issue of packet/buffer misalignment. But I won’t bore you with the details! Better yet, let’s consider this an exercise left to the user.
Testing and Validation
A humble circular buffer currently lies at the base of our communication stack, but is it really needed? As mentioned prior, if you choose to forego a circular buffer and instead read-then-parse directly from the Bluetooth module, then you are a likely to suffer from packet/buffer misalignment, whether it’s caused by buffer overflow, or some other mysterious Bluetooth quirk.
We witnessed this first hand; once we started playing around with the wireless comms, it became clear that any significant data rate would eventually result in comms going down. Debugging revealed that the device was still receiving data, but it wasn’t able to parse for a valid packet.
With the circular buffer implementation, we have managed stable communication throughout the entire development cycle, while loading the Arduino considerably both by frequently communicating with the IMU and other I2C devices, as well as putting it in data streaming modes where it generates and broadcasts data at roughly 50 Hz.


{% extends "base.html" %} {% block title %}Hacking{% endblock %} {% block body %}
Siena is hosted on code.google.com. You can checkout the source code from the repository.
Special help is needed to create new implementations or to test the current ones.
Happy hacking!
{% endblock %}


Yelp Search
Term:
Location:
Radius:
Limit:
Offset:
Sort:
Unset - Best matched
Best matched (0)
Distance (1)
Highest Rated (2)
Deals:
Optional - not considered
Doesn't matter
Must have deals
Submit
View JSON Search Request
Yelp Results
JSON Response


TORONTO -- A new study that uses 3D modelling to compare the novel coronavirus with SARS shows that it can bind to human cells more strongly than its predecessor due to a structural mutation, which researchers say could be key knowledge in the search for a vaccine. The study, published this week in the scientific journal Nature, was conducted by researchers from the University of Minnesota, and compared the novel coronavirus (referred to in the study as SARS CoV-2) to the structure and behaviour of SARS, which belongs to the same family of coronaviruses. The research looks at how structural mutations allowed the novel coronavirus to spread so far and so fast. I am Batman.
It was a slippery slope and he was willing to slide all the way to the deepest depths. His son quipped that power bars were nothing more than adult candy bars. It was at that moment that he learned there are certain parts of the body that you should never Nair. The small white buoys marked the location of hundreds of crab pots. He stepped gingerly onto the bridge knowing that enchantment awaited on the other side. I'm a great listener, really good with empathy vs sympathy and all that, but I hate people. The lake is a long way from here.
The memory we used to share is no longer coherent. They did nothing as the raccoon attacked the lady’s bag of food. When she didn’t like a guy who was trying to pick her up, she started using sign language. Greetings from the galaxy MACS0647-JD, or what we call home.
As he entered the church he could hear the soft voice of someone whispering into a cell phone.  She did her best to help him. He was so preoccupied with whether or not he could that he failed to stop to consider if he should. Jeanne wished she has chosen the red button.


Next:
Aim of the Program
Up:
Manual_v012_online
Previous:
Manual_v012_online
Introduction
Subsections
Aim of the Program
Requirements
Installation
Bernd Husemann 2011-04-07


Two million apply to register to vote since General Election announced
More than two million people have applied to register to vote since the General Election was announced, according to Government figures.
A total of 2,048,039 applications were submitted between October 29 – the day the Government called for an election on December 12 – and November 19.
More than a third of applications (35%) came from people under the age of 25.
A further 30% were from 25 to 34-year-olds.
By contrast, just 5% came those aged 65 and over.
Time is running out to register to vote in the election.
Applications must be submitted by 11.59pm on Tuesday November 26.
An increase in applications is not direct evidence of an increase in the number of people able to vote.
At previous elections there have been applications from people below the legal age to vote or who are already on the electoral register.
Nonetheless the volume of applications suggests a growing interest in participating in the election.
Sorry, this content isn't available on your device.
Figures published by the Electoral Commission this week show that an estimated 25% of black voters in Great Britain are currently not registered to vote, along with 24% of Asian voters and 31% of people with mixed ethnicity.
This compares with a nationwide average of 17% who are not registered.
Craig Westwood, director of communications, policy and research at the Electoral Commission, said: “Everyone eligible to vote should be able to do so. It only takes five minutes to register to vote online – time that you might otherwise spend waiting for the kettle to boil or for a bus to arrive. So if you want to make sure your voice is heard, go online and register now.”
To be able to vote in the General Election on December 12, a person must be registered to vote, aged 18 or over on polling day, and also be either a UK or Irish citizen or a qualifying Commonwealth citizen resident in the UK.
Applications to register to vote can be made online at gov.uk/register-to-vote


stamps
Fun with Stamps. Episode 1. Stamp basics
- Episode 1. Stamp basics (this article)
- Episode 2. Dependency injection in FP
- Episode 3. Comparing with the ES2015 classes
- Episode 4. Implementing stamps yourself in 30 LOC
- Episode 5. Composition design pattern
- Episode 6. Statics — properties on stamps
- Episode 7. Early and late dependency injection
- Episode 8. Tracking and overriding composition
- Episode 9. Detaching compose()
- Episode 10. My stamp mental model
- Episode 11. Interfering composition
- Episode 12. New @stamp home
- Episode 13. Method collision control
- Episode 14. New @stamp/it as a replacement of Stampit
- Episode 15. The @stamp/ modules ecosystem
Create objects from reusable, composable behaviors
Stamps are standardised composable factory functions.
Intuitive structural type notation for JavaScript.
Used to describe the API function signatures in specs
stamp-specification : github.com
define stamps format
the current stampit-org impl (@3.2.1 the 20170916)


Interesting Ex-Microsoftie Blogs on Longhorn
Here. I read a post yesterday that pointed at Wesner Moise, an ex-Microsoftie, and now I'm hooked. I'm enjoying how he applies his technical riguor to Longhorn. I also want to know about SoftPerson, his software company that "develops desktop applications based on AI." Subscribed.


BEC Monitoring Development
Bristol Energy Cooperative links:
Main website
- The main Bristol Energy Coop website
PV Generation data display website
- With map, charts and headlines views of generation data
Simtricity
by CEPro - Access to generation, consumption and export data for the BEC rooftop solar installations
Github PV Generation Display source code
- The Javascript source for the map, charts and headlines pages
Github Fault Monitoring source code
- Also includes Raspberry Pi installation scripts and slide-show
PV Working Group on Google Drive
On-site display slide-shows (add ?<site_shortcode> to the URL)
- See what a Raspberry Pi display would show for any of our solar installations
Download the raspberry_install.sh script
- Run this script on a Raspberry Pi to set it up to display the BEC slide-show for the site the Pi will live at
Access to MySQL weather data
- Access to the weather data we're storing from Filton, the Dark Skies API and the Create Centre
Trigger becfm.php Fault Monitoring script run
- Sends emails if data from yesterday is missing or there was zero generation at a site during any daylight half-hour period


Before Change
return NLL
def algorithmic_gradKL(nn_state,target_psi,vis):
grad_KL={}
for rbmType in nn_state.gradient(vis[0]):
grad_KL[rbmType] = {}
for pars in nn_state.gradient(vis[0])[rbmType]:
grad_KL[rbmType][pars]=0
Z = partition(nn_state,vis)
for i in range(len(vis)):
for rbmType in nn_state.gradient(vis[i]):
for pars in nn_state.gradient(vis[i])[rbmType]:
After Change
// for pars in nn_state.gradient(vis[0])[rbmType]:
// grad_KL[rbmType][pars]=0
Z = partition(nn_state,vis)
grad_KL = torch.zeros(nn_state.rbm_am.num_pars,dtype=torch.double)
for i in range(len(vis)):
grad_KL += ((target_psi[i,0])**2)*nn_state.gradient(vis[i])
grad_KL -=probability(nn_state,vis[i], Z)*nn_state.gradient(vis[i])
//for rbmType in nn_state.gradient(vis[i]):


deployment
WorkerNode: It is a machine in a cluster
Executor: A Java process running on a worker node
Partition: A subset of whole dataset
Task: A basic execution unit to processing a partition
only configure multiple executors on one worker node
if the gc will be burden to run for large(>64G) memory


Hola everyone!!! :) My name is Diego, and i love design in all his forms. i'm also an architect, happy to open a new creative learning path, that i will share with all DEV community through this blog. Happy days!!!


A Line chart showing US prison population
Three strikes laws enacted in California, Colorado, Connecticut, Indiana, Kansas, Nevada, North Dakota
Three strikes laws enacted in Arkansas, Georgia, Maryland, Montana,
New Jersey, New Mexico, North Carolina, Pennsylvania, South Carolina,
Utah, Vermont, Wisconsin
This goes in the documents header:

Put this where you want the chart to show up:

Corrections Corporation of America is founded

Sentencing Reform Act passed

Three strikes law enacted in Washington

Three strikes laws enacted in California, Colorado, Connecticut, Indiana, Kansas, Nevada, North Dakota

Three strikes laws enacted in Arkansas, Georgia, Maryland, Montana,
 New Jersey, New Mexico, North Carolina, Pennsylvania, South Carolina,
 Utah, Vermont, Wisconsin

Three strikes laws enacted in Florida, Tennessee, Virginia

Substance Abuse and Crime Prevention Act passed in California

<canvas id="cvs" width="600" height="250">
[No canvas support]
</canvas>
This is the code that generates the chart - it should be placed AFTER the canvas tag(s):


|
MoveToCode
|
Public Attributes | |
| readonly Dictionary< string, string > | Extensions = new Dictionary<string, string>() |
| https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/schema/extension.schema.json More... | |
| readonly Dictionary< string, string > | Extras = new Dictionary<string, string>() |
| https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/schema/extras.schema.json More... | |
| readonly Dictionary<string, string> Microsoft.MixedReality.Toolkit.Utilities.Gltf.Schema.GltfProperty.Extensions = new Dictionary<string, string>() |
| readonly Dictionary<string, string> Microsoft.MixedReality.Toolkit.Utilities.Gltf.Schema.GltfProperty.Extras = new Dictionary<string, string>() |


Our mission is to bring cost effective solutions that enable optimization and cost reduction in the supply chain.
Find Out MoreOur team brings extensive experience in the supply chain, video analytics and autonomous robotic data acquistion.
Get Started!We believe in choosing the right solution for your problem. If our platform isn't the right solution for your situation, we'll tell you why.
Our platform when ready to ship, will require mimimal initial training and no new positioning hardware.
Our team is constantly learning about the latest techniques and algorithms.
Each member of our team believes in working as one team instead of product vendor vs. client.
Ready to start using Deepsight to improve your supply chain? That's great! Give us a call or send us an email and we will get back to you as soon as possible!
(773) 451-5459


if u type stuff here i'll send it to heather anyanimously:
yeah dats right there's a captcha nyow
take dat, joe


your browser does not support canvas!
leaves:
spread:
0.3
0.4
0.5
0.6
0.7
0.8
0.9
leaveType:
Small
Medium
Big
Thin


With Bootstrap we can highlight text.
We can also Underline text with a dotted line.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a gallery of type and scrambled it to make a type specimen book.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a gallery of type and scrambled it to make a type specimen book.
HTML elements: div
, section
, and span
Use ctrl + v to pase copied text.
Text in a pre element displays spaces and line break that are normally only visible in html code.
Muted Text.
Important Text.
Success Text.
Informational Text.
Warning Text.
Danger Text.
Muted Text.
Important Text.
Success Text.
Informational Text.
Warning Text.
Danger Text.


Children in care achieving academic results better than the national average
Exams results from children living in care are above the national average.
by John-Paul Clark, https://www.dailyrecord.co.uk/authors/john-paul-clark/Children in care are achieving exam results above the national average.
West Lothian Council’s education policy development and scrutiny panel (PDSP) was given an update on the performance of looked-after children (LACs) in Level 5 and Level 6 exams.
The panel heard that the performance of LAC children was better than their peers across the country in almost all recorded measures.
This included an increase in S4 LACs achieving five or more Level 5 qualifications, S6 LACs achieving one or more Level 6 qualifications, S6 LACs achieving three or more Level 6 qualifications and S6 LACs achieving five or more Level 6 qualifications.
Executive councillor for education David Dodds said: “These figures demonstrate that the attainment of looked-after children in West Lothian schools compares favourably when compared to the national average.
“This reflects the hard work of the pupils, staff and carers and we hope this trend continues moving forward.
“We will continue to monitor performance in these measures in the hope that we can continue this excellent performance.”
A child who has been in the care of their local authority for more than 24 hours is known as a looked-after child. Scotland’s definition also includes children under a supervision requirement order.
This means that many of the looked-after children in Scotland are still living at home but with regular contact from social services.


The December release has arrived!
Finagle 17.12.0, Finatra 17.12.0, Scrooge 17.12.0, TwitterServer 17.12.0, and Util 17.12.0.
New Features:
finagle-core: Expose Tunables for MethodBuilder timeout configuration. Update the http.MethodBuilder and thriftmux.MethodBuilder to accept Tunables for configuring total and per-request timeouts. c912dd4b
finagle-thrift, finagle-thriftmux: Add support for Scrooge
ReqRepServicePerEndpoint
functionality. df5f10bd
finagle-thriftmux: Add support for Scrooge ServicePerEndpoint
and
ReqRepServicePerEndpoint
functionality to thriftmux.MethodBuilder
.
3abaa524
Breaking API Changes:
finagle-base-http: Remove deprecated [Request|Response].[encode|decode][Bytes|String] methods. Use c.t.f.h.codec.HttpCodec methods instead. 006de6a3
finagle-thrift: Move ThriftRichClient
and ThriftRichServer
to
c.t.finagle.thrift
package. fcf66bae
Runtime Behavior Changes:
finagle-core: The “pipelining/pending” stat has been removed from protocols
using c.t.f.dispatch.PipeliningClientDispatcher
. Refer to the “pending” stat
for the number of outstanding requests. 0d162d17
finagle-thrift,thriftmux: Tracing of RPC method names has been removed. This concern has moved into Scrooge. df161758
Added:
ReqRepServicePerEndpoint
functionalty. b8e919d3Changed:
multipart = true
arg to
EmbeddedHttpServer.httpMultipartFormPost
. c139d95c.t.inject.server.EmbeddedTwitterServer
InMemoryStatsReceiver
for embedded http clients. The http client stats are
emitted with the server under test stats which can be confusing, thus we now
create a new InMemoryStatsReceiver
when creating an embedded http client.
0c4a8ee5API Changes:
c.t.util.SetMaker
has been removed.
Direct usage of Guava is recommended if needed. b8bd0d4fscrooge.Request
and scrooge.Response
envelopes which
are used in ReqRepServicePerEndpoint
interfaces and associated code. The
scrooge Request
and Response
allow for passing “header” information (via
ThriftMux Message contexts) between clients and servers. For instance, a
server can implement a ReqRepServicePerEndpoint
, and set response headers
along with a method response, e.g., class MyService extends MyService.ReqRepServicePerEndpoint {
def foo: Service[Request[Foo.Args], Response[Foo.SuccessType]] = {
Service.mk[Request[Foo.Args], Response[Foo.SuccessType]] { request: Request[Foo.Args] =>
val result = ... // computations
Future
.value(
Response(
headers = Map("myservice.foo.header" -> Seq(Buf.Utf8("value1"))),
result)
}
}
}
This ServicePerEndpoint
can then be served using ThriftMux
:
ThriftMux.server.serveIface(":9999", new MyService().toThriftService)
These response headers will be transported as Mux#contexts
to the client. If
the client is using the client-side ReqRepServicePerEndpoint
it will be able
to read the headers from the returned Response
directly. E.g.,
val client = ThriftMux.client.reqRepServicePerEndpoint[MyService.ReqRepServicePerEndpoint]
val response: Response[Foo.SuccessType] = Await.result(client.foo(..))
if (response.headers.contains("myservice.foo.header")) {
...
Users can also choose to wrap the ReqRepServicePerEndpoint
with a MethodPerEndpoint
via ThriftMux.client.reqRepMethodPerEndpoint(reqRepServicePerEndpoint)
in order to
deal with methods instead of services. See the scrooge documentation for more information.
aa1fb0c0
Bug Fixes:
io.netty.channel.epoll.Native.epollWait0
as an idle thread on
“/admin/threads”. This method is observed when using Netty 4’s native
transport. f8f64a46


Bryant takes on Northern Vermont-Lyndon
by EndPlaySMITHFIELD, R.I. - Northern Vermont-Lyndon vs. Bryant (2-2)
Chace Athletic Center, Smithfield, Rhode Island; Friday, 7 p.m. EST
BOTTOM LINE: The Bryant Bulldogs are set to battle the Hornets of Division III Northern Vermont-Lyndon. Bryant is coming off a 69-44 road win against St. Peter's in its most recent game.
TEAM LEADERS: Adam Grant has averaged 20.3 points and 4.3 rebounds this year for Bryant. Complementing Grant is Michael Green III, who is averaging 11.8 points and 5.3 assists per game.GREEN LIGHT FOR GRANT: Through four games, Bryant's Adam Grant has connected on 42.1 percent of the 38 3-pointers he's attempted. He's also shooting 72.2 percent from the free throw line this season.
DID YOU KNOW: Bryant went 3-8 overall when facing out-of-conference opponents last season. The Bulldogs offense scored 67.7 points per matchup in those 11 contests.
___
For more AP college basketball coverage: https://apnews.com/Collegebasketball and http://twitter.com/AP_Top25
___
This was generated by Automated Insights, http://www.automatedinsights.com/ap, using data from STATS LLC, https://www.stats.com


{% set link = 'about' %} {% extends 'master.html' %} {% block body %}
{{ gettext('The AppComposer is an application that lets teachers adapt and translate Go-Lab applications. You may see more documentation in the documentation site.', link = 'http://appcomposer.readthedocs.org/') }}


BaseNonContainer
Programming Guide and Framework Reference
IBM Corporation
Before using the information, and the product it supports, be sure to read the general information under Appendix A, "Notices".
The following paragraph does not apply to the United Kingdom or any country where such provisions are inconsistent with local law.  Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you.
This publication could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time.
It is possible that this publication may contain reference to, or information about, IBM products (machines and programs), programming, or services that are not announced in your country. Such references or information must not be construed to mean that IBM intends to announce such IBM products, programming, or services in your country.
Requests for technical information about IBM products should be made to your IBM reseller or IBM marketing representative.
(c) Copyright International Business Machines Corporation 1996. All rights reserved.
Note to U.S. Government users - Documentation related to restricted rights - Use, duplication or disclosure is subject to restrictions set forth in GSA ADP Schedule Contract with IBM Corp.
Pre-release notification
This document is to be considered a living document and work-in-progress at the current time. As long as this notice is here, consider the information contained within the document to be useful but preliminary in nature.
Since OpenDoc parts are SOM objects, there are two initialization and termination sequences of interest, that of the SOM object and of the component startup and shutdown.
When a SOM object is created, an initializer is called. SOMDefaultInit is the default initializer, though others can be defined and used. It is appropriate in this method to set initial values for attributes and private variables, however memory allocations should be held until the component initialization when error handling can be done more easily. Note, earlier versions of SOM used a method, SOMInit, however this method is obsolete and should not be used (all code in this book and generated by PartMeister does not use SOMInit).
When a SOM object is destroyed, a destructor is called. SOMDestruct is an appropriate place to release allocated memory and free any other resources associated with the object. It is the last method called before the object is destroyed. Note, this method is a match to the new initializer - the obsolete SOMInit used the now obsolete method SOMUninit as its destructor.
An OpenDoc component has two initialization methods, InitPart and InitPartFromStorage. If an component is being created for the first time then InitPart is called. InitPart should completely setup the component. If, however, a component is being reloaded (it has been stored persistently), then InitPartFromStorage is called instead of InitPart. The component should use the information from the persistent store to setup the component such that it reflects the state in which it was stored.
On OS/2, when a component is registered it will be instansiated (calling InitPart). When the icon is created on the desktop or in a folder, it will actually be a document consisting of that part. Thus when the user uses drag-and-drop to create an instance of the component in an OpenDoc application, InitPartFromStorage will be called, as the icon has persistent storage associated with it from the registration process.
When a root part is created, the initialization cycle follows through the process for creating a new part (SOM object initialization, OpenDoc InitPart), externalization then through the InitPartFromStorage process. Therefore, it is important that an object does not have any dependencies on either InitPart or InitPartFromStorage.
When a part is added to an application using drag and drop from a template, the part will be initialized using InitPartFromStorage since the creation of the template during the registration process creates a default part state with content defined in the InitPart processing.
When an application is loaded from a file, the initialization restores the application to its last saved state. A significant difference is that frames are not created, they are restored. This changes the initialization process to use the method DisplayFrameConnected instead of DisplayFrameAdded. The primary difference between the two methods is that DisplayFrameAdded will create a new FramePartInfo object, whereas DisplayFrameConnected will use the FramePartInfo objects that is restored with the part. Other processing, such as making the frame available as a drop target must be done in both methods.
Externalization
Externalization simply means storing the component data and state. A component should store enough information such that is can reproduce itself when the user accesses this instance again.
OpenDoc may be used in a heterogeneous, distributed environment - and it is likely that all the users will have access to the same software or configurations, especially if one thinks about the ability to send information across the Internet. Thus, the ability to reproduce the saved state on a foreign system requires some additional considerations - for example, a particular word processor may not exist for the platform on which a document is received, but this should not preclude that user from viewing the document.
One of the OpenDoc technologies, Bento, provides mechanisms that allow OpenDoc applications to store their content flexibly to allow users to share information easily in a distributed environment. A component may store its content in any number of representations, allowing the creator to indicate the set of representations that are required (flexibility with user control), and the receivers to view the content with their own choice of content editor or viewer (user customization).
For example, a word processing document could be created on OS/2 Warp with ABC Writer and embed a photo using ABC PhotoEditor. The creator chooses to store the document using the native ABC file formats, as well as RTF for the text and JPEG for the photo. The document could be sent to a Mac OS user, where ABC has not yet ported its software. The Mac OS user loads the RTF version of the document into DEF WP, and the JPEG version of the photo into DEF Photo.
Storing are restoring the state and contents of part handlers involves managing a number of standard entries in addition to the data content for the part itself. The internalization and externalization frameworks are designed to minimize the effort of the developer to managing the content of the part handler which is unique to the part under development. For most part handlers, the developer will require only implementing the two 'content' methods to satisfy data input/output requirements.
These two frameworks rely on a derived class to implement the method PartKind, which returns the ISO string that identifies this part handler. It is mandatory to override this method unless the entire internalization and externalization frameworks are replaced.
This framework provides an initialization process that divides the state and content internalization. The state is often not overridden, as it handles the restoration of display frames.
This allows the developer to concentrate on the restoration of the part content by augmenting the InternalizeContent method. The parent method should be called first, then the derived method may extract the content from the storage unit as desired. Augmentation is recommended as the parent classes may store content independent of the derived part.
For developers creating parts that may be derived from, ensure that unique data type identifiers are used for non-standard data types, and that standard types are not stored privately - as they may be overridden by a derived class.
This framework manages the sequence of methods for storing state and content through four methods - ClearContentsProperty, ExternalizeHeader, ExternalizeState, ExternalizeContent.
ClearContentsProperty removes any kODPropContents property that does not match the derived parts kind. This ensures that the storage unit contains a single kODPropContents property, and it represents the currently active part handler.
ExternalizeHeader populates the storage unit with kODPropContents and kODPreferredEditor properties. This method will rarely be subclassed.
ExternalizeState stores the current part state including display frames.
ExternalizeContent will usually be augmented by the derived part, calling the parent method first and then adding additional content to the storage unit to reflect the derived parts content.
OpenDoc provides a single mechanism for packaging data, regardless of what operation will be applied to the data. This mechanism is the storage unit. For clipboard, drag, drop, linking and persistence, the developer populates or retrieves data using the same classes and methods.
A storage unit is a hierarchy of properties and associated values. Each property may contain zero or more values, with each value having a single data type. A hierarchy may be implemented by having a value reference another property. The storage unit is an abstraction, it does not have any dependence on a particular device, source or target. This allows the implementation of persistent storage, cross-process and cross-network data transfers and future technologies to be implemented transparent to the application utilizing the service. It also provides a mechanism where applications can store and retrieve data without any proprietary format knowledge required for standard data types (a storage unit may contain values that are stored in a proprietary format, but may also contain alternate standard formats).
Consider a word processing application being used to create an email message where the recipients of the message will be using the same word processor. The sender does not need to be concerned with the format in which the message is stored. However, if the sender is not sure of all the recipients word processing packages, then a standard format such as ASCII text or RTF may be used - even if it means the loss of fidelity in the presentation of the message. Storage units provide a solution for this case, the property (the message in this case) may contain many values, each of a different data type. For instance,
| Property | Message |
| Value | Word Processor specific (native format) |
| Value | Rich text format (RTF) |
| Value | Plain text (ASCII) |
The recipient on receiving the message will use the highest fidelity version of the message, thus a user with the same word processor will see the Word Processor specific version, the use with a different word processor that cannot read the native format will use the RTF version and the user that does not have a word processor that can read either of these (for instance a text editor) will see the ASCII text version.
The addition of translators, that can provide on-the-fly translation from one format to another can also assist with this process. For example, the native format for a word processor may have translators to the native format for another word processor. This would likely have higher fidelity than going to RTF, and would deliver the message in a manner suited specifically to the user's installed word processor.
The transfer of data between components usually is similar for each of the standard data transfer mechanisms. For example, a word processor will usually provide the same content, currently selected text, for all data transfer operations.
The actual transfer processes, when described as operations to a user, are very similar - even though in current GUI API sets they are usually implemented in very different ways using different APIs and messages. OpenDoc provides a set of methods that implement all data transfers using storage units, with some of the similarity of operation abstracted. However, a framework that implements a uniform interface for these operations is not provided in the base toolkit - but is provided in the next section.
The following is the general implementation for this framework; methods are provided for,
return true/false indicating whether the operation is valid
populate a storage unit with content to be transferred
extract content from a received storage unit
Additional methods, specific to the operation, are provided to manage the differences in user operation for the different transfer types - for instance, you may specify an icon to use for drag operations. However, these operation specific methods are minimal and default behavior is provided that makes implementation of these methods optional.
The clipboard operations are invoked through menu selections from the Edit menu and keyboard accelerators for those menu items. Each of the operations - cut, copy, paste - is implemented in the framework.
Validity checking is provided with the methods MenuCutValid, MenuCopyValid and MenuPasteValid. Before an accelerator is dispatched to the clipboard operation or the Edit menu is displayed, the appropriate method will be called. If kODTrue is returned, the operation will be carried out or the menu item will be enabled. If kODFalse is returned, the operation will not be dispatched or the menu item will be disabled.
If an operation is dispatched the appropriate method, MenuCut, MenuCopy or MenuPaste will be called.
MenuCut should be overridden and act on its content appropriately.
MenuCopy will rarely be overridden, as its operation will dispatch the method PopulateClipboardStorageUnit which is usually the only action required of a component.
MenuPaste will rarely be overridden, as its operation will dispatch the method ReceiveClipboardStorageUnit which is usually the only action required of a component.
PopulateClipboardStorageUnit is called with a storage unit that is prepared for placement on the clipboard. The component adds its properties to the storage unit and returns. A component may choose to use a promise instead of putting the content in the storage unit, and implement the FulfillPromise method as appropriate.
ReceiveClipboardStorageUnit is called with the storage unit that has been received from the clipboard. The component may extract the information it desires and return. Whether the content is received as the result of a promise is transparent to the developer.
DragValid is called when the user tries to initiate a drag operation, indicating whether this action is currently valid.
DropValid is called, with a storage unit, when the user moves the icon for a current drag operation over the component. The component may check the current contents of the storage unit to determine whether any of the content is valid to drop on this component. Each frame, when it is setup, will call this method with a null storage unit - the method should return kODTrue if a drop is ever valid for this frame.
Drag is called when the user initiates a drag operation (assuming DragValid returns kODTrue). When the user starts the drag, AcquireDragPointer will be called, allowing the part to provide its own icon for the drag action. The drag storage unit will also be populated, or a promise made.
Drop is overridden from ODPart and given default function that will call ReceiveDropStorageUnit with the storage unit from the drop action.
PopulateDragStorageUnit is called with a storage unit that is prepared for the drag operation. The component adds its properties to the storage unit and returns. A component may choose to use a promise instead of putting the content in the storage unit, and implement the FulfillPromise method as appropriate.
ReceiveDropStorageUnit is called with the storage unit that has been received as a result of a drop action. The component may extract the information it desires and return. Whether the content is received as the result of a promise is transparent to the developer.
LinkSourceValid is called when the user initiates a link action (may be through a direct manipulation action or the use of the Copy item from the Edit menu, which will place a link specification on the clipboard). If this method returns kODTrue, the link specification will be requested and link source set up.
PopulateLinkSpec allows the component to define the specification information that indicates the content to be linked. The default is a null specifier, indicating a single content value will be the source content.
UpdateLink is invoked by the component when the content changes.
PopulateLinkStorageUnit is called when the framework is ready to post an update to the content.
ReceiveLinkStorageUnit delivers the storage unit containing the updated data from the attached link source.
| MenuCutValid | return kODTrue/kODFalse indicating whether Cut operation is currently valid. Result returned in framework is kODFalse. |
| MenuCopyValid | return kODTrue/kODFalse indicating whether Copy operation is currently valid. Result returned in framework is kODFalse. |
| MenuPasteValid | return kODTrue/kODFalse indicating whether Paste operation is currently valid. Result returned in framework is kODFalse. |
| MenuCut | implementation of cut operation. Framework has no implementation. |
| MenuCopy | implementation of copy operation. Framework prepares a storage unit for placement on the clipboard, sets up the focus for the clipboard and populates the clipboard with the storage unit populated by the PopulateClipboardStorageUnit method. |
| MenuPaste | implementation of paste operation. Framework receives the storage unit from the clipboard and calls the method ReceiveClipboardStorageUnit to parse the content. |
| PopulateClipboardStorageUnit | place content, or promise, into storage unit to be placed on clipboard. Framework has no implementation. |
| ReceiveClipboardStorageUnit | extract content from storage unit received from clipboard. Framework has no implementation. |
| DragValid | return kODTrue/kODFalse, indicates whether drag action is valid. Result returned in framework is kODFalse. |
| AcquireDragPointer | return icon to use as the displayed pointer for the drag operation. The framework provides a default icon. |
| Drag | implementation of the drag action. Framework initiates drag, calling AcquireDragPointer and PopulateDragStorageUnit. |
| PopulateDragStorageUnit | place content, or promise, into storage unit to be dragged. Framework has no implementation. |
| DropValid | return kODTrue/kODFalse, indicates whether drop action is valid for the content provided in the storage unit. When a frame is instansiated, it will call this method with a kODNULL storage unit, the response should indicate whether a drop operation is ever valid for this frame. |
| Drop | Overridden from ODPart, provides mechanism for handling the drop action and dispatching the ReceiveDropStorageUnit method. |
| ReceiveDropStorageUnit | extract content from storage unit dropped. Framework has no implementation. |
| LinkSourceValid | return kODTrue/kODFalse, indicates whether the part can be a link source in current context. Result returned in framework is kODFalse. |
| PopulateLinkStorageUnit | place content, or promise, into storage unit to be transferred. Framework has no implementation. |
| UpdateLink | method is only called by derived part, to indicate that the content has changed. The framework calls PopulateLinkStorageUnit for each attached link target. |
| RecieveLinkStorageUnit | extract content from storage unit. Framework has no implementation. |
The Draw framework provides basic support for the four view types supported by OpenDoc - small icon, large icon, thumbnail and frame. Menu support is enabled for the Show As menu items, and the commands are handled in the HandleEvent method to dispatch the appropriate calls to change the view type.
According to the current view type, an appropriate draw method will be called. The implementation of the thumbnail is as a very large icon, since the base class has no content to represent in a miniature representation.
References in this publication to IBM products, programs, or services do not imply that IBM intends to make these available in all countries in which IBM operates. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Subject to IBM's valid intellectual property or other legally protectable rights, any functionally equivalent product, program, or service may be used instead of the IBM product, program, or service. The evaluation and verification of the operation in conjunction with other products, except those expressly designated by IBM, are the responsibility of the user.
IBM may have patents or pending patent applications covering subject matter in this document. The furnishing of this document does not give you any license to these patents. You can send license inquiries, in writing, to:
IBM Director of Licensing
IBM Corporation
500 Columbus Avenue
Thornwood, NY 10594
U.S.A.
Licencees of this program who wish to have information about it for purposes of enabling: (i) the exchange of information between independently created programs and other programs (including this one) and (ii) the mutual use of the information which has been exchanged, should contact IBM Corporation, Department RM1A, 1000 N.W. 51st Street, Boca Raton, FL 33431, U.S.A. Such information may be available, subject to appropriate terms and conditions, including in some cases, payment of a fee.
The following are trademarks of the IBM Corporation in the United States or other countries or both:
AIX
IBM
OS/2
SOM
System Object Model
Workplace Shell
The following terms are trademarks of other companies:
| Apple | Apple Computer Inc. |
| C++ | AT&T Company |
| CORBA | Object Management Group, Inc. |
| Macintosh | Apple Computer Inc. |
| Mac OS | Apple Computer Inc. |
| Microsoft | Microsoft Corporation |
| OpenDoc | Apple Computer Inc. |
| QuickDraw | Apple Computer Inc. |
| Windows | Microsoft Corporation |
All other marks are the property of their respective owners.


Manage integrations through the API.
Custom media type: machine-man-preview Announced: 2016-09-14
machine-man-preview


You can use the information below I have to help you with your guess.
Iam Areej Haj Khali. I have a BA in Translation.
I like change, I don't like routine, I like visiting cities.
Education Summary:
- My primary school: Baraem Abu Alanda.
- My high school: Amna Bint Wahab.
- My University: Al-Zaytoonah University of Jordan.
My ten favorite cities:
- London
- New York
- Paris
- Dubai
- Tokyo
- Rome
- Hong Nong
- Rio De Janeiro
- Cape Town
- San Francisco


ISY API Module for REST calls to the ISY Interfaces
- Version:
-
- 2.0
- Source:
Methods
-
<static> addnode(profileNum, data, cmd)
-
Handles the addnode calls to ISY
Parameters:
Name Type Description profileNum
number The NodeServer profileNum
data
string Data received for the type of query from MQTT.
cmd
string Command received to query to the ISY
- Source:
-
<static> addNodePrefix(profileNum, nod)
-
Automactially adds the ISY Node Prefix onto the address before querying the API.
Parameters:
Name Type Description profileNum
number The NodeServer profileNum.
nod
string The NodeServer address id
- Source:
-
<static> command(profileNum, data, cmd)
-
Handles the command calls to ISY
Parameters:
Name Type Description profileNum
number The NodeServer profileNum
data
string Data received for the type of query from MQTT.
cmd
string Command received to query to the ISY
- Source:
-
<static> getIsy(profileNum, url, seq, getText, callback)
-
Performs the actual query to ISY
Parameters:
Name Type Description profileNum
number The NodeServer profileNum
url
string The URL created by makeNodeUrl or makeApiUrl
seq
number Sequence number to verify response on specific call
getText
boolean Get full response text from ISY and package it in the response. True/False
callback
function Simple (err, response) callback with the result success or fail.
- Source:
-
<static> getVersion(callback)
-
Handles the inital getVersion request to verify ISY connectivity
Parameters:
Name Type Description callback
function Simple (err) callback if there is an error. Otherwise no parameters passed. We save the result in the config/config singleton.
- Source:
-
<static> handleRequest(profileNum, data, command, getText, callback)
-
Handles the Request from Polyglot calls TO the ISY and formats them appropriately based on type.
Parameters:
Name Type Description profileNum
number The NodeServer profileNum
data
string Data received for the type of query from MQTT.
command
string Command received to query to the ISY
getText
boolean Get full response text from ISY and package it in the response. True/False. Default is False
callback
function Simple (response) callback with the result success or fail.
- Source:
-
<static> makeApiUrl(api, path_args)
-
Creates the API URL to query ISY
/rest/{api}/?{path_args}Parameters:
Name Type Description api
string The ISY API path to query
path_args
object Dictionary of path arguments appended to the URL.
- Source:
-
<static> makeNodeUrl(profileNum, path, path_args)
-
Creates the Node URL to query ISY
/rest/ns/{profileNum}/{path}/?{path_args}Parameters:
Name Type Description profileNum
number The NodeServer profileNum
path
string The ISY path to query
path_args
object Dictionary of path arguments appended to the URL.
- Source:
-
<static> removenode(profileNum, data, cmd)
-
Handles the removenode calls to ISY
Parameters:
Name Type Description profileNum
number The NodeServer profileNum
data
string Data received for the type of query from MQTT.
cmd
string Command received to query to the ISY
- Source:
-
<static> request(profileNum, data, cmd)
-
Handles the request calls to ISY
Parameters:
Name Type Description profileNum
number The NodeServer profileNum
data
string Data received for the type of query from MQTT.
cmd
string Command received to query to the ISY
- Source:
-
<static> restAddNodes(req, res)
-
Handles the addnodes command from ISY
Not implemented on the ISY side yet.Parameters:
Name Type Description req
object Express incoming request object.
Params at req.params
Query vars at req.queryres
object Express response object.
- Source:
-
<static> restcall(profileNum, data, cmd)
-
Handles the restcall calls to ISY
Parameters:
Name Type Description profileNum
number The NodeServer profileNum
data
string Data received for the type of query from MQTT.
cmd
string Command received to query to the ISY
- Source:
-
<static> restCommand(req, res)
-
Handles the 'command' command from ISY and passes it to the NodeServer to exectue a command. e.g. DON/DOF/etc.
Parameters:
Name Type Description req
object Express incoming request object.
Params at req.params
Query vars at req.queryres
object Express response object.
- Source:
-
<static> restInstall(req, res)
-
Handles the incoming install command from ISY
Not Implemented from the ISY at the moment. (I can't get ISY to send me the command)Parameters:
Name Type Description req
object Express incoming request object.
Params at req.params
Query vars at req.queryres
object Express response object.
- Source:
-
<static> restReport(req, res)
-
Handles the report command from ISY
Not implemented on the ISY side yet.Parameters:
Name Type Description req
object Express incoming request object.
Params at req.params
Query vars at req.queryres
object Express response object.
- Source:
-
<static> restStatus(req, res)
-
Handles the incoming status command from ISY and passes it along to the NodeServer
This handles the succesful response to ISY as well.Parameters:
Name Type Description req
object Express incoming request object.
Params at req.params
Query vars at req.queryres
object Express response object.
- Source:
-
<static> status(profileNum, data, cmd)
-
Handles the status calls to ISY
Parameters:
Name Type Description profileNum
number The NodeServer profileNum
data
string Data received for the type of query from MQTT.
cmd
string Command received to query to the ISY
- Source:


{% extends 'base.html' %} {% block title %}
Note : to upload data to Product model, use $ python manage.py loaddata fixtures/products.json --app products


viewPorts: any
The view ports to target when activating this route. If unspecified, the target moduleId is loaded into the default viewPort (the viewPort with name 'default'). The viewPorts object should have keys whose property names correspond to names used by <router-view> elements. The values should be objects specifying the moduleId to load into that viewPort. The values may optionally include properties related to layout: `layoutView`, `layoutViewModel` and `layoutModel`.


Introduction to Timekeeping on Mars
How is time calculated on Mars
On Mars, seconds, minutes, and hours are exactly the same as those on Earth. However, martian days are longer than days on Earth. Martian time is denoted using hh:mm:ss or +mm:ss. For example, we would have 13:43 of the day. We also have +25:53 which is after the first 24 hours. This extended notation must be less than +39:35.24409.
There are 25 timezones on Mars. For easier time conversions, each timezone is separated by 1 hour. Thus each timezone covers 14.5987 degrees instead of 15 degrees. As a side note, the prime meridian on Mars is the longitude that passes through Airy-0. Longitudes are from 0 to 360.
| Timezone | Start Longitude | End Longitude | Hours Deficit from 0 Timezone |
|---|---|---|---|
| 0 | 0° | 14.5987° | 0 |
| 1 | 14.5987° | 29.1974° | +1 |
| 2 | 29.1974° | 43.7961° | +2 |
| 3 | 43.7961° | 58.3948° | +3 |
| 4 | 58.3948° | 72.9935° | +4 |
| 5 | 72.9935° | 87.5922° | +5 |
| 6 | 87.5922° | 102.1909° | +6 |
| 7 | 102.1909° | 116.7896° | +7 |
| 8 | 116.7896° | 131.3883° | +8 |
| 9 | 131.3883° | 145.9870° | +9 |
| 10 | 145.9870° | 160.5858° | +10 |
| 11 | 160.5858° | 175.1845° | +11 |
| 12 | 175.1845° | 189.7832° | +12 |
| 13 | 189.7832° | 204.3819° | +13 |
| 14 | 204.3819° | 218.9806° | +14 |
| 15 | 218.9806° | 233.5793° | +15 |
| 16 | 233.5793° | 248.1780° | +16 |
| 17 | 248.1780° | 262.7767° | +17 |
| 18 | 262.7767° | 277.3754° | +18 |
| 19 | 277.3754° | 291.9741° | +19 |
| 20 | 291.9741° | 306.5728° | +20 |
| 21 | 306.5728° | 321.1715° | +21 |
| 22 | 321.1715° | 335.7702° | +22 |
| 23 | 335.7702° | 350.3689° | +23 |
| 24 | 350.3689° | 360° | +36:35 |


{{title}}
{{potato}}
Home
Work
New Todo
Task Type
You have selected {{selectedTodo.name}}
{{eachItem.name}}
Delete


Cronos is a medium level machine based on Linux, the initial approach is based on two ways to bypass the authentication of the web application named Cronos, the first one involve SQLi on login’s form and the second one involve the session.
The privilege escalation process is based on cronjobs and PHP file manipulation.
Recon
The port 80 has the default Apache2 page:
The port 53 is opened, what means that probably there’s a DNS translation to the machines’s IP:
Done, now we can access the web application named Cronos, both index page and the administrator’s login page:
After the web enumeration using gobuster, we got the following results:
The results for the admin.cronos.htb:
Exploiting - Bypassing the authentication with SQLi & Injecting system commands
Injecting a simple SQLi payload on login’s form of the administration results in an authentication bypass:
It’s possible to inject system commands through Net Tool v0.1, with the sleep command I confirmed that the application is vulnerable to command injection.
The main reason is because the server delayed 10 seconds to return the response to me, that’s because I sent <IP_ADDRESS>;sleep 10.
Knowing this, we can send a reverse shell stager and set up a listening socket with netcat:
After sending the stager we got a reverse shell connection as www-data and the first flag!
Exploiting - Bypassing with a session logic bug
In this method there’s a bug in the session that allow an attacker to read every page’s content before the redirection of the unauthorized session.
We actually can read any file protected by the session, for example:
The result:
We can explore this by downloading the source code directly to our machine and filling the form’s action parameter!
Exploiting - Using a custom exploit
For knowledge purposes I made a custom exploit that inject system commands through Net Tool v0.1 application as unauthenticated user, send the reverse shell stager and spawn an interactive shell to us, it’s available on my GitHub :)


Navigation area
This area allows you to navigate the folders and groups tree. Its width is adjustable and it can be hidden clicking on the button
To recover the navigation area, just click on the button
The tree does not display members of groups (sub-groups or individuals).
You can deploy or undeploy a branch of the tree clicking the buttons and beside the folders names.
An overview on an icon associated whith a folder () or a group () lets you know what your rights on this folder or on this group are.
Right click on the name of a folder/group get a contextual menu that provides actions allowed on this folder/group.
- Create a folder : create a folder in the selected folder
- Create a group : create a group in the selected folder
- Copier le groupe : copy the group previously cut in the selected folder.
- Search : search a subject from the selected folder or from the parent folder of the selected group
- Delete : delete the selected folder/group
- Admin : admin the selected folder/group
- Properties : display the properties of the selected folder/group
- Join : join the selected group
- Unjoin : unjoin the selected group
- Couper le groupe : Cut the group from the current folder to copy it elsewhere
- Copy members : copy the members of the selected group to paste them in another group
- Paste members : paste the members copied earlier in the selected group
The action Cut/copy group can be made by grag'n'drop.
In the tree, you can see only the groups () for which you have at least the "see" right.
On the folders (), there is no "see" right ; (only the rights "Create folder" and "Create group" can be positionned) ; then the folders are displayed even you have no rights on them : this is not because you haven't the "create group or "create folder" right on a folder that you can not see a group of this folder.
The button would take you to the welcome page (properties of the connected user).
The button would take you to the Search page. From this page, you can search a subject (individual or group).


{%extends 'all-temp/base.html'%} {% load bootstrap3 %} {% load staticfiles %} {%block content%} {{bock.super}}
Gifted by the world’s most generous community of photographers. 🎁


Windows XP Calculator Recreation
Edit
Copy
Paste
View
Standard
Scientific
Digit Grouping
Help
Help Topics
About Calculator


Dashling is a Dynamic Adaptive Streaming over HTTP (DASH) implementation. It downloads media fragments and pushes them into media buffers
provided by the browsers Media Source Extension support. As latency is more understood and buffer availability changes, quality is adjusted appropriately.
See benefits over dash.js.
Benefits over dash.js:
No scheduler, which causes delays in between requests.
No nasty dupe fragment download bugs.
Retries with better delays. (500, 1500ms in between.)
Audio/video fragments are appended to MSE as a pair only when both are available, avoiding undefined browser behaviors.
No init fragments are requested if they're not needed.
No requests are canceled unnecessarily, only on seeking.
On seeks that require downloading new content, pending requests are canceled.
Can specify a default current position on startup, allowing for "reboots" if necessary, as well as sending "position" hyperlinks.
Quality rules are much more predictable: if you don't have enough buffer, we will be more conservative about quality. As your buffer amount grows, we increase quality. We can also do things like "avoid quality changes for X number of fragments."
Supports avoiding manifest request by default, if you have alternative means to provide necessary data.
Smaller code, avoids things we don't need to support.


What is the EastEnders Children In Need sketch for 2019?
EastEnders is taking a break from the screen tonight in order to clear the schedule for Children in Need.
In recent scenes, viewers were left stunned after a dramatic episode last night which saw Mel Owen die in an car crash,
And if that wasn’t enough, Lisa told Phil (Steve McFadden) that Mel’s untimely death was a result of her finding out that Sharon’s baby isn’t his.
How will it all unfold? You’ll have to wait until Monday to find out.
In cheerier news, some of the cast will take a break from Walford tonight to take part in the BBC’s Children in Need telethon.
But who will be taking part and what will they do? Keep on reading to find out.
What is the EastEnders Children in Need sketch?
Advertisement Advertisement
Members of the EastEnders cast will take on the Strictly Come Dancing ballroom tonight in a one-off special.
The news was announced by Rylan Clark-Neal last month on It Takes Two.
Tess Daly and Claudia Winkleman will present the Strictly special which will see four cast members compete against each other, with the help of their professional partners.
What members of the EastEnders cast are taking part in the Strictly Come Dancing spin-off?
Maisie Smith, Louisa Lytton, Rudolph Walker and Ricky Champ will all switch Albert Square for the ballroom this evening.
Louisa (who plays Ruby Allen) is a Strictly veteran, having taken part in the show back in 2006 where she finished in fourth place.
She’ll be matched with Gorka Marquez, while Maisie (Tiffany Butcher) will be matched with Kevin Cliffton and Ricky (Stuart Highway) will join Luba Mushtuk.
80-year-old Rudolph (Patrick Trueman) is the show’s oldest contestant ever, and will compete together with partner Nancy Xu.
Children in Need airs tonight from 7pm on BBC One.


EpiCore enables faster global outbreak detection and reporting by linking a worldwide member network of health experts through a secure online reporting platform.
EpiCore’s innovative surveillance system detects and confirms outbreaks more quickly so communities can respond faster, curb epidemics and save lives.
EpiCore is a partnership between the Ending Pandemics, HealthMap, ProMED-mail of the International Society for Infectious Diseases, and TEPHINET.
Ending Pandemics works with partners across the globe to unlock the potential to find, verify, and contain outbreaks faster no matter where they might emerge on the planet.
HealthMap, a freely-available website, brings together disparate online data sources to achieve a unified and comprehensive view of the current global state of infectious diseases and their effect on human and animal health.
Founded in 1994, ProMED-mail rapidly disseminates to its large global audience early warning reports on outbreaks of emerging and re-emerging diseases. Reports are selected and interpreted by a panel of specialists who provide expert commentary.
Founded in 1997, TEPHINET is a member-led global network of field epidemiology training programs (FETPs) consisting of 65 field based FETPs in 90 countries and 5 regional training networks with over 17,500 trainees and graduates.


--- layout: post title: Broadcast vs. mobile date: 2006-04-20 00:00:00 categories: business interfaces-&-interaction mobile personal ---
Mr Falletti nails it: "mobile TV currently lives between SMS voting and streaming over 3G. I'd expect it to develop as a mix of the two, with video content enhanced through user participation"
I'll be talking at World Telemedia next week on exactly this topic...


I am a Software Engineer that is currently based in Cape Town, South Africa. My core experience lies wthin mobile development, and basic web development experience. I have built and deployed various games/tools on targetted platforms such as iOS, Android and WebGL, as well as pure HTML5.
I studied BCom IT Management and BCom Marketing before swiftly changing midway for a BSc Computer Science. The skills gained during the BCom have always benefitted me, despite my passion lying in pure Computer Science and the Science spectrum.
I have a passion for exploring new technologies, and they regularly align with that of Linux systems, and Android mobile. In my free time I enjoy exploring areas that I do not regularly encounter in my day-to-day, as I like to have at least explored and figured out everything at least once, as that is definitely a huge benefit of being surrounded by constantly evolving and new technologies.


To help with building the examples in this tutorial we use an application that runs on your workstation to replicate a web server. The instructions for downloading and running this application are shown in the first example Hello World!!!


| Movie Theatre Showtimes | |||||
|---|---|---|---|---|---|
| Saturday September 14, 2017 | |||||
| Poster | Movie | Rating | Length | Showtimes | Amenities |
| Unforgiven | R | 131 Minutes |
2:00 pm 7:00 pm |
No Comp Pass | |
| Hitman's Bodyguard | R | 118 Minutes |
1:30pm 2:00pm 4:15pm 5:05pm 7:05pm 7:35pm 9:40pm 10:25pm |
NP, CC, DV | |
| Logan Lucky | PG-13 | 119 Minutes |
7:15pm 10:00pm |
N/A | |
| Wind River | R | 110 Minutes |
11:20am 2:00pm 4:30pm 7:00pm 9:30pm |
N/A | |
| Annabelle: Creation | R | 110 Minutes |
11:40am 2:20pm 4:50pm 7:30pm 10:10pm |
N/A |


Last time program ran: Tue Apr 21 18:36:39 EDT 2020
Amount of hashes downloaded: 0
Last file checked against hashes: testvirus.txt
Number of files in jail: 0


public static class BalancedShardsAllocator.WeightFunction
extends java.lang.Object
index balance
- balance property over shards per indexshard balance
- balance property over shards per clusterEach of these properties are expressed as factor such that the properties factor defines the relative importance of the property for the weight function. For example if the weight function should calculate the weights only based on a global (shard) balance the index balance can be set to 0.0 and will in turn have no effect on the distribution.
The weight per index is calculated based on the following formula:weightindex(node, index) = indexBalance * (node.numShards(index) - avgShardsPerNode(index))
weightnode(node, index) = shardBalance * (node.numShards() - avgShardsPerNode)
weight(node, index) = weightindex(node, index) + weightnode(node, index)
| 构造器和说明 |
|---|
WeightFunction(float indexBalance,
float shardBalance) |
| 限定符和类型 | 方法和说明 |
|---|---|
float |
weight(BalancedShardsAllocator.Balancer balancer,
org.elasticsearch.cluster.routing.allocation.allocator.BalancedShardsAllocator.ModelNode node,
java.lang.String index) |
float |
weightShardAdded(BalancedShardsAllocator.Balancer balancer,
org.elasticsearch.cluster.routing.allocation.allocator.BalancedShardsAllocator.ModelNode node,
java.lang.String index) |
float |
weightShardRemoved(BalancedShardsAllocator.Balancer balancer,
org.elasticsearch.cluster.routing.allocation.allocator.BalancedShardsAllocator.ModelNode node,
java.lang.String index) |
public float weight(BalancedShardsAllocator.Balancer balancer, org.elasticsearch.cluster.routing.allocation.allocator.BalancedShardsAllocator.ModelNode node, java.lang.String index)
public float weightShardAdded(BalancedShardsAllocator.Balancer balancer, org.elasticsearch.cluster.routing.allocation.allocator.BalancedShardsAllocator.ModelNode node, java.lang.String index)
public float weightShardRemoved(BalancedShardsAllocator.Balancer balancer, org.elasticsearch.cluster.routing.allocation.allocator.BalancedShardsAllocator.ModelNode node, java.lang.String index)


{{tvShowDetail.name}}
{{tvShowDetail.origin_country}}Overview
{{tvShowDetail.overview}}
Release date:{{tvShowDetail.first_air_date | date:'mediumDate'}}
Seasons:
{{tvShowDetail.seasons.length}}
Episodes:{{tvShowDetail.number_of_episodes}}
Genres
{{genre.name}}
{{tvShowDetail.vote_count}} Votes


I have been using WordPress and Drupal for a while. It worked well, but recently I have decided to switch to Wintersmith, static site generator.
WordPress and Drupal
Wordpress and Drupal are quite popular CMS (content management system). These platforms are easy to install and start to use. I like that they offer many themes and I always could find an appropriate one for a website. Trivial integration with MySQL, comments are available from the box. If you need to extend your webiste it is possible with lots of available plugins.
Altough there are many advandages they also come with negative aspects. What I did not like about them?
Complexity
I have already mentioned that they are easy to use. What I mean by complexity is that they are big. It is very hard to know everything about these CMS. And the bigger the system the more possible vulnerabilities it has. They constantly get targeted by automatic bots. And who knows how many 0-day exploits for Wordpress are around?
Resource usage
This blog is hosted with multiple other sites on a single machine. Altough there are not so many visitors here I have started to notice RAM shortages. It was mainly due to MySQL. Wordpress and Drupal use database to store site content and comments. Recently MySQL service started to crash due to memory shortages. One could say that I should have just upgraded the machine. But why does the modern computer cannot serve a few small websites? I remeber that 16 MiB of memory was enough to play so many different computer games.
I have tried to solve memory issue using caching plugins but it did not work very well for me. I even had to create swap partition on SSD to aviod MySQL crashes.
Wintersmith, static site generator
I decided to move to a static site generator. It solves the issues I had with Wordpress and Drupal. After short research on static site generators I have chosen the Wintersmith.
Wintersmith takes text files (either plain html or Markdown files) and generates static html pages. It is very transparent. On the other hand it is also flexible as it supports plugins and templates written in Jade.
There is no more database (you can still add one if you need), no more constant CMS security updates. I could store the source for a website on git. The Wintersmith supports site preview which is very convinient when adding site content.
Obviously it comes with downsides:
- Not as simple as Wordpress or Drupal
- You need to regenerate website manually
- No comments support from the box. If you need comments you could extend the website with Disqus
- Need to learn a few new things (like Jade templating)
These downsides were not critical for me so I have decided to swith to Wintersmith.
Installation
Installation is simple. Assuming that you have npm
packet manager:
npm install -g wintersmith
-g
option is to install the package globally rather than locally.
To initialize the new website generated by the Wintersmith:
wintersmith new <path_to_site>
It creates a framework for your future side. There are some examples and how-to as a starting point. Wintersmith allows to preview your site:
wintersmith preview -p 8080
It starts a lightweight web server on port 8080. Open http://localhost:8080
in your browser.
Once you modify anything the webserver picks changes immediately and you can see them in the browser.
When the website is ready you can generate static content using command wintersmith build -o build
.
Where -o
options specifies the path for generated pages.
Workflow, git and automatic website regeneration
I have installed Wintersmith locally and on the hosting computer. In addition I have started the git repository
for a website. All development is done locally using wintersmith preview
feature.
Once I have modified the content and tested it locally I submit changes to the remote repository:
git commit
git push
On the hosting machine I have created a separate user to update website content.
adduser --disabled-login website
Get website by clonning git repository:
git clone https://git_remote_path <site_local_path>
Generate static content:
cd site_local_path && wintersmith build
And tell your web server to server content from <site_local_path>/build
path.
To automatically pull changes from git and update the website I wrote a script:
#!/bin/bash
# path to wintersmith binary, use `which wintersmith` command to locate it
WINTERSMITH="/usr/local/bin/wintersmith"
# function to update the website content
function update_site {
if [ "$#" -ne 2 ]; then
echo "Update site function requires 2 arguments"
return 1
fi
SITE_NAME=$1
SITE_DIR=$2
echo "Trying to update site $SITE_NAME"
# Check if pull is needed from the remote repo.
REV_COUNT=`cd $SITE_DIR && git fetch && git rev-list HEAD...origin/master --count`
echo "Found $REV_COUNT new revisions"
if [ $REV_COUNT -eq 0 ]; then
echo "Nothing to do..."
return 0
fi
# Pull remote changes
echo "Rebasing changes..."
cd $SITE_DIR && git rebase origin/master
# Backup existing build (just in case)
if [ -d $SITE_DIR/build ]; then
echo "Making back up of existinb build"
mkdir -p /home/website/site_backups
cd $SITE_DIR && tar czf /home/website/site_backups/${SITE_NAME}-`date +%Y-%m-%d.%H.%M.%S`.tar.gz build
fi
echo "Building new site..."
cd $SITE_DIR && $WINTERSMITH build
return 0
}
update_site "ifnull.org" "path_to_site"
update_site "site2.com" "path_to_site2"
update_site "site3.com" "path_to_site3"
update_site "site4.com" "path_to_site4"
And the last step is to add a regular job to run this script:
crontab -u website -e
It opens the file with tasks of user website
to run by cron
. Add the following line:
0 * * * * <path_to_script>
to execute script every hour and save the file.
The next step would be to add possiblity to submit articles by email.


Registration on UBI Bank
Account no:
Account Name
Account Type
Account Balance
Account Acmobileno
Account email
{{data.result}}


--- permalink: /404.html title: "404: Page not found" layout: default sitemap: false sitemap: exclude: 'yes' --- 404 Page not found
Page not found


{% extends "layout_task-list.html" %} {% block page_title %} Money Claims Prototype {% endblock %} {% block home_link %} ../task-list {% endblock %} {% block proposition_header %} {% set my_account="1" %} {% include "includes/propositional_navigation.html" %} {% endblock %} {% block content %} {% include "includes/phase_banner_beta.html" %} Back {% if data.return_page and data.return_page.includes('check-and-send') or data.return_page and data.return_page.includes('check-your-answers')%} {% else %} {% endif %} {{formData | safe}} Notice for Intended Prosecution Details of offence Issued by: London Metropolitan Police Offence: Exceeded 30 MPH speed limit (Unmanned camera) Date: 10/4/2017 Time: 19:48 Location: Blackwall Tunnel, Tower Hamlets Warning You have only 5 days left to respond to avoid a court summons. Choose ONE of the options: Speed Awareness Course attend an educational course which will cost you £75.00. Learn more Pay a £100 fine and receive 3 penalty points on your licence. Learn more Attend a court hearing contest the alleged offence in court. Learn more {% if data.return_page and data.return_page.includes('check-and-send') or data.return_page and data.return_page.includes('check-your-answers')%} Cancel {% else %} Save and continue {% endif %} {% endblock %}
Choose ONE of the options:


Toggle navigation
Navigation
Home
Index Sequence Constraints
Strand Constraints
Length Constraints
Topological Sequence Constraints
Topological Sequence Constraints
contains
within
equals
contains_suffix
contains_prefix
joins_directly
joins_with_gap
intersects
{% block content %} {% endblock %}


Payouts
Each time Stripe sends you your revenue a payout is created.
No payouts have occurred yet.
ID
Amount
Stripe account
Status
Description
Date


Building Plexus Applications and Runtimes
To be able to build Plexus applications and runtimes you'll need:
- The Plexus mojo
- The Plexus application archetype
- The Plexus runtime archetype
TODO: Make a link to the maven site that explains what a archetype is.
Introduction
Some stub directories will be created:
/my-component
- - Here we'll make a Plexus component
/my-application
- - Here we'll make an application
/my-runtime
- - Here we'll make a runtime that will host your application. This runtime will contain startup scripts for Unix, Windows and OS X and will be completly standalone.
Creating a Simple Plexus Component
Making the Component Stub
$ mvn archetype:create \ -DarchetypeGroupId=org.codehaus.plexus \ -DarchetypeArtifactId=plexus-archetype-component-simple \ -DarchetypeVersion=1.0-alpha-1-SNAPSHOT \ -DgroupId=mygroup \ -DartifactId=my-component \ -Dversion=1.0-SNAPSHOT \ -Dpackage=my.component
Building the Plexus Component
To build the component simply type in /my-component
:
$ mvn install
You should now have a packaged Plexus component in target/my-component-1.0-SNAPSHOT.jar
Creating a Simple Plexus Application
Making the Application Stub
$ mvn archetype:create \ -DarchetypeGroupId=org.codehaus.plexus \ -DarchetypeArtifactId=plexus-archetype-application \ -DarchetypeVersion=1.0-alpha-1-SNAPSHOT \ -DgroupId=mygroup \ -DartifactId=my-application \ -Dversion=1.0-SNAPSHOT \ -Dpackage=my.app
Adding the Plexus Component dependency
You need to add the following dependency in /my-application
pom:
<dependency> <groupId>mygroup</groupId> <artifactId>my-component</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
and in src/conf/application.xml
, add this so the Plexus component will be loaded at startup:
<load-on-start> <component> <role>mygroup.HelloWorld</role> </component> </load-on-start>
Building the Plexus Application
To build the application simply type in /my-application
:
$ mvn plexus-appserver:assemble-app
and you should have a application in target/plexus-application
. Inside the exploded application there will be two directories: conf
and lib
. The conf
directory contains the configuration file for your application and lib
contains all the dependencies the application has.
If you want to do some extra processing on these files or possibly add your own files you can have a plugin with a post goal on plexus:app
and it would be invoked before the application was packaged.
If you now run the plexus-appserver:package-app
goal:
$ mvn plexus-appserver:package-app
the resulting JAR file will be ready for deployment in a Plexus runtime. Our example application JAR will be target/my-application-1.0-SNAPSHOT.jar
.
you can run the above commands in one:
$ mvn install
Creating the Runtime
Making the Runtime Stub
Creating the stub runtime is as easy as creating the application:
$ mvn archetype:create \ -DarchetypeGroupId=org.codehaus.plexus \ -DarchetypeArtifactId=plexus-archetype-runtime \ -DarchetypeVersion=1.0-alpha-1-SNAPSHOT \ -DgroupId=mygroup \ -DartifactId=my-runtime \ -Dversion=1.0-SNAPSHOT \ -Dpackage=my.runtime
Building the Runtime
$ mvn package
You should now have a usable runtime in target/plexus-runtime
and a packaged runtime in target/my-runtime-1.0-SNAPSHOT.jar
. Now lets copy over the application:
$ cp ../my-application/target/my-application-1.0-SNAPSHOT.jar \ target/plexus-app-runtime/apps
You can also add a dependency on my-application in the my-runtime pom, so it won't be necessary to copy the application manually in the runtime.
<dependency> <groupId>mygroup</groupId> <artifactId>my-application</artifactId> <version>1.0-SNAPSHOT</version> <type>plexus-application</type> </dependency>
Now you have a working Plexus runtime with your application installed. To start it run:
$ sh target/plexus-app-runtime/bin/plexus.sh
Hopefully you should now have a runtime running with. The message "Starting Hello Component." sended by my-component
at startup must appears in logs.
Getting fancy: Adding a Shared Servlet Container
Plexus runtimes can have a set of services thats shared between the applications. One very useful service is a servlet container. This enables several isolated applications to share the same Jetty instance without the need for complicated Apache HTTPD proxy setups. The servlet container service will all the web in a configured directory. The application contains a commented out configuration section for the servlet container which you must uncomment so the service would be enabled.
NOTE: This example assumes that you have the runtime that was created in the last section.
First add the service dependency into the runtime:
<dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-appserver-service-jetty</artifactId> <version>2.0-alpha-1</version> <type>plexus-service</type> </dependency>
Now we need to add a web application to the application. As a simple web application we're using the Jetty JavaDocs. Add this in my-application
pom:
<dependency> <groupId>jetty</groupId> <artifactId>javadoc</artifactId> <version>4.2.23RC0</version> <type>war</type> </dependency>
Now we need to configure the servlet container service so it knows where to find the web applications. In src/conf/application.xml
uncomment the servlet container section. Now bundle the application again:
$ mvn install
We suppose there you added my-application
dependency in my-runtime
pom. Execute this commands from /my-runtime
$ mvn package
Now when the application server is started again it should
- Deploy the servlet container.
- Boot Jetty.
- Deploy the application.
- The servlet container will detect that a new application was deployed and deploy the JavaDoc WAR.
So lets start it:
$ sh target/plexus-app-runtime/bin/plexus.sh
And open your browser to http://localhost:8080/