Scott Clasen / @scottclasen / Heroku API Team
We run several production services based on Play! / Scala, since the days of
addSbtPlugin("play" % "sbt-plugin" % "2.0")
This talk summarizes some of the tooling and best practices we have developed.
Many of them also codified in this template app sclasen/cloudplay
Or this library sclasen/play-extras
we try to the extent possible to build Heroku on Heroku
we call this ongoing effort: ephemeralization
we try to the extent possible to build Heroku on Heroku
we call this ongoing effort: ephemeralization
all of our Play! services fall into this category
this talk touches on several of the concepts described in http://12factor.net/
we use some basic tooling whether an app is ephemeralized, or not
Procfile / .env
web: bin/web
continuous: bin/continuous
$ forego start web
// starts the web process, capture stdout
$ forego start
// start web and continuous processes, capture stdout on both
FOO=foooo
BAR=barrr
$ echo "foo: $FOO bar: $BAR"
foo: bar:
$ forego run echo "foo: $FOO bar: $BAR"
foo: foooo bar: barrr
heroku config:pull -o -a app-dev
//pull the config from app-dev and write it to your .env
heroku config:push -o -a app-dev
//write your .env to the config vars of the app
Pipelines!
Pipelines!
https://devcenter.heroku.com/articles/labs-pipelines
backed by a Play! service as a matter of fact.
Pipelines + Jenkins + Github Heroku and Hipchat plugins
mostly focused on integration testing
standard dev -> staging -> prod setup
dev + staging have app config + test config in their env
4 jobs per service
1: app-master-to-dev
triggered by a github webhook
heroku jenkins plugin: heroku push buildstep
build app and deploy to dev
4 jobs per service
2: app-test-dev
run integration tests from jenkins, hitting dev
heroku config:pull -o -a app-dev
overwrites .env file locally
foreman run play test
4 jobs per service
3: app-promote-dev-staging
heroku pipeline:promote -a app-dev
thats it!
4 jobs per service
4: app-test-staging
same pattern as dev
run integration tests from jenkins, hitting staging
heroku config:pull -o -a app-dev
overwrites .env file locally
foreman run play test
heroku pipeline:promote -a app-staging
thats it!
Batch/Background Processing
Evolutions/Migrations
Credentials Handling/Encryption
How to keep things as simple as possible?
-Dapplication.global FTW
You have all your models, services, logic
you have play akka etc
web: bin/cloudplay -Dapplication.global=Web
continuous: bin/cloudplay -Dapplication.global=Continuous
trait ProcessType extends GlobalSettings {
...
}
object Web extends ProcessType {
override def onStart(app: Application) = {
log.info("Starting ProcessType: Web")
start(app, "web")
}
}
object Continuous extends ProcessType {
override def onStart(app: Application) = {
log.info("Starting ProcessType: Continuous")
start(app, "continuous")
processes.ContinuousProcess.start()
}
}
Ok, great whats in this
processes.ContinuousProcess.start()
business?
Lets call it an 'actor batch process'
Run multiple instances, using postgres advisory locks where necessary.
Lets take a look at some code!
Evolutions/Migrations
Seldom mentioned Evolution features in play
-DapplyDownEvolutions.database=true
-Devolutions.useLocks=true
* locks require a db that supports
`select for update nowait`
Evolutions: provided by play
Migrations: code/sql you write
Hot Compatibility
So here’s the basic principle that allows you to avoid downtime:
any evolution or migration being deployed should be compatible with the code that is already running.
Hot Compatibility
In order to do so, you’ll usually split your deploy process in two steps:
Make the code compatible with the evolution/migration you need to run
Run the evolution, run the migration, and remove any code written specifically for it
How to write/run?
-Dapplication.global FTW again
object Migration extends ProcessType {
override def onStart(app: Application) = {
log.info("Starting ProcessType: Migration")
start(app, "migration")
processes.MigrationProcess.start()
}
}
//add this to procfile
migration: bin/cloudplay -Dapplication.global=Migration
Run the migration with: `heroku run migration`
Lets look at the code for
processes.MigrationProcess.start()
Credentials Handling/Encryption
Generally two types of credentials in an app.
User credentials/passwords that you dont need to know, only verify.
Other credentials that you need to know in unencrypted form.
User's Passwords
use bcrypt
or the util methods in sclasen/play-extras
which use bcrypt
User's Passwords
CredentialsService.hashPassword
CredentialsService.checkPasswordAgainstHash
Credentials you need in unencrypted form
database passwords, aws keys, api keys, etc
Credentials you need in unencrypted form
If an attacker has both your code and runtime config, you are basically hosed.
So, make it such that if the attacker has only one or the other, you are safe
Encrypting a credential
> sbt console //outputs omitted
scala> import com.heroku.play.api.libs.security._
scala> val secret = "the secret password"
scala> val secretKey = CredentialsService.generateKey
scala> val keyMaskThatGoesInYourCodebase = CredentialsService.generateKey
// add to application.conf secret.key.mask=keyMaskThatGoesInYourCodebase
scala> val maskedSecretKeyThatGoesInYourENV =
CredentialsService.maskKey(secretKey, keyMaskThatGoesInYourCodebase)
// add to env heroku config:set SECRET_KEY=maskedSecretKeyThatGoesInYourENV
scala> val encryptedSecretThatGoesInYourENV =
CredentialsService.doEncryptCredential(secret, secretKey)
// add to env heroku config:set SECRET=encryptedSecretThatGoesInYourENV
Decrypting a credential
CredentialsService.decryptCredential takes the names of 2 env vars and 1 property from applicaiton.conf
> forego run sbt console //outputs omitted
scala> import com.heroku.play.api.libs.security._
scala> val secret =
CredentialsService.decryptCredential("SECRET",
"SECRET_KEY",
"secret.key.mask")
* there is also a doDecryptCredential form for encrypted values that arent/cant be stored in the env.
Logs as Event Streams
Request-Ids
Splunk, Librato
Actor Based Logback Appender
Factor #11 from 12 Factors
At scale you want to optimize more for machine readability
We do this at heroku with `logfmt`
Factor #11 from 12 Factors
At scale you want to optimize more for machine readability
We do this at heroku with `logfmt`
logfmt http://godoc.org/github.com/kr/logfmt
ident_byte = any byte greater than ' ', excluding '=' and '"'
string_byte = any byte excluding '"' and '\'
garbage = !ident_byte
ident = ident_byte, { ident byte }
key = ident
value = ident | '"', { string_byte | '\', '"' }, '"'
pair = key, '=', value | key, '=' | key
message = { garbage, pair }, garbage
//LOGFMT
foo=bar a=14 baz="hello kitty" cool%story=bro f %^asdf
//parsed to json
{ "foo": "bar", "a": 14, "baz": "hello kitty",
"cool%story": "bro", "f": true, "%^asdf": true }
Which is easier to process?
ERROR user<EMAIL_ADDRESS>is over the account-rate-limit
error app=an-app at=over-account-limit<EMAIL_ADDRESS>https://metrics.librato.com/share/dashboards/k4b5bhm8
images from http://www.flickr.com/creativecommons/by-2.0/


Security
| Total Blocks | Attack Details | Hacker's IP | Attacked URL | SharkBlock | Actions |
|---|---|---|---|---|---|
| 2019-09-22T16:13:27.000+0000 | Attack Details | <IP_ADDRESS> | /user.php?act=login | www.analogix.com | Choose |
| 2019-09-22T16:13:27.000+0000 | Attack Details | <IP_ADDRESS> | /user.php?act=login | www.analogix.com | Choose |
| 2019-09-22T16:13:27.000+0000 | Attack Details | <IP_ADDRESS> | /user.php?act=login | www.analogix.com | Choose |
| 2019-09-22T16:13:27.000+0000 | Attack Details | <IP_ADDRESS> | /user.php?act=login | www.analogix.com | Choose |
| 2019-09-22T16:13:27.000+0000 | Attack Details | <IP_ADDRESS> | /user.php?act=login | www.analogix.com | Choose |
| 2019-09-22T16:13:27.000+0000 | Attack Details | <IP_ADDRESS> | /user.php?act=login | www.analogix.com | Choose |
| Rule ID | Action Taken | IP Address | Location | Host | Date | Actions |
|---|---|---|---|---|---|---|
| bic | drop | <IP_ADDRESS> | NL | parentsoutloud.com | 2019-10-01T17:24:30Z |
Details
|
| bic | drop | <IP_ADDRESS> | NL | parentsoutloud.com | 2019-10-01T17:24:30Z |
Details
|
| bic | drop | <IP_ADDRESS> | NL | parentsoutloud.com | 2019-10-01T17:24:30Z |
Details
|
| bic | drop | <IP_ADDRESS> | NL | parentsoutloud.com | 2019-10-01T17:24:30Z |
Details
|
| bic | drop | <IP_ADDRESS> | NL | parentsoutloud.com | 2019-10-01T17:24:30Z |
Details
|
| bic | drop | <IP_ADDRESS> | NL | parentsoutloud.com | 2019-10-01T17:24:30Z |
Details
|
| bic | drop | <IP_ADDRESS> | NL | parentsoutloud.com | 2019-10-01T17:24:30Z |
Details
|
| bic | drop | <IP_ADDRESS> | NL | parentsoutloud.com | 2019-10-01T17:24:30Z |
Details
|
| bic | drop | <IP_ADDRESS> | NL | parentsoutloud.com | 2019-10-01T17:24:30Z |
Details
|
| bic | drop | <IP_ADDRESS> | NL | parentsoutloud.com | 2019-10-01T17:24:30Z |
Details
|
Important! Please note that Continent blocks supersedes any related Country blocks
This option allows you to whitelist trusted IP addresses (certain visitors, your website developer, etc) so that they will not be blocked by any of the SharkGate firewall protection. This basically gives them full unprotected access to your site so please only whitelist IP addresses that you are absolutely certain are safe visitors and have clean uninfected computers.
Separate IP addresses/ranges you want to whitelist with a comma (,) or new line (enter)
This option allows you to fully block access to your site from certain IP addresses. So block certain visitors you noticed are causing you issues. Or even block some competitor you would rather just keep away from copying or attacking your site. Once added that visitor will not be able to view or use any pages on your website.
Separate IP addresses/ranges you want to whitelist with a comma (,) or new line (enter)


Button Class
A button interface element.
Constructor
Button
()
Item Index
Methods
Methods
callback
-
[f]
Sets the calback to be invoked when the target value changes because of button interaction, or outside forces. The callback will receive one argument, the boolean value. Do not change the target object in this callback. You will cause an infinite loop as changing the value will retrigger the callback chain.
Parameters:
-
[f]
Function optionalthe callback function mentioned above
Returns:
Function _callback
passing no arguments triggers the return, this terminates the chain
Example:
button.callback(function(v){ console.log('value changed '+ v) })
// slider target changes to true
// outputs 'value changed true'
connect
-
o
-
k
Connects the button to a target object and a target key. When the button is clicked on, the value of the targetObject[target_key] is changed.
Call this funcition immediately before calling create()
Parameters:
-
o
Objectthe target object that holds the value the button will modify
-
k
Stringthe String name of the key/field of the object that holds the value the slider will modify
Example:
var foo = { bar: false }
var button = new GUId3.button()
// ...
slider.connect(foo,'bar')
slider.create(d3.select('svg'))
clicking on the button will change the value of foo
create
-
selection
Creates the button in the selection passed. It is advised that you pass in a selection of a group element that you can transform and style yourself.
Call this function after all the parameters are set, and connect()
has
been called. After you call create()
, you can then call setValue()
and
getValue()
without having any issues.
Parameters:
-
selection
ObjectA d3 selection.
Example:
var svg = d3.select('body').append('svg')
var g_button_parent = svg.append('g')
.attr('transform', 'translate(303,101)')
var foo = { bar: true }
var slider = new GUId3.button()
// ...
button.connect(foo,'bar')
button.create(g_slider_parent)
Creates a button at position x: 303 y: 101
, because the parent element
with a translate
with those coordinates was passed as the selection.
cssClass
-
_
Sets the CSS class of the parent group element of the button.
Parameters:
-
_
Stringthe CSS class mentioned above
Returns:
String _cssClass
passing no arguments triggers the return, this terminates the chain
Example:
button.cssClass('foo')
button.create(d3.select('svg'))
in your stylesheet
.foo .gui-button {
fill: red;
stroke: orange;
}
creates a button with red background and an orange stroke
cssClass
-
_
Sets the CSS id of the parent group element of the button.
Parameters:
-
_
Stringthe CSS id mentioned above
Returns:
String _cssId
passing no arguments triggers the return, this terminates the chain
Example:
button.cssId('foo')
button.create(d3.select('svg'))
in your stylesheet
#foo .gui-button {
fill: red;
stroke: orange;
}
creates a button with red background and an orange stroke
getValue
()
Gets the value of the target.
can only be called after calling create()
Returns:
Boolean
Example:
button.setValue(true)
console.log(button.getValue())
// outputs 'true'
height
-
_
Sets the visual height of the button. Sadly this property cannot be set using CSS.
Parameters:
-
_
Numberthe height of the button in pixels
Returns:
Number _height
passing no arguments triggers the return, this terminates the chain
Example:
var button = new GUId3.button()
button.height(44)
button.create(d3.select('svg'))
creates a button with a height of 44 pixels in the svg
labelOn
-
_
Sets the text of the label of the slider, when the target value is false
,
or the button is considered in the "off" state.
Parameters:
-
_
Stringthe text label of the slider when it is "on"
Returns:
String _labelOff
passing no arguments triggers the return, this terminates the chain
Example:
var slider = new GUId3.slider()
slider.labelOff('I am off =(')
slider.create(d3.select('svg'))
creates a slider with on label of "I am off =("
labelOn
-
_
Sets the text of the label of the slider, when the target value is true
,
or the button is considered in the "on" state.
Parameters:
-
_
Stringthe text label of the slider when it is "on"
Returns:
String _labelOn
passing no arguments triggers the return, this terminates the chain
Example:
var slider = new GUId3.slider()
slider.labelOn('press me to turn off')
slider.create(d3.select('svg'))
creates a slider with on label of "press me to turn off" when it is on
roundedRectanglePercent
-
_
Sets the roundedness of the rectangle of the button. A square button with
a roundedRectanglePercent
of 100, would be a circle. 10
is a good value
to start with.
Parameters:
-
_
Stringthe percent roundedness of the button rectangles
Returns:
String _roundedRectanglePercent
passing no arguments triggers the return, this terminates the chain
Example:
var button = new GUId3.button()
button.width(100).height(100)
button.roundedRectanglePercent(100)
button.create(d3.select('svg'))
creates button that appears to be a circle
setValue
-
v
Sets the value of the target object. Invokes the callback chain.
can only be called after calling create()
Parameters:
-
v
Booleanthe value mentioned above
Returns:
undefined
Example:
button.setValue(true)
// button target value updates
// button visual updates (indicator and text value label)
// button callback is invoked
type
-
_
Sets the type of the button. Wants 'toggle'
or 'momentary'
.
A momentary button triggers a change in the value to true when pressed, and triggers a value change to false when released. A toggle button is toggled between states when the button is pressed. Nothing happens to a toggle button when it is released.
Parameters:
-
_
Stringthe type of the slider, either
'toggle'
or 'momentary
'
Returns:
String _type
passing no arguments triggers the return, this terminates the chain
Example:
var button = new GUId3.button()
button.type('momentary')
button.create(d3.select('svg'))
creates a momentary button
width
-
_
Sets the visual width of the button. Sadly this property cannot be set using CSS.
Parameters:
-
_
Numberthe width of the button in pixels
Returns:
Number _height
passing no arguments triggers the return, this terminates the chain
Example:
var button = new GUId3.button()
button.width(44)
button.create(d3.select('svg'))
creates a button with a width of 44 pixels in the svg
Properties
_cssId
String
the CSS id
of the parent group element
set with Button/cssId
Default: empty string
_labelText
Number
The text lable of the button on each state.
set with labelOn and Button/labelOff
Default: `{ on: '1', off: '0' }`
_roundedRectanglePercent
Number
The percent roundedness of the rectangle. 100% round is a circle or ellipse.
set with roundedRectanglePercent
Default: '0'
g_root
Object
the parent group element that the _cssClass
and _cssId
are applied to
use this element to use d3 functions to access internal elements
Default: undefined
Example:
// fade in the text for your button
var button = new GUId3.button()
d3.select(button.g_root.node()).selectAll('text')
.attr('opacity', 0.0)
d3.select(button.g_root.node()).selectAll('text').transition()
.attr('opacity', 1.0)
self
Object
A reference to this
Default: this


--- layout: simple-page title: Exhibitions permalink: /exhibitions/current-exhibitions/ breadcrumb: Current Exhibitions --- {% assign event-details = site.data.event-list %}
{{events.details.date}}
{{events.details.time}}
{{events.details.place}}
{{events.details.short-description}}
Read More


North-Western and Western provinces of Zambia were reclassified as low-risk areas for yellow fever (YF). However, the current potential for YF transmission in these areas is unclear.
To determine the current potential risk of YF infection.
A cross sectional study was conducted in North-Western and Western provinces of Zambia.
Samples were tested for both YF virus-specific IgG and IgM antibodies by the ELISA and YF virus confirmation was done using Plaque Reduction Neutralization Test. The samples were also tested for IgG and IgM antibodies against other flaviviruses.
Out of the 3625 respondents who participated in the survey, 46.7% were males and 9.4% were aged less than 5 years. Overall, 58.1% of the participants slept under an impregnated insecticide-treated net and 20.6% reported indoor residual spraying of insecticides. A total of 616 (17.0%) samples were presumptive YF positive. The prevalence for YF was 0.3% for long-term infection and 0.2% for recent YF infection. None of the YF confirmed cases had received YF vaccine. Prevalence rates for other flaviviruses were 149 (4.1%) for Dengue, 370 (10.2%) for West Nile and 217 (6.0%) for Zika.
There is evidence of past and recent infection of YF in both provinces. Hence, they are at a low risk for YF infection. Yellow fever vaccination should be included in the EPI program in the two provinces and strengthen surveillance with laboratory confirmation.
Yellow fever (YF) is a viral hemorrhagic fever transmitted by mosquitoes carrying the YF virus.-[ 1 ] It affects an estimated 200,000 people globally and causes about 30,000 deaths annually. Case fatality rates in severe cases can exceed 50%. Estimates by WHO indicate that the true number of cases is close to 250 times the reported cases[ 2 ] because mild cases can go undetected as the signs and symptoms of YF are similar to those of viral hepatitis, malaria, leptospirosis, typhus, Ebola and other viral hemorrhagic fevers.
In a 10 country yellow-fever protection test survey conducted in Central and East Africa between 1937 and 1943, it was demonstrated that YF had occurred in Zambia, then Northern Rhodesia.[ 3 ] Robinson[ 4 ] reported that over 7% of more than 3000 blood samples from the population of the Balovale district in Kaonde-Lunda province now called North-Western province yielded positive results in protection tests. Many locations in the western part of Zambia in the Zambesi River basin were surveyed again in 1951-53; neutralizing antibodies were detected with a sero-prevalence up to 18%.[ 5 ] Western province, then Barotse Province and Balovale were included in the African endemic YF area. Zambia's potential for YF transmission is unclear. In 2010, North-Western and Western provinces of Zambia were designated as YF low-risk regions by a WHO Yellow Fever Technical Working Group[ 6 ] despite the fact that YF sero-prevalence studies were conducted six decades ago. In order to provide a more up-to-date sero-survey data, including results from tests for multiple flaviviruses, that will assist the WHO Yellow Fever Technical Working Group to confirm or refute the classification for Zambia, a study was conducted to determine the potential risk of YF infection in Western and North-Western provinces of Zambia.
The study was conducted in Western and North-Western provinces of Zambia. Western province with a population of 902,974 borders with Angola and had seven districts which were divided into 1902 SEAs.[ 7 ] It is the driest area of Zambia and located at 1119 m above sea level and latitude -15.0 and longitude 24.0. The province has mean minimum and maximum temperatures of 8.7 ° C and 34.2 ° C in June and October, respectively, and an annual rainfall of 740 mm.[ 8 9 ] Western province has two main agro-ecological zones: Major valleys as zone I and Kalahari sand plateau and Zambezi flood plains as zone II. Crop and livestock production as well as fishing were the main economic activities in the province.
North-Western province located at 1354 m above sea level, latitude −13.0 and longitude 25.0 has a population of 727,044 and borders with Angola on the western side and Democratic Republic of Congo on the northern side with population movement along the borders. It had six districts that were divided into 1178 Standard Enumeration Areas (SEAs). The province receives the highest rainfall, with annual rainfall of 1320 mm. The mean minimum temperature in June and mean maximum temperature in October is 6.8 ° C and 30.6 ° C, respectively.[ 7 10 11 ] North-Western province is located in Agro-ecological zone III which is the part of the Central African plateau. The area is suitable for cultivating rice, cassava, pineapples and bananas.[ 12 ]
This assessment was carried out among individuals aged 9 months or older. Any individual aged 9 months or older and who was a member of a sampled household and resident in the study site for at least seven days was eligible to participate in the survey. Individuals who received YF vaccination in the last 10 years to the survey were also eligible to participate in the survey.
Any person, who was either less than 9 months of age, or any person regardless of age, who resided in the study site for a period of less than seven days prior to the survey was excluded from the study. Determining the sero-prevalence in children under the age of 9 months raises the risk of false positive results as children under this age may still carry maternal antibodies from immunized or exposed mothers. We did not collect samples from non-human primates.
The sample size calculation was based on the assumption that the sero-prevalence was 7% based on the study conducted by Robinson.[ 4 ]
In estimating the sample size for persons aged 5 years or older, the following parameters were considered: A prevalence of 7%, desired precision or confidence interval (d) of ±3%, a design effect (DE) of 2 and an 80% response rate.
We aimed to recruit 700 male and 700 female participants in each province. Assuming an average of four persons aged 5 years or older in each household, a total of 12 households in each of the 30 cluster was to be recruited in the survey. The total number of persons aged 5 years or older that would be recruited from each province was 1400.
The sero-prevalence of children aged less than 5 years was about half that for older children, and in estimating the sample size for persons aged below 5 years, the following parameters were considered: A prevalence of 3.5%, desired precision or confidence interval (d) of ±3.4%, and a design effect (DE) of 2 and an 80% response rate. A total of 406 children aged below 5 years would be recruited for the survey.
The sample was drawn using a two-stage cluster sampling technique using probability proportional to size. A list of the standard enumeration areas (SEAs) in each province constituted the sampling frame. The line lists of the SEAs were provided by the Zambian Government's Central Statistics Office (CSO). The sampling was designed to achieve fairly good estimates at the provincial level of analysis, and not representing the subdivisions of the province.
Each study participant was assigned a study number and the corresponding blood sample was labeled with the same study number. The study number was linked to the laboratory result and the questionnaire.
Three to 5 ml of blood was collected from each participant by venepuncture and collected in an EDTA tube. The samples were transported to a field laboratory on ice, where plasma was separated into a labeled cryovial. At the close of the field work, the samples were transported to the University Teaching Hospital Virology Laboratory (UTHVL) for testing.
Each plasma sample was tested for both YF virus-specific IgG and IgM antibodies by the ELISA method described in the ‘WHO Manual For The Monitoring Of Yellow Fever Virus Infection’[ 1 ] at the UTHVL. All YF virus IgG-positive and IgM-positive specimens were referred to the Institute Pasteur in Dakar, Senegal which serves as the WHO-AFRO Regional Reference Laboratory for Yellow Fever. In Dakar, the specimens were subjected to repeat YF virus-specific IgG and IgM ELISA testing in order to reconfirm the primary results. They were also assessed for IgG and IgM antibodies against other flaviviruses known to cause hemorrhagic fever-like disease including dengue, Zika and West Nile viruses that are also known to elicit cross-reactive antibodies.
All samples giving a YF virus-specific antibody-positive result either in Lusaka or Dakar were tested for IgG and IgM for other flaviviruses including dengue, West Nile virus and Zika virus to rule out cross-reactivity. All positive YF samples were analyzed for YF virus neutralizing antibodies by Plaque Reduction Neutralization Testing (PRNT) using standard methods.[ 13 ] Those found to be positive through the PRNT were confirmed to be seropositive for YF IgM or IgG.
All IgM- and IgG-positive results in the Elisa testing were deemed presumptive positive.
Participants with Plaque reduction neutralization test (PRNT) titers ≥1:10 were considered as being YF seropositive, while those having PRNT titers ≥1:20 were considered to have sero-protective levels of antibodies against YFV either through natural infection or through vaccination.
Data were entered in an Epi-Info data entry screen that had consistency and range checks embedded in it. Laboratory results and field survey data were merged using a unique identifier. Further editing was conducted by running frequencies during the analysis stage. Epi data files were exported to SPSS for data analysis. The chi-square test was used to determine associations between qualitative factors. The cut-off point for statistical significance was set at the 5% level.
Ethical clearance was sought from the Tropical Diseases Research Centre Research Ethics Committee in Ndola, Zambia, and ethical standards were adhered to throughout this study. Informed consent was sought from study participants. Guardians provided assent for the participation of the persons under the consenting age. They were asked to read or have read to them, understand and sign/thumbprint an informed consent form. Responsible adults in the household were identified to give proxy consent on behalf of minors.
A total of 3625 respondents participated in the survey. Figure 1 show the distribution of households where the respondents were recruited from.
Distribution of households where participants were recruited
Table 1 shows the distributions of socioeconomic factors by province. Altogether 46.7% of the respondents were males and 9.4% were aged less than 5 years. Significantly more males than females had attained higher levels of education ( P < 0.001). In terms of materials used for roofs 61.0% had roofs made of grass. Significantly more females than males had walls of their houses made of mud, poles, grass or plastered with cement ( P = 0.001).
Distributions of socio-economic factors between provinces
Proportions of respondents reporting past medical history were similar between sexes, except that a significantly ( P = 0.001) higher proportion of females (33.7%) than males (28.3%) reported having had fever in the previous 2 weeks to the survey [ Table 2 ]. Overall 3.4% of the respondents reported having had jaundice in the previous 2 weeks to the survey, and 1.7% of the respondents reported bleeding from the nose, gums or gastro-intestinal track.
Table 3 shows history of travel, with significantly more males (11.9%) than females (6.3%) reporting having done so in a lifetime ( P < 0.001), with 3.8% of males and 1.8% of females having travelled to Congo DR ( P < 0.001); and 4.0% of males and 1.9% of females having travelled to Angola ( P < 0.001).
Past medical history by province
History of travel from the provinces to outside the country
Overall, 1.1% of the respondents (0.1% confirmed by card and 1.0% card not seen) had received YF vaccination [ Table 4 ].
History of vaccination against yellow fever by province
Significantly more females (61.0%) than males (56.5%) slept under a mosquito net the previous night. Overall, 20.6% of respondents reported their houses were sprayed in the previous 6 months to the survey [ Table 5 ].
Prevention practices against mosquitoes in provinces
The prevalence of IgG for YF (also confirmed YF positive by PRNT) was 0.3% and was similar between sexes (0.5% of males and 0.2% of females; P = 0.248) as shown in Table 6 . All the positive respondents were adults aged between 20 and 77 years with a mean (SD) age of 51 (18.8) years. Eight of the 12 positive respondents were males. In terms of their education status, 3 of the respondents had never been to school, 6 had attained primary level of education and 3 had attained secondary level of education. About a third of the respondents were farmers (34.0%).
YFV long-term infection by province
All the 12 respondents whose samples were positive for YF virus IgG and confirmed by PRNT had never received vaccination against YF. One positive respondent had previously travelled to Angola and another one to South Africa. The remaining 10 positive respondents had never travelled outside the country.
Out of the 12 YF virus IgG-positive and PRNT confirmed cases, four had history of fever in the previous 2 weeks to the survey, one had jaundice in the previous 2 weeks to the survey and none reported history of bleeding in nose, gums or gastro-intestinal track.
Six of the 12 YF virus IgG-positive cases reported sleeping under an ITN and 3 reported that indoor residual house spraying was conducted.
A total of six participants (three males and three females) were cases of recent YF infection, giving an overall prevalence of recent YF infection of 0.2% with no sex difference (0.2% of males and 0.1% of females; P = 0.427) as shown in Table 7 . The age ranged from 37 to 71 years with a mean (SD) age of 59 (18.0) years. Of the six confirmed cases, three had never been to school, one had attained primary level of education and two had attained secondary level of education. Three cases had travelled outside the country: One to South Africa and two to DR Congo. One case had fever and there were no cases of jaundice or bleeding from the nose, gums or gastro-intestinal track. All the six confirmed cases of recent YFV infection had never been vaccinated again YF virus.
YFV recent infection by province
YF virus was confirmed in both North-western and Western provinces with an overall prevalence of 0.3% (0.2% in North-western and 0.4% in Western provinces). All the cases of YF were adults aged 20 years or older. The YF virus was currently circulating.
The observed prevalence in the current study is far less than what was observed in 1943 of 7%in the then Balovale area that includes the present Western and North-western province[ 4 ] and 18% in 1951-1953,[ 5 ] indicating 95.7% or 98.3% decline in sero-prevalence, respectively. The difference in the rates may partly be due to differences in method of laboratory analysis of samples collected, the stages of the epidemic and due to malaria vector control efforts. Because recent infections were observed in the current study, the two provinces may be in the early stages of the YF epidemic. It is not clear at what stage of the epidemic the Balovale area was.
While in the current study all cases of YF were of persons aged between 20 and 77 years, cases in a study conducted in Senegal 2002 cases were aged 3 to 38 years and no case was aged 40 years or older.[ 14 ] Children are more affected than adults because adults acquire natural immunity in a YF endemic area. The difference in the age distribution of the cases between the studies may partly be explained by the fact that YF was endemic in Senegal and potentially epidemic in the current study.
Previous studies have documented the presence of Aedes aegypti (L), Ae. simpsoni (Theo.) and Ae. luteocephalus (Newst.) and Ae. Africanus.[ 4 ] The control of these mosquitoes in Zambia include indoor residual spraying (IRS) and use of insecticide treated Nets (ITNs). The coverages of IRS as well of ITNs have increased nationwide. For example, the coverage of at least one ITN or recent IRS has increased from 43%in 2006 to 74% in 2012.[ 15 ] High coverage rates may reduce human-vector contacts, and hence reduce the risk to viral infection. However, the coverage rate for IRS of 27.6% in North-western province and 14.3% in Western province; and that for ITNs of 56.9% in North-western province and 61.1% in Western province were lower than the national figures.
The strength of the study lies in its large sample size. The samples were drawn using a two-stage cluster sampling technique using probability proportional to size and, hence, the samples are representative of the provinces. Although recall bias may have been introduced in our study, we are not able to determine its magnitude and direction. However, we believed that bias was minimum and that our findings may not have been significantly affected.
There is evidence of past and recent infection of YF in both provinces. Furthermore, the provinces border with areas where YF is endemic or transitional. Based on the classification of risk of transmission of YF virus by Jentes et al.,[ 16 ] the two provinces are at a low risk for YF infection. YF vaccination should be included in the EPI program in the two provinces. There is a need to strengthen the integrated disease surveillance and response (IDSR) in both provinces, given that diseases such as YF and other flaviviruses (Dengue, West Nile and Zika) were not reported. Periodic follow-up risk assessment may be useful to document the risk in future complemented by strong surveillance.
We acknowledge the laboratory support received from the Virology Laboratory at University Teaching Hospital in Lusaka, Zambia and from the Institute de Pasteur in Dakar, Senegal. We are grateful to the interviewers for their dedicated work to successfully complete the survey. The survey could not have been successful without the cooperation of the participants. The survey was funded by the Ministry of Health [Zambia] and the World Health Organization. The support was of the form of payment of field allowances, procurement of laboratory reagents and transport.
Source of Support: Ministry of Health, Lusaka, Zambia; World Health Organization, AFRO Region.
Conflict of Interest: None declared.


Function: ObstacleAvoidanceController_initialize
| Prototype | void ObstacleAvoidanceController_initialize(void) |
| Description | Initialization entry point of generated code |
| Timing | Must be called exactly once |
| Arguments | None |
| Return value | None |
| Header file | ObstacleAvoidanceController.h |
Function: ObstacleAvoidanceController_step
| Prototype | void ObstacleAvoidanceController_step(void) |
| Description | Output entry point of generated code |
| Timing | Must be called periodically, every 0.01 seconds |
| Arguments | None |
| Return value | None |
| Header file | ObstacleAvoidanceController.h |
Function: ObstacleAvoidanceController_terminate
| Prototype | void ObstacleAvoidanceController_terminate(void) |
| Description | Termination entry point of generated code |
| Timing | Must be called exactly once |
| Arguments | None |
| Return value | None |
| Header file | ObstacleAvoidanceController.h |
| Block Name | Code Identifier | Data Type | Dimension |
|---|---|---|---|
| <S1>/Ref_pSteps | ObstacleAvoidanceController_U.Ref_pSteps | real_T | [15 4] |
| <S1>/SafeX | ObstacleAvoidanceController_U.SafeX | real_T | 1 |
| <S1>/SafeY | ObstacleAvoidanceController_U.SafeY | real_T | 1 |
| <S1>/EndX | ObstacleAvoidanceController_U.EndX | real_T | 1 |
| <S1>/EndY | ObstacleAvoidanceController_U.EndY | real_T | 1 |
| <S1>/EntryPoint | ObstacleAvoidanceController_U.EntryPoint | real_T | [1 4] |
| <S1>/DetPoint | ObstacleAvoidanceController_U.DetPoint | real_T | [1 4] |
| <S1>/detection | ObstacleAvoidanceController_U.detection | real_T | 1 |
| <S1>/Zone | ObstacleAvoidanceController_U.Zone | real_T | 1 |
| <S1>/Lw | ObstacleAvoidanceController_U.Lw | real_T | 1 |
| <S1>/Reference | ObstacleAvoidanceController_U.Reference | real_T | [1 4] |
| <S1>/State | ObstacleAvoidanceController_U.State | real_T | [4 1] |
| <S1>/u | ObstacleAvoidanceController_U.u | real_T | [2 1] |
| <S1>/param | ObstacleAvoidanceController_U.param | real_T | [1 2] |
| Block Name | Code Identifier | Data Type | Dimension |
|---|---|---|---|
| <S1>/ThrottleAndDelta | ObstacleAvoidanceController_Y.ThrottleAndDelta | real_T | [2] |
No interface/tunable parameters in model.
No data stores in the model; note that this report lists only data stores with non-auto storage class and global data stores


module SimpleCov
Helper that tries to find out what test suite is running (for SimpleCov.command_name)
Bundles the configuration options used for SimpleCov. All methods defined here are usable from SimpleCov directly. Please check out SimpleCov documentation for further info.
An array of SimpleCov SourceFile instances with additional collection helper methods for calculating coverage across them etc.
A ridiculously simple formatter for SimpleCov results.
Profiles are SimpleCov configuration procs that can be easily loaded using ::start :rails and defined using
SimpleCov.profiles.define :foo do # SimpleCov configuration here, same as in SimpleCov.configure end
Singleton that is responsible for caching, loading and merging SimpleCov::Results into a single result for coverage analysis based upon multiple test suites.
Constants
- VERSION
Attributes
Public Class Methods
Finds files that were to be tracked but were not loaded and initializes the line-by-line coverage to zero (if relevant) or nil (comments / whitespace etc).
# File lib/simplecov.rb, line 60 def add_not_loaded_files(result) if tracked_files result = result.dup Dir[tracked_files].each do |file| absolute = File.expand_path(file) result[absolute] ||= LinesClassifier.new.classify(File.foreach(absolute)) end end result end
Clear out the previously cached .result. Primarily useful in testing
# File lib/simplecov.rb, line 163 def clear_result @result = nil end
Applies the configured filters to the given array of SimpleCov::SourceFile items
# File lib/simplecov.rb, line 108 def filtered(files) result = files.clone filters.each do |filter| result = result.reject { |source_file| filter.matches?(source_file) } end SimpleCov::FileList.new result end
Applies the configured groups to the given array of SimpleCov::SourceFile items
# File lib/simplecov.rb, line 119 def grouped(files) grouped = {} grouped_files = [] groups.each do |name, filter| grouped[name] = SimpleCov::FileList.new(files.select { |source_file| filter.matches?(source_file) }) grouped_files += grouped[name] end if !groups.empty? && !(other_files = files.reject { |source_file| grouped_files.include?(source_file) }).empty? grouped["Ungrouped"] = SimpleCov::FileList.new(other_files) end grouped end
# File lib/simplecov.rb, line 139 def load_adapter(name) warn "#{Kernel.caller.first}: [DEPRECATION] #load_adapter is deprecated. Use #load_profile instead." load_profile(name) end
Applies the profile of given name on SimpleCov configuration
# File lib/simplecov.rb, line 135 def load_profile(name) profiles.load(name) end
Returns the result for the current coverage run, merging it across test suites from cache using SimpleCov::ResultMerger if use_merging is activated (default)
# File lib/simplecov.rb, line 77 def result return @result if result? # Collect our coverage result if running @result = SimpleCov::Result.new add_not_loaded_files(Coverage.result) end # If we're using merging of results, store the current result # first (if there is one), then merge the results and return those if use_merging SimpleCov::ResultMerger.store_result(@result) if result? @result = SimpleCov::ResultMerger.merged_result end @result ensure self.running = false end
Returns nil if the result has not been computed Otherwise, returns the result
# File lib/simplecov.rb, line 101 def result? defined?(@result) && @result end
Sets up SimpleCov to run against your project. You can optionally specify a profile to use as well as configuration with a block:
SimpleCov.start OR SimpleCov.start 'rails' # using rails profile OR SimpleCov.start do add_filter 'test' end OR SimpleCov.start 'rails' do add_filter 'test' end
Please check out the RDoc for SimpleCov::Configuration to find about available config options
# File lib/simplecov.rb, line 41 def start(profile = nil, &block) if SimpleCov.usable? load_profile(profile) if profile configure(&block) if block_given? @result = nil self.running = true self.pid = Process.pid Coverage.start else warn "WARNING: SimpleCov is activated, but you're not running Ruby 1.9+ - no coverage analysis will happen" warn "Starting with SimpleCov 1.0.0, even no-op compatibility with Ruby <= 1.8 will be entirely dropped." false end end
Checks whether we're on a proper version of Ruby (likely 1.9+) which provides coverage support
# File lib/simplecov.rb, line 148 def usable? return @usable if defined?(@usable) &&<EMAIL_ADDRESS>@usable = begin require "coverage" require "simplecov/jruby_fix" true rescue LoadError false end end


com.example.recommender
Classes
CollaborativeFiltering
MovieSearchResource
PopulateMovieDB
RecommenderResource
SuggestTree
SuggestTree.Entry
SuggestTree.Node


B.Tech. IV (CO) Semester –8 |
L |
T |
P |
C |
CO402 : DISTRIBUTED SYSTEMS |
3 |
1 |
2 |
5 |
(04 Hours) |
||||
Review of Networks, Operating Systems – Concurrent Programming - Characteristics & Properties of DSs – Taxonomy - Design goals – Transparency Issues |
||||
(02 Hours) |
||||
Basic Message Passing Model – The Client Server, Message Passing, Remote Procedure Call Model – RPC in conventional languages and in Java - The Distributed Objects – The Collaborative Application |
||||
(08 Hours) |
||||
Communication in Distributed Systems, Socket Programming -Client Server examples, I/O Multiplexing, Inetd Super Server – Secure Sockets – The SSL & the Java Secure Socket Extension |
||||
(08 Hours) |
||||
Processes, Threads - Code Migration; Software Agents – CSP Distributed Processes - Naming with Mobile Entities - Unreferenced Objects |
||||
(04 Hours) |
||||
Clock Synchronization – Logical clocks – Election Algorithms – Distributed Mutual Exclusion |
||||
(04 Hours) |
||||
Motivation, Object Replication, Consistency Models, Distribution Protocols – Consistency Protocols |
||||
(04 Hours) |
||||
Failure Models – Process Resilience – Reliable Client Server and Group Communications – Distributed Commit Protocols – Check-pointing and Recovery - Distributed Databases - Distributed Transactions |
||||
(04 Hours) |
||||
SUN NFS – Naming issues in DFS – Examples of contemporary DFSes – Comparisons |
||||
(04 Hours) |
||||
Distributed Object-based Systems – COM – CORBA – Architecture and Programming – Distributed Coordination based systems – TIB/RENDEZVOUS - JINI |
||||
(14 Hours) |
||||
(Total Contact Time: 42 Hours + 14 Hours = 56 Hours) |
||||
PRACTICALS |
||||
1). Implementation of the distributed applications/miniprojects using the TCP/IP Socket API as specified in the class e.g. a typical WWW server, a distributed Readers-Writers problem etc. |
||||
BOOKS RECOMMENDED |
||||
1). A S Tanenbaum, Martin Steen:“Distributed Systems: Principles and Paradigms”, 2/E,PHI, 2006 |


Possible paper enrolment matches found
See the possible matches linked under the Adjudication section.
GPID: {{ enrolment?.enrollee.gpid }}
PRIOR GPID: {{ enrolment?.enrollee.userProvidedGpid }}
Enrollee Absent: {{ absence.startTimestamp | formatDate }}{{absence.endTimestamp ? ' - ' + (absence.endTimestamp | formatDate) : ''}}


Thu May 8, 2008
The conference proper kicked off today with some excellent speakers across the board. There were a lot of presentations, so I’m going to keep it short and give you the gist of each one along with my personal “what’s hot” recommendation on something juicy, cool or just plain geeky that I gleaned from the talk. If the slides for the talk are available online, I’ll embed them as well.
So without further ado, here’s my take on the presentations that I attended.
Bringing the Video Revolution to Technical Communication
RJ Jacquez (Adobe)
RJ spoke about how we live in a highly visual world where videos are the primary content delivery method - especially for Gen Y.
What’s hot: Adobe Air
XML in the Wilderness
Joseph Gollner (Stilo International)
The importance of XML cannot be underestimated in the design of content technologies. In fact, web 2.0 is a consequence of the ‘openness’ of XML.
What’s hot: Douglas Engelbart and the Mother of All Demos
| View | Upload your own
Wikis are wonderful, or are they? A real-world story of using wikis for user information
Alan Porter (WebWorks)
Wiki evangelist Alan Porter showed how his company uses wikis for their intranet as well as for project management with clients.
What’s hot: Wiki mavens
| View | Upload your own
A comparison of three visual help authoring tools
Neil Perlin (Hyper/Word Services)
Neil reviewed three authoring tools: Captivate, Camtasia, and Mimic. Each tool possesses a different feature set, so it depends what you need them for.
What’s hot: My vote for the most user-friendly tool is Adobe’s Captivate.
| View | Upload your own
Putting everything back together again: delivering effective information products
Joseph Gollner (Stilo International)
With DITA and S1000D emphasizing small multi-purpose units, consideration must be given to what end configuration will most benefit the user.
What’s hot: DITA online community
| View | Upload your own
Meet the bloggers: Not nearly as disastrously funny as the movie
Anne Gentle, Darren Barefoot, Tom Johnson, Scott Abel, Aaron Davis, and Scott Nesbitt
This was a fun session where we got to meet some of the world’s most prolific technical-writing bloggers in person. You can find some of them in my blogroll.
What’s hot: Made to Stick


Update this file and use it as a description. The benefit of using HTML is that it can also include graphics and it is easy to update.


Hand of God is a cooperative VR endless runner. One player takes control of the runner and
the other player takes on the power of God.
The runner must collect different resources to fend off enemies and also for the God.
The God player uses the collected resources to create new platforms that connect the gaps
between other platforms. The God can also use the platform to catch the runner if they fall
and block enemies from reaching the runner.


--- layout: page title: FreeRADIUS 'man' pages subtitle: Documentation from the server subpage: true navorder: 200 hero: documentation subnav: - text: Programs link: '/radiusd/man/#programs' - text: Configuration Files link: '/radiusd/man/#files' - text: Modules link: '/radiusd/man/#modules' ---
Current best practice is to use certificate-based authentication rather than relying on passwords. However, other external tools such as openssl can generate high quality hashed and salted passwords if needed, e.g. "echo -n 'password' | openssl dgst -sha512". Although more modern hashes such as bcrypt, SSHA3, and SSHA2 are not supported by radcrypt, hashes are supported in the server by rlm_pap(5).
A hashed password can be validated by specifying -c or --check and passing hashed_password after plaintext_password on the command line. In this case hashed_password will be checked to see if it matches plaintext_password. If so "Password OK" will be printed and the exit status will be 1, otherwise "Password BAD" will be printed and exit status will be 0 (Note this is the opposite of a normal successful shell status).
$ radcrypt foobar HaX0xn7Qy650Q $ radcrypt -c foobar HaX0xn7Qy650Q Password OK


Compiling
Software Locations
-
Orca - http://www.orcaware.com/orca/pub/snapshots/ (writing of the snapshot-r531 was the latest)
-
RICHSe - http://puzzle.dl.sourceforge.net/sourceforge/setoolkit/RICHPse-3.4.1.pkg.gz
Setting up the build environment
- Make sure the following packages are installed to a Solaris 10 env
SUNWbtool,
SUNWsprot,
SUNWtoo,
SUNWcpp,
SUNWhea,
SUNWarc,
SUNWlibm,
SUNWlibms,
SUNWdfbh,
SUNWcg6h,
SUNWxwinc,
SUNWlibC,
SUNWzlib,
SUNWscpu,
SUNWperl584core,
SUNWperl584usr
-
On solaris 10 (or 9), grab SUNWspro CC compilers from developer toolkit, and put /opt/SUNWspro/bin on the path. Also make sure that /usr/perl5/bin is on the path.
-
which cc
should give ‘/opt/SUNWspro/bin/cc’which perl
should give the one in ‘/usr/bin’
-
which pod2man
should give ‘/usr/perl5/bin’ -
Note: which gcc must not find anything, otherwise it will be used erroneously instead!
-
export PATH=/sbin:/usr/bin:/usr/sbin:/usr/perl5/bin:/usr/bin:/usr/ccs/bin:/usr/X/bin:/usr/bin:/opt/SUNWspro/bin
Compiling options
- Install the software
export CC=cc ; export CXX=CC ; export CFLAGS="-g -O2"
./configure --prefix=/usr/local/orca --with-html-dir=/usr/local/orca/html
make
make install
Setup orca to use new SE Toolkit
cp -R /usr/local/orca/lib/SE/3.4/ /usr/local/orca/lib/SE/3.4.1/
cp -R /usr/local/orca/lib/SE/3.4/ /usr/local/orca/lib/SE/3.5/
If you see an error in nohub.out about errors in live_rules.se
root@t1000-orca:/usr/local/orca/bin> ./restart_orcallator
Writing data into /usr/local/orca/var/orca/orcallator/t1000-orca/
Starting logging
Sending output to nohup.out
root@t1000-orca:/usr/local/orca/bin> cat /nohup.out
"/usr/local/orca/lib/SE/3.4/live_rules.se", line 101: error: syntax error
"/usr/local/orca/lib/SE/3.4/live_rules.se", line 101: fatal: Errors detected. Exiting.
Move the orcallator.se file from /optr/RICHPse/orcallator/orcallator.se to /usr/local/orca/lib
Making Solaris package
- collect files you wish to package
find /usr/local/orca -print > /export/home/pcanham/pkgs/orca/files
- Make a Prototype
cat /export/home/pcanham/pkgs/orca/files | pkgproto > /export/home/pcanham/pkgs/orca/Prototype
- Make a pkginfo file to help people
PKG="SVNorca"
NAME="Orca"
VERSION="snapshot-r531"
ARCH="sparc"
SUNW_PKG_THISZONE="true"
CLASSES="none"
CATEGORY="application"
PSTAMP="Paul Canham"
<EMAIL_ADDRESS>BASEDIR="/"
DESC="Orca snapshot-r531 compiled with: --prefix=/usr/local/orca --with-html-dir=/usr/local/orca/html"
- Make package
cd /export/home/pcanham/pkgs
pkgmk -b /export/home/pcanham/pkgs/orca/SVNorca -f Prototype -r /
5.Make nice *.pkg file.
pkgtrans /var/spool/pkg /export/home/pcanham/pkgs/orca/SVNorca.snapshot-r531.SPARC.pkg SVNorca


Blinded by a bright beam
Shattered by the windscreen
Stunned by the whiplash
I'm a victim of a bad crash
I can do nothing right
I never sleep at night
Can't even start a fight
My feet have left the ground
Spinning round and round
Spellbound, my world keeps a tumbling down
Beaten by a blind bend
Wrong way up a dead end
Screaming through a speed trap
As I tear into a tail back
I can do nothing right
I never sleep at night
Can't even start a fight
My feet have left the ground
Spinning round and round
Spellbound, my world keeps a tumbling down
I'm slipping down
I got my hands in the fire
I'm sliding on an oil slick
Blinded on a bad trip
Yes and nothing's going to change it
I can do nothing right
Can't even sleep at night
My feet have left the ground
I'm spinning round and round


{% extends 'base.html' %} {% block content %}
Django OIDC Provider can help you providing out of the box all the endpoints, data and logic needed to add OpenID Connect capabilities to your Django projects.
View on Github


You can reach this dialog via the menu entry Individual Procedures \ RSA Cryptosystem \ Lattice Based Attacks on RSA \ Attack on Stereotyped Messages.
The dialog Attack on stereotyped messages
offers two different approaches:
1. Generate example input data (enter only parts of the required information)
and start an attack
Is is possible to generate an own example in the dialog which then
can be attacked. This mode leaves unexperienced users with the option to try
out the capabilities and limits of the attack.
2. Enter all input data manually and start the attack
By entering the public key, the known part of the message and the ciphertext
the attack can be mounted. After the offset and length of the unknown part are
provided by the user, the attack can be started. This mode is not to be recommended
to inexperienced users.
First the public key is needed. Then the known part of the plaintext and the complete ciphertext has to be entered. Furthermore the offset and the length of the unknown part has to be entered. This can be done by entering them directly into the textboxes or using the spin buttons. If the plaintext is already entered at this stage, changes can be directly monitored in the "Preview" textbox.
In the "Attack parameters" group the parameter h can be changed (h>1). A greater value fo h allows a bigger part of the message to be unknown, but an increase in this number results in a bigger lattice-dimension and thus negatively influences the runtime of the program.
N:
81310067042521973654412416255383522902083490331150101578762604997556337351877500251868504140980638835702886192443448896428977810893957566807779481557371020210138654283590601149334614497294215115728214075082663632500764651168005473090221075184203807588533522903997544767899971452793878122769013464319929212827
e:
3
Ciphertext (decimal):
75762050830648006314132960887315331648974069561264206858312424982664879616589030927769421532163693314271306061228215850461377786583482782397480153849655511217095601419134842131061003335859142592254645319509059791913787324022588737181121719463569440688425748225272034729177344946231277860225000833094616077032
Known part of the plaintext
(without the qoutes):
"Hello Bob!
Todays password is:
Sincerely, the boss."
Offset of the unknown part:
44
Length of the unknown part:
10


Manifesto¶
Subutai Manifesto¶
Using Subutai, we are barbarian hordes knocking on the doors of the establishment that tries to control and monitor our systems, harvest our activities, and track our relations. We are sick and tired of vendor lock-in, and unpleasant end-of-the-month surprises from the big cloud providers. We do not want to be beholden to institutions, corporations or foreign governments’ laws. We do not want to be at the mercy of hackers or closed source commercial software with backdoors. We want a safe and productive existence on the greatest digital silk road, the Internet, which should empower us all, even those trying to make a buck.
Collectively strengthened with open technologies including Peer-to-Peer (P2P) Cloud Computing, and Blockchain, the horde possesses enough resources to surpass the power of a million Amazons and Googles while decentralizing control. We are all “Dogs of War”. We are ready to do battle for our independence and our privacy. Become one of us, come join us as we make plans to dominate the world in the *War Room*.
Illustration contributed to the Subutai Project by *Phobs*.
History shows us that great power can be unleashed by meritocracy, tolerance, and sharing. The decision by Genghis Khan to depart from Mongol tradition and make a non-Mongol slave, Subutai, the General of his armies gave birth to the largest empire in all of human history. The hordes were given first rights to the plunder of every campaign instead of it being hoarded by a single individual. The Khan shared the spoils of war. No matter how inhuman, and brutal they were to their enemies in battle, once conquered all who joined the horde enjoyed religious, and ethnic tolerance with the very same rules of meritocracy that allowed a slave to become the greatest general ever in history. Without these principles the tiny fraction of the population who were ethnic Mongols would never have been able to conquer as much as they did.
“Disclaimer”
|
None of us are Mongolian, in fact, all of the Asian members of our team probably had their ancestors literally brutalized *by Genghis Khan*. We don’t care about stuff that happened a thousand years ago. Bottom line, this guy was the greatest general of all time. His empire’s horsemen epitomized the unstoppable warrior spirit of the times that rampaged through all of Asia. We like the epic notions that epoch inspires. So we did not select the name for any ethnic reasons. Subutai was an amazing figure and story. If we can live with that, so can everyone else. If you’re a creme puff offended by that, sorry, but we can’t change our spirit to accommodate your sensitivity. However to be respectful, even to ourselves, we do recognize that the Mongol empire under Genghis Khan did some very atrocious things. In no way, shape, or form do we condone them.  Until the conquered were subjugated and assimilated they were brutalized. Those who did not submit were completely wiped off the face of the earth. They destroyed entire civilizations. We consciously do not honor the brutality as the reason for their success. We think it was the opposite, or rather the contrast between being an opponent versus an ally accepted after a good fight with the benefits of sharing, tolerance, and meritocracy that unleashed their power to conquer all of Asia. |
|---|
We chose Subutai, this slave that became the world’s greatest general, as our project’s namesake. We believe his life and achievements epitomize the results of our common principles: meritocracy, tolerance, and sharing. No one is entitled by merely existing as a part of a mass. You must earn your place through battle.  Talkers, politician types, infiltrate to benefit from their status in the project rather than contributing to its success. When the numbers of these types grow they turn the project into a septic where no honorable warrior spirit in search of conquest enjoys participating anymore. We will have none of that. We all share in the plunder based on meritocracy while being tolerant of everyone regardless of race, religion, or sexual orientation of any kind.
These principles do not only apply to Subutai’s governance rules, and community culture but to its flagship open source product. The nature of the product feeds back into these core principles to strengthen and expand the community. Subutai empowers the horde by allowing anyone to securely share idle computer resources across the Internet with other participants. With Subutai, friends, family, colleagues, and even companies can create their own private data centers (infrastructure clouds). They can even buy and sell resources using Subutai’s Goodwill and KHAN cryptocurrency tokens. Software and applications install and run on Linux hosts (containers) in the virtual data center’s private network. Cloud owners pay for resources as their container hosts consume them: it’s the Container-as-a-Service (CaaS) model with hourly billing between parties.
Attacking one of us will be like attacking all of us. The horde’s collective defense system will allow all participants to counter-attack when any other members are attacked. Governments are not doing anything significant to protect us online while using our own tax dollars to invade our privacy. It’s time we took matters into our own hands. With a little computation and bandwidth from each of the millions of participants, we will have the ability to aggregate enough firepower to blow attackers off the Internet, and burn their operation down to the ground. Don’t mess with us! We fight back!
Still, the great Khan respected, some say loved strong opponents. He specifically invited past enemies that fought valiantly into the fold of the empire. Subutai incentivises hackers to do good through rewards and bounty programs. Why? Because they are bad asses like us. Respect! Why steal when you can just get rewarded for doing what you do best? Subutai helps make black hackers into white hackers to help protect the KHAN.
We are lunatics, so we did not stop at software. We want to be epic or die trying. No one here wants to be a puppet subordinating to the man. So we built a broadband router and IoT gateway that mines for KHAN cryptocurrency (hence it is also a physical wallet) called the Subutai Liquid Router. We want everyone to participate, not just us geeks. Everyone that helps should share in the plunder. We knew a device that lets residential Internet subscribers mine coins and pays for itself in cryptocurrency would be irresistable. Everyone wants to participate in the cryptocurrency economy, and Subutai lets them. The router hardware is an accelerated plug-n-play Subutai Appliance, which lets users easily and securely share or rent resources on their local area network to anyone else.
We’re not messing around.
We don’t want Subutai becoming just a techie niche platform. Non-technical residential Internet users at home or those trying to run small businesses on a budget need to be able to fire up cloud and IoT applications as easily as they install iPhone apps from Apple’s App Store today. Subutai enables and rewards both users and application developers by ensuring a rich ecosystem of open source applications to flourish. Application developers can package their apps as Dockerized applications and as Google AppEngine applications for users to pull down from the Subutai Bazaar and run on their P2P Clouds.
Open source software and hardware is very important to us. We want more and better products to benefit home users and small businesses. We created an open source contribution program where people can contribute resources to GitHub projects. In return for resources to test their products and run project infrastructure, open source projects create blueprints for applications. These applications are made publically available on the Subutai Bazaar for anyone to fire up on their personal cloud. Those contributing computer resources to open source projects get credit for their contributions and earn Goodwill on the platform to purchase resources from others. This is a win-win-win, a grand slam for everyone.
When anyone can run cloud applications, consume, and provide cloud services in a safe and productive environment, a cloud sharing economy emerges, and its disruptive effects will benefit everyone by accelerating the race to zero. We want billions of mini-Amazons popping up all over the world. We want to stop the needless waste of electricity on idle computers and help the environment by requiring less power hungry data centers. We want clouds to be able to be efficient by running closer to user load. We want the Internet to be a better place for personal and business computing. *Mercilessly, we want to take back the cloud!*


Cheat Sheet: Ruby Enumerables
Enumerable Methods
Enumerable is a type of Ruby class that contains methods that sort, search, and traverse over each element of a collection of data in an array. The Enumerable Ruby Docs lists all these handy methods for your viewing pleasure.
When passing a block to a hash element, the hash yields each key-value pair as an array in the format [key, value]
. Thus while blocks acting on arrays are often described using element
or e
({|e| puts e}
, hashes commonly use |key, value|
or |k,v|
.
It's also worth keeping in mind that the order a hash yash yields its pairs can be unpredictable.
#all?
This method passes each element of the object to the block and returns true if the block never returns false. This is a good method to check if a collection of elements all have the same property.
#none?
works opposite to#all?
.
Notes:
numbers=[1,2,3,4,5] numbers.all? {|num| num >=0 } => true
#each
The #each method is an effective replacement for a for loop. This method calls the block of code once for every element in self (in this case the array) and returns the original self object. See #map for a method to return a new value based on the block.
array=["This","is","a","demonstration"]array.each {|element| puts element} => This => is => a => demonstration
#each_cons vs #each_slice
#each_cons(n)
iterates through each element in an object, returning the following n
consecutive elements. It stops when it prints the last element.
#each_slice(n)
performs a similar task, but slice
s n
elements.
array = ["~~~~", "Join,", "or", "die.", "~~~~"] array.each_cons(2) {|element| print element} => ["Join", "us,"]["us,", "or"]["or", "die."]["die.", "~~~~"] array.slice(2) {|element| print element} => "~~~~ Join," "or die." "~~~~"
#find
Traverses the object and returns the first element for which the code evaluates to true
.
#detect
is an alias for#find
.#find_index
operates in a similar manner but returns the array index.#find_all
, despite its name, returns an array of all values that that evaluatetrue
and thus is actually an alias for select
Notes:
array = ["This","is","a","demonstration"] =>
#inject
This method combines all elements of an our object (array) using the command inside the block. The first element in the block (sum) is called the accumulator value. Each element in the block (num) is passed to the accumulator. At the end of the iteration, the final value (sum) is returned.I think about inject by using it to sum numbers. The second element in the block alters the previous element.
numbers=[1,2,3,4,5] numbers.inject {|sum,num| sum + num} => 15
#map
This method is similar to #each except it actually returns a new array containing the results of running the block on each element of the object passed through.
#collect
is an alias for #map
.
numbers=[1,2,3,4,5] numbers.map {|num| num * 2} => [2, 4, 6, 8, 10] numbers.collect {|num| num * 2} == numbers.map {|num| num * 2} => true
#select
This method returns an array containing all elements for which the block evaluates as true. In the example below, #select searches each element of the array for a length >=3. If this evaluates true, the element is included in the new array to be returned.
#find_all
is an alias for#select
.#reject
works opposite to#select
, returning an array of values that evaluate asfalse
.
Notes:
array=["This","is","a","demonstration"] array.select {|element| element.length >=3} => ["This", "demonstration"] array.reject {|element| element.length >=3} => ["is", "a"]


I'm A Celeb first look - Nadine Coyle frets over losing socks in dunny
The Girls Aloud star has been warned that camp-mates aren't given replacement clothes - so she may have to suffer if she can't retrieve them from their smelly new home!
by Sam Elliott, https://www.mirror.co.uk/authors/sam-elliott/Worried Nadine Coyle could be about to find out just how ruthless Jungle bosses are.
She lost her socks after using the infamous dunny as a makeshift changing room.
Now she has been warned she may have to go without for quite a while.
The Girls Aloud star was chatting to giggling Adele Roberts as she was getting ready - and soon discovered a problem.
"I hope they haven't dropped down...." she said as she noticed them missing. "Oh no! I've lost the socks!
"Do they give you more than one pair?"
The answer, according to John Barrowman, is no.
"I know from experience that if something happens to your clothes you're in trouble," he said on Extra Camp.
"I had wax all over mine and they didn't give me any more.
"Get them out and wash them!"
Fans of Nadine have meanwhile begged I'm A Celebrity producers to bring in subtitles to help understand her strong accent.
Flocking to Twitter , fans were joking about her accent.
One wrote: "Subtitles for Nadine please #ImACeleb ".
A second added: "Sorry but I’m going to need a translator to understand Nadine #ImACeleb ".
A third harshly commented: "Gonna have to watch #ImACeleb with the subtitles on, not because I can't understand Nadine's accent, but because I can't stand it."
Another wrote: "Forgot about Nadine's weird Irish/LA accent #ImACeleb ".
Do you have a story to sell? Get in touch with us at<EMAIL_ADDRESS>or call us direct 0207 29 33033


I am a computer vision master, where I work on visual slam and UAV navigation. I obtained my BSc and MSc from Northwestern Polytechnical University(NWPU) in 2012 and 2019 respectively, under the supervision of Prof. Tao Yang.
Mumblecore hexagon kombucha, pitchfork four loko raclette intelligentsia master cleanse. Vinyl XOXO lumbersexual
Mumblecore hexagon kombucha, pitchfork four loko raclette intelligentsia master cleanse. Vinyl XOXO lumbersexual
Mumblecore hexagon kombucha, pitchfork four loko raclette intelligentsia master cleanse. Vinyl XOXO lumbersexual


Written a show about a character with an interesting job, occupation, or role? Might as well name the show after the job.
Combine with Character Title to get Role Called. Not to be confused with The Crime Job titles.
Examples:
open/close all folders
Anime and Manga
- Bartender
- Cardcaptor Sakura
- Detective Conan
- Digimon Savers
- Digimon Tamers
- Eto Rangers
- The Familiar of Zero
- Fullmetal Alchemist
- Get Backers
- Hayate the Combat Butler
- Hell Teacher Nube
- Hunter × Hunter
- Miss Kobayashi's Dragon Maid
- Mobile Fighter G Gundam
- Mythical Detective Loki Ragnarok
- Ouran High School Host Club
- Princess Mononoke ("Mononoke" is a description, not a name)
- Sailor Moon
- Yu Yu Hakusho (Renamed in the Filipino dub as "Ghost Fighter", reflecting The Hero's job as a Spirit Detective).
Comic Books
Fanfiction
Film Animated
- The Boss Baby
- The Lion King
- Shark Tale ("Sharkslayer" working title)
- Wreck-It Ralph
Film Live-Action
- 2020 Texas Gladiators
- Abraham Lincoln: Vampire Hunter
- The Accountant
- Agent Cody Banks
- Alien Outlaw
- The American Astronaut
- An American Werewolf in London
- Android Cop
- The Artist
- Baby Driver
- The Babysitter
- Bad Teacher
- The Barbarians
- The Beastmaster
- Beverly Hills Cop
- Black Butler
- Blade Runner: A reversal; Ridley Scott co-opted the term from another source for its coolness and got the copyright to use it as the movie's title — the guy was just called a bounty hunter in the novel.
- The Bodyguard
- The Boondock Saints
- The Butler
- The Cable Guy
- The Callback Queen
- The Cameraman — guess what Buster Keaton's doing in this one?
- Captain America: The First Avenger
- The Catcher
- Cemetery Man
- Chef!
- Clerks
- Cocktail — The Hero is a bartender.
- Commando
- Cop
- Cop or Hood
- The Cowboys
- The Criminal
- Delivery Man
- Demon Hunter (2005)
- Demon Hunter (2016)
- The Demonologist
- The Dictator
- The Disaster Artist
- The Dragon Painter
- The Dressmaker
- Drive
- The Driver
- The Exorcist
- Fighting with My Family — The protagonist and her family are professional wrestlers.
- The Final Girls
- Ghostbusters
- G.I. Jane
- GI Joe The Rise Of Cobra
- Gladiator
- The Godfather
- The Greatest Showman
- The Gunfighter
- Gunslinger
- Hackers
- Hansel & Gretel: Witch Hunters
- Heneral Luna
- His Girl Friday
- The Hoodlum
- The Illusionist
- The Innkeepers
- The Inquisitor
- Inspector Gadget
- The Intern
- The Interpreter
- The Judge
- Kagemusha translates roughly to "impostor."
- The Killer
- Killer Joe
- Killer of Sheep is about a guy who works in a meatpacking plant.
- The King of Kings
- Kingsman: The Secret Service
- The Kunoichi: Ninja Girl - 'kunoichi' is the Japanese term for a female ninja.
- The Last Emperor
- The Last Jedi
- The Last Starfighter
- Lesbian Vampire Killers
- The Librarian
- The Lone Ranger
- Looper
- Lord of War
- The Machinist
- The Man in the White Suit
- The Man Who Fell to Earth
- The Man Who Never Was
- The Man Who Shot Liberty Valance
- The Man Who Wasn't There (1983)
- The Man Who Wasn't There (2001)
- The Man with the Golden Gun
- Maniac (1934)
- Maniac! (1980)
- The Mechanic (1972)
- The Mechanic (2011)
- Men in Black
- The Mountie
- Nanny McPhee
- The Negotiator
- Night Hunter
- Nightcrawler
- Ninja
- Outlaw King
- Paul Blart: Mall Cop
- The Pianist
- The Piano Teacher
- Police Academy
- Priest (2011)
- The Professional
- The Professionals
- Le Professionnel
- Puppet Master
- The Ramrodder - 'Ramrodder' (or just 'ramrod') is a nickname for a foreman or trail boss
- Re-Animator
- The Replacement Killers
- The Replacements (2000) is about substitute football players.
- Repo Man
- Repo Men - unrelated to the above, and a twist on that profession
- Return of the Jedi
- Robin Hood: Prince of Thieves
- RoboCop
- RoboGeisha
- Samurai Cop
- Satan's Little Helper
- Secretary
- Shooter
- The Shootist
- Small Soldiers
- Sneakers
- Soldier
- Soldier Blue
- Soultaker
- Spy Kids
- Strike Commando
- Striptease
- The Substitute
- Swashbuckler (although 'swashbuckler' is as much a way of life as a job)
- Taxi Driver
- The Terminator
- Thief
- The Thin Man
- The Third Man
- The Transporter
- Time Bandits
- Timecop
- Tokyo Gore Police
- US Marshalls
- The Vagrant (if 'vagrant' can be considered a job)
- Waitress
- Warrior
- Warriors of the Wasteland
- The Water Diviner
- We Were Soldiers
- The Wizard of Oz
- Witchfinder General
- The Wrestler
- Yojimbo is a corruption of the Japanese word "yõjinbõ," which translates to "bodyguard."
- Zombie Cop
- There's an entire subgenre of thriller and slasher films with job-based Theme Serial Killers that are titled this way, with examples being The Dentist, The Carpenter, The Janitor, The Nurse, The Mailman, The Super, Ice Cream Man and The Paper Boy.
Literature
- The 13th Warrior
- The Astronauts
- The Black Queen and The Black King by Christine Kathryn Rusch
- The Continental Op
- The Count of Monte Cristo
- The Disaster Artist
- The Giver
- The Lord of the Rings
- The Man who Would Be King
- Memoirs of a Geisha
- Old Kingdom: Abhorsen
- The Painter from Shanghai
- The Phoenix Guards
- The Prefect
- The first Raffles short story collection, The Amateur Cracksman.
- Reaper Man
- The Saint
- The Three Musketeers
- Warrior Cats
- A Wizard of Earthsea
- Whateley Universe: The story, Medicine Girl, where Pejuta helps heal Skybolt.
Live-Action TV
- Agent Carter
- Agents of S.H.I.E.L.D.
- Agent X
- America's Next Top Model
- BG: Personal Bodyguard
- Bodyguard
- Boston Legal
- Buffy the Vampire Slayer
- Call the Midwife
- Captain Power and the Soldiers of the Future
- Charmed (1998) — The titular witches are referred to as the "Charmed Ones", tasked to fight evil.
- Charmed (2018) (its remake)
- Chef!
- Chicago Fire
- Chicago Justice
- Chicago Med
- Chicago P.D.
- Chief Kim
- CHiPs (Stands for California Highway Patrol)
- Commander in Chief
- The Commish (short for 'Commissioner')
- COPS
- The Coroner
- Crownies (a nickname for of Crown Prosecutors)
- The CSI series.
- Doctors
- Doctor Who
- Doogie Howser, M.D.
- Dr. Quinn, Medicine Woman
- Emily Owens, M.D.
- Entourage
- The Equalizer
- Father Ted
- The Flying Nun
- Fortune Hunter
- Game of Thrones (The titular Thrones being the Ruler of the Seven Kingdoms)
- The Good Doctor
- The Greatest American Hero
- Hack (the man character is an ex-cop turned taxi driver)
- Heroes
- Homicide: Life on the Street
- House, M.D.
- In Treatment
- JAG, which centered on Navy Judge Advocate General officers (read: military lawyers).
- NCIS, which similarly centered on investigators with the Naval Criminal Investigative Service.
- Kamen Rider
- Kings
- Knight Rider
- The Law & Order series, particularly Law & Order: Special Victims Unit and Law & Order: Trial by Jury.
- Lawman
- The Librarians (2007)
- The Librarians 2014
- Madam Secretary
- The Magician
- Magnum, P.I.
- Major Dad
- The Man from U.N.C.L.E.
- The Mentalist, though he is acting as a law enforcement consultant rather than performing on stage during the series.
- Every Metal Heroes series.
- The Musketeers
- The Mystic Knights of Tir Na Nóg
- The Nanny
- Nurse Jackie
- NYPD Blue
- The Philanthropist
- The Pinkertons
- Police Woman
- Pose
- Every Power Rangers and Super Sentai series.
- The Practice
- The Pretender
- The Prisoner (1967)
- The Prisoner (2009)
- Private Practice
- Queen Seondeok
- Reign
- Reaper
- Relic Hunter
- Rescue 911
- The Resident
- Rev
- Robot Detective
- Shooter
- Sliders
- Suits
- Survivor's 30th season was subtitled "White Collar vs. Blue Collar vs. No Collar" which pitted people from said working class against each other. The official title of the season is Worlds Apart.
- Teachers
- True Detective
- Vampire Prosecutor
- Veep
- Vice Principals
- White Collar
- The Worker (Charlie Drake sitcom - the twist is that he never works for very long before being fired)
- Wu Assassins
- The Young Ones
Music
- "The Actor" by Michael Learns To Rock
- "Agent Orange" and "Queen Paranoia" by Slapshock
- "Doctor Jones" by Aqua
- "Highway Patrolman" by Bruce Springsteen
- "I Need A Doctor" by Eminem, Doctor Dre, and Skylar Grey
- "Wichita Lineman" by Glen Campbell
- "The Man who Sold the World" by David Bowie
- "Song of a Baker" by The Small Faces
- "The Butcher" by Leonard Cohen
- "Highway Patrolman" by Johnny Cash (a different song to the Springsteen one)
- "Superheroes" by The Script
Radio
Theatre
- William Shakespeare's The Merchant of Venice and its unofficial sequel, The Doctor of Rome
- The Merry Wives of Windsor
Video Games
- Ace Attorney
- Animamundi Dark Alchemist
- Assassin's Creed
- Bionic Commando
- Call of Duty
- Dragon Valor (in the game's universe, Dragon Valor is a title granted to dragon slayers.)
- Driver
- Dungeon Keeper
- God of War
- Hitman
- Knights of the Round
- Kung Fu Master
- The Last Ninja (and just about any video game with "Ninja" in the title)
- The Manager (football manager game)
- Megaman X 1 (Re-released as Maverick Hunter X)
- Paperboy
- Samurai Warriors
- Secret Agent
- Shining Song Starnova — The main protagonists are a (seven member) Girl Group.
- Street Fighter
- Strider
- Stuntman
- Tenchu: Stealth Assassins
- Midnight Wanderers
- Tomb Raider
- The Trader of Stories
- Tsukihime note
- Vampire Killer
- The Witcher
- ... and a large proportion of the Simulation Game page.
Web Original
- Emma Approved — The Hero is a professional matchmaker.
- Frankenstein M.D.
- Hansen Vs. Predator — The Host and his team are Paedo Hunters.
- The Lizzie Bennet Diaries — The Hero is a Vlogger.
- React, particularly YouTubers React, as well as the Staff React episodes.
Western Animation


http(s) debugging cheat sheet
Martin Luther is attributed with the utterance "You have to watch how people talk". What works for the famous bible translation applies to APIs as well. Despite Open Standards and a standard body, APIs do their own thing, not necessarily documented as they are.
While it is reasonable easy to watch them inside a browser using Developer Tools (also here) it gets tricky when you want to watch an application like macOS Calendar, Thunderbird, Slack, Bodo (for Jira).
This is your cheat-sheet.
Setup your HTTP(s) Forensics
- Install the application you want to investigate (Yeah, a no brainer)
- Install a HTTP debugger, one of them (I use Charles Proxy)
- Proxyman (Mac)
- Charles Proxy (Mac, Win, Linux)
- Fiddler (Win)
- Configure your HTTP debugger to be able to analyse https traffic to your choosen calendar server
- Install PostMan and curl
- Have a place where you save your investigation results in Markdown,
/docs
in a GitHub repo is a good place - Configure your HTTP debugger to intercept the http traffic on your target domain. This works different for each OS and debugger, so read the manual!
- SSL Proxying for Charles Proxy
- Decrypt HTTPS for Fiddler
- SSL Proxying with Proxyman
- Fetch a cup of your favorite beverage, we are good to go
Investigate
- Switch on your HTTP debugger (this line is sponsored by Captain Obvious)
- Execute one command in your custom app. Typically something like "login" or "add account" or "File Open" (that's my favorite in Office apps, fires 4 or more HTTP request when done against a http endpoint that understands webDAV)
- Look at the raw results. Each debugger has a nice gui that separates headers, cookies and body payload, but you want to look at raw data:
- Your request starts with METHOD /route HTTP_Version, e.g.
POST /login HTTP/1.1
Everything until the first empty line is header, followed eventually with a body. Knowing methods helps to set expectations. See also RFC 7231, RFC 5789, RFC 2518, RFC 4918, RFC 3744 and RFC 4791 - Your response starts with a status line HTTP/1.1 StatusCode StatusMessage e.g.
HTTP/1.1 200 OK
Again: everything until the first empty line is header, followed by the optional response body - It can get trickier when you app is already using HTTP/2.0 or later since it allows streaming or non-text payloads like gRPC
- Document that in markdown, bracket the http with three backticks, so it renders as source
- Repeat for other commands in your app
Re-enactment
What fun is detective work without verifying results. This is where you turn to Postman or if you have it - curl.
You want to use parameters for your hostname and the user specific parts (username, passwords) and you need to have a clear idea what are variable return values. Good candidtes to watch out for are cookies or header values. You need to extract these values for chaining to the next request. With a little practise you should be able to make Postman behave like the original app
Parting words
- Check the terms of service of the application you are investigating. While public end-point are, well, public, you might have agreed in your T&C not to touch them
- This isn't an instuction for hacking, you still need to be you - with your credentials. Nevertheless you might stumble over "security by obscurity" or other annoyances
- Any app that uses http instead of https needs to die a horrible death
- Reading the API spec is potentially faster
As usual YMMV
Posted by Stephan H Wissel on 30 December 2019 | Comments (0) | categories: HTTP(S) Networking WebDevelopment


Welcome to
Playground
Fun outdoor games and new friends!
Next Event:
3 Teams. 1 Prize. Sep 16.
©Playground Community


The UK-wide Chief Medical Officers’ guidelines for physical activity
recommend that to receive the health benefits from physical activity:
Children under 5 years old (Early Years)
Children who are capable of walking unaided should be physically
active daily for at least 180 minutes (3 hours), spread throughout the
day. For children who cannot yet walk unaided, physical activity
should be encouraged from birth, especially through floor-based play
and water-based activities in safe environments.
Children and young people (5-18 years old)
All children and young people should engage in moderate to
vigorous intensity physical activity (MVPA) for at least
60 minutes and up to several hours every day.
Participation in vigorous intensity activities should be incorporated
at least three days a week; these include any activities that
strengthen muscles and bones.
The benchmark used by the Research Work Group to allocate a grade to this indicator was: The percentage of children and young people who meet the recommended physical activity guidelines.
The National Survey for Wales (NSW, 2016-17) asked parents/guardians of children aged 3-17 to report the amount of time their child was active on each day in the previous seven days. Parents were informed that they should consider activities that left their child feeling warm or at least slightly out of breath and that these activities could include playing sport, cycling, running or brisk walking either at school, outside school, with a club, with friends or on their own. Results of the survey demonstrated that 51% of children were active for at least an hour seven days a week. A higher proportion of boys were active for at least 1 hour a day in comparison to girls (55% B, 47% G). Due to the differences in method used to gather data, results are not comparable to previous surveys (i.e., Welsh Health Survey, 2014).
The HBSC/SHRN (2017) asked young people aged 11-16 how many days they were physically active for a total of at least 60 minutes per day. The survey found that 18.4% of young people reported being physically active for at least an hour on seven days per week. More boys than girls reported being active (23% B, 14% G).  The proportion of White and Black Minority Ethnic children reporting being active was similar (18.3% W, 19.1% BME). These findings are similar to previous results from the same survey. In 2015 17.8% of young people reported being active for a total of at least 60 minutes per day, whereas in 2014 this figure was 15% and in 2010 19% were active.
The Health Behaviour in School-aged Children Survey (2013/14), on 9,055 Secondary School children and young people aged 11-16 year olds, provides data on percentage of children and young people taking part in at least 60 minutes of moderate to vigorous intensity physical activity (MVPA) every day of the week. The survey showed that only 15% of of children and young people met the recommendation of at least 60 minutes of moderate to vigorous intensity physical activity (MVPA) every day of the week. The survey found that boys were more active than girls across all age groups and socioeconomic status, with 20% of boys of boys and only 11% of girls meeting the recommended physical activity guidelines. However, there was little difference in overall MVPA found across difference socioeconomic status, as well as, across different regions of Wales. In addition, there was a small downward trend in physical activity for boy and girls between 2006 and 2014, with physical activity levels going from 21% in 2006, to 19% in 2010 to 15% in 2014.
The Welsh Health Survey (2014) on children aged 4-15 years old, asked how much exercise the children had undertaken on each day in the last week. The children were asked to include exercise done at school as well as outside of school. The survey showed that 35% of children participated in MVPA for at least 1 hour every day. A gender difference was seen between boys and girls, with a higher proportion of boys (40%) participating each day compared to girls (29%). In this survey there has been no significant change in the levels of physical activity since 2007. The concerning results from this survey are that 12% of boys and 15% of girls did not take part in any physical activity in the last week.


Default element:
Made with
Made with <love-heart></love-heart> by me
Apply your own CSS:
Made with
Made with <love-heart class="blue" ></love-heart> by me
Made with
Made with <love-heart class="yellow" ></love-heart> by me
Made with
Made with <love-heart class="big" ></love-heart> by me
Made with
Made with <love-heart class="huge" ></love-heart> by me


--- layout: home title: Mathieu GUÉRIN avatar: true ---
Currently in my final year as an IT engineer student at EPITA in Data Science and Artificial Intelligence. I'm also skilled as a back-end developer, leaning full-stack in web development. I am involved in various projects both as part of my curriculum, and as a hobby.
I am currently looking for a job or internship starting in February 2023. I would welcome any opportunity to grow my expertise in fields such as Data Science, Artificial Intelligence or Big Data.
On this website you can find information about me and my projects. You can also find me on the following platforms:
You can contact me via:
Telegram, or
Discord ({{ site.data.about.social.discord.handle }}), or
Email, for professional inquiries


Search Program
Search Keys
You can use operations such as AND(&), OR(space), NOT(%), and proximity (e.g., /3 /p /s +5 +p +s as in the Westlaw system), as well as association by parentheses
Sort Item
You can sort the results by 'type', 'time', 'sender', 'receiver', 'text', 'text_length'
Show Docs Nums
How many docs of the results you want to show
Search
{% if info|length>0 %}
{{ info }}
{% endif %}
type
time
sender
receiver
text
{% for re in res %} {% for line in re %}
{{ line.type }}
{{ line.time }}
{{ line.sender }}
{{ line.receiver }}
{{ line.text }}
{% endfor %} {% endfor %}


Genesis 13:11
Then Lot chose him all the plain of Jordan; and Lot journeyed east: and they separated themselves the one from the other.


On the other hand, we denounce with righteous indignation and dislike men who are so beguiled and by the charms of pleasure of the moment, so blinded by desire, that they cannot foresee the painOn the other hand, we denounce with righteous indignation and dislike men who are so beguiled and by the charms of pleasure of the moment, so blinded by desire, that they cannot foresee the pain of pleasure of the moment, so blinded by desire, that they cannot foresee the painOn the other hand, we denounce with righteous indignation and dislike men who are so beguiled and by the charms of pleasure of the moment.
Client : Envato
Tags : Design, Photography, Art
Step : On the other hand
Date : 25 JAN 2014


It's easy to take a D3.js chart of your own and use it with Sheetsee.js. If you make it into a module, anyone can use your chart, too!
Sheetsee charts currently work by taking in some options, like so:
var pieOptions = {labels: "name", units: "units", m: [80, 80, 80, 80], w: 600, h: 400, div: "#pieChart", hiColor: "#14ECC8"}
The labels represent the actual thing you're charting and units are how many of those things. Margin, width and height are m, w, h and the <div>
to build your chart in is div. Finally, you can supply a highlight color if you want.
So, your chart could take the same options, but map them into your D3 code with the correct variables. An example from maxogden/sheetsee-d3bubble:
Append the d3.js code with a map of your sheetsee options
Sheetsee.d3BubbleChart = function(data, options) {
var tree = {name: "data", children: []}
var groups = {}
// data needs to look like this:
// var data = { name: "wahtever", children: [
// { name: "group1", children: [
// { name: 'bob', size: 3},
// { name: 'judy', size: 5}
// ]},
// { name: "group2", children: [
// { name: 'jim', size: 10},
// { name: 'bill', size: 5}
// ]}
// ]}
data.map(function(r) {
var groupName = r[options.group]
groups[groupName] = true
})
Object.keys(groups).map(function(groupName) {
var groupMembers = []
data.map(function(r) {
if (r[options.group] !== groupName) return
groupMembers.push({name: r[options.name], size: r[options.size]})
})
tree.children.push({name: groupName, children: groupMembers})
})
// the rest of the code
In your HTML call it like so
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
var URL = "0AvFUWxii39gXdFhqZzdTeU5DTWtOdENkQ1Y5bHdqT0E"
Tabletop.init( { key: URL, callback: showInfo, simpleSheet: true } )
})
function showInfo(data) {
Sheetsee.d3BubbleChart(data, { name: 'name', size: 'cuddlability', group: 'kind', div: '#stuff'})
}
</script>
There are lots of charts to get excited about in the D3 gallery.
View the entire source


Show extra HTML elements based on changes in form elements. Useful in HTML prototyping.
This pattern shows HTML elements based on selection of a radio button or check box.
The "link" is made through a data attribute (data-show
) and the ID of the radio button/checkbox.
Note: you have to apply the initial state manually (add your hide
classes to the elements that should be hidden).
Try it!
This is data field 4
This is data field 5
This is data field 6
This pattern shows a linked box when an <option>
is selected
You selected red.
Use data-open-element
and data-element-to-be-opened
attributes with the same values to show a hidden HTML element.
Use data-close-element
and data-element-to-be-closed
attributes with the same values to hide a visible HTML element.
Use data-toggle-element
and data-element-to-be-toggled
attributes with the same values to hide a visible HTML element.
| 1.1 |
|
|---|
File issues in the Github repo.
git clone git@github.com:Wolfr/jquery.extendedinput.js
npm install
and bower install
grunt
©2013, Wolf's Little Store - Free to use under the MIT license.


Title of the page: Internal CSS
This is the first line.
This is the second line
This is the last line


Data Tables
Often times when you see a table it contains data which is sortable -- sometimes with actions that can be taken within each row (e.g. edit, delete). And it can be challenging to automate interaction with sets of data in a table depending on how it is constructed.
Example 1
No Class or ID attributes to signify groupings of rows and columns
| Last Name |
First Name |
Email |
Due |
Web Site |
Action |
| Smith |
John |
<EMAIL_ADDRESS>|
$50.00 |
http://www.jsmith.com |
edit
delete
|
| Bach |
Frank |
<EMAIL_ADDRESS>|
$51.00 |
http://www.frank.com |
edit
delete
|
| Doe |
Jason |
<EMAIL_ADDRESS>|
$100.00 |
http://www.jdoe.com |
edit
delete
|
| Conway |
Tim |
<EMAIL_ADDRESS>|
$50.00 |
http://www.timconway.com |
edit
delete
|
Example 2
Class and ID attributes to signify groupings of rows and columns
| Last Name |
First Name |
Email |
Due |
Web Site |
Action |
| Smith |
John |
<EMAIL_ADDRESS>|
$50.00 |
http://www.jsmith.com |
edit
delete
|
| Bach |
Frank |
<EMAIL_ADDRESS>|
$51.00 |
http://www.frank.com |
edit
delete
|
| Doe |
Jason |
<EMAIL_ADDRESS>|
$100.00 |
http://www.jdoe.com |
edit
delete
|
| Conway |
Tim |
<EMAIL_ADDRESS>|
$50.00 |
http://www.timconway.com |
edit
delete
|
Basic Tables
Some tables dont have the HTML elements thead, tbody or tfoot. While designing locators this should be taken into consideration.
Example 1
Simple table with *tr* and *td* elements only
| Smith |
John |
$50.00 |
http://www.jsmith.com |
| Bach |
Frank |
$51.00 |
http://www.frank.com |
| Doe |
Jason |
$100.00 |
http://www.jdoe.com |
| Conway |
Tim |
$50.00 |
http://www.timconway.com |
Nested Tables
Some tables have nested tables in one or more of the table cells. This causes difficulties when trying to iterate over the table cells of a row, since only the direct children of the row have to be located.
Example 1
Single Inline table in table cell
| Last Name |
First Name |
Email |
Due |
Web Site |
| Smith |
John |
| Business |<EMAIL_ADDRESS>|
| Personal |<EMAIL_ADDRESS>|
|
$50.00 |
http://www.jsmith.com |
| Bach |
Frank |
| Business |<EMAIL_ADDRESS>|
| Personal |<EMAIL_ADDRESS>|
|
$51.00 |
http://www.frank.com |
| Doe |
Jason |
| Business | |
| Personal |<EMAIL_ADDRESS>|
|
$100.00 |
http://www.jdoe.com |
| Conway |
Tim |
| Business |<EMAIL_ADDRESS>|
| Personal | |
|
$50.00 |
http://www.timconway.com |


Creating Virtual Machines using QEMU/KVM
Virtual machines and virtualization is everywhere today. For understanding cloud infrastrcture today, it’s first important to undertsand how virtual machines work. In this article, we’ll learn to create a VM in Linux using QEMU and KVM.
Introduction
QEMU and KVM
QEMU or Quick Emulator is an open-source machine emulator and virtualizer. It can be used for full-system emulation, user-mode emulation or virtualization. We’ll be using the full-system emulation capabilities here.
KVM or Kernel-based Virtual Machine on the other hand is a virtualization infrastructure which turns Linux into a hypervisor. It is part of the Linux kernel mainline since 2007. KVM when activated along with Qemu, speeds up the emulation several times.
There are numerous manager softwares for both QEMU and KVM, which give a UI for creating VMs and make optioning easier. However, using QEMU directly helps in better understanding the process.
Setting up the environment
Installing QEMU
QEMU is available as a PPA for Ubuntu, which can be downloaded using
$ sudo apt-get install qemu
Downloading iso image
To demonstrate we’ll be creating a Debian VM.(for potential use as a SSH or web server)
$ wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.1.0-amd64-netinst.iso
Creating a virtual hard-disk
The first step for creating the VM is to create a storage space for the operating system and files on the VM. A virtual hard-drive is an image with it’s own partition table, onto which operating systems can be installed. We can create one using qemu-img.
$ qemu-img create -f qcow2 debian.qcow2 6G
The command takes the location and size to create an hard-drive image. The -f option specifies the format for disk-image to be created. We’ll be installing Debian onto debian.qcow2.
Installing the ISO and Booting Up VM
Installation
To install the Debian image onto the virtual hard-drive we just created.
$ qemu-system-x86_64 -enable-kvm -hda debian.qcow2 -cdrom ../Downloads/debian-9.1.0-amd64-netinst.iso -net user -net nic -m 4G -boot d
qemu-system-x86_64 is the utility used for creating 64 bit VMs. It takes as input the options required for our machine, and starts up the machine with given options.
In the command, for -cdrom option, we need to enter the location of our iso file. Option -m tells the system memory, and 4 GB of RAM should work fine for most installations. Time taken for the install will depend on the amount of RAM allocated.
Once the install is complete, QEMU will reboot. We can close the window and go back to the terminal.
Booting up
Now to boot up the virtual machine, we’ll use
$ qemu-system-x86_64 -enable-kvm -hda debian.qcow2 -boot c -net user -net nic -m 2G
The -boot option changes to let the machine to boot from the hard-drive image, and RAM size is reduced to 2 GB.
Conclusion
We’ve created a simple VM running Debian. This VM can be used for purposes such as learning about the new OS, testing softwares and packages on it or even creating a simple file or mail server to understand its workings. Then there’s also the satisfaction of having succesfully installed and used an operating system without ruining your main hard-drve.


Outcome: Conveys hierarchy with semantic structure
Provides semantic structure that conveys the hierarchy to help explore and navigate the content.
This outcome relates to guideline Structured content.
Methods:
Provides semantic structure that conveys the hierarchy to help explore and navigate the content.
This outcome relates to guideline Structured content.
Methods:


This is not a valid web address
Facebook address is invalid. It should look like: https://www.facebook.com/your-facebook-page
Twitter address is invalid. It should look like: https://twitter.com/your-twitter-account
Youtube address is invalid. It should look like: https://www.youtube.com/channel/
Please attach a logo or image of your Actor (max. 500KB). The image on the profile will be fitted into 200 x 200 px.