Class: Aws::SageMaker::Types::TransformOutput
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
Struct
|
|
|
Instance Chain:
self,
::Aws::Structure ,
Struct
|
|
| Inherits: |
Struct
|
| Defined in: | gems/aws-sdk-sagemaker/lib/aws-sdk-sagemaker/types.rb |
Overview
Describes the results of a transform job.
Constant Summary
Instance Attribute Summary
-
#accept ⇒ String
rw
The MIME type used to specify the output data.
-
#assemble_with ⇒ String
rw
Defines how to assemble the results of the transform job as a single
::Aws::S3
object. -
#kms_key_id ⇒ String
rw
The Amazon Web Services Key Management Service (Amazon Web Services
::Aws::KMS
) key that Amazon SageMaker uses to encrypt the model artifacts at rest using Amazon S3 server-side encryption. -
#s3_output_path ⇒ String
rw
The Amazon
::Aws::S3
path where you want Amazon SageMaker to store the results of the transform job.
Instance Method Summary
::Aws::Structure
- Included
| #to_hash | Alias for Aws::Structure#to_h. |
Instance Attribute Details
#accept ⇒ String
(rw)
The MIME type used to specify the output data. Amazon SageMaker uses the MIME type with each http call to transfer data from the transform job.
# File 'gems/aws-sdk-sagemaker/lib/aws-sdk-sagemaker/types.rb', line 38950
class TransformOutput < Struct.new( :s3_output_path, :accept, :assemble_with, :kms_key_id) SENSITIVE = [] include Aws::Structure end
#assemble_with ⇒ String
(rw)
Defines how to assemble the results of the transform job as a single
::Aws::S3
object. Choose a format that is most convenient to you. To
concatenate the results in binary format, specify None
. To add a
newline character at the end of every transformed record, specify
Line
.
# File 'gems/aws-sdk-sagemaker/lib/aws-sdk-sagemaker/types.rb', line 38950
class TransformOutput < Struct.new( :s3_output_path, :accept, :assemble_with, :kms_key_id) SENSITIVE = [] include Aws::Structure end
#kms_key_id ⇒ String
(rw)
The Amazon Web Services Key Management Service (Amazon Web Services
::Aws::KMS
) key that Amazon SageMaker uses to encrypt the model artifacts
at rest using Amazon S3 server-side encryption. The KmsKeyId
can
be any of the following formats:
Key ID:
1234abcd-12ab-34cd-56ef-1234567890ab
Key ARN:
arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
Alias name:
alias/ExampleAlias
Alias name
::Aws::ARN
:arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias
If you don't provide a ::Aws::KMS
key ID, Amazon SageMaker uses the
default ::Aws::KMS
key for Amazon S3 for your role's account. For more
information, see KMS-Managed Encryption Keys in the Amazon
Simple Storage Service Developer Guide.
The KMS key policy must grant permission to the ::Aws::IAM
role that you
specify in your CreateModel request. For more information, see
Using Key Policies in Amazon Web Services KMS in the Amazon
Web Services Key Management Service Developer Guide.
# File 'gems/aws-sdk-sagemaker/lib/aws-sdk-sagemaker/types.rb', line 38950
class TransformOutput < Struct.new( :s3_output_path, :accept, :assemble_with, :kms_key_id) SENSITIVE = [] include Aws::Structure end
#s3_output_path ⇒ String
(rw)
The Amazon ::Aws::S3
path where you want Amazon SageMaker to store the
results of the transform job. For example,
s3://bucket-name/key-name-prefix
.
For every ::Aws::S3
object used as input for the transform job, batch
transform stores the transformed data with an .out
suffix in a
corresponding subfolder in the location in the output prefix. For
example, for the input data stored at
s3://bucket-name/input-name-prefix/dataset01/data.csv
, batch
transform stores the transformed data at
s3://bucket-name/output-name-prefix/input-name-prefix/data.csv.out
.
::Aws::Batch
transform doesn't upload partially processed objects. For an
input ::Aws::S3
object that contains multiple records, it creates an .out
file only if the transform job succeeds on the entire file. When the
input contains multiple ::Aws::S3
objects, the batch transform job
processes the listed ::Aws::S3
objects and uploads only the output for
successfully processed objects. If any object fails in the transform
job batch transform marks the job as failed to prompt investigation.
# File 'gems/aws-sdk-sagemaker/lib/aws-sdk-sagemaker/types.rb', line 38950
class TransformOutput < Struct.new( :s3_output_path, :accept, :assemble_with, :kms_key_id) SENSITIVE = [] include Aws::Structure end


{% extends "views/platform-admin/_base_template.html" %} {% block per_page_title %} Platform admin {% endblock %} {% block platform_admin_content %}
Download trial mode services csv report
Download live services csv report


--- layout: post status: publish published: true title: Romain Highlighting author: display_name: Fabio Pereira login: admin email<EMAIL_ADDRESS>url: http://fabiopereira.me author_login: admin author_email<EMAIL_ADDRESS>author_url: http://fabiopereira.me wordpress_id: 331 wordpress_url: http://fabiopereira.me/blog/2010/08/04/romain-highlighting/ date: '2010-08-04 05:27:37 +1000' date_gmt: '2010-08-04 12:27:37 +1000' categories: - Technical tags: [] comments: - id: 7533 author: Carlos Villela author_email<EMAIL_ADDRESS>author_url: http://lixo.org date: '2010-08-04 17:41:52 +1000' date_gmt: '2010-08-05 00:41:52 +1000' content: "Fun? It's incredibly distracting and takes away any speed-reading I might have left in me :\\\r\n\r\nWant to convey the main message quicker? Get a few style guides, improve your writing skills... and leave the formatting settings alone!" - id: 7541 author: Fabio Pereira author_email<EMAIL_ADDRESS>author_url: http://fabiopereira.me date: '2010-08-04 23:50:36 +1000' date_gmt: '2010-08-05 06:50:36 +1000' content: "@Carlos Villela \r\nI might have exaggerated a bit with the number of highlighted words in my example... In reality, let's say there's an e-mail with 4 paragraphs, we would have the 5 or 6 most important words highlighted in it..." - id: 7589 author: Fabio Pereira author_email<EMAIL_ADDRESS>author_url: http://fabiopereira.me date: '2010-08-09 05:25:32 +1000' date_gmt: '2010-08-09 12:25:32 +1000' content: "@Carlos Villela \r\nChanged the image with way less highlighted words, which is kind of how Romain uses it..." - id: 8049 author: Adam Setch author_email<EMAIL_ADDRESS>author_url: '' date: '2010-09-12 15:04:07 +1000' date_gmt: '2010-09-12 22:04:07 +1000' content: Love it! ---


public class LineStepEvolutionControl
extends java.lang.Object
| Constructor and Description |
|---|
LineStepEvolutionControl(LineEvolutionVerifier lev,
double dblReductionFactor,
int iNumReductionStep)
LineStepEvolutionControl Constructor
|
| Modifier and Type | Method and Description |
|---|---|
LineEvolutionVerifier |
lineEvolutionVerifier()
Retrieve the Line Evolution Verifier Instance
|
static LineStepEvolutionControl |
NocedalWrightArmijo(boolean bMaximizerCheck)
Retrieve the Nocedal-Wright-Armijo Verifier Based Standard LineStepEvolutionControl Instance
|
static LineStepEvolutionControl |
NocedalWrightStrongCurvature()
Retrieve the Nocedal-Wright-Strong Curvature Verifier Based Standard LineStepEvolutionControl Instance
|
static LineStepEvolutionControl |
NocedalWrightStrongWolfe(boolean bMaximizerCheck)
Retrieve the Nocedal-Wright-Strong Wolfe Verifier Based Standard LineStepEvolutionControl Instance
|
static LineStepEvolutionControl |
NocedalWrightWeakCurvature()
Retrieve the Nocedal-Wright-Weak Curvature Verifier Based Standard LineStepEvolutionControl Instance
|
static LineStepEvolutionControl |
NocedalWrightWeakWolfe(boolean bMaximizerCheck)
Retrieve the Nocedal-Wright-Weak Wolfe Verifier Based Standard LineStepEvolutionControl Instance
|
double |
reductionFactor()
Retrieve the Reduction Factor per Step
|
int |
reductionSteps()
Retrieve the Number of Reduction Steps
|
public LineStepEvolutionControl(LineEvolutionVerifier lev, double dblReductionFactor, int iNumReductionStep) throws java.lang.Exception
lev
- The Lie Evolution Verifier InstancedblReductionFactor
- The Per-Step Reduction FactoriNumReductionStep
- Number of Reduction Stepsjava.lang.Exception
- Thrown if Inputs are Invalidpublic static final LineStepEvolutionControl NocedalWrightArmijo(boolean bMaximizerCheck)
bMaximizerCheck
- TRUE - Perform a Check for the Function Maximapublic static final LineStepEvolutionControl NocedalWrightWeakCurvature()
public static final LineStepEvolutionControl NocedalWrightStrongCurvature()
public static final LineStepEvolutionControl NocedalWrightWeakWolfe(boolean bMaximizerCheck)
bMaximizerCheck
- TRUE - Perform a Check for the Function Maximapublic static final LineStepEvolutionControl NocedalWrightStrongWolfe(boolean bMaximizerCheck)
bMaximizerCheck
- TRUE - Perform a Check for the Function Maximapublic LineEvolutionVerifier lineEvolutionVerifier()
public double reductionFactor()
public int reductionSteps()


vignettes/manageSynapseCredentials.Rmd
manageSynapseCredentials.Rmd
There are multiple ways one can login to Synapse. We recommend users to choose the method that fits their workflow.
Use username and password to login as follows:
library("synapser")
synLogin("username", "password")
Alternately you can login using a personal access token obtained from synapse.org under your Settings. Note that a token must minimally have the view scope to be used with synapser.
library(synapser)
synLogin(authToken="authtoken")
.synapseConfig
For writing code using the synapser
client, that is easy
to share with others, please do not include your credentials in the
code. Instead, please use .synapseConfig
file. You can
refer your collaborators to the following documentation on how to set up
a .synapseConfig
file.
First, create a .synapseConfig
file in your home
directory with the following content:
[authentication]
# either authtoken OR username and password
authtoken = <authtoken>
username = <username>
password = <password>
You can choose to specify either username
and
password
or authtoken
. For security purposes,
we recommend that you use authtoken instead of your password. A personal
access token generated from your synapse.org Settings can be used as
your .synapseConfig authtoken.
Then login without specifying your username and password:
library("synapser")
synLogin()
For legacy compatibility, the .synapseConfig
[authentication]
section also supports apikey
,
which can be used instead of username
+
password
pair, or authtoken
, however apikey
support in the .synapseConfig is considered deprecated in favor of
personal access tokens (authtoken) which can be scoped to certain
functions and are revocable. If needed, your legacy apikey can also be
obtained from your synapse.org Settings.
For users who would like to save their credentials and let other OS configured applications (like keychain in Mac) manage credentials for them, when logging in for the first time, use:
library("synapser")
synLogin("username", "password", rememberMe=True)
The application (keychain in Mac) will then prompt you to allow other applications including Python and R to access these credentials. Please choose “Yes” or “OK”.
The second time you login, you will not have to enter your username or password:
library("synapser")
synLogin()


| Class | Orgmode::OutputBuffer |
| In: |
lib/org-ruby/output_buffer.rb
|
| Parent: | Object |
The OutputBuffer is used to accumulate multiple lines of orgmode text, and then emit them to the output all in one go. The class will do the final textile substitution for inline formatting and add a newline character prior emitting the output.
| Modes | = | [:normal, :ordered_list, :unordered_list, :blockquote, :code, :table] |
| buffer | [R] | This is the accumulation buffer. It‘s a holding pen so consecutive lines of the right type can get stuck together without intervening newlines. |
| buffer_mode | [R] | This is the output mode of the accumulation buffer. |
| output | [R] | This is the overall output buffer |
| output_type | [RW] | This is the current type of output being accumulated. |
Creates a new OutputBuffer object that is bound to an output object. The output will get flushed to =output=.
# File lib/org-ruby/output_buffer.rb, line 27 def initialize(output) @output = output @buffer = "" @buffer_mode = nil @output_type = :start @list_indent_stack = [] @paragraph_modifier = nil @cancel_modifier = false @mode_stack = [] @logger = Logger.new(STDERR) if ENV['DEBUG'] @logger.level = Logger::DEBUG else @logger.level = Logger::WARN end @re_help = RegexpHelper.new push_mode(:normal) end
Accumulate the string<EMAIL_ADDRESS># File lib/org-ruby/output_buffer.rb, line 95 def << (str) if @buffer_mode && @buffer_mode != current_mode then raise "Accumulation buffer is mixing modes: @buffer_mode == #{@buffer_mode}, current_mode == #{current_mode}" else @buffer_mode = current_mode end @buffer << str end
# File lib/org-ruby/output_buffer.rb, line 54 def current_mode_list? (current_mode == :ordered_list) or (current_mode == :unordered_list) end
Tests if we are entering a table mode.
# File lib/org-ruby/output_buffer.rb, line 83 def enter_table? ((@output_type == :table_row) || (@output_type == :table_header) || (@output_type == :table_separator)) && (current_mode != :table) end
Tests if we are existing a table mode.
# File lib/org-ruby/output_buffer.rb, line 89 def exit_table? ((@output_type != :table_row) && (@output_type != :table_header) && (@output_type != :table_separator)) && (current_mode == :table) end
Gets the current list indent level.
# File lib/org-ruby/output_buffer.rb, line 105 def list_indent_level @list_indent_stack.length end
# File lib/org-ruby/output_buffer.rb, line 63 def pop_mode(mode = nil) m = @mode_stack.pop @logger.warn "Modes don't match. Expected to pop #{mode}, but popped #{m}" if mode && mode != m m end
Prepares the output buffer to receive content from a line. As a side effect, this may flush the current accumulated text.
# File lib/org-ruby/output_buffer.rb, line 71 def prepare(line) @logger.debug "Looking at #{line.paragraph_type}: #{line.to_s}" if not should_accumulate_output?(line) then flush! maintain_list_indent_stack(line) @output_type = line.paragraph_type end push_mode(:table) if enter_table? pop_mode(:table) if exit_table? end
Test if we‘re in an output mode in which whitespace is significant.
# File lib/org-ruby/output_buffer.rb, line 110 def preserve_whitespace? return current_mode == :code end


StoneCrete Inc,
7901 4Th St N Suite 300
St Petersburg, FL 33702
{{with .ID}}INVOICE
#{{.FakturInvoiceId}}
{{end}}Bill To:
{{if .Customer}}{{.Customer.FullName}}
{{.Customer.Address.Address}}
{{.Customer.Address.City}},{{.Customer.Address.State}} {{.Customer.Address.ZipCode}}
Date:
{{.Date.Format "January 2, 2006"}}
Payment Terms:
{{.Customer.Terms}}
Due Date:
{{.Date.Format "January 2, 2006"}}
{{end}}Balance Due:
${{.BalanceDue}}
Item
Description
Amount
Quantity
Rate
|
{{.ItemNumber}} |
{{.Description}} |
{{.Quantity}} |
${{.Rate}} |
${{.SubTotal}} |
|
Subtotal: |
${{.SubTotal}} |
|
Tax (7%): |
${{.TaxAmount}} |
|
Total: |
${{.Total}} |
|
Amount Paid: |
${{.AmountPaid}} |
Terms:
{{with .Customer}}{{.Notes}} Thank you kindly for your valued business!
{{end}}


library(magrittr) # for %>%, %T>%, %<>%
library(rlang) # for %|%, %||%
library(knitr)
library(ggplot2)
The interview file is a compilation of all data collected in interviews. Interviewee names have been removed for the publicly available version.
data.dir <- here::here("data")
interview.file <- file.path(
data.dir,
"interviews_anon.xlsx"
)
biodata <- readxl::read_excel(interview.file, sheet = "Biodata") %>%
magrittr::set_names(make.names(names(.)))
interviews <- readxl::read_excel(interview.file, sheet = "Interview") %>%
magrittr::set_names(make.names(names(.)))
focusgroups <- readxl::read_excel(interview.file, sheet = "Focus group") %>%
magrittr::set_names(make.names(names(.)))
specimen_id <- readxl::read_excel(
interview.file,
sheet = "Specimen ID",
col_types = "text") %>%
magrittr::set_names(make.names(names(.)))
The species key handles synonymy and defines the formal citation and the abbreviation for each species.
species.file <- file.path(data.dir, "species.csv")
specieskey <- readr::read_csv(species.file, col_types = "cccc")
The symbology files give abbreviations and aesthetics to use when plotting the different ethnic groups and villages.
groups.file <- here::here("data", "groups.csv")
groups <- readr::read_csv(groups.file, col_types = "cccc")
villages.file <- here::here("data", "villages.csv")
villages <- readr::read_csv(villages.file, col_types = "ccccii")
villagegroups.file <- here::here("data", "villagegroups.csv")
villagegroups <-
readr::read_csv(villagegroups.file, col_types = "cc") %>%
dplyr::left_join(groups, by = c("Group")) %>%
dplyr::left_join(villages, by = c("Village"), suffix = c("Group", "Village")) %>%
dplyr::mutate(VillageGroup = paste0(Village, Group))
The installation history file gives the length of time each group has been present in each village.
installation_file <- file.path(data.dir, "installation.csv")
installation <- readr::read_csv(installation_file, col_types = "cci")
specimens <-
readxl::read_xls(
here::here("data", "specimens.xls"),
col_types = c(
"text",
"date",
rep("text", 5),
rep("logical", 3),
rep("numeric", 10)
)
)
Load the sequences.
seqs <-
here::here("data", "fullseqs.fasta") %>%
seqinr::read.fasta()
seqs <- tibble::tibble(
specimen_ID = seqinr::getName(seqs),
seq = unlist(seqinr::getSequence(seqs, as.string = TRUE)),
Species.photo = stringr::str_extract(specimen_ID, "\\d+")
)
List “extra” names from the species key. There should not be any.
dplyr::anti_join(specieskey, interviews, by = c("original" = "Scientific.name")) %>%
dplyr::anti_join(focusgroups, by = c("original" = "Scientific.name"))
## # A tibble: 0 x 4
## # … with 4 variables: original <chr>, canonicalName <chr>, Abbrev <chr>,
## # scientificName <chr>
Ensure all species present in the focus group data are also present in the species key.
focusgroups %>%
dplyr::anti_join(specieskey, by = c("Scientific.name" = "original")) %>%
dplyr::pull(Scientific.name) %>%
unique() %>%
sort() %T>%
{stopifnot(length(.) == 0)}
## character(0)
Replace the names in the focus groups data with the canonical names from the species list.
focusgroups %<>%
dplyr::left_join(specieskey, by = c("Scientific.name" = "original")) %>%
dplyr::select(-Scientific.name)
Unique values for Village
:
unique(focusgroups$Village)
## [1] "Angaradebou" "Bio sika" "Gando" "Sonnoumon"
These are consistent, but Bio Sika should be capitalized. Make them factors, using abbreviations.
focusgroups$Village %<>%
stringr::str_to_title() %>%
factor(levels = villages$Village.Long, labels = villages$Village)
Unique values for Ethnic.group
:
unique(focusgroups$Ethnic.group)
## [1] "Yom" "Lokpa" "Gando" "Bariba"
These are consistent. Make them factors, using abbreviations.
focusgroups$Ethnic.group %<>%
factor(levels = groups$Group.Long, labels = groups$Group)
Ensure all species present in the interviews are also present in the species key.
interviews %>%
dplyr::select(Scientific.name) %>%
unique() %>%
dplyr::filter(!Scientific.name %in% specieskey$original) %>%
{stopifnot(nrow(.) == 0)}
Add canonical names for each species.
interviews %<>%
dplyr::left_join(specieskey, by = c("Scientific.name" = "original")) %>%
dplyr::select(-Scientific.name)
What are the values for Recognize
?
unique(interviews$Recognize)
## [1] "y" "n" NA
Assume that missing data (NA
) means that they do not recognize it.
interviews %<>%
dplyr::mutate(Recognize = (Recognize == "y") %|% FALSE)
Unique values for Preference
:
unique(interviews$Preference)
## [1] "4" "3" "2" "1" "n/a" "0" "?" NA
Force them to be integers; this will map "n/a"
and "?"
to NA
.
interviews %<>% dplyr::mutate(Preference = as.integer(Preference))
## Warning in mask$eval_all_mutate(dots[[i]]): NAs introduced by coercion
Now the values are:
unique(interviews$Preference)
## [1] 4 3 2 1 NA 0
Unique values for Village
:
unique(biodata$Village)
## [1] "Gando" "Sonnoumon" "Faba" "Bio Sika" "Angaradebou"
unique(installation$Village)
## [1] "Angaradebou" "Bio Sika" "Faba" "Gando" "Sonoummon"
These are consistent. Make them factors, using abbreviations.
biodata$Village %<>%
factor(levels = villages$Village.Long, labels = villages$Village)
installation$Village %<>%
factor(levels = villages$Village.Long, labels = villages$Village)
Unique values for Ethnic.group
:
unique(biodata$Ethnic.group)
## [1] "Gando" "Bariba" "Nagot"
## [4] "Peuhl/Fulfulde/Fulani" "Lokpa" "Yom"
unique(installation$Ethnic.group)
## [1] "Yom" "Lokpa" "Bariba" "Gando"
These are consistent. Make them factors, using abbreviations.
biodata$Ethnic.group %<>%
factor(levels = groups$Group.Long, labels = groups$Group)
installation$Ethnic.group %<>%
factor(levels = groups$Group.Long, labels = groups$Group)
Now join the installation history data to the main data.
biodata %<>%
dplyr::left_join(installation, by = c("Village", "Ethnic.group"))
Add a factor which uniquely identifies both Village and Ethnic group for each interviewee.
biodata %<>%
dplyr::mutate(
VillageGroup = paste0(Village, Ethnic.group),
VillageGroup = factor(VillageGroup,
levels = villagegroups$VillageGroup)
)
Unique values for Age
sort(table(biodata$Age))
##
## 17 18 22 24 25 27 32 33 37 38 39 43 52 55 59 >50 50 60 >70 30
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 3 4 4
## 45 35 40 >60
## 4 8 8 20
There are values of “\(>50\)”, “\(>60\)”, and “\(>70\)”; in particular “\(>60\)” is by far the most common value. All other values which are represented more than once are multiples of 5. This suggests that respondents frequently round their ages.
Previous works have divided respondants into age categories “young” <18, “adult” 18-35, and “old” 35+. We have only a very small number of “young” respondents, so we will simply split into <35 and 35+.
biodata %<>%
dplyr::mutate(
NumAge = readr::parse_number(Age),
Age.group = cut(
NumAge,
c(0, 35, Inf),
c("<35", "35+"),
right = FALSE,
ordered_result = TRUE
)
)
Here is a plot of the age distribution before binning: (The “>” values are plotted at the age given, even though it is a minimum.)
ggplot(biodata, aes(x = NumAge)) +
geom_bar()
And after binning:
ggplot(biodata, aes(Age.group)) +
geom_bar()
Values of Sex
:
unique(biodata$Sex)
## [1] "F" "M"
No problems here, make it a factor.
biodata$Sex %<>% factor()
Let’s call it Gender
instead of Sex
.
biodata %<>% dplyr::rename(Gender = Sex)
Compile all the vernacular names used in the interviews, and count how many times each was given.
nametable <-
# add a column to indicate whether the name came from an interview
# or focus group
list(
interviews %>% dplyr::mutate(setting = "interview"),
focusgroups %>% dplyr::mutate(setting = "focus group")
) %>%
# select relevant columns and join the tables
purrr::map_dfr(
dplyr::select,
canonicalName, scientificName, Abbrev, Vernacular.name,
Language, Meaning.of.the.name, setting
) %>%
# force to lower-case
dplyr::mutate_at("Vernacular.name", tolower) %>%
# n is the number of times the name was given in interviews
# asterisks (star) indicate that the name was given in focus groups
dplyr::group_by_at(dplyr::vars(!setting)) %>%
dplyr::summarize(
n = sum(setting == "interview"),
star = strrep("*", sum(setting == "focus group"))
) %>%
dplyr::ungroup() %>%
# sort
dplyr::arrange(Vernacular.name, Language, Abbrev) %>%
# a missing name is not a name
dplyr::filter(
!is.na(Vernacular.name),
Vernacular.name != "n/a",
Vernacular.name != "no name"
)
Write the name table to a file; this file was used as a base for further manual name curation.
name_table_file <- file.path(data.dir, "name_table.csv")
if (!file.exists(name_table_file))
readr::write_csv(nametable, name_table_file)
Read the file with manual name curation.
fixed_name_table_file <- file.path(data.dir, "name_table_Boni-SB.xls")
fixed_name_table <- readxl::read_xls(fixed_name_table_file) %>%
dplyr::mutate_at("n", as.integer) %>%
dplyr::mutate_at("star", tidyr::replace_na, "")
Make sure that both files cover all the same rows. These are written to files so that an external diff tool can be used to address any mismatches.
match_cols <- c("canonicalName", "scientificName", "Abbrev",
"Vernacular.name", "Language", "Meaning.of.the.name",
"n", "star")
nametable_test <-
nametable %>%
dplyr::arrange(Language, Vernacular.name, Abbrev,
Meaning.of.the.name, n, star) %>%
dplyr::select(dplyr::all_of(match_cols)) %T>%
readr::write_csv(file.path(data.dir, "oldnametable.csv"))
fixed_name_table_test <-
fixed_name_table %>%
dplyr::arrange(Language, Vernacular.name, Abbrev,
Meaning.of.the.name, n, star) %>%
dplyr::select(dplyr::all_of(match_cols)) %T>%
readr::write_csv(file.path(data.dir, "newnametable.csv"))
stopifnot(isTRUE(all.equal(nametable_test, fixed_name_table_test)))
Create a table using just the curated names.
fixed_name_table <-
dplyr::select(
fixed_name_table,
"canonicalName", "scientificName", "Abbrev",
Alternate.name = "Vernacular.name",
Vernacular.name = "New.Vernacular.name",
"Language",
Meaning.of.the.name = "New.Meaning.of.the.name",
"n", "star", "explanation":"technique") %>%
# some rows contain two different names
tidyr::separate_rows(Vernacular.name, Meaning.of.the.name, sep = ";") %>%
# remove white space
dplyr::mutate_at(c("Vernacular.name", "Meaning.of.the.name"), trimws) %>%
{dplyr::left_join(
dplyr::select(., -"Alternate.name") %>%
dplyr::group_by(dplyr::across(c(-n, -star))) %>%
dplyr::summarize(n = sum(n), star = paste0(star, collapse = "")),
dplyr::select(., Language, Vernacular.name, Alternate.name) %>%
dplyr::filter(Vernacular.name != Alternate.name) %>%
dplyr::group_by(Language, Vernacular.name) %>%
dplyr::summarize_all(paste, collapse = ", "),
c("Language", "Vernacular.name")
)} %>%
dplyr::mutate(species = glue::glue("{canonicalName} ({n}{star})")) %>%
dplyr::ungroup() %>%
dplyr::group_by(Vernacular.name, Language, Meaning.of.the.name,
dplyr::across(explanation:technique)) %>%
dplyr::summarize(species = paste(species, collapse = "; "))
Output a file including names which still have multiple entries.
problem_name_table <-
dplyr::group_by(fixed_name_table, Vernacular.name, Language) %>%
dplyr::filter(dplyr::n() > 1) %>%
dplyr::arrange(Language, Vernacular.name) %T>%
openxlsx::write.xlsx(here::here("output", "problem_names.xlsx"))
## Note: zip::zip() is deprecated, please use zip::zipr() instead
Format the names table for output.
fixed_name_table %<>%
tidyr::pivot_longer(
cols = unknown:technique,
names_to = "characteristics"
) %>%
dplyr::filter(!is.na(value)) %>%
dplyr::mutate(
type = dplyr::case_when(
characteristics %in% c("color", "shape", "size", "texture", "changes") ~ "physical",
characteristics %in% c("habitat", "growth habit") ~ "ecological",
characteristics %in% c("edibility", "technique") ~ "practical",
characteristics == "unknown" ~ "unknown"
)) %>%
dplyr::select(-value) %>%
dplyr::ungroup()
Include only the four Ethnic groups with enough data to be included in the statistical analysis.
row_data <- interviews %>%
dplyr::select(ID, Recognize, Preference, Abbrev) %>%
dplyr::left_join(
biodata %>%
dplyr::select(ID, Village, Ethnic.group, VillageGroup,
Age.group, Gender, Installation),
by = "ID") %>%
dplyr::filter(Ethnic.group %in% c("Gan", "Yom", "Lok", "Bar"))
Some species were only shown as specimens, and were not available on every day. These are removed from the analysis.
specimen.only <- interviews %>%
dplyr::select(Specimen.photo, Abbrev) %>%
dplyr::group_by(Abbrev) %>%
dplyr::filter(all(Specimen.photo == "Specimen")) %>%
dplyr::pull(Abbrev) %>%
unique()
row_data %<>% dplyr::filter(!Abbrev %in% specimen.only)
Sum the number of species recognized by each respondent to create the data for the GLM analysis.
knowledge <- row_data %>%
dplyr::group_by(ID, Village, Ethnic.group, Age.group, Gender, Installation) %>%
dplyr::summarize(Recognize = sum(Recognize, na.rm = TRUE)) %>%
dplyr::ungroup() %>%
dplyr::mutate_at("Ethnic.group", forcats::fct_drop)
Make the community matrices for CCA analysis. knowledge.matrix
has interviewees as rows, and species as columns, where the value is \(1\) if the interviewee recognized the species, or \(0\) if they did not. preference.matrix
has the same row and column setup, but the value is the degree of preference the interviewee has for the species (or \(0\) if they do not use/know it).
In both cases, we must also remove any rows which are empty, and columns with only one non-zero entry. In the knowledge matrix, this means people which do not know any mushrooms, and mushrooms which only one person knows. In the preference matrix, this means people who do not use any mushrooms (with preference >= 1) and mushrooms which nobody considers useful (preference >= 1).
knowledge.matrix <-
row_data %>%
dplyr::filter(Recognize) %>%
dplyr::group_by(Abbrev, ID) %>%
dplyr::summarize_at("Recognize", max) %>%
tidyr::pivot_wider(
names_from = Abbrev,
values_from = Recognize,
values_fill = 0
) %>%
dplyr::arrange(ID) %>%
tibble::column_to_rownames("ID") %>%
as.matrix() %>%
magrittr::extract(rowSums(.) > 0, colSums(.) > 2)
preference.matrix <-
row_data %>%
dplyr::filter(Recognize, !is.na(Preference)) %>%
dplyr::group_by(Abbrev, ID) %>%
dplyr::summarize_at("Preference", mean) %>%
tidyr::pivot_wider(
names_from = Abbrev,
values_from = Preference,
values_fill = 0
) %>%
dplyr::arrange(ID) %>%
tibble::column_to_rownames("ID") %>%
as.matrix() %>%
magrittr::extract(
rowSums(.) > 0,
apply(., 2, function(col) sum(col > 0) > 2)
)
The CCAs also require biographical data for the interviewees.
knowledge.biodata <- tibble::tibble(ID = row.names(knowledge.matrix)) %>%
dplyr::left_join(biodata, by = "ID")
preference.biodata <- tibble::tibble(ID = row.names(preference.matrix)) %>%
dplyr::left_join(biodata, by = "ID")
Write the data as CSVs.
if (!dir.exists(here::here("output"))) dir.create(here::here("output"))
readr::write_csv(knowledge, here::here("output", "knowledge_data.csv"))
write.table(knowledge.matrix, here::here("output", "knowledge_matrix.csv"))
write.table(preference.matrix, here::here("output", "preference_matrix.csv"))
readr::write_csv(knowledge.biodata, here::here("output", "knowledge_biodata.csv"))
readr::write_csv(preference.biodata, here::here("output", "preference_biodata.csv"))
readr::write_csv(fixed_name_table, here::here("output", "nametable.csv"))
And as RDS for easy loading in R.
saveRDS(interviews, here::here("output", "interviews.rds"))
saveRDS(focusgroups, here::here("output", "focusgroups.rds"))
saveRDS(knowledge, here::here("output", "knowledge.rds"))
saveRDS(knowledge.matrix, here::here("output", "knowledge_matrix.rds"))
saveRDS(preference.matrix, here::here("output", "preference_matrix.rds"))
saveRDS(knowledge.biodata, here::here("output", "knowledge_biodata.rds"))
saveRDS(preference.biodata, here::here("output", "preference_biodata.rds"))
saveRDS(fixed_name_table, here::here("output", "nametable.rds"))


Goals{{goal.name}}Name: {{goal.name}}Frequency: {{goal.frequency}}Start Date: {{goal.startDate}}End Date: {{goal.endDate}}Status: {{parseStatus(goal.status)}}
There was a problem loading the data. Possibly the server is down or perhaps there are network
issues.
Please wait a bit and try again or start the server.
Please sign in with your google account to access Sunshine Journal


- Supports many languages
- Universality
- Allows you to reflect the user's transition to the goal
- Flexible in using
- User's geolocation
- Users sources
- The popularity of pages and sections of the site
- Acquisition
- Behavior
- Conversions
- Page loading speed
- Users actions on pages
- Device detection
- Percentage of conversions and sales
- The success of advertising channels
- New statistics parameters
- Cross-platform tracking
- Analysis center
- Google Analytics 4 check in debug mode


{{ define "main" }}
{{ .Content }}
{{/* Create a variable to use the same section twice. Note that we've included the date here. */}}
{{ $section := where .Data.Pages.ByDate.Reverse "Section" "post" }}
{{ if $section }}
Recent Articles
{{ range (first 3 $section) }}
{{ .Render "summary-with-image" }}
{{ end }}
More Posts
{{/* Nest the requirements, "after" then "first" on the outside */}}
{{ range (first 4 (after 1 $section)) }}


Syllabus
Course Overview
This course will explore the possibilities of design online from a conceptual, historical and programmatic perspective.
We will celebrate the Internet as a space for social and creative exchange as well as medium for independent expression. However we will also consider the browser as a tool of creative expression, in contrast to how it is often presented as a means of pragmatic exchange and consumption.
Through projects, readings, workshops, and presentations we will explore the relevance of network technologies in the context of contemporary art and graphic design practices.
Students will learn basic HTML, CSS, and JS programming along with methods for conceptualizing, designing, and developing websites. Outcomes won't necessary be practical, nor pragmatically functional. Instead we will strive for a poetic understanding of design and the Internet as mediums for critical research and discourse.
Learning Outcomes
- Develop a theoretical knowledge, technical understanding, and historical basis of the internet and design online
- Develop technical skills (HTML, CSS, and JS) to produce functioning websites
- Stimulate critical positions around design principles within networked technologies
- Analyze current digital aesthetics and their historical context
- Understand the social and cultural implications of information flows online
- Explore the Internet as a space that is public and private, and the corporate and political tensions embedded in such condition
- Gain insight into the contemporary landscape of Internet-based art and design practices
Material Requirements
- Personal laptop
- Visual Studio Code for editing and updating code
- Github pages for website hosting
- Dropbox Paper for reading discussions and text documents
- Adobe CC, or equivalent software (Sketch, Figma, Framer) for image/media generating and editing
- Phone, digital camera, scanner, screen capture etc.
Readings
- Each student will be responsible for presenting a short verbal summary of one reading, and leading a class discussion around it. Sign up for your week to present in this Paper doc.
- For every reading, each student must submit 3 questions to that week’s Paper doc (viewable in the Calendar section of this website) before 1pm the day of the assigned reading discussion.
In-Class Activities
Tuesdays generally consists of any combination of the following:
- Reading presentation/discussion
- Topic lecture/discussion
- Project critique/discussion
- Group activity
Thursdays generally consists of any combination of the following:
- Skill based workshop
- Personal working time
- One one one meeting
Grading
- 60% ... Projects 1 and 2
- 30% ... Workshop / Weekly Exercises
- 10% ... Reading Presentation and Participation (reading responses, class discussion, critique, etc.)
Letter grades represent the following:
A = excellent;
B = good;
C = satisfactory;
D = unsatisfactory;
F = failure.
A grade of C- or less is considered a failing grade for required courses within the major, and you will need to retake this course if you achieve a grade lower than a C.
Attendance
Attendance is required. Students are expected to be on time and remain in class for the entire period scheduled. Work missed due to any type of absence is the student’s responsibility. Three or more absences will result in a failing grade. Three arrivals later than 15 minutes after class begins equals an absence. If you absolutely must miss class, email me in advance.
Plagiarism
Students are expected to generate their own work. At the same time the nature of the web is inherently build on sharing knowledge and resources, and building upon others work – as such we will get familiar with using pre-existing code, language, and imagery as materials we shape into our own unique projects. We will learn how to appropriate mindfully, and credit work properly.
Code
Remixing existing code is often an important part of learning, but any code you take from an online resource needs to be commented with the source location where it appears in your project. For example:
For HTML


Module::Workflow::WorkflowWheel - Workflow POE Wheel helper for the Workflow implementation
This Wheel is helping the design of the Workflow. Each Wheel is capable of implementing the invoking-side of the workflow.
Here is a quick guide to get started with the workflow wheel:
Firstly, initialize a workflow wheel:
$_[HEAP]->{WF} = new Module::Workflow::WorkflowWheel( Workflow => new Module::Workflow::WorkflowGraph( %definition ), CompleteHandler => "wf_completed", ActionInvokeHandler => "wf_action" )
And start the workflow:
$_[HEAP]->{WF}->start();
When an action needs to be executed the wheel will trigger the ActionInvokeHandler
:
sub __wf_action { my ($self, $uuid, $action, $context, $custom) = @_[ OBJECT, ARG0..3 ]; .. invoke the action.. }
When the action is completed you must call the 'completed' method
sub __my_action_feedback { my $uuid = ... get the UUID of the invoked action ... $_[HEAP]->{WF}->completed($uuid, $new_context, $action_result); }
Also, every time you have some feedback for the progress of the action you must call the 'keepalive' method
sub __my_action_said_blah { my $uuid = ... get the UUID of the invoked action ... $_[HEAP]->{WF}->keepalive($uuid); }
If the workflow is completed it will trigger the CompleteHandler
Each workflow and each action are finite-state-machines that pass through the following states:
Workflow:
+------------- <- -------------------+ | | [ PENDING ] -> CALCULATING -> INVOKING -> ACTIVE -> ---+ | | | +----- -> FAILED ------ | \ +------ -> COMPLETED ----+-- -> [ DEAD ] / (User abort) ~> ABORTED ----+ / (Timeout timer) ~> TIMEOUT ----
Action:
[ PENDING ] -> ACTIVE -> ABORTED -> --- | \ v \ +-----------------------+--- -> [ DEAD ]
The transitions are performed through the main loop or through direct commands of the user or the timeout timers.
Constructs a new workflow handler Parameters that can/must be supplied:
Workflow => (Required) The workflow definition object ActionInvokeHandler => A message to dispatch when the workflow wants an action to be executed: ARG0 : [out] The UUID of the workflow ARG1 : [out] The UUID of the action ARG2 : [out] The action name ARG3 : [out] The action type ARG4 : [out] The context of the workflow ARG5 : [in/out] User-defined data for this action ActionAbortHandler => A message to dispatch when the workflow wants an action to be aborted ARG0 : [out] The UUID of the workflow ARG1 : [out] The UUID of the action ARG2 : [out] The action name ARG3 : [out] The context of the workflow ARG4 : [out] The reason it was aborted ARG5 : [in/out] User-defined data for this action ActionTimeoutHandler => An acction was timed out due to inactivity. This handler is called before the ActionAbortHandler ARG0 : [out] The UUID of the workflow ARG1 : [out] The UUID of the action ARG2 : [out] The action name ARG3 : [out] The context of the workflow ARG4 : [in/out] User-defined data for this action CompletedHandler => A message to dispatch when the workflow is completed ARG0 : [out] The UUID of the workflow ARG1 : [out] The workflow definition graph ARG2 : [out] The last return code FailedHandler => A message to dispatch when the workflow is failed because of another reason ARG0 : [out] The UUID of the workflow ARG1 : [out] The workflow definition graph ARG2 : [out] The suggested return code ARG3 : [out] The error description
(Re-)Start the workflow. If called while a workflow execution is already in progress it will cause the previous one to abort.
Abort the workflow. After this call the workflow wheel will dispatch a termination signal to all of the active actions but it will not wait for them to complete; it will consider the current state lost and exit.
This method is called as a response to the ActionInvokeHandler
, when the action that was invoked is completed (or
failed - this is determined by the return code).
The caller MUST supply the same ACTION_UUID as it was received from the ActionInvokeHandler.
If all the pending actions are completed the workflow will automatically continue to the next step.
This method should be called if the requested (by ActionInvokeHandler
) action was unable to be invoked. A human-readable
reason must be specified in order to properly log the event.
This method should be called when there was a feedback of any sort from the invoked action. This will reset the keep-alive timer that will fire if there was no feedback from the remote endpoint after a long period of time.


| Planner: | Sohaib Ahmad |
| Date: | 18th May 2015 |
| Time: | 6 PM |
| Slots Filled: | 3 / 5 Who? |
| Location: | Centaurus Cineplex |
| Meeting Place (Optional): | Outside Gate 10, NUST-12 | Contact Details: | 090076801 (Landline) 0331-1337123 (Mobile) |
| Description (Optional) | Don't forget to bring 3D glasses or enough extra money to buy one. Will be waiting at the stop near Gate 10 of NUST. |


|
| Value |
Description |
Notes |
|
| A01 |
By (author) |
Author of a textual work. |
| A02 |
With |
With or as told to: ‘ghost’ author of a literary work. |
| A03 |
Screenplay by |
Writer of screenplay or script (film or video). |
| A04 |
Libretto by |
Writer of libretto (opera): see also A31. |
| A05 |
Lyrics by |
Author of lyrics (song): see also A31. |
| A06 |
By (composer) |
Composer of music. |
| A07 |
By (artist) |
Visual artist when named as the primary creator of, eg, a book of reproductions of artworks. |
| A08 |
By (photographer) |
Photographer when named as the primary creator of, eg, a book of photographs. |
| A09 |
Created by |
|
| A10 |
From an idea by |
|
| A11 |
Designed by |
|
| A12 |
Illustrated by |
Artist when named as the creator of artwork which illustrates a text, or of the artwork of a graphic novel or comic book. |
| A13 |
Photographs by |
Photographer when named as the creator of photographs which illustrate a text. |
| A14 |
Text by |
Author of text which accompanies art reproductions or photographs, or which is part of a graphic novel or comic book. |
| A15 |
Preface by |
Author of preface. |
| A16 |
Prologue by |
Author of prologue. |
| A17 |
Summary by |
Author of summary. |
| A18 |
Supplement by |
Author of supplement. |
| A19 |
Afterword by |
Author of afterword. |
| A20 |
Notes by |
Author of notes or annotations: see also A29. |
| A21 |
Commentaries by |
Author of commentaries on the main text. |
| A22 |
Epilogue by |
Author of epilogue. |
| A23 |
Foreword by |
Author of foreword. |
| A24 |
Introduction by |
Author of introduction: see also A29. |
| A25 |
Footnotes by |
Author/compiler of footnotes. |
| A26 |
Memoir by |
Author of memoir accompanying main text. |
| A27 |
Experiments by |
Person who carried out experiments reported in the text. |
| A29 |
Introduction and notes by |
Author of introduction and notes: see also A20 and A24. |
| A30 |
Software written by |
Writer of computer programs ancillary to the text. |
| A31 |
Book and lyrics by |
Author of the textual content of a musical drama: see also A04 and A05. |
| A32 |
Contributions by |
Author of additional contributions to the text. |
| A33 |
Appendix by |
Author of appendix. |
| A34 |
Index by |
Compiler of index. |
| A35 |
Drawings by |
|
| A36 |
Cover design or artwork by |
Use also for the cover artist of a graphic novel or comic book if named separately. |
| A37 |
Preliminary work by |
Responsible for preliminary work on which the work is based. |
| A38 |
Original author |
Author of the first edition (usually of a standard work) who is not an author of the current edition. |
| A39 |
Maps by |
Maps drawn or otherwise contributed by. |
| A40 |
Inked or colored by |
When separate persons are named as having respectively drawn and colored artwork, eg for a graphic novel or comic book, use
A12 for ‘drawn by’ and A40 for ‘colored by’.
|
| A41 |
Pop-ups by |
Designer of pop-ups in a pop-up book, who may be different from the illustrator. |
| A42 |
Continued by |
Use where a standard work is being continued by somebody other than the original author. |
| A43 |
Interviewer |
|
| A44 |
Interviewee |
|
| A99 |
Other primary creator |
Other type of primary creator not specified above. |
| B01 |
Edited by |
|
| B02 |
Revised by |
|
| B03 |
Retold by |
|
| B04 |
Abridged by |
|
| B05 |
Adapted by |
|
| B06 |
Translated by |
|
| B07 |
As told by |
|
| B08 |
Translated with commentary by |
This code applies where a translator has provided a commentary on issues relating to the translation. If the translator has
also provided a commentary on the work itself, codes B06 and A21 should be used.
|
| B09 |
Series edited by |
Name of a series editor when the product belongs to a series. |
| B10 |
Edited and translated by |
|
| B11 |
Editor-in-chief |
|
| B12 |
Guest editor |
|
| B13 |
Volume editor |
|
| B14 |
Editorial board member |
|
| B15 |
Editorial coordination by |
|
| B16 |
Managing editor |
|
| B17 |
Founded by |
Usually the founder editor of a serial publication: Begruendet von. |
| B18 |
Prepared for publication by |
|
| B19 |
Associate editor |
|
| B20 |
Consultant editor |
Use also for ‘advisory editor’. |
| B21 |
General editor |
|
| B22 |
Dramatized by |
|
| B23 |
General rapporteur |
In Europe, an expert editor who takes responsibility for the legal content of a collaborative law volume. |
| B24 |
Literary editor |
An editor who is responsible for establishing the text used in an edition of a literary work, where this is recognised as
a distinctive role (in Spain, ‘editor literario’).
|
| B25 |
Arranged by (music) |
|
| B26 |
Technical editor |
|
| B99 |
Other adaptation by |
Other type of adaptation or editing not specified above. |
| C01 |
Compiled by |
|
| C02 |
Selected by |
|
| C99 |
Other compilation by |
Other type of compilation not specified above. |
| D01 |
Producer |
|
| D02 |
Director |
|
| D03 |
Conductor |
Conductor of a musical performance. |
| D99 |
Other direction by |
Other type of direction not specified above. |
| E01 |
Actor |
|
| E02 |
Dancer |
|
| E03 |
Narrator |
|
| E04 |
Commentator |
|
| E05 |
Vocal soloist |
Singer etc. |
| E06 |
Instrumental soloist |
|
| E07 |
Read by |
Reader of recorded text, as in an audiobook. |
| E08 |
Performed by (orchestra, band, ensemble) |
Name of a musical group in a performing role. |
| E09 |
Speaker |
Of a speech, lecture etc. |
| E99 |
Performed by |
Other type of performer not specified above: use for a recorded performance which does not fit a category above, eg a performance
by a stand-up comedian.
|
| F01 |
Filmed/photographed by |
|
| F99 |
Other recording by |
Other type of recording not specified above. |
| Z01 |
Assisted by |
May be associated with any contributor role, and placement should therefore be controlled by contributor sequence numbering. |
| Z98 |
(Various roles) |
For use ONLY with ‘et al’ or ‘Various’ within <UnnamedPersons>, where the roles of the multiple contributors vary. |
| Z99 |
Other |
Other creative responsibility not falling within A to F above. |
|


--- layout: default title: We Are Family ---
The traditional way of running a company has been documented by people from Harvard Business School and many other reputable institutions. If you do it differently you are considered to be in uncharted territory. I've started to notice that the new approaches companies like GitHub are taking to running a business are influenced a lot from the way families and family businesses are run. Becoming close with your coworkers and treating them like family helps foster innovation and creates an amazing culture where a variety of people can feel comfortable and enjoy themselves. Family members are honest with each other. Sometimes when someone critics you it can hurt, but when you know that it is backed with great respect and love you use it to help you become better. Having a great idea, creating useful products, and writing stellar code can be done by smart people. The difficult part is figuring out how to get tons of smart people to work well together. The social aspect is hard, but when you build a culture based off of values that are important to a family you'll see the amazing things that can be done.
We Are Family - RubyKaigi 2013 from rubykaigi on Vimeo.


Salmon Cookies Sales
Cookies sales broken down per hour
Cookie Stand Application
City
Minimum Customers Per Hour
Maximum Customers Per Hour
Average Cookies Purchased Per Customer
Submit
Back to Homepage


CheckSockets ( timeout_ms )
Checks all connected sockets for activity. If timeout_ms is greater than 0 than it will wait that many milliseconds. If less than 0
it will wait for over 49 days (hint: there is no reason what so ever to set this less than 0).
Example:
CheckSockets ( 0 )
This will return the number of sockets that have activity (ie. a connection was made or data was sent)


This application visualizes the average rental costs for living in Canada as specified at http://data.gc.ca/data/en/dataset/1146388b-a150-4e70-98ec-eb40cb9083c8 .
Matthew Fisher is OpDemand's Senior Software Developer. Born and raised on Vancouver Island, BC, Matthew prefers Python and Ruby as his weapons of choice. In December 2012, he graduated from the British Columbia Institute of Technology with a Diploma in Computer Systems Technology. He has previously completed co-op placements doing IT/System Administration work with Core Information Technology and AeroInfo Systems, where he received an AeroInfo Award of Excellence. He joined ActiveState in February 2013 as their Technical Product Manager, and eventually became OpDemand's Senior Software Developer in March, 2014. Matthew enjoys hacking away at projects on his own spare time, and really loves cheese. You can follow him on Twitter via @bacongobbler.
Jason Bolanos is a Vancouver-based web application developer specializing in software-as-a-service architectures. His forte is .NET/C#, Ruby, and JavaScript. He, along with Matthew, is an alumnus of the British Columbia Institute of Technology, having completed a Diploma in Computer Systems Technology in December 2012. Jason enjoys creative writing and hacking away at small pet projects in his free time, and is looking to jump into open-source projects as a hobby. You can catch Jason on Twitter at @Chocolancer.


- First two layers 1xN kernel over time
- Third layer 3x1 kernel over station components
- Pooling layer resampling 3x4 (stations and time)
- fully connected layer
- non-activated output layer
Andreas Steinberg¹*, Hannes Vasyura-Bathke²*, Peter Gaebler¹, Matthias Ohrnberger² and Lars Ceranna¹
1 Federal Institute for Geosciences and Natural Resources (BGR), B4.3 Federal Seismological Survey, Nuclear-Test Ban
2 University of Potsdam, Institute for Earth and Environmental Sciences
* equal contribution
$$ \text{Approximate Kullback-Leibler divergence } \text{by drawing Monte Carlo samples } $$
$$ \mathbf{w}^{(i)} \text{ from variational distribution } q(\mathbf{w} \lvert \boldsymbol{\theta}) $$
$$ \text{with prior distribution } p(\boldsymbol{w}) \text{ and data likeliehood } p(\mathcal{D}|\boldsymbol{w}) $$
$$ \mathcal{F}(\mathcal{D},\boldsymbol{\theta}) \approx {1 \over N} \sum_{i=1}^N \left[ \log q(\mathbf{w}^{(i)} \lvert \boldsymbol{\theta}) - \log p(\mathbf{w}^{(i)}) - \log p(\mathcal{D} \lvert \mathbf{w}^{(i)})\right] $$
$$ \boldsymbol{\theta} = (\boldsymbol{\mu}, \boldsymbol{\sigma}) $$
Disclaimer: this is a sketch!
Disclaimer: this is a sketch!
Design inspired by Kriegerowski et al., 2019
➜ errors in the Earth structure, timing and location can to be taken into account
after Tape and Tape, 2012 and Cesca et al., 2014
Ensemble of 6000 MT predictions for four earthquakes
Examplary waveform fits for Mw 4.1 on 2019/07/11 23:45:19
Forward calculated for 20% of the predicted ensemble, observed waveforms (black), MAP in red
Location of Mw 3.9 at 2019-07-06 17:59:15
➡ correlation of the LLK values with distance to the centroid location (black star)
Pre-print available at: https://www.essoar.org/doi/10.1002/essoar.10506663.1
We make the software available as a jupyter notebook at: https://github.com/braunfuss/BNN-MT
Time: 2020-11-09 21:47:07.800
Latitude [deg]: 49.149
Longitude [deg]: 8.131
Depth [km]: 4
Magnitude: 1.5


Israel and Gaza start truce after two days of deadly violence
by BNNIn the Middle East, after two days of military attacks between Israel and Palestinian militants that has left 32 people dead, a ceasefire has come into force, according to Egyptian, UN and militant representatives.
British public broadcaster BBC reports that Gaza’s Hamas-run health ministry says 32 Palestinians were killed by Israeli fire. On the side of Israel, 63 people have been treated for injuries and stress symptoms in Israel.
The violence began after an Israeli air strike killed a Palestinian Islamic Jihad commander.
Israel has not confirmed the ceasefire.
UN Middle East peace envoy Nickolay Mladenov stated both the UN and neighbouring Egypt had «worked hard to prevent the most dangerous escalation in and around Gaza from leading to war.»


Well, hello there!
thanks for using our appWe wanted to create this app so the latest information would be readily available to you. We will continue to add features throughout the year. If you would like to contribute, please contact us through the Contact page or on Github.
What People Are Saying
just a few words from our teachersWe asked teachers what they are looking forward to the most this year, and here are some of their answers:
Great product and awesome help to get for this! Many thanks mate! John Doe
Fast support, awesome file, good docs, this rocks! Thank you for all! John Doe
Thanks for the awesome item, just what I was searching for all along! John Doe
Fast loading, great support, easy to use, everything I asked for! John Doe
Recent Photos
see more on smugmugYou can share you awesome or latest projects in a simple and gorgeous touchscreen gallery! Here!


What is fedimg?
Fedimg is a Python-powered service that uploads the Fedora Cloud images on various Cloud providers. such as Amazon Web Services (AWS) .
How does it currently work?
Fedimg listens to fedmsg for nightly as well as the production compose builds messages. On receiving a new message, the FedimgConsumer triggers the upload process. fedimg uses fedfind to extract the metadata for the compose from where it get’s the URL for the compressed raw image files.
The AWS EC2Service then starts the process of creating the AMI.
-
Booting up the utility instance.
TheEC2Service
parses the fedimg configuration file to get the list of configuration regions mapped with the RHEL AMIs, AKIs, architecture etc.EC2Service.upload
starts the uploading by booting a utility instance in the first region(determined from the config file). The process continuously keeps trying to ssh into the machine to check if the machine has boot-ed up. -
Downloading image & taking snapshot
Once the utility instance is ready to use the compressed RAW image is downloaded in the secondary volume. A snapshot is taken out of the volume and the AMI is created out of it. -
The AMIs are then copied to the other regions
-
Testing the AMIs Once the AMIs are created, a very basic
/bin/true
test is performed on a test instance created using one of the created AMIs. Once the tests passes, the AMIs are made public.
At any point doing the execution, if the code throws an exception and even if
the AMIs fails the _clean_up
method is fired. The
method
cleans up the utility instance, test instance and the volumes which were
created.
The next blog post will discuss the issues related to the current architecture and about the new architecture.


(get-tty-buffer prompt-string [default-value])
Prompts for a buffer name using command completion and providing help. The function returns the name of the buffer as a string.
The optional default-value parameter provides the default input.
Example To insert a buffer name into the current buffer:
(insert-string (get-tty-buffer "Save buffer: "))See also:
Reads a single character from the terminal and returns it as an integer. The cursor is not moved to the message area, but is left in the text window; this is useful when writing things like query-replace and incremental search programs in MLisp.
See also:
(get-tty-command command-name [default-value])
Prompts for the name of a declared function (using command completion and providing help) and returns the name of the function as a string.
The optional default-value parameter provides the default input.
Example: The expand-mlisp-word function is simply:
(insert-string (get-tty-command ": expand-mlisp-word "))See also:
(get-tty-directory prompt [default-value])
Prompts for a directory name using command completion and providing help. The function returns the name of the directory as a string.
The optional default-value parameter provides the default input.
(get-tty-file prompt [default-value])
Prompts for a file name using command completion and providing help. The function returns the name of the file as a string.
The optional default-value parameter provides the default input.
Example: Insert a file name into the buffer:
(insert-string (get-tty-file "Insert file name: "))See also:
(get-tty-string prompt [default-value])
Reads a string from the terminal using its single string parameter as a prompt. Generally use inside MLisp programs to ask questions.
The optional default-value parameter provides the default input.
See also:
(get-tty-variable prompt [default-value])
Prompts for the name of a declared variable (using command completion and providing help) and returns the name of the variable as a string.
The optional default-value parameter provides the default input.
See also:
Returns the value of the named environment symbol.
See also:
(global-binding-of key-sequence)
Returns the name of the function that the provided key sequence will invoke, using the global keymap.
See also:
Moves dot to the specified character position.
Example:Go to character position 22:
(goto-character 22)
(goto-window-at-x-y X-coordinate Y-coordinate)
This MLisp function is for supporting a mouse-style pointing device. The function takes two arguments, the X and Y co-ordinates of the pointer on the screen.
goto-window-at-x-y performs two operations:
- It changes the current window to be the one at the X and Y co-ordinates. A window is considered to be the mode line of the window, the vertical dividing line to its right and the content region of the window.
- If the co-ordinates are in the contents of the window, dot is set to the position nearest the co-ordinates, otherwise dot is left unchanged.
goto-window-at-x-y returns an integer result that tells you which part of a window the co-ordinates are in. The result is one of the following:
- 0 -- in the content region of the window
- 1 -- in the mode-line
- 2 -- in the vertical divider
- 3 -- in both the mode-line and the vertical divider


We are a team with dreams! We are committed to providing users with high-quality services and providing users with perfect experience applications!
If you have any questions, you can contact us at the email address<EMAIL_ADDRESS>A content-rich, powerful desktop widget APP, which is very good to organize and beautify the mobile phone desktop. The software is simple to operate. The use of widgets makes the use of various software functions in the mobile phone more convenient. The widget APP is rich in built-in content. You can use it to easily create custom widgets to make your desktop unique. This software can meet both the appearance requirements and the practical requirements of users. Really high quality and low price.
Main Features:
-To-do list, step count, digital clock, calendar, system information, countdown day anniversary and other functional component templates. There are many types of templates for each component.
-Each part is divided into large, medium and small form, according to your own hobbies, you can be creative and free to combine
-Personalized widget settings, multiple text colors, multiple font forms, multiple widget background images, and rich resources. You can create widget display forms freely.
-There are a large number of wallpapers built in the widget, with wallpapers in solid colors, gradient colors and patterns, which are classified clearly and beautify the phone.
We will also continue to update and optimize the product.


{% if department != 'NONE'%}
DEPARTMENT OF {{ department }}
{% elif division != 'NONE'%}
DIVISION OF {{ division }}
{% endif %}
THESIS ORAL SCHEDULE - {{ time }}
{% for row in oraltable %}
{% for cell in row %}
{# 'h' and 'c' stand for 'header' and 'cell' respecitvely and they mark if a row is a should be made of th tags or td tags, as such these markers in the oraltable 2D array should not be printed #}
{% if cell == "h" or cell == "c" %}
{% else %}
{# the |safe tells jinja to interpret the text in the variable as html rather than plaintext #}
{% if row[0] == "h" %}


Use this opportunity to get a 25 minute one-on-one session with a leadership coach - get practical tips that will help you grow and tackle your challenges. Sign ups for spots will happen on-site.
Executive leadership coach and career consultant Laura Close sees a select portfolio of professionals and entrepreneurs open to the transformative work of leadership development. Seattle clients book private sessions in her Pioneer Square office and remote clients see her live on Skype. Laura’s first book is due out in 2019. Learn more at LauraClose.com.
You'll have the chance to book your free 25 minute consultation with Laura on-site at Tech Women Rising. During your private mini Laura will listen to your topic area and offer frameworks and tips from her private practice that you can apply to growing your influence, leadership, career or business ownership trajectory. From management to negotiations to client acquisition she is ready to listen.
Janet has over 20 years of experience as a coach, consultant and business leader with emphasis on organizational strategy and change, and leadership development. She believes that high performing organizations and impacts start with individual leadership, no matter what role/level a person is within an organization. Janet helps leaders transition into new roles, maximize their opportunity, and build more resilient teams and programs. Learn more at Consociata.
You’ll have the chance to book a free first-come, first-serve 25 minute coaching session with Janet. If you are preparing for a crucial conversation, learning how to be a more effective team leader, or figuring out your team dynamics and how to be more influential as a team player, Janet will be a sounding board around your challenge and objective. She’ll discuss with you ideas and possible strategies based on her work consulting to, being on, and leading teams.
Janice spent 25 years fighting the good fight to keep sanity, creativity, and productivity in the emerging technology space (marketing, communications, product development, business development) before founding her leadership and career coaching practice. She is a passionate advocate for women leaders and helped found women’s leadership programs at both Expedia and T-Mobile. Janice’s mission is to help others, especially women, recognize their potential and achieve their definition of success. Learn more at ActuallyICan.coach.
Tech Women Rising is making Janice’s services available all day Saturday for participants. Sign up for free, 25-minute coaching sessions on a first come, first serve basis. Bring a topic or issue you’ve been wrestling with, a goal you’re struggling to achieve, or an idea you’ve been wanting to pursue and leave the mini session with more clarity and at least one next step toward your definition of success.


51 lint errors found in _dev\script\form.php [1,1](E030) Expected an identifier and instead saw '<'. [1,2](E033) Expected an operator and instead saw '?'. [1,2](W030) Expected an assignment or function call and instead saw an expression. [1,3](W033) Missing semicolon. [1,3](W030) Expected an assignment or function call and instead saw an expression. [1,6](W033) Missing semicolon. [138,50](W116) Expected ')' and instead saw 'as'. [138,52](W033) Missing semicolon. [138,53](W030) Expected an assignment or function call and instead saw an expression. [138,59](W033) Missing semicolon. [138,59](E030) Expected an identifier and instead saw ')'. [138,59](W030) Expected an assignment or function call and instead saw an expression. [138,60](W033) Missing semicolon. [142,19](W069) ['email'] is better written in dot notation. [142,49](W069) ['email'] is better written in dot notation. [145,10](W069) ['email'] is better written in dot notation. [145,36](W069) ['email'] is better written in dot notation. [147,26](W069) ['email'] is better written in dot notation. [147,66](W069) ['email'] is better written in dot notation. [147,101](W069) ['email'] is better written in dot notation. [147,137](W069) ['email'] is better written in dot notation. [147,161](E030) Expected an identifier and instead saw ']'. [147,163](E033) Expected an operator and instead saw '='. [147,165](E020) Expected ']' to match '[' from line 147 and instead saw 'Email address is invalid'. [147,165](W030) Expected an assignment or function call and instead saw an expression. [147,237](W069) ['email'] is better written in dot notation. [147,350](E030) Expected an identifier and instead saw ']'. [147,352](E033) Expected an operator and instead saw '='. [147,354](E020) Expected ']' to match '[' from line 147 and instead saw 'Email address is invalid'. [147,354](W030) Expected an assignment or function call and instead saw an expression. [147,427](W041) Use '===' to compare with '0'. [147,441](E030) Expected an identifier and instead saw ']'. [147,443](E033) Expected an operator and instead saw '='. [147,445](E020) Expected ']' to match '[' from line 147 and instead saw 'Email address is invalid'. [147,445](W030) Expected an assignment or function call and instead saw an expression. [147,571](E030) Expected an identifier and instead saw ']'. [147,573](E033) Expected an operator and instead saw '='. [147,575](E020) Expected ']' to match '[' from line 147 and instead saw 'Email address is invalid'. [147,575](W030) Expected an assignment or function call and instead saw an expression. [147,633](W116) Expected ')' and instead saw 'as'. [147,635](W033) Missing semicolon. [147,636](W030) Expected an assignment or function call and instead saw an expression. [147,642](W033) Missing semicolon. [147,642](E030) Expected an identifier and instead saw ')'. [147,642](W030) Expected an assignment or function call and instead saw an expression. [147,643](W033) Missing semicolon. [147,717](E030) Expected an identifier and instead saw ']'. [147,719](E033) Expected an operator and instead saw '='. [147,721](E020) Expected ']' to match '[' from line 147 and instead saw 'Email address is invalid'. [147,721](W030) Expected an assignment or function call and instead saw an expression. [147,721](E043) Too many errors. (57% scanned).
csslint: There are 19 problems in /Users/aplummer/Desktop/dnw/_dev/style/style.css. style.css 1: warning at line 1340, col 1 Attribute selectors with ^= are slow! [class^="icon-"]:before, [class*=" icon-"]:before { style.css 2: warning at line 1340, col 1 Unqualified attribute selectors are known to be slow. [class^="icon-"]:before, [class*=" icon-"]:before { style.css 3: warning at line 1340, col 26 Unqualified attribute selectors are known to be slow. [class^="icon-"]:before, [class*=" icon-"]:before { style.css 4: warning at line 1340, col 26 Attribute selectors with *= are slow! [class^="icon-"]:before, [class*=" icon-"]:before { style.css 5: warning at line 1479, col 3 Use of !important border-bottom: 0 !important; } style.css 6: warning at line 1562, col 3 Fallback border-bottom (hex or RGB) should precede RGBA border-bottom. border-bottom: 1px solid rgba(63, 71, 71, 0.34); style.css 7: warning at line 1660, col 5 Fallback border-bottom (hex or RGB) should precede RGBA border-bottom. border-bottom: 1px solid rgba(63, 71, 71, 0.34); } style.css 8: warning at line 1740, col 3 Fallback border (hex or RGB) should precede RGBA border. border: 1px solid rgba(0, 0, 0, 0.3); style.css 9: warning at line 1741, col 21 Values of 0 shouldn't have units specified. box-shadow: inset 0px 3px 1px 0px rgba(0, 0, 0, 0.15); } style.css 10: warning at line 1741, col 33 Values of 0 shouldn't have units specified. box-shadow: inset 0px 3px 1px 0px rgba(0, 0, 0, 0.15); } style.css 11: warning at line 1768, col 3 Fallback background (hex or RGB) should precede RGBA background. background: rgba(250, 250, 250, 0.9); style.css 12: warning at line 1789, col 5 The properties padding-top, padding-bottom, padding-left, padding-right can be replaced by padding. body > header nav a { style.css 13: warning at line 1946, col 5 Fallback background (hex or RGB) should precede RGBA background. background: rgba(250, 250, 250, 0.44); style.css 14: warning at line 2029, col 3 Fallback border-bottom (hex or RGB) should precede RGBA border-bottom. border-bottom: 1px solid rgba(63, 71, 71, 0.34); style.css 15: warning at line 2056, col 46 Element (a.active) is overqualified, just use .active without element name. .intro-thirds .home-quotes .pagination a.active { style.css 16: warning at line 2064, col 3 Fallback border-top (hex or RGB) should precede RGBA border-top. border-top: 1px solid rgba(63, 71, 71, 0.34); style.css 17: warning at line 2069, col 5 Use of !important clear: none !important; style.css 18: warning at line 2205, col 3 Fallback border-bottom (hex or RGB) should precede RGBA border-bottom. border-bottom: 1px solid rgba(63, 71, 71, 0.34); style.css 19: warning Too many floats (12), you're probably using them for layout. Consider using a grid system instead.


Amazon Black Friday 2019 deals: The best offers today, including 50 PC off Apple iPod Pro and Echo Dot
by Katie RussellTypically ahead of the curve, Amazon launched its Black Friday 2019 sales last Friday — a whole week before the official Black Friday date on November 29. It is not the only retailer to get a head start, however — John Lewis and Currys PC World have also jumped on the bandwagon and launched their November deals early.
Yet Amazon is the Godfather of the Black Friday sales, as the retailer that brought over the shopping event to the UK from the States. Last year alone, customers saved over £40 million in the Amazon Black Friday sales, and this year should be no different. As the online retailer stocks everything from toothbrushes to beard trimmers, there are serious savings to be made (and early Christmas presents to be bought) across the board.
Their deals this weekend comprise serious savings on televisions, laptops, headphones and more. Amazon-branded products (Echo Dot, Echo Show, Fire TV sticks, etc) also feature prominently in the sales. For more details, please see below for our round-up of the best Amazon Black Friday 2019 deals on offer today.
Today's best deals, according to The Telegraph
On the plus side, Amazon has launched hundreds of deals across a variety of tech and home appliances today. On the down side: that means you could be trawling on the site for hours.
To simplify the process, we have rounded up our favourite products in the sale so far...
1. Echo Dot (3rd Gen)
The Echo Dot, much like the Amazon Echo, is a small smart speaker that uses Alexa to play music, answer questions, tell you the news and more. It has a subtle pebble-like design that will suit any bedroom. Today, Amazon is offering this staple smart speaker at a 56 per cent discount. Already have a decent pair of speakers? The retailer is also selling the Echo Input (a device that adds Alexa to an external speaker) at a 57 per cent discount today, at £14.99, down from £34.99.
2. Apple iPad Pro - Silver
The 10.5-inch iPad Pro may not be as swish as the newer 11-inch or 12.9-inch models, but it still receives rave reviews for its functionality - you can easily watch movies or catch up on your favourite shows on your commute, plus it has a fast loading time, 10 hours of battery life and is easy to use. As it is a slightly older model, there is an impressive 49 per cent discount being offered - which is generous for such a pragmatic model.
If you want the kit with all the bells and whistles, however, there is a £200 discount on the 11-inch iPad Pro (now £719) and on the new 12.9-inch (now £1,518.99). The new model has a larger screen, uses Face ID and has a slightly better front camera, but it otherwise similar to the original model.
3. Philips 55PUS7304/12 4K UHD Smart TV
Black Friday is the time to invest in larger products, especially when they are given a significant discount. This 55-inch model from Philips has supreme picture quality, as it is 4K UHD, and can connect to apps, as it is a smart TV. It is energy efficient, with an A+ rating, and aesthetically pleasing, with its Ambilight in the background. Perfect for a movie night. This model has a 35 per cent discount, but Amazon has deals across its Samsung, Panasonic and LG models. Whichever model you go for, be sure to opt for 4K UHD for the best picture quality.
Smart home devices
Echo Show 8
The brand-new Echo Show 8 is surprisingly in the sales today. This 8-inch HD Smart Display connects to Alexa and can play music (with a rich stereo sound), display photos, set alarms, show you the day's news and more. Also in today's sales, the older model of the Echo Show 5 has a 38 per cent discount, at £49.99, down from £79.99.
Ring Video Doorbell Pro
Keep your home safe with the smart Ring Video Doorbell Pro, which allows you to see who's at your door - even when you're out of the house. The Ring Video Doorbell 2 is also in the sales, at £119, down from £179.
Fitbit Charge 3
It's never too late to get into fitness - and this advanced fitness tracker can help get you there. Measuring heart rate, step count and swim time, the Fitbit Charge 3 is a pragmatic and straightforward fitness tracker, with a seven-day battery life.
Phones and Headphones
Bang & Olufsen Beoplay H4 Wireless Headphones
Well known for the sound quality of their headphones, this offering from Bang & Olufsen is being significantly discounted in the Amazon Black Friday sales. While they aren't noise-cancelling, they do have superb sound and are supremely comfortable; plus, as they are wireless, they are the perfect gym accessory.
Bose QuietComfort 35 Wireless Headphones
With three levels of noise cancelling technology, these headphones are ideal when you're sitting next to that obnoxiously loud person on your commute. They may look simple, but these are actually smart headphones, Alexa and Google Assistant enabled, so you can easily listen to music or have your burning questions answered instantly.
Huawei P30 128 GB
As part of Amazon's Black Friday deals, the Huawei P30 model is being heavily discounted across the site. This model, with its high quality OLED screen and supreme picture quality (it has a triple camera), is being sold at 36 per cent off from its original retailing price.
Laptops and tablets
Fire HD10
This is the newest Fire tablet from Amazon, and is up to 30 per cent faster than the previous models. It has 10 hours' battery and a 10.1" screen, so you can watch movies with ease on your commute. Plus, you can expect high quality picture definition, due to its 1080p Full HD display.
The older models are also in the sale, and the Fire HD 8 is fairly similar to the new model (but with a smaller screen) so it may be worth investing there instead. The best Fire HD deals in the Amazon Black Friday sales:
- Fire HD 8 - was £79.99, now £44.99.
- Fire 7 - was £49.99, now £29.99
- Fire HD 10 Kids Edition Tablet - was £199.99, now £134.99
- Fire HD 8 Kids Edition Tablet - was £129.99, now £84.99
Kindle Oasis (2019)
The new Kindle Oasis has more high-end features that its contemporaries. Not only is it thin and waterproof, as has come to be expected from the brand, but the Oasis also has an adjustable warm light, where you can shift the screen colour from white to amber. Particularly ideal for cosying up by the fire with a good book.
Other great Kindle offers on sale today:
- Kindle Paperwhite (2018) - was £119.99, now £84.99
- Kindle (2019) was £69.99, now £54.99
ASUS ZenBook UX333 Full HD 13.3 Inch Laptop
Lightweight, quick and with a slick aesthetic, this model from ASUS is excellent value for money. It has a fairly large 13.3-inch screen (a matter of personal preference) yet is smaller than a piece of A4 paper. If this lightweight runaround doesn't tickle your fancy, Amazon is offering up to 25 per cent off other models, including the Microsoft Surface Pro 7, HP Chromebook 11, and offerings from Acer and Dell.
Home essentials
Oral-B Smart 4 CrossAction Electric Toothbrush
Black Friday is the ideal time to finally stock up on those home essentials. Like, for instance, a new electric toothbrush. This offering from Oral-B has a round head, which is good for reaching those nooks and crannies between your teeth - which, according to Oral-B, could remove more plaque.
Le Creuset Round Casserole 20cm Navy
A casserole dish from Le Creuset is one of those kitchen staples that feels like a slight indulgence, but is worth it because of the results. As we have found in our own review of the Le Creuset casserole dish, it is one of the best on the market, for its versatility (it even works in Agas) and gorgeous aesthetic. This deal will expire before midnight tonight, so don't miss out.
Miele 10661210 Blizzard CX1 Excellence PowerLine Bagless Vacuum Cleaner
On the lookout for a new vacuum cleaner? It may not be the most glamorous purchase, but it is certainly excellent value for money. This model from Miele has been highly reviewed for its suction power and for picking up pet hair. Amazon is also offering the Miele 11085200 Complete C3 Total Solution PowerLine for £262.49, at a 25 per cent discount.
Amazon's subscription services
As well as products, Amazon is offering deals on its subscription services this Black Friday (which, lest we forget, is a week-long event this year).
- New Prime Now customers will get £10 off their first shop.
- New AmazonFresh curstomers will get £40 off their first shop.
- Amazon Music Unlimited - new customers get up to four months of premium streaming for just £0.99.
- New members can explore Audible on any device for £3.99 a month for four months.
- Prime Video - up to 40% off select films, including Captain Marvel and Bohemian Rhapsody.
How to shop on Amazon this Black Friday
To prepare you for the havoc of Black Friday, we have collated some tips on how to check in and check out of Amazon, with your basket of deals, as quickly as possible.
- Create a membership. Be sure to register as a new customer so you can check out your items as quickly as possible. You could even save your card details to really speed up the process.
- Sign up for Amazon Prime. Amazon offer Prime members exclusive deals and early access to thousands of ‘lightning deals’ (the ones that usually sell out the fastest) 30 minutes before the rest of the internet.
- Keep track of the Telegraph’s live coverage of Black Friday - so you can find the best deals as soon as they’re on offer.
- Pre-fill your basket. Some savvy shoppers swear by pre-filling their baskets with rumoured products so they can check them out as soon as the deals go live.
- Shop around. While Amazon does usually have great deals, it doesn’t hurt to browse the Shopping tab on Google for a better deal.
- Check Flubit for a better deal. If you've found a product you like on Amazon, and you have a spare couple of hours, enter the URL into the Flubit generator - it will tell you if there's a better deal elsewhere on the internet. This can take up to three hours and Flubit, which receives a commission on each deal it facilitates, does sometimes admit that Amazon has the best price on an item.
Confused about what to buy? See Telegraph Recommended for best in class product reviews and expert buyer's guides.


Honest alloys pvt ltd is established at 70 km from ahmedabad,near vijapur city & on the way to mahudi jain temple. We, “Honest Alloys Private Limited”, are engaged in manufacturing, trading, supplying, and exporting a huge variety of premium quality mild steel products such as Mild Steel Angle , M.S PIPES ,M.S COIL. Our products are widely acknowledged for their unmatched quality.
Read More...M. S. Pipe
Rectangle Pipe
M.S. Square Pipe
M.S. Coil
M.S. Angles
M. S. Pipe
Rectangle Pipe
M.S. Square Pipe
M.S. Square Pipe
M.S. Angles
Since our establishment, quality has always been one of the foremost concerns of our organization. Our commitment to deliver unparalleled Mild Steel Products has earned us a distinct position in the industry. We have appointed quality experts, who make sure that all the quality control measures are strictly followed at each production stage. These experts ensure that the raw material are procured from trusted vendors of the industry. We are equipped with testing laboratory and scientific equipment for finished products as well as raw materials.
Achieving utmost satisfaction of our valuable clients is the main objective of our organization. To attain the same, we have
directed all our endeavors towards meeting each and every requirment of our clients. We ensure that our clients
get a flawless product range of mild steel products for which we check it stringently. Further, in order to meet
specific needs of our clients, we also offer them the facility of customization.
We have set up an efficient distribution network that helps us supply our products to clients within the
given time frame.


There has been a long time since I first wondered how people could ‘crack’ software like MS Office. For obvious reasons this blog is not intended to show anyone how to crack legit software but to help you to kickoff your RE skills. This is not a RE 101 post either. You will find lots of instructable content about how to actually do RE out there. My intention here is to build an index of great sources which will guide you through the wilderness of RE to somewhere better (hopefully).
Do, or do not. There is no ‘try’” (Yoda)
Why learning RE?
RE is hard. At least if you are not used to a bunch of x86 instructions, it will be a great challenge until you can call yourself a reverse engineer. This does not mean you should be afraid of it. On the contrary, the complexity of RE must be your fuel and motivation in order to learn it effectively. Some facts about RE:
- Steep learning curve
- Requires a lot of
patiencetime - You must stick to the details (but not too much!)
- It is a silent learning, people might not recognize your huge effort at first
So why exactly should you be spending your time with RE and not with something easier, faster or more noticeable? Because it pays you back really high. Right, I did not expect you to believe in me so quickly. Here are some reasons for you to keep reading:
- It will make you a much better programmer
- It is challenging
- Once you get to know it, it gives you super powers
- It is usual in CTFs
- Teaches you how to understand and write a bunch of exploits (pwning!)
- Essential for malware analysis and other infosec related areas
- ‘The world is full of fascinating problems waiting to be solved.’
- It is fun
All these topics are important, specially the last one. It is an essential skill to go from a ‘script kiddie’ to a real ‘hacker’. You really want to understand what is going on behind the curtains of your code? Metasploit? Want to make a CVE PoV? Or your own exploit? Keep reading, young Padawan.
Prerequisites
Since RE is not that simple, you would probably had more fun if you had some previous knowledge:
- C - no matter how much you love pythonic coding or if you are a .NET microsofted guy. C is basic stuff. Being able to decently understand C is essential for RE and will make you a better programmer. And remember, pointers are our friends!
- x86 instructions - this should be pretty obvious. If you have no idea of what mov eax, [esp+04h] does you already know where to start from.
- Basic computer architechture understanding - CPU, memory, registers, PC, von Neumann and other terms like these should not be aliens.
- Basic OS concepts - getting to know the basics of *nix and Windows systems will help you a lot. Processes, virtual memory, paging and others might give you an idea of what I am talking about.
While diving deeper in RE you will learn more and more about those topics. Again, some previous 101 knowledge will do you no harm.
Get ready… GO!
Now that you are fully convinced you should learn the ancient art of reverse engineering, let’s see some places to start.
Start here »
First of all, learn with those who already know and make the first connections in your network.
- #OpenToAll is THE team. People are really friendly and focused there. You will find n00bs and ancient masters exchanging ideas and helping one another. Go for their IRC channel and ask for a Slack ticket.
- http://wiki.opentoallctf.com/wiki/Reverse_Engineering - Some CTF teams have wonderful wikis which can help you in your journey.
- https://nets.ec/Main_Page - another awesome wiki and another awesome team. IRC channel requires Tor.
Now you have prepared your terrain, let’s beggin with the real stuff:
- Introductory Intel x86-64 - this is THE course for learning assembly the right way. Don’t take my word and check it out by yourself, you will not regret it.
- Keep improving your assembly skills with these amazing textbooks (do read them!)
All of these books have pretty good introductory chapters. Again, do read them!
Finally… exploitation!
I believe you should always follow an orientation so you do not waste a lot of effort on not so useful things. Optimize your studying, we are talking about engineering after all for God’s sake. In case you do not want to follow the books above, I strongly recommend you to enroll in the following courses (I am sure I do not even have to mention certificates are meant for skiddos, right?):
- Modern Binary Exploitation has become the de facto course on RE. I am talking about the 2015 class from RPISEC (a security club at Rensselaer Polytechnic Institute) that is public available. It is already a classic and should be your main guide. It is known as the MBE course, so famous it became.
- https://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/ - another great course.
I strongly advise you to look for some of the best things internet has provided the world with: top IT blogs.
- Corelan’s Blog - The buffer overflow series is a must read. And many others too.
- Gustavo Duarte’s Blog - Remember all the other sources I said were great? Forget about them.  Gustavo should be canonized.
Practicing your dojo
“There’s a difference between knowing the path and walking the path.” (Morpheus)
Crackmes and wargames are the way to go so you achieve the highest levels of basic mastery. Do not forget MBE’s labs though!
- http://crackmes.de/
- http://pwnable.kr/
- https://www.vulnhub.com/
Once you do it all, try playing some CTFs. Let me know in case you are interested in a guide like this about CTFs :)


Team Profile
Find your colleagues here.
Jimmy
Manager
Email:
<EMAIL_ADDRESS>ID:
38920
Office Number:
19203
Analia
Engineer
Email:
<EMAIL_ADDRESS>ID:
28391
Github:
https://github.com/AnaMolly
Sam
Intern
Email:
<EMAIL_ADDRESS>ID:
2891
School:
University of Toronto


Computer Commander is modern, fast, secure and expandable.
Computer Commander was created from the ground up for iOS 11, the latest and most powerful mobile OS yet.
Feel free to type in passwords or credit card information, as Computer Commander is backed by the industry standard in security.
Computer Commander runs in the cloud and takes seconds to achieve a high-resolution Remote Desktop session.
Gone are the days of checking on tasks; use Computer Commander’s Remote Actions and Statistics to be notified when something finishes.
Enrich your Computer Commander experience with a base of user-created items.
Get started by enabling access on your computer, then do so much more.
An ever greater taste of what you can accomplish with Computer Commander.


This is a reworked copy of a poem
that I made for my wife.
This version is intended to help demonstrate
how dramatically different appearances
are possible with clean markup and CSS.
Unfortunately, background color changes
are not redrawn well
in Internet Explorer.
At least not with version 6.


The real text is on my blog
This is a network or graph diagram that shows which university each professors went to, either they are regular full-time, adjunct or part-time and cross-appointed professors
As you can see there is a set of nodes of different size and colors.
As you can see (the yellow node) 5 professors went to the University of Western Ontario. Following up for 4 professors that attends McGill University.
What I do like about diagram it's that it will trigger questions. Why does UWO have the most attendances? Is UWO is the best school in IS in Canada? What is the chronology of all IS in Canada? Did UWO was the first school that offers MLIS? If I add up all the professors that teachs in a Masters of Information Studies in Canada, will UWO will still be the one that most teachers attends?
Keep in my that Correlation does not imply causation. This visualization does not imply that UWO or McGill are the best school for MLIS neither that I'll have a better chance to have a job as a teacher.
The program is available on my github if you would like to play with it


## Deep dive into
# Linux containers
## in Docker
## Outline
* What is Linux container?
* The building blocks
- Namepsaces
- Cgroups
- Layered filesystem
- User-space tools
* Summary
## What is Linux container?
### High level overview:
* It's lightweight VM
### Low level overview:
* It's `chroot` on steroids
- Uses host kernel
- Processes are visible on the host machine
* Limitations:
- Can't boot a different OS
- Can't have it's own kernel modules
Container is just a bunch of processes configured to run in isolation.
### Namespaces
* Provide processes with their own view of the system
* There are multiple namespaces:
- pid
- net
- mnt
* Each process is in one namespace of each type
Note:
Other namespaces: uts, ipc, user
### PID Namespace
* Process can only see processes in the same namespace
* Each namespace has own numbering starting at 1
* When PID 1 dies, the whole namespace is killed
* Namespaces can be nested
* Process has one PID per namespace in which is nested
Note:
```
// T1:
docker run -it epd:os
ps -ax
vim
// T2: Show process tree
ps a -o pidns,pid,cmd --forest
kill -9 [PID]
nsenter -p -t [PID] [CMD]
```
### NET Namespace
* Each network namespace has own network stack:
* network interfaces (including lo)
* routing tables
* iptables rules
* sockets
Note:
Network interface can be only in one namespace at a time
### NET Namespace
* Typical use-case:
* disable networking (docker run --network=none)
* veth pairs - two virtual interfaces acting as crossover cable
* all the vethXXX bridged together (docker0)
* reuse network stack of other container
Note:
```
ip link add type veth
ip netns add epd0
ip netns add epd1
ip link set veth0 netns epd0
ip link set veth1 netns epd1
nsenter --net=/run/netns/epd0 /bin/bash
ip link set veth0 up
ip addr add <IP_ADDRESS>/24 dev veth0
nc -l 4444
ip link delete veth0
nsenter --net=/run/netns/epd1 /bin/bash
ip link set veth1 up
ip addr add <IP_ADDRESS>/24 dev veth1
nc <IP_ADDRESS> 4444
ip link delete veth1
ip netns delete epd0
ip netns delete epd1
```
### MNT Namespace
Set of filesystem mounts that are visible to a process:
* Change filesystem root - "/"
* Private mounts
* scoped /tmp
* masking of /proc, /sys
* Shared mounts
* Hard to pass mount from a namespace to another
Note:
```
unshare -f -m /bin/bash
mount -o bind private_tmp /tmp
exit
```
### Namepsace manipulation
* create ns by clone() with extra flags
- exposed by unshare
* "enter" ns with setns()
- exposed by nsenter
* materialized by pseudo-files in /proc/< pid >/ns
* destroyed when last porcess of ns exits
* preserve ns by bind-mounting pseudo fs
### Layered filesystem
* Instant creation of new container
- Without copying it's image filesystem
* Easy creation of new images
- It's basically a snapshot of container FS at some time
* Image is immutable, while container can modify data
### Layered filesystem
* Available options:
- OverlayFS (file level)
- Device mapper (block level)
- btrfs, zfs (FS level)
Note:
```
cd /tmp
mkdir lower upper workdir overlay
mount -t overlay -o \
lowerdir=/tmp/lower,\
upperdir=/tmp/upper,\
workdir=/tmp/workdir \
none /tmp/overlay
```
### Control groups
* Resource metering and limiting
- memory
- CPU
- block I/O
- network
### Control groups
* Each subsystem has a hierarchy tree
* Hierarchies are independent
* Each proces belongs to exaclty 1 node in each hierarhcy
* PID 1 is placed at the root of each hierarchy
* When process is created, it is palced in the same groups as its parent
* Groups are materialized in pseudo-fs (/sys/fs/cgroup)
Note:
`systemd-cgls`
### memory cgroup
* Keeps track of pages used by each group
* Each group can have hard and soft limits
* Hard limits will trigger a per-group customizable OOM killer
* Limits can be set for physical, kernel and total memory
* Pages can be shared across multiple groups
* When pages are shared, the groups "split the bill"
Note:
OOM killer:
- freeze all processes in group
- notify user space
- kill processes
- etc...
Couter overhead - enabled/disabled on boot time
Sharing when multiple processes reads from the same file
Cost sharing can cause OOM when process leavs a group
### cpu cgroup
* Keeps track of user/system CPU time
* Allows to set weights
* Can't set CPU limits
Note:
1. You give N% to group
1. CPU throttles to lower clock speed?
1. Same with time slot
1. instructions? their speed varies wildly
### cpuset cgroup
* Pin groups to specific CPU(s)
* Reserve CPU for specific apps
* Avoid processes bouncing between CPUs
### blkio cgroup
* Keeps track of I/O for each group
* Set throttle (limits) for each group
* Set relative weights for each group
### User-space
* libcontainer/runc
* Ecosystem
- CLI tools,
- Registers,
- Orchestration
- etc.
* Lot of educational materials elsewhere
### Summary
* Container is just a bunch of processes configured to run in isolation
* Even when you don't run containers... you are in a container
* Each and every process is executed in namespaces and cgroups
* Namespaces = isolation
* Cgroups = resource metering and limiting
### Summary
* Docker = user space tools + ecosystem
* Docker did not invented containers
- see LXC and others...
* Docker made containers easy to use
- for both developers and admins
### Sources:
* [Jérôme Petazzoni: Anatomy of a Container](https://fr.slideshare.net/jpetazzo/anatomy-of-a-container-namespaces-cgroups-some-filesystem-magic-linuxcon)
* [Kyle Olivo: How Linux containers work](http://kyleolivo.com/dev/2016/08/15/containers-how-do-they-work/)
* [Eric Chiang: Containers from Scratch](https://ericchiang.github.io/post/containers-from-scratch/)
* Docker & Linux documentation
* ...many other blog posts


Select a Sheet from the drop down list.:
The target Sheet is displayed and highlighted.
The Layers and Tracings for the sheet are displayed.
Execute enabled file commands on the sheet.
Select Layers or Tracings from the lists displayed.
The target Layers and Tracings are highlighted.
Execute enabled file commands on the targets.
Menu for Sheets:
ProjectDisk and File directories.
SheetOperations on selected Sheet.
LayerOperations on selected Layers.
TracingOperations on selected Tracing.
Radio buttons for Layers:
OCurrentreceives new segments
OActiveEditable
OStaticNot editable
OHiddenNot Visible
Command buttons for Layers:
Newto Add a new target
Deleteto delete a target
Changeto change by-layer attributes
Meltto create a Tracing from a Layer
Radio buttons for Tracings:
OOpenOpen the target for Read-Write
OMapOpen the target for Read
OViewDisplays target in monotone
OCloakErases target from the screen
Command buttons for Tracings:
Includeto add a Tracing to the Sheet
Excludeto omit a Tracing from the Sheet
Fuseto create a Layer from a Tracing
Cancelto close without saving
OK to save and Close
When you select a Layer, the segment count, display status, and the by-layer attributes are displayed.
When you select a Tracing, the display status and the Title are displayed.


Is it possible to take an existing feed and process its historical data into kWh / day?
im trying to work out how each of my 4 solar arrays perform at different times of the year, so I can work out whether to add tilt brackets to any of them
Archived Forum |
|
Is it possible to process a historical power feed into a kWh / day feedSubmitted by sheppy on Fri, 19/02/2016 - 06:46Is it possible to take an existing feed and process its historical data into kWh / day? im trying to work out how each of my 4 solar arrays perform at different times of the year, so I can work out whether to add tilt brackets to any of them » |
Re: Is it possible to process a historical power feed into a kWh / day feed
It is possible to use an existing power feed and process into accumulating kWh. Theres a script for this here: https://github.com/emoncms/usefulscripts
If you install this on the same machine as your emoncms installation, then navigate to the process folder and run power_to_kwh.php
$ sudo php power_to_kwh.php
It then provides on screen options for selecting the power feed, emoncms location (local) etc.
Re: Is it possible to process a historical power feed into a kWh / day feed
I think Kevin was looking for kWh/d feed convertion whereas the 'power to kwh' script I believe just provides accumulating kWh?
Paul
Re: Is it possible to process a historical power feed into a kWh / day feed
Paul,
you are correct, I want to create a feed that has Kwh per Day.
I want to be able to plot daily power so I can see what effect the seasons have on power production for each of my solar arrays. The sun moves around a bit down here between the seasons, and on a Summer cloudless day I generate around 21Kwh whereas in Winter I generate around 7Kwh. I want to see what I can do to increase Winter production without compromising Summer too much. I suspect 2/3 of my capacity would benefit greatly from adding tilt mounts, but as the rest is already on tilts albeit in slightly different directions I want to compare them before I go and do the work.
If Kwh per Day isn't available I could try exporting Kwh to excel and chop it up into days there?
Cheers
Kevin


THEURL
THETIME
the first text
the second text
THEMETHOD
THEBODY
this is a span
this is a disabled item
this is a link
textarea