--- layout: post esbma_id: 3104 title: First NuGet package for SQLitePCL.raw date: 2014-05-23 12:00:00 keywords: sqlite ---
I have pushed up the first NuGet package for SQLitePCL.raw.
Hardly.
I gave this a version number of "0.1.0-alpha".
By including the -alpha part, I signal to NuGet that this is a pre-release package.
By using 0.1.0 as the version number, I signal to human beings that if you use this package, everything in your life will go wrong. Your dog will leave you for someone else. Your favorite TV show will get canceled.
This is the first NuGet package, not the last. I gotta start somewhere.
Well, actually, no, it shouldn't be that bad. Underpromise and overdeliver.
I have run my test suite against this package for all of the following environments:
Xamarin.iOS (simulator)
Xamarin.Android (emulator, API level 15)
WinRT 8.1 (x86, on Windows 8.1)
Windows Phone 8.0 (in the emulator)
Windows Phone 8.1 (RT flavor, in the emulator)
Windows Phone 8.1 (Silverlight flavor, in the emulator)
.NET 4.5 (on Windows 8.1)
On all the Windows platforms, the tests all pass. For iOS and Android, the only failures are the expected ones.
Because the version of SQLite which is preinstalled by Apple/Google is a bit old, and some of my tests are explicitly exercising newer SQLite features.
Yes, please.
Yes, please.
I think it likely that I may end up with more than one NuGet package for SQLitePCL.raw. Different packages for different use cases. So I need them to have different names.
This one is "basic" in the sense that it tries to be the package that most people will want to use. All of the other contemplated packages would have some sort of less-appealing word in the name, designed to scare people away. The label for the next one might be "broccoli".
The main tradeoff is the issue of where your app is getting SQLite itself. For [much] more detail on this, see my recent blog entry on The Multiple SQLite Problem.
Anyway, for this "basic" package, the iOS and Android assemblies use the SQLite library which is part of the mobile OS, and all of the Windows assemblies bundle a sqlite3.dll.
<IP_ADDRESS>
With:
SQLITE_ENABLE_FTS4
SQLITE_ENABLE_FTS3_PARENTHESIS
SQLITE_ENABLE_COLUMN_METADATA
No.
Direct link: https://www.nuget.org/packages/SQLitePCL.raw_basic
And, it comes up for me if I just search for "SQLitePCL" on NuGet.
Mine is the one called SQLitePCL.raw. The other one is by MSOpenTech.
And actually, my work is a [hopefully friendly] fork of theirs. Thanks to those folks (whoever they are) for a solid starting point. I am available to collaborate with them if there is interest.
See the README on GitHub for some info on this.
AFAIK, no. For me, this Just Works.
AFAIK, no. For me, this Just Works.
You need to compile for a specific CPU (x86, x64), not "Any CPU". In Visual Studio, right-click on your solution and choose Configuration Manager.
Not really. Just make sure you are building for x86 for the emulator or ARM for an actual device. In Visual Studio, right-click on your solution and choose Configuration Manager.
Two issues:
Build failure: You need to compile for a specific CPU (x86, x64, ARM), not "Any CPU". In Visual Studio, right-click on your solution and choose Configuration Manager.
Runtime failure, file not found: You need to add a reference to the Visual C++ 2013 Runtime. Hopefully a future version of this package will automatically add this reference for you.
I'm considering one that doesn't bundle any SQLite instances at all. For use with cases where somebody wants to have their own build of SQLite. Or for people who want to use the SQLite vsix SDK builds on visualstudiogallery.msdn.microsoft.com.
Android and iOS are in lib.
All the Windowsy ones are in build, because they're all CPU-specific, so they need more help than lib can provide. An MSBuild .targets file is used to inject the appropriate reference.


--- title: Roadmap ---
This is a limited overview of features that will be developed for future versions.
The team has committed to these features, but we cannot give a time frame for all subjects.
Currently SABnzbd's code is an uncomfortable mix of 8bit ASCII (codepages!) and Unicode.
This makes SABnzbd limited to handling texts in the Latin-1 character set (West European).
A number of active users have translated SABnzbd into Serbian, Russian, Polish1 and Chinese2.
but sadly we cannot handle these languages now. A full Unicode program can do this.
Converting SABnzbd to full Unicode is not difficult, however it is a time-consuming task.
The software has to be inspected from top to bottom to replace all 8bit ASCII handling
with Unicode handling. It probably takes a few hundred (small) changes which for the most
part must be done manually and another few dozen larger changes.
After that comes a lot of testing.
Also it's something can only be done with limited parallel development.
Status:
Implemented in release 1.0.0.
Slowly the number of 7z posts is growing on Usenet, so it's time SABnzbd starts supporting it.
Single 7z and multi-volume (7z.001, 7z.002 etc.) are supported.
Binaries for Windows and OSX will be included.
Other systems will need to have the "7za" tool available in the $PATH environment variable.
Recommended version: 9.20 or higher
Status:
Implemented in release 1.0.0.
SABnzbd will support Apple's Bonjour protocol to some extent.
Bonjour shows available network services without you having mess around with IP addresses and port numbers.
All Apple devices support it and will therefore be able to find your SABnzbd server easily.
The protocol is also known as ZeroConfig or Avahi on other platforms.
More info: Bonjour support
Status:
Implemented in release 1.0.0.
SABnzbd first verifies a job using just the smallest par2 file.
If that fails, it will download more par2 files and will try to repair the files.
On slower systems that are faster at downloading than repairing, this is not optimal.
par2-based repair is a very CPU intensive process and running a verify/repair cycle
twice instead of once makes the whole process ever slower.
So for people who have (1) a system and provider that allow rather fast downloading and
(2) are not restricted by download caps, we will make an option to download ALL par2 files.
If you have QuickCheck enabled a first (fast) verification will be done and if that fails
all available par2 files will be downloaded.
Without QuickCheck all par2 files will be downloaded even if not needed at all.
This allows you to chose the optimal situation, which will not be the same for everyone.
Status:
Implemented in release 1.0.0.
Currently SABnzbd works with primary and backup servers.
The "primary" group and the "backup" group have internally no priorities.
The plan is to drop the primary/backup system and use server priorities instead.
This means that SABnzbd will first ask the highest priority server (0) and when that
server doesn't have an article, the next lower priority server (1) will be asked.
This continues until all (enabled) servers have been tried.
Status:
Implemented in release 1.0.0.
Sometimes people have an NZB containing a whole season of shows and then miss the Sort capabilities.
The (optional) AutoSplit will split such an NZB into separate jobs.
This has two advantages: the first episode is completed sooner and the episodes are individually treated by Sort.
Caveats:


Editor’s note: This post was updated in June 2014 to reflect changes in Leaflet and update examples to new versions. Shortly after publishing this post, I discovered a different way to add GeoJSON to a Leaflet map that I like a lot better. You can read a blog post about that here.
Wednesday night, I was fortunate to attend the August meeting of PDX OSGEO, Portland’s meetup for open source geo shenanigans. I learned some new stuff, got to see a 3D-printed map tile (!!!!!), and got a chance to show off some of my recent work. The bulk of my contribution to the meeting was showing off a new technique for adding GeoJSON to a Leaflet map. This is an overview of what I talked about, with more detail and background.
Leaflet is one of the best mapping libraries out there; it’s certainly my favorite! But one thing that’s somewhat convoluted is adding and using GeoJSON layers inside your Leaflet map. The Leaflet API does have a constructor for adding a GeoJSON layer, which is great! But when you have a GeoJSON file with hundreds or thousands of features, it makes most sense to house that data in an external file. The challenge then comes when trying to use or reference that file when constructing your map.
Let’s look at an example. (This is the same example I used at the meeting.) A few months ago, my friend Liza tweeted at me:
@lyzidiamond You know maps, right? Is there a website that shows all the places in Portland where cupcakes can be purchased on map? #serious
— Liza J (@lizaface) May 17, 2013
And so, with all of my infinite free time*, I set off to construct a GeoJSON file of places to buy cupcakes in Portland. (Disclaimer: It’s not comprehensive and it’s not at all done, so expect it to change significantly and frequently.) But when I set off to create my map, I ran into the problem of referencing this file. How was I to assign the data to a variable such that I could use it in the L.geoJson constructor and add it as a layer to my map?
Typically when I have an issue like this, I turn to the best tech support at my disposal: Twitter.
Question: What is the best way to reference an external geojson file for use in a @LeafletJS map? Do I assign to a variable in the file?
— Lyzi Diamond (@lyzidiamond) August 4, 2013
The folks at Leaflet agreed that this would be the best way to go:
@lyzidiamond yep, it's the simplest way if you're including the GeoJSON statically on page load
— Leaflet (@LeafletJS) August 5, 2013
One of my Twitter friends, Sean Gillies, had another suggestion:
@lyzidiamond Fwiw, we use a typed link at ISAW: http://t.co/Ea2MzuchBV. If you don't want an extra request, you can use a data uri.
— Sean Gillies (@sgillies) August 4, 2013
I decided to play with this a little more, and it totally worked! And it worked well! So let’s talk about it.
GeoJSON: The Challenges
JSON and GeoJSON files are just JavaScript files. (JSON stands for JavaScript Object Notation; you can read more about JSON as a file type in a previous post, here.) As such, you can reference a JSON or GeoJSON file as a script, the same way you would for, say, including the Leaflet or jQuery libraries in your code.

Adding a link to a script allows you access to its content; it’s as if you copy-pasted the code in the script into your HTML file. Everything that is in that file is now effectively inside your HTML file and can be referenced and used freely. Adding the GeoJSON at the top does the same thing, but the GeoJSON data has no name. It’s not attached to a variable. It’s just features that can’t be referenced, containing geometry and properties that can’t be referenced. For the purposes of our map, it is essentially useless.
The obvious solution is to add a variable definition to our cupcakes.json file. That would mean that instead of this:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-122.65335738658904,
45.512083676585156
]
},
"properties": {
"name": "Hungry Heart Cupcakes",
"address": "1212 SE Hawthorne Boulevard",
"website": "http://www.hungryheartcupcakes.com",
"gluten free": "no",
"open1": "Monday - Sunday, 11am - 9pm"
}
},
...
we would have something like this:
var cupcakes = {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-122.65335738658904,
45.512083676585156
]
},
"properties": {
"name": "Hungry Heart Cupcakes",
"address": "1212 SE Hawthorne Boulevard",
"website": "http://www.hungryheartcupcakes.com",
"gluten free": "no",
"open1": "Monday - Sunday, 11am - 9pm"
}
},
...
This would totally work, but it would mean that our cupcakes.json file would no longer be a true JSON/GeoJSON file. If you tried to show the file in GitHub, for example, the points would not be interpreted and a map would not be rendered. Additionally, you don’t always have direct control over the GeoJSON file itself, especially if it’s a shared dataset or if it’s being returned from some other process. Adding a variable definition could also potentially mess up the work of anyone else trying to use your dataset, if it is indeed a dataset you constructed.
So what can you do? You can used a typed link/link relation and a little bit of jQuery. It’s really quite magical.
GeoJSON and Leaflet: The Solution
Let’s look at the code, and then talk through it. You can view a live version of this here.

<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.css" />

<link rel="points" type="application/json" href=".cupcakes/cupcakes.json">

The Head
Leaflet, as discussed previously, is a JavaScript mapping library with a lot of great functionality. (For more info on getting started with and using Leaflet, check out their Quick Start Tutorial.) In order to use it, we need to include both a Leaflet CSS file (for map styling) and the Leaflet JavaScript file, which is what the stylesheet on line 3 and the script on line 8 are all about. Lines 4 through 7 are CSS rules to give our map a height and ensure that it is actually full-screen on the page.
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.css" />
...

The other library we need to make this work is called jQuery. jQuery is a JavaScript library that can make developing way easier, as it takes some of the complicated parts of the language and synthesizes them into easy-to-use pieces. Line 9 includes jQuery in our map, which allows us to use its functionality.

The interesting part comes at Line 10. This is where we are including our JSON** file using a link relation.
<link rel="points" type="application/json" href=".cupcakes/cupcakes.json">
As defined on the WHATWG blog post to which I just linked, “Regular links simply point to another page. Link relations are a way to explain why you’re pointing to another page. They finish the sentence, ‘I’m pointing to this other page because…’”
Typcailly, link relations are used with a common set of keywords that have specific value to the browser. For example, our CSS stylesheet on line 3 has the link relation rel="stylesheet"
. This is the most common link relation, and every browser knows to download the data from the link before loading the page, as the relation tells it that the linked data contains important style information.
In our case, we are sort of hacking around that. We don’t necessarily want the browser to fetch the data on load or at any particular time. Indeed, we don’t want the browser to do anything with our GeoJSON file until we tell it to. Thus, we supply the link with a rel="points"
, which isn’t going to have any unintended consequences. (For more information on link relation keywords and what they do, check out this comprehensive list.)
The Body
Now let’s get into the body of our HTML. The first think you see on line 13 is an empty div with id “cupcake-map.” This is how Leaflet works: you create an empty div, and then write some JavaScript to fill it in. For us, this JavaScript starts on the very next line, as it’s a full-screen web map.

Our JavaScript is sandwiched between script
tags, which lets the browser know that anything inside of them is JavaScript and should be treated as such. (This was mirrored in lines 4 and 7 in the head, with style
tags.) The first thing we do in our script (line 15) is define a variable called cupcakeTiles, and use the Leaflet tileLayer constructor to define a map tile layer (more info on that at the link). This map uses custom tiles I made using MapBox, so this constructor links to those tiles. It also adds a property for maxZoom, ensuring that the map will not be zoomed in past zoom level 18. (For more information on web maps and zoom levels and how they work, check out this blog post.)
Line 19 is where the code gets interesting, as we employ jQuery’s getJSON method. This method takes three parameters: A URL of the location of the data, a plain object or string that gets sent with the request for the data, and a function to execute if the request for data is successful. The second parameter is optional, and you’ll see we don’t actually use it in our example.
$.getJSON($('link[rel="points"]').attr("href"), function(data) {
We pass $('link[rel="points"]').attr("href")
as our first parameter, which actually does translate to a URL. It finds a link by its rel value ($('link[rel="points"]')
), and then uses a getter method attr to pull the value of the href parameter in the link. This returns "./cupcakes.json"
, which is the location of our JSON file. (I should also note that our link has an attribute type
that is defined as 'application/json'
. This helps the browser understand that the data in the link is JSON and should be treated as such.)
The second parameter is actually a function to be executed upon successful retrieval of data, called a callback function. (If that blows your mind, take some time to read about asynchronous programming. It’s really fascinating.) We actually have housed all the rest of the map creation and layer adding functionality of our map inside of this callback function, which ensures that the map won’t draw unless the GeoJSON has successfully been retrieved.
Our callback function takes one parameter, data
, which represents the data that will be returned from the getJSON method. The first thing the function does is create a variable geojson
and use the Leaflet geoJson constructor to define a GeoJSON layer. The constructor takes two parameters: one for the actual GeoJSON that will make the layer (data
, in our case), and any options you wish to specify. One of these options is onEachFeature, which we use to attach popups to our GeoJSON As the value for onEachFeature
, we define a function that takes our data and adds a popup to each feature that shows whatever value is in that feature’s name
property.
$.getJSON($('link[rel="points"]').attr("href"), function(data) {
var geojson = L.geoJson(data, {
onEachFeature: function (feature, layer) {
layer.bindPopup(feature.properties.name);
}
});
...
After we have defined our GeoJSON layer, we have to actually create our map. This is done on line 23, where we create a variable map
and use the Leaflet map constructor to put our map in the "cupcake-map"
div. We then also add a method fitBounds() and pass it the extent of our GeoJSON data, which sets the bounds of our map to match the bounds of our data.
In the last two lines, we add our cupcakeTiles
layer to the map and we add our geojson layer to the map.
$.getJSON($('link[rel="points"]').attr("href"), function(data) {
var geojson = L.geoJson(data, {
onEachFeature: function (feature, layer) {
layer.bindPopup(feature.properties.name);
}
});
var map = L.map('cupcake-map').fitBounds(geojson.getBounds());
cupcakeTiles.addTo(map);
geojson.addTo(map);
});
We did it!
So what did we just do? We made a map with custom tiles that grabs GeoJSON from an external file without changing that file. Oh, and we added some popups to the GeoJSON features and set the bounds of our map to match the bounds of the data. Not too bad for 29 lines of code!
*This is a joke.
**JSON and GeoJSON are just JavaScript objects. A GeoJSON file can be saved as type .geojson, .json, or .js. All of them work.


{% extends "layout_nohead.html" %} {% block title %}Internal Server Error{% endblock %} {% block body %}
Something is broken on our end. Don't worry, it's most likely not your fault.
As you were {% endblock %}


Selecting this checkbox creates a new application if a matching application is not found on the Veracode Platform.
If the checkbox is not selected and a matching application is not found on the Veracode Platform, the Jenkins build will fail.


annotation class CustomizableShippingField
Constants that can be used to mark fields in this widget as optional or hidden. Some fields cannot be hidden.
<init> |
Constants that can be used to mark fields in this widget as optional or hidden. Some fields cannot be hidden. CustomizableShippingField() |
ADDRESS_LINE_ONE_FIELD |
const val ADDRESS_LINE_ONE_FIELD: String |
ADDRESS_LINE_TWO_FIELD |
const val ADDRESS_LINE_TWO_FIELD: String |
CITY_FIELD |
const val CITY_FIELD: String |
PHONE_FIELD |
const val PHONE_FIELD: String |
POSTAL_CODE_FIELD |
const val POSTAL_CODE_FIELD: String |
STATE_FIELD |
const val STATE_FIELD: String |


EasyDesign
David Hulme -<EMAIL_ADDRESS>Introduction
EasyDesign is a new startup company launching a service to enable customers such as charities and organisations to quickly produce well designed logos, posters and flyers based on user generated content.
The site will make money by taking a cut from sales of paid content, and through advertising.
User stories
1. Upload content
Content creators upload their created design templates to the site. They can then use the online editor to add placeholders over the top of their design where other users can add customised text. For example, an event poster template may have placeholders for the name, description, location and contact details.
If a creator's content receives good reviews and a set number of downloads, they become legible to upload paid content.
2. Browsing content
Customers can search and browse the site to discover the content they are looking for. They can search by content type (e.g. logos, posters, flyers), by creator name or by search term.
They can also visit the "What's hot" page to view designs with a high number of downloads and ratings.
3. Downloading content
When a customer finds a design they like, they can add content to the design placeholders and download a high quality version of the design to print/upload to their website.
4. Reviewing content
When a customer has downloaded a design, they gain permission to rate and comment on it. The system can then recommend additional content to customer based upon this information.
Feature table
| User Story | Item Management | Web Flow & Work Flow | Messaging & Communication | Rich Multimedia Content | Data Import & Export |
|---|---|---|---|---|---|
| 1 | Uploading content | Web forms | Viewing uploaded design | Uploading design | |
| 2 | Browsing content | Recommendations | Reading reviews | ||
| 3 | Downloading content | Web forms | Editing design | Downloading design | |
| 4 | Reviewing content | Posting reviews |
Database design
Users
- name
- password hash
Items
- user
- name
- content (BLOB)
- date
- price
- no. downloads
Ratings
- user
- item
- content
Comments
- user
- item
- content
- date


图标类型和预览
-
add
-
add-circle
-
add-circle-outline
-
albums
-
airplane
-
alarm
-
alert
-
appstore
-
aperture
-
american-football
-
analytics
-
apps
-
archive
-
arrow-down
-
arrow-dropdown-circl
-
arrow-back
-
arrow-dropleft
-
arrow-dropdown
-
arrow-dropleft-circl
-
arrow-dropup-circle
-
arrow-forward
-
arrow-dropright-circ
-
arrow-dropright
-
arrow-dropup
-
arrow-round-back
-
arrow-round-forward
-
arrow-up
-
attach
-
arrow-round-up
-
at
-
backspace
-
arrow-round-down
-
basketball
-
basket
-
barcode
-
baseball
-
beaker
-
battery-charging
-
battery-dead
-
bed
-
battery-full
-
beer
-
bluetooth
-
bicycle
-
body
-
boat
-
bonfire
-
book
-
bookmark
-
bookmarks
-
briefcase
-
bowtie
-
browsers
-
build
-
bulb
-
business
-
brush
-
cafe
-
bus
-
calendar
-
call
-
camera
-
car
-
cart
-
bug
-
card
-
chatboxes
-
calculator
-
cellular
-
chatbubbles
-
checkbox
-
cash
-
checkbox-outline
-
checkmark-circle
-
checkmark-circle-out
-
checkmark
-
clock
-
clipboard
-
close
-
close-circle
-
cloud
-
close-circle-outline
-
cloud-circle
-
cloud-done
-
cloud-download
-
cloud-upload
-
cloud-outline
-
code
-
cloudy
-
cloudy-night
-
code-download
-
code-working
-
cog
-
color-fill
-
color-palette
-
color-wand
-
color-filter
-
compass
-
contact
-
construct
-
contract
-
contacts
-
contrast
-
copy
-
create
-
desktop
-
crop
-
cut
-
cube
-
download
-
egg
-
done-all
-
document
-
easel
-
disc
-
exit
-
eye
-
expand
-
eye-off
-
fastforward
-
female
-
filing
-
flag
-
finger-print
-
fitness
-
flash
-
flame
-
flashlight
-
film
-
flash-off
-
flask
-
funnel
-
folder-open
-
folder
-
football
-
gift
-
flower
-
git-branch
-
git-commit
-
git-pull-request
-
git-network
-
git-compare
-
git-merge
-
glasses
-
globe
-
hammer
-
hand
-
grid
-
happy
-
heart
-
headset
-
heart-dislike
-
heart-empty
-
heart-half
-
help
-
help-buoy
-
help-circle
-
hourglass
-
image
-
home
-
help-circle-outline
-
ice-cream
-
images
-
information-circle
-
information-circle-o
-
information
-
infinite
-
jet
-
journal
-
key
-
leaf
-
keypad
-
laptop
-
link
-
list
-
list-box
-
lock
-
locate
-
log-in
-
magnet
-
mail
-
log-out
-
mail-open
-
mail-unread
-
male
-
man
-
medal
-
medical
-
medkit
-
map
-
menu
-
mic
-
microphone
-
mic-off
-
moon
-
more
-
musical-note
-
move
-
musical-notes
-
megaphone
-
my
-
navigate
-
notifications
-
notifications-off
-
notifications-outlin
-
nuclear
-
nutrition
-
options
-
open
-
outlet
-
paper
-
paper-plane
-
person
-
partly-sunny
-
pause
-
people
-
paw
-
phone-portrait
-
phone-landscape
-
photos
-
pin
-
pie
-
pint
-
pizza
-
planet
-
play
-
play-circle
-
person-add
-
pricetag
-
power
-
pulse
-
podium
-
print
-
pricetags
-
quote
-
qr-scanner
-
radio-button-off
-
radio-button-on
-
rainy
-
radio
-
refresh
-
redo
-
refresh-circle
-
remove
-
recording
-
remove-circle
-
resize
-
restaurant
-
remove-circle-outlin
-
return-left
-
reorder
-
return-right
-
reverse-camera
-
rewind
-
rocket
-
ribbon
-
rose
-
sad
-
repeat
-
save
-
school
-
search
-
send
-
settings
-
share-alt
-
share
-
shirt
-
shuffle
-
skip-forward
-
snow
-
skip-backward
-
square-outline
-
speedometer
-
square
-
star
-
star-half
-
star-outline
-
stopwatch
-
subway
-
stats
-
sunny
-
switch
-
swap
-
sync
-
tablet-landscape
-
tablet-portrait
-
tennisball
-
thermometer
-
text
-
thumbs-down
-
thunderstorm
-
thumbs-up
-
time
-
timer
-
today
-
top
-
train
-
transgender
-
trash
-
trending-down
-
trophy
-
tv
-
undo
-
umbrella
-
trending-up
-
unlock
-
videocam
-
volume-low
-
volume-high
-
volume-mute
-
volume-off
-
wallet
-
warning
-
walk
-
watch
-
water
-
wifi
-
wine
-
woman


Home
about us
click
Salmon Cookies
Add new location
The shope location
The minimum number of customers per hour.
The maximum number of customers per hour.
The average number of cookies purchased per customer.
ADD


Distances on dual-weighted directed graphs using priority-queue shortest paths. Weighted directed graphs have weights from A to B which may differ from those from B to A. Dual-weighted directed graphs have two sets of such weights. A canonical example is a street network to be used for routing in which routes are calculated by weighting distances according to the type of way and mode of transport, yet lengths of routes must be calculated from direct distances.
| Version: | 0.1.1 |
| Depends: | R (≥ 3.2.0) |
| Imports: | igraph, magrittr, methods, osmdata, rbenchmark, sp, Rcpp (≥ 0.12.6), RcppParallel |
| LinkingTo: | Rcpp, RcppParallel |
| Suggests: | devtools, ggplot2, igraphdata, knitr, purrr, RColorBrewer, rmarkdown, roxygen2, scales, testthat |
| Published: | 2018-10-24 |
| Author: | Mark Padgham [aut, cre], Andreas Petutschnig [aut], Robin Lovelace [ctb], Andrew Smith [ctb], Malcolm Morgan [ctb], Shane Saunders [cph] (Original author of included code for priority heaps) |
| Maintainer: | Mark Padgham <mark.padgham at email.com> |
| BugReports: | https://github.com/ATFutures/dodgr/issues |
| License: | GPL-3 |
| URL: | https://github.com/ATFutures/dodgr |
| NeedsCompilation: | yes |
| SystemRequirements: | C++11, GNU make |
| Citation: | dodgr citation info |
| Materials: | README NEWS |
| CRAN checks: | dodgr results |
| Reference manual: | dodgr.pdf |
| Vignettes: |
2 benchmark 1 dodgr |
| Package source: | dodgr_0.1.1.tar.gz |
| Windows binaries: | r-devel: dodgr_0.1.1.zip, r-release: dodgr_0.1.1.zip, r-oldrel: dodgr_0.1.1.zip |
| OS X binaries: | r-release: dodgr_0.1.1.tgz, r-oldrel: dodgr_0.1.1.tgz |
| Old sources: | dodgr archive |
| Reverse imports: | bikedata |
| Reverse suggests: | stplanr |
Please use the canonical form https://CRAN.R-project.org/package=dodgr to link to this page.


|
{% include ui/avatar.html person-id=10 %}
|
{{ site.data.people[10].full_name }} |
Initial commit |
May 6, 2019 |
|
{% include ui/avatar.html person-id=17 %}
|
{{ site.data.people[17].full_name }} |
Main structure |
April 22, 2019 |
|
{% include ui/avatar.html person-id=16 %}
|
{{ site.data.people[16].full_name }} |
Left sidebar adjustments |
April 15, 2019 |
|
{% include ui/avatar.html person-id=12 %}
|
{{ site.data.people[12].full_name }} |
Topbar dropdown style |
April 8, 2019 |
|
{% include ui/avatar.html person-id=19 %}
|
{{ site.data.people[19].full_name }} |
Fixes #625 |
April 9, 2019 |


ictdeploy package¶
Submodules¶
ictdeploy.base_config module¶
This file define basic configuration for RabbitMQ and Protobuf communication for the simulation nodes and the orchestrator nodes.
ictdeploy.core module¶
-
class
ictdeploy.core.
Simulator
[source]¶ Bases:
object
Main class to import for co-simulation running, it gathers all the useful methods. To be used as the following example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
sim = Sim() sim.edit.add_meta( name="BaseMeta", set_attrs=["a"], get_attrs=["b"] ) sim.edit.add_model( name="BaseModel", meta="BaseMeta", image="integrcity/ict-simple", wrapper=os.path.join("tests", "wrappers", "base_wrap.py"), command=None, files=[os.path.join("tests", "files_to_add", "empty_file_for_testing_purpose.txt")] ) sim.edit.add_node( name="Base0", model="BaseModel", init_values={"c": 0.5}, is_first=True ) sim.edit.add_node( name="Base1", model="BaseModel", init_values={"c": 0.25} ) sim.edit.add_link(get_node="Base0", get_attr="b", set_node="Base1", set_attr="a") sim.edit.add_link(get_node="Base1", get_attr="b", set_node="Base0", set_attr="a") grp0 = sim.create_group("Base0") grp1 = sim.create_group("Base1") sim.create_sequence(grp0, grp1) sim.create_steps([60] * 10) logs = sim.run_simulation(server=os.path.join("tests", "server.py")) assert len([l for l in self.get_logs(logs["orc"]) if "Simulation finished." in l]) == 1 sim.results.connect_to_results_db() res = sim.results.get_results_by_pattern("IN*Base0*")
-
RABBITMQ_ADMIN_PASSWORD
= 'admin'¶ Admin password for RabbitMQ
-
RABBITMQ_OBNL_PASSWORD
= 'obnl'¶ Default password for OBNL
-
RABBITMQ_TOOL_PASSWORD
= 'tool'¶ Tool password for RabbitMQ
-
RUN_JSON_FILE
= 'sequences_and_steps.json'¶ Default value for sequences and steps json file used by OBNL
-
SCE_JSON_FILE
= 'interaction_graph.json'¶ Default value for interaction graph json file used by OBNL
-
UNITS
= {'hours': 3600, 'minutes': 60, 'seconds': 1}¶ Dict used for time units conversion
-
create_group
(*nodes)[source]¶ Create a group for the simulation sequence verifying that none of the group’s nodes are directly connected
Parameters: nodes – some nodes names Returns: selected nodes names as a list
-
create_sequence
(*groups)[source]¶ Create the simulation’s sequence
Parameters: groups – some groups as list of nodes (created by self.create_group) Returns: nothing :)
-
create_steps
(steps, unit='seconds')[source]¶ Create the simulation’s steps
Parameters: - steps – list of simulation time-steps to run
- unit – time unit of steps (default: seconds)
Returns: nothing :)
-
deploy_aux
(client=None)[source]¶ Deploy the Redis (results database) and the RabbitMQ (communication) containers
Parameters: client – Docker client (default: from local environment) Returns: a dict containing the logs of the Redis and the RabbitMQ containers as generators
-
deploy_nodes
(client=None)[source]¶ Deploy and run the simulation nodes containers
Parameters: client – Docker client (default: from local environment) Returns: a dict containing the logs of the nodes containers as generators
-
deploy_orchestrator
(simulation='demotest', client=None, server='server.py')[source]¶ Deploy and configure the OBNL (orchestration) container
Parameters: - server – python script that run OBNL
- client – Docker client (default: from local environment)
- simulation –
Returns: logs of the OBNL container as generator
-
static
get_logs
()[source]¶ Allow to transform generator of logs to readable list of str
Parameters: logs – generator of logs from an other process Returns: a list of values given by the logs generator until “StopIteration”
-
run_simulation
(server, simulation='demotest', client=None)[source]¶ Run the simulation, deploying RabbitMQ, Redis, OBNL and the simulation nodes
Parameters: - simulation – name of the current simulation
- server – link to the file that will be running OBNL
- client – Docker client (default: from local environment)
Returns: a dict containing the logs of RabbitMQ, Redis, OBNL and the simulation nodes
-
ictdeploy.deployment module¶
-
class
ictdeploy.deployment.
SimNodesCreator
[source]¶ Bases:
object
Class for gathering methods allowing the deployment of simulation nodes
-
BASE_CONFIG
= {'exchanges': {'obnl.local.node.': {'binding': ['obnl.local.node.']}, 'obnl.simulation.node.': {'binding': ['obnl.simulation.node.scheduler']}}, 'name': '', 'queues': {'obnl.simulation.node.': 'on_simulation', 'obnl.local.node.': 'on_local', 'obnl.data.node.': 'on_data'}}¶ Base configuration for Protobuf
-
CLIENT
= <docker.client.DockerClient object>¶ Default docker client
-
CONFIG_FILE
= 'config_file.json'¶ Name of the Protobuf configuration file
-
HOST
= '172.17.01'¶ Default host address for host of Redis and RabbitMQ
-
INIT_VALUES_FILE
= 'init_values.json'¶ Default name for the initial values json file
-
TMP_FOLDER
= 'TMP_FOLDER'¶ Name of the temporary local folder
-
create_volume
(node_name, init_values, *files)[source]¶ Create the local folder that will be “synchronized” with / mounted into the container
Parameters: - node_name – well… the name of the node
- init_values – a dict mapping the initial values to the model’s parameters
- files – bunch of files that need to be added to the container for running the wrapper
Returns: the local path of the node’s folder
-
deploy_node
(node_name, node, node_folder, client)[source]¶ Deploy a simulation node, create and send command and mount the dedicated local volume into the container
Parameters: - node_name – well… the name of the node
- node – a dict mapping all the necessary information to run the node (image, wrapper, etc.)
- node_folder – the local path of the node’s folder
- client – the Docker client
Returns: a generator giving access to the node’s logs
-
ictdeploy.interactions module¶
-
class
ictdeploy.interactions.
GraphCreator
[source]¶ Bases:
object
Class for gathering methods allowing the creation of a co-simulation graph
-
add_link
(get_node, set_node, get_attr, set_attr, unit='unit')[source]¶ Create a link between two node, defining attribute to get (output) and to set (input)
Parameters: - get_node – name of the node to get a value from
- set_node – name of the node to set a value to
- get_attr – name of the get_node’s attribute to get
- set_attr – name of the set_node’s attribute to set
- unit – , default: “unit” (without unit)
Returns: nothing :)
-
add_meta
(name, set_attrs=[], get_attrs=[])[source]¶ Create a meta-model defining attributes to set (inputs) and to get (outputs)
Parameters: - name – string defining the name of the meta-model
- set_attrs – list of string, default: None
- get_attrs – list of string, default: None
Returns:
-
add_model
(name, meta, image, wrapper, command, files)[source]¶ Create a model based on the corresponding meta-model
Parameters: - name – string defining the name of the model
- meta – name of the corresponding meta-model
- image – docker image containing environments with all the model’s dependencies
- wrapper – wrapper file for the model
- command – optional command to add
- files – optional files to add into the model’s container
Returns:
-
add_multiple_links_between_two_nodes
(get_node, set_node, get_attrs, set_attrs, units=None)[source]¶ Create multiple links between two nodes, defining a list of attributes to get (outputs) and to set (inputs)
Parameters: - get_node – name of the node to get a value from
- set_node – name of the node to set a value to
- get_attrs – list of names of the get_node’s attribute to get
- set_attrs – list of names of the set_node’s attribute to set
- units – list of the corresponding attributes units
Returns: nothing :)
-
add_node
(name, model, init_values=None, is_first=False)[source]¶ Create a node based on the corresponding model
Parameters: - name – string defining the name of the node
- model – name of the corresponding model
- init_values – a dict mapping the initial values to the model’s parameters, default: None
- is_first – set to True if the node is in the first group of the simulation sequence, default: False
Returns: the node’s name
-
interaction_graph
¶ Returns: a dict containing the information about the interaction between the nodes and the co-simulation graph
-
links
¶ Returns: a pandas.DataFrame() containing all information about the links between the simulation nodes
-
nodes
¶ Returns: a pandas.DataFrame() containing all information about the simulation nodes
-
ictdeploy.results module¶
-
class
ictdeploy.results.
SimResultsGetter
[source]¶ Bases:
object
Class gathering methods allowing the collection of results
-
connect_to_results_db
(db=0, host='172.17.01', port=6379)[source]¶ Instantiate connection with Redis DB
Parameters: - db –
- host – host where the Redis container is running
- port – port where the Redis container is listening
Returns: nothing :)
-
get_results_by_pattern
(pattern, origin='2015-01-01')[source]¶ Allow to get results from a given name pattern
Parameters: - pattern – the pattern used to query the Redis DB
- origin – start date for the simulation time index, default: ‘2015-01-01’
Returns: a dict mapping results name with pandas.Series() of values
-
list_of_available_results
¶ Returns: a pandas.DataFrame() describing the available results by nodes
-
Module contents¶
This module facilitate the creation of multiple containers with specific environments.


Backtalk Class
A compilation of static functions. This system uses Overtime to display a time limit on the evaluation page.
Item Index
Methods
- copyTime static
- disableTimeControls static
- displayTime static
- enableTimeControls static
- handleResponse static
- init static
- requestVoteCount static
- resize static
Methods
copyTime
()
private
static
Sets the time based on the values in the input fields.
disableTimeControls
()
Boolean
private
static
Removes event listeners from the time controls number inputs.
Returns:
Boolean:
Whether the time controls were editable before they were disabled.
displayTime
(
private
static
-
event
Displays the time as digits.
Parameters:
-
event
Object- The event.
enableTimeControls
()
private
static
Adds event listeners to the time controls number inputs.
handleResponse
()
private
static
Handle xhr responses.
init
()
private
static
The Setup.
requestVoteCount
()
private
static
Request the current vote count.
resize
()
private
static
Dynamically resize the canvas.
Properties
container
HTMLDivElement
private
static
The main DOM container.
intervalId
Number
private
static
The interval id.
minutes
HTMLInputElement
private
static
The DOM container for displaying the minutes.
overtime
Overtime
private
static
The Overtime instance.
seconds
HTMLInputElement
private
static
The DOM container for displaying the seconds.
timeout
Number
private
static
The request timeout in ms.
Default: 5000
voteCount
Number
private
static
The current vote count.
votes
HTMLSpanElement
private
static
The DOM container for displaying the votes.
xhr
XMLHttpRequest
private
static
The ajax object.


|
TestCaser
Test Case Generator for Competitive Programmers
|
The Wrapper that holds the complete result about the running of the program as child process. More...
#include <result.hpp>
Public Member Functions | |
| Result (size_t runtimeMemory, size_t virtualMemory, size_t runtime, size_t allocatedTime, size_t allocatedMemory, ExitStatus exit_stats, int exit_c) | |
| Construct a new Result object. More... | |
| std::string | parse_exit_status (testcaser::integrator::ExitStatus status) |
| parses ExitStatus into a message More... | |
| void | print_result () |
| Formats and prints the result on stdout (console) More... | |
| double | get_execution_time () const |
| Get the execution time of program in seconds. More... | |
| size_t | get_virtual_memory_used () const |
| Get the virtual memory used by the program in KB. More... | |
| size_t | get_physical_memory_used () const |
| Get the physical memory used by the program in KB. More... | |
| int | get_exit_code () const |
| Get the exit code of the program. More... | |
| testcaser::integrator::ExitStatus | get_exit_status () const |
| Get the exit status of the program. More... | |
The Wrapper that holds the complete result about the running of the program as child process.
|
inline |
Construct a new Result object.
| runtimeMemory | The RAM Memory used. Also called Physical memory used by the process |
| virtualMemory | The Virtual Memory Used |
| runtime | The total execution time in micro-seconds |
| allocatedTime | The total allocated time in micro-seconds. |
| allocatedMemory | The total memory that was allocated to the program. Virtual Memory |
| exit_stats | The exit status. It is the final verdict of the program. |
| exit_c | the process returned exit code. |
|
inline |
Get the execution time of program in seconds.
|
inline |
Get the exit code of the program.
|
inline |
Get the exit status of the program.
|
inline |
Get the physical memory used by the program in KB.
|
inline |
Get the virtual memory used by the program in KB.
|
inline |
parses ExitStatus into a message
| status | the object to parse. |
|
inline |
Formats and prints the result on stdout (console)


{% extends 'django_knowledge/inner.html' %}
{% load i18n %}
{% load url from future %}
{% block title %}{% trans "Ask a Question" %}{% endblock title %}
{% block knowledge_widgets %}
{% trans "Ask a Question" %}
{% if form %}
{% include "django_knowledge/form.html" with submit_value="Submit this support request" submit_and="and we'll get back to you as soon as possible." %}
{% else %}


aaaaaaaaaaaa
bbbbbbbbbbbb
cccccccccccc
dddddddddddd
eeeeeeeeeeee
ffffffffffff
gggggggggggg
hhhhhhhhhhhh
iiiiiiiiiiii
jjjjjjjjjjjj
kkkkkkkkkkkk
llllllllllll
mmmmmmmmmmmm
nnnnnnnnnnnn
oooooooooooo
pppppppppppp
qqqqqqqqqqqq
rrrrrrrrrrrr
ssssssssssss
tttttttttttt
uuuuuuuuuuuu
vvvvvvvvvvvv
wwwwwwwwwwww
xxxxxxxxxxxx
yyyyyyyyyyyy
zzzzzzzzzzzz
aaaaaaaaaaaa
bbbbbbbbbbbb
cccccccccccc
dddddddddddd
eeeeeeeeeeee
ffffffffffff
111111111111
aaaaaaaaaaaa
bbbbbbbbbbbb
cccccccccccc
dddddddddddd
eeeeeeeeeeee
ffffffffffff
gggggggggggg
hhhhhhhhhhhh
iiiiiiiiiiii
jjjjjjjjjjjj
kkkkkkkkkkkk
llllllllllll
mmmmmmmmmmmm
nnnnnnnnnnnn
oooooooooooo
pppppppppppp
qqqqqqqqqqqq
rrrrrrrrrrrr
ssssssssssss
tttttttttttt
uuuuuuuuuuuu
vvvvvvvvvvvv
wwwwwwwwwwww
xxxxxxxxxxxx
yyyyyyyyyyyy
zzzzzzzzzzzz
aaaaaaaaaaaa
bbbbbbbbbbbb
cccccccccccc
dddddddddddd
eeeeeeeeeeee
ffffffffffff
222222222222


Before Change
sampler=sampler)
M = variant["layer_size"]
qf = NNQFunction(
observation_shape=env.active_observation_shape,
action_shape=env.action_space.shape,
hidden_layer_sizes=(M, M))
policy = StochasticNNPolicy(
observation_shape=env.active_observation_shape,
action_shape=env.action_space.shape,
After Change
def run_experiment(variant):
env = get_environment_from_variant(variant)
pool = SimpleReplayPool(
observation_space=env.observation_space,
action_space=env.action_space,
max_size=variant["max_pool_size"])
sampler = SimpleSampler(
max_path_length=variant["max_path_length"],
min_pool_size=variant["max_path_length"],
batch_size=variant["batch_size"])
base_kwargs = dict(
epoch_length=variant["epoch_length"],
n_epochs=variant["n_epochs"],
n_train_repeat=variant["n_train_repeat"],
eval_render=False,
eval_n_episodes=1,
sampler=sampler)
layer_size = variant["layer_size"]
Q = get_Q_function_from_variant(variant, env)
policy = StochasticNNPolicy(
observation_shape=env.active_observation_shape,
action_shape=env.action_space.shape,


| deprecated-se {tidyr} | R Documentation |
tidyr used to offer twin versions of each verb suffixed with an underscore. These versions had standard evaluation (SE) semantics: rather than taking arguments by code, like NSE verbs, they took arguments by value. Their purpose was to make it possible to program with tidyr. However, tidyr now uses tidy evaluation semantics. NSE verbs still capture their arguments, but you can now unquote parts of these arguments. This offers full programmability with NSE verbs. Thus, the underscored versions are now superfluous.
Unquoting triggers immediate evaluation of its operand and inlines
the result within the captured expression. This result can be a
value or an expression to be evaluated later with the rest of the
argument. See vignette("programming", "dplyr")
for more information.
complete_(data, cols, fill = list(), ...) drop_na_(data, vars) expand_(data, dots, ...) crossing_(x) nesting_(x) extract_( data, col, into, regex = "([[:alnum:]]+)", remove = TRUE, convert = FALSE, ... ) fill_(data, fill_cols, .direction = c("down", "up")) gather_( data, key_col, value_col, gather_cols, na.rm = FALSE, convert = FALSE, factor_key = FALSE ) nest_(...) separate_rows_(data, cols, sep = "[^[:alnum:].]+", convert = FALSE) separate_( data, col, into, sep = "[^[:alnum:]]+", remove = TRUE, convert = FALSE, extra = "warn", fill = "warn", ... ) spread_( data, key_col, value_col, fill = NA, convert = FALSE, drop = TRUE, sep = NULL ) unite_(data, col, from, sep = "_", remove = TRUE) unnest_(...)
data |
A data frame |
fill |
A named list that for each variable supplies a single value to
use instead of |
... |
Specification of columns to expand. Columns can be atomic vectors or lists.
When used with factors, When used with continuous variables, you may need to fill in values
that do not appear in the data: to do so use expressions like
|
vars, cols, col |
Name of columns. |
x |
For |
into |
Names of new variables to create as character vector.
Use |
regex |
a regular expression used to extract the desired values.
There should be one group (defined by |
remove |
If |
convert |
If NB: this will cause string |
fill_cols |
Character vector of column names. |
.direction |
Direction in which to fill missing values. Currently either "down" (the default), "up", "downup" (i.e. first down and then up) or "updown" (first up and then down). |
key_col, value_col |
Strings giving names of key and value cols. |
gather_cols |
Character vector giving column names to be gathered into pair of key-value columns. |
na.rm |
If |
factor_key |
If |
sep |
|
extra |
If
|
drop |
:
all list-columns are now preserved; If there are any that you
don't want in the output use |
from |
Names of existing columns as character vector |
expand_cols |
Character vector of column names to be expanded. |


all files
lib/RequestClient/
16.88%
Statements
40/237
0.77%
Branches
1/130
0%
Functions
0/21
18.32%
Lines
37/202
1 branch
Ignored
File
Statements
Branches
Functions
Lines
DDragonRequest.js
17.99%
25/139
1.32%
1/76
0%
0/12
19.66%
23/117
Request.js
15.31%
15/98
0%
0/54
0%
0/9
16.47%
14/85


Galvanize Delivers
Order Delivery
Menu
Pepperoni
$11.99
Add to Order
Sausage
$11.99
Add to Order
Alfredo
$11.99
Add to Order
Garlic Bread
$4.99
Add to Order
Order
Item
Price
Subtotal
$
Tax
$
Total
$
account_circle
First Name
phone
Telephone
home
Address
Place Your Order


| Session ID | Client | Address | Database | User | Total Requests | Command Info | Command Detail | Last Command On | Last Command Info | Last Command Detail | Last Execution Time | Total Working Time | Connected Since | Protocol | Client ID | Driver | Commands |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{conn.sessionId}} | {{ conn.connectionId }} | {{ conn.remoteAddress }} | {{ conn.db }} | {{ conn.user }} | {{ conn.totalRequests }} | {{ conn.commandInfo }} | {{ conn.commandDetail }} | {{ conn.lastCommandOn }} | {{ conn.lastCommandInfo }} | {{ conn.lastCommandDetail }} | {{ conn.lastExecutionTime }} | {{ conn.totalWorkingTime }} | {{ conn.connectedOn }} | {{ conn.protocol }} | {{ conn.clientId }} | {{ conn.driver }} | Interrupt Kill |


| Class and Description |
|---|
| AttachmentPoint
The AttachmentPoint class consists of various information for a device
such as the switch, the port number, and the time activated and last seen.
|
| Device
Concrete implementation of
IDevice . |
| DeviceIndex
An index that maps key fields of an entity to device keys
|
| Devices
This class manages information of devices such as device map,
device indices and so on.
|
| Devices.AttachmentPointComparator
AttachmentPointComparator class compares two attachment points
and returns the latest one.
|
| Devices.DeviceUpdate
A device update event to be dispatched
|
| Devices.DeviceUpdate.Change
The enum set of DeviceUpdate events
|
| Devices.RESTAttachmentPoint
Class to convert Attachment Point information into JSON format
|
| Entity
An entity on the network is a visible trace of a device that corresponds
to a packet received from a particular interface on the edge of a network,
with a particular VLAN tag, and a particular MAC address, along with any
other packet characteristics we might want to consider as helpful for
disambiguating devices.
|
| EntityToMultiDeviceIdIndex
An index that maps key fields of an entity to device keys, with multiple
device keys allowed per entity
|
| EntityToSingleDeviceIdIndex
An index that maps key fields of an entity uniquely to a device key
|
| IDevice
Represents an independent device on the network.
|
| IDeviceListener
Implementors of this interface can receive updates from the device manager about
the state of devices under its control.
|
| IDeviceService
The device manager allows interacting with devices on the network.
|
| IDeviceService.DeviceField
Fields used in devices for indexes and querying
|
| IEntityClass
Entities within an entity class are grouped into
Device objects
based on the IEntityClass , and the key fields specified by the entity
class. |
| IEntityClassifierService
A component that wishes to participate in entity classification needs to
implement the IEntityClassifier interface, and register with the Device
Manager as an entity classifier.
|
| IEntityClassListener
Implementors of this interface can receive updates from DeviceManager about
the changes entity Classes.
|
| IndexedEntity
This is a thin wrapper around
Entity that allows overriding
the behavior of Object.hashCode() and Object.equals(Object)
so that the keying behavior in a hash map can be changed dynamically. |
| OFMDefaultEntityClassifier.DefaultEntityClass
A default fixed entity class
|
| OFMDeviceManager
This class implements the device manager module.
|
| SwitchPort
A simple switch dpid/port pair
|
| SwitchPort.ErrorStatus |
| Class and Description |
|---|
| IDevice
Represents an independent device on the network.
|
| SwitchPort
A simple switch dpid/port pair
|
| Class and Description |
|---|
| IDevice
Represents an independent device on the network.
|
| IDeviceListener
Implementors of this interface can receive updates from the device manager about
the state of devices under its control.
|
| IDeviceService
The device manager allows interacting with devices on the network.
|
| SwitchPort
A simple switch dpid/port pair
|
| Class and Description |
|---|
| IDevice
Represents an independent device on the network.
|
| SwitchPort
A simple switch dpid/port pair
|


Topics
If your Ansible inventory fluctuates over time, with hosts spinning up and shutting down in response to business demands, the static inventory solutions described in Working with Inventory will not serve your needs. You may need to track hosts from multiple sources: cloud providers, LDAP, Cobbler, and/or enterprise CMDB systems.
Ansible integrates all of these options via a dynamic external inventory system. Ansible supports two ways to connect with external inventory: Inventory Plugins and inventory scripts.
Inventory plugins take advantage of the most recent updates to Ansible’s core code. We recommend plugins over scripts for dynamic inventory. You can write your own plugin to connect to additional dynamic inventory sources.
You can still use inventory scripts if you choose. When we implemented inventory plugins, we ensured backwards compatibility via the script inventory plugin. The examples below illustrate how to use inventory scripts.
If you’d like a GUI for handling dynamic inventory, the Ansible Tower inventory database syncs with all your dynamic inventory sources, provides web and REST access to the results, and offers a graphical inventory editor. With a database record of all of your hosts, you can correlate past event history and see which hosts have had failures on their last playbook runs.
Ansible integrates seamlessly with Cobbler, a Linux installation server originally written by Michael DeHaan and now led by James Cammarata, who works for Ansible.
While primarily used to kickoff OS installations and manage DHCP and DNS, Cobbler has a generic layer that can represent data for multiple configuration management systems (even at the same time) and serve as a ‘lightweight CMDB’.
To tie Ansible’s inventory to Cobbler, copy this script to /etc/ansible
and chmod +x
the file. Run cobblerd
any time you use Ansible and use the -i
command line option (e.g. -i /etc/ansible/cobbler.py
) to communicate with Cobbler using Cobbler’s XMLRPC API.
Add a cobbler.ini
file in /etc/ansible
so Ansible knows where the Cobbler server is and some cache improvements can be used. For example:
[cobbler]
# Set Cobbler's hostname or IP address
host = http://<IP_ADDRESS>/cobbler_api
# API calls to Cobbler can be slow. For this reason, we cache the results of an API
# call. Set this to the path you want cache files to be written to. Two files
# will be written to this directory:
# - ansible-cobbler.cache
# - ansible-cobbler.index
cache_path = /tmp
# The number of seconds a cache file is considered valid. After this many
# seconds, a new API call will be made, and the cache file will be updated.
cache_max_age = 900
First test the script by running /etc/ansible/cobbler.py
directly. You should see some JSON data output, but it may not have anything in it just yet.
Let’s explore what this does. In Cobbler, assume a scenario somewhat like the following:
cobbler profile add --name=webserver --distro=CentOS6-x86_64
cobbler profile edit --name=webserver --mgmt-classes="webserver" --ksmeta="a=2 b=3"
cobbler system edit --name=foo --dns-name="foo.example.com" --mgmt-classes="atlanta" --ksmeta="c=4"
cobbler system edit --name=bar --dns-name="bar.example.com" --mgmt-classes="atlanta" --ksmeta="c=5"
In the example above, the system ‘foo.example.com’ will be addressable by ansible directly, but will also be addressable when using the group names ‘webserver’ or ‘atlanta’. Since Ansible uses SSH, we’ll try to contact system foo over ‘foo.example.com’, only, never just ‘foo’. Similarly, if you try “ansible foo” it wouldn’t find the system... but “ansible ‘foo*’” would, because the system DNS name starts with ‘foo’.
The script doesn’t just provide host and group info. In addition, as a bonus, when the ‘setup’ module is run (which happens automatically when using playbooks), the variables ‘a’, ‘b’, and ‘c’ will all be auto-populated in the templates:
# file: /srv/motd.j2
Welcome, I am templated with a value of a={{ a }}, b={{ b }}, and c={{ c }}
Which could be executed just like this:
ansible webserver -m setup
ansible webserver -m template -a "src=/tmp/motd.j2 dest=/etc/motd"
Note
The name ‘webserver’ came from Cobbler, as did the variables for the config file. You can still pass in your own variables like normal in Ansible, but variables from the external inventory script will override any that have the same name.
So, with the template above (motd.j2
), this would result in the following data being written to /etc/motd
for system ‘foo’:
Welcome, I am templated with a value of a=2, b=3, and c=4
And on system ‘bar’ (bar.example.com):
Welcome, I am templated with a value of a=2, b=3, and c=5
And technically, though there is no major good reason to do it, this also works too:
ansible webserver -m shell -a "echo {{ a }}"
So in other words, you can use those variables in arguments/actions as well.
If you use Amazon Web Services EC2, maintaining an inventory file might not be the best approach, because hosts may come and go over time, be managed by external applications, or you might even be using AWS autoscaling. For this reason, you can use the EC2 external inventory script.
You can use this script in one of two ways. The easiest is to use Ansible’s -i
command line option and specify the path to the script after
marking it executable:
ansible -i ec2.py -u ubuntu us-east-1d -m ping
The second option is to copy the script to /etc/ansible/hosts and chmod +x it. You will also need to copy the ec2.ini file to /etc/ansible/ec2.ini. Then you can run ansible as you would normally.
To successfully make an API call to AWS, you will need to configure Boto (the Python interface to AWS). There are a variety of methods available, but the simplest is just to export two environment variables:
export AWS_ACCESS_KEY_ID='AK123'
export AWS_SECRET_ACCESS_KEY='abc123'
You can test the script by itself to make sure your config is correct:
cd contrib/inventory
./ec2.py --list
After a few moments, you should see your entire EC2 inventory across all regions in JSON.
If you use Boto profiles to manage multiple AWS accounts, you can pass --profile PROFILE
name to the ec2.py
script. An example profile might be:
[profile dev]
aws_access_key_id = <dev access key>
aws_secret_access_key = <dev secret key>
[profile prod]
aws_access_key_id = <prod access key>
aws_secret_access_key = <prod secret key>
You can then run ec2.py --profile prod
to get the inventory for the prod account, although this option is not supported by ansible-playbook
.
You can also use the AWS_PROFILE
variable - for example: AWS_PROFILE=prod ansible-playbook -i ec2.py myplaybook.yml
Since each region requires its own API call, if you are only using a small set of regions, you can edit the ec2.ini
file and comment out the regions you are not using.
There are other config options in ec2.ini
, including cache control and destination variables. By default, the ec2.ini
file is configured for all Amazon cloud services, but you can comment out any features that aren’t applicable. For example, if you don’t have RDS
or elasticache
, you can set them to False
[ec2]
...
# To exclude RDS instances from the inventory, uncomment and set to False.
rds = False
# To exclude ElastiCache instances from the inventory, uncomment and set to False.
elasticache = False
...
At their heart, inventory files are simply a mapping from some name to a destination address. The default ec2.ini
settings are configured for running Ansible from outside EC2 (from your laptop for example) – and this is not the most efficient way to manage EC2.
If you are running Ansible from within EC2, internal DNS names and IP addresses may make more sense than public DNS names. In this case, you can modify the destination_variable
in ec2.ini
to be the private DNS name of an instance. This is particularly important when running Ansible within a private subnet inside a VPC, where the only way to access an instance is via its private IP address. For VPC instances, vpc_destination_variable in ec2.ini
provides a means of using which ever boto.ec2.instance variable makes the most sense for your use case.
The EC2 external inventory provides mappings to instances from several groups:
ec2
.i-00112233
i-a1b1c1d1
us-east-1
us-west-2
us-east-1a
us-east-1b
security_group_
. Currently, dashes (-) are also converted to underscores (_). You can change using the replace_dash_in_groups setting in ec2.ini (this has changed across several versions so check the ec2.ini for details).
e.g.
security_group_default
security_group_webservers
security_group_Pete_s_Fancy_Group
tag_KEY_VALUE
e.g.
tag_Name_Web
can be used as is
tag_Name_redis-master-001
becomes tag_Name_redis_master_001
tag_aws_cloudformation_logical-id_WebServerGroup
becomes tag_aws_cloudformation_logical_id_WebServerGroup
When the Ansible is interacting with a specific server, the EC2 inventory script is called again with the --host HOST
option. This looks up the HOST in the index cache to get the instance ID, and then makes an API call to AWS to get information about that specific instance. It then makes information about that instance available as variables to your playbooks. Each variable is prefixed by ec2_
. Here are some of the variables available:
Both ec2_security_group_ids
and ec2_security_group_names
are comma-separated lists of all security groups. Each EC2 tag is a variable in the format ec2_tag_KEY
.
To see the complete list of variables available for an instance, run the script by itself:
cd contrib/inventory
./ec2.py --host ec2-12-12-12-12.compute-1.amazonaws.com
Note that the AWS inventory script will cache results to avoid repeated API calls, and this cache setting is configurable in ec2.ini. To
explicitly clear the cache, you can run the ec2.py script with the --refresh-cache
parameter:
./ec2.py --refresh-cache
If you use an OpenStack-based cloud, instead of manually maintaining your own inventory file, you can use the openstack_inventory.py
dynamic inventory to pull information about your compute instances directly from OpenStack.
You can download the latest version of the OpenStack inventory script here.
You can use the inventory script explicitly (by passing the -i openstack_inventory.py argument to Ansible) or implicitly (by placing the script at /etc/ansible/hosts).
Download the latest version of the OpenStack dynamic inventory script and make it executable:
wget https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/openstack_inventory.py
chmod +x openstack_inventory.py
Note
Do not name it openstack.py. This name will conflict with imports from openstacksdk.
Source an OpenStack RC file:
source openstack.rc
Note
An OpenStack RC file contains the environment variables required by the client tools to establish a connection with the cloud provider, such as the authentication URL, user name, password and region name. For more information on how to download, create or source an OpenStack RC file, please refer to Set environment variables using the OpenStack RC file.
You can confirm the file has been successfully sourced by running a simple command, such as nova list and ensuring it return no errors.
Note
The OpenStack command line clients are required to run the nova list command. For more information on how to install them, please refer to Install the OpenStack command-line clients.
You can test the OpenStack dynamic inventory script manually to confirm it is working as expected:
./openstack_inventory.py --list
After a few moments you should see some JSON output with information about your compute instances.
Once you confirm the dynamic inventory script is working as expected, you can tell Ansible to use the openstack_inventory.py script as an inventory file, as illustrated below:
ansible -i openstack_inventory.py all -m ping
Download the latest version of the OpenStack dynamic inventory script, make it executable and copy it to /etc/ansible/hosts:
wget https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/openstack_inventory.py
chmod +x openstack_inventory.py
sudo cp openstack_inventory.py /etc/ansible/hosts
Download the sample configuration file, modify it to suit your needs and copy it to /etc/ansible/openstack.yml:
wget https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/openstack.yml
vi openstack.yml
sudo cp openstack.yml /etc/ansible/
You can test the OpenStack dynamic inventory script manually to confirm it is working as expected:
/etc/ansible/hosts --list
After a few moments you should see some JSON output with information about your compute instances.
Note that the OpenStack dynamic inventory script will cache results to avoid repeated API calls. To explicitly clear the cache, you can run the openstack_inventory.py (or hosts) script with the --refresh
parameter:
./openstack_inventory.py --refresh --list
You can find all included inventory scripts in the contrib/inventory directory. General usage is similar across all inventory scripts. You can also write your own inventory script.
If the location given to -i
in Ansible is a directory (or as so configured in ansible.cfg
), Ansible can use multiple inventory sources
at the same time. When doing so, it is possible to mix both dynamic and statically managed inventory sources in the same ansible run. Instant
hybrid cloud!
In an inventory directory, executable files will be treated as dynamic inventory sources and most other files as static sources. Files which end with any of the following will be ignored:
~, .orig, .bak, .ini, .cfg, .retry, .pyc, .pyo
You can replace this list with your own selection by configuring an inventory_ignore_extensions
list in ansible.cfg, or setting the ANSIBLE_INVENTORY_IGNORE
environment variable. The value in either case should be a comma-separated list of patterns, as shown above.
Any group_vars
and host_vars
subdirectories in an inventory directory will be interpreted as expected, making inventory directories a powerful way to organize different sets of configurations. See Using multiple inventory sources for more information.
When defining groups of groups in the static inventory file, the child groups must also be defined in the static inventory file, or ansible will return an error. If you want to define a static group of dynamic child groups, define the dynamic groups as empty in the static inventory file. For example:
[tag_Name_staging_foo]
[tag_Name_staging_bar]
[staging:children]
tag_Name_staging_foo
tag_Name_staging_bar
See also


Hearts branded 'clueless' by former Hibs attacker in criticism of Ann Budge
by David GunnKris Commons accuses owner of 'making it up as she goes along'
Hearts are "clueless" in their hunt for a new manager, according to former Hibs attacker Kris Commons.
The Sky Sports pundit believes Ann Budge is "making it up as she goes along" as she seeks to find a replacement for manager Craig Levein and a sporting director.
The Hearts owner has previously stated she will take her time in appointing the next head coach as she wishes to fully evaluate all the candidates.
However, pressure is building on the board to make an appointment after Saturday's 3-0 thrashing at Kilmarnock under the stewardship of interim boss Austin MacPhee.
Commons insists Budge is "dragging her heels" over the decision.
He wrote in the Daily Mail: "Look at Spurs. Some of their fans would have gone to work and started a night-shift last week with Mauricio Pochettino in charge of their club. Then, by the time they got home the next morning, he'd been punted and replaced by Jose Mourinho.
"That's how clubs operate when they have a clear and definite plan of action...they act swiftly and make a change.
"Hearts, though, are a million miles from that. They're clueless and Ann Budge is basically making it up as she goes along. She's dragging her heels over appointing a new manager and a sporting director.
"Meanwhile, they are being hammered 3-0 at Kilmarnock. That's patently not good enough."


Agile
Scrum, Kanban, Code Review, Pair Programming and TDD
Build Systems
Make, CMake, Maven, Gradle, Waf, and Scons
Continuous Integration
Jenkins and Travis
Debugger
GDB, LLDB and Mozilla rr
Libraries
Boost, Protocol Buffers and LLVM
Methodologies
Design Patterns and Object Oriented Programming/Design
Static/Dynamic Analysis
Clang-sanitizer, PRQA Framework, Coverity, Perf and Valgrind
Tools
Cling, Clang-tidy, Clang-modernize, Clang-format, Ctags and Cscope
Unit Test
Google Test, Google Mock, Unity and FFF
Version Control System
Git, Subversion and Mercurial


Spain's Bautista Agut out of Davis Cup after father's death
Spain's Roberto Bautista Agut has withdrawn from the Davis Cup Finals after the death of his father on Thursday.
MADRID: Spain's Roberto Bautista Agut has withdrawn from the Davis Cup Finals after the death of his father on Thursday.
Bautista Agut played in Spain's victories over Russia and Croatia but left the team and returned to Castellon after the health of his father Joaquin deteriorated.
Bautista Agut, who reached this year's Wimbledon semi-finals, lost his mother suddenly in 2018.
Hosts Spain play Argentina on Friday at Madrid's La Caja Magica for a place in the semi-finals.
Feliciano Lopez, Marcel Granollers and Pablo Carreno Busta are Spain's other options to share the singles load with world number one Rafael Nadal.
(Reporting by Martyn Herman, editing by Ed Osmond)


WISP
Legend
Cafe
Gym
Cyber cafe
WISP
version: 0.0.8-beta
©Jimut Bahan Pal
Author : jimutbahanpal@yahoo.com


Trump Hails Conan The Dog As A ‘Tough Cookie’
In a surprise appearance Monday in the Rose Garden, President Trump honored Conan the dog, who he hailed last month for his involvement in the lethal raid of ISIS leader Abu Bakr al-Baghdadi.
A White House pool report Monday said that the “White House just told everyone to gather at the Palm Room doors for an ‘open press event.'” Nothing was publicly scheduled at that time.
The pool report added that White House deputy press secretary Judd Deere initially kept the details of the appearance vague, telling reporters: “remain as calm as possible” because “there is going to be an animal that comes out” for this event.
Appearing alongside Vice President Mike Pence and first lady Melania Trump, the President bragged about how Conan did “a fantastic job” and deserves a “certificate and an award we’ll put up in the White House.”
“This is a special time for Conan and we really appreciated it. I was told about the breed. I was told about Conan himself and Conan is a tough cookie and nobody is going to mess with this dog,” Trump said. “So what chance with Conan, I got to see how fast Conan can move. What chance would a strong man have, really strong fighter, what chance would this person have against Conan without the guns? What chance?”
Watch Trump’s remarks below:


The given String is :
Search character is :
The position of the character is :
The given minutes is :
The Seconds are :
List of Fruits are :
Finding Fruit in the list :
The position of the fruit is :
List of vehicles are :
List the vehicles starting with :
The vehicles are :
Original List :
Reverse of the list :


About Ping-Pong:
Let's Play!
Rules
Ping pong will count up to your number from one of the following exeptions:
Number divisible by 3 become "ping"
Number divisible by 5 become "pong"
Number divisible by 3 and 5 become "pingpong"
Enter number:
Check!


My first article
This is the description of my first article.
This is the content of my article.
This article is the first of the list. And it is in english language.
My file
// Some code example
var a = b < c;
var s = "<html>";
This is the content of my article.
This article is the first of the list. And it is in english language.
My file
// Some code example
var a = b < c;
var s = "<html>";
C'est le contenu du mon article.
Cet article est le second de la liste. Et il est en langue française.


who am I?
senior front-end engineer for AOL
work closely with the >Engadget team
choosing software engineering
Bachelor's in Computer ScienceEnglish??!!!!
Master's in Software Technology
Settled on web development
educational requirements
- Different paths: some people have degrees, and some do not
- Easiest road is to get a BS in CS
- skills you need
- a capacity for critical, logical thought
- detail-oriented, because spelling and punctuation really matters
- a capacity for being really, really frustrated and ability to hunt down bugs
- good writing skills for documenting your code
- skills you don't
- advanced calculus/algebra skills!!!
finding a job
- having an online portfolio (like github) is super helpful
- social networking: Twitter, meetups, word-of-mouth
typical day
mornings: usually emails, meetings, planning
afternoons: programming hours
evenings: more programming
hours
10am-6:30pm
pros: pretty flexible w/r/t working from home, taking time off
cons: working nights? weekends? holidays? sometimes! ಠ_ಠ
not to mention meetups, classes, conferences
advancement
- management
- architecture
- entrepreneurship
- research
skills
contrary to popular belief, people skills are super important
software is written collaboratively and teamwork is essential
contribution, tutoring, and mentoring are also very important
uniform
lol
more casual than traditional workplaces
employment outlook and competition
competitive, but plenty of jobs to fill too
ways to enter: internships, freelance, building a portfolio
not-so-awesome things
(i.e., challenges)
- staying current
- work/life balance
- managing deadlines
- doing my own projects
- focusing interests in a broad field
awesome things
- creating new things
- puzzle solving
- always learning
- exciting to be in a growing, evolving industry
- flexible work schedule
- good perks
- can work remotely and live almost anywhere
- YOU CAN START RIGHT NOW OMG
would I do it again?


%UseLnInsteadOfLog
%UseBracketForIntervals
xOne=RandomInteger{}((3,30)) ;
yOne=RandomInteger{}((3,30));
theProduct=xOne*yOne;
theSum=xOne+yOne;
1/(theSum>8)+ 1/ (yOne>xOne);
The sum of two numbers \(x\) and \(y\) is theSum
and their product is theProduct.
Given that \(y\geq x\), find the values of \(x\) and \(y\).
- Please enter your answer in the format \( x=a{\color{red}{\mathbf,}}y=b\).
- Do not forget to put the comma marked in red.
Answer:
(p=MatchesPattern{}( AlgebraAnswer, (x={{b}}, y={{c}}));
q=MatchesPattern{}( AlgebraAnswer, (y={{c}}, x={{b}}));
if (p==0 and q==0, 0,
( p; q;
(b==xOne and c==yOne)
)_3
)
)_3
if (
MatchesPattern{}( AlgebraAnswer, (x={{b}}, y={{c}}) )==0
and
MatchesPattern{}( AlgebraAnswer, (y={{c}}, x={{b}}) )==0
,
"
Your answer does not match the pattern \(x=a, y=b\).
Please do not forget the comma."
,
"");
(p=MatchesPattern{}( AlgebraAnswer, (x={{b}}, y={{c}}));
q=MatchesPattern{}( AlgebraAnswer, (y={{c}}, x={{b}}));
if (p==0 and q==0, "",
(p; q;
if (b+c==theSum, "",
"
Your sum \(x+y\) equals " +
ToString(b+c) + ", different from " + ToString(theSum) +""
)+
if (b*c==theProduct, "",
"
Your product \(x\cdot y\) equals " +
ToString(b*c) + ", different from " + ToString(theProduct) +""
)+
if (b>c, "
The problem requests that \(y\gt x\)","")
)_3
)
)_3
(x=xOne, y=yOne)


rotten > Library > Religion > Mormonism
Mormonism
The Church of Jesus Christ of Latter-Day Saints
Contrary to popular belief, the Mormon faith is not all that much weirder than any of its mainstream counterparts.
- Many religions have cornball rituals, for instance Catholicism, although none of theirs was ripped off from the Freemasons.
- Their founder, Joseph Smith, got lynched by an Illinois mob while he was in jail. But Jesus was murdered too. Then there's Michael Valentine Smith from Stranger in a Strange Land.
- Plenty of other faiths have secret teachings and ceremonies, such as the Unification Church, Aum Shinrikyo (a Japanese doomsday cult), and the World Church of the Creator.
- Practically every church has sent troops to shed innocent blood. So the Mountain Meadows Massacre was nothing compared to the Crusades. What's 128 dead settlers slain on orders of Brigham Young compared to hundreds of thousands because of the Pope?
- Mormonism is an edifice built atop another religion, Christianity. But Christianity builds on Judaism and Paganism, and Islam builds on both Christianity and Judaism.
- Islam practices polygamy.
Okay, none of the other Christian religions made multi-chick marriages an essential feature, but the LDS church gave that up in 1890. Publicly at least, and only after the federal government stepped in. The feds revoked the citizenship of every polygamous Mormon, disincorporated their church, and began seizing its assets. Shortly thereafter the residing Prophet responded with a fresh revelation from Heaven, immediately reversing their five decades old implementation of the holy sacrament.
Incidentally, good chunks of the Book of Mormon (purported to have been written circa 400 AD) were lifted from the King James translation of the Bible (completed in 1611). Included in these plagiarisms are the errors made by KJV's translators. Explanations of this time warp are curious and unsatisfying. Furthermore, whichever Supreme Being wrote the Book of Mormon's pseudo-KJV verses possessed an inadequate understanding of how to use Jacobean noun cases.
The Mormons are the only mainstream church to engage in retroactive, posthumous baptisms, in order that ancestors may ascend to heaven. Among those so baptised were Adolf Hitler in 1993, Josef Stalin, and Vlad the Impaler. By 1997 a coverup of the most controversial baptisms occurred, accomplished imperfectly.
The Mormons were vilified by Sir Arthur Conan Doyle in his first Sherlock Holmes story, "A Study in Scarlet." It was also Mormon settlers who precipitated the war between Earth and Klendathu in the movie Starship Troopers.
Timeline
| 21 Sep 1823 |
Angel Moroni appears to Joseph Smith thrice, giving him the burial location to the box containing gold plates which are to become the Book of Mormon. |
| 1830 |
Book of Mormon published with funding by Martin Harris. |
| 1843 |
Kinderhook Plates found by Robert Wiley. |
| 6 Apr 1841 |
Foundation for the Temple at Nauvoo laid. |
| 1846 |
Mormons driven from Nauvoo. |
| Mar 1849 |
State of Deseret founded in Salt Lake City. |
| 1850 |
Utah Territory organized. |
| 29 Aug 1877 |
Brigham Young dies. |
| 19 Nov 1918 |
Joseph Fielding Smith, eldest son of Joseph Smith, dies |
Pornopolis |
Rotten |
Faces of Death |
Famous Nudes
|


{{site.bitherdownsoftname}}
Enterprise Version is Unavailable Temporarily. Please Install Bither App from App Store
App Store
{% include js.html %}


This contains all the objects necessary to process standard
data formats for chess games. Included are
PGN (Portable Game Notation),
FEN (Forsythe-Edwards Notation) and
SAN (Standard Algebraic Notation). Also included are different
type of annotation methods including NAG (Numerica Annotation Glyphs).


LE gene expressions stratify the risk of prostate cancer recurrence. The Kaplan–Meier survival curves for the indicated genes were produced with the R survival package using data from the TCGA PanCancer ( A) and MSKCC ( B) cohorts. Cutoff points for individual genes were obtained using the R Maxstat package. Statistical analyses were performed using logrank test.


14 (+1 Dex, +1 Cloak of Protection, +2 Staff of Magius)
23 (9d6 - 18)
30ft
(+4 proficiency bonus)
Str (0), Dex (+3), Con (0), Int (+11), Wis (+9), Cha (+4)
Arcana +8, History +8, Medicine +6, Religion +8
dagger, darts, slings, quarterstaffs, light crossbows
Passive Perception 11
Common, Elvish (Qualinesti), Dwarvish (Neidar)
Once per day when you finish a Short Rest, you can choose expended Spell Slots to recover. The Spell Slots can have a combined level that is equal to or less than half your wizard level (rounded up), and none of the slots can be 6th level or higher.
School of Transmutation
17
+9
14
Cantrips (4), 1st level [ ][ ][ ][ ],
2nd level [ ][ ][ ],
3rd level [ ][ ][ ],
4rd level [ ][ ][ ],
5th level [ ]
Beginning when you select this school at 2nd level, the gold and time you must spend to copy a transmutation spell into your spellbook is halved.
You can temporarily alter the physical properties o f one nonmagical object, changing it from one substance into another. You can transform wood, stone (but not a gemstone), iron, copper, or silver. 10 minutes/1 cubic foot. Duration 1h or concentration.
Starting at 6th level, you can spend 8 hours creating a transmuter’s stone that stores transmutation magic.
The staff of Magius can be wielded as a magic quarterstaff that grants a +2 bonus to attack and damage rolls. While you hold it, it provides a +2 bonus to armor class. The staff has 12 charges for the following properties. It regains 1d4+4 expended charges at night in the light of Solinari.
The Staff has hidden powers. DM should roll a d20. On a 18-20, a random effect occurs, rolled from the list below on 1d12. Attempt a DC 15 Intelligence (Arcana) check to master the effect.
1) Daylight (3 charges), 2) Darkness (2 charges), 3) Detect Magic (1 charge), 6) Magic Missile (1 charge), 8) Levitate (2 charges), 10) Dispel Magic (3 charges), 11) Invisibility (2 charges)
Spells already discovered: Feather Fall (1 charge) or Light (1 charge), Enlarge/Reduce (2 charges), Gust of Wind (2 charges), Knock (2 charges), Lightning Bolt (5th level varsion, 5 charges), Protection from Evil & Good (1 charge)
Burning Hands, Charm Person, Hellish Rebuke, Mage Armor, Thunderwave, Shield, Comprehend Languages, Magic Missile, Detect Magic,
Blur, Blindness/Deafness, Scorching Ray, Crown of Madness, Gust of Wind, Levitate, Invisibility, Arcane Lock, Enlarge/Reduce, Darkness, Knock,
Fireball, Fear, Lightning Bolt, Feign Death, Vampiric Touch, Water walk
Phantasmal Killer, Fire Shield, Wall of Fire
Dominate Person


Real time analytics for your favorite Instagram pages and hashtags
Trending: #deskinspiration, #cosplay, @mealmanifest
Comprehensive Results
Our instagram search is the most powerful search engine that is the most optimized to get you result. Results in under seconds will blow you away with how fast it is.
Profile Overview
Our instagram search is the most powerful search engine that is the most optimized to get you result. Results in under seconds will blow you away with how fast it is.
Statistics
Our instagram search is the most powerful search engine that is the most optimized to get you result. Results in under seconds will blow you away with how fast it is.
View Posts
Our instagram search is the most powerful search engine that is the most optimized to get you result. Results in under seconds will blow you away with how fast it is.
Our instagram search is the most powerful search engine that is the most optimized to get you result. Results in under seconds will blow you away with how fast it is.
Our instagram search is the most powerful search engine that is the most optimized to get you result. Results in under seconds will blow you away with how fast it is.
Our instagram search is the most powerful search engine that is the most optimized to get you result. Results in under seconds will blow you away with how fast it is.


chalk = require 'chalk'
nodemailer = require 'nodemailer'
Require our dependencies, chalk and nodemailer.
chalk = require 'chalk'
nodemailer = require 'nodemailer'
Create a function, sms
, that takes auth
, recipients
, subject
, and
text
as parameters.
sms = (auth, recipients, subject, body) ->
@auth = auth
@recipients = recipients
@subject = String subject
@body = String body
Create a message object with the given parameters that we’ll send after we’ve authenticated.
message =
from: @auth.user
to: @recipients
subject: @subject
text: @body
Create a new Nodemailer transport object for the Gmail service using @auth
.
transporter = nodemailer.createTransport {
service: 'Gmail'
auth: @auth
}
Attempt to send the message and output the result.
transporter.sendMail message, (error, info) ->
status = if error? then chalk.red "#{error.message}"
else chalk.green "Sent message(s). Got '#{info.response}' from server."
console.log chalk.white "sms: #{status}"
Export our function so the module can be required by other things.
module.exports = sms


Securty - Make Your Class Uncloneable
Java's object cloning mechanism lets the programmer make exact duplicates of objects that have already been instantiated in a running program. This can let an attacker manufacture new instances of classes you define, without executing any of your constructors. If your class is not cloneable, the attacker can define a subclass of your class and make the subclass implement java.lang.Clonea ble. This lets the attacker make new instances of your class by copying the memory images of existing objects. This is often an unacceptable way to make a new object.
Tip: If you want your class to be cloneable, you can protect yourself by defining a clone method and making it final. If you're relying on a non-final clone method in one of your super classes, then override the method to make it final or make your entire class final.
REFERENCE
Statically Scanning Java Code: Finding Security Vulnerabilities.
John Viega, Gary McGraw, Tom Mutdosch, and Edward W. Felten
IEEE SOFTWARE September/October 2000


A whole new look !
"New WR for Web Design HTML5% !"
Speed Demos Archives’ visual aspect has never changed since it‘s creation in 1999. With the new trends in website design, we figured it was time.
With the help of a professionnal web developer, we’ve redesigned the entire site in order to make it more attractive to the eye. You’ll find that it’s way more enjoyable to browse, unless you hate change, that is !


Last week I started looking into Scala, it’s one of those things that has been on my to-do list for a very long time and but never got to it until now. Looking back, I should have bumped it up the list a long time ago.
A couple of interesting patterns I’ve came across was the Cake and the Magnet pattern. I usually find it useful to relate new things to my old understanding in other technology stack, and being primarily a Java developer, here is a my short explanation with Java.
Cake Pattern Explained
This ‘Cake Pattern’ is a random name (IMO) of what Java developer normally called ‘best practice dependency injection (DI)’ with Spring. Many of you here have probably been doing this for a very long time already in the Java/Spring world. Basically it means ‘one should only inject via interface, not concrete class’.
Dependency injection
Imagine if I have a service that needs to do some data operation, normally we’d create a ‘Service’ class with a ‘DAO’ member – where ‘DAO’ is an interface. At runtime, we’d inject what DAO implementation we want, eg. SqlDao or CloudantDao for example.
MyService –(uses)–> GenericDAO interface**
Here in Scala a ‘trait’ act like a plain old Java interface or contain implementation (like Java 8 ‘default’ method on interface), so we use it to declare both interface and implementation:
SqlDao –(implements)–> GenericDAO interface
CloudantDao –(implements)–> GenericDAO interface
Then at when you need to run the code, just inject whichever implementation you want into the service
MyService –(uses)–> GenericDAO interface (with SqlDao implementation injected)
or
MyService –(uses)–> GenericDAO interface (with CloudantDao implementation injected)
Scala Cake Pattern Example
(github)
Here is a little demo program to show this DI concept.
package com.example
object MyCake extends App {
// This is an 'interface'
trait GenericDao {
def Imp: String
}
// This is like implementing interface with default in Java8 (An implementation)
trait SqlDao extends GenericDao {
def Imp: String = "SQL Implementation"
}
// This is like implementing interface with default in Java8 (An implementation)
trait CloudantDao extends GenericDao {
def Imp: String = "Cloudant Implementation"
}
trait MyServiceTrait {
// This relies on 'interface' instead of 'implementation' - it just normal Java/Spring best practice anyway.
dao: GenericDao => // Syntax for trait 'self type annotation', we really should just call it 'extending an interface'
println("My implementation is: " + dao.Imp)
}
val svc = new MyServiceTrait with CloudantDao // DI with Cloudant Impl
println("svc using Cloudant DI returns: " + svc.Imp)
val svc2 = new MyServiceTrait with SqlDao // DI with SQL Impl
println("svc2 using SQL DI returns: " + svc2.Imp)
}
Update: But wait – self type annotation is more like ‘inheritance’ than ‘composition’
After having a chat with a colleague – notice in the example above there is:
dao: GenericDao =>
In Java/Spring, DI is usually composition – but here we are doing DI via traits and the self type annotation is more like inheriting. Normally, in most example I saw, it’s named ‘this’ instead of ‘dao’ – I guess that make more sense if we are inheriting (injecting) multiple traits. See the updated example below multiple traits:
package com.example
object MyCake extends App {
// shared
trait AnotherTrait {
// Some method
}
trait GenericDao { // This is an 'interface'
def Imp: String
}
trait SqlDao extends GenericDao { // This is like implementing interface with default in Java8 (An implementation)
def Imp: String = "SQL Implementation"
}
trait CloudantDao extends GenericDao { // This is like implementing interface with default in Java8 (An implementation)
def Imp: String = "Cloudant Implementation"
}
trait MyServiceTrait {
// This relies on 'interface' instead of 'implementation' - it just normal Java/Spring best practice anyway.
this: GenericDao with AnotherTrait => // Syntax for trait 'self type annotation', we really should just call it 'extending an interface'
println("My implementation is: " + this.Imp)
}
// service customisation (inject stuff here)
val svc = new MyServiceTrait with CloudantDao with AnotherTrait
println("svc using Cloudant DI returns: " + svc.Imp)
val svc2 = new MyServiceTrait with SqlDao with AnotherTrait
println("svc2 using SQL DI returns: " + svc2.Imp)
}


--- layout: post status: publish published: true title: Catching XML Schema Errors with the PipelineTesting Library author: display_name: Tomas Restrepo login: tomasr email<EMAIL_ADDRESS>url: http://winterdom.com/ author_login: tomasr author_email<EMAIL_ADDRESS>author_url: http://winterdom.com/ wordpress_id: 825 wordpress_url: http://winterdom.com/2006/11/catchingxmlschemaerrorswiththepipelinetestinglibrary date: '2006-11-27 05:28:36 +0000' date_gmt: '2006-11-27 05:28:36 +0000' categories: - BizTalk tags: [] comments: [] ---
Gregory Van de Wiele, a fellow BizTalk MVP, wrote to me a couple of weeks ago with some good information on how to catch XML Schema errors thrown by the XML Disassembler Component in a BizTalk pipeline when using my BizTalk PipelineTesting library. Here's the scoop:
In order to find a real XML schema error, when using XMLDASM component for validating, you need to do this:
- Inside your test, catch type XmlDasmException
- You won’t find the real schema validation error using the Message or ExtendedDescription prop: both are empty
- GetArgument(0) does the trick. Alternatively you could call the GetErrorMessage(Exception) on the Utilities type in the Microsoft.Test.BizTalk.PipelineObjects
It took me quite some time because I somehow overlooked the private ‘arguments’ collections in the debugger. Maybe other people will make the same mistake.
Thanks for the tip, Gregory, I'm sure other people will find it useful! As soon as I find some free time, I'll update the PipelineTesting library with this and other suggestions Gregory passed on! If anyone has other suggestions or feature requests, now is the time for them :-)


Before Change
)
for _ in range(train_steps_per_iteration):
experience, _ = next(iterator)
train_loss = tf_agent.train(experience, train_step_counter=global_step)
time_acc += time.time() - start_time
if global_step.numpy() % log_interval == 0:
logging.info("step = %d, loss = %f", global_step.numpy(),
After Change
experience, _ = next(iterator)
return tf_agent.train(experience, train_step_counter=global_step)
if use_tf_functions:
train_step = common.function(train_step)
for _ in range(num_iterations):
start_time = time.time()
time_step, policy_state = collect_driver.run(
time_step=time_step,


First Name is required.
Last Name is required.
Email is required.
Username is required.
Username should be longer than 5 characters.
Password is required
Passwords must be between 6 and 12 characters.
Must contain one lower & uppercase letter, and one non-alpha character (a number or a symbol.)
Please confirm your password.
Passwords do not match.


glob — tells DocumentCSS to look in the styles folder and read all files with a css, less, scss or md extension. You can remove either less and/or scss depending on what you're writing styles with.
dest — tells DocumentCSS to automatically create a styleguide folder to host the generated HTML pages.
parent — tells DocumentCSS to use the parent declaration styles from styles.md as the main landing page.
Run
To generate the Style Guide use open up the terminal and inside of your project's directory run:
> ./node_modules/.bin/documentjs
To view the generated site, using terminal navigate to the styleguide directory and use python to start a server:
> cd styleguide
> python -m SimpleHTTPServer
This only applies to Mac or a Linux machines
Open up a browser and navigate to http://localhost:8000 (if the number above is not 8000, use whatever number you see in your terminal instead). You should see the Living Style Guide with the documentation you just created!
Your generated Living Style Guide should look like this:
Ignoring Generated Files
Because DocumentJS generates a whole directory based on source files, you'll probably want to mark those files to be ignored by git (or whichever code revision manager you're using).
If you're using git, create a file named .gitignore at the root of your project (if it doesn't already exist.) Then add the following:
# DocumentJS generated files
styleguide
This will mark the whole folder as something to be ignored and your team can avoid merge conflicts on generated files.
This is a quick run through setting DocumentCSS and generating a simple page. For in-depth instructions, check out the Setup section.
Install
Install Node.js on your computer and create a
package.json
file in your project's root directory with something like:From the console or terminal, go to your project folder and use
npm
to install DocumentJS:File Structure
Create the files and folders that DocumentCSS will use to generate the docs.
styles
which will hold all of your CSS or Less files.styles.md
.Your file structure should look like this:
Inside the
styles.md
add:Configure
To generate a Living Style Guide, create a file called
documentjs.json
in the top level of your project.Your file structure should now look like this:
Inside of
documentjs.json
add:styles
folder and read all files with acss
,less
,scss
ormd
extension. You can remove either less and/or scss depending on what you're writing styles with.styleguide
folder to host the generated HTML pages.styles
fromstyles.md
as the main landing page.Run
To generate the Style Guide use open up the terminal and inside of your project's directory run:
To view the generated site, using terminal navigate to the styleguide directory and use python to start a server:
This only applies to Mac or a Linux machines
Open up a browser and navigate to http://localhost:8000 (if the number above is not 8000, use whatever number you see in your terminal instead). You should see the Living Style Guide with the documentation you just created!
Your generated Living Style Guide should look like this:
Ignoring Generated Files
Because DocumentJS generates a whole directory based on source files, you'll probably want to mark those files to be ignored by git (or whichever code revision manager you're using).
If you're using git, create a file named
.gitignore
at the root of your project (if it doesn't already exist.) Then add the following:This will mark the whole folder as something to be ignored and your team can avoid merge conflicts on generated files.
Continue to the next guide:
> Setting Up DocumentCSS (In-depth Guide).


×
Tyler's Cool Site
Home
Project One
Project Two
Project Three
Project Four
Project Five
Project Six
Male
Female
Next
Enter a baby name to vote for
Back
Male
Name
Votes
Female
Name
Votes


Inquiry into deaths of former soldier and his Nova Scotia family begins today
by THE CANADIAN PRESSHALIFAX -- An inquiry begins today in the case of Lionel Desmond, the Afghan war veteran who bought a rifle and killed his mother, wife and daughter before turning the weapon on himself in early 2017.
Lawyers, government officials and relatives will gather in a Guysborough, N.S., municipal building for the inquiry that also aims to determine what can be done to prevent similar tragedies.
Desmond, a 33-year-old retired corporal who lived in Upper Big Tracadie, N.S., had been diagnosed with PTSD after two violent tours in Afghanistan in 2007.
In the months after the murder-suicide, relatives repeatedly said Desmond had sought treatment for his mental illness and post-concussion disorder.
They said he never got the help he needed before Jan. 3, 2017, the day Desmond bought a gun and shot his wife Shanna, 31, their 10-year-daughter Aaliyah, his mother Brenda, 52, and himself.
A lawyer representing Desmond's sister says the procedings will begin with opening statements from the commissioner overseeing the inquiry, provincial court Judge Warren Zimmer, and from various lawyers.
The first witness expected is Dr. Matt Bowes, Nova Scotia's chief medical examiner, who reviewed the deaths and recommended an inquiry be held under the province's Fatality Investigations Act.
The inquiry will investigate whether Desmond had access to mental health and domestic violence services and whether the providers he dealt with were trained to recognize domestic violence and occupational stress injuries.
It will also examine whether Desmond should have been able to buy a rifle.
Provincial officials will be asked if they faced restrictions when trying to access Desmond's federal health records.
Zimmer's eventual report will not contain any findings of legal responsibility.
This report by The Canadian Press was first published Nov. 18, 2019.


Brick Breaker
For Mobile Users Drag Finger
For Desktop Users Use the left and right arrow keys to move