#include <DSIGKeyInfoPGPData.hpp>
Inheritance diagram for DSIGKeyInfoPGPData:
Class for holding information on a PGP Data node as well as setting such a node in a signature.
Public Member Functions | |
Constructors and Destructors | |
| DSIGKeyInfoPGPData (const XSECEnv *env, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *pgpDataNode) | |
| Constructor used when XML exists. | |
| DSIGKeyInfoPGPData (const XSECEnv *env) | |
| Constructor used when XML needs to be created. | |
| virtual | ~DSIGKeyInfoPGPData () |
| Destructor. | |
Load and Get functions | |
| virtual void | load (void) |
| Load an existing XML structure into this object. | |
| virtual const XMLCh * | getKeyID (void) |
| Get the PGP Key ID held in the structure. | |
| virtual const XMLCh * | getKeyPacket (void) |
| Get the PGP Key Packet. | |
| virtual const XMLCh * | getKeyName (void) |
| Get key name - unimplemented for PGP packets. | |
Create and set functions | |
| XERCES_CPP_NAMESPACE_QUALIFIER DOMElement * | createBlankPGPData (const XMLCh *id, const XMLCh *packet) |
| Create a new PGPData element in the current document. | |
| void | setKeyID (const XMLCh *id) |
| Set the value of the KeyID to a new string. | |
| void | setKeyPacket (const XMLCh *packet) |
| Set the value of the KeyPacket to a new string. | |
Information Functions | |
| virtual keyInfoType | getKeyInfoType (void) |
| Return type of this KeyInfo element. |
|
|
Constructor used when XML exists. This constructor is used by interface objects to load an existing DOM structure into the PGPData element.
|
|
|
Constructor used when XML needs to be created. This constructor is used by interface objects to create a DSIGKeyInfoPGPData object that can then be used to create the required XML.
|
|
|
Destructor.
|
|
|
Create a new PGPData element in the current document. Creates a new PGPData element and sets the KeyPacket and KeyID with the strings passed in.
|
|
|
Get the PGP Key ID held in the structure. Returns a pointer to the buffer containing the ID of the PGP key.
|
|
|
Return type of this KeyInfo element.
Implements DSIGKeyInfo. |
|
|
Get key name - unimplemented for PGP packets.
Implements DSIGKeyInfo. |
|
|
Get the PGP Key Packet. Returns a pointer to the buffer containing the PGP Key packet.
|
|
|
Load an existing XML structure into this object.
Implements DSIGKeyInfo. |
|
|
Set the value of the KeyID to a new string. Uses the passed in string to set a new value in the DOM structure.
|
|
|
Set the value of the KeyPacket to a new string. Uses the passed in string to set a new value in the DOM structure.
|


Custom Tracks
finer grain control of features placement is possible by adding genes at the track or lane level


20 May 2014 tagged in absolumentmoderne, art history, fishingboatproceeds, john green, RISD, risd museum, sarah urist green, the art assignment
I love watching PBS’s new web series “The Art Assignment” – partly due to John and Sarah Green, who are a fantastically creative couple with serious vlogging skills, but also because of the combination of art history and art experience. For those of you who haven’t watched I seriously suggest you check it out – but the basic premise is that Sarah Urist Green (and sometimes John) travel to meet various artists, talk about types of art, and encourage viewers to try out an assignment for themselves. It gets you thinking about how art is more than our traditional expectations, and how to take those boundaries for your participation in creation.
Read more...
27 Apr 2014 tagged in fuckyeahhistorycrushes, history, history 298, history major, internship, ma history, new bedford ma, research, umass amherst
13 blog posts, 12 short essays, about 60 hours of experience, and lots of other things that could probably be measured in numbers later, HISTORY 298 is just about over. And it’s certainly been a long, enjoyable ride.
Read more...
20 Apr 2014 tagged in commonwealth honors college, digital humanities, history 298, honors 391, hons 391a, hons391a, new bedford ma, umass amherst
Since it is so close to the end of the semester, I’m not receiving tasks anymore. But before I get to my final blog post, I wanted to write about something I’m doing in another course: Honors 391A.
Read more...
13 Apr 2014 tagged in history 298, pacific islanders, research, whaling
The answer is probably yes.
Read more...
05 Apr 2014 tagged in history 298, oral history, public history, scribe
My supervisor sent me the task late last week: transcribing an oral history interview with volunteers of the National Park Service in New Bedford. It didn’t sound particularly difficult – while I’d never actually tried to transcribe a recording before, I considered myself a quick typist and had often had to transcribe my grandfather’s stories into concise Word documents. So, I figured it couldn’t be too difficult of a job.
Read more...
30 Mar 2014 tagged in fairhaven, fairhaven ma, history 298, maps, new bedford, new bedford ma, sanborn map company, sanborn maps
This week, returned to the task of the whaleman – he may have been found, but his story has not. Let me explain – in the photo, the whaleman is standing in front of a doorway. This doorway’s sole distinguishing feature is the number 47. In discussing this with an archivist, he jokingly suggested looking through all the “47’s” in the New Bedford directory.
Read more...
28 Mar 2014 tagged in digital humanities, honors 391, honors 391a, hons391, hons391a, photoscan, sketchup
This week in the Digital Humanities Lab, we were presented with two new programs that allow people to create 3D models. At first, it was slightly harder to understand their applications to humanities – they seemed more like engineering tools than programs designed for history majors. Both Sketchup and PhotoScan look a lot more complicated than many of their previous programs we discussed. (It might just have been me though – I’m not the most adept person when it comes to manipulating image programs.) But in their increased level of difficulty, they provide greater opportunities for entertainment and research.
Read more...
23 Mar 2014 tagged in american history, archival research, archives, history 298, nmah, us fish commission, us history
Ah, spring break – the time when college students put aside their studies to relax, have fun, and maybe even travel to some warm destination. Well, I guess I tried to do all three of those – unfortunately, the weather didn’t quite cooperate for that last one, and I ended up in Washington D.C. with a couple inches of snow on the ground.
Read more...
09 Mar 2014 tagged in elusive whaleman, history 298, photography, records unit 95, smithsonian, smithsonian archives, thomas smilie
With a title like that, I’m sure you know what this week’s post is about.
Read more...


Networking Policies with Compose (Deprecated)
This tutorial shows how to use a modified libcompose utility to apply network policies on a Docker application composition.
Prerequisites
Note: - If you are using platform other than Mac, please install docker-engine, for that platform.
Setup
Step 1: Get contiv installer code from github.
$ git clone git@github.com:contiv/install.git
$ cd install
Step 2: Run installer to install contiv + Docker Swarm using Vagrant on VMs created on VirtualBox
Note: - Please make sure that you are NOT connected to VPN here.
make demo-legacy-swarm
This will create two VMs on VirtualBox. Using ansible, all the required services and software for contiv, will get installed at this step. This might take some time (usually approx 15-20 mins) depending upon your internet connection.
Step 3: Download the Software
Get libcompose
and log into a VM using the following commands:
$ mkdir -p $GOPATH/src/github.com/docker
$ cd $GOPATH/src/github.com/docker
$ git clone https://github.com/jainvipin/libcompose
$ cd $GOPATH/src/github.com/contiv/netplugin
$ make ssh
Step 4: Compile the Software
While logged into the VM, do the following to compile libcompose:
$ cd $GOPATH/src/github.com/docker/libcompose
$ git checkout deploy
$ make binary
$ sudo cp $GOPATH/src/github.com/docker/libcompose/bundles/libcompose-cli /usr/bin/contiv-compose
Note: These commands work only on a Linux host.
Step 5: Build or Get Container Images
You can either build your own container images or download pre-built standard Docker images.
You need two images, the web image and the database or DB image.
To build the web image, use the following commands:
$ cd $GOPATH/src/github.com/docker/libcompose/deploy/example/app
$ docker build -t web .
To use the pre-built web images from the Docker repository, do the following instead:
$ docker pull jainvipin/web
$ docker tag jainvipin/web web
Next, build or download the database image.
To build the database image:
$ cd $GOPATH/src/github.com/docker/libcompose/deploy/example/db
$ docker build -t redis -f Dockerfile.redis .
To download the database image:
$ docker pull jainvipin/redis
$ docker tag jainvipin/redis redis
Note: In the next step we'll use the command-line to create sample networks and policies. If you want to set up authentication and authorization, you can use contiv-ui instead.
Build Networks and Create Policies
To demo the policies, first create a network:
netctl net create -s <IP_ADDRESS>/24 dev
Run contiv-compose
to create a policy:
$ cd $GOPATH/src/github.com/docker/libcompose/deploy/example
$ contiv-compose up -d
You should see system notifications similar to the following example:
WARN[0000] Note: This is an experimental alternate implementation of the Compose CLI (https://github.com/docker/compose)
INFO[0000] Creating policy contract from 'web' -> 'redis'
INFO[0000] Using default policy 'TrustApp'...
INFO[0000] User 'vagrant': applying 'TrustApp' to service 'redis'
INFO[0000] Fetched port/protocol) = tcp/5001 from image
INFO[0000] Fetched port/protocol) = tcp/6379 from image
INFO[0000] Project [example]: Starting project
INFO[0000] [0/2] [web]: Starting
INFO[0000] [0/2] [redis]: Starting
INFO[0000] [1/2] [redis]: Started
INFO[0001] [2/2] [web]: Started
Note:
- For the
vagrant
user,contiv-compose
assigned the default policy, namedTrustApp
. TheTrustApp
policy can be found in theops.json
file, which is a modifiable ops policy in the example directory where you ran thecontiv-compose
command. - As defined in
ops.json
, the TrustApp policy permits all ports allowed by the application. The notification messages show thatcontiv-compose
tries to fetch the port information from the redis image and applies an inbound set of rules to it.
Now, verify that the isolation policy is working as expected:
$ docker exec -it example_web_1 /bin/bash
< ** inside container ** >
# nc -zvw 1 example-redis 6375-6380
example_redis.dev.default [<IP_ADDRESS>] 6380 (?) : Connection timed out
example_redis.dev.default [<IP_ADDRESS>] 6379 (?) open
example_redis.dev.default [<IP_ADDRESS>] 6378 (?) : Connection timed out
example_redis.dev.default [<IP_ADDRESS>] 6377 (?) : Connection timed out
example_redis.dev.default [<IP_ADDRESS>] 6376 (?) : Connection timed out
example_redis.dev.default [<IP_ADDRESS>] 6375 (?) : Connection timed out
# exit
< ** back to linux prompt ** >
Stop the Composition
Stop the composition and associated policies with the following commands:
$ cd $GOPATH/src/github.com/docker/libcompose/deploy/example
$ contiv-compose stop
Going Further
Below are some more cases that you can demo using this Vagrant setup.
1. Scaling an Application Tier
You can scale any application tier. A policy belonging to a tier, service, or group is applied correctly as you scale the tier.
1. Start the previous example, then use the following commands to scale the web tier:
$ contiv-compose up -d
$ contiv-compose scale web=5
2. Log into any container in the web tier and verify the policy is being enforced. For example:
$ docker exec -it example_web_3 /bin/bash
< ** inside container ** >
# nc -zvw 1 example-redis 6375-6380
example_redis.dev.default [<IP_ADDRESS>] 6380 (?) : Connection timed out
example_redis.dev.default [<IP_ADDRESS>] 6379 (?) open
example_redis.dev.default [<IP_ADDRESS>] 6378 (?) : Connection timed out
example_redis.dev.default [<IP_ADDRESS>] 6377 (?) : Connection timed out
example_redis.dev.default [<IP_ADDRESS>] 6376 (?) : Connection timed out
example_redis.dev.default [<IP_ADDRESS>] 6375 (?) : Connection timed out
# exit
$ contiv-compose stop
$ contiv-compose rm -f
2. Changing the Default Network
You can change the default network. The default policy is still applied.
1. Create a new network called test
:
netctl net create -s <IP_ADDRESS>/24 test
2. Start a composition in the new network. To do so, edit the docker-compose.yml
file to look like the following:
web:
image: web
ports:
- "5000:5000"
links:
- redis
net: test
redis:
image: redis
net: test
3. Start the composition:
Note: The yaml file is sensitve to the extra whitespaces, and can fail with improper alignment. Make sure the yaml file has the exact same alignment as the code shown above.
$ contiv-compose up -d
The new composition runs in the test
network as specified in the config file, while
policies are instantiated between the containers in test network
4. Verify the policy between the containers as before:
$ docker exec -it example_web_1 /bin/bash
< ** inside container ** >
# nc -zvw 1 example-redis 6375-6380
example_redis.test.default [<IP_ADDRESS>] 6380 (?) : Connection timed out
example_redis.test.default [<IP_ADDRESS>] 6379 (?) open
example_redis.test.default [<IP_ADDRESS>] 6378 (?) : Connection timed out
example_redis.test.default [<IP_ADDRESS>] 6377 (?) : Connection timed out
example_redis.test.default [<IP_ADDRESS>] 6376 (?) : Connection timed out
example_redis.test.default [<IP_ADDRESS>] 6375 (?) : Connection timed out
# exit
$
To quit, stop the composition:
$ contiv-compose stop
3. Specfying an Override Policy
You can override the default policy.
1. Use a policy label to specify an override policy for a service tier.
The following composition file has been modified to override the default policy:
web:
image: web
ports:
- "5000:5000"
links:
- redis
net: test
redis:
image: redis
net: test
labels:
io.contiv.policy: "RedisDefault"
Override policies for various users are specified outside the application composition in an operational policy file (ops.json), which states that vagrant user is allowed to use the policies TrustApp, RedisDefault, and WebDefault:
{ "User":"vagrant",
"DefaultTenant": "default",
"Networks": "test,dev",
"DefaultNetwork": "dev",
"NetworkPolicies" : "TrustApp,RedisDefault,WebDefault",
"DefaultNetworkPolicy": "TrustApp" }
The override policy called RedisDefault
is defined later in the file as:
{ "Name":"RedisDefault",
"Rules": ["permit tcp/6379", "permit tcp/6378", "permit tcp/6377"] },
2. Start the composition and verify that appropriate ports are open:`
$ contiv-compose up -d
$ docker exec -it example_web_1 /bin/bash
< ** inside container ** >
# nc -zvw 1 example-redis 6375-6380
example_redis.test.default [<IP_ADDRESS>] 6380 (?) : Connection timed out
example_redis.test.default [<IP_ADDRESS>] 6379 (?) open
example_redis.test.default [<IP_ADDRESS>] 6376 (?) : Connection timed out
example_redis.test.default [<IP_ADDRESS>] 6375 (?) : Connection timed out
# exit
$
Note that ports 6377-6379 are not timing out
, which means that network is
not dropping packets sent to the target example_redis
service. The reason
only 6379
shows open is because redis container is listening on the port.
3. Stop and clean up the demo environment:
$ contiv-compose stop
4. Verifying Role Based Access to Disallow Network Access
If a composition attempts to specify a network forbidden to it, contiv-compose produces an error.
1. Create a "production" network:
$ netctl net create -s <IP_ADDRESS>/24 production
$ cat docker-compose.yml
web:
image: web
ports:
- "5000:5000"
links:
- redis
net: production
redis:
image: redis
net: production
2. Start the composition and note the error message produced because of the unauthorized network:
$ contiv-compose up -d
WARN[0000] Note: This is an experimental alternate implementation of the Compose CLI (https://github.com/docker/compose)
ERRO[0000] User 'vagrant' not allowed on network 'production'
5. Verifying Role Based Access to Disallow a Network Policy
If a composition attempts to specify a disallowed policy, contiv-compose produces an error.
1. Specify an AllPriviliges
policy for the vagrant user. The expected error results:
$ cat docker-compose.yml
web:
image: web
ports:
- "5000:5000"
links:
- redis
redis:
image: redis
labels:
io.contiv.policy: "AllPriviliges"
$ contiv-compose up -d
WARN[0000] Note: This is an experimental alternate implementation of the Compose CLI (https://github.com/docker/compose)
INFO[0000] Creating policy contract from 'web' -> 'redis'
ERRO[0000] User 'vagrant' not allowed to use policy 'AllPriviliges'
ERRO[0000] Error obtaining policy : Deny disallowed policy
ERRO[0000] Failed to apply in-policy for service 'redis': Deny disallowed policy
FATA[0000] Failed to Create Network Config: Deny disallowed policy
6. Specifying an Override Tenant for applications to run in
You can use contiv-compose to run the applications in a non-default tenant.
Note: This example is for the demo. The tenant identity is typically retrieved from the user's context, users are not allowed to specify the tenant.
1. Create a new tenant called blue
and specify a network called dev
in the blue
tenant:
netctl tenant create blue
netctl net create -t blue -s <IP_ADDRESS>/24 dev
2. Create a composition that states the tenancy as:
$ cat docker-compose.yml
web:
image: web
ports:
- "5000:5000"
links:
- redis
labels:
io.contiv.tenant: "blue"
redis:
image: redis
labels:
io.contiv.tenant: "blue"
$ contiv-compose up -d
3. Examine the compositions:
$ docker inspect example_web_1 | grep \"IPAddress\"
"IPAddress": "",
"IPAddress": "<IP_ADDRESS>",
$ docker inspect example_redis_1 | grep \"IPAddress\"
"IPAddress": "",
"IPAddress": "<IP_ADDRESS>",
Note: The allocated an IP address from the blue
tenant's IP pool.
3. Clean up the composition for the tenant:
$ contiv-compose stop
$ contiv-compose rm -f
7. Trying all this in a cluster of nodes
The cluster of nodes were already brought up during initiatization when we did make demo
.
Now we start to issue the application bringup at cluster level.
1. Enable docker-client to use swarm cluster by setting DOCKER_HOST to point to swarm master:
$ export DOCKER_HOST=tcp://netplugin-node1:2375
$ docker info
Containers: 8
Running: 8
Paused: 0
Stopped: 0
Images: 11
Server Version: swarm/1.2.0
Role: primary
Strategy: spread
Filters: health, port, dependency, affinity, constraint
Nodes: 3
netplugin-node1: <IP_ADDRESS>:2385
└ Status: Healthy
└ Containers: 4
└ Reserved CPUs: 0 / 4
└ Reserved Memory: 0 B / 1.886 GiB
└ Labels: executiondriver=, kernelversion=3.10.0-327.22.2.el7.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=overlay
└ Error: (none)
└ UpdatedAt: 2016-08-23T21:45:27Z
└ ServerVersion: 1.11.1
netplugin-node2: <IP_ADDRESS>:2385
└ Status: Healthy
└ Containers: 2
└ Reserved CPUs: 0 / 4
└ Reserved Memory: 0 B / 1.886 GiB
└ Labels: executiondriver=, kernelversion=3.10.0-327.22.2.el7.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=overlay
└ Error: (none)
└ UpdatedAt: 2016-08-23T21:45:18Z
└ ServerVersion: 1.11.1
netplugin-node3: <IP_ADDRESS>:2385
└ Status: Healthy
└ Containers: 2
└ Reserved CPUs: 0 / 4
└ Reserved Memory: 0 B / 1.886 GiB
└ Labels: executiondriver=, kernelversion=3.10.0-327.22.2.el7.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=overlay
└ Error: (none)
└ UpdatedAt: 2016-08-23T21:45:24Z
└ ServerVersion: 1.11.1
Plugins:
Volume:
Network:
Kernel Version: 3.10.0-327.22.2.el7.x86_64
Operating System: linux
Architecture: amd64
CPUs: 12
Total Memory: 5.659 GiB
Name: 036770dba1db
Docker Root Dir:
Debug mode (client): false
Debug mode (server): false
WARNING: No kernel memory limit support
Note above that we see three nodes with their respective IP addresses and status. If the status
is healthy
we can proceed with running containers in the clusters.
2. Start a composition within a cluster and scale web tier:
$ cd $GOPATH/src/github.com/docker/libcompose/deploy/example
$ contiv-compose up -d
WARN[0000] Note: This is an experimental alternate implementation of the Compose CLI (https://github.com/docker/compose)
INFO[0003] Creating policy contract from 'web' -> 'redis'
INFO[0003] Using default policy 'TrustApp'...
INFO[0003] User 'vagrant': applying 'TrustApp' to service 'redis'
INFO[0003] Fetched port/protocol) = tcp/5001 from image
INFO[0003] Fetched port/protocol) = tcp/6379 from image
INFO[0004] [0/2] [web]: Starting
INFO[0004] [0/2] [redis]: Starting
INFO[0012] [1/2] [web]: Started
$ contiv-compose scale web=5
WARN[0000] Note: This is an experimental alternate implementation of the Compose CLI (https://github.com/docker/compose)
INFO[0000] Applying labels based policies
INFO[0000] Setting scale web=5...
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c85185333297 web "/bin/sh -c 'python a" 8 seconds ago Up Less than a second netplugin-node1/example_web_5
3e6a763d3397 web "/bin/sh -c 'python a" 15 seconds ago Up 4 seconds netplugin-node1/example_web_4
9f3cb9d250a0 web "/bin/sh -c 'python a" 18 seconds ago Up Less than a second netplugin-node1/example_web_3
b35131e3c9cc web "/bin/sh -c 'python a" 22 seconds ago Up Less than a second netplugin-node1/example_web_2
cffe972e91ec redis "docker-entrypoint.sh" 27 seconds ago Up 23 seconds 6379/tcp netplugin-node3/example_redis_1
785ae44298a2 web "/bin/sh -c 'python a" About a minute ago Up About a minute netplugin-node1/example_web_1
28e0a339db96 skynetservices/skydns:latest "/skydns" 13 minutes ago Up 13 minutes 53/tcp, 53/udp netplugin-node1/bluedns
4a5269013f09 skynetservices/skydns:latest "/skydns" 3 hours ago Up 3 hours 53/tcp, 53/udp netplugin-node1/defaultdns
3. Verify that policies work between containers running on different hosts:
$ docker exec -it example_web_1 /bin/bash
< ** inside container ** >
# nc -zvw 1 example-redis 6375-6380
Warning: inverse host lookup failed for <IP_ADDRESS>: Unknown host
example-redis.blue [<IP_ADDRESS>] 6380 (?) : Connection timed out
example-redis.blue [<IP_ADDRESS>] 6379 (?) open
example-redis.blue [<IP_ADDRESS>] 6378 (?) : Connection timed out
example-redis.blue [<IP_ADDRESS>] 6377 (?) : Connection timed out
example-redis.blue [<IP_ADDRESS>] 6376 (?) : Connection timed out
example-redis.blue [<IP_ADDRESS>] 6375 (?) : Connection timed out
# exit
Note: example_redis_1
and example_web_1
are running on node3
and node
respectively.
4. Start another composition as test
project, using the same template but a different project:
$ contiv-compose -p test up -d
WARN[0000] Note: This is an experimental alternate implementation of the Compose CLI (https://github.com/docker/compose)
INFO[0005] Creating policy contract from 'web' -> 'redis'
INFO[0005] Using default policy 'TrustApp'...
INFO[0005] User 'vagrant': applying 'TrustApp' to service 'redis'
INFO[0005] Fetched port/protocol) = tcp/5001 from image
INFO[0005] Fetched port/protocol) = tcp/6379 from image
INFO[0006] [0/2] [web]: Starting
INFO[0006] [0/2] [redis]: Starting
INFO[0012] [1/2] [redis]: Started
INFO[0014] [2/2] [web]: Started
$ docker ps
er ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
805f7fefa1bc web "/bin/sh -c 'python a" 40 seconds ago Up 34 seconds netplugin-node1/test_web_1
65a5ee71ac03 redis "docker-entrypoint.sh" 42 seconds ago Up 36 seconds 6379/tcp netplugin-node2/test_redis_1
c85185333297 web "/bin/sh -c 'python a" 2 minutes ago Up 2 minutes netplugin-node1/example_web_5
3e6a763d3397 web "/bin/sh -c 'python a" 2 minutes ago Up 2 minutes netplugin-node1/example_web_4
9f3cb9d250a0 web "/bin/sh -c 'python a" 2 minutes ago Up 2 minutes netplugin-node1/example_web_3
b35131e3c9cc web "/bin/sh -c 'python a" 2 minutes ago Up 2 minutes netplugin-node1/example_web_2
cffe972e91ec redis "docker-entrypoint.sh" 2 minutes ago Up 2 minutes 6379/tcp netplugin-node3/example_redis_1
785ae44298a2 web "/bin/sh -c 'python a" 3 minutes ago Up 3 minutes netplugin-node1/example_web_1
28e0a339db96 skynetservices/skydns:latest "/skydns" 15 minutes ago Up 15 minutes 53/tcp, 53/udp netplugin-node1/bluedns
4a5269013f09 skynetservices/skydns:latest "/skydns" 3 hours ago Up 3 hours 53/tcp, 53/udp netplugin-node1/defaultdns
$ docker exec -it test_web_1 /bin/bash
< ** inside container ** >
# nc -zvw 1 example-redis 6375-6380
Warning: inverse host lookup failed for <IP_ADDRESS>: Unknown host
example-redis.blue [<IP_ADDRESS>] 6380 (?) : Connection timed out
example-redis.blue [<IP_ADDRESS>] 6379 (?) : Connection timed out
example-redis.blue [<IP_ADDRESS>] 6378 (?) : Connection timed out
example-redis.blue [<IP_ADDRESS>] 6377 (?) : Connection timed out
example-redis.blue [<IP_ADDRESS>] 6376 (?) : Connection timed out
example-redis.blue [<IP_ADDRESS>] 6375 (?) : Connection timed out
Note: Policies are enforced between respective compositions i.e. test_web_1
is unable to access example_redis_1
database. However if we try to access test_redis_1
from it, that would be allowed on the specified ports.
# nc -zvw 1 teste-redis 6375-6380
Warning: inverse host lookup failed for <IP_ADDRESS>: Unknown host
test-redis.blue [<IP_ADDRESS>] 6380 (?) : Connection timed out
test-redis.blue [<IP_ADDRESS>] 6379 (?) open
test-redis.blue [<IP_ADDRESS>] 6378 (?) : Connection timed out
test-redis.blue [<IP_ADDRESS>] 6377 (?) : Connection timed out
test-redis.blue [<IP_ADDRESS>] 6376 (?) : Connection timed out
test-redis.blue [<IP_ADDRESS>] 6375 (?) : Connection timed out
# exit
This concludes the multi-host network isolation policy examples with Contiv.
8. Done playing with it all - Clean up
Exit the VM and use the following command to destroy the VMs crated for this tutorial
$ vagrant destroy -f
Additional Information
- The demonstrations on this page use the Vagrant utility to set up a VM environment. This environment is for demonstrating automation and integration with Contiv Networking and is not meant to be used in production.
- User-based authentication uses the operational policy in
ops.json
as Docker's authorization plugin, to permit only authenticated users to specify certain operations. - Contributing to Contiv's libcompose variant is welcome! Run our provided unit and sanity tests before
submitting a pull request. Running
make test-deploy
and 'make test-unit` from the repository is sufficient.


When building web sites, a popular demand is a maximum page load time.
For example, many would require < 0.5 seconds (or even less) for major pages loading time. Of course, there are numerous factors for page load time: network, caching, web servers, scripting language/code, database access and more.
Naturally I want to discuss the use of database access when creating web pages. I'll be referring to dynamic web pages, such that are created by common languages as PHP, Java/J2EE, Ruby, ASP(.NET) etc.
A very common programming style is - what's called in the Java jargon - using "scriptlets" as in the following JSP page:
<html> <body> Time now is <%= new java.util.Date() %> </body> </html>
The above replaces the "<%= new java.util.Date() %>" part with a text representation of the current time.
If I were to produce a dynamic content site, say, a WordPress blog, like the one you're reading, I would need to generate several dynamic contents: the latest posts, the popular tags, the comments for this post, etc. These are generated by calling upon the database and running some queries. I suppose there's nothing new in what I've explained so far.
The problem
When generating a "heavyweight" page, like some online newspaper or bookstore, there may be many queries involved. Are you logged in? Do we have recommendations for you? What are the latest topics? What have you been interested in before? Do you have friends online? What content have you produced on the website?
I've recently reviewed a site which generated > 500 queries per single page. I personally thought that was a very high number, but that was a necessity. The problem was: the page took 2 seconds to load.
Some tuning, rewriting and indexing later, time dropped to 0.6 seconds to load; but that was not fast enough. It was then that we got to a major conclusion:
All database calls are serialized. They need to be parallelized.
Remember that MySQL can only utilize a single thread for the computation of a single query (though more threads can handle IO in the meantime). This leads to only one CPU being used on your standard Linux distribution, for a given web page.
Really, that sounds just too obvious! But not so easy to achieve when doing "scriptlets". The templating engine parses the scriptlets one by one, executing them in order. In fact, you assume it does so, so that you can rely on the outcome of the previous scriptlet in the next one. In Java, for example, it goes beyond that: a JSP page is rewritten as a normal Java Servlet class, where the "scriptlets" become the main code, and the HTML becomes just printing to standard output. So you get linear executing code.
Even with more sophisticated frameworks, the "normal" way of doing things is linear. For example, using the Spring framework, you have Java objects -- controllers -- which are responsible for web pages. You can avoid doing scpriting within your dynamic web pages, and only ask for data provided by those controllers. So, for example, using Spring + Velocity, a web page could look like this:
<html> <body> Login time as recorded in DB is: ${user.loginTime} </body> </html>
This (usually) translates to calling the getLoginTime() method on a pre-built user object. But just how does this method work?
- Does it do lazy initialization, so that it calls upon the DB to get the answer?
- Did the controller set up the value during some init() method?
- Did the controller set up the value in response to the web page's request parameter, parsing them one by one?
All the above options lead to linear, or serial execution.
How to parallelize?
Parallelization with web pages is not so simple, and requires understanding of multi threading programming. The programmer needs to be aware of race conditions, deadlocks, starvation issues, etc. (though, to be honest, in dynamic web pages context these do not usually become a real issue). Some programming languages provide good support for multi threaded programming. Java is one such language.
Let's assume, then, that we need to spawn some 10 queries in response to a page request. With Jjava, we can write something like:
CountDownLatch doneSignal = new CountDownLatch(10); Runnable task1 = new Runnable() { public void run() { user.setLoginTime(this.jdbcTemplate.queryForInt("SELECT ... FROM ...")); doneSignal.countDown(); } } ; Runnable task2 = new Runnable() { public void run() { headlines = getSimpleJdbcTemplate().query("SELECT * FROM headline WHERE...", new ParameterizedRowMapper<Headline>() { public Headline mapRow(ResultSet rs, int rowNum) { Headline headline = new Headline(); headline.setTitle(rs.getString("title"); headline.setUrl(rs.getString("url"); ... } } doneSignal.countDown(); } } ; ... Runnable task10 = new Runnable() { ... doneSignal.countDown(); } Executor executor = Executors.newFixedThreadPool(numberOfAvailableProcessors); executor.execute(task1); ... executor.execute(task10); doneSignal.await(); // Now fill in the Model
The above code is simplified and presented in a way which is more readable. What it says is:
- Let's create the 10 tasks, but not execute them: just lay out the commands.
- Each task, upon completion, lets the CountDownLatch know it has completed (but remeber we have not executed it yet).
- We create or use a thread pool, using some n threads; n may relate to the number of processors we have.
- We ask the pool to execute all threads. At the discretion of the pool, it will either run them all concurrently, or some sequentially - depending on how many threads are available.
- We ask the CountDownLatch -- a one-time barrier -- to block, until all 10 tasks have notified they're done.
- We can now go on and do our stuff.
Spring has a built in TaskExecutor mechanism to provide solution similar to the thread pool above.
I'm mostly a C/C++/Java programmer; I have no knowledge on how this can be achieved in PHP, Ruby, ASP.NET or other languages. The above code is certainly not the most straightforward to use. I would like to see frameworks provide wrappers for this kind of solution, so as to support the common web developer with parallelization.
comments powered by Disqus


--- layout: info title: The Team permalink: /team/ ---
Executive Board
Evaluation Committee
Event Supervisors
Alumni
{{ member.bio }}
{% if member.favEvents %}Favorite events: {{ member.favEvents }}
{% endif %} {% if member.funFact %}Fun fact: {{ member.funFact }}
{% endif %} {% if member.funFactLink %}Fun fact: When I wasn't doing SciO, I was programming. Some of you might remember LASACTF.
{% endif %} {% if member.linkedin %} {% endif %} {% if member.email %} {% endif %}{{ member.bio }}
{% endif %} {% if member.favEvents %}Favorite events: {{ member.favEvents }}
{% endif %} {% if member.funFact %}Fun fact: {{ member.funFact }}
{% endif %} {% if member.funFactLink %}Fun fact: When I wasn't doing SciO, I was programming. Some of you might remember LASACTF.
{% endif %} {% if member.linkedin %} {% endif %} {% if member.email %} {% endif %}{{ member.bio }}
{% endif %} {% if member.favEvents %}Favorite events: {{ member.favEvents }}
{% endif %} {% if member.funFact %}Fun fact: {{ member.funFact }}
{% endif %} {% if member.funFactLink %}Fun fact: When I wasn't doing SciO, I was programming. Some of you might remember LASACTF.
{% endif %} {% if member.linkedin %} {% endif %} {% if member.email %} {% endif %}{{ member.bio }}
{% endif %} {% if member.favEvents %}Favorite events: {{ member.favEvents }}
{% endif %} {% if member.funFact %}Fun fact: {{ member.funFact }}
{% endif %} {% if member.funFactLink %}Fun fact: When I wasn't doing SciO, I was programming. Some of you might remember LASACTF.
{% endif %} {% if member.linkedin %} {% endif %} {% if member.email %} {% endif %}


| # holes open = | 1672000 x rate in t/h² |
| (g / 100 pellets) x ( number of knives) x (Cutter RPM) |
| Potential causes | Corrective actions |
| Plugged die plate | • Shutdown, purge, start-up again, • Refer to “Customer Process Data” (section 5). |
| Bad start-up procedure. Frequently linked with a pressure increase after the filter | • Modification of start-up procedure,
• Refer to “Customer Process Data” (section 5). |
| Die plate fouling (by carbonized polymer) | • Die plate cleaning in oven, see AMN procedure 75.MOM.02 |
| Too low or ineffective die plate heating. Frequently linked with a pressure increase after the filter | • Hot oil pump flow and temperature control or steam trap and steam pressure control,
• If the oil pump is not dedicated to the die plate alone, there is a preferential flow pattern in the other extruder zones (die holder, screen-pack...).
Frequently linked with a pressure increase after the filter. |
• Inadequate die plate design, consult AMN for a new die plate design,
• Die plate heating channels fouling, clean the heating channels (AMN procedure 75.MOM.01). |
| Low hot oil flow | • Inadequate die plate design, consult AMN for a new die plate design,
• Inadequate die plate design, consult AMN for a new die plate design, • Check the tubing diameter (refer to “Customer Process Data”, section 3b). |
| Condensate accumulation in the die plate | • Steam trap control, • Inadequate outlet manifold design, consult AMN for a new manifold design. |
| Too high polymer flow | • Reduction of polymer flow, • Undersized die plate, consult AMN for a new die plate design. |
| Potential causes | Corrective actions |
| Too high knife speed | • Reduction of rotation speed in accordance to AMN process guarantee (if any) |
| Too low polymer flow | • Increase of polymer flow in accordance to AMN process guarantee (if any) |
| Oversized die plate | • Partial die plate production holes plugging, refer to AMN procedure 75.MOM.03 |
This issue is frequently linked with a low pressure at the back of the die plate.
| Potential causes | Corrective actions |
| Blunt knife blades | • Shutdown for knife grinding, refer to AMN procedure n° 19A_Rodage_Ctx_A |
| Chipped out knife blades | • Knives replacement, • Check out for any foreign material coming out of the die plate which may have damaged the blades, • Check out for any rising nib or tile on the die plate cutting face and send the die plate to AMN for expertise and maintenance. |
| Bended knives | • Knives replacement, • Check for knife alignment, refer to AMN Instruction Manual (section I.7), • Reduce forward pressure, OR • Consult AMN for SBX5 or SMX5 knife design. |
| Knife-holder geometry | • Check for knife-holder geometry, refer to AMN Instruction Manual (section I.7). |
| Defective knife-holder hub (self-aligning system malfunction) | • Check the integrity of rubber bushing knife-holder and replace if necessary, • Send ACE hub to AMN for expertise and maintenance |
| Pelletizer shaft misalignment | • Check pelletizer shaft alignment and integrity and repair if necessary (refer to AMN Instruction Manual section I.4). |
| Potential causes | Corrective actions |
| Lack of PCW around the cutting face and knives | • Decrease knife rotation speed (according to recommended maximum knife tip linear speed) and increase water pressure in the water bowl (minimum 2 bar), • Consult AMN about CIS device |
| Inadequate knife type and material | • Contact AMN for new knife proposal |
| Rounded production holes | • Dismount the die plate and send to AMN for expertise and maintenance |
| Damaged cutting face | • Dismount the die plate and send to AMN for expertise and maintenance |
| Cutting face with cavitation damage | • Dismount the die plate and send to AMN for expertise and maintenance • Decrease knife rotation speed (according to recommended maximum knife tip linear speed) and increase water pressure in the water bowl (minimum 2 bar) • Consult AMN about CIS device |
| Too high polymer temperature | • Decrease polymer temperature |
| Too high die plate temperature | • Decrease hot oil / steam temperature |
| Too high PCW temperature | • Decrease PCW temperature |
| Potential causes | Corrective actions |
| Lack of PCW around the cutting face and knives | • Decrease knife rotation speed (according to recommended maximum knife tip linear speed) and increase water pressure in the water bowl (minimum 2 bar) • Contact AMN for hydrodynamic knife design (BMS2 or sword shaped) • Consult AMN about CIS device. |
| Too high PCW temperature | • Decrease PCW temperature |
| Inadequate knife design | • Contact AMN for new knife design (sword shaped for sequential cutting) |
| Too high polymer temperature | • Decrease polymer temperature |
| Too low PCW flow | • Increase PCW flow |
| Pellet stand time in PCW is too short | • Increase PCW tubing length • Decrease PCW flow |
| Inadequate die plate design (too short hole to hole distance). | • Consult AMN for a new die plate design |
| Potential causes | Corrective actions |
| Bad start-up sequence | • Modification of start-up sequence (PCW arrives too late) |
| Partial loss of die plate / knives contact | • Extruder shutdown, knives cleaning and start-up again with higher forward pressure |
| Lack of PCW around the cutting face and knives | • Increase PCW pressure and/or PCW flow |
| Inadequate knife profile | • Contact AMN for new knife design |
| Die plate deflection | • Dismount the die plate and send to AMN for expertise and maintenance |
| Die holder deflection transmitted to the die plate | • Dismount the die holder for surface rectification |
| Local damage to the die plate cutting face | • Dismount the die plate and send to AMN for expertise and maintenance |
| Too high knife speed | • Reduction of rotation speed in accordance to AMN process guarantee (if any) |
| Chipped out knife blades | • Knives replacement • Check out for any foreign material coming out of the die plate which may have damaged the blades • Check out for any rising nib or tile on the die plate cutting face and send the die plate to AMN for expertise and maintenance |
| Damaged cutting face | • Dismount the die plate and send to AMN for expertise and maintenance |
| Polymer build-up on the knife blades | • Contact AMN for new knife design |
| Potential causes | Corrective actions |
| Too low or ineffective die plate heating leading to die plate plugging | • Hot oil pump flow and temperature control or steam trap and steam pressure control |
| Too low or ineffective die holder heating leading to die plate plugging | • Hot oil pump flow and temperature control or steam trap and steam pressure control |
| Bad start-up procedure | • Modification of start-up procedure, • Refer to “Customer Process Data” (section 5). |
| Too low polymer flow | • Increase polymer flow, • Try to reach nominal polymer flow as quickly as possible |
| Differences in hole landlength due to die plate deflection or wear | • Dismount the die plate and send to AMN for expertise and maintenance |
| Too low polymer temperature | • Increase polymer temperature |
| Inadequate die plate insulation system | • Consult AMN for new insulation system supply (HPG) |
| Bad melt homogeneity | • Improve melt mixing, • Add a gear pump to the extruder |
| Die plate plugging by foreign objects or pollutions | • Dismount the die plate for cleaning |
| Potential causes | Corrective actions |
| Heterogeneous die holder heating | • Heating circuit cleaning • Inadequate die holder design, consult AMN for R2D2 system |
| Differences in hole landlength due to die plate deflection or wear | • Dismount the die plate and send to AMN for expertise and maintenance |
| Differences in production hole diameters | • Dismount the die plate and send to AMN for expertise and maintenance |
| Partial die plate plugging | • Shutdown, purge, start-up again, • Refer to “Customer Process Data” (section 5, start-up procedure) • Heating circuit cleaning, refer to AMN procedure 75.MOM.01, • Increase polymer flow, • Die plate fouling, clean the die plate (refer to AMN procedure 75.MOM.02) |
| Bad melt homogeneity | • Improve melt mixing • Add a gear pump to the extruder |
| Too low or ineffective die plate heating | • Hot oil pump flow and temperature control or steam trap and steam pressure control |
| Potential causes | Corrective actions |
| Too high knife speed | • Decrease knife rotation speed, • Use higher number of knives per set |
| Bad cutting face flatness | • Dismount the die plate and send to AMN for expertise and maintenance |
| Inadequate knife type and material | • Contact AMN for new knife proposal |
| Bad die plate / knives contact | • Extruder shutdown, knives cleaning and start-up again with higher forward pressure |
| Some production holes are not fully covered by the knives | • Check pelletizer shaft alignment and integrity and repair if necessary (refer to AMN Instruction Manual section I.4). |
| Potential causes | Corrective actions |
| Plugged die plate | • Hot oil pump flow and temperature control or steam trap and steam pressure control |
| Bad start-up procedure | • Shutdown, purge, start-up again, • Refer to “Customer Process Data” (section 5) |
| Too low knife speed | • Increase knife rotation speed |
Refer to chapter A “Big pellets”.
| Potential causes | Corrective actions |
| Lack of PCW around the cutting face and knives | • Increase PCW pressure and/or PCW flow, • Consult AMN about CIS device |
| Inadequate knife profile | • The knives are too thick, consult AMN for a new knife design |
| Too high knife speed | • Decrease knife rotation speed • Use higher number of knives per set |
| Too high polymer temperature | • Decrease polymer temperature |
| Too high die plate temperature | • Decrease hot oil / steam temperature |
| Too low polymer flow | • Increase polymer flow |
| Too many open production holes | • Partial die plate production holes plugging, refer to AMN procedure 75.MOM.03 |
| Too low PCW flow regarding nominal polymer flow | • Check required PCW flow |
| Inadequate production hole diameter | • Contact AMN for die plate modification or new design proposal |
| Potential causes | Corrective actions |
| PCW or foreign water has entered inside the die plate or extruder body | • Extruder degassing • Shutdown, purge, start-up again withdelayed PCW supply • Refer to “Customer Process Data” (section 5). |
| Potential causes | Corrective actions |
| Lack of PCW at the cutting face centre | • Decrease knife rotation speed • Consult AMN for new knife design and CIS system |
| Bad die plate and knives flatness | • Check cutting face flatness (see Instruction Manual section I.3.6) • Check for knife alignment, refer to AMN Instruction Manual (section I.7) |
| Polymer film formation between cutting face and knives | • Check the start-up procedure • Increase forward pressure on knives • Decrease die plate temperature |
| Bad choice of die plate and knives material | • Use a WC die plate with TiC (Nikro 128) blades |
| Bad additive mixing | • Improve additive mixing, add a gear pump |
Refer to chapter C “Conforming pellets with tails”.
| Potential causes | Corrective actions |
| Uncontrolled knife speed variation | • Do not modify rotation speed too quickly to avoid uncontrolled variation of knife contact force • Modify by steps of 10 rpm maximum |
| Uncontrolled PCW flow | • Check the status of water pump and disk • Check that there are no agglomerates in water tubing |
| Knife-holder breakage | • Replace knife-holder and check for alignment (refer to Instruction Manual section I.4) |
| Knife breakage | • Knives replacement • Check for knife alignment, refer to AMN Instruction Manual (section I.7) |
| Not constant knife wear (blunt knives) | • Check the knife aspect and apply grinding procedure • Check knife and die plate materials compatibility |
| Sudden polymer flow variation | • Check the die plate back pressure. If ∆P > ±5 bar, check the powder feeding or look for bad mixing issue |
| Water leak in the extruder | • Check the extruder barrels cooling circuit sealing |
Refer to chapter C “Conforming pellets with tails”.
This phenomenon is often noticed when the knives have a long service time or if peroxide injection is used.
| Potential causes | Corrective actions |
| Inadequate knife and/or knife-holder dimension | • Check the knife dimensions according to the cutting face dimensions (knife specification S_0002) |
| Bad die plate / pelletizer alignment | • Apply alignment procedure described in the Instruction Manual, section I.6.3 |
| Bad knife mounting | • Check the knife mounting procedure described in the Instruction Manual, section I.7 |
| Broken knife screws | • Replace the broken screws and knives |
| Potential causes | Corrective actions |
| Polymer flow exceeds the shear stress limitations of the polymer | • Reduce polymer flow • Review die plate design with AMN: number of holes and holes profile • Adaptation of a R2D2 system |


Shadows
Large shadow
Medium shadow
Small shadow
Shadows
Large shadow
Medium shadow
Small shadow
Shadows on background
Large shadow
Medium shadow
Small shadow


{% extends "base.html" %}
{% block title %}'{{ term.text }}' in {{ book.title }}{% endblock %}
{% block breadcrumbs %}
View term
View occurrence
{% endblock %}
{% block content %}
{% include 'term_header.html' with term=term highlight=query %}
{% include 'book_header.html' with book=book %}
{% include 'term_occurrence_display.html' with o=occurrence highlight=query %}
{% endblock %}


Copyright © 2013 Sylvain Oliver
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Table of Contents
The Next.GetTypename library is an utility function for retrieving the type name string.
Last revised: October 02, 2013 at 20:35:15 GMT |


Bring to light the impact of deforestation on various regions throughout time by allowing the user to visualize data on deforestation through information tailored specifically to the user and stored through a user account.
Register Now


| DOSE: T+ 0:00 |
150 mg |
oral |
Methylone |
(powder / crystals) |
| T+ 1:00 |
150 mg |
oral |
Methylone |
(powder / crystals) |
I would like to submit my experience with methylone, because reading on here Iíve never heard of anybody having a similar experience.
It was peculiar, because I have quite a lot of experience with various chemicals, probably most extensively with MDMA and amphetamines, but have also experimented with LSD, mushrooms, cannabis, opium, cocaine and have never had an experience quite so terrifying.
I hadnít taken anything recently though, most of those experiences were several years earlier. Anyways, I had heard a lot about methylone and decided I would try some, I took a dose of around 150mg at about 10:30am Saturday morning, I figured if I did it early in the day I would be able to sleep that night, as amphetamines and such normally give me awful insomnia!
I was a little concerned as soon as I took it (orally) as I felt a slight shift in my perception within 2 minutes, and the effects grew from there over the next hour. I was just sitting at my desk listening to music and having a pretty good time, when I felt as if the effect was dying already. I decided to take a similar dose to the initial one as Iíd heard of many people doing this as a rule to get the best experience.
Within 5 minutes of doing this I felt a little strange, so I stood up to get myself some water. Big Mistake, as I did this my heart started pounding a million miles an hour, and I felt very flush. Itís difficult to describe how I felt, but to cut a long story short I felt like I was about to drop down dead, right then, right there. I'd never been so sure in my life.
I grabbed the phone and called an ambulance! I was taken to hospital with very high rate of tachycardia (my heart was beating at 176bpm at one point, and changing from 130 to 90 then up again within about 10-15 minutes). I was so scared, I really did think that was the end of me. I was admitted to hospital, and given diazepam to calm me down, but nevertheless, I remained in the hospital for 2 days, with elevated heart rate. It came down to around 90 on the morning of the second day, and I was allowed home. Please be careful if you choose to use this substance, its really not pleasant if you end up in hospital or worse!!
Just regarding a couple of extra details: I did tell the staff at the hospital/ambulance what I'd taken, but as methylone is fairly new to the scene, they knew NOTHING about it, which only added to my anxiety, as I didn't know whether they would be able to 'save' me. Thankfully, I'm back to good health now and haven't had any persisting effects, nor do I plan to take methylone again!
I don't know of anyone else took methylone from the same source I did.
----------------------------------------
Jul 14, 2010 Addendum
I'd like to add that the doctors in the hospital appeared very concerned, and when I was admitted to the emergency assessment unit from A&E I was seen by another doctor, and I was feeling really strange. There was a weakness in my legs and if I sat up, I would feel really strange, it was almost as if there was no enough blood/oxygen getting to my brain and when I mentioned it to this really concerned doctor she was like 'yeah, it'll do that to you' all the while looking at my notes appearing very worried. I remember her listening to my heart and saying 'I'm going to be okay right?' and she said 'to be honest, i really don't know, I need to talk to my superiors about this, your heart is beating very fast. You're stable at the moment, but if you deteriorate then... you know'.
The nurses came back shortly afterwards and were measuring my blood sugar, oxygen levels, blood pressure, heart rate and breathing rate every hour. This was the result of a doctor saying 'we want him on hourly observations' I'm pretty sure I nearly killed myself, I'm such an idiot!!
I have been having really strange muscle spasms in random parts of my body, for instance twitching in the bottom of my foot, at first I thought it was just in my mind, but when I looked there was a weird twitching of a muscle, and I sometimes get it in my arms and legs - it's very strange!! Also, several experience reports I've read recently mentioned a severe fear of taking any kind of stimulant after really bad experiences, I am now 100% terrified of them. Last time I even went near them, my heart went into overdrive and I felt really weird after dabbing just a tiny amount of cocaine onto my gums, yet the people I was with were snorting big lines of it and were totally fine!
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.


Billie Piper begs voters to reject the Tories with extremely cheeky T-shirt
Singer Billie Piper has shared a snap of herself wearing a T-shirt with an election-themed twist on the 'Tesco' as she encourages voters to cast tactical ballots in the general election
by Talia Shadwell, https://www.mirror.co.uk/authors/talia-shadwell/Billie Piper has urged voters to reject the Tories at the polls with a cheeky T-shirt.
The singer and actress has thrown her support behind the tactical voting camp as she urges voters to turn their backs against the Conservatives in this week's election.
Billie, 37, wore a t-shirt that mimics the Tesco logo to take a political stand.
It reads: "Tories, very little help."

"To all the young ones, learn how to vote tactically & rid us of this looming horror show."
She posted a link to the People's Vote campaign's tactical voting website along with the tweet.
While the star didn't say how she would be voting, she is among a growing list of celebrities who are backing a change of Government.
The Mirror has been keeping an eye on political endorsements from the showbiz world .
Labour has been attracting star support from talent including singer Lily Allen, and Hollywood star Danny DeVito.
Last month, Stormzy's call for people to register to vote appeared to spark a huge rise in registrations.
The grime star has backed Labour with a call to end austerity.
Music producer Brian Eno has publicly spoken about his "trust" in Jeremy Corbyn .
Steve Coogan and Vivienne Westwood are also backing Corbyn.
Labour-backing tactical voters are concentrating on marginal seats, with those backing the technique voting against their preferred party in some areas to claw power from Tories and Leave-backing candidates.
You can read the Mirror's tactical voting guide here .


'Mercury Rising'
A movie review by Walter Frith
Member of the 'Internet Movie Critic's Association' http://www.geocities.com/Hollywood/Studio/5713/index.html
The easiest noun to use in describing 'Mercury Rising' would be "routine". It's a simple description but it fits. I have to say up front that the movie is mildly entertaining on a trashy sort of level in the sense that it's best not to think about it too much after you leave the theatre. You can't fault movie critics too much for repeating themselves because it's only due to the fact that films keep repeating themselves and critics comment on what they see. It's sort of like a quarterback who sticks with the plays that work. If it's a winning formula, stick with it and as long as people keep dishing out enough money to see action stars in their repetitive vehicles, Hollywood will keep making them.
The problem with Bruce Willis is that he fails to connect in finding a different personality for each character he plays. Clint Eastwood made Dirty Harry different from Josey Wales and his gunslinger in 'Unforgiven' was quite different from the drill sergeant he played in 'Heartbreak Ridge'. All the recent characters that Bruce Willis has played have looked and felt the same. 1997's 'The Fifth Element' was like watching John McClane (Willis' character in the 'Die Hard' trilogy) wake up after being in a chamber of cryogenic technology for three hundred years, thawed out to strut his stuff with futuristic bad guys and it failed with most critics except those radical science fiction fans who refuse to knock even the worst of that genre. I really haven't seen Willis in a top notch role since his 1994 attempt at serious stuff such as 'Pulp Fiction' and 'Nobody's Fool'. I wish he'd go back to the stuff he has the potential with and earn a respectable name for himself but he's becoming a stereotyped performer like Sylvester Stallone and Wesley Snipes.
The plot line in 'Mercury Rising' concerns a nine year old autistic boy who has cracked a secret government code which will be used to protect the covert operations of secret U.S. agents all over the world. He got the code from a puzzle book and it just so happens that two government computer programmers put the code in the book on purpose, testing its reliability, knowing (or at least counting on the fact) that no one will be able to crack it but not understanding that the human brain will always remain a mystery. Their boss, an evil government stooge (Alec Baldwin), is outraged that his employees would pull such a stunt and Baldwin takes steps to eliminate all traces of the boy's involvement with the code and the government office that created it. This includes killing the boy's parents and Willis plays a demoted FBI agent who investigates the murder of the boy's parents and eventually ends up the boy's protector when things get more and more dangerous.
Director Harold Becker ('The Onion Field', 'Taps', 'Sea of Love', 'Malice') has used his typical style of stretching a story out to be much more than it really is, spreading the plot too thin in an attempt to cover up plot holes and while it hasn't worked for him in the past, it doesn't work here. Based on the novel 'Simple Simon' by Ryne Douglas Pearson and written by Lawrence Konner, Ryne Douglas Pearson and Mark Rosenthal, 'Mercury Rising' isn't a film I can recommend for its originality, but it has some decent action sequences as the film is evenly paced and it is touching in a certain way as Willis plays the responsible role of the boy's protector and while that may be no big deal to cynics, the film has a style with an average intention to please audiences and because of that it does have some merit.
OUT OF 5 > * * *
Visit FILM FOLLOW-UP by Walter Frith http://home.netinc.ca/~wfrith/movies.htm
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


The burstsort4j package contains the generally interesting
classes, namely Burstsort
, which implements the original
Burstsort algorithm. The package also contains a multikey quicksort
implementation, as used by burstsort, as well as a basic quicksort
and insertionsort.


Gọi đặt hàng:<PHONE_NUMBER>
Opening Hourser: 9:00am-11pm
Home
About
Menu
Contact
Reservation
LE THIEN LOC
The master of cooking
Send us a message


Brooklyn Nine-Nine!
Mentioned below are some links to the famous comedy show Brooklyn Nine-Nine.
Click here to see the best scenes of one of the show's leading man, Jake Peralta, played by Andy Samberg:
Best of Jake Peralta


COPPER FOR CONSULTING COMPANIES
Build strong and lasting client relationships with Copper.
Consulting businesses of all sizes are happier with Copper.
ONE CENTRAL SYSTEM
You’ve got a lot of clients to juggle. Copper automatically organizes client and project information in one place—leads, deals, proposals, contracts, resources.
ZERO DATA ENTRY
Relationships are your bread and butter. Copper is the only crm that automatically tracks and inputs leads, contacts, account details, email history and more.
How RHR manages relationships with Copper.STREAMLINED WORKFLOWS
Copper streamlines deal management so your client relationship teams can deliver on sales goals and uplevel customer satisfaction.
Success Stories
Copper helps us sell faster and get higher-quality clients because of the way it allows people to share information and contacts across teams.Sarah GilbertDirector of Operations and IT, RHR International
By The Numbers
hours per user per week saved on manual data entry
more accurate reporting
increase in team collaboration when closing deals
faster response time to prospects and clients
No credit card required. Start your 14-day free trial today.


Main Page
Odwalla is Completely Shutting Down in
Days
Hours
Minutes
Seconds
Odwalla is Shutdown
Click the button below to pay respect
Pay Respect


QToolTip Class
The QToolTip class provides tool tips (balloon help) for any widget. More...
| Header: | #include <QToolTip> |
| qmake: | QT += widgets |
Static Public Members
| QFont | font() |
| void | hideText() |
| bool | isVisible() |
| QPalette | palette() |
| void | setFont(const QFont &font) |
| void | setPalette(const QPalette &palette) |
| void | showText(const QPoint &pos, const QString &text, QWidget *w, const QRect &rect) |
| void | showText(const QPoint &pos, const QString &text, QWidget *w = Q_NULLPTR) |
| void | showText(const QPoint &pos, const QString &text, QWidget *w, const QRect &rect, int msecDisplayTime) |
| QString | text() |
Detailed Description
The QToolTip class provides tool tips (balloon help) for any widget.
The tip is a short piece of text reminding the user of the widget's function. It is drawn immediately below the given position in a distinctive black-on-yellow color combination. The tip can be any rich text formatted string.
Rich text displayed in a tool tip is implicitly word-wrapped unless specified differently with <p style='white-space:pre'>
.
The simplest and most common way to set a widget's tool tip is by calling its QWidget::setToolTip() function.
It is also possible to show different tool tips for different regions of a widget, by using a QHelpEvent of type QEvent::ToolTip. Intercept the help event in your widget's event() function and call QToolTip::showText() with the text you want to display. The Tooltips example illustrates this technique.
If you are calling QToolTip::hideText(), or QToolTip::showText() with an empty string, as a result of a ToolTip-event you should also call ignore() on the event, to signal that you don't want to start any tooltip specific modes.
Note that, if you want to show tooltips in an item view, the model/view architecture provides functionality to set an item's tool tip; e.g., the QTableWidgetItem::setToolTip() function. However, if you want to provide custom tool tips in an item view, you must intercept the help event in the QAbstractItemView::viewportEvent() function and handle it yourself.
The default tool tip color and font can be customized with setPalette() and setFont(). When a tooltip is currently on display, isVisible() returns true
and text() the currently visible text.
Note: Tool tips use the inactive color group of QPalette, because tool tips are not active windows.
See also QWidget::toolTip, QAction::toolTip, and Tool Tips Example.
Member Function Documentation
[static]
QFont QToolTip::font()
Returns the font used to render tooltips.
This function was introduced in Qt 4.2.
See also setFont().
[static]
void QToolTip::hideText()
Hides the tool tip. This is the same as calling showText() with an empty string.
This function was introduced in Qt 4.2.
See also showText().
[static]
bool QToolTip::isVisible()
Returns true
if this tooltip is currently shown.
This function was introduced in Qt 4.4.
See also showText().
[static]
QPalette QToolTip::palette()
Returns the palette used to render tooltips.
Note: Tool tips use the inactive color group of QPalette, because tool tips are not active windows.
See also setPalette().
[static]
void QToolTip::setFont(const QFont &font)
Sets the font used to render tooltips.
This function was introduced in Qt 4.2.
See also font().
[static]
void QToolTip::setPalette(const QPalette &palette)
Sets the palette used to render tooltips.
Note: Tool tips use the inactive color group of QPalette, because tool tips are not active windows.
This function was introduced in Qt 4.2.
See also palette().
[static]
void QToolTip::showText(const QPoint &pos, const QString &text, QWidget *w, const QRect &rect)
Shows text as a tool tip, with the global position pos as the point of interest. The tool tip will be shown with a platform specific offset from this point of interest.
If you specify a non-empty rect the tip will be hidden as soon as you move your cursor out of this area.
The rect is in the coordinates of the widget you specify with w. If the rect is not empty you must specify a widget. Otherwise this argument can be 0 but it is used to determine the appropriate screen on multi-head systems.
If text is empty the tool tip is hidden. If the text is the same as the currently shown tooltip, the tip will not move. You can force moving by first hiding the tip with an empty text, and then showing the new tip at the new position.
[static]
void QToolTip::showText(const QPoint &pos, const QString &text, QWidget *w = Q_NULLPTR)
This is an overloaded function.
This is analogous to calling QToolTip::showText(pos, text, w, QRect())
[static]
void QToolTip::showText(const QPoint &pos, const QString &text, QWidget *w, const QRect &rect, int msecDisplayTime)
This is an overloaded function.
This is similar to QToolTip::showText(pos, text, w, rect) but with an extra parameter msecDisplayTime that specifies how long the tool tip will be displayed, in milliseconds.
This function was introduced in Qt 5.2.
[static]
QString QToolTip::text()
Returns the tooltip text, if a tooltip is visible, or an empty string if a tooltip is not visible.
This function was introduced in Qt 4.4.


Effectifvely hiding DACLs requires two steps:- Change the object owner from "Domain Admins" to the attacker account
- Add a new explicit ACE, denying the "Everyone" principal the "Read Permissions" privilege
Hiding a principal from defendes requires three steps:- Change the principal owner to itself or another controled principal
- Grant explicit ocntrol of the principal to either itself, or another controlled principal
- On the OU containing your hidden principal, deny the "List Contents" privilege to "Everyone"


just got my order of FS [Full Spectrum] Kratom resin extract. (29g)
also got UET 4g (ultra enhanced thai)
also had some enhanced Bali and enh. Malaysian
Heres what I took ...
3-4grams of moist straight kratom fs resin
1/2 g UET
2g enh bali
1/2g malaysian
kratom Tolerance level info: I have been doing kratom almost daily for about 6-8 months. most of the time letting tolerance go down but maintaining the full spec tincture about 25 drops a day.
previous Synthetic Opiate tolerance:
using op's for about 10 yrs. tolerance developed a few yrs ago after starting to do op's regularly
experience:
I'm at the point where FS Tinc barely touches me anymore. I can take an awful lot (and lot of $) worth and I just feel sorta okay at this point. it used to be the greatest thing in the world but back to the story...
I ate the mentioned materials in teas and chunks at 11 am EST. at around 12.30 I was getting disappointed that I wasted my $ and was bummed out. however about 1pm I drank a piping hot cup of enh. bali and malay. and that started kicking it in. its been 3.5 hours now and I originally ate about a MARBLE size amt of resin at 11am. it has been building now for a couple hrs and it doesnt appear to be going away. its starting it to hit hard. this would indicate that someone without a tolerance should not even ATTEMPT a dose as high as I took. I think about 1/2 a marble size of kratom resin is a start size and a cup of hot bali tea will help start things off quicker.
notes and feeling:
I feel more social, almost nodding out tho, was just talking to my new neighbor for over an hour and it was very entertaining. slowed heart beat almost slurred speed. however this is very plesant mind state wise. I recommend it! if you can make it yourself with oz's of Bali go that route! its hella expensive
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.


Get default values of parse options
If true, overwrite to unzipPath when unzip. (only using if unzipPath specified.)
If specified, unzip to that path.
Get types of parse options
/
/**
Get default values of read options
Get types of read option
Create new Book from context
intermediate result
return Book
return after tasks
return before tasks
return tasks
Validate parse options and get entries from input
return Context containing parse options, entries
Validate read options and get entries from input
targets
returns Context containing target items, read options, entries
Contents is read using loader suitable for context
properties required for reading
reading results
return after tasks
return before tasks
return tasks
Unzipping if zip source and unzipPath option specified
intermediate result
return Context (no change at this step)
Parse the input
return Book
Reading contents of Item
target
reading result
Reading contents of Items
targets
reading results
Unzip
success
Generated using TypeDoc
Create new Parser
{Errors.ENOENT} no such file or directory
{Errors.EINVAL} invalid input
class FooParser extends Parser { ... } new FooParser('./foo/bar.zip' or './foo/bar');


{% load static %}
{% load wiki_images_tags %}
{% load wiki_tags %}
{% load wiki_thumbnails %}
{% with article|images_for_article as images %}
{% if article|images_can_add:user %}
{% include "wiki/includes/formerrors.html" %}
{# Include the hidden fields #}
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
{% for field in form.visible_fields %}
{% include "wiki/includes/formfield.html" with render_labels=False %}
{% endfor %}
{% endif %}
{% for image in images %}
{% with image.current_revision.imagerevision as revision %}
{% thumbnail revision.image "100x100" crop="center" as thumb %}
Images are local to the article, and may only be used in the article they are uploaded to. Images may be replaced by clicking the upload button next to it above, but note that image revisions are kept and can be found on the Manage Images page.
To make use of images in an article, use the image
wiki tag in
your Markdown. These tags take some arguments for customisation, and you can
also include a caption on the next line, indented by four spaces. Note that
the align
and size
options are optional.
Syntax: [image:ID align:x size:y]
The ID to use is the image ID shown next to the image in the list above. You can click on the insert button if you'd like to insert an image into the editor without manually typing the tag.
[image:1 align:left size:orig] Python Discord logo
Insert Image


Preparation time
over 2 hours
Cooking time
10 to 30 mins
Serves
Serves 4
Preheat the oven to 180C/365F/Gas 4.
For the marinade, mix the chillies, garlic, coriander roots, salt, sugar and rice wine vinegar together in a bowl.
For the quail, place the spatchcocked quail into the marinade and marinate for a minimum of two hours, preferably overnight, in the fridge.
Remove the quail from the marinade and cut the quail in half lengthways (so that each portion has one leg and one breast).
Heat a large ovenproof griddle pan until very hot.
Thread a metal skewer through each quail half and place onto the griddle pan, skin-side down. Chargrill for 3-4 minutes, until brown griddle marks appear on the skin.
Transfer the quail to the oven to roast for 5-10 minutes, or until completely cooked though.
For the salad, place the spring onions, coriander, mint, parsley and red onion into a clean bowl and mix together.
For the salad dressing, mix together the soy sauce, lemon juice and sake (or dry sherry) in a separate bowl. Drizzle most of the dressing over the salad.
To serve, spoon a small amount of the salad onto each plate and top with two quail halves. Drizzle a little extra dressing over.


"Ideas worth sharing!"
Global Conference
TEDx Talks
2021
The Global Conference brings togetherthe community of experts, academics and activists who comprise the Creative Commons affiliate network in a different country every two. This year, we hope to expand our invitation list including organizations and individuals.
Please contact us per Email for any further questions about TEDx Global Conference 2021!
<EMAIL_ADDRESS><EMAIL_ADDRESS>Global Conference TEDx Talks 2021 Logo
The logo of TEDx was decided through the logo competition from 8, June to 7, July. After online public voting and Selection Committee's judging process, the logo from Naresh Agarwal won the prize. After consultation with Mr. Agrawal we optimized the prize-winning-logo for this year's summit as following:
See the past TEDx Global Conferences
Take a look at the two TEDx Global COnferences which took place in Beunos Aires and in Warsaw
2019
TEDx Global Conference Beunos Aires2019
TEDx Global Conference WarsawPartners


[Pacu](https://github.com/RhinoSecurityLabs/pacu) | AWS Exploitation framework
[Prowler](https://github.com/toniblyx/prowler) | Best Practices Assessment, Auditing, Hardening, and Forensics Readiness Tool. Follows guidelines of CIS AWS and dozens of other checks including GDPR and HIPAA
[aws_pwn](https://github.com/dagrz/aws_pwn) | Collection of AWS penetration testing junk


This is just a simple boilerplate using Stylus as css preprocessor and Jails as javascript component library
For Grid, this boilerplate uses a simple, small and expressive grid system called Liquid Grid, available for Sass and Stylus.


LAWNMOWER MAN 2: Beyond Cyberspace 1996 A film review by Timothy Voon Copyright 1997 Timothy Voon 2 :-) :-) for not trimming the grass properly
My lawnmower man is personable, friendly and always punctual. He does a wonderful job giving the grass an even trim and serves as an alarm clock on Friday mornings. When I hear the burrrrr of the motor I know I'm running late for work. He is not Lady Chatterley's Lover even though the neighbour has suggested a sensual thing or two regarding his manly machine and long thick rake. She was mightily disappointed last week when he didn't make an appearance because his gardening equipment had been stolen. Now who could have done such a criminal thing and denied dear 81 y.o. Ms Appleby from watching the lawnmower man at work.
So my story seems a bit farfetched and my last statement appears totally false. However, my point is when your lawnmower man suddenly changes personality from a simple, non-malevolent person to a psychotic, power hungry murderer, more often than not someone has tampered with his neural pathways. The prime example of this situation is nicely outlined and documented in the original LAWNMOWER MAN movie.  He creates Jobe (Matt Frewer), a supremely intelligent monster who not only survives battle within virtual reality, but has the gall to demand a rematch. The war waged between Jobe and mankind has become a personal vendetta for vengeance.
In this mad struggle over CPU processors, the computer generated god attempts to conquer mankind for ensnaring, transforming and ultimately empowering him. Peter (Austin O'brien) is the only member of the original cast to appear in the sequel besides Jobe. This boy befriended Jobe as a child, and has since grown into a young man surviving in the crime riddled streets of the future. He has made it his quest to save Jobe from himself, and his search leads him to the only scientist (Patrick Bergin) who can prevent Jobe from achieving world dominance and so on and so on.
Needless to say the performances by the actors are wooden, or should I say plastic. The poor direction and badly written plot results in a lack of genuine excitement or interest. This is not a compelling watch, and feels like a bad case of static. The problem with the Lawnmower Man 2 is in its conclusion. The all powerful Jobe is too easily defeated by a magical blade which appears from thin air. The result is the oversimplification of how to get rid of the bad guy - we'll just cut him in half! So mankind survives to fight another day, but perhaps the next time round a hose carrying fireman or a greasy looking construction worker will amuse us instead of this overworked simpleton gardener.
Timothy Voon e-mail<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


IN THE HIGH COURT OF KERALA AT ERNAKULAM WP(C).No. 36317 of 2004(W) 1. K.CHANDRAN, S/O.LATE KUPPAI, ... Petitioner Vs 1. THE POLLUTION CONTROL BOARD, ... Respondent 2. MUTHALAMADA GRAMA PANCHAYATH, 3. THE DISTRICT COLLECTOR, 4. THE REVENUE DIVISIONAL OFFICER, 5. VIGNESWARA FIBRES, IDUKKUPARA, For Petitioner :SRI.SAJAN VARGHEESE K. For Respondent :SRI.A.K.SESHADRI The Hon'ble MR. Justice T.R.RAMACHANDRAN NAIR Dated :11/02/2011 O R D E R T.R.RAMACHANDRAN NAIR,J. ------------------------------------- W.P.(C)No.36317 Of 2004 ----------------------------------------------------- DATED THIS THE 11th DAY OF FEBRUARY, 2011 J U D G M E N T
The petitioner approached this Court aggrieved by the alleged pollution created by the operation of the 5th respondent- an industrial establishment.
2. The residence of the petitioner is situated abutting the Chemmanampathy road and the 5th respondent established a Coir Mill allegedly on the opposite side of the petitioner's residence with the name "Vigneswara Fibres'. It is alleged that that due to the continuous emission of sound pollution as well as dust pollution from the 5th respondent-company, the peaceful life of the petitioner and his family members have been put in peril.
3. Heard the learned counsel for the petitioner, the learned Government Pleader, the learned Standing Counsel for the Pollution Control Board and the learned counsel appearing for the 5th respondent.
4. The 5th respondent has denied the allegations raised against the running of the Unit, in the counter affidavit.
5. The learned Standing Counsel for the Pollution Control W.P.(C)No.36317/04 -2- Board submitted that the consent to operate under the Water Act was issued to the Unit on 1.4.2005 with certain conditions. As the Unit has not complied with the consent conditions, show cause notice was issued to the unit on 9.6.2006. Consent was revoked on 19.2.2007 . Again they applied for consent of the Board on 16.6.2008. The consent to operate was issued on 23.7.2008 with certain conditions including effluent treatment facilities. Inspections were conducted thereafter and in the light of the compliance of the various conditions, consent was renewed on 10.9.2009, which was valid upto 30.6.2010.
6. The learned Government Pleader submitted that at the instance of the petitioner, proceedings under section 133(1)(b) Cr.P.C. was filed against the 5th respondent, which was disposed of by the Sub Divisional Magistrate, Palakkad as per order dated 25.6.2005 finding that the petition is not maintainable under Section 133 of Cr.P.C.
7. In the light of the above, as the 5th respondent has got a valid consent issued by the Pollution Control Board, this Court, at this stage, will not be justified in issuing any direction as sought for by the petitioner.
W.P.(C)No.36317/04 -3-
8. The learned counsel for the petitioner submitted that some civil proceedings are pending before competent courts. The dismissal of the Writ Petition will not stand in the way of the petitioner prosecuting any such other remedies.
The Writ Petition is dismissed with the above observation.
Sd/-( T.R.RAMACHANDRAN NAIR, JUDGE) dsn True copy P.A.to Judge


Service to mankind is service to God
I am a Freelance Web Application Developer and IT Manager living in Houston, Texas. My interests range from Technology to Entrepreneurship. I believe God created mankind so that we can be kind to one another and serve each other. I am also interested in Travel, Tennis and Outdoors.
If you’d like to get in touch, please feel free to say hello through any of the social media links below.


CMake - Regain a bit of structure in your life
Intro
CMake is used in many places when building cross platform C++ projects. For me now, it is the defacto "goto" language to describe my build system. This isn't to say it doesn't have pitfalls, especially when information online is outdated and not agreed upon in the community. But I believe there are better ways to achieve cleaner cmake files.
Normally I would say, your first port of call is the man pages/README/project tutorial hosted on the web. CMake is an exception to this rule as a lot of information found in the CMake tutorial is outdated. It will still work in most instances, but much like "modern c++", there is a concept of "modern CMake", which will help you in the long run. When searching for information for a solution, I often append the word "modern" to search term, while also limiting the search results to the past few years. (If you are looking for a intro to CMake please watch this video.)
Structure
One very important factor to any project is structure. Obviously there are many arguments around project structure (where do includes go? single folder for all source?), but lets not get into these ones. CMake also benefits from having some structure to the CMake files. This is because many methods will allow sub-cmake files to inherit from their definitions, which can cause a lot of unknown and unwanted behaviour if unaware of this.
Structure done right
One great example of this is the addition of definitions to compiler flags. Let's use the following example.
...
add_definitions(-DPRINT_SECURE_INFOMATION)
add_executable(my_test_app source.cpp)
add_subdirectory(my_lib)
target_link_libraries(my_test_app my_lib)
...
Here we can see that PRINT_SECURE_INFOMATION
is defined for my_test_app
, this may print some key information in your test app that should never be released to the public. We also add a sub-directory that we can expect to compile my_lib
, we then link against this in my_test_app
. A lot of people would not expect PRINT_SECURE_INFOMATION
to be defined in the compilation of my_lib
, but this is not true. As add_subdirectory
is called after add_definitions(-DPRINT_SECURE_INFOMATION)
it will be inherited by any compilation defined in my_lib
directory. This could have huge consequences for a release version of my_lib
, causing issues you could only imagine. But the key here is how to get round this. There are actually two ways of mitigating this issue and the first is the structure.
If we employed a better structure, we would never had this issue. The ideal folder structure is as below
Folder structure
source/
CMakeLists.txt
my_test_app/
CMakeLists.txt
source.cpp
source.hpp
my_lib/
CMakelists.txt
source.cpp
source.hpp
source/CMakelists.txt
...
add_subdirectory(my_test_app)
add_subdirectory(my_lib)
...
source/my_test_app/CMakelists.txt
...
add_definitions(-DPRINT_SECURE_INFOMATION)
add_executable(my_test_app source.cpp)
target_link_libraries(my_test_app my_lib)
...
Now we can see that the definition can be placed in the cmake file only handling the compilation of my_test_app
. This is great as we do not get leaking definitions.
This is not only true for definitions, it's true of include_directories
, which can also cause hard to diagnose issues, and also in lots of other places, but there are other ways to get round this.
Target who?
Some of us do not have the luxury of defining our folder structure. If we are retro fitting CMake to an existing project, or maybe the team is insistent on using a difference structure (for a valid reason), we have another option. target*
methods.
In addition to target_link_libraries
, the concept of more target*
methods came about in CMake 2.8.12, and this is when the true modern CMake started. This is a way of specifying which target you want the given operation to be applied to. Therefore we can always ensure that the operations will not be leaked to other directories or targets. Here's a list of the methods.
target_compile_options
target_compile_definitions
target_include_directories
target_sources
We can probably guess what most of these do, but just look them up in the documentation if you are unsure.
Not that it's a good idea, but theoretically you can have all your libraries and executable additions in one CMake file and there will be no leakage issues. THis is great for when you can not guarantee structure. This also helps with portability when needing to move folders with accompanying CMake files.
Structure Round Up
Applying the fixes explained above are both important ways to help other users read and maintain CMake in your project. Although the structure of the project and CMake files have become less important in recent years due to target*
usage, it does allow the user to follow the flow of the project and build up a mental model to work from.
I recommend you immediately start using target*
methods in current and future projects. The benefits are not only found in structuring, but also scoping, which will be discussed in future post. There is no reason to see include_directories
any more, however you could have some arguments for using add_definitions
for wide casting architecture needs.


Piers Morgan vows to repair Rebekah Vardy's image after Coleen Rooney drama
Coleen Rooney accused Rebekah Vardy of lifting stories from her private Instagram account and selling them to the press
by Molly Pike, https://www.mirror.co.uk/authors/molly-pike/Piers Morgan has revealed how he promised to repair Rebekah Vardy's public image after the Coleen Rooney scandal.
Coleen accused Rebekah, who is married to Jamie Vardy, of lifting stories from her private Instagram account and selling them to the press, something she denies.
It made Rebekah a national laughing stock but her pal and Good Morning Britain host Piers has vowed to come to her rescue.
Writing in his column for today's Event magazine , Piers said: "I walked into the Vardy box at Leicester's King Power Stadium, hugged Rebekah, now eight months pregnant with her fifth child, and announced: 'I'm here to repair your public image!'
"'Oh Christ,' she chuckled, 'that's all I need' 'You OK?' I asked, more seriously. 'Just about,' she replied, 'but it's been very hard, for me and the whole family, especially with the baby coming.' I can imagine."
Piers has refused to take sides between the former friends but said Coleen's public reveal of the drama was "ill-advised".
He continued: "Whatever the truth, and Rebekah's just as emphatic - and convincingly so - in private with her denials that she's the leaker, Coleen's decision to humiliate her friend at that stage of a pregnancy was very ill-advised.
"Indeed, the disgusting abuse Rebekah's received as a result, including death threats, has been so bad that Robbie Williams today attacked Coleen for playing a 'dangerous game', provoking a 'level of shame' that could be 'suicide-causing'."
The rift between Rebekah and Coleen has not been healed since Rooney turned sleuth and accused her former friend of spreading stories about her, in a scandal that was dubbed 'Wagatha Christie'.
It has been reported that Coleen had been suspecting that Rebekah had been sharing gossip about her, a few months before she went public with her alleged findings.
At that time, 33-year-old Coleen is said to have blocked Rebekah on social media after she became suspicious of her activity on her account.
She then made her Instagram stories private to everyone except Rebekah to see if they would leak.
Fake stories about Coleen wanting to choose the gender of her next child, her house flooding and going on Strictly all appeared in The Sun.


--- layout: post title: Good couple date: '2006-11-30T13:36:00.000Z' author: tknv tags: modified_time: '2006-11-30T13:40:48.862Z' blogger_id: tag:blogger.com,1999:blog-11459759.post-7442360255326509530 blogger_orig_url: http://phichyudebow.blogspot.com/2006/11/good-couple.html --- smoke in vino veritas


Points will appear on this map once your device uploads measurement results. Map points are intentionally randomized somewhat, and the Android app uses coarse-grained network location (not GPS), so location is not exact.
Your browser does not support the iframe tag.


Test 2
Git Test 1
C:\Users\sh00476>cd dektop
The system cannot find the path specified.
C:\Users\sh00476>cd destop
The system cannot find the path specified.
 to unstage)
new file: index.html
C:\Users\sh00476\Desktop\Test1>git remote dd origin https://github.com/shahkus11/Test.git
error: Unknown subcommand: dd
usage: git remote [-v | --verbose]
or: git remote add [-t ] [-m ] [-f] [--tags | --no-tags] [--mirror=]
or: git remote rename
or: git remote remove
or: git remote set-head (-a | --auto | -d | --delete | )
or: git remote [-v | --verbose] show [-n]
or: git remote prune [-n | --dry-run]
or: git remote [-v | --verbose] update [-p | --prune] [( | )...]
or: git remote set-branches [--add] ...
or: git remote get-url [--push] [--all]
or: git remote set-url [--push] []
or: git remote set-url --add
or: git remote set-url --delete
-v, --verbose be verbose; must be placed before a subcommand
C:\Users\sh00476\Desktop\Test1>git remote add origin https://github.com/shahkus11/Test.git
C:\Users\sh00476\Desktop\Test1>git push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin master
C:\Users\sh00476\Desktop\Test1>git push --set-upstream origin master
error: src refspec master does not match any.
error: failed to push some refs to 'https://github.com/shahkus11/Test.git'
C:\Users\sh00476\Desktop\Test1>git remote origin master
error: Unknown subcommand: origin
usage: git remote [-v | --verbose]
or: git remote add [-t ] [-m ] [-f] [--tags | --no-tags] [--mirror=]
or: git remote rename
or: git remote remove
or: git remote set-head (-a | --auto | -d | --delete | )
or: git remote [-v | --verbose] show [-n]
or: git remote prune [-n | --dry-run]
or: git remote [-v | --verbose] update [-p | --prune] [( | )...]
or: git remote set-branches [--add] ...
or: git remote get-url [--push] [--all]
or: git remote set-url [--push] []
or: git remote set-url --add
or: git remote set-url --delete
-v, --verbose be verbose; must be placed before a subcommand
C:\Users\sh00476\Desktop\Test1>git pull
Logon failed, use ctrl+c to cancel basic credential prompt.
Username for 'https://github.com/': git push
Password for 'https://git<EMAIL_ADDRESS>remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/shahkus11/Test.git/'
C:\Users\sh00476\Desktop\Test1>git commit -m "first test"
[master (root-commit) 71bc488] first test
Committer: Kush Piyush Shah
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly. Run the
following command and follow the instructions in your editor to edit
your configuration file:
git config --global --edit
After doing this, you may fix the identity used for this commit with:
git commit --amend --reset-author
1 file changed, 9 insertions(+)
create mode 100644 index.html
C:\Users\sh00476\Desktop\Test1>git remote add origin https://github.com/shahkus11/Test.git
fatal: remote origin already exists.
C:\Users\sh00476\Desktop\Test1>git push -u origin master
remote: Repository not found.
fatal: repository 'https://github.com/shahkus11/Test.git/' not found
C:\Users\sh00476\Desktop\Test1>git pull
remote: Repository not found.
fatal: repository 'https://github.com/shahkus11/Test.git/' not found
C:\Users\sh00476\Desktop\Test1>git pull
remote: Repository not found.
fatal: repository 'https://github.com/shahkus11/Test.git/' not found
C:\Users\sh00476\Desktop\Test1>git commit -m "test2"
On branch master
nothing to commit, working directory clean
C:\Users\sh00476\Desktop\Test1>git status
On branch master
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..."  to update what will be committed)
(use "git checkout -- ..."  to unstage)
modified: index.html
C:\Users\sh00476\Desktop\Test1>git git remote add origin https://github.com/shahkus11/Test.git
git: 'git' is not a git command. See 'git --help'.
Did you mean this?
init
C:\Users\sh00476\Desktop\Test1>git init
Reinitialized existing Git repository in C:/Users/sh00476/Desktop/Test1/.git/
C:\Users\sh00476\Desktop\Test1>git remote add origin https://github.com/shahkus11/Test.git
fatal: remote origin already exists.
C:\Users\sh00476\Desktop\Test1>git pull
remote: Repository not found.
fatal: repository 'https://github.com/shahkus11/Test.git/' not found
C:\Users\sh00476\Desktop\Test1>git clone https://github.com/shahkus11/Test.git/
Cloning into 'Test'...
remote: Repository not found.
fatal: repository 'https://github.com/shahkus11/Test.git/' not found
C:\Users\sh00476\Desktop\Test1>ggit pull https://github.com/shahkus11/Test.git/
'ggit' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\sh00476\Desktop\Test1>git pull https://github.com/shahkus11/Test.git/
remote: Repository not found.
fatal: repository 'https://github.com/shahkus11/Test.git/' not found
C:\Users\sh00476\Desktop\Test1>git push origin master
remote: Repository not found.
fatal: repository 'https://github.com/shahkus11/Test.git/' not found
C:\Users\sh00476\Desktop\Test1>git pull origin master
remote: Repository not found.
fatal: repository 'https://github.com/shahkus11/Test.git/' not found
C:\Users\sh00476\Desktop\Test1>git merge master
Already up-to-date.
C:\Users\sh00476\Desktop\Test1>git merge origin
merge: origin - not something we can merge
C:\Users\sh00476\Desktop\Test1>git diff origin master
fatal: ambiguous argument 'origin': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git [...] -- [...]'
C:\Users\sh00476\Desktop\Test1>git diff origin -- master
fatal: bad revision 'origin'
C:\Users\sh00476\Desktop\Test1>git pull master origin
fatal: 'master' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
C:\Users\sh00476\Desktop\Test1>git pull origin master
remote: Repository not found.
fatal: repository 'https://github.com/shahkus11/Test.git/' not found
C:\Users\sh00476\Desktop\Test1>
C:\Users\sh00476\Desktop\Test1>git pull master
fatal: 'master' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
C:\Users\sh00476\Desktop\Test1>git clone https://github.com/shahkus11/Test.git/
Cloning into 'Test'...
remote: Repository not found.
fatal: repository 'https://github.com/shahkus11/Test.git/' not found
C:\Users\sh00476\Desktop\Test1>git remote add origin https://github.com/shahkush11/Test.git
fatal: remote origin already exists.
  to unstage)
modified: index.html
C:\Users\sh00476\Desktop\Test1> git logt
git: 'logt' is not a git command. See 'git --help'.
Did you mean this?
log
C:\Users\sh00476\Desktop\Test1> git log
commit 71bc4887901338fde42c4aed984ab9aa9f61ccb3
Author: Kush Piyush Shah
Date: Wed Jul 13 11:38:20 2016 +0300
first test
C:\Users\sh00476\Desktop\Test1>git remote add origin https://github.com/shahkush11/Test.git
fatal: remote origin already exists.
C:\Users\sh00476\Desktop\Test1>git pull origin master
remote: Repository not found.
fatal: repository 'https://github.com/shahkus11/Test.git/' not found
C:\Users\sh00476\Desktop\Test1>git remote rm https://github.com/shahkush11/Test.git
fatal: No such remote: https://github.com/shahkush11/Test.git
C:\Users\sh00476\Desktop\Test1>git remote -v
origin https://github.com/shahkus11/Test.git (fetch)
origin https://github.com/shahkus11/Test.git (push)
C:\Users\sh00476\Desktop\Test1>git remote rm
usage: git remote remove
C:\Users\sh00476\Desktop\Test1>git remote rm https://github.com/shahkush11/Test.git
fatal: No such remote: https://github.com/shahkush11/Test.git
C:\Users\sh00476\Desktop\Test1>git pull --rebase origin master
error: Cannot pull with rebase: Your index contains uncommitted changes.
C:\Users\sh00476\Desktop\Test1>git commit -m "modified index"
[master 3169890] modified index
Committer: Kush Piyush Shah
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly. Run the
following command and follow the instructions in your editor to edit
your configuration file:
git config --global --edit
After doing this, you may fix the identity used for this commit with:
git commit --amend --reset-author
1 file changed, 1 insertion(+)
C:\Users\sh00476\Desktop\Test1>git pull --rebase origin master
remote: Repository not found.
fatal: repository 'https://github.com/shahkus11/Test.git/' not found
C:\Users\sh00476\Desktop\Test1>git remote rm Test
fatal: No such remote: Test
C:\Users\sh00476\Desktop\Test1>git remote rm destination
fatal: No such remote: destination
C:\Users\sh00476\Desktop\Test1>git remote rm origin
C:\Users\sh00476\Desktop\Test1>git remote -v
C:\Users\sh00476\Desktop\Test1>git remote add origin https://github.com/shahkush11/Test.git
C:\Users\sh00476\Desktop\Test1>git pull --rebase origin master
warning: no common commits
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/shahkush11/Test
* branch master -> FETCH_HEAD
* [new branch] master -> origin/master
First, rewinding head to replay your work on top of it...
Applying: first test
Applying: modified index
C:\Users\sh00476\Desktop\Test1>git log
commit 27811eaff06fe77b48713f1b19bfe5589e7edc68
Author: Kush Piyush Shah
Date: Wed Jul 13 12:24:32 2016 +0300
modified index
commit 3cc056a66fe1ddc9513a421a9340372fc4b128a8
Author: Kush Piyush Shah
Date: Wed Jul 13 11:38:20 2016 +0300
first test
commit 363f623af0ca3be6eb6878794339d74fdb06e3fa
Author: shahkush11
Date: Wed Jul 13 11:42:16 2016 +0300
Update LICENSE.md
C:\Users\sh00476\Desktop\Test1>git push origin master
Counting objects: 6, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 698 bytes | 0 bytes/s, done.
Total 6 (delta 0), reused 0 (delta 0)
To https://github.com/shahkush11/Test.git
363f623..27811ea master -> master
C:\Users\sh00476\Desktop\Test1>https://github.com/shahkush11/Test.git