|
BitShares-Core
6.1.0
BitShares blockchain implementation and command-line interface software
|
Used to generate a useful error report when an exception is thrown.At each level in the stack where the exception is caught and rethrown a new log_message is added to the exception. More...
#include <exception.hpp>
Public Types | |
| enum | code_enum { code_value = unspecified_exception_code } |
Public Member Functions | |
| exception (int64_t code=unspecified_exception_code, const std::string &name_value="exception", const std::string &what_value="unspecified") | |
| exception (log_message &&, int64_t code=unspecified_exception_code, const std::string &name_value="exception", const std::string &what_value="unspecified") | |
| exception (log_messages &&, int64_t code=unspecified_exception_code, const std::string &name_value="exception", const std::string &what_value="unspecified") | |
| exception (const log_messages &, int64_t code=unspecified_exception_code, const std::string &name_value="exception", const std::string &what_value="unspecified") | |
| exception (const exception &e) | |
| exception (exception &&e) | |
| virtual | ~exception () |
| const char * | name () const throw () |
| int64_t | code () const throw () |
| virtual const char * | what () const throw () |
| const log_messages & | get_log () const |
| void | append_log (log_message m) |
| std::string | to_detail_string (log_level ll=log_level::all) const |
| std::string | to_string (log_level ll=log_level::info) const |
| virtual void | dynamic_rethrow_exception () const |
| virtual std::shared_ptr< exception > | dynamic_copy_exception () const |
| exception & | operator= (const exception ©) |
| exception & | operator= (exception &©) |
Protected Attributes | |
| std::unique_ptr< detail::exception_impl > | my |
Friends | |
| void | to_variant (const exception &e, variant &v, uint32_t max_depth) |
| void | from_variant (const variant &e, exception &ll, uint32_t max_depth) |
Used to generate a useful error report when an exception is thrown.
At each level in the stack where the exception is caught and rethrown a new log_message is added to the exception.
exception's are designed to be serialized to a variant and deserialized from an variant.
Definition at line 56 of file exception.hpp.
| Enumerator | |
|---|---|
| code_value |
Definition at line 59 of file exception.hpp.
| fc::exception::exception | ( | int64_t | code = unspecified_exception_code , |
| const std::string & | name_value = "exception" , |
||
| const std::string & | what_value = "unspecified" |
||
| ) |
Definition at line 112 of file exception.cpp.
| fc::exception::exception | ( | log_message && | msg, |
| int64_t | code = unspecified_exception_code , |
||
| const std::string & | name_value = "exception" , |
||
| const std::string & | what_value = "unspecified" |
||
| ) |
Definition at line 122 of file exception.cpp.
| fc::exception::exception | ( | log_messages && | msgs, |
| int64_t | code = unspecified_exception_code , |
||
| const std::string & | name_value = "exception" , |
||
| const std::string & | what_value = "unspecified" |
||
| ) |
Definition at line 60 of file exception.cpp.
| fc::exception::exception | ( | const log_messages & | msgs, |
| int64_t | code = unspecified_exception_code , |
||
| const std::string & | name_value = "exception" , |
||
| const std::string & | what_value = "unspecified" |
||
| ) |
Definition at line 71 of file exception.cpp.
| fc::exception::exception | ( | const exception & | e | ) |
Definition at line 133 of file exception.cpp.
| fc::exception::exception | ( | exception && | e | ) |
Definition at line 136 of file exception.cpp.
|
virtual |
Definition at line 143 of file exception.cpp.
| void fc::exception::append_log | ( | log_message | m | ) |
Definition at line 173 of file exception.cpp.
| int64_t fc::exception::code | ( | ) | const | |
| throw | ( | |||
| ) |
Definition at line 141 of file exception.cpp.
|
virtual |
This is equivalent to:
Reimplemented in fc::unhandled_exception.
Definition at line 267 of file exception.cpp.
|
virtual |
Throw this exception as its most derived type.
Rethrows the exception restoring the proper type based upon the error code. This is used to propagate exception types across conversions to/from JSON
Reimplemented in fc::unhandled_exception.
Definition at line 262 of file exception.cpp.
| const log_messages & fc::exception::get_log | ( | ) | const |
Definition at line 172 of file exception.cpp.
| const char * fc::exception::name | ( | ) | const | |
| throw | ( | |||
| ) |
Definition at line 139 of file exception.cpp.
Definition at line 296 of file exception.cpp.
Definition at line 302 of file exception.cpp.
| string fc::exception::to_detail_string | ( | log_level | ll = log_level::all | ) | const |
Generates a detailed string including file, line, method, and other information that is generally only useful for developers.
Definition at line 183 of file exception.cpp.
| string fc::exception::to_string | ( | log_level | ll = log_level::info | ) | const |
Generates a user-friendly error report.
Definition at line 227 of file exception.cpp.
|
virtual |
Definition at line 140 of file exception.cpp.
Definition at line 158 of file exception.cpp.
Definition at line 145 of file exception.cpp.
|
protected |
Definition at line 126 of file exception.hpp.


{{ settings.phone }}
#{{ value }}
{{#if last}}{{else}} or {{/if}}
{{/each}}
{{ settings.yoUser }}
{{ settings.name }} is an instance of Lumière, community-controlled lighting. Lumière invites anyone in the world to change the colors of (your) holiday lights. There are lots of ways to change the lights such as texting or Tweeting, and over 1,000 different names of colors to use.
Color words are a combination of Chroma.js, Colorbrewer, Name that Color, Crayola Crayons (some), and some custom ones. Feel free to suggest some more.
When using text inputs for colors, you can make combinations in a number of ways. By using a comma to separate colors, you will get the most accurate colors:
red blue green
magenta, lemon yellow, cyan
bluegreen green
Lumière lights are currently DIY; this means you have to get a hold of some hardware, put it together yourself, and then hook it up to the Lumière system. Basically you need a string of programmable lights and an internet-connected device like an Arduino or Raspberry-Pi. It takes some technical know-how, but checkout our repository of code and instructions for different node configurations.
Maybe one day we will have a kit package for your to purchase or even just a full-fledged {{ name }} product. We'll let you know if that happens.
Lumière is architected in such a way that multiple light installations can talk to one server, therefore a whole neighborhood could change with one text message.
If you want your lights to be connected to the default Lumière server, then there's no need to set up your own server, just your own lights. But, if you want to make a custom installation and server, checkout the Lumière server code to get up and running.
This project is open source and you are welcome to use the code freely or help improve it.
In the winter of 2015, Lumière was used on a Christmas tree in Boston City Hall. This was mentioned in a number of stories in places like Streetwise, Boston Globe, Beta Boston, Boston News 7, Boston Herald, and Fox Boston.
{{ settings.phone }}
#{{ value }}
{{#if last}}{{else}} or {{/if}}
{{/each}}
{{ settings.yoUser }}


This server provides a reference implementation for the Da Vinci US Drug Formulary Implementation Guide.


Basically the values defined in setConfig toast opens. If not defined, it will be opened by default. If the default value is a concern, please enter the following code to the command. (new ax5.ui.toast()).config; If ax5 toast.js have been added to the page you want to enter the console, will output the default settings of the toast UI to the console.


{% extends "base.html" %} {% block title %}Create{% endblock %} {% block body-color %}grey{% endblock %} {% block content %} {% if not user.is_authenticated %}
This will be used as your project's thumbnail.
Quick! The 10 second elevator pitch!
Include who you are looking for!
OPTIONAL SECTION


NOTE: You may want to remove any hard coded
values you see below with regards to "width" and "height" in the
below code. These values may be in the iFrame SRC parameters, or
in the iFrame query string. Experiment to see what works best.
Great news! The embed codes offered by these
services are already responsive:
Know of more? New embed type giving you problems? Let me know
and report any issues on
GitHub.


// Say hello world until the user starts questioning
// the meaningfulness of their existence.
function helloWorld(world) {
for (var i = 42; --i >= 0;) {
alert('Hello ' + String(world));
}
}
Titles are formatted as Open Sans with bold applied
The font size of titles is set at 45
Title capitalization is title case
Subtitle capitalization is title case
Titles and subtitles should never have a period at the end
All links open in new tabs.
To change that behavior, add target="_self"
to the link.
// Say hello world until the user starts questioning
// the meaningfulness of their existence.
function helloWorld(world) {
for (var i = 42; --i >= 0;) {
alert('Hello ' + String(world));
}
}
// Say hello world until the user starts questioning
// the meaningfulness of their existence.
function helloWorld(world) {
for (var i = 42; --i >= 0;) {
alert('Hello ' + String(world));
}
}

<!DOCTYPE html>

<title>My Awesome Page</title>

Hello world

| Column 1 | Column 2 | Column 3 | Column 4 | |
|---|---|---|---|---|
Row 1 |
placeholder |
placeholder |
placeholder |
placeholder |
Row 2 |
placeholder |
placeholder |
placeholder |
placeholder |
Row 3 |
placeholder |
placeholder |
placeholder |
placeholder |
Row 4 |
placeholder |
placeholder |
placeholder |
placeholder |
Row 5 |
placeholder |
placeholder |
placeholder |
placeholder |
| Column 1 | Column 2 | Column 3 | Column 4 | |
|---|---|---|---|---|
Row 1 |
placeholder |
placeholder |
placeholder |
placeholder |
Row 2 |
placeholder |
placeholder |
placeholder |
placeholder |
Row 3 |
placeholder |
placeholder |
placeholder |
placeholder |
Row 4 |
placeholder |
placeholder |
placeholder |
placeholder |
Row 5 |
placeholder |
placeholder |
placeholder |
placeholder |
Header 1 |
placeholder |
placeholder |
placeholder |
|---|---|---|---|
Header 2 |
placeholder |
placeholder |
placeholder |
Header 3 |
placeholder |
placeholder |
placeholder |
Header 4 |
placeholder |
placeholder |
placeholder |
Header 5 |
placeholder |
placeholder |
placeholder |
class="red"
class="red2"
class="red3"
class="blue"
class="blue2"
class="blue3"
class="green"
class="green2"
class="green3"
class="yellow"
class="yellow2"
class="yellow3"
class="gray"
class="gray2"
class="gray3"
class="gray4"
unsplash.com/photos/PKVcQXEcfLU
This is an example of a quote.
Important contact information goes here.
| g+ |
plus.google.com/1234567890 |
|
@yourhandle |
|
| www |
www.you.com |
| github |
github.com/you |


Perform unit testing of Qt programs in GitHub Actions using Docker
30 Jul 2023In the previous post, we built a Docker container for Qt and pushed it to Docker Hub (the pushed container includes FreeFEM too, but we don’t need to care about it for the purpose of this post). Now, it’s time to pull the image in a GitHub Action to test the build process and functionality of Qt programs.
We use this action to pull the image and run the build procedure. First, we add a YAML file, called main.yml
, to the directory .github/workflows
in the GitHub repository (like this example) and add the following content to it:
# This is a basic workflow to help you get started with Actions
name: build
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only
# for the main branch
push:
branches: [ main ]
pull_request:
branches: [ main ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run
# sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed
# as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE,
# so your job can access it
- uses: actions/checkout@v2
# Pulls a Docker image and builds the software inside it
- name: Build and test BioDeg
uses: addnab/docker-run-action@v3
with:
registry: docker.io
image: mbarzegary/qt-5.15.2-freefem-4.10:latest
options: -v $:/data
run: /data/buildWithDocker.sh
This action gets triggered when any commit is pushed to the repository, resulting in the Docker image being pulled and the whole repository being mounted into a directory called data
. Then, it executes the build script file (in this case, buildWithDocker.sh
in the root of the repository) inside the container. The following is an example of the buildWithDocker.sh
file:
#!/bin/bash
# build the repo inside the docker container
# used for CI builds and tests
cd /data
mkdir build
cd build
cmake ..
make
make test
The full running example can be explored in this repository. The log of previous ran tests can be viewed here.


![Adjust Tax Rate] Today's tax rate is %CurrentTax% % and tomorrow's tax rate will be %CurrentTax% %. The tax rate may be set in the range of *0% ~ 15%*. The tax rate entered will be applied from midnight of the same day. Please note that the tax rate will be set to *0%* if the "OK" button is pressed without any value being entered.
| Enter | % |


|
Azure/Cloud
Architect
SSW Sydney, Brisbane, Melbourne, Newcastle
This role requires great communication skills and solid experience in
delivering production-ready web solutions. You will possess a can-do
attitude and will love software cloud/design/development. You will be
working with our expert developers and designers in a wide variety of
exciting enterprise projects.
This role requires someone who can work closely with clients, think
critically, and create the right solution for the right job. .NET
experience is a must.
Read
More
|
|
Full Stack .NET
Developer
SSW Sydney, Brisbane, Melbourne, Newcastle
This role requires great communication skills and solid experience in
delivering production-ready web solutions. You will be working with our
expert developers and designers in a wide variety of exciting enterprise
projects.
This role requires someone who can work closely with clients, think
critically, and create the right solution for the right job. .NET
experience is a must.
Read
More
|


So: we have constructed a neural net, in our second example that consists of a significantly more complicated set of functions than our first example did. However, all we've really done up until this point is ensure we were taking derivatives correctly and that the dimensions of our matrix multiplication were set correctly. Let's examine this "thing" (which I claim is a neural net, but up until this point we only know to be a complex set of nested functions) in more detail.
--To recap: this is our "neural net" up until this point.
X = np.array([ [0,0,1] ]) y = np.array([ [1] ]).T V = np.random.randn(3, 4) W = np.random.randn(4, 1) for i in range(10000): A = np.dot(X,V) B = nonlin(A) C = np.dot(B,W) P = nonlin(C) L = 0.5 * (y - P) ** 2 dLdP = -1.0 * (y-P) dPdC = sigmoid(C) * (1-sigmoid(C)) dLdC = dLdP * dPdC dCdW = B.T dLdW = np.dot(dCdW, dLdC) dCdB = W.T dLdB = dLdC * dCdB dBdA = sigmoid(A) * (1-sigmoid(A)) dLdA = dLdB * dBdA dAdV = X.T dLdV = np.dot(dAdV, dLdA) W -= dLdW V -= dLdV
However, recalling that we are trying to learn the relationship between our inputs X and our outputs y, note that here this relationship is quite simple. There are three features, the first of which is 0, the second of which is also 0, and the third of which is 1.
Let's put this neural net to a harder test. Let's see if it can learn a more complex relationship between input and output; and in particular, if we can feed multiple variables into this neural network to learn this complex relationship.
I will randomly choose five configurations for the three features making up $ X $, and randomly choose between the values of 0 and 1 for $ y $.
X = [[1, 0, 0], [1, 0, 1], [1, 1, 1], [0, 0, 0], [0, 1, 1]] y = [[1], [0], [0], [1], [0]]
Now, let's go through and examine the dimensions of each component of the matrix here:
X = np.array([ [0,0,1] ]) # dimension of X: 1 x 3 y = np.array([ [1] ]).T # dimension of y: 1 x 1 V = np.random.randn(3, 4) # dimension of V: 3 x 4 W = np.random.randn(4, 1) # dimension of W: 4 x 1 for i in range(10000): A = np.dot(X,V) # dimension of A: 1 x 4 (product of a 1 x 3 and a 3 x 4) B = nonlin(A) # dimension of B: 1 x 4 C = np.dot(B,W) # dimension of C: 1 x 1 (product of a 1 x 4 and a 4 x 1) P = nonlin(C) # dimension of P: 1 x 1 L = 0.5 * (y - P) ** 2 dLdP = -1.0 * (y-P) dPdC = sigmoid(C) * (1-sigmoid(C)) dLdC = dLdP * dPdC # dimensions of L, dLdP, dPdC, and dLdC: 1 x 1 dCdW = B.T # dimensions of dCdW: 4 x 1 (transpose of B a 1 x 4) dLdW = np.dot(dCdW, dLdC) # dimensions of dLdW: 4 x 1 (product of a 4 x 1 and a 1 x 1) dCdB = W.T # dimensions of dCdB: 1 x 4 (transpose of W, a 1 x 4) dLdB = dLdC * dCdB # dimensions of dLdB: 1 x 4 (product of a 1 x 1 and a 1 x 4) dBdA = sigmoid(A) * (1-sigmoid(A)) # dimensions of dBdA: 1 x 4 (same dimensions as A) dLdA = dLdB * dBdA # dimensions of dLdA: elementwise multiplication of dLdB and dBdA, both 1 x 4 dAdV = X.T # dimensions of dAdV: 3 x 1 (transpose of X, a 1 x 3) dLdV = np.dot(dAdV, dLdA) # dimensions of dLdV: 3 x 4 (product of a 3 x 1 and a 1 x 4) W -= dLdW # dimensions line up: both 4 x 1 V -= dLdV # dimensions line up: both 3 x 4
Now, here's where things get kind of magical. Because of the way we have set up the multiplication, we can add additional observations to our data, and to $ X $ and $ y $ without having to modify this code at all! To keep the numbers as small and the example as simple as possible, let's say $ X $ has 5 observations, so that
$$ X = \begin{bmatrix}1 & 0 & 0 \\ 1 & 0 & 0 \\ 1 & 1 & 1 \\ 0 & 0 & 0 \\ 0 & 1 & 1 \end{bmatrix} $$and
$$ y = \begin{bmatrix}1 \\ 0 \\ 0 \\ 1 \\ 0\end{bmatrix} $$In code we would write this as:
X = [[1, 0, 0], [1, 0, 1], [1, 1, 1], [0, 0, 0], [0, 1, 1]] y = [[1], [0], [0], [1], [0]]
Let's see if using these definitions of $ X $ and $ y $ would still work with the matrix multiplication the way it is set up:
X = np.array([ [0,0,1] ]) # dimension of X: 5 x 3 y = np.array([ [1] ]).T # dimension of y: 5 x 1 V = np.random.randn(3, 4) # dimension of V: 3 x 4 W = np.random.randn(4, 1) # dimension of W: 4 x 1 for i in range(10000): A = np.dot(X,V) # dimension of A: 5 x 4 (product of a 5 x 3 and a 3 x 4) B = nonlin(A) # dimension of B: 5 x 4 C = np.dot(B,W) # dimension of C: 5 x 1 (product of a 5 x 4 and a 4 x 1) P = nonlin(C) # dimension of P: 5 x 1 L = 0.5 * (y - P) ** 2 dLdP = -1.0 * (y-P) dPdC = sigmoid(C) * (1-sigmoid(C)) dLdC = dLdP * dPdC # dimensions of L, dLdP, dPdC, and dLdC: 5 x 1 dCdW = B.T # dimensions of dCdW: 4 x 5 (transpose of B, a 5 x 4) dLdW = np.dot(dCdW, dLdC) # dimensions of dLdW: 4 x 1 (product of a 4 x 5 and a 5 x 1; clever, right?) dCdB = W.T # dimensions of dCdB: 1 x 4 (transpose of W, a 1 x 4) dLdB = dLdC * dCdB # dimensions of dLdB: 5 x 4 (product of a 5 x 1 and a 1 x 4) dBdA = sigmoid(A) * (1-sigmoid(A)) # dimensions of dBdA: 5 x 4 (same dimensions as A) dLdA = dLdB * dBdA # dimensions of dLdA: elementwise multiplication of dLdB and dBdA, both 5 x 4 dAdV = X.T # dimensions of dAdV: 3 x 5 (transpose of X, a 5 x 3) dLdV = np.dot(dAdV, dLdA) # dimensions of dLdV: 3 x 4 (product of a 3 x 5 and a 5 x 4; again, clever that this works, right?) W -= dLdW # dimensions line up: both 4 x 1 V -= dLdV # dimensions line up: both 3 x 4
It works! Indeed, replace 5 by $ n $ above and you can see that this code will work for any number of observations.
This illustrates an important principle about training neural nets: training multiple observations at a time - which again, means changing the weights $ V $ and $ W $ over successive "passes" through the net - is exactly the same as training the net on each individual observation and then summing up all those changes across observations.
So, why do we ever train multiple observations at a time - why not just train one at a time? The answer is speed: it is sometimes faster to train using multiple observations at a time, rather than just one, and a key reason for that is linear algebra. Note that in some key steps above we're doing matrix multiplications; it turns out there are some libraries in Python that can do matrix multiplication extremely quickly, which makes it faster to train nets.
However, it is worth noting something at this juncture: linear algebra, like many ideas assocaited with neural nets, has nothing to do with the nets themselves. The nets are nested functions, the nesting of which allows them to approximate arbitrarily complex functions. It so happens that an efficient way to train these things is by using linear algebra, but there is nothing _essential_ to the functioning of neural nets that requires a knowledge of any of the complexities of linear algebra. This, like many things you'll read about neural nets, is an unnecessary complexity that makes the field of deep learning seem less accessible to outsiders than it should be.
--So, we have seen how neural nets learn from individual examples, both at a conceptual / mathematical level - feeding the observations through nested functions, calculating the loss, and then "backpropogating" this loss to figure out how we want our weights to change by computing partial derivatives. We have seen empirically that this process "works", and we understand why it works: because of the chain rule from calculus.
To progress further, it will be necessary to exit the mathematical / conceptual realm and enter another realm in which we must feel comfortable to both build and understand more complex neural nets: computer science, and more specifically, the craft of software engineering.
def learn(X, y): V = np.random.randn(3, 4) W = np.random.randn(4, 1) for j in range(50000): A = np.dot(X,V) B = sigmoid(A) C = np.dot(B,W) P = sigmoid(C) L = 0.5 * (y - P) ** 2 dLdP = -1.0 * (y-P) dPdC = sigmoid(C) * (1-sigmoid(C)) dLdC = dLdP * dPdC dCdW = B.T dLdW = np.dot(dCdW, dLdC) dCdB = W.T dLdB = dLdC * dCdB dBdA = sigmoid(A) * (1-sigmoid(A)) dLdA = dLdB * dBdA dAdV = X.T dLdV = np.dot(dAdV, dLdA) W -= dLdW V -= dLdV return V, W
How we structure our code is important. Using tools such as functions and classes appropriately is just as important for truly understanding neural nets as is understanding the underlying mathematics. However, just as the math can be intimidating, and it is therefore important to understand that you only need to understand some basic calculus to understand the full complexity of neural nets, we will start by simply wrapping the code we have written above in some simple functions only adding complexity later when it is absolutely necessary.
As we attempt to "group" the many steps involved in training a neural net that we have defined above into smaller groups, creating functions, we will be forced to more precisely define our concepts. This is one of the truly beautiful things about forcing oneself to express what are abstract and essentially mathematical concepts in code: we are forced to make precise the vague, operational the abstract.
For example: what does it mean for a neural network to learn? We hear this term a lot; let's make it precise using code. First, in words: to make a neural net learn means to return the set of weights produced after training. In code, then, the following function will "learn" the weights $ V $ and $ W $.
def learn(X, y): V = np.random.randn(3, 4) W = np.random.randn(4, 1) for j in range(50000): A = np.dot(X,V) B = sigmoid(A) C = np.dot(B,W) P = sigmoid(C) L = 0.5 * (y - P) ** 2 dLdP = -1.0 * (y-P) dPdC = sigmoid(C) * (1-sigmoid(C)) dLdC = dLdP * dPdC dCdW = B.T dLdW = np.dot(dCdW, dLdC) dCdB = W.T dLdB = dLdC * dCdB dBdA = sigmoid(A) * (1-sigmoid(A)) dLdA = dLdB * dBdA dAdV = X.T dLdV = np.dot(dAdV, dLdA) W -= dLdW V -= dLdV return V, W
So: "learning" means "learn the weights from this specific training data that I am giving you". Once a network has "learned", how can we use that learning? The answer is that we can use the weights from that "trained" network to make predictions on new input. Let's encapsulate that precisely in a predict function.
def predict(X_new, V, W): A = np.dot(X_new,V) B = sigmoid(A) C = np.dot(B,W) P = sigmoid(C) return P
Now, let's use these functions. Let's feed in new input, $ X $ and $ y $, and see if the network can learn these the relationship between input and output. Given the inputs we have defined - three features with values $ 0 $ or $ 1 $ - there are $ 2^3 = 8 $ possible combinations. I'll randomly shuffle these, and randomly assign four of these observations to have the output $0$ and four the output $1$. That is what the code below does:
import numpy as np import random randX = random.sample(range(1,9), 8) mapping_dict = {1:[0,0,0], 2:[0,0,1], 3:[0,1,0], 4:[0,1,1], 5:[1,0,0], 6:[1,0,1], 7:[1,1,0], 8:[1,1,1]} X = [] for r in randX: X.append(mapping_dict[r]) y = [] randy = random.sample(range(1,9), 8) for el in randy: if el % 2 == 0: y.append([0]) else: y.append([1]) X = np.array(X) y = np.array(y) print "X: %s" % str(X) print "y: %s" % str(y)
X: [[0 0 0] [1 0 0] [1 0 1] [0 1 0] [1 1 0] [0 1 1] [1 1 1] [0 0 1]] y: [[1] [1] [0] [1] [0] [1] [0] [0]]
Writing this in the rows and columns we are used to seeing data written in:
| Inputs | Output | ||
|---|---|---|---|
| 1 | 1 | 1 | 1 |
| 0 | 1 | 0 | 0 |
| 0 | 0 | 1 | 1 |
| 1 | 1 | 0 | 0 |
| 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 1 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 1 | 0 |
Now, let's train a net on this data, and then use it to predict new data.
V, W = learn(X, y)
That's it! Now $V$ and $W$ are just matrices of numbers which togehther encode the relationship between the inputs as we've defined them and the outputs.
Now, if we input, say $\begin{bmatrix}1 & 1 & 1\end{bmatrix}$ and $\begin{bmatrix}0 & 1 & 0\end{bmatrix}$ as inputs, we should return something close to $ [1] $ and $ [0] $, respectively, as predictions. Indeed, that is what we see:
np.set_printoptions(suppress=True) # Suppress scientific notation X_new = [[1, 1, 1], [0, 1, 0]] P = predict(X_new, V, W) P
This code outputs:
array([[ 0.99779399], [ 0.00089163]])
as expected.
--So, it appears that this neural net can indeed learn complex patterns. But did we need to do all that work to build a net that could learn these patterns? Could simpler techniques have done the job? What makes neural nets so special, anyway?
In addition, even in this simple example, we risk not being able to fully interpret what is going on in the net. Looking at the weight matrices $V$ and $W$, for example, we see that it is unclear how to interpret them. Running the code:
V, W = learn(X, y) print "V: %s" % str(V) print "W: %s" % str(W)
shows:
V: [[-3.13607135 -4.10707349 -7.66588684 3.66266437] [-6.40709978 4.7574922 0.9685441 -3.71571076] [ 6.75626594 -6.58360648 3.88296949 5.53671139]] W: [[-11.9161323 ] [-15.21933595] [ 10.95328222] [ 6.25258304]]
It isn't obvious what, if anything, these numbers represent, or if they just happen to explain the relationship between the input and the output. In other words, is there any way we could have predicted that these numbers would have arisen as the "answer" to the function approximation problem in advance?
To understand the answer to these questions, we'll have to start by going backwards, toward the realm of logic, examining some even simpler, more deliberately constructed examples to understand precisely what the power of adding a hidden layer does for our ability to model complex phenomena.
That is one direction our inquiry will go: backwards, toward the simple, understanding the limitations of techniques simpler than neural nets and seeing why neural nets are necessary as a means to go beyond these simple techniques. This will take us back toward the realm of basic statistics and even logic, a key component to understanding neural nets fully.
The other direction is toward the complex, by way of abstraction. Counting above, we have built what we will come to understand as a relatively simple neural net (as we will build much more complex ones), and yet this neural net, as it is written, has about 15 computational steps. Can we understand these combine and abstract away from these steps in an elegant way, so that we can understand this monster of nested functions to be a sensible entity. In traveling in this direction, we will use the language of computer science, such as classes, to describe the architecture and the rules of operation of neural nets; but most importantly, it is here that we will begin to conceive of neural nets as analogous to the operation of the brain, and we shall begin to speak of "neurons" "activating", and think of these neurons as being grouped into "layers". Because we will have started by knowing what is going on under the hood, we will feel empowered to move boldly forward and use these neural nets to solve complex problems.


Sign up from Beautiful
First name:
Last name:
Username:
Password:
Re-enter password:
Email:
Gender:
Male
Female
Sign in
Report Validation Issues


CHOOSE, the Swiss Group for Original and Outside-the-box Software Engineering, is a special interest group of the SI (Swiss Informatics Society). CHOOSE is a non-profit organization that focuses on building a bridge between research and industry through various kinds of events in Switzerland, and on sponsoring students that conduct research in the area of software engineering.
Tudor Girba - feenk gmbh
Beat Fluri - AdNovum
Thomas Fritz - University of Zurich, Treasurer
Jiri Lundak - REDpill GmbH
Michele Lanza - University of Lugano
Harald Gall - University of Zürich
Oscar Nierstrasz - University of Bern, President
Baltisar Oswald - SBB
Sander Tichelaar - Credit Suisse
You can contact the board to propose an organization of an event, or to request a sponsorship.


[1]
different but i love the lanna feel of this place , it is peaceful , authentic .
[2]
there has been some long overdue renovations to the rooms and pool area which is great .


<
input
>
and
<
textarea
>
speech recognition
Star
Single-line input
Single-line input (Spanish)
Multi-line text area


{% extends "base.html" %} {% block content %}
New? Click here to make an account!
Username {{incorrect_info}}
Password {{incorrect_info}}


--- title: Israel shot 136 date: 2004-05-16T00:00:00.000Z filepathOriginal: photos/IMG0207.jpg filepathThumbnail: photos/IMG0207.thumbnail.jpg filepathPreview: photos/IMG0207.preview.jpg ---
Assaf, Omer, Me, and Pussy enjoy a kosher lunch of roast pork in Givat Shmuel


About
Settings
{{cards[counter].question}}
Show answer
Current score: {{ score }} / {{ attempts }} : {{ scorePct }} %
{{cards[counter].answer}}
I know it
I don't know it
Don't show this card again
Show the question again
Current score: {{ score }} / {{ attempts }} : {{ scorePct }}%


Gateway
BOT
19-Jun-19 03:28 PM
[dscrd-hush] <dukeleto> TS keeps asking us how to update their hush code, we send them a link to the docs that everybody else uses, and don't hear back
[dscrd-hush] <ITM> I don't like the Tradesatoshi, there support is extremely rude and generic replies. Takes month updating and if they see they cannot update wallet they just ignore it. no communication with the team. I never traded more then 0.1 btc on the exchange at any point in time.
@dukeleto they did update the wallet but the nodes they connected to was stuck, notarized height issue, notarized height is greater then block . Its been there when you switch on and off hush daemon at certain times. I tried connecting with the 2 nodes they use and it also gave the issue. So bad nodes they connected to.
I disagree with article. Coins like Bitradio wallet had tons of issues. Withdraw fee of 10 is fair to cover cost. As for Safex they did a complete new chain and 2 different coins. Tradesatoshi did give 3 months notice for the team. I don't see why it was unfair. They decided not to support the new chain since 2 different coins.
As for KNT, that fees is too damn high. I support KNT point of view in this regards.
[dscrd-hush] <dukeleto> That is the reality of TS.
[dscrd-hush] <dukeleto> @ITM well, that is news to me. Wish they would tell us the errors they get
[dscrd-hush] <dukeleto> all they need to do stop hushd, the delete the ~/.komodo/HUSH3/notarizations file, and restart
[dscrd-hush] <dukeleto> we have a brand new update for exchanges + pools as well
[dscrd-hush] <dukeleto> so that news will go out soon. It's the mandatory update for the new notary season
[dscrd-hush] <ITM> Nova Exchange is pushing lot coins, hopefully we qualify. I know berg send the forms a month ago.
[dscrd-hush] <ITM> TS should be the lowest priority for now. We should consider it a lost cause.
[dscrd-hush] <dukeleto> at least they are trying, I guess
It has come to our attention that the ColossusXT coins held by Tradesatoshi Exchange have been traded into the market through CryptoBridge…
[dscrd-hush] <Robert Garcia> By colx team on medium
[dscrd-hush] <Robert Garcia> Read the article well please, and check how many colx dumped by Ts in cryptobridge , dude
[dscrd-hush] <Roxin> hello
[dscrd-hush] <Roxin> at verus wallet ..when i activate coin
[dscrd-hush] <Roxin> it shows me 2 hush
[dscrd-hush] <Roxin> cause i want to deposit hush...and i dont know which one hush from that list to activate
[dscrd-hush] <ITM> @Roxin Check for the one with the R-Address


amazon-chime-sdk / com.amazonaws.services.chime.sdk.meetings.audiovideo.contentshare / ContentShareObserver / onContentShareStarted
onContentShareStarted
abstract fun onContentShareStarted(): Unit
Called when the content share has started.
This callback will be on the main thread.


class Memory
A class representing a computer's memory.
<init> |
A class representing a computer's memory. Memory() |
loadByte |
Loads an unsigned byte from memory fun loadByte(addr: Number): Int |
loadHalfWord |
Loads an unsigned halfword from memory fun loadHalfWord(addr: Number): Int |
loadLong |
Loads a long from memory fun loadLong(addr: Number): Long |
loadWord |
Loads a word from memory fun loadWord(addr: Number): Int |
removeByte |
fun removeByte(addr: Number): Unit |
storeByte |
Stores a byte in memory, truncating the given Int if necessary fun storeByte(addr: Number, value: Number): Unit |
storeHalfWord |
Stores a halfword in memory, truncating the given Int if necessary fun storeHalfWord(addr: Number, value: Number): Unit |
storeLong |
Stores a word in memory fun storeLong(addr: Number, value: Number): Unit |
storeWord |
Stores a word in memory fun storeWord(addr: Number, value: Number): Unit |


---
layout: archive
title: Lean Prover Zulip Chat Archive
permalink: 113488general/46163congrwithsubsingleton.html
---
The archive URL format has changed. Please find this page at:
https://leanprover-community.github.io/archive/stream/113488-general/topic/congr.20with.20subsingleton.html


We're sorry but Ira Air doesn't work properly without JavaScript enabled. Please enable it to continue.


DOTr drops bid to modernize all jeepneys by 2020
(3rd UPDATE) The Department of Transportation will now make roadworthiness the standard for allowing PUVs to remain in operation. Meanwhile, the franchise consolidation aspect of the modernization program will be upheld.
by Loreben TuqueroSubscribe
Email Address
Newsletters
- Glenda Gloria's Take this Tuesday
- Huddle by Miriam Grace Go
- The Newsbreak Agenda by Chay Hofileña
- Sometimes, all you need is video by Lilibeth Frondoso


WITNESS LIST
Intergovernmental Relations
April 15, 2015 9:00 AM
FOR:
Darling, Jim Mayor (City of McAllen), McAllen, TX
Fuller, Jake (South Texas Health System), McAllen, TX
Fuller, Jake (Hidalgo-Starr County Medical Society), McAllen, TX
Garcia, Richard Mayor (City of Edinburg), Edinburg, TX
Garza, Estela (Valley Interfaith), McAllen, TX
Perez, Frank (Self), McAllen, TX
Rocha, Israel (Doctors Hospital of Renaissance), Edinburg, TX
Rodriguez, Felix (Veterans [sic]), Elsa, TX
AGAINST:
Barnes, James (McAllen Tea Party), Mission, TX
Registering, but not testifying:
FOR:
Alvarez, Julian CEO (Rio Grande Valley Partnership), Weslaco, TX
Basaldua, Homero (Valley Interfaith - Holy Spirit), Edinburg, TX
Dr. Cardenas, Blandina Former President of the University of Texas Pan American
(UTPA) (Self), McAllen, TX
Dr. Fernandez, Francisco Founding Dean, School of Medicine (The University of Texas
Rio Grande Valley), Harlingen, TX
Garcia, Buddy (Self), Austin, TX
Garcia, Gus Director, Edinburg Economic Development Corporation (Edinburg Economic
Development Corporation), Edinburg, TX
Garcia, Ramon Judge (Hidalgo County), Edinburg, TX
Garcia, Teclo (City of McAllen), McAllen, TX
Garza, Felicitas (Valley Interfaith - St. John the Baptist Catholic Church), San Juan, TX
Garza, Ramiro (City of Edinburg), Edinburg, TX
Girard, Chuck (Rio Grande Regional Hospital), Austin, TX
Hawkins, John (Texas Hospital Association), Austin, TX
Lee, Don (Texas Conference of Urban Counties), Austin, TX
Palacios, Terry Chair of Edinburg Chamber of Commerce (Edinburg Chamber of
Commerce), Edinburg, TX
Perez, Myrna (Valley Interfaith - San Jose Obrero McAllen), McAllen, TX
Phillips, Joe (BK Metro & Investments), McAllen, TX
Romero, Michelle (Texas Medical Association), Austin, TX
Sepulveda, Jr., Pete County Judge (Cameron County), Brownsville, TX
AGAINST:
Barnes, Elizabeth (O.W.L.S. [sic]), Mission, TX
FOR:
Mendez, Mark Assistant County Administrator (Tarrant County Commissioners Court),
Ft. Worth, TX
WITNESS LIST
Intergovernmental Relations
April 15, 2015 9:00 AM
Registering, but not testifying:
FOR:
Eppes, Brian (Tarrant County Criminal District Attorneys Office), Forth Worth, TX
FOR:
German, Mary Senior Vice President & Visitors Bureau (Arlington Convention &
Visitors Bureau), Arlington, TX
Joslove, Scott President & CEO (Texas Hotel & Lodging Association), Austin, TX
Lander, Robert (Austin Convention & Visitors Bureau), Austin, TX
Registering, but not testifying:
FOR:
Dodge, Megan Intergovernmental Relations Manager (City of San Antonio), San Antonio,
TX
Harris, Dana V.P. Federal / State Advocacy (Austin Chamber of Commerce), Austin, TX
Hrneir, John (City of Austin), Austin, TX
Solis, Eddie (City of Arlington), Austin, TX
Registering, but not testifying:
FOR:
Merriweather, Kelli (Commission on State Emergency Communications), Austin, TX
Wisko, Mike Fire Chief (Texas Fire Chiefs association), Galveston, TX
ON:
Redington, Penny (Texas Association of Regional Councils), Austin, TX
FOR:
Luband, Charles Partner (Dentons), New York, NY
Trevino, Paul CEO CHRISTUS St. Elizabeth (CHRISTUS Southeast Texas), Beaumont,
TX
Registering, but not testifying:
FOR:
Brooks, Jeffrey Policy Analyst (Texas Conservative Coalition), Austin, TX
Hawkins, John (Texas Hospital Association), Austin, TX
Ramon, Mariah (Teaching Hospitals of Texas), Austin, TX
Saenz, Gabriela V.P. Advocacy (CHRISTUS Health), Austin, TX
FOR:
Garcia, Teclo (City of McAllen), McAllen, TX
ON:
Strama, Keith (Rio Grande Regional Water Authority), Austin, TX
Registering, but not testifying:
FOR:
Darling, Jim Mayor (City of McAllen), McAllen, TX
WITNESS LIST
Intergovernmental Relations
April 15, 2015 9:00 AM
Garcia, Buddy (Self), Austin, TX
FOR:
Torres, Rafael Service Director (Texas State Association of Fire Fighters), Austin, TX
Registering, but not testifying:
FOR:
Deshields, Glenn (Texas State Association of Fire Fighters), Austin, TX
Smith, Melinda (Combined Law Enforcement Associations of Texas), Austin, TX
FOR:
Torres, Rafael Service Director (Texas State Assoc. of Fire Fighters), Austin, TX
Registering, but not testifying:
FOR:
Clark, Mark (Houston Police Officers' Union & Dallas Police Assoc.), Houston, TX
Craft, Lon (Texas Municipal Police Association), Austin, TX
Deshields, Glenn (Texas State Association of Fire Fighters), Austin, TX
Smith, Melinda (Combined Law Enforcement Associations of Texas), Austin, TX
Wisko, Mike Fire Chief (Texas Fire Chiefs association), Galveston, TX
FOR:
Cunningham, Ken Executive V.P, Chief Legal Counsel (Good Shepherd Health System),
Long view, TX
Karam, Chris (Christus St. Michael Health System), Texarkana, TX
Luband, Charles Partner (Deutons), New York, NY
Registering, but not testifying:
FOR:
Brooks, Jeffrey Policy Analyst (Texas Conservative Coalition), Austin, TX
Hawkins, John (Texas Hospital Association), Austin, TX
Ramon, Mariah (Teaching Hospitals of Texas), Austin, TX
Strama, Keith (IASIS Health Care), Austin, TX
Townsend, Linda (CHRISTUS Health), Austin, TX
FOR:
Daughtry, Joe (Texas Fireworks Assoc.), Nederland, TX
Gonzalez, Ramiro Business owner (Mr. G's Fireworks), San Benito, TX
AGAINST:
Houston, Scott General Counsel (Texas Municipal League), Austin, TX
Wisko, Mike Fire Chief (Texas Fire Chiefs association), Galveston, TX
Registering, but not testifying:
FOR:
Eissler, Rob (10 Needham Corp.), Austin, TX
Glenn, Eric (Texas Pyrotechnic Association/ Chester Davis), Austin, TX
WITNESS LIST
Intergovernmental Relations
April 15, 2015 9:00 AM
Gonzalez, Luis (Self), La Feria, TX
Krehmeier, Jeff (City of Sugar Land, Sugar Land Fire Department), Sugar Land, TX
AGAINST:
Tagliabue, Tom (City of Corpus Christi), Corpus Christi, TX
FOR:
Elliott, Troy Finance Director (also providing written testimony) (City of San Antonio),
San Antonio, TX


| Artist | {{ playQueue[idx].artist }} |
|---|---|
| Album Artist | {{ playQueue[idx].album_artist }} |
| Composer | {{ playQueue[idx].composer }} |
| Album | {{ playQueue[idx].album }} |
| Title | {{ playQueue[idx].title }} |
| Disc | {{ playQueue[idx].disc }} |
| Track | {{ playQueue[idx].track }} |
| Date | {{ playQueue[idx].date }} |
| Artwork | |
| Size | {{ playQueue[idx].show_size }} |
| Modified | {{ playQueue[idx].last_modified }} |
| Type | {{ playQueue[idx].file_type }} |


class ChangeColor : Transition
This transition tracks changes during scene changes to the background property of its target views (when the background is a ColorDrawable, as well as the TextView.setTextColor of the text for target TextViews. If the color changes between scenes, the color change is animated.
ChangeColor()
This transition tracks changes during scene changes to the background property of its target views (when the background is a ColorDrawable, as well as the TextView.setTextColor of the text for target TextViews. If the color changes between scenes, the color change is animated. |
fun captureEndValues(transitionValues: TransitionValues): Unit |
|
fun captureStartValues(transitionValues: TransitionValues): Unit |
|
fun createAnimator(sceneRoot: ViewGroup, startValues: TransitionValues?, endValues: TransitionValues?): Animator? |


{% extends "admin/change_form.html" %} {% load static relatives %} {% block field_sets %} {% related_objects adminform.form.instance as related_objects %}


Resources for doing science with the dotSkapes platform.
Our nascent documentation system.
Resources for doing research with dotSkapes.
Resources for understanding or contributing to our infrastracture.
Examples of dotSkapes in the wild.


Click Start/Stop button to start or stop the video.
The videoInput is a <video> element used as input.
The canvasOutput is a <canvas> element used as output.
We get a 2-channel array with optical flow vectors, (u,v). We find their magnitude and direction.
We color code the result for better visualization. Direction corresponds to Hue value of the image.
Magnitude corresponds to Value plane.
The code of <textarea> will be executed when video is started.
You can modify the code to investigate more.


--- layout: post title: embed paypal test date: type: post published: false status: private categories: [] tags: [] meta: _edit_last: '1' author: login: satyadeep email<EMAIL_ADDRESS>display_name: Satyadeep first_name: Satyadeep last_name: K ---


Appendix I: BrainMap Discrete Decoding
Appendix I: BrainMap Discrete Decoding¶
The BrainMap discrete decoding method compares the distributions of studies with each label within the sample against those in a larger database while accounting for the number of foci from each study. Broadly speaking, this method assumes that the selection criterion is associated with one peak per study, which means that it is likely only appropriate for selection criteria based around foci, such as regions of interest. One common analysis, meta-analytic clustering, involves dividing studies within a database into meta-analytic groupings based on the spatial similarity of their modeled activation maps (i.e., study-wise pseudo-statistical maps produced by convolving coordinates with a kernel). The resulting sets of studies are often functionally decoded in order to build a functional profile associated with each meta-analytic grouping. While these groupings are defined as subsets of the database, they are not selected based on the location of an individual peak, and so weighting based on the number of foci would be inappropriate.
This decoding method produces four outputs for each label. First, the distribution of studies in the sample with the label are compared to the distributions of other labels within the sample. This consistency analysis produces both a measure of statistical significance (i.e., a p-value) and a measure of effect size (i.e., the likelihood of being selected given the presence of the label). Next, the studies in the sample are compared to the studies in the rest of the database. This specificity analysis produces a p-value and an effect size measure of the posterior probability of having the label given selection into the sample. A detailed algorithm description is presented below.
The BrainMap method for discrete functional decoding performs both forward and reverse inference using an annotated coordinate-based database and a target sample of studies within that database. Unlike the Neurosynth approach, the BrainMap approach incorporates information about the number of foci associated with each study in the database.
Select studies in the database according to some criterion (e.g., having at least one peak in an ROI).
For each label, studies in the database can now be divided into four groups.
Label-positive and selected –> \(S_{s+l+}\)
Label-negative and selected –> \(S_{s+l-}\)
Label-positive and unselected –> \(S_{s-l+}\)
Label-negative and unselected –> \(S_{s-l-}\)
Additionally, the number of foci associated with each of these groups is extracted.
Number of foci from studies with label, \(F_{l+}\)
Number of foci from studies without label, \(F_{l-}\)
Total number of foci in the database, \(F_{db} = F_{l+} + F_{l-}\)
Compute the number of times any label is used in the database, \(L_{db}\) (e.g., if every experiment in the database uses two labels, then this number is \(2S_{db}\), where \(S_{db}\) is the total number of experiments in the database).
Compute the probability of being selected, \(P(s^{+})\).
\(P(s^{+}) = S_{s+} / F_{db}\), where \(S_{s+} = S_{s+l+} + S_{s+l-}\)
For each label, compute the probability of having the label, \(P(l^{+})\).
\(P(l^{+}) = S_{l+} / L_{db}\), where \(S_{l+} = S_{s+l+} + S_{s-l+}\)
For each label, compute the probability of being selected given presence of the label, \(P(s^{+}|l^{+})\).
Can be re-interpreted as the probability of activating the ROI given a mental state.
\(P(s^{+}|l^{+}) = S_{s+l+} / F_{l+}\)
Convert \(P(s^{+}|l^{+})\) into the forward inference likelihood, \(\mathcal{L}\).
\(\mathcal{L} = P(s^{+}|l^{+}) / P(s^{+})\)
Compute the probability of the label given selection, \(P(l^{+}|s^{+})\).
Can be re-interpreted as probability of a mental state given activation of the ROI.
\(P(l^{+}|s^{+}) = \frac{P(s^{+}|l^{+})P(l^{+})}{P(s^{+})}\)
This is the reverse inference posterior probability.
Perform a binomial test to determine if the rate at which studies are selected from the set of studies with the label is significantly different from the base probability of studies being selected across the whole database.
The number of successes is \(\mathcal{K} = S_{s+l+}\), the number of trials is \(n = F_{l+}\), and the hypothesized probability of success is \(p = P(s^{+})\)
If \(S_{s+l+} < 5\), override the p-value from this test with 1, essentially ignoring this label in the analysis.
Convert p-value to unsigned z-value.
Perform a two-way chi-square test to determine if presence of the label and selection are independent.
If \(S_{s+l+} < 5\), override the p-value from this test with 1, essentially ignoring this label in the analysis.
Convert p-value to unsigned z-value.


{{post.title}}
{{_('Posted by %s on %s', meta.author, meta.date|date_formatted)}}
{{post.description}}
{{_('Read More')}}{% endfor %}
{% import "g" as g with context %}
{% include '_head_.html' %} {% include '_nav.html' %}{{post.description}}
{{_('Read More')}}


NJ
Front End Intermediate Projects
Random Quote Machine
Weather App
Wikipedia Viewer
Twitch Tv Viewer
Other FCC Front-End Projects
Tribute Page
Personal Portfolio
Javascript Calculator
Pomodoro Clock
Tic Tac Toe Game
Simon Game
Say Hi
Still Building


Realtime
It may be trivial to get realtime updates with socket.io or something, but what you do not get is state synchronization.


Chapter 11 Linear model 2
11.1 Learning goals
- Multiple regression.
- Appreciate model assumptions.
- Several continuous predictors.
- Hypothesis tests.
- Interpreting parameters.
- Reporting results.
- One categorical predictor.
- Both continuous and categorical predictors.
- Interpreting interactions.
11.2 Load packages and set plotting theme
library("knitr") # for knitting RMarkdown
library("kableExtra") # for making nice tables
library("janitor") # for cleaning column names
library("broom") # for tidying up linear models
library("corrr") # for calculating correlations between many variables
library("corrplot") # for plotting correlations
library("GGally") # for running ggpairs() function
library("tidyverse") # for wrangling, plotting, etc.
# include references for used packages
::write_bib(.packages(), "packages.bib") knitr
theme_set(theme_classic() + #set the theme
theme(text = element_text(size = 20))) #set the default text size
$set(comment = "",
opts_chunkfig.show = "hold")
11.3 Load data sets
Let’s load the data sets that we’ll explore in this class:
# credit data set
= read_csv("data/credit.csv") %>%
df.credit rename(index = `...1`) %>%
clean_names()
# advertising data set
= read_csv("data/advertising.csv") %>%
df.ads rename(index = `...1`) %>%
clean_names()
| variable | description |
|---|---|
| income | in thousand dollars |
| limit | credit limit |
| rating | credit rating |
| cards | number of credit cards |
| age | in years |
| education | years of education |
| gender | male or female |
| student | student or not |
| married | married or not |
| ethnicity | African American, Asian, Caucasian |
| balance | average credit card debt |
11.4 Multiple continuous variables
Let’s take a look at a case where we have multiple continuous predictor variables. In this case, we want to make sure that our predictors are not too highly correlated with each other (as this makes the interpration of how much each variable explains the outcome difficult). So we first need to explore the pairwise correlations between variables.
11.4.1 Explore correlations
The corrr
package is great for exploring correlations between variables. To find out more how corrr
works, take a look at this vignette:
vignette(topic = "using-corrr",
package = "corrr")
Here is an example that illustrates some of the key functions in the corrr
package (using the advertisement data):
%>%
df.ads select(where(is.numeric)) %>%
correlate(quiet = T) %>%
shave() %>%
fashion()
term index tv radio newspaper sales
1 index
2 tv .02
3 radio -.11 .05
4 newspaper -.15 .06 .35
5 sales -.05 .78 .58 .23
<IP_ADDRESS> Visualize correlations
<IP_ADDRESS>.1 Correlations with the dependent variable
%>%
df.credit select(where(is.numeric)) %>%
correlate(quiet = T) %>%
select(term, income) %>%
mutate(term = reorder(term, income)) %>%
drop_na() %>%
ggplot(aes(x = term,
y = income,
fill = income)) +
geom_hline(yintercept = 0) +
geom_col(color = "black",
show.legend = F) +
scale_fill_gradient2(low = "indianred2",
mid = "white",
high = "skyblue1",
limits = c(-1, 1)) +
coord_flip() +
theme(axis.title.y = element_blank())
<IP_ADDRESS>.2 All pairwise correlations
= df.credit %>%
tmp select(where(is.numeric), -index) %>%
correlate(diagonal = 0,
quiet = T) %>%
rearrange() %>%
select(-term) %>%
as.matrix() %>%
corrplot()
%>%
df.ads select(-index) %>%
ggpairs()
With some customization:
%>%
df.ads select(-index) %>%
ggpairs(lower = list(continuous = wrap("points",
alpha = 0.3)),
upper = list(continuous = wrap("cor", size = 8))) +
theme(panel.grid.major = element_blank())
11.4.2 Multipe regression
Now that we’ve explored the correlations, let’s have a go at the multiple regression.
<IP_ADDRESS> Visualization
We’ll first take another look at the pairwise relationships:
= "tv"
tmp.x # tmp.x = "radio"
# tmp.x = "newspaper"
# tmp.y = "radio"
= "radio"
tmp.y # tmp.y = "tv"
ggplot(df.ads,
aes_string(x = tmp.x, y = tmp.y)) +
stat_smooth(method = "lm",
color = "black",
fullrange = T) +
geom_point(alpha = 0.3) +
annotate(geom = "text",
x = -Inf,
y = Inf,
hjust = -0.5,
vjust = 1.5,
label = str_c("r = ", cor(df.ads[[tmp.x]], df.ads[[tmp.y]]) %>%
round(2) %>% # round
str_remove("^0+") # remove 0
),size = 8) +
theme(text = element_text(size = 30))
`geom_smooth()` using formula 'y ~ x'
TV ads and radio ads aren’t correlated. Yay!
<IP_ADDRESS> Fitting, hypothesis testing, evaluation
Let’s see whether adding radio ads is worth it (over and above having TV ads).
# fit the models
= lm(sales ~ 1 + tv, data = df.ads)
fit_c = lm(sales ~ 1 + tv + radio, data = df.ads)
fit_a
# do the F test
anova(fit_c, fit_a)
Analysis of Variance Table
Model 1: sales ~ 1 + tv
Model 2: sales ~ 1 + tv + radio
Res.Df RSS Df Sum of Sq F Pr(>F)
1 198 2102.53
2 197 556.91 1 1545.6 546.74 < 2.2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
It’s worth it!
Let’s evaluate how well the model actually does. We do this by taking a look at the residual plot, and check whether the residuals are normally distributed.
= lm(sales ~ 1 + tv + radio, data = df.ads)
tmp.fit
= tmp.fit %>%
df.plot augment() %>%
clean_names()
# residual plot
ggplot(df.plot,
aes(x = fitted,
y = resid)) +
geom_point()
# density of residuals
ggplot(df.plot,
aes(x = resid)) +
stat_density(geom = "line")
# QQ plot
ggplot(df.plot,
aes(sample = resid)) +
geom_qq() +
geom_qq_line()
There is a slight non-linear trend in the residuals. We can also see that the residuals aren’t perfectly normally distributed. We’ll see later what we can do about this …
Let’s see how well the model does overall:
%>%
fit_a glance() %>%
kable(digits = 3) %>%
kable_styling(bootstrap_options = "striped",
full_width = F)
| r.squared | adj.r.squared | sigma | statistic | p.value | df | logLik | AIC | BIC | deviance | df.residual | nobs |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0.897 | 0.896 | 1.681 | 859.618 | 0 | 2 | -386.197 | 780.394 | 793.587 | 556.914 | 197 | 200 |
As we can see, the model almost explains 90% of the variance. That’s very decent!
<IP_ADDRESS> Visualizing the model fits
Here is a way of visualizing how both tv ads and radio ads affect sales:
= lm(sales ~ 1 + tv + radio, data = df.ads) %>%
df.plot augment() %>%
clean_names()
= lm(sales ~ 1 + tv + radio, data = df.ads) %>%
df.tidy tidy()
ggplot(df.plot, aes(x = radio, y = sales, color = tv)) +
geom_point() +
scale_color_gradient(low = "gray80", high = "black") +
theme(legend.position = c(0.1, 0.8))
We used color here to encode TV ads (and the x-axis for the radio ads).
In addition, we might want to illustrate what relationship between radio ads and sales the model predicts for three distinct values for TV ads. Like so:
= lm(sales ~ 1 + tv + radio, data = df.ads) %>%
df.plot augment() %>%
clean_names()
= lm(sales ~ 1 + tv + radio, data = df.ads) %>%
df.tidy tidy()
ggplot(df.plot, aes(x = radio, y = sales, color = tv)) +
geom_point() +
geom_abline(intercept = df.tidy$estimate[1] + df.tidy$estimate[2] * 200,
slope = df.tidy$estimate[3]) +
geom_abline(intercept = df.tidy$estimate[1] + df.tidy$estimate[2] * 100,
slope = df.tidy$estimate[3]) +
geom_abline(intercept = df.tidy$estimate[1] + df.tidy$estimate[2] * 0,
slope = df.tidy$estimate[3]) +
scale_color_gradient(low = "gray80", high = "black") +
theme(legend.position = c(0.1, 0.8))
<IP_ADDRESS> Interpreting the model fits
Fitting the augmented model yields the following estimates for the coefficients in the model:
%>%
fit_a tidy(conf.int = T) %>%
head(10) %>%
kable(digits = 2) %>%
kable_styling(bootstrap_options = "striped",
full_width = F)
| term | estimate | std.error | statistic | p.value | conf.low | conf.high |
|---|---|---|---|---|---|---|
| (Intercept) | 2.92 | 0.29 | 9.92 | 0 | 2.34 | 3.50 |
| tv | 0.05 | 0.00 | 32.91 | 0 | 0.04 | 0.05 |
| radio | 0.19 | 0.01 | 23.38 | 0 | 0.17 | 0.20 |
<IP_ADDRESS> Standardizing the predictors
One thing we can do to make different predictors more comparable is to standardize them.
= df.ads %>%
df.ads mutate(across(.cols = c(tv, radio),
.fns = ~ scale(.),
.names = "{.col}_scaled"))
%>%
df.ads select(-newspaper) %>%
head(10) %>%
kable(digits = 2) %>%
kable_styling(bootstrap_options = "striped",
full_width = F)
| index | tv | radio | sales | tv_scaled | radio_scaled |
|---|---|---|---|---|---|
| 1 | 230.1 | 37.8 | 22.1 | 0.96742460 | 0.9790656 |
| 2 | 44.5 | 39.3 | 10.4 | -1.19437904 | 1.0800974 |
| 3 | 17.2 | 45.9 | 9.3 | -1.51235985 | 1.5246374 |
| 4 | 151.5 | 41.3 | 18.5 | 0.05191939 | 1.2148065 |
| 5 | 180.8 | 10.8 | 12.9 | 0.39319551 | -0.8395070 |
| 6 | 8.7 | 48.9 | 7.2 | -1.61136487 | 1.7267010 |
| 7 | 57.5 | 32.8 | 11.8 | -1.04295960 | 0.6422929 |
| 8 | 120.2 | 19.6 | 13.2 | -0.31265202 | -0.2467870 |
| 9 | 8.6 | 2.1 | 4.8 | -1.61252963 | -1.4254915 |
| 10 | 199.8 | 2.6 | 10.6 | 0.61450084 | -1.3918142 |
We can standardize (z-score) variables using the scale()
function.
# tmp.variable = "tv"
= "tv_scaled"
tmp.variable
ggplot(df.ads,
aes(x = .data[[tmp.variable]])) +
stat_density(geom = "line",
size = 1) +
annotate(geom = "text",
x = median(df.ads[[tmp.variable]]),
y = -Inf,
label = str_c("sd = ", sd(df.ads[[tmp.variable]]) %>% round(2)),
size = 10,
vjust = -1,
hjust = 0.5) +
annotate(geom = "text",
x = median(df.ads[[tmp.variable]]),
y = -Inf,
label = str_c("mean = ", mean(df.ads[[tmp.variable]]) %>% round(2)),
size = 10,
vjust = -3,
hjust = 0.5)
Scaling a variable leaves the distribution intact, but changes the mean to 0 and the SD to 1.
11.5 One categorical variable
Let’s compare a compact model that only predicts the mean, with a model that uses the student variable as an additional predictor.
# fit the models
= lm(balance ~ 1, data = df.credit)
fit_c = lm(balance ~ 1 + student, data = df.credit)
fit_a
# run the F test
anova(fit_c, fit_a)
Analysis of Variance Table
Model 1: balance ~ 1
Model 2: balance ~ 1 + student
Res.Df RSS Df Sum of Sq F Pr(>F)
1<PHONE_NUMBER>2
2<PHONE_NUMBER>0 1 5658372 28.622 1.488e-07 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
%>%
fit_a summary()
Call:
lm(formula = balance ~ 1 + student, data = df.credit)
Residuals:
Min 1Q Median 3Q Max
-876.82 -458.82 -40.87 341.88 1518.63
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 480.37 23.43 20.50 < 2e-16 ***
studentYes 396.46 74.10 5.35 1.49e-07 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 444.6 on 398 degrees of freedom
Multiple R-squared: 0.06709, Adjusted R-squared: 0.06475
F-statistic: 28.62 on 1 and 398 DF, p-value: 1.488e-07
The summary()
shows that it’s worth it: the augmented model explains a signifcant amount of the variance (i.e. it significantly reduces the proportion in error PRE).
11.5.1 Visualization of the model predictions
Let’s visualize the model predictions. Here is the compact model:
ggplot(df.credit,
aes(x = index,
y = balance)) +
geom_hline(yintercept = mean(df.credit$balance),
size = 1) +
geom_segment(aes(xend = index,
yend = mean(df.credit$balance)),
alpha = 0.1) +
geom_point(alpha = 0.5)
It just predicts the mean (the horizontal black line). The vertical lines from each data point to the mean illustrate the residuals.
And here is the augmented model:
= fit_a %>%
df.fit tidy() %>%
mutate(estimate = round(estimate,2))
ggplot(df.credit,
aes(x = index,
y = balance,
color = student)) +
geom_hline(yintercept = df.fit$estimate[1],
size = 1,
color = "#E41A1C") +
geom_hline(yintercept = df.fit$estimate[1] + df.fit$estimate[2],
size = 1,
color = "#377EB8") +
geom_segment(data = df.credit %>%
filter(student == "No"),
aes(xend = index,
yend = df.fit$estimate[1]),
alpha = 0.1,
color = "#E41A1C") +
geom_segment(data = df.credit %>%
filter(student == "Yes"),
aes(xend = index,
yend = df.fit$estimate[1] + df.fit$estimate[2]),
alpha = 0.1,
color = "#377EB8") +
geom_point(alpha = 0.5) +
scale_color_brewer(palette = "Set1") +
guides(color = guide_legend(reverse = T))
Note that this model predicts two horizontal lines. One for students, and one for non-students.
Let’s make simple plot that shows the means of both groups with bootstrapped confidence intervals.
ggplot(data = df.credit,
mapping = aes(x = student, y = balance, fill = student)) +
stat_summary(fun = "mean",
geom = "bar",
color = "black",
show.legend = F) +
stat_summary(fun.data = "mean_cl_boot",
geom = "linerange",
size = 1) +
scale_fill_brewer(palette = "Set1")
And let’s double check that we also get a signifcant result when we run a t-test instead of our model comparison procedure:
t.test(x = df.credit$balance[df.credit$student == "No"],
y = df.credit$balance[df.credit$student == "Yes"])
Welch Two Sample t-test
data: df.credit$balance[df.credit$student == "No"] and df.credit$balance[df.credit$student == "Yes"]
t = -4.9028, df = 46.241, p-value = 1.205e-05
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-559.2023 -233.7088
sample estimates:
mean of x mean of y
480.3694 876.8250
11.5.2 Dummy coding
When we put a variable in a linear model that is coded as a character or as a factor, R automatically recodes this variable using dummy coding. It uses level 1 as the reference category for factors, or the value that comes first in the alphabet for characters.
%>%
df.credit select(income, student) %>%
mutate(student_dummy = ifelse(student == "No", 0, 1))%>%
head(10) %>%
kable(digits = 2) %>%
kable_styling(bootstrap_options = "striped",
full_width = F)
| income | student | student_dummy |
|---|---|---|
| 14.89 | No | 0 |
| 106.03 | Yes | 1 |
| 104.59 | No | 0 |
| 148.92 | No | 0 |
| 55.88 | No | 0 |
| 80.18 | No | 0 |
| 21.00 | No | 0 |
| 71.41 | No | 0 |
| 15.12 | No | 0 |
| 71.06 | Yes | 1 |
11.5.3 Reporting the results
To report the results, we could show a plot like this:
= df.credit
df.plot
ggplot(df.plot,
aes(x = student,
y = balance)) +
geom_point(alpha = 0.1,
position = position_jitter(height = 0, width = 0.1)) +
stat_summary(fun.data = "mean_cl_boot",
size = 1)
And then report the means and standard deviations together with the result of our signifance test:
%>%
df.credit group_by(student) %>%
summarize(mean = mean(balance),
sd = sd(balance)) %>%
mutate(across(where(is.numeric), ~ round(., 2)))
# A tibble: 2 × 3
student mean sd
<chr> <dbl> <dbl>
1 No 480. 439.
2 Yes 877. 490
11.6 One continuous and one categorical variable
Now let’s take a look at a case where we have one continuous and one categorical predictor variable. Let’s first formulate and fit our models:
# fit the models
= lm(balance ~ 1 + income, df.credit)
fit_c = lm(balance ~ 1 + income + student, df.credit)
fit_a
# run the F test
anova(fit_c, fit_a)
Analysis of Variance Table
Model 1: balance ~ 1 + income
Model 2: balance ~ 1 + income + student
Res.Df RSS Df Sum of Sq F Pr(>F)
1<PHONE_NUMBER>5
2<PHONE_NUMBER>4 1 5269691 34.331 9.776e-09 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
We see again that it’s worth it. The augmented model explains significantly more variance than the compact model.
11.6.1 Visualization of the model predictions
Let’s visualize the model predictions again. Let’s start with the compact model:
= fit_c %>%
df.augment augment() %>%
clean_names()
ggplot(df.augment,
aes(x = income,
y = balance)) +
geom_smooth(method = "lm", se = F, color = "black") +
geom_segment(aes(xend = income,
yend = fitted),
alpha = 0.3) +
geom_point(alpha = 0.3)
`geom_smooth()` using formula 'y ~ x'
This time, the compact model still predicts just one line (like above) but note that this line is not horizontal anymore.
= fit_a %>%
df.tidy tidy() %>%
mutate(estimate = round(estimate,2))
= fit_a %>%
df.augment augment() %>%
clean_names()
ggplot(df.augment,
aes(x = income,
y = balance,
group = student,
color = student)) +
geom_segment(data = df.augment %>%
filter(student == "No"),
aes(xend = income,
yend = fitted),
color = "#E41A1C",
alpha = 0.3) +
geom_segment(data = df.augment %>%
filter(student == "Yes"),
aes(xend = income,
yend = fitted),
color = "#377EB8",
alpha = 0.3) +
geom_abline(intercept = df.tidy$estimate[1],
slope = df.tidy$estimate[2],
color = "#E41A1C",
size = 1) +
geom_abline(intercept = df.tidy$estimate[1] + df.tidy$estimate[3],
slope = df.tidy$estimate[2],
color = "#377EB8",
size = 1) +
geom_point(alpha = 0.3) +
scale_color_brewer(palette = "Set1") +
theme(legend.position = c(0.1, 0.9)) +
guides(color = guide_legend(reverse = T))
The augmented model predicts two lines again, each with the same slope (but the intercept differs).
11.7 Interactions
Let’s check whether there is an interaction between how income affects balance for students vs. non-students.
11.7.1 Visualization
Let’s take a look at the data first.
ggplot(data = df.credit,
mapping = aes(x = income,
y = balance,
group = student,
color = student)) +
geom_smooth(method = "lm", se = F) +
geom_point(alpha = 0.3) +
scale_color_brewer(palette = "Set1") +
theme(legend.position = c(0.1, 0.9)) +
guides(color = guide_legend(reverse = T))
`geom_smooth()` using formula 'y ~ x'
Note that we just specified here that we want to have a linear model (via geom_smooth(method = "lm")
). By default, ggplot2
assumes that we want a model that includes interactions. We can see this by the fact that two fitted lines are not parallel.
But is the interaction in the model worth it? That is, does a model that includes an interaction explain significantly more variance in the data, than a model that does not have an interaction.
11.7.2 Hypothesis test
Let’s check:
# fit models
= lm(formula = balance ~ income + student, data = df.credit)
fit_c = lm(formula = balance ~ income * student, data = df.credit)
fit_a
# F-test
anova(fit_c, fit_a)
Analysis of Variance Table
Model 1: balance ~ income + student
Model 2: balance ~ income * student
Res.Df RSS Df Sum of Sq F Pr(>F)
1<PHONE_NUMBER>4
2<PHONE_NUMBER>5 1 204509 1.3334 0.2489
Nope, not worth it! The F-test comes out non-significant.
11.9 Session info
Information about this R session including which version of R was used, and what packages were loaded.
sessionInfo()
R version 4.1.2 (2021-11-01)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Big Sur 10.16
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] forcats_0.5.1 stringr_1.4.0 dplyr_1.0.9 purrr_0.3.4
[5] readr_2.1.2 tidyr_1.2.0 tibble_3.1.7 tidyverse_1.3.1
[9] GGally_2.1.2 ggplot2_3.3.6 corrplot_0.92 corrr_0.4.3
[13] broom_0.8.0 janitor_2.1.0 kableExtra_1.3.4 knitr_1.39
loaded via a namespace (and not attached):
[1] nlme_3.1-157 fs_1.5.2 lubridate_1.8.0
[4] bit64_4.0.5 webshot_0.5.3 RColorBrewer_1.1-3
[7] httr_1.4.3 tools_4.1.2 backports_1.4.1
[10] bslib_0.3.1 utf8_1.2.2 R6_2.5.1
[13] rpart_4.1.16 Hmisc_4.7-0 DBI_1.1.2
[16] mgcv_1.8-40 colorspace_2.0-3 nnet_7.3-17
[19] withr_2.5.0 gridExtra_2.3 tidyselect_1.1.2
[22] bit_4.0.4 compiler_4.1.2 cli_3.3.0
[25] rvest_1.0.2 htmlTable_2.4.0 TSP_1.2-0
[28] xml2_1.3.3 labeling_0.4.2 bookdown_0.26
[31] sass_0.4.1 checkmate_2.1.0 scales_1.2.0
[34] systemfonts_1.0.4 digest_0.6.29 foreign_0.8-82
[37] rmarkdown_2.14 svglite_2.1.0 jpeg_0.1-9
[40] base64enc_0.1-3 pkgconfig_2.0.3 htmltools_0.5.2
[43] dbplyr_2.1.1 fastmap_1.1.0 highr_0.9
[46] htmlwidgets_1.5.4 rlang_1.0.2 readxl_1.4.0
[49] rstudioapi_0.13 jquerylib_0.1.4 farver_2.1.0
[52] generics_0.1.2 jsonlite_1.8.0 vroom_1.5.7
[55] magrittr_2.0.3 Formula_1.2-4 Matrix_1.4-1
[58] Rcpp_<IP_ADDRESS> munsell_0.5.0 fansi_1.0.3
[61] lifecycle_1.0.1 stringi_1.7.6 yaml_2.3.5
[64] snakecase_0.11.0 plyr_1.8.7 grid_4.1.2
[67] parallel_4.1.2 crayon_1.5.1 lattice_0.20-45
[70] haven_2.5.0 splines_4.1.2 hms_1.1.1
[73] pillar_1.7.0 codetools_0.2-18 reprex_2.0.1
[76] glue_1.6.2 evaluate_0.15 latticeExtra_0.6-29
[79] data.table_1.14.2 modelr_0.1.8 png_0.1-7
[82] vctrs_0.4.1 tzdb_0.3.0 foreach_1.5.2
[85] cellranger_1.1.0 gtable_0.3.0 reshape_0.8.9
[88] assertthat_0.2.1 xfun_0.30 survival_3.3-1
[91] viridisLite_0.4.0 seriation_1.3.5 iterators_1.0.14
[94] registry_0.5-1 cluster_2.1.3 ellipsis_0.3.2


--- layout: post title: ! 'Handy Hack: format the display on gworldclock clock' tags: - Linux status: publish type: post published: true meta: _edit_last: '451289' --- Updated Oct/08
man date
at a shell prompt. I've also added a summary to the end of this post but I am not sure if Gworldclock supports all the options. To start with you might want to try %R %a
, however %N
is probably of limited value :-)
%a locale's abbreviated weekday name (e.g., Sun)
%A locale's full weekday name (e.g., Sunday)
%b locale's abbreviated month name (e.g., Jan)
%B locale's full month name (e.g., January)
%c locale's date and time (e.g., Thu Mar 3 23:05:25 2005) %C century; like %Y, except omit last two digits (e.g., 21) %d day of month (e.g, 01) %D date; same as %m/%d/%y %e day of month, space padded; same as %_d %F full date; same as %Y-%m-%d %g the last two digits of the year corresponding to the %V week number %G the year corresponding to the %V week number %h same as %b %H hour (00..23) %I hour (01..12) %j day of year (001..366) %k hour ( 0..23) %l hour ( 1..12) %m month (01..12) %M minute (00..59) %n a newline %N nanoseconds (000000000..999999999) %p locale's equivalent of either AM or PM; blank if not known %P like %p, but lower case %r locale's 12-hour clock time (e.g., 11:11:04 PM) %R 24-hour hour and minute; same as %H:%M %s seconds since 1970-01-01 00:00:00 UTC %S second (00..60) %t a tab %T time; same as %H:%M:%S %u day of week (1..7); 1 is Monday %U week number of year with Sunday as first day of week (00..53) %V week number of year with Monday as first day of week (01..53) %w day of week (0..6); 0 is Sunday %W week number of year with Monday as first day of week (00..53) %x locale's date representation (e.g., 12/31/99) %X locale's time representation (e.g., 23:13:48) %y last two digits of year (00..99) %Y year %z +hhmm numeric timezone (e.g., -0400) %:z +hh:mm numeric timezone (e.g., -04:00)


@Deleted User Not really a hacker. I'm just doing a proof of concept to show peopel how these attacks work and to have some fun.
Ya don't say?
@Deleted User That was from his comment, not yours; I was meaning that any 2 minutes from his vid made it obvious that he wasn't one
Geocold5114-Oct-18 03:24 AM
@Deleted User I have CVEs, square up.
Also
@ComputerGenie 👴👴👴 You ever watch GeoHot's streams?
 Blocktime is insignificant


“Paṇṇavīsativassāni,
yato pabbajitā ahaṁ;
Nāccharāsaṅghātamattampi,
cittassūpasamajjhagaṁ.
In the twenty-five years
since I went forth
I have not found peace of mind,
even for as long as a finger-snap.
Aladdhā cetaso santiṁ,
kāmarāgenavassutā;
Bāhā paggayha kandantī,
vihāraṁ pāvisiṁ ahaṁ.
Failing to find peace of heart,
corrupted by sensual desire,
I cried with flailing arms
as I entered a dwelling.
Sā bhikkhuniṁ upāgacchiṁ,
yā me saddhāyikā ahu;
Sā me dhammamadesesi,
khandhāyatanadhātuyo.
I approached a nun
in whom I had faith.
She taught me the Dhamma:
the aggregates, sense fields, and elements.
Tassā dhammaṁ suṇitvāna,
ekamante upāvisiṁ;
Pubbenivāsaṁ jānāmi,
dibbacakkhu visodhitaṁ.
When I heard her teaching,
I retired to a discreet place.
I know my past lives;
my clairvoyance is purified;
Cetopariccañāṇañca,
sotadhātu visodhitā;
Iddhīpi me sacchikatā,
patto me āsavakkhayo;
Chaḷabhiññā sacchikatā,
kataṁ buddhassa sāsanan”ti.
I comprehend the minds of others;
my clairaudience is purified;
I've realized the psychic powers,
and attained the ending of defilements.
I have realized the six kinds of direct knowledge,
and fulfilled the Buddha’s instructions.
… Aññatarā therī ….


I 'm having a local EMONCMS on a PI and dont have (can't find?) the option to select PHPFIWA, the only choice is PHPFINA.
Also it does not store the values so I it can be shown as a graph.
Archived Forum |
|
Feed engineSubmitted by eugen66 on Tue, 27/01/2015 - 13:28I 'm having a local EMONCMS on a PI and dont have (can't find?) the option to select PHPFIWA, the only choice is PHPFINA. Also it does not store the values so I it can be shown as a graph. » |
Re: Feed engine
I assume the local emonCMS is the "low-write" version on an SD card, The PHPfiwa take 5x as many writes to store the same data as a PHPfina because of the averaging.
Certain write intensive features had to be held back from the "low-write" version to help prevent premature SD card failure. You will also find data cannot be edited, corrected or backdated.
You can find many discusssions on this around the forum using search or read up on the "low-write emoncms" in the documentation on the emoncms repo
Or you can switch to the full emoncms version if you add a hard-drive.
Paul
Re: Feed engine
Thanks for your reply ;) I'm trying to read me up her, but theres a lot of info to understand ;)
Re: Feed engine
I have recently set up a Pi2 with the "low-write" version using and SD card. As expected, phpfiwa is not available. There seem to be many advantages in using phpfiwa, especially for long-term analysis of power usage as I would like to do. To do this the best option seems to be using an external hdd (or ssd to reduce power).
What is the future of phpfiwa? With the recent development effort of emonPi using an SD card presumably most local logging will be done with phpfina. Does this mean phpfiwa will fall off the radar and be less well supported in the future? Or perhaps it will one day be supported on an SD card?
Just wanting to get a bit of an idea if it is worth me buying an external enclosure and ssd before logging too much data with the 'wrong' engine.
Re: Feed engine
Anyone?
Re: Feed engine
Since the development process in general is quite fluid it difficult to say with any certainty how things will evolve, by initial thoughts are hdd's can be very cheap, useful for other things and easily re-purposed or sold on so the potentially "wasted" financial investment can be quite minimal.
The data however could be perceived as more valuable (or less) depending on your own persuasion. Since the PHP feeds are quite a basic form the data could probably be converted rather than lost if it came to the crunch.
A while back a user complained about "being forced" to use the new feed engines rather than mySQL, I recall telling him that was not the case that despite the new engines being the prefered method, mySQL would probably always be supported since it is a very common database with a massive following and flexibility for integration etc. Recently the decision was made to completely remove the mySQL options so I was wrong to assume that. Despite my reasons still holding the outcome wasn't as i expected (or hoped for) so I can only speculate and have been known to be completely wrong! (that's a disclaimer too)
Any transition is likely to be slow I wouldn't expect anyone to be left high and dry.
The PHPfiwa feed has the averaging that can be "dropped during conversion" to another feed type that doesn't require it, rather than the other way round.
The current direction as I understand is too make emonCMS less write intensive specifically for lower SD card wear, there were plans to reintroduce the features currently missing from the low-write version but how (or if) that is implemented I'm not sure.
So yes the SD card is the current focus, as is the emonPi, therefore (reading between the lines) I would expect the missing features to become a priority and be compatible with existing PHPfiwa.
I understand the same issue effects the SSD's also so I certainly wouldn't invest in a ssd just yet as the current high write rate could shorten it's life. The write rate will lower as will the prices so hold off for now.
Your (local) options IMO are to "just accept no averaging" for now or start logging PHPfiwa to a cheap spinning hdd, deferring the decision to buy a SSD or fully adopt a "SD card only" or take a chance on a full emoncms install on a SD card and hope it lasts longer than the development takes ( doing regular backups of course).
Personally I currently prefer to use a local hdd for full functionality and reliability but hope the development continues to reduce write rates to make a "full" SD card version possible as this would also make the 'price v longevity' investment of a SSD so much more viable too.
Paul
Re: Feed engine
Thanks for detailed answer. I think for now I will take your advice and use an existing spinning hdd I have lying around. Once things stabilize a bit I will look at converting over to an SSD to save on power.
Regarding SSD wear, I think an SSD will last close to forever in home use. My understanding is the memory used is much higher quality than used in SD cards. Also, the controllers and wear-leveling algorithms are far more advanced in SSD drives.


BF4 Levolution Explained - Better Battlelog Forums #106814
Sitemap
23.  August 2013 11:58
Topicstarter
BrainFooLong
Administrator
Holy cow, the game look even more epic for me :)
http://www.youtube.com/watch?v=Q3W4FbsAqIY


Welcome to my website. This webpage is hosted free of charge on amock.io.
Amock.io allows you to create unlimited mocks of any format and type for any purpose. From backend prototyping to webpage demo mocks.
Catch amock.io on twitter @amockdotio and k32y @kezyroan. How about that?
The official facebook page for amock.io is https://www.facebook.com/amockdotio


The Buffer
Overview
The Buffer is the part of the RxPlayer choosing which segments to request and pushing them to the corresponding SourceBuffer.
It tries to choose the optimal segments based on:
- current network conditions
- browser capacities
- the current playing conditions
The AdaptationBufferManager
The AdaptationBufferManager allows to easily create Buffer for a single manifest’s Adaptation.
Basically, it will dynamically create and destroy RepresentationBuffer - which are Buffers linked to a single Representation - based on the current conditions.
The RepresentationBuffer will then have the task to do the segment-downloading and pushing itself. More information on it is available in the RepresentationBuffer documentation.


Holby City star David Ames teases return of evil Isaac Mayfield
He's behind you!
by Helen FearAbusive bully Isaac Mayfield might make an unwelcome return to Holby City, according to star David Ames.
Viewers know that Isaac was brought back into the show earlier this year to explore what happens when an abuser comes back into someone’s life, and the repercussions of it.
The former registrar in general surgery worked on the Keller Ward of Holby City Hospital from June 2016, replacing CT2 Arthur Digby, until April 2017.
But he was fired after Dom reported his physical abuse to the police.
Isaac was later sent to prison for brutally attacking Dom in 2017, but Marc Elliott reprised his role as the evil character earlier in the year, for a brand new chapter in the story.
Read more: Holby City SPOILERS: Jac's mental decline revealed as she ends up in a psychiatric unit
Now actor David, who plays Isaac's abuse victim Dom, has hinted that fans probably haven't seen the last of the evil character.
When asked if Isaac could come back again, David told Digital Spy: "We've left it wide open. He hasn't been discussed a lot since, so I suppose it would be down to the writers.
"Marc was a joy when doing that very heavy story, and doing it with such conviction - he is such a talent."
He added: "It was a very dark story to deal with, but doing it with someone who makes me laugh every five minutes was a dream. It kept everything light. I really hope that can be explored again at some point."
Explaining the decision to bring back Isaac in the first place, David added: "We thought it was important to tell the original story of the abuse and how that came about, but also to show that, as much as you can heal from it, it doesn't leave you entirely.
"There are certain things you have to revisit and certain issues that don't go away so easily. That is what we wanted to get from the story when Isaac came back and threw a cat amongst the pigeons, especially now that Dom is happily married. We wanted to see where that went."
He hinted that "perhaps in the future we will be able to explore a bit more of that again".
In June, Isaac's reign of terror left Lofty's life hanging in the balance.
With Isaac's father in the hospital, he'd returned to manipulate Dom and soon realised his marriage to Lofty was unstable thanks to Lofty's recent betrayal...
When Lofty confronted Isaac about his behaviour, Isaac beat him up, leaving the fan fave with head and spleen injuries.
Isaac tried to run, but he was stopped by Sacha and the police.
So Isaac is once again in police custody... For now!
Do you want Isaac to return to Holby? Leave us a comment on our Facebook page @EntertainmentDailyFix and let us know what you think!


 It's about the social dynamics of code review.
Tell me what you think.
Update: The paper was lost, now it's found.
--- layout: post title: "Your Code Sucks and I Hate You" date: 2008-12-24 comments: false ---
I think you're missing a "least" in this sentence, though. "If a chunk of code has been reviewed by someone else, then there are at [least] two people in the world who can understand it."
"You think my code suck, and I hate you"
You mention that in the case of disputed matters, the patch reviewer makes the final decision in the case of Bazaar. It seems to me like that usually when there is disagreement between the patch author and the review(ers) the patch gets stalled and eventually the project leader (Martin) makes the final decision.
Merry Christmas!


| DOSE: |
25 mg |
oral |
2C-T-7 |
(powder / crystals) |
The morning began when my parents left for their six hour drive to another city. I think to myself “hey, I have a weekend to do whatever the hell I want, lets start at 8am on a friday with some 2CT7!”
at around 8:30am I poured 25mg of 2C-T-7 into about 6oz of iced tea I had mixed earlier. I chugged the mixture (after stirring it of course), hit “start” on the stopwatch and began to prepare for what I thought would be one hell of a train ride. I had no idea what I was in for.
Immediately I was noticing the effects of it. I had done this drug twice before (5mg and 10mg trials, both good), both in the best conditions possible.
The biggest thing I did wrong when I took this was eat my breakfast before hand (I would say about 10 minutes before ingestion of the drug). I became nauseous very quickly and sat in front my toilet swearing at it for what seemed like an eternity (what was actually about 15 minutes). Nothing happened. So I got up, played some GTA IV when the nausea hit me hard. I ran into the bathroom and caught a glimpse of my face (mentally noting I was physically stable) and vomited extremely forcefully. So forceful, actually, that I burst blood vessels in my face, specifically around my eyes—but more to my right eye.
 You've done it now. After all these bad trip reports of people dying, and now you've gone ahead and followed in their tracks.” Yet still I refused to call an ambulance and, in retrospect, am extremely happy that I did not. Right after throwing up and looking at my face swelling up like a motherfucker, I ran to my computer to diagnose via the internet (not the smartest or a good way to diagnose at all, but it's better to have some consolation rather than freaking out about something that won't exacerbate). To my half-relief the swelling was because of the vomiting, but I still was not fully content. I decided a trip to the hospital would be necessary—but I can't give them any idea I took this drug purposefully or have them pick me up from my house, what would people think of me?
At this point I set up my image to look as the poor soul who had something put in his drink the night before, and off on the bus I went.
(Note: the mental clarity, although being assaulted with visuals almost to the point of blindness ((yes, they were that intense)) was actually impressive. I was able to keep myself at a relatively calm level to operate on the task at hand. I must admit though, it was extremely easy for my thoughts to wander ((and I would freak out for a second because of the visuals, but I would calm myself right after)), about maybe, nanotechnology.
After a 25 minute bus ride with the effects of the drug only increasing in intensity, I actually forgot why I was on the bus for a second.  But I think I can actually handle it now...yes, I am going home now.” Which means I got right back on that 25 minute bus ride right home. While thinking about nanotechnology. God damn. Nanotechnology.
I get back home and come inside, yelling in satisfaction of successfully riding in a 50 minute bus ride of hell, I made it back home. Oddly enough, as I've often tried to do with other drugs before (but my will had deteriorated well into the first sentence) I just wanted to write. To just type and type and type. Don't stop typing. Maybe scribe something up about “being the one” who is the one who breaks free from the set. He breaks set. He is the one that people look up to, because he is the one that sets the example.
I really, really, REALLY wanted to expand with this thought, but the visuals were becoming so intense that I could barely focus on my computer screen. I got about one sentence in, and it read: “Humans love triplets, or “tri-”s of anything. Most enjoyed when turned inward.” Which got me to thinking, hey, most of the things in my room are triplet-oriented. I have two computers operating three screens. I have rolls of camera film arranged in a triplet. That got me thinking to a design for lamps, when I looked at my lamps and it has a triplet design! This is the damnedest drug. I have drinking glasses in triplets on either side of the laptop (which is in the middle) and the singular one (the “arrow” pointing the direction of the triplet) pointing inward. And by inward, I mean towards me. I am the in. I'm inward. Hi, nice to meet you.
 I don't have much to offer in writing of it, because you can't write dancing and living and experience. You can only dance, live, or, heh, experience it. Or read about nanotechnology.  Blows my mind.
I had been periodically checking up on myself (namely my face) once I got home. I reiterate from earlier, it was a good move to not go to the hospital, for they would have probably put me under some other drug so I wouldn't be a panicking mess in their ER. When I got home the trip intensified extremely, but it was most definitely manageable, so long as I stayed inside. I went into the shower and experienced some Avatar-like things. I thought so abstract about someone (metaphor for perhaps, the government?) always trying to contain a man. Either nature contains man with its vast nothingness (the complete natural universe), so he ventures everywhere and finds nothing, or the man is trapped in a prison cell (the complete modernized world) with nothing beyond the walls but nothingness. And, as if the creators of the cell were to poke fun at the universe for existing, they even put a plant in the cell. Cocky bastards.
Fast forward 6 hours of having a lot of fun, a guy phones me to meet up. I had never really caught a glance at him when I first gave him my number, and he looked like a pretty clean guy. Now when I saw him I saw exactly what I do not want to turn myself into with drugs. He was 17, his girlfriend was 16, yet they both looked like they were in their late 20's. Not good. Stay away from coke and meth.
Got home, laid in bed for a bit, when my mind wanders to a sex partner I once had. It was the damnedest thing, I could visualize our embraces, I could feel the tactile sensation of the embraces, and I could most definitely hear her embraces. Made me text her to experience it again. Aw, no. Number doesn't exist anymore. Damn. Next time.
At this point, about 9 hours into the trip, I finish writing this. After a rocky start and a bus ride through hell, it turned out to be one of the greatest trips I've ever tripped. It wasn't as earthly connected as one might put mushrooms with, but you just absolutely cannot compare one psychedelic with another.
And god damn. Nanotechnology.
Afternote: This is the criteria I lay forth for anyone (who diagnoses themselves to be like me) to follow when taking 2CT7:
-Have no food in your stomach before hand
-Build your doses slowly and don't jump the mark. (I did 5mg, then 10mg, then 25mg. Bad move, read above ((lol)))
-Have a sitter present
-HAVE A SITTER PRESENT
-Did I mention to have a sitter present?
Happy tripping boys and girls, and please, keep the food out of your stomach beforehand.
PS. Nanotechnology.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


TABLE OF INTERACTIONS WITH
AMINOGLYCOSIDES
From the French ANSM DOCUMENT of September 2016, pp. 11-12
AMINOGLYCOSIDES CLASS CODE: J01GB-001 |
OTHER AMINOGLYCOSIDES CLASS CODE: J01GB-001 |
Increased risk of nephrotoxicity and ototoxicity (the ototoxicity is cumulative in cases of successive administrations of the aminoglycosides) |
Contraindication -in case of simultaneous administration Take into account -in case of successive administrations |
AMINOGLYCOSIDES CLASS CODE: J01GB-001 |
AMPHOTERICIN B RxNorm: 732 ATC: A01AB04 A07AA07 G01AA03 J02AA01 |
With the amphotericin B administered intravenously: increased risk of nephrotoxicity |
Take into account |
AMINOGLYCOSIDES CLASS CODE: J01GB-001 |
ATALUREN RxNorm: not found ATC: M09AX03 |
Risk of increase of the renal toxicity of the aminoglycoside. |
CONTRAINDICATION |
AMINOGLYCOSIDES CLASS CODE: J01GB-001 |
BOTULINUM TOXIN RxNorm: 1716 ATC: M03AX01 |
Risk of increase of the effects of the botulinum toxin with the aminoglycosides (due to extrapolation from the effects observed during the course of the botulism) |
Not recommended Use another antibiotic |
AMINOGLYCOSIDES CLASS CODE: J01GB-001 |
CEFALOTIN RxNorm: 2236 ATC: J01DB03 |
Increase of the nephrotoxicity of the aminoglycosides by the cefalotin is under discussion |
Precaution for use Monitoring of renal function |
AMINOGLYCOSIDES CLASS CODE: J01GB-001 |
CICLOSPORIN RxNorm: 3008 ATC: L04AD01 S01XA18 |
Larger increase of the creatinemia than with ciclosporin alone, with increase of the nephrotoxic risk |
Take into account |
AMINOGLYCOSIDES CLASS CODE: J01GB-001 |
CURARES CLASS CODE: M03A-001 |
Increase of the effects of the curares when the antibiotic is administered by parenteral and/or peritoneal route before, during, or after the curarizing agent. |
Precaution for use Monitor the degree of curarization at the end of anesthesia |
AMINOGLYCOSIDES CLASS CODE: J01GB-001 |
LOOP DIURETICS CLASS CODE: C03CA-001 |
Increase of the nephrotoxic and ototoxic risks of the aminoglycoside (functional renal insufficiency linked to the dehydration caused by the diuretic) |
Precaution for use The two medications may be taken together when there is monitoring of the state of hydration, of the renal and cochleovestibulary functions, and, possibly, of the plasma concentrations of the aminoglycoside. |
AMINOGLYCOSIDES CLASS CODE: J01GB-001 |
PLATINUM-BASED ANTINEOPLASTIC DRUGS CLASS CODE: ORGAPLA |
Addition of the nephrotoxic and/or ototoxic effects, especially in the case of pre-existing renal insufficiency |
Take into account |
AMINOGLYCOSIDES CLASS CODE: J01GB-001 |
POLYMYXIN B RxNorm: 8536 ATC: A07AA05 J01XB02 S01AA18 S02AA11 S03AA03 |
Addition of the nephrotoxic effects |
Not recommended If administering these substances together cannot be avoided, strict monitoring with an indisputable bacteriological justification |
AMINOGLYCOSIDES CLASS CODE: J01GB-001 |
TACROLIMUS RxNorm: 42316 ATC: D11AH01 L04AD02 L04AD02 |
Greater increase of the creatinemia than with tacrolimus alone (synergy of the nephrotoxic effects of the two substances) |
Take into account |


|
mlpack
1.0.12
|
An edge pair is simply two indices and a distance. More...
Public Member Functions | |
| EdgePair (const size_t lesser, const size_t greater, const double dist) | |
| Initialize an EdgePair with two indices and a distance. More... | |
| double | Distance () const |
| Get the distance. More... | |
| double & | Distance () |
| Modify the distance. More... | |
| size_t | Greater () const |
| Get the greater index. More... | |
| size_t & | Greater () |
| Modify the greater index. More... | |
| size_t | Lesser () const |
| Get the lesser index. More... | |
| size_t & | Lesser () |
| Modify the lesser index. More... | |
Private Attributes | |
| double | distance |
| Distance between two indices. More... | |
| size_t | greater |
| Greater index. More... | |
| size_t | lesser |
| Lesser index. More... | |
An edge pair is simply two indices and a distance.
It is used as the basic element of an edge list when computing a minimum spanning tree.
Definition at line 30 of file edge_pair.hpp.
|
inline |
Initialize an EdgePair with two indices and a distance.
The indices are called lesser and greater, implying that they be sorted before calling Init. However, this is not necessary for functionality; it is just a way to keep the edge list organized in other code.
Definition at line 47 of file edge_pair.hpp.
References mlpack::Log::Assert().
|
inline |
Get the distance.
Definition at line 65 of file edge_pair.hpp.
References distance.
Referenced by mlpack::emst::DualTreeBoruvka< MetricType, TreeType >::SortEdgesHelper::operator()().
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
private |
Distance between two indices.
Definition at line 38 of file edge_pair.hpp.
Referenced by Distance().
|
private |
|
private |


For performance and space reasons, you may want some TDS directories on larger and higher performance disks than the directory where Tomcat is installed. For instance:
content/thredds
). ${tomcat_home}/logs
).The easiest way to change the location of non-data directories is with symbolic links. For
instance, if Tomcat is installed on a smaller and/or lower performance disk (say /opt
)
but /data
is a larger and higher performance disk, your ${tomcat_home}
directory might look something like this:
-rw-r--r-- 1 tomcat tomcat 37950 Jul 19 07:01 LICENSE -rw-r--r-- 1 tomcat tomcat 557 Jul 19 07:01 NOTICE -rw-r--r-- 1 tomcat tomcat 8669 Jul 19 06:59 RELEASE-NOTES -rw-r--r-- 1 tomcat tomcat 6670 Jul 19 07:01 RUNNING.txt drwxr-xr-x 3 tomcat tomcat 1024 Oct 24 06:42 bin/ drwxr-xr-x 4 tomcat tomcat 512 Nov 1 18:14 conf/ lrwxrwxrwx 1 tomcat tomcat 30 Aug 17 18:15 content -> /data/tds/tdsA/content/ drwxr-xr-x 2 tomcat tomcat 512 Aug 9 15:02 lib/ lrwxrwxrwx 1 tomcat tomcat 27 Aug 17 18:16 logs -> /data/tds/tdsA/logs/ drwxr-xr-x 2 tomcat tomcat 512 Oct 22 12:04 temp/ drwxr-xr-x 7 tomcat tomcat 512 Nov 1 18:33 webapps/ drwxr-xr-x 3 tomcat tomcat 512 Aug 9 19:38 work/
-Dtds.content.root.path=/some/absolute/path
the TDS will use or create (if they don't already exist) the configuration files in:
/some/absolute/path/thredds
The location of your data directories is configured in your
configuration catalog(s). So, if your data is located in
/data/pub
, you simply use the appropriate /data/pub
locations in your
various dataset configurations (datasetRoot
, datasetScan
, and
featureCollection
elements).
The various cache directories (agg/
, cdm/
, wcs/
e.g.)
can be configured with the dir
child element of the various caching elements in the threddsConfig.xml
file. However, we recommend using a symbolic link to move content/thredds
instead (more detail here).
The TDS configuration directory is created and populated with default files the first time the TDS is deployed. It is persistent even when a TDS installation is upgraded or re-deployed. All modifications and additions to the TDS configuration should be made in this directory. Do not place files containing passwords or anything else with security issues in this directory. Typically you will only be adding and modifying catalogs and configuration files.
When there are many catalogs, you may want to keep them in seperate subdirectories of the TDS configuration directory. This is recommended practice. However, do not use a subdirectory content/thredds/catalog, as catalog is a reserved word in this context.
When the TDS is first deployed, the TDS configuration directory looks like:
${tomcat_home}/content/thredds/
catalog.xml
- the main TDS configuration catalog
(root catalog for TDS configuration) enhancedCatalog.xml
- an example catalog [Note: It
is referenced from catalog.xml
.] threddsConfig.xml
- configuration
file for allowing non-default services, configuring caching, etc
(more detailed information). logs/
catalogInit.log
- log file for messages generated while reading TDS
configuration catalogs during TDS initialization and reinitialization. threddsServlet.log
- TDS error log file.cache/
- various cache directories
agg/
cdm/
collection/
ehcache/
ncss/
wcs/


Welcome Log In Sign up Latest News: 12 23 34 45 56 Read more.. Michael Fellows, Happy 60th birthday Find out more Read more Frances Rosamond,Multivariate Mathematics Find out more Parameterized Complexity Research Unit Read more about PCRU ETH Zurich ABZ International Medal of Honor to Michael Fellows Find out more