Vault House / Johnston Marklee
- Curated by Clara Ott
- 1 day
Houses · Oxnard, United States
- version="1.0" encoding="UTF-8"? Architects: Johnston Marklee
- AreaArea of this architecture projectArea: 334.4 ft2
- version="1.0" encoding="UTF-8"?YearCompletion year of this architecture project Year: 2013
- version="1.0" encoding="UTF-8"?PhotographsPhotographs: Eric Staudenmaier
- version="1.0" encoding="UTF-8"?ManufacturersBrands with products used in this architecture project Manufacturers: BASWA Acoustic, Fleetwood
- Architect in Charge Sharon Johnston and Mark Lee
- Design Team Katrin Terstegen, Andri Luescher, Nicholas Hofstede, Anna Neimark, Anton Schneider, Yoshi Nagamine, Ryan Roettker
- Contractor RJPConstruction
- Structural Engineer William Koh & Associates
- Lighting Designer Luminesce
- Interior Design Associates III
- Client Steven and Jerri Nagelberg
- Site Area 10,000 sf
More Specs Less Specs
Text description provided by the architects. Situated in a densely developed beach site in Southern California, the Vault House challenges the typology commonly found on narrow oceanfront lots. Instead of directing its focus on the single prime ocean view, an array of transparent interior spaces layered inside the main volume, offer a multiplicity of oblique views through the house while capturing natural light from a variety of angles. With the assembly of stacked and unidirectional vaulted rooms contained within a simple rectilinear volume, the parallel orientation of the rooms acts as a filter that extends the oceanfront view from the beachfront façade to the West through to the street at the Eastern boundary of the site.
The house was designed under the restrictions imposed by the California Coastal Commission, which require the main living area to be lifted two meters off the sand, allowing for possible tsunami waves to pass beneath the house. The garage to the East along the street, in contrast, sits directly on the sand and is designed with walls that collapse under the pressure of tsunami waves. This results in an asymmetrical section, where three floor levels – first floor, split level, second floor – are grouped around a courtyard that serves both as the main entrance to the house and as a central outdoor room.
The courtyard forms the core of the house: it negotiates between the more private rooms on the Eastern side of the house and the open and connected areas to the West. In the courtyard, natural light enters in rotating cycles throughout the day and residents can be observed moving throughout the house from this central space. A single-run stair located along the Northern side of the house connects all three levels and leads to a roof deck that offers panoramic views of the beach and the ocean.
With varied contours and volumes, each vaulted room defines an area or a function in the house. The combined effect is a varied landscape of interior spaces, unified with a singular formal language. Similar to the paradigm of a shotgun house, the singular direction of the vaults maximizes the visual connection of all spaces within the deep building footprint and incorporates the exquisite exterior landscape of beach, ocean and horizon into the depth of the building.
The extreme beach climate with pervasive winds and salty air demanded a simplified, weather resistant material palette. Limestone is used for all floors and as wainscots, both inside and outside, while an elastomeric, cementitious membrane called “Grailcoat" wraps the exterior façade. The membrane eliminates the need for metal flashing and control joints, rendering the façade scaleless and forming an abstract backdrop for the play of light and shadow.


|
OpenM++ runtime library (libopenm)
|
OpenM++ modeling library: model run state public interface. More...
Go to the source code of this file.
Classes | |
| struct | openm::RunStatus |
| model run status codes More... | |
| struct | openm::RunState |
| model run state data: status, progress, update times More... | |
| struct | openm::IModelRunState |
| model run state public interface: thread safe More... | |
| struct | openm::RunStateItem |
| run state data for sub-value identified by run id and sub-value id More... | |
Namespaces | |
| openm | |
| openM++ namespace | |
Enumerations | |
| enum class | openm::ExitStatus : int { openm::OK = 0 , openm::FAIL = 1 , openm::HELPER_ERROR = 4 , openm::MSG_ERROR = 8 , openm::DB_ERROR = 12 , openm::MODEL_ERROR = 16 , openm::SIMULATION_ERROR = 32 } |
| model exit status More... | |
| enum class | openm::ModelStatus : int { openm::undefined = 0 , openm::init = 1 , openm::progress , openm::waitProgress , openm::shutdown , openm::done = 64 , openm::exit , openm::error = 128 } |
| modeling job status More... | |
OpenM++ modeling library: model run state public interface.


@* * Copyright 2021 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import uk.gov.hmrc.eeittadminfrontend.config.AppConfig @(id: String, bodyId: String, caption: String, columns: List[String])
| @col | }
|---|


Mortgage Calculator - Angular Sample
This sample builds off of the Basic sample, however, all of the data uses Angular data binding and is automatically mapped to the object for us. The results do not need to be mapped either as Angular operates on the same underlying object as the rule engine and will automatically update the page after the engine updates the values.
Loan Information
Loan amount
APR
Term in years
Payment Summary
Calculate mortgage
Montly payment
Total loan cost
Payment Schedule
Calculate schedule
Payment number
Due
Amount
Remaining balance
{{ payment.PaymentNumber }}
{{ payment.PaymentDate | date:'MM/dd/yyyy' }}
{{ payment.Amount | currency }}
{{ payment.RemainingBalance | currency }}


Wednesday, July 23, 2003
When I visit Redmond, I share an office with Andy Oakley, the PM for GotDotNet Workspaces. Workspaces was recently released from beta to v1.0 and when that happened, Andy sent around feedback from users.
Of course, folks love it in general (even some hard-to-please MS internals), but I was surprised to see to some folks were using private Workspaces for their team's main source code base. I shouldn't have been surprised; this makes a lot of sense. Private workspaces provide a protected space for file sharing, discussion, bug tracking and source code control. The last time I set up a commercial software development team, I needed weeks to get all of this picked out, installed and working and I needed an IT guy to keep it running and backed up. I remember hearing about a 3rd party that was going to bundle all of this together for a fee, but never got around to it. With Workspaces, MS already provides the whole team development environment, including VS.NET integration and a web interface, and it's free! Plus, with a private workspace, only folks on your team get access.
IMO, the only big piece that was missing from Workspaces was a way to pull down all of the source onto a build machine for regular automatic builds. For commercial work, this is key. So, Andy, tired of my whining, built a command line tool for pulling down all source from a GDN Workspace (and put it up in it's own GDN Workspace). Personally, I'd be slightly happier if it took arguments from the command line instead of a .config file, but that's easily added from the Genghis CommandLineParser class for those that are interested. Enjoy!


Instructions: Enter integers in the fields labeled Number One and Number Two. Press the Add Numbers button to add the numbers.


Three simple steps to use ...
mozile-install.zip
somewhere on your web sitehead
element of any file that you want to edit:
script src=".../mozileLoader.js" type="text/javascript"
mozileSave
in mozileModify.js
to persist
Mozile changes appropriately for your application.Note: this is safe in IE and Safari because loader only activates mozile in Geiko-based browsers!


See also
See also
To send a single message, create a Message object, and pass it to send().
import pystmark
API_KEY = 'my_api_key'
SENDER =<EMAIL_ADDRESS># Send a single message
message = pystmark.Message(sender=SENDER<EMAIL_ADDRESS>subject='Hi', text='A message',
tag='greeting')
pystmark.send(message, api_key=API_KEY)
You can also pass in a dictionary. It will construct the Message for you.
import pystmark
pystmark.send(dict(sender=SENDER<EMAIL_ADDRESS>subject='Hi',
text='A message', tag='greeting'), api_key=API_KEY)
This sends multiple messages in a single http request to Postmark’s batch send API. There is a hard limit of 500 messages.
If you want to send the same message but to multiple recipients, you can use send(), and construct the message with multiple to, cc or bcc addresses. See Multiple Recipients.
from pystmark import Message, send_batch
# Send multiple messages (in one batched http request)
recipients = ['you{0}@example.com'.format(i) for i in xrange(20)]
messages = [Message(sender=SENDER, to=to, subject='Hi', text='A message',
tag='greeting') for to in recipients]
response = send_batch(messages, api_key=API_KEY)
The Postmark API allows you to have multiple to recipients. The total number of recipients, including to, cc, and bcc is limited to 20.
from pystmark import Message, send
message = Message(sender=SENDER, subject='Hi', text='A message',
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>send(message, api_key=API_KEY)
You can set defaults for your message sending using the Advanced API. For every method in the Simple API, there is a corresponding configurable sender object in the Advanced API.
from pystmark import Message, Sender
default_message = Message(sender=SENDER,
subject='Hi',
text='Welcome to the site',
html='
Welcome to the site
',
tag='greeting')
sender = Sender(message=default_message, api_key=API_KEY)
sender.send(dict(to='you@example.com'))
Attachments are allowed, up to 10MB in size. The attachment sizes are not checked to be under the limit. If you think you might go over the limit, make sure to check yourself. Only certain file extensions are allowed.
import pystmark
filename = '/tmp/example.txt'
with open(filename, 'w') as f:
f.write('demo\n')
message =<EMAIL_ADDRESS><EMAIL_ADDRESS>text='hi')
# Attach using filename
message.attach_file(filename)
# Attach using binary
with open(filename) as f:
message.attach_binary(f.read(), filename)
pystmark.send(message, api_key='the key')
Custom headers can be added for your email.
import pystmark
message =<EMAIL_ADDRESS><EMAIL_ADDRESS>text='hi')
message.add_header('X-my-custom-header', 'foo')
pystmark.send(message, api_key='the key')
Some HTTP status codes will raise a custom Exception. See Response.raise_for_status().
from pystmark import send, UnauthorizedError
r =<EMAIL_ADDRESS><EMAIL_ADDRESS>text='hi'),
api_key='bad key')
try:
r.raise_for_status()
except UnauthorizedError:
print 'Use your real API key'
If you need to pass some arguments to requests.request(), you can do so. However, you cannot modify the data keyword. It will be ignored if you give it.
from pystmark import send, Message
message =<EMAIL_ADDRESS><EMAIL_ADDRESS>text='hi')
send(message, api_key='my key', **dict(headers={'X-Something': 'foo'}))
See also
See also
Bounced emails are retrieved with get_bounces(). The request must be paginated with the count and offset. They will default to 25 and 0, respectively. If you provide a message_id (saved from the response of a previously sent message), you do not need to provide count or offset. You can filter bounces by a string match or bounce type.
from pystmark import send, get_bounces
API_KEY = 'my key'
# Get all bounces. If we do not paginate, 25 results will be returned at
# offset 0.
get_bounces(count=100, offset=0, api_key=API_KEY)
# Get bounces of a specific type
get_bounces(bounce_type='HardBounce', api_key=API_KEY)
# Get bounces filtered by email string
<EMAIL_ADDRESS>api_key=API_KEY)
# Get bounces for a message
r =<EMAIL_ADDRESS><EMAIL_ADDRESS>text='hi'),
api_key=API_KEY)
get_bounces(message_id=r.message.id, api_key=API_KEY)
Data for a single bounce can be retrieved given a bounce_id.
from pystmark import get_bounce, get_bounces
r = get_bounces(api_key='my key')
for bounce in r.bounces:
get_bounce(bounce.id, api_key='my key')
The raw email dump can be retrieved with a bounce_id or with a BouncedMessage.
from pystmark import get_bounces, get_bounce_dump
r = get_bounces(api_key='my key')
for bounce in r.bounces:
# Get dump via BouncedMessage.
dump = bounce.dump(api_key='my key')
# Get dump with the simple API
dump = get_bounce_dump(bounce.id, api_key='my key')
Bounces can be re-sent with activation. Keep in mind that some bounces such as hard bounces should be assumed dead.
from pystmark import get_bounces, activate_bounce
r = get_bounces(api_key='my key')
for bounce in r.bounces:
activate_bounce(bounce.id)
You can get a list of tags that have bounced messages. Tags are set on the message by you, when they are sent.
from pystmark import get_bounces, get_bounce_tags
r = get_bounces(api_key='my key')
for bounce in r.bounces:
get_bounce_tags(bounce.id)
Delivery stats summarize your bounces.
from pystmark import get_delivery_stats
r = get_delivery_stats(api_key='my key')
print 'Inactive Messages:', r.inactive
print 'Total bounces:', r.total
print 'Bounces:'
for bounce in r.bounces.values():
print '\tType:', bounce.type
print '\t\tName:', bounce.name
print '\t\tCount:', bounce.count


---
title: Pavol Bielik
position: Co-Founder and CTO at LatticeFlow
image: pavol.png
email<EMAIL_ADDRESS>website: https://pavol-bielik.github.io/
cv:
---
About me
Welcome, I'm Pavol, currently a co-founder and CTO at LatticeFlow. Before that, I obtained my PhD in the Secure, Reliable, and Intelligent Systems Lab, supervised by Prof. Martin Vechev. My main research interests include Programming Languages, Program Synthesis and Machine Learning.
Publications
{% include get-publications.html filter="person" key="Pavol" %}
Awards
- Facebook PhD Fellow, 2017
- Received Romberg Grant at 4th Heidelberg Laureate Forum (1 out of 40), 2016
- Selected to participate at 4th Heidelberg Laureate Forum (1 out of 200), 2016
- Finalist - Facebook Fellowship (1 out of 31), 2016
- Selected to participate at Google’s 2nd PhD Student Summit on Compiler & Programming Technology, 2014
- Represented ETH Zurich at University Mobile Challenge World Finals, 2013
- 1st place - Students project of the year 2011, Czech and Slovak ACM Chapter, 2011
- Excellence scholarship, Slovak University of Technology, 2009, 2010, 2011
Education
ETH Zurich, since 2015
PhD in Computer Science
ETH Zurich, 2012–2014
MSc in Computer Science
Slovak University of Technology, Faculty of Informatics and Information Technology, 2008–2011
BSc in Informatics


Login
Inventory
Add Device
Delete Devices
Retire Devices
Contact Us
Delete Device
Delete devices from the inventory.


مثال
يوجد وضعان للكرة
ساعد القندس لالتقاط صور لجميع الأوضاع الممكنة للكرة الحمراء.للكرتان الحمراوتان.
يمكنك تحريك الكرة الحمراءالكرتان الحمراوتان على اللوحة السوداء بالاسفل ثم اضغط على زر التقط صورة.
ستجد أن جميع الصور الملتقطة موجودة على اللوحة الرمادية بالأسفل، ارسم خط بين أي صورتين إذا كان من الممكن إنتقال الكرة الحمراء بينهم.
انقر على الصور الملتقطة لربطها بالخطوط.
|
|
We take a picture for each of 45 possible positions of the ball. To find your way easily, you can arrange the photos in the gray frame depending on the position of the ball in each photo, as shown below. We can then add lines between the photos describing positions where the ball has moved only one square.
We take a picture for each of the 6 possible configurations of the two marbles. To find your way easily, we can organize the photos. For example, we can make a first column with the photos having a ball in the box at the top left, and a second column with the photos having no ball in this box. You can also sort the photos inside the column, according to the filling of the other boxes. We can then add the features corresponding to the possible displacements of the balls.
To be sure you have not forgotten any features, you can check the lines that start from each photo. For a given photo, we count the number of white squares around the ballthe number of white boxes around the first ball, to which is added the number of white boxes around the second ball. This numberTotal must correspond to the number of lines that are connected to this photo, since this corresponds to the number of possible displacements.
This topic illustrates how to represent situations (photos of a state) and transitions (displacement of a marble) in the form of a graph, that is to say, a set of objects, some of which are connected to each other by lines. It is very interesting to reduce a problem to a graphical view, because there are many very efficient algorithms for dealing with problems expressed by graphs.
Some problems naturally appear as a graph, such as finding a way to travel from one city to another: the graph is then made up of the cities and roads that connect them. In other problems, on the contrary, the graph is not really visible at first glance. We then speak of implicit graph.
The expertise of a programmer is to be able to detect that a problem that does not look like a graph problem can still be expressed as a graph. Such a programmer can then, instead of developing an ad-hoc and inefficient algorithm, rely on a standard and highly efficient graphing algorithm.


Get fresh ingredients and simple recipes delivered straight to your door
Explore our website to choose your meals for the week
Get fresh ingredients delivered straight to your door
Use our simple, easy-to-follow recipes to prepare a meal in 30 minutes or less
Enjoy a delicious, easy-to-prepare meal while gaining skills in the kitchen


Welcome to our new app-based Product Manager which will keep you seamlessly connected to your product data. Here are some of the advantages:
With our new app based solution, there are no frames to load and reload, it makes better use of your screen and browser capabilities. The app framework stays on the screen and only the information you want to view or manipulate changes. This makes for a smoother workflow and helps to increase productivity.
Entering your product data is only the beginning. This interface will allow extensibility by developers so it is possible to create custom data input and management interfaces. From vendor management to drop shipping to complex supply chain strategies, our new Product Manager.
The app-based structure is the future of technology. By providing an e-commerce solution that is better than the best traditional solution and providing it for less cost, we are convinced that this change will let our customers do more in less time.
|
Online Product ManagerWelcome to our new app-based Product Manager which will keep you seamlessly connected to your product data. Here are some of the advantages: Page RenderingWith our new app based solution, there are no frames to load and reload, it makes better use of your screen and browser capabilities. The app framework stays on the screen and only the information you want to view or manipulate changes. This makes for a smoother workflow and helps to increase productivity. ExtensibleEntering your product data is only the beginning. This interface will allow extensibility by developers so it is possible to create custom data input and management interfaces. From vendor management to drop shipping to complex supply chain strategies, our new Product Manager. The World is ChangingThe app-based structure is the future of technology. By providing an e-commerce solution that is better than the best traditional solution and providing it for less cost, we are convinced that this change will let our customers do more in less time. |
|
|
||||||
|
|
-
|
|
|
|||||||
Selecting a value to listing enhancement will affect listing fees
* eBay Motors only
** Support for this feature varies by site and category.
Online Product ManagerWelcome to our new app-based Product Manager which will keep you seamlessly connected to your product data. Here are some of the advantages:
Page RenderingWith our new app based solution, there are no frames to load and reload, it makes better use of your screen and browser capabilities. The app framework stays on the screen and only the information you want to view or manipulate changes. This makes for a smoother workflow and helps to increase productivity.
ExtensibleEntering your product data is only the beginning. This interface will allow extensibility by developers so it is possible to create custom data input and management interfaces. From vendor management to drop shipping to complex supply chain strategies, our new Product Manager.
The World is ChangingThe app-based structure is the future of technology. By providing an e-commerce solution that is better than the best traditional solution and providing it for less cost, we are convinced that this change will let our customers do more in less time. |
|
|
|
Global
Inventory-able
|


This example demonstrates how to take a snapshot of the map. It specifies area to be captured with top/left and bottom/right view port coordinates


Research into spatial skills and computing science has flourished in recent years, with several recent studies exploring the relationship. Spatial skills have been associated with success in computing courses and specific domains of computing (like source code navigation and expression evaluation) and training spatial skills has been demonstrated to improve CS outcomes for early-stage students. Low spatial ability also appears to be related to demographic groups with historically lower participation and outcomes in CS programmes: those from lower socio-economic status backgrounds and women. Hence spatial skills research can potentially be of high value for our discipline.
To date these studies have involved only a handful of individual institutions. The goal of this project is to understand more about the role of spatial skills across a one-year period for entry-level CS students across multiple institutions. In particular, we would like to discover whether correlations between spatial ability and success in CS hold across institutions, whether spatial ability changes over a period of CS instruction and how spatial ability exhibits in different demographic groups.
Participation in this project requires that you can:
The input from students required for this study is limited: testing their spatial skills and collecting grades and demographics. Thus, the work for each participant is low, but the potential contribution of the collective work is high.
There will be a drop-in information session on Mon 9th August at 15:00 BST, with the first project meeting will take place a week later. If you can't attend, contact the project lead (Jack Parkinson) for a discussion. Subsequent meetings will be at UKICER, then in December and May 2022.
| Milestone | Date and Time |
|---|---|
| Call for Participation | Friday, July 23, 2021. |
| Drop-in information sessions |
Monday, August 9, 2021, 1700 BST.
Tuesday, August 10, 2021, 1700 BST.
Wednesday, August 11, 2021, 1700 BST.
Thursday, August 12, 2021, 1700 BST.
Friday, August 13, 2021, 1700 BST.
|
| Deadline for expression of interest |
Friday, August 20, 2021, anywhere on Earth (UTC-12).
|
| Discussion and decision on RIPPA participants |
Monday, August 23, 2021, anywhere on Earth (UTC-12).
|
| Notification of participation in RIPPA |
Monday, August 23, 2021, anywhere on Earth (UTC-12).
|
| Start-up workshop (Conference) |
Thursday, September 2, 2021. |
| Interim workshop |
December, 2021 |
| Capstone workshop |
May, 2022 |
Call for Participation in the Spatial Skills in Computer Science RIPPA (PDF)
Use the form before to submit your expression of interest to join the RIPPA.


Welcome to my binance trade compressor. So I saw a couple of posts about people worried that their binance balances weren't accurate, and that there was some bug based on cancelled limit orders. As a hobby day trader, this got me a bit worried, and so I spent an hour or two and wrote a simple webpage that lets you upload your trade history from Binance, and will compress it into the net change in coins. Figured I'd share in case anyone else is feeling paranoid :)
On binance, click "Export Complete Order History"
Click past 3 months, then Export
Upload the file below
Check that the number beside each coin matches Deposits - withdrawals + Binance balance
Your expected net change in coins:
Caveats: This does not include fees in transactions, so a few dollars here and there discrepancy is expected especially if you don't use the BNB fee discount. This also doesn't account for NEO GAS dividends. If you find any bugs, please send me the console errors via reddit u/adreamandafear. Based on this, I didn't find any discrepancies between what binance showed, and what was expected, so yay binance :)
Hope you found this helpful :) Feel like buying me a beer?


help_outline
settings
Compose
inbox
Inbox
{{count}}
star_outline
Starred
send
Sent
delete_outline
Bin
label_important
Important
MEET
video_call
New Meeting
calendar_today
My Meetings
arrow_back
archive
report
delete
mark_email_unread
watch_later
add_task
folder
label
more_vert
{{emails}}


All participants will be divided into groups of 3-5 and each group is assigned a Mentor. This mentor will also guide the teams through the whole installation process and will be available for any kind of question before and of course during the workshop. Together in this team, you will develop an Angular Application divided in step by step tasks. After each task, we even prepared a small quiz for you and your team to challenge what you have learned that far. In that way, each team will be in a small fun competing against each other and the winner will even get a small price by the end of the day,
In a guided tutorial you will learn:
At the end of the workshop, you will be at the point where you will have a basic idea of Angular. And you will be able to start your journey into Angular from there. We will also share a list of resources you can refer to at the end to gain a deeper understanding of Angular.
But it is not only about learning how to develop. It is also about networking and getting to know real developers and connecting with them. Feel free to ask any kind of question to your mentor based on daily life as a developer .


{
"id": 1,
"firstName": "Jane",
"lastName": "Doe",
"avatar": "jane_doe.jpg",
"email":"<EMAIL_ADDRESS>"hometown": "edmonton,ab",
"bio": "id1"
}
From this, we create the variables janeDoe, tomJones, and clarkKen in a similar fashion to demonstrate design pattern.
var janeDoe = {
id : 1,
firstName : 'Jane',
lastName : 'Doe',
email<EMAIL_ADDRESS>hometown : 'Edmonton, AB',
birthYear: 1995,
calculateAge : function() {
console.log(2018 - this.birthYear);
}
}
var tomJones = {
id: 2,
firstName : 'Tom',
lastName : 'Jones',
email<EMAIL_ADDRESS>hometown: 'Edmonton, AB',
birthYear: 2002,
calculateAge : function() {
console.log(2018 - this.birthYear);
}
}
var clarkKen = {
id: 3,
firstName : 'Clark',
lastName : 'Ken',
email<EMAIL_ADDRESS>hometown: 'Edmonton, AB',
birthYear: 1990,
calculateAge : function() {
console.log(2018 - this.birthYear);
}
}
The function constructor is creating objects through blueprinting. Parameters of the functions will be the variables we want to set in this object; in this case the parameters are id, firstName, lastName, email, hometown, and birthYear.
var Friend = function(id, firstName, lastName, email, hometown, birthYear) {
this.id = id; //the "this" variable is an object as well. this.name is the input of the function(the parameter of the function).
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.hometown = hometown;
this.birthYear = birthYear;
}
Friend.prototype.calculateAge = function() {
console.log(`${this.firstName} ${this.lastName} is ${(new Date()).getFullYear() - this.birthYear} years old`);
}
// add a property to Friend to be inherited for all of its instances - 'mix it up'
Friend.prototype.school = 'NAIT';
// now we have the function constructor in place, we can use this constructor to create a janeDoeFriend object
var janeDoeFriend = new Friend(1, 'Jane', 'Doe'<EMAIL_ADDRESS>'Edmonton, AB', 1995); //when we use the "new" operator, a brand new object is created.
// the "new" operator points the "this" variable, not to the global object, but to this new empty object.
janeDoeFriend.calculateAge();
//Jane Doe is 23 years old
var tomJonesFriend = new<EMAIL_ADDRESS>'Edmonton, AB', 2002);
tomJonesFriend.calculateAge();
The Object.Create method first defines an object that will act as the prototype, and then it creates a new object.
var FriendProto = {
calculateAge: function() {
console.log(`${this.firstName} ${this.lastName} is ${(new Date()).getFullYear() - this.birthYear} years old`);
}
};
var clark = Object.create(FriendProto,{
firstName: { value: 'clark'},
lastName: {value: 'Ken'},
email: {value<EMAIL_ADDRESS>hometown: {value: 'Edmonton, AB'},
birthYear: {value: 1990}
});
clark.calculateAge();
// The difference between object.create and the function constructor pattern is
// object.create builds an object that inherits directly from the one that we passed into the first argument.
// On the other hand, with the function constructor the newly created object inherits from the constructor's prototype property.
// The benefit of object.create is that it allows us to implement really complex inheritant structures in an easier way
// than function constructors because it allows us to directly specify which object should be a prototype.
When you execute the code in console, you would see this:
This section will demonstrate examples of using the callback function.
First, let's do an array calculation function:
var friendBirthYears = [janeDoeFriend.birthYear, tomJonesFriend.birthYear, clark.birthYear];
function arrayCalcution(array, fn) {
var arrayResult = [];
for (let i=0; i < array.length; i++) {
arrayResult.push(fn(array[i]));
}
return arrayResult;
}
In this case, what are we actually going to push into the array? The answer is that it will be the result of the fn function (the outer bracket (fn)) got pushed into the array. Then we pass the current element of the input array into this function, Array i, (the inner bracket( "fn()" )).
These functions will be called with the i element of the input array:
//callback functions:
function calculateAge(el) {
return (new Date()).getFullYear() - el;
}
function isFullAge(el) {
return el >= 18;
}
Now we execute the function and view our result
var ages = arrayCalcution(friendBirthYears, calculateAge); //Notice this is not the calculateAge() function, because we want this to be called later by the arrayCalculation function, which is why this is called the callback (because it is called later)
var fullAges = arrayCalcution(ages, isFullAge);
console.log(ages);
console.log(fullAges);
This is beneficial because this creats a modular and each function has a simple task rather than a big function that does a ton of things. This is achieved by passing functions around like variables - passing functions like arguments.
The following example shows an function returning an entire function.
function oldEnoughtoDrink (age) {
if (age >=21){
//use an anonymous function that accepts a name
return function(name) {
console.log(`${name}, you are old enough to drink everywhere, have fun`);
}
} else if (age >=18 && age <21) {
return function(name) {
console.log(`${name}, you are old enough to drink in Canada, be responsible`);
}
} else{
return function(name) {
console.log(`${name}, you are not old enough, go play video games`);
}
}
}
// now create variables to store the results
var ageVerificationA = oldEnoughtoDrink(18);
ageVerificationA('PersonA');
var ageVerificationB = oldEnoughtoDrink(21);
ageVerificationB('PersonB');
var ageVerificationC = oldEnoughtoDrink(17)('PersonC');
View result in console
function closureOldEnoughtoDrink (age) {
return function (name){
if(age>=21){
console.log(`${name}, you are old enough to drink everywhere, have fun`);
}else if (age>=18 && age <21){
console.log(`${name}, you are old enough to drink in Canada, be responsible`);
}else{
console.log(`${name}, you are not old enough, go play video games`);
}
}
}
closureOldEnoughtoDrink (21)('Bob.B');
console.log((new Date()).getFullYear()-janeDoeFriend.birthYear);
closureOldEnoughtoDrink ((new Date()).getFullYear()-janeDoeFriend.birthYear)(`${janeDoeFriend.firstName} ${janeDoeFriend.lastName}`);
IIFE focuses on data protection, instead of reuseability.
(function(birthYear){
var age = new Date().getFullYear() - birthYear;
if (age >=21){
//use an anonymous function that accepts a name
return function(name) {
console.log(`${name}, you are old enough to drink everywhere, have fun`);
}
} else if (age >=18 && age <21) {
return function(name) {
console.log(`${name}, you are old enough to drink in Canada, be responsible`);
}
} else{
return function(name) {
console.log(`${name}, you are not old enough, go play video games`);
}
}
})(1990)('David');


OpenRDF is the creator of the Sail interface (Storage and Inference Layer). Any triple or quad-store developer can implement the Sail interfaces in order to allow third-party developer to work with different stores without having to change their code. This is very handy as different RDF-store implementations are optimized for different types of use cases. In analogy, Sail is like the JDBC of the RDF database world.
The Storage And Inference Layer (Sail) API is a low level System API (SPI) for RDF stores and inferencers. Its purpose is to abstract from the storage and inference details, allowing various types of storage and inference to be used. The Sail API is mainly of interest for those who are developing Sail implementations, for all others it suffices to know how to create and configure one. There are several implementations of the Sail API, for example the MemoryStore which stores RDF data in main memory, and the NativeStore which uses dedicated on-disk data structures for storage. (source OpenRDF Sesame Users Guide)
Many triple and quad-store developers have implemented the Sail interface. Supported implementations are provided below.
<dependency>
<groupId>com.tinkerpop.blueprints</groupId>
<artifactId>blueprints-sail-graph</artifactId>
<version>??</version>
</dependency>
Graph graph = new MemoryStoreSailGraph();
Graph graph = new NativeStoreSailGraph("/tmp/nativestore");
Graph graph = new LinkedDataSailGraph(new MemoryStoreSailGraph());
Vertex v = graph.getVertex("http://dbpedia.org/resource/Graph_Database");
Graph graph = new SparqlRepositorySailGraph("http://dbpedia.org/sparql");
Any of these stores can be manipulated with Blueprints through their Sail interfaces. Here is a list of aspects of RDF that should be understood when dealing with Blueprints over an RDF store.
The Resource Description Framework can be modeled as a property graph. Moreover, it is possible to model RDF quads (triples within a named graph) as a property graph. This page articulates the mapping between RDF quads and the property graph model.
An RDF quad statement is denoted by a subject, a predicate, an object, and a named graph (the “spog” model for short). The set of subjects is the set of all Uniform Resource Identifiers (URIs) and blank nodes. The set of predicates is the set of all URIs. The set of objects is the set of all URIs, blank nodes, and literals. Finally, the set of named graphs is the set of all URIs and blank nodes. The following diagram demonstrates how RDF is modeled using the property graph model.
The identifier (id
) of a vertex is the string representation of the RDF value that it is modeling/representing. A few examples are provided below:
http://markorodriguez.com
http://tinkerpop.com#ripple
urn:uuid:aa9d07d7-8ccf-454a-b08a-5e5a8c560154
_:A12345
_:anonymous-node
"hello"
"hello"
@en
"hello"^^<http://www.w3.org/2001/XMLSchema#string>
All vertices have a kind property (kind
) that is either uri
, literal
, or bnode
. Only literal-based vertices have three other vertex properties. Only two of which can be set. These properties are the language (lang
), the datatype (type
), and the typecasted value (value
) of the literal label. Note that in RDF, a literal can have either a language, a datatype, or neither. Never can a literal have both a language and a datatype. The typecasted value is the object created by the casting of the label of the literal by its datatype. In other words the value
of "6"^^<http://www.w3.org/2001/XMLSchema#int>
is the integer 6.
Finally, an edge in the property graph model represents an RDF statement. The identifier of an edge is the string representation of the RDF statement. Two examples are provided below. One where the RDF statement is a triple and the other where the statement is a quad.
(http://tinkerpop.com#marko, http://someontology.com#age, "30"^^<http://www.w3.org/2001/XMLSchema#int>)
(http://tinkerpop.com#marko, http://www.w3.org/2002/07/owl#sameAs, http://markorodrigue.com#marko) [http://tinkerpop.com#graph]
Statements can only have a single property. Namely, the named graph property (ng
).
The graph diagrammed in GraphML Reader and Writer Library would be represented in an RDF property graph as the following.
supportsDuplicateEdges: false
supportsSelfLoops: true
supportsSerializableObjectProperty: false
supportsBooleanProperty: false
supportsDoubleProperty: false
supportsFloatProperty: false
supportsIntegerProperty: false
supportsPrimitiveArrayProperty: false
supportsUniformListProperty: false
supportsMixedListProperty: false
supportsLongProperty: false
supportsMapProperty: false
supportsStringProperty: false
ignoresSuppliedIds: false
isPersistent: false
isRDFModel: true
isWrapper: false
supportsIndices: false
supportsVertexIndex: false
supportsEdgeIndex: false
supportsKeyIndices: false
supportsVertexKeyIndex: false
supportsEdgeKeyIndex: false
supportsEdgeIteration: true
supportsVertexIteration: false
supportsTransactions: true
supportsThreadedTransactions: false


/* * Draw a pixel at the specified coordinates. * * Note: Versions of Imlib2 up to and including 1.0.5 had a broken * imlib_image_draw_pixel() call. Imlib2-Ruby has a work-around, which * simulates drawing a pixel with a 1x1 rectangle. To disable this * behavior, see the Imlib2::Image::draw_pixel_workaround= method. * * Examples: * im.draw_pixel 10, 10 # draw using context color * im.draw_pixel 10, 10, Imlib2::Color::BLUE # draw blue pixel * im.draw_pixel [10, 10], Imlib2::Color::RED # draw red pixel * */ static VALUE image_draw_pixel(int argc, VALUE *argv, VALUE self) {


Developing
As a type of Sage project, extension projects can have any combination of controllers, modules, views and other resources. The extension project itself can be worked on independently and the extension project itself provides the text/example project of the extension.
The project configuration specifies which of the extensions components and resources should be copied into the deliverable archive. This allows extension developers to mix other work items, such as test views and specifications with the deliverable code, and filter them out in the compile step.
Packaging
The extension projects are packaged by the
Sage.Build
utility, invoked from the command line. Relative paths are considered relative to the working directory.sage.build extension -source:<extension-project-path> -target:<path-to-archive>
Consuming
The extension archives are placed in the extensions directory of the target project. With each initialization of the application, the extension will be registered with the project.


--- layout: post title: Médailles description: MOSAERT Médailles date: '2019-10-25 08:48:12 +0100' categories: - Storyboards - Graphic Design ---
MOSAERT, medals, extract from a storyboard.


Enter Requirement and its Quantity to Update :
{% if messages %} {% for message in messages %}
{{message}}
{% endfor %} {% endif %}
{%csrf_token%}
Requirement :
Quantity :
Edit


Friday, 20th November 2009 This site will be unavailable from 9.00 a.m. to 1.00 p.m., London, U.K. time, for routine maintenance.


Developer • Web-Designer
__.___ years old • The girl who never sleeps! • Overwatch <3 #MercyMain
I'm supposed to be a random quote. Did you disable Javascript? o.O
Hey! I'm inventivetalent and you've found my website, yay!
I recently moved on to Web design and development of websites, backend systems and standalone software as my main interest.
You can check out some of my projects via the cards above!
I also try to maintain some plugins on SpigotMC.org
All of my public projects & services are provided absolutely free! If you'd like to help to keep them going,
I'd appreciate if you bought me some coffee and pizza :)
You'll also get a shiny name color on my Discord server!
The best way to contact me is via Twitter,
or on my Discord server.


@Angular2bes - a group for Angular Enthusiasts in Sussex
Here is a link to a Google doc with our latest meetup's raw notes, so you can get the latest links and downloads before this site is updated.
It's not pretty but it means meetup attendees can follow along as it happens.
Powerpoint Slides
https://drive.google.com/file/d/1rG9bqhWvZpcdaO-i6Vyb38EnHFqlloKE/view
Webpack Bundle Analyzer
https://github.com/webpack-contrib/webpack-bundle-analyzer
Nrwl Nx
Ngrx
first() vs take(1)
combineLatest vs forkJoin
https://scotch.io/tutorials/rxjs-operators-for-dummies-forkjoin-zip-combinelatest-withlatestfrom
The Ultimate Answer To The Very Common Angular Question: subscribe() vs | async Pipe
ngx-take-until-destroy
https://www.npmjs.com/package/ngx-take-until-destroy
RxJS Marbles
BundlePhobia
RxJS Pipe Operator Chooser
https://xgrommx.github.io/rx-book/content/which_operator_do_i_use/instance_operators.html
https://angular.io/guide/service-worker-intro
ng add @angular/pwa --project *project-name*
ng build --prod
describe ( it( ) )
fit( ) - only this one
xit( ) - exclude
(done) => {
done();
}
async (done) => {
await...
done();
}
spyOn( (<any>class), ‘privateMethod’)
spyOn( ClassThatGetsNewedInsideYourMethod.prototype, 'methodName' )
serviceSpy = jasmine.createSpyObj(serviceName, [ 'stubbedMethod1', 'stubbedMethod2' ]);
A fix to my previously failed service mocking demo:
https://github.com/tomwhite007/JasmineMock/blob/master/src/app/app.component.spec.ts
observableSpy = jasmine.createSpyObj('anotherService', [ 'methodReturnsObservable' ]);
observableSpy.methodReturnsObservable.and.returnValue({
subscribe: () => {},
});
ng g app new-app-inside-workspace
? In which directory should the application be generated?
? Would you like to add Angular routing? Yes
? Which Unit Test Runner would you like to use for the application? Karma [ https://karma-runner.github.io ]
? Which E2E Test Runner would you like to use for the application? Protractor [ https://www.protractortest.org ]
? Which tags would you like to add to the application? (used for linting)
https://material.angular.io/guide/theming
https://tutorialzine.com/2016/01/learn-sass-in-15-minutes
http://thesassway.com/intermediate/responsive-web-design-in-sass-using-media-queries-in-sass-32
https://www.udemy.com/the-complete-guide-to-angular-2/
https://www.udemy.com/build-an-app-with-aspnet-core-and-angular-from-scratch/
Net Ninja: https://www.youtube.com/channel/UCW5YeuERMmlnqo4oq8vwUpg
MPJ on Javascript: https://www.youtube.com/channel/UCO1cgjhGzsSYb1rsB4bFe4Q
Thenewboston Angular FREE: https://www.youtube.com/watch?v=hXfigUyeHaY
https://blog.angularindepth.com/state-management-in-angular-using-akita-82f117d282dd
Two nerds don’t make a right
Angular Elements
Gordon’s good German reference site
...from: Getting Started with Angular (6) Elements
talks and videos from the conference
Ivy,
Bazel,
Angular Elements inside AngularJS
Ngrx,
Angular libraries vs Nrwl Nx vs Micro Apps
...what are Micro Apps?
Nest the backend for your Angular application
Testing Angular with Cypress.io
...Cypress.io
VS Code Can Do That - Live Share
Training
https://www.thinkful.com/
https://ultimatecourses.com/angular
Free:
https://school.hirez.io/
Angular Console - improves discoverability of the Angular CLI
https://github.com/tomwhite007/ObservablesUnitTests1 - testing Observables example and discussion
https://angular.io/guide/aot-compiler - AOT is now by default (since Angular 6)
Cypress.io a new testing framework that Paul recommended
Good test configuration for better info:
ng test --source-map=false --code-coverage
Excellent PWA article from Hot JS (recommended by Gordon)
Discussed benefits of Cordova vs Ionic vs Titanium for Web View mobile applications
Discussed some recommended accountants:
Churchill Knight Ltd
K&B Accountancy Group
In most cases, use the Angular CLI https://cli.angular.io/
If using the Angular CLI, utilize 'ng update' when possible
Follow the Angular Style Guide https://angular.io/guide/styleguide
Visual Studio Code is the recommended IDE
Use Prettier, code formatter
Use Move TS to simplify refactoring: https://marketplace.visualstudio.com/items?itemName=stringham.move-ts
Use John Papa’s Angular Essentials: https://marketplace.visualstudio.com/items?itemName=johnpapa.angular-essentials
Consider folder structure: https://johnpapa.net/angular-2-styles/
Review your project output with source map explorer https://www.npmjs.com/package/source-map-explorer
Utilize Component Architecture and Feature Modules.
Lazy load resources whenever possible
Smart / Container Components : Communicate with Services and render child components
Dumb / Presentation Components: Accepts data via inputs Emit data change via event outputs
Data flows down and Events emit up.
One-way dataflow promotes reusable components and can increase performance
Make use of TypeScripts advanced features when possible. ES6 and ES7 commands means less code, and clearer intent.
Avoid doing much in the constructor of a component. Utilize the lifetime hooks e.g. ngOnInit
Use trackBy option for *ngFor directive - “Angular 2 — Improve performance with trackBy” https://netbasal.com/angular-2-improve-performance-with-trackby-cc147b5104e5
Recommended Virtual Scroll component: https://github.com/rintoj/angular2-virtual-scroll
Wildcard routes for 404 handling
Use Environment Variables when you have to change values for dev or prod
Use Async Pipe as much as possible - it reduces boilerplate. But if you can't, remember to unsubscribe any observables that can still be running in ngOnDestroy
ShareReplay() - https://blog.strongbrew.io/rxjs-best-practices-in-angular/
Gotcha: multiple Async pipes for the same API request will call the API multiple times
Use the pipe() method in RxJS 6.0 (started in 5.5 but got better in 6)
Nrwl Nx for larger apps or, if you want to reuse chunks of code. https://nrwl.io/nx
Ngrx is currently the recommend library for application state management. Keep an eye on Mobx.
Deborah Kurata Pluralsight - https://www.pluralsight.com/courses/angular-ngrx-getting-started
Angular 6 key features -
free course
ngUpgrade
Nwrl Nx toolkit for enterprise Angular applications
ng-packagr for creating library packages.
Unit testing
Conferences
Gordon recommended
Angular Material is a library of modern UI components that work across the web, mobile and desktop
RxJS powered state management for Angular applications, inspired by Redux
NgRx 4 - fantastic reference:
NgRx Experiment 1 (using version 4)
Experiment based on getting-started example
NgRx 4 root
@ngrx/store
@ngrx/store getting-started example
@ngrx/effects
@ngrx/effects getting-started example
@ngrx/store-devtools
Instrumentation with the Chrome / Firefox Extension
Need to set your Action interfaces to carry payload
The payload property has been removed from the Action interface
GraphQL is a query language for your API, and a server-side runtime for executing queries by using a type system you define for your data.
GraphQL 'Star Wars' example using GraphQL for .NET, ASP.NET Core, Entity Framework Core
GraphQL Playground
https://www.graphqlhub.com/playground an excellent practice area
GraphQL reference:
A representation of any set of values over any amount of time. This the most basic building block of RxJS.
From Promises to Observables (briefly)
Here are some highlights about Angular 4
5 Features To Watch Out For in Angular v4
Part 1
Sharing values
Part 2
Sharing values between components using Observables (BehaviorSubject)
We are a free local meetup group of Angular 2+ enthusiasts; unsponsored and community driven.
We hold workshops and discuss current Angular topics.
All levels are welcome. Our members comprise beginners and experts.
We meet at The Skiff in Brighton. (Google map)
If you would like to request a topic for us to cover, or even present, get in touch.
Some of these are a bit dated now. Refresh coming soon.
You can contact us all these ways:


UNoFFICAL PHASE 10
About Me
Home Page
Lets Play
2 sets of 3
1 Set of 3 AND 1 Run of 4
1 Set of 4 AND 1 Run of 4
1 Run of 7
1 Run of 8
1 Run of 9
2 Sets of 4
7 Cards of One Color
1 Set of 5 AND 1 Set Of 2
1 Set of 5 AND 1 set of 3


Serverless Meetup
News Clip
20170814
https://www.github.com/mabels/talks/newsclip/20170814
Microsoft Azure Stack Hybrid
On Premise for the public
http://www.businessinsider.com/microsoft-azure-stack-hybrid-cloud-released-2017-7
Developer Experience Lessons Operating a Serverless-like Platform at Netflix
Drawing from our developer experience learnings operating a Serverless-like platform at Netflix, we outline various aspects that are applicable to general purpose serverless solutions too.
https://medium.com/netflix-techblog/developer-experience-lessons-operating-a-serverless-like-platform-at-netflix-a8bbd5b899a0
Serverless Hosting Comparison – headmelted
A head-to-head showdown of the providers fighting for your dollars
https://headmelted.com/serverless-showdown-4a771ca561d2
Enabling Node.js Functions to Execute at the Edge Alongside CloudFront CDN
Amazon Web Services (AWS) have released Lambda@Edge as generally available, allowing customers to run Node.js Lambda functions "at the edge" across AWS point-of-presence locations globally, which can enable dynamic response to end users with very low latency.
https://www.infoq.com/news/2017/07/aws-lambda-at-edge
Serverless computing with AWS Lambda
Serverless computing is no magic carpet, but how does it really work? Get an overview of AWS Lambda's nanoservices architecture and execution model, then build your first Lambda function in Java
http://www.javaworld.com/article/3210726/application-development/serverless-computing-with-aws-lambda.html
chromeless - :desktop_computer: Chrome automation made simple. Runs locally or headless on AWS Lambda.
https://github.com/graphcool/chromeless/blob/master/README.md
BinaryAlert: Real-time Serverless Malware Detection
BinaryAlert is an open-source serverless malware detection framework which can analyze millions of files a day using a configurable set of YARA rules. Deploy BinaryAlert to your AWS account today!
https://medium.com/airbnb-engineering/binaryalert-real-time-serverless-malware-detection-ca44370c1b90
Architect has a better blueprint for AWS Lambda deployments
Project handles configuration and provisioning of Lambda functions and related AWS services with a plain-text manifest file
http://www.infoworld.com/article/3210766/cloud-computing/architect-has-better-blueprint-for-aws-lambda-deployments.html
Running Selenium and Headless Chrome on AWS Lambda – clog – Medium
There seems to be a small community of developers building interesting browser things on AWS Lambda with Headless Chrome.
https://medium.com/clog/running-selenium-and-headless-chrome-on-aws-lambda-fb350458e4df
Comparing Java and Node.js on AWS Lambda
In this blog I share some experiences implementing a set of AWS Lambda Functions in both Node.js 6.10 and Java 8. I’ll begin with some initial observations before moving on to focus on performance and cost.
https://www.bouvet.no/bouvet-deler/comparing-java-and-node.js-on-aws-lambda
Why serverless was made for mobile development
Building mobile apps becomes infinitely simpler when we get the antiquated server stack out of the way
http://www.infoworld.com/article/3214467/node-js/why-serverless-was-made-for-mobile-development.html


| 1 | /* =========================================================== | |
| 2 | * JFreeChart : a free chart library for the Java(tm) platform | |
| 3 | * =========================================================== | |
| 4 | * | |
| 5 | * (C) Copyright 2000-2009, by Object Refinery Limited and Contributors. | |
| 6 | * | |
| 7 | * Project Info: http://www.jfree.org/jfreechart/index.html | |
| 8 | * | |
| 9 | * This library is free software; you can redistribute it and/or modify it | |
| 10 | * under the terms of the GNU Lesser General Public License as published by | |
| 11 | * the Free Software Foundation; either version 2.1 of the License, or | |
| 12 | * (at your option) any later version. | |
| 13 | * | |
| 14 | * This library is distributed in the hope that it will be useful, but | |
| 15 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
| 16 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public | |
| 17 | * License for more details. | |
| 18 | * | |
| 19 | * You should have received a copy of the GNU Lesser General Public | |
| 20 | * License along with this library; if not, write to the Free Software | |
| 21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
| 22 | * USA. | |
| 23 | * | |
| 24 | * [Java is a trademark or registered trademark of Sun Microsystems, Inc. | |
| 25 | * in the United States and other countries.] | |
| 26 | * | |
| 27 | * ---------------------- | |
| 28 | * MouseWheelHandler.java | |
| 29 | * ---------------------- | |
| 30 | * (C) Copyright 2009, by Object Refinery Limited and Contributors. | |
| 31 | * | |
| 32 | * Original Author: David Gilbert (for Object Refinery Limited); | |
| 33 | * Contributor(s): Ulrich Voigt - patch 2686040; | |
| 34 | * Jim Goodwin - bug fix; | |
| 35 | * | |
| 36 | * Changes | |
| 37 | * ------- | |
| 38 | * 18-Mar-2009 : Version 1, based on ideas by UV in patch 2686040 (DG); | |
| 39 | * 26-Mar-2009 : Implemented Serializable (DG); | |
| 40 | * 10-Sep-2009 : Bug fix by Jim Goodwin to respect domain/rangeZoomable flags | |
| 41 | * in the ChartPanel (DG); | |
| 42 | * 04-Nov-2009 : Pass mouse wheel notification to PiePlot (DG); | |
| 43 | * | |
| 44 | */ | |
| 45 | ||
| 46 | package org.jfree.chart; | |
| 47 | ||
| 48 | import java.awt.event.MouseWheelEvent; | |
| 49 | import java.awt.event.MouseWheelListener; | |
| 50 | import java.awt.geom.Point2D; | |
| 51 | ||
| 52 | import java.io.Serializable; | |
| 53 | import org.jfree.chart.plot.PiePlot; | |
| 54 | import org.jfree.chart.plot.Plot; | |
| 55 | import org.jfree.chart.plot.PlotRenderingInfo; | |
| 56 | import org.jfree.chart.plot.Zoomable; | |
| 57 | ||
| 58 | /** | |
| 59 | * A class that handles mouse wheel events for the {@link ChartPanel} class. | |
| 60 | * | |
| 61 | * @since 1.0.13 | |
| 62 | */ | |
| 63 | class MouseWheelHandler implements MouseWheelListener, Serializable { | |
| 64 | ||
| 65 | /** The chart panel. */ | |
| 66 | private ChartPanel chartPanel; | |
| 67 | ||
| 68 | /** The zoom factor. */ | |
| 69 | double zoomFactor; | |
| 70 | ||
| 71 | /** | |
| 72 | * Creates a new instance for the specified chart panel. | |
| 73 | * | |
| 74 | * @param chartPanel the chart panel (null not permitted). | |
| 75 | */ | |
| 76 | public MouseWheelHandler(ChartPanel chartPanel) { | |
| 77 | this.chartPanel = chartPanel; | |
| 78 | this.zoomFactor = 0.10; | |
| 79 |
1
1. |
this.chartPanel.addMouseWheelListener(this); |
| 80 | } | |
| 81 | ||
| 82 | /** | |
| 83 | * Returns the current zoom factor. The default value is 0.10 (ten | |
| 84 | * percent). | |
| 85 | * | |
| 86 | * @return The zoom factor. | |
| 87 | * | |
| 88 | * @see #setZoomFactor(double) | |
| 89 | */ | |
| 90 | public double getZoomFactor() { | |
| 91 |
1
1. getZoomFactor : replaced return of double value with -(x + 1) for org/jfree/chart/MouseWheelHandler::getZoomFactor → NO_COVERAGE |
return this.zoomFactor; |
| 92 | } | |
| 93 | ||
| 94 | /** | |
| 95 | * Sets the zoom factor. | |
| 96 | * | |
| 97 | * @param zoomFactor the zoom factor. | |
| 98 | * | |
| 99 | * @see #getZoomFactor() | |
| 100 | */ | |
| 101 | public void setZoomFactor(double zoomFactor) { | |
| 102 | this.zoomFactor = zoomFactor; | |
| 103 | } | |
| 104 | ||
| 105 | /** | |
| 106 | * Handles a mouse wheel event from the underlying chart panel. | |
| 107 | * | |
| 108 | * @param e the event. | |
| 109 | */ | |
| 110 | public void mouseWheelMoved(MouseWheelEvent e) { | |
| 111 | JFreeChart chart = this.chartPanel.getChart(); | |
| 112 |
1
1. mouseWheelMoved : negated conditional → NO_COVERAGE |
if (chart == null) { |
| 113 | return; | |
| 114 | } | |
| 115 | Plot plot = chart.getPlot(); | |
| 116 |
1
1. mouseWheelMoved : negated conditional → NO_COVERAGE |
if (plot instanceof Zoomable) { |
| 117 | Zoomable zoomable = (Zoomable) plot; | |
| 118 |
1
1. mouseWheelMoved : removed call to org/jfree/chart/MouseWheelHandler::handleZoomable → NO_COVERAGE |
handleZoomable(zoomable, e); |
| 119 | } | |
| 120 |
1
1. mouseWheelMoved : negated conditional → NO_COVERAGE |
else if (plot instanceof PiePlot) { |
| 121 | PiePlot pp = (PiePlot) plot; | |
| 122 |
1
1. mouseWheelMoved : removed call to org/jfree/chart/plot/PiePlot::handleMouseWheelRotation → NO_COVERAGE |
pp.handleMouseWheelRotation(e.getWheelRotation()); |
| 123 | } | |
| 124 | } | |
| 125 | ||
| 126 | /** | |
| 127 | * Handle the case where a plot implements the {@link Zoomable} interface. | |
| 128 | * | |
| 129 | * @param zoomable the zoomable plot. | |
| 130 | * @param e the mouse wheel event. | |
| 131 | */ | |
| 132 | private void handleZoomable(Zoomable zoomable, MouseWheelEvent e) { | |
| 133 | // don't zoom unless the mouse pointer is in the plot's data area | |
| 134 | ChartRenderingInfo info = this.chartPanel.getChartRenderingInfo(); | |
| 135 | PlotRenderingInfo pinfo = info.getPlotInfo(); | |
| 136 | Point2D p = this.chartPanel.translateScreenToJava2D(e.getPoint()); | |
| 137 |
1
1. handleZoomable : negated conditional → NO_COVERAGE |
if (!pinfo.getDataArea().contains(p)) { |
| 138 | return; | |
| 139 | } | |
| 140 | ||
| 141 | Plot plot = (Plot) zoomable; | |
| 142 | // do not notify while zooming each axis | |
| 143 | boolean notifyState = plot.isNotify(); | |
| 144 |
1
1. handleZoomable : removed call to org/jfree/chart/plot/Plot::setNotify → NO_COVERAGE |
plot.setNotify(false); |
| 145 | int clicks = e.getWheelRotation(); | |
| 146 |
1
1. handleZoomable : Replaced double addition with subtraction → NO_COVERAGE |
double zf = 1.0 + this.zoomFactor; |
| 147 |
2
1. handleZoomable : changed conditional boundary → NO_COVERAGE 2. handleZoomable : negated conditional → NO_COVERAGE |
if (clicks < 0) { |
| 148 |
1
1. handleZoomable : Replaced double division with multiplication → NO_COVERAGE |
zf = 1.0 / zf; |
| 149 | } | |
| 150 |
1
1. handleZoomable : negated conditional → NO_COVERAGE |
if (chartPanel.isDomainZoomable()) { |
| 151 |
1
1. handleZoomable : removed call to org/jfree/chart/plot/Zoomable::zoomDomainAxes → NO_COVERAGE |
zoomable.zoomDomainAxes(zf, pinfo, p, true); |
| 152 | } | |
| 153 |
1
1. handleZoomable : negated conditional → NO_COVERAGE |
if (chartPanel.isRangeZoomable()) { |
| 154 |
1
1. handleZoomable : removed call to org/jfree/chart/plot/Zoomable::zoomRangeAxes → NO_COVERAGE |
zoomable.zoomRangeAxes(zf, pinfo, p, true); |
| 155 | } | |
| 156 |
1
1. handleZoomable : removed call to org/jfree/chart/plot/Plot::setNotify → NO_COVERAGE |
plot.setNotify(notifyState); // this generates the change event too |
| 157 | } | |
| 158 | ||
| 159 | } | |
Mutations | ||
| 79 |
1.1 |
|
| 91 |
1.1 |
|
| 112 |
1.1 |
|
| 116 |
1.1 |
|
| 118 |
1.1 |
|
| 120 |
1.1 |
|
| 122 |
1.1 |
|
| 137 |
1.1 |
|
| 144 |
1.1 |
|
| 146 |
1.1 |
|
| 147 |
1.1 2.2 |
|
| 148 |
1.1 |
|
| 150 |
1.1 |
|
| 151 |
1.1 |
|
| 153 |
1.1 |
|
| 154 |
1.1 |
|
| 156 |
1.1 |


Seems your browser doesn't support Javascript! Websockets rely on Javascript being enabled. Please enable Javascript and reload this page!
Connect
Disconnect
{"cmd":"LOGIN","loginType":"1","workType":"1","agentKey":"1001@test","passwd":"8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92","time":"123456789"}
{"cmd":"READY","sequence":1604584634704}
READY
{"cmd":"NOT_READY","sequence":1604584634704}
NOT_READY
{ "cmd":"MAKE_CALL", "caller":"", "called":"14400010002", "callType":"OUTBOUNT_CALL", "followData":{"autoAnswer":"true"}, "sequence":1604584634704}
外呼
{ "cmd":"COONSULT", "caller":"", "called":"14400010002", "callType":"OUTBOUNT_CALL", "followData":{"autoAnswer":"true"}, "sequence":1604584634704}
咨询
{ "cmd":"TRANSFER", "transferValue":"1002@test", "transferType":"1", "sequence":1604584634704}
转接
{ "cmd":"ANSWER", "sequence":1604584634704}
应答
{ "cmd":"HANGUP_CALL", "callId":"", "sequence":1604584634704}
挂机
clear message


To do for contributors¶
This to do list includes aspects that require a few hours up to a few months of work. Whenever possible, a link to a document describing the problem in details is provided.
Math and geometry:¶
Write a C routine for (very) fast computation of solid angle in non-trival cases using spherical geometry and write a python / cython wrapper (weeks)
Coding:¶
Parallelize (frist CPU then GPU) the key functions of the geometry module (months)
Branch the meshing module to allow compatibility with CAID/Pigasus (months)
Branch the matrix computation module for the same reason (months)
Branch the inversion module for the same reason (months)
Long term:¶
Create a parallel library called ToFuG, which provides all ToFu functionalities through a GUI for each ToFu module (year)


Try the plan for 30 days and if you don't love it, email me and I will refund you every penny.
To unsubscribe from these emails click here.


(toggle processing icon)
| AlphaNumeric Sort & and really really big header so we can see what happens on the next line; both with the icon and the text wrapping | Currency | Alphabetical | Sites |
|---|---|---|---|
| AlphaNumeric Sort | Currency | Alphabetical | Sites |
| abc 123 | £10,40 | Koala | http://www.google.com |
| abc 1 | £234,10 | Ox | http://www.yahoo.com |
| abc 9 | £10,33 | Girafee | http://www.facebook.com |
| zyx 24 | £10 | Bison | http://www.whitehouse.gov/ |
| abc 11 | £3,20 | Chimp | http://www.ucla.edu/ |
| abc 2 | £56,10 | Elephant | http://www.wikipedia.org/ |
| abc 9 | £3,20 | Lion | http://www.nytimes.com/ |
| ABC 10 | £87,00 | Zebra | http://www.google.com |
| zyx 1 | £99,90 | Koala | http://www.mit.edu/ |
| zyx 12 | £234,10 | Llama | http://www.nasa.gov/ |


We are an innovative engineering company providing integrated solutions on Acoustics, Pro Audio/Video, Lighting and FM/Internet Radio broadcasting.
In these domains, we provide consultancy and projection execution services.
Ours is a Private Limited Company incorporated by the Ministry of Corporate affairs, Government of India under the companies law 1956 (Number 1 of 1956).
“Varpas” - a Samskrutam word of Vedic origin meaning “image” or “design”, which incidentally represents the Domains we operate - Video, Audio, Radio, Product development and surveillance to help our clients in the preparation and delivery of quality aural and visual content for effective communication with their audiences.
Varpas is a team of committed, qualified and experienced professionals working in sync with the state-of-the-art
technology for delivering the optimum, economical and professional solutions for their clients.
Varpas offers its professional Acoustics, Audio, Video and RF broadcast engineering services in the following domains:
- Auditoriums
- Seminar halls, Lecture halls, Board/meeting rooms etc
- Radio broadcast facilities for Community radio and commercial private FM.
- Internet radio and podcasting
- Educational and Corporate TV studios.
- CCTV Video surveillance and Fire alarm/extinguishers
- Corporate training in Acoustics, Audio and RF engineering
Varpas provides end-to-end turnkey solution for the establishment of solutions and systems for content creation, pro-audio, video, broadcast and allied sectors. It starts from understanding the idea and requirement of the client, to translate it as an engineering solution, designing a system to meet the solution, advisory on choice of equipments so that, client can get value for their investment, supply of equipments and other material, installation, testing and commissioning of the system, training on operation and maintenance of the installed system.
Varpas always had been a holding hand for its clients which support them to achieve the envisaged solution in an optimized and professional way comprehending their business of operation. Below are listing of the services offered by Varpas in this process.
- Advisory on the Government policy on Private FM/Community Radio, TV broadcasting and distribution by Satellite/Cable, guidance on licensing process etc.
- Preparation of the Detailed Project Report containing technical specification, BOQ, drawings, tender documents etc as per the organizational requirements.
- Site preparatory works viz Civil/Electrical/HVAC engineering works as per the site requirement and providing details, design and drawings for the work execution.
- All works related with the interiors viz Acoustics, Installed audio, Video projection, IT, Stage and FoH lighting system, Proscenium , Drapery, Seating, CCTV, Fire alarm, Cat walk structure etc.
- Third party inspection and validation of the work carried out on Electricals, Acoustics (as per ISO 3382 standard), Sound, Lighting and HVAC by test and measurements and documentation.
- Training pertaining to our domain knowledge
{%- if site.posts.size > 0 -%}


The Atlas V first stage is the common core booster. This main booster is 107 feet (32.5 meters) long, with a diameter of 12.5 feet (3.8 meters). With the payload on board, the launch vehicle is 188 feet (57.3 meters). Fully fueled, with the spacecraft on top, it weighs about 730,000 pounds (333,000 kilograms). Thermally stable kerosene fuel (type RP-1) and liquid oxygen will be loaded shortly before launch into cylindrical fuel tanks that make up about half of the total height of the vehicle. The common core booster can provide thrust of up to about 850,000 pounds (3.8 million newtons) at full throttle. Named for the famous Isaac Newton, a newton is a unit of force required to accelerate a mass of one kilogram, one meter per second... every second! During this phase, the spacecraft accelerates to supersonic speeds of about 4,500 meters per second (10,000 miles per hour).


The Event
QuickCade is a livestreamed charity speedrunning marathon. Our core
goals are to raise money for good causes, and bring the speedrunning
community closer together in the UK and around the globe.
The Team
QuickCade is organised by Joe, Adam, George, and George, with incredible support from the wider speedrunning community.


A visualization protocol and toolkit for robotics data in the browser. Learn more
Coming soon in February 2019


import random
from onegpy.operator import AbstractOperator, PopulationOperatorAdapter
from onegpy.operators.selection import RandomSelection
from onegpy.solutions import solution
from onegpy.solutions.node import nodes_checker
from onegpy.solutions.solution import select_random_points, replace_node, solutions_checker
from onegpy.utils.util import get_generator_builder
[docs]def crossover(parents, points, destructive=False):
"""
Core function for crossover
:param parents: list of solution objects. solutions to do crossover.
:param points: list of node. crossover points. these nodes are replaced each other.
:param destructive: bool. If true, solution is replaced, keeping its object.
Otherwise, new solution instance is created, protecting original solution.
:return: list of solution objects. new_solutions
"""
check_parents_and_points(parents, points)
new_p1 = replace_node(parents[0], points[0], points[1], destructive)
new_p2 = replace_node(parents[1], points[1], points[0], destructive)
new_parents = (new_p1, new_p2)
return new_parents
[docs]def destructive_crossover(parents, points):
"""
A function for destructive crossover
:param parents: list of solution objects. solutions to do crossover.
:param points: list of node. crossover points. these nodes are replaced each other.
:return: list of solution objects. new_solutions
"""
check_parents_and_points(parents, points)
return crossover(parents, points, destructive=True)
[docs]def get_crossover_core(destructive=True):
"""
Getter of core function for crossover
:param destructive: bool. If true, solution is replaced, keeping its object.
Otherwise, new solution instance is created, protecting original solution.
:return: function. crossover function
"""
if not destructive:
return crossover
else:
return destructive_crossover
[docs]def check_parents_and_points(parents, points):
"""
Checker for parents and points
"""
solutions_checker(parents)
nodes_checker(points)
[docs]class OnePointCrossover(AbstractOperator):
"""
One point crossover class.
This crossover is not for population but for a single set of parents.
"""
[docs] def __init__(self, c_rate, destructive=True):
"""
:param c_rate: float. crossover rate.
:param destructive: bool. If destructive is true, parents also are changed.
Otherwise, parents are copied and keep their structures.
"""
super(OnePointCrossover, self).__init__(n_in=2, n_out=2)
self._c_rate = c_rate
self._destructive = destructive
self.crossover_core = get_crossover_core(self._destructive)
def __call__(self, parents):
"""
Do crossover with crossover probability c_rate.
:param parents: list of solution objects. solutions to do crossover.
:return: list of solution objects. new_solutions
"""
if len(parents) != 2:
msg = 'parents must be a list consisting of two solutions'
raise ValueError(msg)
points = [select_random_points(p, 1)[0] for p in parents]
if random.random() > self._c_rate:
return parents
else:
return self.crossover_core(parents, points)
@property
def c_rate(self):
return self._c_rate
@c_rate.setter
def c_rate(self, _):
self.not_changeable_warning()
@c_rate.deleter
def c_rate(self):
self.not_changeable_warning()
@property
def destructive(self):
return self._destructive
@destructive.setter
def destructive(self, _):
self.not_changeable_warning()
@destructive.deleter
def destructive(self):
self.not_changeable_warning()
[docs]class PopulationOnePointCrossover(PopulationOperatorAdapter):
"""
One point crossover class for population.
"""
[docs] def __init__(self, c_rate, destructive=False, generator_builder=None):
"""
:param c_rate: float. Crossover rate
:param destructive: bool. If destructive is true, parents also are changed.
Otherwise, parents are copied and keep their structures.
:param generator_builder: generator builder. Builder of generator for parents.
Default is None (generator builder using Random Selection).
e.g. If you want to use tournament selection as parents selection,
you can write 'get_generator_builder(TournamentSelection(...))'
"""
operator = OnePointCrossover(c_rate, destructive)
if generator_builder is None:
generator_builder = get_generator_builder(RandomSelection(k=operator.n_in, replacement=False))
super(PopulationOnePointCrossover, self).__init__(operator, generator_builder)
[docs]class MLPSCrossover(AbstractOperator):
"""
Crossover class for the MLPS-GP
"""
[docs] def __init__(self, problem, stop_after_one=False, donor_order='random'):
"""
:param problem: problem object. target problem.
:param stop_after_one: bool. stop a crossover after the first donation.
:param donor_order:
"""
super(MLPSCrossover, self).__init__()
self.stop_after_one = stop_after_one
self.donor_order = donor_order
self.problem = problem
def __call__(self, recipient, cross_points, donors):
"""
Crossover class for MLPS-GP
:param recipient: solution object. recipient of the MLPS-GP crossover.
:param cross_points: list of node objects. crossover points list for the MLPS-GP.
Basically, this is terminal node positions of the candidate solution after local search.
:param donors: list of solutions. a candidate donor subtree list.
Basically, this is a layer(sub-population) in pyramid.
"""
# cross_points: list of tuple, (parent of crosspoint, children index)
random.shuffle(cross_points)
for cross_point in cross_points:
self.improve(recipient, cross_point, donors)
def improve(self, recipient, cross_point, donors):
"""
Replace a sub-tree of the recipient at a crossover point with donors
:param recipient: solution object. recipient of the MLPS-GP crossover.
:param cross_point: node object. a crossover point.
:param donors: list of solutions. a candidate donor subtree list.
:return:
"""
# check if the recipient and each donor have a same tree structure or not.
# options is list of donors which are used for replacement
options = self.get_options(recipient, donors)
if self.donor_order == 'random':
random.shuffle(options)
for index in options:
donor = donors[index]
stop = self.donate(recipient, cross_point, donor)
# if stop after one is True, stop the donation soon.
if stop or self.stop_after_one:
break
del options
def donate(self, recipient, cross_point, donor):
"""
Replace a sub-tree of the recipient with a donor
:param recipient: solution object. recipient of the MLPS-GP crossover.
:param cross_point: node object. a crossover point.
:param donor: node object. root node of subtree(donor's root).
:return: bool. if fitness is improved or not.
"""
stop = False
previous_fitness = recipient.previous_fitness
parent_node, index = cross_point
pre_node = parent_node.children[index]
# TODO: check if the pre_node and the donor is same sub-tree, if so, we don't have to check the fitness of the new solution.
parent_node.children[index] = donor.root
fitness = self.problem.fitness(recipient)
if previous_fitness >= fitness:
parent_node.children[index] = pre_node
solution.set_previous_fitness(recipient, previous_fitness)
else:
stop = True
return stop
def get_options(self, recipient, donors):
"""
Check if the recipient and each donor have a same tree structure or not.
:param recipient: solution object. recipient of the MLPS-GP crossover.
:param donors: list of solutions. a candidate donor subtree list.
:return: list of solutions. solutions list which are used as donor in crossover
"""
options = []
for i, donor in enumerate(donors):
if not solution.solution_equal(recipient, donor, as_tree=True):
options.append(i)
return options


We’ll get our next look at Gears Tactics at The Game Awards in December
by Stephany NunneleyWe’ll finally get another look at Gears Tactics in December.
Our first and last glimpse of Gears Tactics occurred when it was announced at E3 2018, but that’s about to change in December.
According to a tweet from The Game Awards, The Coalition will be at the show to give us another look at the title.
Set 12 years before the events of Gears 1, the game centers on more action-focused, turn-based gameplay, with a customizable squad and equipment.
It is in development for PC.
Games featured in this article


Keystorke Recorder
Code
Key
Type
TimeStamp (ms)
No.
Code
Key
Dwell Time (ms)
No.
Code
Key
Flight Time (ms)


I've been playing with interactors for a few weeks, and I have to admit I like the way it behave. It's a neat way to separate this kind of code, you either put in controller methods (bad) or in this fat model (have you seen my five hundreds lines User class ?).
It's basically a service object, with some helper methods, the ability to decide if the action you initiate failed or not, and rollback possibilities. None of this is really new, but all together it makes a nice and really useful plain-ruby object. I recommend you to read this article, and to test it.
I won't re-write the doc, I'd rather like to look further in the interactor gem code.


IntroductionFrequently asked questionsSyntax, keywords and built-in functionsStandard distributionimport implementationBrowser interface
Introduction - DOM API
Creating a document Accessing elements Attributes and methods Events Mouse events Keyboard events Focus events Drag events Query string Using Javascript objects and libraries Brython-specific built-in modules
browser
browser.ajax browser.html browser.local_storage browser.markdown browser.object_storage browser.session_storage browser.svg browser.timer browser.websocket javascript Working with Brython
Options of function
brython()
Installing the development environment Testing and debugging Deploying an application Brython for Firefox OSCookbook |
Elements attributes and methodsThe elements in a page have attributes and methods that depend on the element type ; they are defined by the W3C and can be found on many Internet sites. Since their name may vary depending on the browser, Brython defines additional attributes that work in all cases :
style.position is set to a value different of "static". left and top are
computed like style.left and style.top but are integer, not strings ending
with px .
(2) Same as style.height and style.width but as integers.
To add a child to an element, use the operator <= (think of it as a left
arrow for assignment)
Iterating on an element's children can be done using the usual Python syntax :from browser import document, html document['zone'] <= html.INPUT(Id="data") To destroy an element, use the keywordfor child in element: (...) del
Thezone = document['zone'] del zone options collection associated with a SELECT object has an interface of a
Python list :
|


{# Display a grid of organization items. organizations - A list of organizations. Example: {% snippet "node/snippets/node_list.html" %} #}


@(employee : Employee, reports : List[Employee], reportsToEmployee : Employee, state : State) @doctype.render @header.render(employee.getLastName)
@report.getLastName


{{board.boardTitle}}
Recipient: {{board.recipientEmail || 'nil'}}
Creator: {{board.creatorId.firstName || 'nil'}}
Created: {{board.createdAt | date:'shortDate'}}
Updated: {{board.updatedAt | date:'shortDate'}}
Looks like you haven't created any board yet. Create a board now!
Looks like you haven't created any board yet. Create a board now!
Reminder: {{reminder.eventTitle}}
{{reminder.eventDate | date:'shortDate'}}
Looks like you haven't created any reminder yet. Create a reminder now!


The OutputPort classes are designed to set the state (high or low) of a GPIO pin on the Raspberry Pi. In the Linux operating system there are two ways of accessing the GPIO pins. The first, called the SYSFS method, is the standard and approved Linux technique. During SYSFS accesses each GPIO is exposed as a file in the filesystem and the GPIO is manipulated as if it were a file. The second method, called Memory Mapped access, treats the Raspberry Pi's RAM memory as if it were a file and the GPIO state is manipulated as if it were a bit at an offset in a virtual file.
The major difference between the two techniques is that the SYSFS method is considerably slower than Memory Mapped access. For example, a maximum write frequency of about 1KHz is obtainable with SYSFS whereas something in the order of 2.4MHz (yes, mega Hertz) is obtainable with the Memory Mapped technique. SYSFS is the approved "Linux Way". However, if you need the speed, Memory Mapped access is the way to go.
The RPICSIO library provides classes for both SYSFS and Memory Mapped access. The classes can be differentiated by the corresponding FS
and
MM
appended to their names. The OutputPortFS class provides SYSFS access to the GPIO
and the OutputPortMM class provides Memory Mapped access.
When should you use SYSFS or Memory Mapped access? Well, in testing, both seemed pretty robust and trouble free. If you need a write frequency greater than about 1KHz you'll definitely want to use the OutputPortMM class - otherwise the OutputPortFS class will probably suffice. Both classes are used in exactly the same way and have exactly identical public members.
The example code below uses a GPIO value of 4 which is exposed as pin 7 on the header. In general, on the Raspberry Pi 2, these GPIOs are available for input or output by default. However it is possible to adjust the pinmux with the device tree to use header pins for alternate devices. If you are messing about with the Device Tree you will probably know what you have configured specific pins to use.
The GPIOs themselves can be either outputs or inputs. The act of creating an RPICSIO OutputPort class on a GPIO will configure it as an output.
Always be aware that the Raspbian Linux running on the Raspberry Pi is not a real-time operating system. This means, for example, although you might set up an OutputPort() object to write at 10000 times a second, the actual timing of some of the writes may vary (and there may be lengthy gaps) as the process is pre-emptively swapped in and out by the kernel.
Note that the output current of the Raspberry Pi is extremely limited. You can, for example, directly drive a light emitting diode (LED) with it. If you try to directly control too many LED's you will have effectively just shorted the output subsystem to ground which is not good for the output port. The LEDs will not light either since there is nowhere near enough current available. To interface with high current devices (basically anything other than another 3.3v high impedance device input) you need to set up some external circuitry. For example, there are many pages on the internet which describe the process of setting up a transistor so that a GPIO output can control a LED.
IMPORTANT NOTE: Before creating any RPICSIO Port class you will need to ensure that the RPICSIO Library knows which type of Raspberry Pi you are dealing with. This is done by executing a call (only once is necessary) like the one below somewhere in your code before you create any port.
RPICSIOConfig.Instance.RPIType = RPITypeEnum.RPITYPE_RPI2;
The code below illustrates how to use the OutputPortMM class to read the state of a GPIO pin and output that state to the console. You could use the SYSFS
version by replacing each OutputPortMM
with
an OutputPortFS
.
/// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= /// <summary> /// Produces a series of 1 sec pulses on a GPIO port. Memory mapped version /// /// NOTE: /// Be aware of the RPI output voltage and max output current. In general /// you cannot directly switch any meaningful output device. You have to /// run it through a transistor or some other current/voltage amplifier. /// /// STANDARD NOTE: /// Be aware that you have to tell RPICSIO what type of Pi you are using. This /// is done by issuing the call below somewhere before you open any port. It /// only needs to be done once (replace the '2' with a 3 or 0 as appropriate). /// /// RPICSIOConfig.Instance.RPIType = RPITypeEnum.RPITYPE_RPI2; /// /// SIMPLE Test Harness /// connect a wire to GPIO_4 (pin 7) through a led and a resistor to ground. /// /// Once you have done that the issue a call like /// outTest.SimplePulsePortMM(GpioEnum.GPIO_4); /// /// You should see the LED blink at 1Hz /// /// </summary> /// <param name="gpioID">The gpioID</param> /// <history> /// 01 Dec 16 Cynic - Originally written /// </history> public void SimplePulsePortMM(GpioEnum gpioID) { // open the port OutputPortMM outPort = new OutputPortMM(gpioID); // run until we have a keypress on the console while (Console.KeyAvailable == false) { // put the port low outPort.Write(true); // sleep for half a second Thread.Sleep(500); // put the port high outPort.Write(false); // sleep for half a second Thread.Sleep(500); } // close the port outPort.ClosePort(); outPort.Dispose(); }In the above code, the
gpioID
is passed in when the function was called. This value is a member of the
GpioEnum class
which lists all possible GPIO's which
can be present on the Raspberry Pi. The above code is called via a line which looks like:
SimplePulsePortMM(GpioEnum.GPIO_4);


Mauricio Pochettino: Tottenham sack manager after poor start to the Premier League season
by Sporting LifeTottenham have sacked Mauricio Pochettino less than six months after he took them to the Champions League final.
Pochettino, along with his coaching staff, has paid the price for a poor run of domestic form in 2019, bringing an end to a five-and-a-half-year spell at the club.
During that time he delivered four successive top-four finishes in the Premier League, which included two title challenges, a memorable run to the European Cup final last season and developed the likes of Harry Kane, Dele Alli, Son Heung-min and Christian Eriksen into top-class players.
He also had to contend with playing at Wembley for 18 months while Tottenham's new stadium was built and went through two transfer windows without signing anyone.
But chairman Daniel Levy grew impatient with a decline in form this calendar year as Spurs took only 23 points from their last 24 Premier League games.
They have won just three times this season and as well as a 7-2 humiliation against Bayern Munich in the Champions League last month, they were also beaten by League Two Colchester in the Carabao Cup.
Daniel Levy said on the club's official website: "We were extremely reluctant to make this change and it is not a decision the board have taken lightly, nor in haste.
"Regrettably domestic results at the end of last season and the beginning of this season have been extremely disappointing.
"It falls on the board to make the difficult decisions - this one made more so given the many memorable moments we have had with Mauricio and his coaching staff - but we do so in the club's best interests.
"Mauricio and his coaching staff will always be a part of our history. I have the utmost admiration for the manner in which he dealt with the difficult times away from a home ground whilst we built the new stadium and for the warmth and positivity he brought to us.
"I should like to thank him and his coaching staff for all they have contributed. They will always be welcome here.
"We have a talented squad. We need to re-energise and look to deliver a positive season for all of our supporters."
One of that squad, midfielder Dele Alli, paid tribute to Pochettino, posting a picture of the pair together on Twitter along with the message:
"I can't thank this man enough. He's taught me so much and I'm so grateful for everything he's done for me. Good luck and hope to see you again my friend."
Spurs say they will announce their new coaching staff "in due course", with former Manchester United and Chelsea manager Jose Mourinho an early favourite to take the reins.
The Portuguese is admired by Levy, who has tried to appoint him in the past, and Mourinho has always spoken positively about Spurs. He has been seen watching some of their games this season.
If Mourinho is the man to replace Pochettino, he may have to work under financial constraints that he is not used to.
While Spurs have competed at the top end of the Premier League for the last four seasons, they have not matched their rivals in the spending department.
They became the first ever Premier League side not to make a signing during the summer transfer window in 2018 and then followed that up with another blank window in January.
That Spurs were still able to compete at such a level is testament to the job Pochettino did as he delivered some of their best seasons in recent years with back-to-back title challenges and their highest league finish since 1963.
As a result he was a sought after man in European football, with Real Madrid, Chelsea and Manchester United all keen on taking him out of White Hart Lane.
Then last season he took the club further than they ever have been before in Europe when he masterminded a memorable run to the Champions League final, where they ultimately fell short against Liverpool.
Pochettino viewed the run to the Madrid final as the end of a chapter and warned of a "painful rebuild" this summer.
However, Spurs, whose transfers are controlled by Levy, were unable to move out a host of players who either wanted to leave or Pochettino wanted rid of.
Christian Eriksen, Toby Alderweireld and Jan Vertonghen all remained at the club, despite not signing new contracts, while they could not offload Danny Rose, Victor Wanyama or Serge Aurier.
That impacted arrivals in the summer and although Spurs broke their transfer record in signing Tanguy Ndombele, also adding Giovani Lo Celso and Ryan Sessegnon, Pochettino did not deem it enough.
The Argentinian complained regularly about an unsettled squad and results suffered as, with the same players, they looked a shadow of the side they used to be.
Pochettino was determined to complete the rebuild job and remained committed to the cause, but Levy had other ideas.
- Here, the PA news agency takes a look at his record at the helm.
Premier League
- Played 202 Won 113 Drawn 43 Lost 46
- Best finish: 2nd 2016/17
FA Cup
- Played 21 Won 12 Drawn 4 Lost 5
- Best finish: Semi-final 2016/17, 2017/18
League Cup
- Played 17 Won 9 Drawn 3 Lost 5
- Best finish: Final 2014/15
Champions League
- Played 31 Won 15 Drawn 6 Lost 10
- Best finish: Final 2018/19
- Europa League (inc qualifying)
- Played 22 Won 10 Drawn 6 Lost 6
- Best finish: Round of 16 2015/16
Overall
- Played 293 Won 159 Drawn 62 Lost 72


You must have Avro, Qpid, Boost, and OpenCV in order to build the C++ code.
You will need to link to the following libraries: avrocpp, qpidmessaging, opencv, and boost_thread
You must hava Avro and Qpid in order to build the Java code.
I have included a pom.xml which can be used with Maven to download the needed Java dependencies.
- C++
- Java