Preparation time
30 mins to 1 hour
Cooking time
1 to 2 hours
Serves
Makes 1 20cm/8in pie
Dietary
There's nothing ghoulish about this sweet citrus pie topped with meringue.
For this recipe you will need a 20cm/8in pie dish, a sugar thermometer, a freestanding mixer, a handheld (stick) blender and a chef's blowtorch.
Put all the pecan nuts for the pastry and the meringue in a food processor and blend until fine. Weigh out 15g/½oz for the pastry and set aside the remainder.
For the pastry, add the flour, salt and butter to the food processor. Tip in the pecan nuts and pulse until the ingredients are combined and resemble breadcrumbs. Add a tablespoon of cold water and pulse again. Keep adding more water a tablespoon at a time until the mixture comes together as a dough.
Tip out the dough onto a lightly floured work surface and knead lightly until smooth. Wrap in cling film and refrigerate for 10–15 minutes.
Preheat the oven to 180C/160C Fan/Gas 4. Grease a 20cm/8in pie dish.
For the filling, lightly beat the eggs in a large mixing bowl. Add the pumpkin purée, sugar, cinnamon, orange zest and juice. Beat until combined. Pour in the evaporated milk and then blend everything together using a handheld blender. Set aside.
Roll out the dough on a lightly floured work surface until 5mm/¼in thick. Line the pie dish with the pastry, taking care to push the pastry into the edges. Leave any excess overhanging and lightly prick the base using a fork (do not go through to the tin). Place on a baking tray.
Cover the pastry with baking paper and fill with ceramic baking beads or uncooked rice. Bake on the middle shelf for 10 minutes or until the pastry is dry. Remove from the oven and trim any excess pastry so that they are no higher than the pie tin.
Pour in the filling so that only 5mm/¼in of the pastry can be seen at the top.
Increase the oven temperature to 200C/180C Fan/Gas 6. Bake the pie in the centre of the oven for 15 minutes. Turn the oven down to 160C/140C Fan/Gas 3 and bake for a further 30 minutes or until the filling is firm (a slight wobble in the centre is fine).
For the meringue, put the egg whites in the bowl of a large freestanding mixer fitted with a whisk attachment (you can also use a mixing bowl and a hand mixer, but it is much easier and safer to add the syrup when you have both hands free). Place the sugar and 100ml/3½fl oz water in a saucepan. Place over a low heat and use a sugar thermometer to measure the temperature of the syrup. When the syrup mixture reaches 100C, begin whisking the egg whites.
When the syrup reaches 116C, remove it from the heat. With the motor running, slowly pour the syrup down the side of the bowl into the mixer, taking care not to touch the whisk as it may splash. Continue to whisk until shiny and stiff peaks form when the whisk is removed.
Fold the reserved ground pecans into the meringue using a large metal spoon.
After baking, leave the pie to cool in the tin for 5 minutes. Spoon the meringue onto the pie and use a palette knife to smooth into a dome. Use a chef’s blowtorch to brown the top of the meringue.
For the syrup, combine the orange juice and sugar in a saucepan and bring to the boil. Measure the temperature using a sugar thermometer and when it reaches 114C remove it from the heat. To decorate the pie, dip a fork into the caramel and carefully drizzle over the pie in a cross-hatch pattern (melted sugar is very hot – take care not to burn yourself). Serve the pie warm.


- MAP - Static variable in class org.yaml.snakeyaml.nodes.Tag
-
- MappingEndEvent - Class in org.yaml.snakeyaml.events
-
Marks the end of a mapping node.
- MappingEndEvent(Mark, Mark) - Constructor for class org.yaml.snakeyaml.events.MappingEndEvent
-
- MappingNode - Class in org.yaml.snakeyaml.nodes
-
Represents a map.
- MappingNode(Tag, boolean, List<NodeTuple>, Mark, Mark, Boolean) - Constructor for class org.yaml.snakeyaml.nodes.MappingNode
-
- MappingNode(Tag, List<NodeTuple>, Boolean) - Constructor for class org.yaml.snakeyaml.nodes.MappingNode
-
- MappingStartEvent - Class in org.yaml.snakeyaml.events
-
Marks the beginning of a mapping node.
- MappingStartEvent(String, String, boolean, Mark, Mark, Boolean) - Constructor for class org.yaml.snakeyaml.events.MappingStartEvent
-
- Mark - Class in org.yaml.snakeyaml.error
-
It's just a record and its only use is producing nice error messages.
- Mark(String, int, int, int, String, int) - Constructor for class org.yaml.snakeyaml.error.Mark
-
- MarkedYAMLException - Exception in org.yaml.snakeyaml.error
-
- MarkedYAMLException(String, Mark, String, Mark, String) - Constructor for exception org.yaml.snakeyaml.error.MarkedYAMLException
-
- MarkedYAMLException(String, Mark, String, Mark, String, Throwable) - Constructor for exception org.yaml.snakeyaml.error.MarkedYAMLException
-
- MarkedYAMLException(String, Mark, String, Mark) - Constructor for exception org.yaml.snakeyaml.error.MarkedYAMLException
-
- MarkedYAMLException(String, Mark, String, Mark, Throwable) - Constructor for exception org.yaml.snakeyaml.error.MarkedYAMLException
-
- matches(Class<? extends Object>) - Method in class org.yaml.snakeyaml.nodes.Tag
-
Check whether this tag matches the global tag for the Class
- MAX_INDENT - Static variable in class org.yaml.snakeyaml.emitter.Emitter
-
- MERGE - Static variable in class org.yaml.snakeyaml.nodes.Tag
-
- MERGE - Static variable in class org.yaml.snakeyaml.resolver.Resolver
-
- MethodProperty - Class in org.yaml.snakeyaml.introspector
-
A MethodProperty
is a Property
which is accessed
through accessor methods (setX, getX).
- MethodProperty(PropertyDescriptor) - Constructor for class org.yaml.snakeyaml.introspector.MethodProperty
-
- MIN_INDENT - Static variable in class org.yaml.snakeyaml.emitter.Emitter
-
- MissingProperty - Class in org.yaml.snakeyaml.introspector
-
A property that does not map to a real property; this is used when PropertyUtils.setSkipMissingProperties(boolean)
is set to true.
- MissingProperty(String) - Constructor for class org.yaml.snakeyaml.introspector.MissingProperty
-
- multiline - Variable in class org.yaml.snakeyaml.emitter.ScalarAnalysis
-
- multiRepresenters - Variable in class org.yaml.snakeyaml.representer.BaseRepresenter
-


this application gives users book suggestions based on a city they will be traveling to in the future
this application allows users to search for the five day weather forecast of their upcoming travel location


Use this password anyways.
Not recommended
Why is this not recommended?
By continuing to use this password you open yourself up to social engineering attacks since SocialSec only checks for information available to the general public.
You can also choose to change this password on the Website's account settings.
You can choose to exlcude this website from SocialSec searches if you are not worried about the security of this password.
If you are not concerned about the security of the detected phrase, you may exclude it from future SocialSec searches.
As SocialSec is still in its infancy, the information we use will always be available to the public.
This means, for now, your best option is to change the password you have created to something else.
In future releases, SocialSec will be using more comprehensive public information that you have posted on social media.


Functions | |
| void | XDMAD_Initialize (sXdmad *pXdmad, uint8_t bPollingMode) |
| Initialize xDMA driver instance. More... | |
| void | XDMAD_Handler (sXdmad *pDmad) |
| xDMA interrupt handler More... | |
| uint32_t | XDMAD_AllocateChannel (sXdmad *pXdmad, uint8_t bSrcID, uint8_t bDstID, uint32_t index) |
| Allocate a XDMA channel for upper layer. More... | |
| eXdmadRC | XDMAD_FreeChannel (sXdmad *pXdmad, uint32_t dwChannel) |
| Free the specified xDMA channel. More... | |
| eXdmadRC | XDMAD_ConfigureTransfer (sXdmad *pXdmad, uint32_t dwChannel, sXdmadCfg *pXdmaParam, uint32_t dwXdmaDescCfg, uint32_t dwXdmaDescAddr, uint32_t dwXdmaIntEn) |
| Configure DMA for a single transfer. More... | |
| eXdmadRC | XDMAD_PrepareChannel (sXdmad *pXdmad, uint32_t dwChannel) |
| Enable clock of the xDMA peripheral, Enable the dma peripheral, configure configuration register for xDMA transfer. More... | |
| eXdmadRC | XDMAD_IsTransferDone (sXdmad *pXdmad, uint32_t dwChannel) |
| Check if DMA transfer is finished. More... | |
| eXdmadRC | XDMAD_StartTransfer (sXdmad *pXdmad, uint32_t dwChannel) |
| Start xDMA transfer. More... | |
| eXdmadRC | XDMAD_SetCallback (sXdmad *pXdmad, uint32_t dwChannel, XdmadTransferCallback fCallback, void *pArg) |
| Set the callback function for xDMA channel transfer. More... | |
| eXdmadRC | XDMAD_StopTransfer (sXdmad *pXdmad, uint32_t dwChannel) |
| Stop DMA transfer. More... | |
| static uint32_t | XDMAD_AllocateXdmacChannel (sXdmad *pXdmad, uint8_t bSrcID, uint8_t bDstID, uint32_t i) |
| Try to allocate a DMA channel for on given controller. More... | |
Variables | |
| static uint8_t | xDmad_Initialized = 0 |
| uint32_t XDMAD_AllocateChannel | ( | sXdmad * | pXdmad, |
| uint8_t | bSrcID, | ||
| uint8_t | bDstID, | ||
| uint32_t | index | ||
| ) |
Allocate a XDMA channel for upper layer.
| pXdmad | Pointer to xDMA driver instance. |
| bSrcID | Source peripheral ID, 0xFF for memory. |
| bDstID | Destination peripheral ID, 0xFF for memory. |
|
static |
Try to allocate a DMA channel for on given controller.
| pDmad | Pointer to DMA driver instance. |
| bSrcID | Source peripheral ID, 0xFF for memory. |
| bDstID | Destination peripheral ID, 0xFF for memory. |
| eXdmadRC XDMAD_ConfigureTransfer | ( | sXdmad * | pXdmad, |
| uint32_t | dwChannel, | ||
| sXdmadCfg * | pXdmaParam, | ||
| uint32_t | dwXdmaDescCfg, | ||
| uint32_t | dwXdmaDescAddr, | ||
| uint32_t | dwXdmaIntEn | ||
| ) |
Configure DMA for a single transfer.
| pXdmad | Pointer to xDMA driver instance. |
| dwChannel | ControllerNumber << 8 | ChannelNumber. |
Free the specified xDMA channel.
| pXdmad | Pointer to xDMA driver instance. |
| dwChannel | ControllerNumber << 8 | ChannelNumber. |
| void XDMAD_Handler | ( | sXdmad * | pDmad | ) |
xDMA interrupt handler
| pxDmad | Pointer to DMA driver instance. |
| void XDMAD_Initialize | ( | sXdmad * | pXdmad, |
| uint8_t | bPollingMode | ||
| ) |
Initialize xDMA driver instance.
| pXdmad | Pointer to xDMA driver instance. |
| bPollingMode | Polling DMA transfer:
|
Check if DMA transfer is finished.
In polling mode XDMAD_Handler() is polled.
| pDmad | Pointer to DMA driver instance. |
| dwChannel | ControllerNumber << 8 | ChannelNumber. |
Enable clock of the xDMA peripheral, Enable the dma peripheral, configure configuration register for xDMA transfer.
| pXdmad | Pointer to xDMA driver instance. |
| dwChannel | ControllerNumber << 8 | ChannelNumber. |
| dwCfg | Configuration value. |
| eXdmadRC XDMAD_SetCallback | ( | sXdmad * | pXdmad, |
| uint32_t | dwChannel, | ||
| XdmadTransferCallback | fCallback, | ||
| void * | pArg | ||
| ) |
Set the callback function for xDMA channel transfer.
| pXdmad | Pointer to xDMA driver instance. |
| dwChannel | ControllerNumber << 8 | ChannelNumber. |
| fCallback | Pointer to callback function. |
| pArg | Pointer to optional argument for callback. |
Start xDMA transfer.
| pXdmad | Pointer to XDMA driver instance. |
| dwChannel | ControllerNumber << 8 | ChannelNumber. |
Stop DMA transfer.
| pDmad | Pointer to DMA driver instance. |
| dwChannel | ControllerNumber << 8 | ChannelNumber. |
|
static |


Introduction¶
Minimalistic demo of a server that resembles a REST facade in front of an LDAP service with a simple UI to manage users and groups.
Authentication¶
For demo purposes, some URLs are accessible as an anonymous user (see helloldap.server.Server.setup_routes()
for details).
To manage users and groups with the client application, however, authentication with username and password is necessary. To keep our API stateless, on successful login the server issues a JSON Web Token, which the client sends back with every following request. The server will then allow access to the resource depending on the contents of the JWT, no repetitive contact with LDAP is necessary.
By default, the JWT expires 10 minutes after it was issued. The client must be able to repeat the authentication and the current request.
Server¶
The server is aiohttp which sits on top of Python’s asyncio module. We replace the built-in event-loop with uvloop, which is said to be faster than nodejs.
A full-flexed API could be documented and implemented with the help of aiohttp_swagger.
Files in folder “public_html” are served as static files under URL “/static/...”.
Client¶
A simple UI written with Angular 2 and Bootstrap 4.


This demo uses Posix APIs together with a simple benchmark (Dhrystone) to automatically calculate the effective throughput of all the cores in each SMP cluster.
For software design details, please visit http://processors.wiki.ti.com/index.php/Processor_SDK_Posix-SMP_Demo#Software_Design.


#escape x as x?html>
Hello, ${user.getFirstName()} ${user.getLastName()}.
Welcome to ${config.get('application.titleCommon')}.
Please use this URL to sign in.
Thank you. ${config.get('application.titleCommon')}


Clean up deleted checklists and checklist items. Read through logically
deleted checklists, if one is found, then batch delete the checklist
items sub-collection and then the checklist.
Clean up Orphaned Resources
Clean up orphan resources on checklists and checklistitems. Read each
checklist/checklistitem resource and check the docref is valid,
otherwise remove the resource.
Category & Team Cleanup
Go through checklists and resources and remove any category or team
document references that no longer exist.


Enables the emission of particle along the z-axis (depth) making the particle object truly 3D.
It can also force particles to run through a grid of defined shape.
Sliders
z-Direction
The depth component for particle output direction.
z-Spread
use 180 for omni-direction emission
z-Gravity
Gravity pointing along the z-axis. Positive value cause acceleration pointing out of the screen, while negative value cause acceleration pointing towards the screen.
Setting dialog
GridIntvl_x(r)
Grid points interval along the x-axis(horizontal). As radial interval if PolarCoord is checked.
GridIntvl_y(theta)
Grid points interval along the y-axis (vertical).
As angular interval on the x-y plane if PolarCoord is checked.
GridIntvl_z(phy)
Grid points interval along the z-axis (depth). As partition angle on the x-z plane when PolarCoord is checked.
PolarCoord
When checked, a grid using polar coordinate with origin on object's center will be used. Otherwise, a typical Cartesian(rectangular) coordinate grid will be used.
GetGridInfo
Should be enabled only on the object that defines grid shape, and to be placed on layer N-1 if the object with ParticleRender is on layer N.
When using the grid feature, input non-zero values to GridIntvl_x, GridIntvl_y and GridIntvl_z and use the same numbers on the object on layer N
RevGrid
Invert transparency data of the grid.
Bidirectional
Emit particles in two directions simultaneously
xy_facing
The extra particle output direction when using Bidirectional option.
xy_spread
The extra spread angle when using Bidirectional option
z_facing
The extra output direction along depth when using Bidirectional output
z_spread
The extra spread angle along depth when using Bidirectional output


About
The QuickUSB® family of products are specifically designed to make implementing a USB 2.0 peripheral function as easy as possible. They include everything required to perform communication of the USB from your host computer. With QuickUSB, you don't have to write lower level routines like firmware, drivers or DLLs. You simply write software to call the QuickUSB Library function calls and connect your hardware to the QuickUSB Plug-In module or the USB microcontroller.
Figure 1 - The QuickUSB Plug-In Module
QuickUSB exposes all of the I/O interfaces present on the Cypress EZ USB FX2. And the QuickUSB Library is divided into sections to control each interface.


Class View
Core view: - static doctype storage - static storage for dir names with view scripts - possible to use for any controller/subcontroller/control/\MvcCore\Ext\Form - view prerender preparing and rendering - direct code evaluation - view helpers management - creating by predefined class names bases - instance storing and calling - views sub scripts relative path solving - Url() proxy method, AssetUrl() proxy method - magic calls: - __call() - helpers handling - __set() - to set anything in controller to get it back in view - __get() - to get anything in view previously completed in controller - no special view language implemented... why to use such stupid things...
- MvcCore\View
- MvcCore\Ext\Form\Core\View
public
|
|
public
mixed
|
|
public
string
|
|
public
string
|
#
RenderNaturally( )
Render form naturaly by cycles inside php scripts. All form fields will be rendered inside empty < div> elements. |
public
string
|
|
public
string
|
#
RenderCsrf( )
Render hidden input with CSRF tokens. This method is not necessary to call, it's called internaly by $form->View->RenderBegin(); |
public
stdClass
|
|
public
string
|
#
RenderErrors( )
Render form errors. If form is configured to render all errors together at form beginning, this function completes all form errors into div.errors with div.error elements inside containing each single errors message. |
public
string
|
#
RenderContent( )
Render form content. Go through all $form->Fields and call $field->Render(); on every field and put it into an empty < div> element. Render each field in full possible way - naturaly by label configuration with possible errors configured beside or with custom field template. |
public
string
|
|
public static
string
|
|
public static
string
|
#
RenderAttrs( array $atrributes = array() )
Render content of html tag attributes by key/value array. |
AddHelpersClassBases(),
AssetUrl(),
Evaluate(),
GetContent(),
GetController(),
GetViewScriptFullPath(),
Render(),
RenderLayout(),
RenderLayoutAndContent(),
RenderScript(),
SetUp(),
StaticInit(),
Url(),
__set()
|
DOCTYPE_HTML4,
DOCTYPE_HTML5,
DOCTYPE_XHTML,
EXTENSION
|
public
|
$Form
|
#
null
|
public
|
$View
|
#
null
|
$Controller,
$Doctype,
$HelpersClassBases,
$HelpersDir,
$LayoutsDir,
$ScriptsDir,
$originalyDeclaredProperties
|


Introduction
Learning a Bayesian network can be split into structure learning and parameter learning which are both implemented in bnlearn
.
Structure learning: Given a set of data samples, estimate a DAG that captures the dependencies between the variables.
Parameter learning: Given a set of data samples and a DAG that captures the dependencies between the variables, estimate the (conditional) probability distributions of the individual variables.
- The library supports Parameter learning for discrete nodes:
Maximum Likelihood Estimation
Bayesian Estimation
The following functions are available
Structure learning
Parameter learning
Inference
Sampling
Plot
comparing two networks
loading bif files
conversion of directed to undirected graphs
Structure Learning algorithms
bnlearn
contains score-based, local discovery, Bayesian network, and constraint-based structure learning algorithms for discrete, fully observed networks.
Score-based approaches have two main components: * The search algorithm to optimize throughout the search space of all possible DAGs. * The scoring function indicates how well the Bayesian network fits the data.
Score-based algorithm can be used with the following score functions:
- categorical data (multinomial distribution):
the Bayesian Information Criterion (bic)
the K2 score (k2)
a score equivalent Dirichlet posterior density (bdeu);
Score-based algorithms
ExhaustiveSearch (ex)
Hill Climbing (hc)
Local discovery algorithms
Chow-liu (cl)
Bayesian network classifiers
NaiveBayesian (nb)
Tree-augmented Naive Bayes (tan)
Constraint-based structure learning algorithms
With constraint-based structure learning, a DAG can be constructed by identifying independencies in the data set using hypothesis tests, such as chi2 test statistic. This approach does rely on statistical tests and conditional hypotheses to learn independence among the variables in the model. The P-value of the chi2 test is the probability of observing the computed chi2 statistic, given the null hypothesis that X and Y are independent given Z. This can be used to make independent judgments, at a given level of significance. An example of a constraint-based approach is the PC algorithm which starts with a complete fully connected graph and removes edges based on the results of the tests if the nodes are independent until a stopping criterion is achieved.
constraintsearch (cs)


---
layout: post
title: Fight the Lockdown
date: '2007-03-08T16:05:00.000-06:00'
author: Don Seiler
tags:
- permissions
- security
- oracle
modified_time: '2010-11-19T22:48:47.234-06:00'
blogger_id: tag:blogger.com,1999:blog-7032512792942232766.post-270649236877825268
blogger_orig_url: http://www.seiler.us/2007/03/fight-lockdown.html
---
It's come up before, but it had been so long that I had nearly forgotten it. "It" is the serious permissions lockdown after installing Oracle RDBMS >= 9i. Someone brought it up on the MADLUG list earlier this year, and I vaguely remembered that it was fixed in Oracle 10g <IP_ADDRESS>. What I had forgotten was that it was fixed in the form of a script that needed to be run post-install.
I should say "fixed" because it's only a problem if you want non-oracle/oinstall users to use utilities like sqlplus locally. Not totally unheard-of by any means, but some people really lock down their servers, and would prefer the tight perms.
Anyway, the script is $ORACLE_HOME/install/changePerm.sh, and it will loosen things up for normal OS users.


Cuda, Conda, Docker...ugh
The Beginning
I haven't been doing anything with pytorch recently so I decided to restart by setting up a docker container on my machine with a beefier nvidia card than the machine I had been using. I've learned a little bit more about docker since I built my earlier container so I decided to update the image and found it both easier and harder than I remember it being. It went easier because I knew more or less what I had to do so I knew what to look up. Harder because there's some workarounds that you have to work with that weren't there before, and I decided to stick with conda
, which seems to add an extra layer of difficulty compared to pip and virtualenv when you use docker. But, anyway, enough with the whining, here's the stuff.
Note: I'm doing this on Ubuntu 21.10.
Nvidia-Container-Toolkit and Ubuntu
The first thing you should do is install the nvidia-container-toolkit. The instructions say to add the repository this way:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
This introduces two problems for me. The first is that this assumes you use bash, but I'm using fish so the command doesn't work. This is no big deal since I just looking in the /etc/os-release
file to get the ID
and VERSION_ID
and wrote it out.
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu21.10/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
But then this introduces the second problem - the second curl fails with the message:
Unsupported distribution!
Check https://nvidia.github.io/nvidia-docker
It turns out there's an open bug report on GitHub, with a comment that only Long-Term-Support versions are supported. The commenter suggested using 18.04 for some reason, but I went with 20.04 and it seemed to work.
curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu20.04/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt update
sudo apt install nvidia-container-toolkit
The Cuda Image
Now that I was setup to run the container I ran a test.
docker run --rm --gpus all nvidia/cuda:11.4.2-cudnn8-devel nvidia-smi
Which gave me an error, something like Error response from daemon
(I don't remember exactly), which turns out to be the result of a pretty major flaw right now (as noted on the github issue for it). One of the commenters posted a work-around for it which seems to work.
Edit /etc/nvidia-container-runtime/config.toml
In the file there's a line:
#no-cgroups = false
Uncomment it and set it to true.
no-cgroups = true
Okay, easy-peasy. All fixed, then, right? Well, doing this fix means that you now have to pass in more flags when you run the container. First you need to check what you have.
ls /dev | grep nvidia
Then when you run the container you need to pass in most of those things as --device
arguments.
docker run --rm --gpus all --device /dev/nvidia0 --device /dev/nvidiactl --device /dev/nvidia-modeset --device /dev/nvidia-uvm nvidia/cuda:11.4.2-cudnn8-devel nvidia-smi
You might not need to actually look in /dev
first. I had to because the post on github was referring to a /dev/nvidia1
device, but I don't have one. This appears to work, although it's a bit unwieldy.
Now for Conda
This next bit probably shouldn't be registered as a problem, but the last time I tried to run pytorch in docker there was some kind of bug when I installed it with pip
that went away when I installed it with conda
so I decided to stick with cuda, but I also wanted to try and set it up the way I do with virtualenv - cached by docker and run non-root. This turns out to be much harder to do than with virtualenv for some reason. I looked through some posts on StackOverflow and elsewhere and didn't really see any good solutions, but this one on Toward Data Science got close enough. The way that post suggests is to change the shell that docker uses to bash
and moving the miniconda
install path into the home directory of the user that you want to run it.
I won't bother with all of the Dockerfile
, but the basic changes are:
Change the shell.
SHELL [ "/bin/bash", "--login", "-c" ]
Switch to the user (assuming you added the user and home directory earlier in the docker file) and add an environment file to store the directory in (I don't think you need to use ENV
but the post used it. I'll try ARG
later).
USER ${USER_NAME}
WORKDIR ${USER_HOME}
ENV CONDA_DIR=${USER_HOME}/miniconda3
Then install miniconda.
ARG MINICONDA_URL="https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh"
ARG SHA256SUM="1ea2f885b4dbc3098662845560bc64271eb17085387a70c2ba3f29fff6f8d52f"
ARG CONDA_VERSION=py39_4.10.3
RUN --mount=type=cache,target=/root/.cache \
wget "${MINICONDA_URL}" --output-document miniconda.sh --quiet --force-directories --directory-prefix ${CONDA_DIR} && \
echo "${SHA256SUM} miniconda.sh" > shasum && \
sha256sum --check --status shasum && \
/bin/bash miniconda.sh -b -p ${CONDA_DIR} && \
rm miniconda.sh shasum
ENV PATH=$CONDA_DIR/bin:$PATH
Update conda.
RUN echo ". $CONDA_DIR/etc/profile.d/conda.sh" >> ~/.profile && \
conda init bash && \
conda update -n base -c defaults conda
Install the packages. This is where I added the caching to try and reduce the re-downloading of files. I don't really know if this helps a lot, to be truthful, but it's nice to have new things.
RUN --mount=type=cache,target=/root/.cache \
conda install pytorch torchvision torchaudio cudatoolkit --channel pytorch --yes


--- layout: post title: GitHub language trends 2014 date: '2014-05-04T13:26:00.001-04:00' author: ricleal tags: - Programming comments: true ---


Research
After building out xMacroscope, we observed how visitors interacted with these experiences, surveyed them
about
their experiences, and gained valuable insights. This learning research has allowed us to iterate on the
technology and exhibit platform, while expanding our understanding of data visualization literacy in the
science
center environment.


Permute
Permutes the dimensions of the input according to a given pattern.
Inherits From: Layer
tf.compat.v1.keras.layers.Permute
tf.compat.v2.keras.layers.Permute
Useful for e.g. connecting RNNs and convnets together.
model = Sequential() model.add(Permute((2, 1), input_shape=(10, 64))) # now: model.output_shape == (None, 64, 10) # note: `None` is the batch dimension
dims
: Tuple of integers. Permutation pattern, does not include the
samples dimension. Indexing starts at 1.
For instance, (2, 1)
permutes the first and second dimensions
of the input.Arbitrary. Use the keyword argument input_shape
(tuple of integers, does not include the samples axis)
when using this layer as the first layer in a model.
Same as the input shape, but with the dimensions re-ordered according to the specified pattern.
__init__
__init__( dims, **kwargs )


The goal of GARCOM is to provide mutation counts per individual within genetic boundaries (genes). It accepts different data formats with input file from plink (.raw), gene boundaries, SNP location. It also accepts VCF file format. The vcf file is assumed to be pVCF, that is where all samples are merged/combined.
You can install the released version of GARCOM from CRAN with:
install.packages("GARCOM")
This is a small example which shows you how to use GARCOM:
library(GARCOM) ## basic example code ## sample data provided with library: genecoord, snpgene, snppos and genecoord ## Input data requires output from PLINK --recode flag. plink --bfile input --recode A --out sample_output #input data: .raw formatted and SNP-gene (two columns) gene_annot_counts(recodedgen,snpgene) #input data: .raw formatted, SNP location (two columns) and Gene boundaries (three columns) gene_pos_counts(recodedgen, snppos, genecoord) #read VCF file vcf_data <- vcfR::read.vcfR("CHRXX.vcf.gz", verbose=TRUE) vcf_counts_annot(vcf_data,df_snpgene) # pass vcf data read and data frame with SNP-gene annotation #read VCF file vcf_data <- vcfR::read.vcfR("CHRXX.vcf.gz", verbose=TRUE) vcf_counts_SNP_genecoords(vcf_data,df_snppos,df_genecoords) # pass vcf data read and data frame SNP position and third with gene coordinates #subset individuals vcf_counts_SNP_genecoords(vcf_data,df_snptestpos, df_genecoordstestpos,keep_indiv=c("IID1","IID2")) ind_select<-c("IID1","IID2") ## store in a vector vcf_counts_SNP_genecoords(vcf_data,df_snptestpos, df_genecoordstestpos,keep_indiv=ind_select) ## Filter individuals and filter genes for a VCF data vcf_counts_SNP_genecoords(vcf_data,df_snptestpos,df_genecoordstestpos,keep_indiv=c("IID1","IID2"),filter_gene="GENE_1") #returns a matrix of data.table class ##For more examples refer manual
citation("GARCOM")
GARCOM welcomes suggestions and improvements. Please open issues on the github for bugs/suggestions.
GARCOM's derived from French word garçom (/ɡaʁ.sɔ̃/)
GARCOM is ready to serve and obtain desired results for the genetics data. We hope you enjoy it!


Rail Transport Analysis in MA
During a GIS class, I investigated where railroad owners should consider repairing railways to reinvest in local communities. By overlaying data layers for population decline from 1980-2019 with rail activity, I found that key communities were Medford, Weymouth, Brockton, New Bedford, and Chicopee. Data was provided by mass.gov.
Disciplines
Year


Apache Beam publishes the first stable release
The Apache Beam community is pleased to announce the availability of version 2.0.0. This is the first stable release of Apache Beam, signifying a statement from the community that it intends to maintain API stability with all releases for the foreseeable future, and making Beam suitable for enterprise deployment.
This first stable release is the third important milestone for the Apache Beam community. Beam joined the Apache Incubator in February 2016 and graduated as a top-level project of The Apache Software Foundation in December. Through these fifteen months of concentrated effort, a slightly chaotic codebase, merged from multiple organizations, has been developed into a generalized framework for data processing that is truly engine- and environment-independent. Apache Beam has evolved and improved through three incubating and three post-incubation releases, culminating in the stable release announced today as version 2.0.0.
In the five months since graduation, Apache Beam has seen a significant growth, both in terms of adoption and community contribution. Apache Beam is in use at Google Cloud, PayPal, and Talend, among others.
Apache Beam, version 2.0.0 improves user experience across the project, focusing on seamless portability across execution environments, including engines, operating systems, on-premise clusters, cloud providers, and data storage systems. Other highlights include:
- API stability and future compatibility within this major version.
- Stateful data processing paradigms that unlock efficient, data-dependent computations.
- Support for user-extensible file systems, with built-in support for Hadoop Distributed File System, among others.
- A metrics subsystem for deeper insight into pipeline execution.
Many contributors made this release possible, by participating in different roles: contributing code, writing documentation, testing release candidates, supporting users, or helping in some other way. The following is a partial list of contributors – 76 individuals contributed code to the project since the previous release, assembled from source history:
- Ahmet Altay
- Eric Anderson
- Raghu Angadi
- Sourabh Bajaj
- Péter Gergő Barna
- Chen Bin
- Davor Bonaci
- Robert Bradshaw
- Ben Chambers
- Etienne Chauchot
- Chang Chen
- Charles Chen
- Craig Citro
- Lukasz Cwik
- Márton Elek
- Pablo Estrada
- Josh Forman-Gornall
- Maria García Herrero
- Jins George
- Damien Gouyette
- Thomas Groh
- Dan Halperin
- Pei He
- Hadar Hod
- Chamikara Jayalath
- Rekha Joshi
- Uwe Jugel
- Sung Junyoung
- Holden Karau
- Vikas Kedigehalli
- Eugene Kirpichov
- Tibor Kiss
- Kenneth Knowles
- Vassil Kolarov
- Chinmay Kolhatkar
- Aljoscha Krettek
- Dipti Kulkarni
- Radhika Kulkarni
- Jason Kuster
- Reuven Lax
- Stas Levin
- Julien Lhermitte
- Jingsong Li
- Neville Li
- Mark Liu
- Michael Luckey
- Andrew Martin
- Ismaël Mejía
- Devon Meunier
- Neda Mirian
- Anil Muppalla
- Gergely Novak
- Jean-Baptiste Onofré
- Melissa Pashniak
- peay
- David Rieber
- Rahul Sabbineni
- Kobi Salant
- Amit Sela
- Mark Shalda
- Stephen Sisk
- Yuya Tajima
- Wesley Tanaka
- JiJun Tang
- Valentyn Tymofieiev
- David Volquartz
- Huafeng Wang
- Thomas Weise
- Rafal Wojdyla
- Yangping Wu
- wyp
- James Xu
- Mingmin Xu
- Ted Yu
- Borisa Zivkovic
- Aviem Zur
Apache Beam, version 2.0.0, is making its debut at Apache: Big Data, taking place this week in Miami, FL, with four sessions featuring Apache Beam. Apache Beam will also be highlighted at numerous face-to-face meetups and conferences, including the Future of Data San Jose meetup, Strata Data Conference London, Berlin Buzzwords, and DataWorks Summit San Jose.
We’d like to invite everyone to try out Apache Beam today and consider joining our vibrant community. We welcome feedback, contribution and participation through our mailing lists, issue tracker, pull requests, and events.


City Weather
Welcome on my weather application!
Not found!
{{weather.city.name}}/{{weather.city.country}}
{{Math.round(day.temp.day)}} °C
{{day.dt*1000 | date:'EEE'}}
{{day.dt*1000 | date:'dd/MM'}}


ESS Portal
Toggle navigation
John Doe
User Profile
Logout
Home
My Details
Earning Statements
Profile
Display User Details from NodeJS
UEID:
Refresh
Username:
Password:
Change Password
Profession:
Update Profile
© 2020. State Controller Office of California.
Unauthorized users will be prosecuted to maximum exted of the law.


disjfa.nl
My website, you are on it. Check it out.
disjfa.nl--- layout: layouts/default ---
My website, you are on it. Check it out.
disjfa.nlCheck out some of my projects. All available to use and build something beautiful.
disjfa.github.ioCheck out a puzzle today, get addicted tomorrow.
mozaic.dimme.nlMade a feed burner for me, did not like others.
feed.dimme.nlManage content, when nobody is looking. Also as a setup on how to manage content for website.
content.dimme.nlYou can also read posts by me on dev.to.
@disjfa on dev.toYou can also read posts by me on medium.
@disjfa on medium.comOr just folow me on twitter. Maybe i post something nice.
@disjfa on twitter


Find coding gists, cheatsheets, plugins, themes, resources, and tutorials.
Take a look at my graphic design portfolio and contact me for design work.
Join classes about Computers, Technology, Coding, Design, and Language Learning.
Find resources about business, family, exercise, and other various topics.
Take your Korean from "foreign" to fluent with vocab lists and grammar guides.
Listen to sermon podcasts or download church graphic design resources.


January
February
March
April
May
June
July
August
September
October
November
December


| add_p.tbl_summary {gtsummary} | R Documentation |
Adds p-values to tables created by tbl_summary
by comparing values across groups.
## S3 method for class 'tbl_summary' add_p( x, test = NULL, pvalue_fun = NULL, group = NULL, include = everything(), test.args = NULL, exclude = NULL, ... )
x |
Object with class |
test |
List of formulas specifying statistical tests to perform for each
variable,
e.g. Tests default to |
pvalue_fun |
Function to round and format p-values.
Default is style_pvalue.
The function must have a numeric vector input (the numeric, exact p-value),
and return a string that is the rounded/formatted p-value (e.g.
|
group |
Column name (unquoted or quoted) of an ID or grouping variable.
The column can be used to calculate p-values with correlated data.
Default is |
include |
Variables to include in output. Input may be a vector of
quoted variable names, unquoted variable names, or tidyselect select helper
functions. Default is |
test.args |
List of formulas containing additional arguments to pass to
tests that accept arguments. For example, add an argument for all t-tests,
use |
exclude |
DEPRECATED |
... |
Not used |
A tbl_summary
object
Example 1
Example 2
Daniel D. Sjoberg, Emily C. Zabor
See tbl_summary vignette for detailed examples
Other tbl_summary tools:
add_n.tbl_summary()
,
add_overall()
,
add_q()
,
add_stat_label()
,
bold_italicize_labels_levels
,
inline_text.tbl_summary()
,
inline_text.tbl_survfit()
,
modify
,
tbl_merge()
,
tbl_stack()
,
tbl_summary()
# Example 1 ---------------------------------- add_p_ex1 <- trial[c("age", "grade", "trt")] %>% tbl_summary(by = trt) %>% add_p() # Example 2 ---------------------------------- add_p_ex2 <- trial %>% select(trt, age, marker) %>% tbl_summary(by = trt, missing = "no") %>% add_p( # perform t-test for all variables test = everything() ~ "t.test", # assume equal variance in the t-test test.args = all_tests("t.test") ~ list(var.equal = TRUE) )


--- title: Home layout: default quote-of-the-day: There must be a secret message from Dumbledore hidden in the icing. quote-by: J. K. Rowling, Harry Potter and the Deathly Hallows ---
Decorated Cookies
A fun way to celebrate...
Pastries & Doughnuts
Even if you don't like cake...
About
More about us
{{page.quote-of-the-day}}
- {{page.quote-by}}


Gift Guide 2019: Stocking Stuffers For Every Family Member
by Vivienne DeckerWhen coming to stocking stuffers for your whole family, it is always best to go with what inspires you. Whether you have a music lover, an art critic, a social media maven or an outdoorsy type in your home, this list has something special for every family member. The perfect stuffers are always something people wouldn’t buy for themselves, but are oh-so-happy to have.
For The Outdoorsy
This Best Made Company Traveller Set comes with a notepad, pen, passport case, a ‘Stay Sharp’-engraved flask and a survival kit. Perfect for an adventurous family member on the go.
For The Gamer
Ms. Pac-Man should have a place at every Christmas party. This hand-held retro arcade game is perfect for any game-lover in the family.
For The Social-Media Maven
This mini Jacquemus leather pouch holds only one object—a lipstick—and is destined to be a hit for those who are lead Insta-worthy lives. Tiny enough to fit into even the smallest Christmas-stocking, this gift is sure to enable endless selfies.
For The Family Art Critic
Perfect for your family member who is avoiding single-use plastic bottles, and wants to flaunt their love of art at the same time. This Corkcicle Basquiat Canteen is a sure hit.
For The Jewelry Collector
These Roxanne Assoulin Alphabet Soup enamel bracelets are as happy and festive as they are chic. Customize a special bracelet to put in a stocking for a gift they will always cherish.
For The Well-Groomed
This Muhle travel shaving set is unparalleled in quality, from a corrosion-resistant razor to vegan fibers, and a vegetable-tanned leather case. Perfect for grooming a worldly gentleman in your life.
 This scented Fornasetti candle is the perfect gift as it’s something everyone would enjoy, but not want to buy for themselves.
For The Music Lover
This super chic Bang & Olufsen Sand Stone Bluetooth Speaker is the perfect gift for anyone on the go. It has a rechargeable battery that lasts 24 hours, and an elegant leather strap.
For Your Dog
Your can't forget your four-legged family members during the holidays. Your favorite dog will look extra chic in a special “Ain’t too proud to beg” bandana.


I am a passionate programmer and a backend developer with a special taste for information retrieval and using new ideas to collaborate with team members to solve existing challenges and attempting to convert them to Intellectual property. Some of my skills include Blockchain, Devops Tools, Analytics and Monitoring tools. Along with above technologies i have experience on the most prominent Cloud provider services which include Google Cloud, AWS and IBM Cloud(formerly known as Bluemix).
At Coursera, I review courses before they launch and provide feedback via Coursera to the institution creating the course, to allow them to improve the course before it becomes available to learners. There are no commitments but I do this since I enjoy exploring, learning new things and it provides an opportunity to me to contribute to our community.
Apart from this i have been trying various other things some of them include developing Application for Amazon voice based virtual assistant known as Alexa, Chatbots using IBM Watson services which can be integrated with slack and facebook messenger and sometime working on blockchain and trying my hands on the different hyperledger framework like sawtooth etc.
Self-taught fast learner who enjoys solving technical and business problem and had the opportunity of working with various systems and business processes.
As a Engineer in google cloud, i design and create a scalable, reliable and a secure infrastructure hosted in GCP which can withhold the customer production workload. This includes programming and scripting the infrastructure following best of Google Cloud and Open source technologies. Creating reusable assets and recommendations for the best possible design considering their existing infrastructure that leverages best of both Google Cloud and the customer on-premise environment .
Position : Strategic Cloud Engineer
Tools:
GCP, Terraform, Designing Scalable Systems, Golang.
As a Engineer in IBM Software Lab i work in the Hybrid Cloud division where my work is mostly Around the IBM's messaging product knwon as IBM MQ. Worked on the Development on IBM MQ Managed file transfer REST api along with the redesiging of the database schema for scaling the performance. Currently, working as a Devops Engineer to provide development and support for the IBM MQ as a Service and making it available in the IBM Cloud and AWS by means of developing various Logging,Monitoring and various other tools. Apart from this also involved in IP and Patents filing.
 Mollitia neque assumenda ipsam nihil, molestias magnam, recusandae quos quis inventore quisquam velit asperiores, vitae? Reprehenderit soluta, eos quod consequuntur itaque. Nam.
Close ProjectLorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia neque assumenda ipsam nihil, molestias magnam, recusandae quos quis inventore quisquam velit asperiores, vitae? Reprehenderit soluta, eos quod consequuntur itaque. Nam.
Close ProjectLorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia neque assumenda ipsam nihil, molestias magnam, recusandae quos quis inventore quisquam velit asperiores, vitae? Reprehenderit soluta, eos quod consequuntur itaque. Nam.
Close ProjectI keep exploring different trending technologies. Some of my exploration in personal time are listed below.
1. Chatbot
An IBM Watson based Chat bot which can be integrated with slack and also integrates with Facebook messenger application to provide help and support and various other functionalities.
2. Amazon Alexa Applications
A Voice based application that performs the search operation based on the voice command and pushes the top 10 result from Elastic Search to Slack channel.
3. ELK and Splunk tool
A tool that reads document for any format and forwards it data to Splunk and ELK stack.
4. Blockchain and Multichain
Development of the Projects using Multichain where different nodes running at different machine interact with each other by means of sharing data in the Private Blockchain Network.
5. Gym
And this is the important one, Going to gym.
At Coursera, I review courses before they launch and provide feedback via Coursera to the institution creating the course, to allow them to improve the course before it becomes available to learners. There are no commitments but I do this since I enjoy exploring, learning new things and it provides an opportunity to me to contribute to our community.
Close Project


View 1
View 2
View 3
View 4
View 5
prev
next
Click here to go back to homepage and all examples
Subview A
Subview B
Subview C
View 3
Subview D
Subview E
View 5


Customizing JBoss apiman Through Policy Plugins
Mar 6, 2015 Len DiMaggio plugins, policies, development, and mavenNote: A newer revision of this blogpost for apiman 1.2.x can be found here. This version was written for apiman 1.1.x.
This is the second in a series of articles exploring API management with JBoss apiman. The first article was a general introduction to apiman for impatient users where in only 10 minutes we installed apiman, created users and organizations, and services, policies, contracts, and applications. In this article, we’ll take the first step toward customizing apiman by creating new plugins to implement service policies.
The major new feature added to release 1.0.2 of apiman https://www.apiman.io/ is the ability to extend its features through a custom plugin framework. Since policies perform the most important apiman runtime operations, plugins that enable you to create new policies are the first type of plugins to be supported.
In this article, we’ll examine all the steps that you must perform to create a new policy plugin, and then import it into apiman and configure a service to put it into use.
Prerequisites
For this article, we’ll assume that you have completed all the steps in the first article in this series. The first article guides even the most impatient user through installing and using apiman.
Accessing the Example Plugins
Like all JBoss software, apiman provides functioning example code that you can use as a starting point for your own plugins. The easiest way to create and package an apiman is as a standard maven project packaged as a .war file.
To download a copy of the example plugins, execute this git command:
git clone https://github.com/apiman/apiman-plugins
When the git clone operation completes, you’ll have the source code for multiple example plugins. The exact set of plugins that you have downloaded may change, depending on when you download them, as more examples are always being added. For the purposes of this article, we’ll focus on the “config-policy” example plugin. This plugin demonstrates how a plugin can be used to set the value of properties in a message being processed by a service. Specifically, this plugin defines properties in the request and response headers and enables you to set their values to “true.”
Requirements for a Plugin Implementation
The easiest way that an apiman policy plugin can be build and packaged is as a standard maven project packaged as a .war file. There are just a few modifications that are required to convert a .war into a plugin.
Let’s take a closer look at the files and directories that comprise the apiman config-policy plugin, and the changes that are needed to implement a plugin:
├---pom.xml
└---src
└---main
├---apiman
│ ├---plugin.json
│ └---policyDefs
│ ├---config-policyDef.json
│ └---schemas
│ └---config-policyDef.schema
└---java
└---io
└---apiman
└---plugins
└---config_policy
├---ConfigBean.java
└---ConfigPolicy.java
The most obvious difference is the addition of the “apiman” directory. This directory is used to contain the configuration files for the plugin. (In other words, the files that make the project a plugin.) The only project-wide configuration change that you have to make is to modify the plugin’s maven pom.xml file to include the apiman directory when the project is built. The following lines are added to the plugin’s pom.xml file:
The result of these statements in the pom.xml file is that the contents of the apiman directory are included in the project build’s META-INF directory. (We’ll take a look at this later when we build the plugin project.) Setting filtering to true enables maven property expansion during the creation of the plugin war file. Configuration files for the plugin are contained in the apiman directory. The primary configuration file is the “plugin.json” file. This file is required for all apiman plugins, regardless of the plugin type. The meta-data contained in this file describes the plugin and is displayed in the API Manager UI.
Since our example is contributing a policy, it must contain a JSON file that defines the policy. This JSON file is contained in the apiman/policyDefs directory and is named “config-policyDef.json.” This file defines the following fields for the policy:
- id - A unique identifier for the policy
- name - A user friendly (in other words, a human readable) name for the policy. This policy name is displayed in the API Manager UI
- description - A description of the policy
- policyImpl - This is the fully qualified classname name of the Java class that actually implements the policy. This value must be properly formatted to include information about the plugin, including placeholders for maven properties, for example, project version.
- icon - This is the name of a Font Awesome icon https://fortawesome.github.io/Font-Awesome/ that is displayed for the Policy in the API Manager UI.
- formType - The type of policy configuration UI form. Our example uses JsonSchema.
- form - This is a relative path to the policy configuration UI form contained in the plugin. Our examples uses the JSON Schema that defines the configuration data format. (More on this file in a minute.
In our example, the config-policyDef.json looks like this:
We mentioned that since our example uses the JSON schema https://json-schema.org/documentation.html, we have to also define the configuration data format. This is done in the policyDefs/schemas/config-policyDef.schema file. This file defines the format used in the policy configuration file data and is used by the API Manager UI to generate a form that is used to fill in the values to be used to configure the policy. In our example, the policy’s JSON schema defines two properties: requestHeader and responseHeader.
That finishes the description of the policy’s configuration files. To complete the policy plugin, the example also requires the Java implementation for the policy itself. The policy implementation is contained in the src/main/java/io/apiman/plugins/config_policy/ConfigPolicy.java file. The policy is very simple as it merely appends a header to the http request and response.
Java policy classes must implement the apiman IPolicy interface. This example takes that a step further by actually extending the io.apiman.gateway.engine.policies.AbstractMappedPolicy class. By doing so, the policy Java code can take advantage of the AbstractMappedPolicy’s class use of the Jackson (https://github.com/FasterXML/jackson) JSON parser to parse the policy configuration data into a Java bean. (In this example, the bean is implemented in src/main/java/io/apiman/plugins/config_policy/ConfigBean.java.) If the policy implemented the IPolicy interface, instead of extending AbstractMappedPolicy, then the policy Java class would have to implement its own parser.
Building the Plugin and Installing it into the Maven Repo
Building the plugin with maven is easy. Just execute this command from the directory that contains the plugin’s pom.xml file.
mvn install
In case you’re wondering why, we’re installing the plugin into the maven repo. The answer is simply that in the current release of apiman, the only supported install path is from the maven repo. Future releases of apiman will likely support additional installation paths.
Installing a Plugin into apiman
In apiman, a policy plugin, once installed, is available on a system-wide basis. Accordingly, plugins can only be installed by an admin user. After you login as admin, you’ll see this in the admin UI:
After selecting “Manage Plugins,” you’ll see a screen that looks like this:
And, if you then select “Add Plugin,” you’ll see this screen:
The GroupId, ArtifactId, and Version information is all available in the example plugin’s pom.xml file:
- GroupId: io.apiman.plugins
- ArtifactId: apiman-plugins-config-policy
- Version: 1.0.3-SNAPSHOT
After you enter this information for the plugin and click on “Add Plugin,” you’ll see this displayed in the UI:
Congratulations! The plugin is installed and is ready to be used! Let’s add it to a service and see it in action.
Using the Installed Plugin
First, we have to log out of the admin account in the Admin UI and then log back in as the “serprov” service provider. Then, select our “echo” service, and create a new version of the service, based on the original version of the service:
And, when you add a new policy to the service, you’ll see the example config service that we just installed:
When you select the Config Policy, you’ll be presented with a dialog where you can specify the values for the two properties defined in the policy:
Let’s fill in some easy to remember values:
After adding the policy, you’ll see it displayed in the policies defined for the service:
Then publish the service. In order to consume the service, login to the API Manager UI as the application developer “appdev”, and create a new application that uses the new service. (We covered the creation of new applications in detail in the first article in this series)
And when the service is invoked, you’ll see something like this:
And this:
In Conclusion
OK, let’s recap. apiman is a rapidly growing and developing project. Each new release brings new features. In release 1.0.2, it became possible for users to contribute custom policies into their apiman installation through the API Manager UI.


Azure DocumentDB is a fully-managed, highly-scalable, NoSQL document database service provided by Azure. Its many benefits include rich query over a schema-free JSON data model, transactional execution of JavaScript logic, and scalable storage and throughput. You can find out more about DocumentDB online in the Microsoft Azure subsite for DocumentDB.
In this lab, you will learn how to build a todo list web application using Azure DocumentDB. The task items will be stored as JSON documents in Azure DocumentDB. The web application is a C# MVC application, in which you will wire the basic CRUD operations to methods that use DocumentDB and then publish as an Azure website.
This lab includes instructions for the following tasks:
To use Microsoft Azure DocumentDB, you must create a DocumentDB account. This task describes how to create a DocumentDB account in the Azure preview management portal.
Sign in to the preview management portal.
Click NEW and select Data + storage, then DocumentDB in order to create a new DocumentDB account.
Creating a DocumentDB account
Note: Alternatively, from the Startboard, you can browse the Azure Marketplace, select the “Data analytics” category, choose DocumentDB and then click Create.
Creating a DocumentDB Account from the Azure Marketplace
This will open the New DocumentDB (Preview) blade.
In the New DocumentDB (Preview) blade, enter a name to identify the DocumentDB account in the Id box (e.g.: your-documentdb) and specify the geographic location where your DocumentDB account will be hosted (e.g.: West US). You can update other configuration options based on the information below. Then click Create.
Configuring the DocumentDB account
Note: In the New DocumentDB (Preview) blade you can find the following options to be configured for a new DocumentDB account configuration:
Id: Name that identifies the DocumentDB account. This value becomes the host name within the URI. The Id can contain only lowercase letters, numbers, and the '-' character, and must be between 3 and 50 characters long. Note that documents.azure.com is appended to the endpoint name you choose to craft your DocumentDB account endpoint.
Pricing Tier: Standard. This lens is locked because the DocumentDB preview supports a single standard pricing tier. For more information, see DocumentDB pricing.
Optional configuration: This lens is used to specify the initial capacity allocated to your DocumentDB account. DocumentDB leverages capacity units to allow you to scale your DocumentDB account, where each capacity unit includes reserved database storage and throughput. By default, 1 capacity unit is provisioned. You can adjust the number of capacity units available to your DocumentDB account at any time via the preview management portal. For details about DocumentDB account capacity and throughput, please see the Manage DocumentDB capacity and performance article.
Resource group: The resource group for your DocumentDB account. By default, a new Resource group will be created. You may, however, choose to add your DocumentDB account to an existing resource group. For more information, see Using resource groups to manage your Azure resources.
Subscription: The Azure subscription that you want to use for the DocumentDB account. If your account has only one subscription, it will be selected automatically.
Location: The geographic location where your DocumentDB account will be hosted.
The DocumentDB account will be created. As this can take some time, you will proceed with the creation of the project and come back to retrieve some necessary information later, once the account creation has completed. Leave the browser open. You can monitor the creation progress on the Notifications Hub from time to time, if you wish to.
Checking the creation status in the Notification Hub
In the next section you will be guided step by step to create a new ASP.NET MVC application from the ground up.
In this task you will create a new ASP.NET MVC project and configure a Microsoft Azure Website where it will be deployed.
Open Visual Studio and from the File menu, hover over the New option and click Project.
Creating a New Project
Note: You can open the end solution from end/Todo and configure it according to the instructions in Setting up the end solution.
In the New Project dialog box, select ASP.NET Web Application under the Visual C# | Web tab. Make sure .NET Framework 4.5 is selected. Name the project Todo, choose a Location and click OK.
Note: You may also want to uncheck the Add Application Insights to Project if you don't want the functionality for your application.
Creating a new ASP.NET Web Application project
In the New ASP.NET Project dialog box, select MVC. Make sure that the Host in the cloud option is also selected, and change the Authentication method to No Authentication. Click Ok.
Creating a new project with the MVC template
Note 1: Selecting the Host in the cloud option will preprovision an Azure Website for you and make life a lot easier when the time comes to deploy the final working application. If you want to host this elsewhere or don't want to configure Azure upfront, then just clear Host in the Cloud.
Note 2: You might be prompted to sign in to Visual Studio with your Microsoft account. If so, enter your credentials and click Sign in.
Note 3: This hands on lab will work with either Visual Studio 2013 or Visual Studio 2015. If you are using Visual Studio 2015 and don't see the Host in the Cloud option, the most likely reason is that you need to install the latest release of the Microsoft Azure SDK for Visual Studio 2015.
The Configure Microsoft Azure Website dialog box will appear, using an auto-generated site name. Select a region (e.g.: West US). Also take note of which account you are currently signed into in the dialog box. You want to make sure that this is the account your Azure subscription is attached to (usually a Microsoft account).
This project does not require a database, as it will be using a new Azure DocumentDB account created later in the Azure Preview portal, so make sure No database is selected in the Database server field.
Click OK.
Configuring Microsoft Azure Website
The project will be created, and the authentication options and Azure Website options will be automatically configured with the project. The ASP.NET application can be run locally, if desired.
Next you will add DocumentDB to this project and build the application.
##Adding DocumentDB to your project
In this task you will add the Azure DocumentDB SDK to the application.
The DocumentDB .NET SDK is packaged and distributed as a NuGet package. To get the NuGet package in Visual Studio, use the NuGet Package Manager in Visual Studio.
Right-click the Todo project in the Solution Explorer and then select Manage NuGet Packages to open the NuGet Package Manager dialog box.
Opening Manage NuGet Packages
In the Search box, type Azure DocumentDB. From the results, select the Microsoft Azure DocumentDB Client Libraries package that has id Microsoft.Azure.Documents.Client and click Install.
This will download and install the DocumentDB client package as well as all dependencies, like Newtonsoft.Json.
Note: While the service is still in preview, the NuGet package is marked as "Prerelease", so you need to enable the "Include Prerelease" option in order to be able to find the package.
Installing the Microsoft Azure DocumentDB Client Libraries
Note: Alternatively, you can use the Package Command Console to install the package by typing the following:
Install-Package Microsoft.Azure.Documents.Client -Pre
You will be prompted to accept the license. Click I Accept.
Accepting the License for Microsoft.Azure.Documents.Client
Once the package is installed, verify that two new references have been added to the Todo project: Microsoft.Azure.Documents.Client and Newtonsoft.Json. Your Visual Studio solution should resemble the following:
References added to the Solution
##Setting up the ASP.NET MVC application
In this task you will set up the ASP.Net MVC application by adding a model, a controller and several views.
###Adding a model###
In Solution Explorer, right-click the Models folder of the Todo project and select Add. Then click Class....
Adding a new model class
In the Add New Item dialog box, set the name of the file as Item.cs and click Add.
Replace the content of the new Item.cs file with the following.
namespace Todo.Models
{
using Newtonsoft.Json;
public class Item
{
[JsonProperty(PropertyName = "id")]
public string Id { get; set; }
[JsonProperty(PropertyName = "name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "desc")]
public string Description { get; set; }
[JsonProperty(PropertyName = "isComplete")]
public bool Completed { get; set; }
}
}
Note: All data in DocumentDB is passed over the wire and stored as JSON. To control the way your objects are serialized/deserialized by JSON.NET you can use the JsonProperty attribute as demonstrated in the Item class we just created. This is optional. Moreover, you can use JsonConverter objects to completely control how serialization is handled.
###Adding a controller###
In Solution Explorer, right-click the Controllers folder of the Todo project, click Add, and then click Controller....
Adding a Controller
In the Add Scaffold dialog box, select MVC 5 Controller - Empty and then click Add.
Adding the Scaffold
Name your new Controller, ItemController and click Add.
Naming the new Controller
Once the file is created, in Solution Explorer your Visual Studio solution should resemble the following with the new Item.cs and ItemController.cs files just added.
Solution after adding the model and the controller
###Adding views### Now you will add several views to make it possible to list, edit, delete and view the details of the existing To Do items and create new ones.
####Adding an Item Index View####
In Solution Explorer, expand the Views folder. Right-click the empty Item folder, click Add, and then click View....
Adding a new View
In the Add View dialog box, complete the following options and then click Add.
In the Use a layout page box, type ~/Views/Shared/_Layout.cshtml.
Adding the Index View
Visual Studio will create a template view, named Index.cshtml. Once it is done, the cshtml file will open.
Close the Index.cshtml file in Visual Studio; you will come back to it later.
####Adding a Create New Item View#### You will now create a new view for creating new Items, very much like you did in the previous section for the Index view.
In Solution Explorer, right-click the Item folder under the Views folder, click Add, and then click View.
In the Add View dialog box, complete the following options and then click Add.
In the Use a layout page box, type ~/Views/Shared/_Layout.cshtml.
Adding the Create View
####Adding a Delete Item View#### You will now create a new view for deleting Items.
In Solution Explorer, right-click the Item folder under the Views folder, click Add, and then click View.
In the Add View dialog box, complete the following options and then click Add.
In the Use a layout page box, type ~/Views/Shared/_Layout.cshtml.
Adding the Delete View
####Adding an Edit Item View#### Now, create a new view for editing existing Items.
In Solution Explorer, right-click the Item folder under the Views folder, click Add, and then click View.
In the Add View dialog box, complete the following options and then click Add.
Select Create as a partial view.
Adding the Edit View
####Adding a Details View#### Now, create a new view for viewing details of the Items.
In Solution Explorer, right-click the Item folder under the Views folder, click Add, and then click View.
In the Add View dialog box, complete the following options and then click Add.
Select Create as a partial view.
Adding the Details View
Once this is done, close all the cshtml documents in Visual Studio. You will return to these views later.
##Wiring up DocumentDB
In this task you will add code in the ItemController class to handle the following functionality:
####Adding code to list incomplete Items####
Open the ItemController.cs file and remove all the code within the class, but make sure to keep the class. You will rebuild it piece by piece using DocumentDB in this section.
The file should look like this:
Add the following code snippet within the now empty ItemController class.
public ActionResult Index()
{
var items = DocumentDBRepository.GetIncompleteItems();
return this.View(items);
}
This code also uses a "pseudo repository" class called DocumentDBRepository that has yet to be created. This is a helper class that contains all the DocumentDB specific code. For the purposes of this walk-through, it is not going to be a full data access layer with dependency injection, factories and repository patterns as it would probably be if you were building a real-world application. In this case, instead, a single class in which all the data access logic is centralized will keep things simple and allow the focus to be on the DocumentDB specific bits.
Right-click the Todo project and click Add. Then click Class.
Adding a new class
Once the Add New Item dialog box opens, name the new class DocumentDBRepository and click Add.
Adding the DocumentDBRepository class
Replace the content of the DocumentDBRepository.cs file just created with the following:
namespace Todo
{
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using Microsoft.Azure.Documents;
using Microsoft.Azure.Documents.Client;
using Microsoft.Azure.Documents.Linq;
using Models;
public static class DocumentDBRepository
{
private static string databaseId;
private static string collectionId;
private static Database database;
private static DocumentCollection collection;
private static DocumentClient client;
private static string DatabaseId
{
get
{
if (string.IsNullOrEmpty(databaseId))
{
databaseId = ConfigurationManager.AppSettings["database"];
}
return databaseId;
}
}
private static string CollectionId
{
get
{
if (string.IsNullOrEmpty(collectionId))
{
collectionId = ConfigurationManager.AppSettings["collection"];
}
return collectionId;
}
}
private static Database Database
{
get
{
if (database == null)
{
database = ReadOrCreateDatabase();
}
return database;
}
}
private static DocumentCollection Collection
{
get
{
if (collection == null)
{
collection = ReadOrCreateCollection(Database.SelfLink);
}
return collection;
}
}
private static DocumentClient Client
{
get
{
if (client == null)
{
string endpoint = ConfigurationManager.AppSettings["endpoint"];
string authKey = ConfigurationManager.AppSettings["authKey"];
Uri endpointUri = new Uri(endpoint);
client = new DocumentClient(endpointUri, authKey);
}
return client;
}
}
}
}
The references to the ReadOrCreateDatabase and ReadOrCreateCollection methods will still remain unresolved, as these methods will be added in the next step. These two method calls are used for reading or creating DocumentDB databases and document collections.
Add the following code to the DocumentDBRepository class:
private static DocumentCollection ReadOrCreateCollection(string databaseLink)
{
var col = Client.CreateDocumentCollectionQuery(databaseLink)
.Where(c => c.Id == CollectionId)
.AsEnumerable()
.FirstOrDefault();
if (col == null)
{
col = Client.CreateDocumentCollectionAsync(databaseLink, new DocumentCollection { Id = CollectionId }).Result;
}
return col;
}
private static Database ReadOrCreateDatabase()
{
var db = Client.CreateDatabaseQuery()
.Where(d => d.Id == DatabaseId)
.AsEnumerable()
.FirstOrDefault();
if (db == null)
{
db = Client.CreateDatabaseAsync(new Database { Id = DatabaseId }).Result;
}
return db;
}
This code takes care of setting up the database, a DocumentCollection, and creating code to connect to DocumentDB through the DocumentClient.
Now you will update the configuration to set the endpoint and authorization key values, retrieving them from the DocumentDB account that you set to create in the first task of this lab.
Open the Web.config file in the root of your project (not the Web.config file in the Views directory) and find the appSettings section. Update it to contain the last 4 keys in the snippet below.
<appSettings>
<add key="webpages:Version" value="<IP_ADDRESS>"/>
<add key="webpages:Enabled" value="false"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
<add key="endpoint" value="URI" />
<add key="authKey" value="PRIMARY KEY" />
<add key="database" value="ToDoList" />
<add key="collection" value="Items" />
</appSettings>
Switch to the browser instance in which you have the Azure Preview Portal open. Verify that the DocumentDB account has been created by looking for a Created DocumentDB notification in the Notifications Hub. If there is one, click it. If not, wait until the account finishes creating and the notification appears.
Creation succeeded in Notification Hub
Click on your new DocumentDB account under the resource group.
Note: The default consistency of the DocumentDB account will be set to Session. You can adjust the default consistency setting via the preview management portal.
The new DocumentDB account has been created
Note: You can also access your existing DocumentDB accounts from the Browse blade.
Accessing the DocumentDB accounts from the Browse blade
Accessing the DocumentDB account just created
Now, click the KEYS button to open the Keys blade. Copy the endpoint URI and paste the value in the Web.config file open in Visual Studio, in place of the URI placeholder.
Retrieving the keys of the DocumentDB account just created
Switch back to the browser in which the Keys blade is open and copy the PRIMARY KEY value. Switch to Visual Studio and paste it in the Web.config file, replacing the PRIMARY KEY placeholder.
Now that the code for handling the database is ready, let's add some code to do the work for the views.
The first thing you want to be able to do with a todo list application is to display the incomplete items. You will add a method to do that next.
Copy and paste the following code anywhere within the DocumentDBRepository class.
public static List<Item> GetIncompleteItems()
{
return Client.CreateDocumentQuery<Item>(Collection.DocumentsLink)
.Where(d => !d.Completed)
.AsEnumerable()
.ToList<Item>();
}
At this point your solution should build without any errors.
If you run the application now, you will be taken to the HomeController and the Index view of that controller. This is the default behavior for the MVC template project. You will alter this behavior by changing the routing to open the Index view of the ItemController instead, so that the Incomplete Items are listed.
Open the RouteConfig.cs file under App_Start and locate the line starting with defaults:. Update it to resemble the one below:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Item", action = "Index", id = UrlParameter.Optional }
);
}
This tells ASP.NET MVC that if you have not specified a value in the URL to control the routing behavior, it should use Item as the controller instead of using Home and use Index as the view. Now if you run the application, it will call your ItemController and return the results of the GetIncompleteItems method to the Item Index view.
Press F5 to build and debug the application.
The page that opens should look like this:
To Do application running locally
Stop debugging.
####Adding Items#### Now that you have a view to list items you will add the functionality of adding items into the database, so that you have something more than an empty grid to look at.
You already have a Create view in the application and a button in the Index view that takes the user to the Create view. You will now add some code to the controller and repository to persist the record in DocumentDB.
Open the ItemController.cs file and add the following code snippet, which is how ASP.NET MVC knows what to do for the Create action. In this case, it will just render the associated Create.cshtml view created earlier.
public ActionResult Create()
{
return this.View();
}
Still in ItemController.cs, add the following block of code that tells ASP.NET MVC what to do with a POST form for this controller.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Create([Bind(Include = "Id,Name,Description,Completed")] Item item)
{
if (ModelState.IsValid)
{
await DocumentDBRepository.CreateItemAsync(item);
return this.RedirectToAction("Index");
}
return this.View(item);
}
Security Note: The ValidateAntiForgeryToken attribute is used here to help protect this application against cross-site request forgery attacks. There is more to it than just adding this attribute; your views need to work with this anti-forgery token as well. For more on the subject and examples of how to implement this correctly, please see Preventing Cross-Site Request Forgery-attacks).
Security Note: We also use the Bind attribute on the method parameter to help protect against over-posting attacks. For more details please see Basic CRUD Operations in ASP.NET MVC.
Now that the Create method is in place, the ItemController will pass the Item object from the form to the CreateDocument method. You just need to add the CreateItemAsync method.
Open the DocumentDBRepository class and add the following method:
public static async Task<Document> CreateItemAsync(Item item)
{
return await Client.CreateDocumentAsync(Collection.SelfLink, item);
}
This method simply takes an object passed to it and persists it in DocumentDB.
With these steps, you have added all the code required to add new Items to the database.
You may have noticed some methods or classes are not yet recognized. This will be fixed in the next section.
####Editing items#### Now you will add the ability to edit Items in the database and to mark them as complete. The Edit view already exists in the project, so you just need to add some code to the ItemController and to the DocumentDBRepository class again.
Open ItemController.cs and add the following code:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Edit([Bind(Include = "Id,Name,Description,Completed")] Item item)
{
if (ModelState.IsValid)
{
await DocumentDBRepository.UpdateItemAsync(item);
return this.RedirectToAction("Index");
}
return this.View(item);
}
public ActionResult Edit(string id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Item item = (Item)DocumentDBRepository.GetItem(id);
if (item == null)
{
return this.HttpNotFound();
}
return this.View(item);
}
The first Edit method handles the Http GET that happens when the user clicks on the Edit link from the Index view. This method fetches a Document from DocumentDB and passes it to the Edit view. The Edit view will then do an Http POST to the IndexController.
The second Edit method added handles passing the updated object to DocumentDB to be persisted in the database.
Add the following using directives to the ItemController.cs file.
using Todo.Models;
using System.Threading.Tasks;
using System.Net;
Add the following methods to the DocumentDBRepository class:
public static Item GetItem(string id)
{
return Client.CreateDocumentQuery<Item>(Collection.DocumentsLink)
.Where(d => d.Id == id)
.AsEnumerable()
.FirstOrDefault();
}
public static Document GetDocument(string id)
{
return Client.CreateDocumentQuery(Collection.DocumentsLink)
.Where(d => d.Id == id)
.AsEnumerable()
.FirstOrDefault();
}
public static async Task<Document> UpdateItemAsync(Item item)
{
Document doc = GetDocument(item.Id);
return await Client.ReplaceDocumentAsync(doc.SelfLink, item);
}
The first of these methods fetches an Item from DocumentDB which is passed back to the ItemController and then on to the Edit view.
The second method retrieves a Document in DocumentDB based on the id. This method is used by the third one (UpdateItemAsync) to replace the Document in DocumentDB with the version of the Document passed in from the ItemController.
Add the following using directive to the DocumentDBRepository.cs file. After this addition, all references should be resolved.
using System.Threading.Tasks;
With these additions, the Edit functionality should be working. Now you will add support for deleting items.
####Deleting items#### The code changes that allow the deletion of Items are similar to those made to allow the edition of items. As before, the Delete view already exists in the project, so you just need to add some code to the ItemController and the DocumentDBRepository class again.
Open ItemController.cs and add the following code:
public ActionResult Delete(string id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Item item = (Item)DocumentDBRepository.GetItem(id);
if (item == null)
{
return this.HttpNotFound();
}
return this.View(item);
}
[HttpPost, ActionName("Delete")]
//// To protect against Cross-Site Request Forgery, validate that the anti-forgery token was received and is valid
//// for more details on preventing see http://go.microsoft.com/fwlink/?LinkID=517254
[ValidateAntiForgeryToken]
//// To protect from overposting attacks, please enable the specific properties you want to bind to, for
//// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
public async Task<ActionResult> DeleteConfirmed([Bind(Include = "Id")] string id)
{
await DocumentDBRepository.DeleteItemAsync(id);
return this.RedirectToAction("Index");
}
Add the following methods to the DocumentDBRepository class:
public static async Task DeleteItemAsync(string id)
{
Document doc = GetDocument(id);
await Client.DeleteDocumentAsync(doc.SelfLink);
}
####Viewing details of items#### The code changes that allow viewing details of Items are even fewer than those made to allow the edition or deletion of items. The Details view was already added to the project, and the necessary code in the DocumentDBRepository class to get a document already exists, so you only need to add some code to the ItemController.
Open ItemController.cs and add the following code:
public ActionResult Details(string id)
{
var item = DocumentDBRepository.GetItem(id);
return this.View(item);
}
You have finished adding all the necessary code for the application to work. In the next section you will test the application locally.
##Running the application locally
In this task you will verify that the application you built in the previous task is working as expected.
Press F5 to build and run the solution.
The application will be launched in a browser.
Application running locally
Click the Create new link and add values to the Name and Description fields. Leave the Completed check box unselected; otherwise, the new Item will be added in a completed state and will not appear on the initial list.
Testing - Creating an item
Click Create. You are redirected back to the Index view and your Item appears in the list.
Testing - the Index view after creating an item
Feel free to add a few more Items to your todo list.
Click Edit next to an Item on the list. You are taken to the Edit view where you can update any property of your object, including the Completed flag. Update any field and click Save.
Note: (Warning) If you mark the Completed flag and click Save, the Item will no longer appear in the list of incomplete tasks. Please do not do this just yet.
Testing - Editing an item
Back in the Index view, click Details. You will be taken to the Details view where all fields for the item are visible.
Testing - Viewing details for an item
Click Back to List and once in the Index view, click Delete. The app will navigate to the Delete view where you can confirm the deletion.
Testing - Deleting an item
Click Delete. You will be taken to the Index view, where you will see that the item no longer exists.
You can verify that completed items are not displayed in the Index view by creating a new item and editing it to check the Completed checkbox. Once you click Save and are redirected to the Index view, the item should no longer appear.
Go back to Visual Studio and press Shift+F5 to stop debugging.
The following steps will show you how to deploy the application to Azure as an Azure Web App. In the earlier steps, you connected your new project with an Azure Web App, so it's ready to be published.
In Visual Studio, right-click the Todo project and select Publish.
Publishing the application
The Publish Web dialog box will appear with each setting already configured according to your credentials. In fact, the website has already been created in Azure for you at the Destination URL shown.
Note: If you opened the end solution provided instead of following the lab instructions, you might have to enter additional information.
Click Publish.
Publish Web Dialog box
Once Visual Studio publishes the web application, it will launch a browser with the web application running. You can use it to perform the same operations you tried while running it locally.
Application running in IE from Azure
##Appendix - Cleanup
In this task you will learn how to delete the resources created created in the previous sections. These are:
To delete the website follow these steps:
In your browser, go to the preview management portal, and sign in with your Azure credentials.
Click BROWSE in the Navigation hub on the left and then Web Apps.
Browsing websites
A blade displaying all websites will be displayed.
Select your website and click DELETE in the details blade.
Clicking Delete to delete website
In the Delete Confirmation dialog, click Yes.
The website will be deleted. You will see a notification in the Notifications hub.
To delete the DocumentDB account proceed in a similar way:
Click BROWSE in the Navigation hub on the left and then DocumentDB accounts.
Click your documentDB account and in the details blade that opens, click Delete.
Accessing the DocumentDB account just created
In the confirmation blade that appears, type your documentDB account name and click Delete. The account will be deleted.
Confirming deletion of DocumentDB account
##Summary
By completing this lab you have learned how to create an ASP.Net MVC application that uses Azure DocumentDB to store data as JSON objects. You have implemented all basic CRUD operations, tested the application locally, and published it to Azure Websites.


color
intensity
orientation
hog
Color threshold
Intensity threshold
Orientation threshold
HOG threshold


Login to asana.com and go to https://app.asana.com and navigate to 'My Profile Settings' => Apps => Manage Developer Apps => Add New Application to register your application and get a client_id and client_secret. Ensure you select "OAuth 2 authorization with a callback URL".
Set the "Authorization callback URL" to: {{siteUrl}}_oauth/asana
Complete the rest of the form as required, along with the captcha and press submit.
Record the client_id and client_secret in the "Client Id" and "Client Secret" fields of this form and press submit to save the configuration


Working hard. Enjoying the experience. Not missing the forest for the trees. It's from these ideals that the Jacuzzi Boys Athletic Club was born.
Founded in 2014, based in Portland, Oregon, and with members hailing from all across the country, the dudes of the JBAC are committed to enjoying the ride, sharing the experience, and getting after it - in sport, and in life.


| Welland Valley Cycling Club Competition Results |
|---|
| Club website |
| Club Championship 2017 Event Results |
|---|
| Event 1 |
| Event 2 |
| Event 3 |
| Event 4 |
| Event 5 |
| Event 6 |
| Event 7 |
| Event 8 |
| Event 9 |
| Event 10 |
| Event 11 |
| Club Championship 2017 League Tables |
|---|
| Seniors |
| Veterans |
| Women |
| Juniors |
| Juveniles |
| Road Bike Men |
| Road Bike Women |
|   |
| DC Research Prem |
| DC Research 1 |
| DC Research 2 |
| DC Research 3 |
| DC Research 4 |
| Evening 10 Series 2017 Event Results |
|---|
| Event 1 |
| Event 2 |
| Event 3 |
| Event 4 |
| Event 5 |
| Event 6 |
| Event 7 |
| Event 8 |
| Event 9 |
| Event 10 |
| Event 11 |
| Event 12 |
| Event 13 |
| Event 14 |
| Event 15 |
| Event 16 |
| Evening 10 Series 2017 League Tables |
|---|
| Seniors |
| Veterans |
| Women |
| Juniors |
| Juveniles |
| Road Bike Men |
| Road Bike Women |


Tidal’s Black Friday/Cyber Monday deals offer four months of Hi-Fi for $1.99
Four months of regular Tidal are coming in at $0.99
by Brad BennettStarting now, music listeners who are interested in Tidal’s streaming service can nab a four-month subscription for as low as $0.99 CAD.
That rock bottom pricing is for subscribers who opt for the basic level of Tidal streaming. That tier usually costs $10 per month.
The streaming service is offering a better deal on its Hi-Fi streaming option. The high-quality tier of music regularly costs $20 per month, but you can currently get four months of Tidal Hi-Fi for $1.99.
Unfortunately, users who have already created a Tidal account won’t be able to redeem this offer. The fine print says it’s for new accounts only. That said, if you really want to try out Tidal Hi-Fi, you can just make a new account.
Source: Tidal


Mini Schnauzer
Missing in Bargara
things to know about our dog
Colour: Salt and Pepper
Answers to name of Misty
Recently groomed
Last seen at the Basin
Wears a sparkly pink colar
Please keep a look out for our pet
,
Misty


§501-133 New trustee. When a new trustee of registered land is appointed either by any court or otherwise, a new certificate may be entered upon presentation to the assistant registrar of a certified copy of the order or deed of appointment. [L 1903, c 56, §67; RL 1925, §3256; RL 1935, §5066; RL 1945, §12666; RL 1955, §342-66; HRS §501-133; am L 1972, c 91, §1(x); gen ch 1985; am L 1986, c 246, §13; am L 1988, c 346, §14]
Rules of Court
New certificate of title, see RLC rule 59(f).


--- layout: page title: "Batting" author: Nikhil image: assets/images/6.jpg ---
| Name | Matches | Innings | High Score | Runs |
|---|---|---|---|---|
| Ajay | 20 | 20 | 50 | 120 |
| Akshay | 15 | 15 | 71 | 100 |
| Avinash | 15 | 15 | 45 | 95 |
| Namrata | 5 | 5 | 45 | 45 |
| Nikhil | 4 | 4 | 30 | 40 |
| Ratik | 2 | 1 | 40 | 40 |
| Siddarth | 4 | 2 | 20 | 20 |
| Yash | 1 | 1 | 15 | 23 |


'Difficult times' - Aston Villa hero's message for the man who took his place
Aston Villa latest news | Despite three losses on the spin, the January signing has earned plaudits for his recent performances
by Ben Husband, https://www.birminghammail.co.uk/authors/ben-husband/Frederic Guilbert has been lavishly praised, from one of the men he has replaced.
The Aston Villa defender has been in fine form this season, after signing in January, the Frenchman ended the season at his beloved Caen as he tried, unsuccessfully to battle against relegation.
Alan Hutton was the man that occupied the right back slot at Villa Park for much of the promotion season, until an injury all but ended his final season as a Villa player.
The former Scotland international left the club in the summer, but has been able to watch his replacement flourish in his fledgling Premier League career.
Speaking to Football Insider, Hutton said: “He’s done well since he’s come in, good pace which helps out, especially in the Premier League.
Aston Villa latest
This is your round up of all things Villa; the one-stop shop that will keep you updated on the latest goings on at the club and beyond.
Transfers, injuries, match-days and managers, we’ve got you covered.
We’ll be bringing the very latest on the Villains throughout the week and around the clock.
Make sure you keep yourself updated with our handy daily catch up...
Must reads...
- 'Liked and admired' - Aston Villa star makes transfer admission
- Leeds United 'in the hunt' to swoop for Villa transfer target - reports
- 'I hope' - Chelsea star makes Aston Villa admission
- 'He is back' - Newcastle United set for major boost for Aston Villa meeting
- Villa dealt major blow as Man United monitor Dean Smith transfer target
For all your latest AVFC news, opinion, analysis and transfer gossip, click here
You can follow our Villa reporter Ashley Preece on Twitter, and his email address is<EMAIL_ADDRESS>“You need to be quick, especially playing against some of these players and it’s going to be difficult, you’re going to have difficult times but he’s handled himself well.
“Not only that, he’s got himself forward, he’s been involved in the attacking play as well. He looks very good, he looks like a good player that’s come in and done well. Hopefully, he can build on that, continue to play well and go from strength to strength. I really like him as a player.”
Guilbert is walking a disciplinary tightrope in the coming weeks. After picking up his fourth booking of the season in the defeat at Wolves, he must now navigate the next seven fixtures without picking up a card, if he is to avoid a one-match ban.
It is an area of game that will be pinpointed for improvement, the 24-year-old has picked up a staggering 25 cautions since the start of the 2017/18 season.


Returns
ZIGFO TECHNOLOGY PRIVATE LIMITED does not accept returns if the product packaging has been
tampered with, opened or if the products have been used. If however, the packaging is still intact
and is in the same condition as it was when you received the product, you may contact us for a
return. Note that you will have to return the order items within 3 day of receiving the products.
Please keep in mind that we can only process a full refund of the order once it has reached us and
we have examined the returned goods. It usually takes 2-7 working days for products to reach us.
Refunds
Once your return is received and inspected, we will send you an email to notify you that we have
received your returned item. We will also notify you of the approval or rejection of your refund.
If you are approved, then your refund will be processed, and a credit will automatically be applied to
your credit card or original method of payment, within a certain amount of days.
Duration of Refund: The process of a refund generally takes 7-10 working days.
Mode of Refund: Your refund will be made in form of a bank NEFT transfer directly into your bank
account.
Late or missing refunds: If you haven’t received a refund yet, first check your bank account again.
Then contact your credit card company, it may take some time before your refund is officially
posted. Next contact your bank. There is often some processing time before a refund is posted. If
you’ve done all of this and you still have not received your refund yet, please contact us at
<EMAIL_ADDRESS>Note: Please also note that for any custom made garments we can’t take return and / or process for
any refund.
Cancellations
Please note that you can cancel your order within 24 hours of placing your order.
Exceptions: If you have confirmed your order and cancel it after we have processed for
customisation and manufacturing or / and sent it through one of our courier partners, it will be
difficult for us to cancel the order. In such a case we will have to discuss processing a refund (if
already paid) or cancelling the order only once we have received a return shipment of the products
in your order.
ZIGFO will cancel your order only under the following circumstances:
Product not available or out of stock: If a particular item in an order is not in stock and it is
one that you want and we fail to provide an alternate option (such as bigger/smaller size of
the same product or similar product) then we will cancel your order or have it altered to
remove the unavailable item in the order. Note that if all the products in the order are out of
stock or unavailable for sale, and if no alternatives are available, we will cancel your order
and process a refund immediately (if paid already) and convey the same to you.
Please note that an order once cancelled can be made again once stock is procured and we
will be informing you about all possible ways, wait times and any other relevant information
in order for you to get all the products in your order.
No confirmation or any communication from customer for COD orders: ZIGFO team reserves
a right to cancel orders that are COD for which we have received no confirmation. Once we
get a COD order, we call the customer to confirm the same and if the customer has given a
wrong number or we can't get through the customer despite trying their number & email a
maximum of 3 times, we are left with no choice but to cancel the order.
Location not serviceable: ZIGFO will cancel your order if your shipping address is not
serviceable by any of our courier partners. Please note, that if you are an International
customer, you ought to drop in an email at<EMAIL_ADDRESS>confirming whether we will be
able to send you the items along with rough time estimates as to when it may reach you.
Any other Reason: ZIGFO may need to cancel your order for other reasons depending on the
circumstances and thus reserves the right to discretion as and when said unforeseeable
circumstance happens.
Sale items - Only regular priced items may be refunded, unfortunately sale items cannot be
refunded.
Exchanges
We only replace items if they are defective or damaged. If you need to exchange it for the same
item, send us an email at<EMAIL_ADDRESS>and send your item to: #301, SMR Vinay Endeavour, Hoodi
Circle, Whitefield Road, Bangalore-560048, India.
Shipping - To return your product, you should mail your product to: #301, SMR Vinay
Endeavour, Hoodi Circle, Whitefield Road, Bangalore-560048, Karnataka, India.
You will be responsible for paying for your own shipping costs for returning your
item. Shipping costs are non-refundable. If you receive a refund, the cost of return
shipping will be deducted from your refund.
Depending on where you live, the time it may take for your exchanged product to
reach you, may vary.
If you are shipping an item over Rs.2000/- you should consider using a trackable
shipping service or purchasing shipping insurance. We don’t guarantee that we will
receive your returned item.