AIPTEK
Section: Devices and Network Interfaces (4)Updated: xf86-input-aiptek 1.4.1
Index Return to Main Contents
NAME
aiptek - Aiptek USB Digital Tablet Input Driver for LinuxSYNOPSIS
Section N'34'InputDeviceN'34' Identifier N'34'idevnameN'34' Driver N'34'aiptekN'34' Option N'34'DeviceN'34' N'34'devpathN'34' ... EndSection
DESCRIPTION
aiptek is an Xorg input driver for Aiptek HyperPen USB-based tablet devices. This driver only supports the USB protocol, and only under Linux; for RS-232C-based HyperPens, please see the "hyperpen" driver.The aiptek driver functions as a pointer input device, and may be used as the X server's core pointer.
SUPPORTED HARDWARE
This driver supports the Aiptek HyperPen 4000U, 5000U, 6000U, 8000U and 12000U USB-based input tablet on some Linux platforms.CONFIGURATION DETAILS
Please refer to xorg.conf(5) for general configuration details and for options that can be used with all input drivers. This section only covers configuration details specific to this driver.Multiple instances of the Aiptek devices can cohabit. It can be useful to define multiple devices with different active zones. Each device supports the following entries:
-
- Option Type stylus|eraser|cursor
- sets the type of tool the device represent. This option is mandatory.
- Option Device path
- sets the path to the special file which represents serial line where the tablet is plugged. You have to specify it for each subsection with the same value if you want to have multiple devices with the same tablet. This option is mandatory.
- Option USB on
- specifies that you are using the USB bus to communicate with your tablet. This setting is mandatory, as USB is the only protocol supported by this driver.
- Option DeviceName name
- sets the name of the X device.
- Option Mode Relative|Absolute
- sets the mode of the device.
- Option HistorySize number
- sets the motion history size. By default the value is zero.
- Option AlwaysCore on
- enables the sharing of the core pointer. When this feature is enabled, the device will take control of the core pointer (and thus will emit core events) and at the same time will be able, when asked so, to report extended events. You can use the last available integer feedback to control this feature. When the value of the feedback is zero, the feature is disabled. The feature is enabled for any other value.
- Option XTop number
- First of three sets of parameters to set the active zone. This sets the X coordinate of the top corner of the active zone. "TopX" is a synonym.
- Option YTop number
- First of three sets of parameters to set the active zone. This sets the Y coordinate of the top corner of the active zone. "TopY" is a synonym.
- Option XBottom Inumber
- First of three sets of parameters to set the active zone. This sets the X coordinate of the bottom corner of the active zone. "BottomX" is a synonym.
- Option YBottom number
- First of three sets of parameters to set the active zone. This sets the Y coordinate of the bottom corner of the active zone. "BottomY" is a synonym.
- Option XMax number
- Second of three sets of parameters to set the active zone. This sets the the X coordinate of the bottom corner of the active zone. The Top X corner's coordinate is fixed at 0. "MaxX" is a synonym.
- Option YMax number
- Second of three sets of parameters to set the active zone. This sets the the Y coordinate of the bottom corner of the active zone. The Top Y corner's coordinate is fixed at 0. "MaxY" is a synonym.
- Option XOffset number
- Third of three sets of parameters to set the active zone. This sets the X coordinate of the top corner of the active zone. "OffsetX" is a synonym.
- Option YOffset number
- Third of three sets of parameters to set the active zone. This sets the Y coordinate of the top corner of the active zone. "OffsetY" is a synonym.
- Option XSize number
- Third of three sets of parameters to set the active zone. This sets the X coordinate of the bottom corner of the active zone. Unlike others, this parameter is expressed in relative coordinates from the "XOffset" parameter. "XSize" is a synonym.
- Option YSize number
- Third of three sets of parameters to set the active zone. This sets the Y coordinate of the bottom corner of the active zone. Unlike others, this parameter is expressed in relative coordinates from the "YOffset" parameter. "YSize" is a synonym.
- Option ZMin number
- Minimum pressure reading that will be accepted from the Stylus tool. "MinZ" is a synonym.
- Option ZMax number
- Maximum pressure reading that will be accepted from the Stylus tool. "MaxZ" is a synonym.
- Option XThreshold number
- Minimal change in X coordinate position that will be accepted as data input. "ThresholdX" is a synonym.
- Option YThreshold number
- Minimal change in Y coordinate position that will be accepted as data input. "ThresholdY" is a synonym.
- Option ZThreshold number
- Minimal change in pressure reading that will be accepted as data input. "ThresholdZ" is a synonym.
- Option InvX on
- Inverts X coordinate reports. "XInv" is a synonym.
- Option InvY on
- Inverts Y coordinate reports. "YInv" is a synonym.
- Option Pressure soft|hard|linear
- Pressure reports either delivered in linearly incremental values (default), or perturbed by one of two log-linear algorithms ("soft" or "hard".)
- Option KeepShape on
- When this option is enabled, the active zone begins according to TopX and TopY. The bottom corner is adjusted to keep the ratio width/height of the active zone the same as the screen while maximizing the area described by the active area set of parameters, XTop/YTop/XBottom/YBottom, XMax/YMax, or XOffset/YOffset/XSize/YSize.
- Option DebugLevel number
- sets the level of debugging info reported.
This driver is currently Linux specific.
SEE ALSO
Xorg(1), xorg.conf(5), Xserver(1), X(7), hyperpen(4).AUTHORS
Bryan W. Headley<EMAIL_ADDRESS>PAGE
http://aiptektablet.sourceforge.net tracks ongoing development of this driver, the Linux kernel driver, and a GUI front-end application that works in concert with the above.
Index
This document was created by man2html, using the manual pages.
Time: 05:33:53 GMT, December 24, 2015


Apple Watch Step Counter
Apple Watch Step Counter
One of things I’ve found missing from the Apple Watch is the ability to display your steps for the day. The Apple Watch does have the ring system - something that I’ve found to be generally better than the Garmin system as Garmin only tracks intensity minutes and steps but occasionally it’s nice to check my step count for the day. After all, the watch tracks the steps you take during the day, it seems odd that it doesn’t display it.
Even though 10,000 steps a day has been taken from a marketing campaign back in the 60’s, I find it gives me more of an idea of my daily activity than rings. After all, I can clear my daily activity ring in a day without to much trouble thanks to my cycle to work and I can clear my stand goal - but only by travelling from my desk to the kitchen and back during the day!
Therefore, even though I believe the intensity minutes of the Garmin is a better measurement (it takes in to account cycling after all!), I’ve wanted to be able to display my steps on my watch. Sure, I could dig in to my Health app on my phone but that’s not at a glance.
I’d looked around for a complication that would display this on my watch for me. Unfortunately, Apple requires you to search for apps, rather than for individual complications so I had to trawl through a few.
Which is where Duffy comes in.
Duffy - Steps Complication
Duffy does one thing and does one thing well. It allows you to create a complication on your Apple Watch. It also has a companion iPhone app which allows you to display the steps in a graph form and in a graph showing you the steps throughout the day.
It can also display the steps taken over the previous days. This is displayed as line graph. The Apple Health app can obviously display this information as well, this is displayed as a bar chart, rather than a line graph. In fairness, the Health app is probably technically correct (as daily step counts is discrete data).
However, the big reason for installing the app is to view the step count on the watch itself, and it does this by creating a complication. I’ve not tried it with every watch face, but it works nicely with my daily watch face.
As you can see, I’ve added the complication to the bottom left of the watch face. It shows my step count as a progress bar towards the amount of steps for the day (you set the goal in the Duffy watch app) and the number of steps taken.
This allows to see at a glance your steps. I’m not sure how often it updates, but it isn’t quite a realtime display of your steps and it can be refreshed by touching it.
The internal accelerometer of the Apple Watch tracks the steps and Duffy just displays these. The total can be seen within the Apple Health app at any time, and is combined with those on the phone.
If you want to view your steps on the Apple Watch, Duffy provides and easy method of doing so.
Conclusion
Even though steps aren’t really a valid method of measuring activity throughout the day, if you want to view it on your watch at a glance, you’re out of luck without using a third party tool like Duffy.
I’ve had no issues with it to date, and I’ve not noticed any significant or even any changes to my battery life, so it seems to perform as it should. I imagine that as it’s not updating constantly, this helps to keep the battery consumption to a minimum.


The kobold takes a swing, and hits you for 8 damage!
The kobold stabs, but misses.
The kobold lunges and hits for 7 damage!
The kobold swings and misses.
The kobold slashes and near-misses.
The kobold hits you for 8 damage!
The kobold hits you for 8 damage!
The kobold hits you for 8 damage!
The kobold hits you for 8 damage!
The kobold hits you for 8 damage!


HttpRpcGET |
Marks a function function of an @HttpRpcResource annotated interface to be exposed as a GET endpoint by the HTTP RPC generated web service. annotation class HttpRpcGET |
HttpRpcPathParameter |
Marks a function parameter of a function annotated with @HttpRpcGET or @HttpRpcPOST as a path parameter. annotation class HttpRpcPathParameter |
HttpRpcPOST |
Marks a function of an @HttpRpcResource annotated interface to be exposed as a POST endpoint by the HTTP RPC generated web service. annotation class HttpRpcPOST |
HttpRpcQueryParameter |
Marks a function parameter of a function annotated with @HttpRpcGET or @HttpRpcPOST as a query parameter. annotation class HttpRpcQueryParameter |
HttpRpcRequestBodyParameter |
Marks a function parameter of an @HttpRpcPOST annotated function as a nested body parameter of the top-level json object. annotation class HttpRpcRequestBodyParameter |
HttpRpcResource |
Marks an interface extending RPCOps to be exposed as an HTTP resource. The selected implementation to expose will be the same as for normal RPC. annotation class HttpRpcResource |
kotlin.Annotation |


I'm Diana Kerubo,Age 22 born in Nairobi,Kenya in the year 1999.Raised in Nairobi I was able to attend Kahawa Garrison Primary School for my lower learing,Kijabe Girls Highschool for my middle learing and for my higher learning I have a diploma in Business Administration from Cooperative University
Position : Intern Accountant
Position : Sales Executive
For me this is my cute well written facts My story
You know that feeling you get before a school trip or that feeling before Christmas, I get the same feeling when I play vedio games or when I think of a game I can create. With this feeling I went on a search to learn how to make games online through Google and Youtube.With no knowledge about coding it was tricky and this was my big blocker.On a fine day a friend of mine was talking about Moringa Schooland how they are the best in teaching coding.I went quckly to apply ,thats how i was accepted by the Scholarship programme.
First Week Project -The project is about the band called H_art The Band ,it is a short bio page of the members and their music.click to view more
Languages used -HTML ,CSS
Anitas-Kitchen -The website presents the menue for delisious food and drinks
Languages used -HTML ,CSS


This lab module will walk you through connecting the components to test the operation of the dispenser without having to build the entire dispenser at this time.
By the end of this module you will:
Building the dispenser takes up a lot of room. For now, just remove the parts mentioned below and leave the rest in the zip-top bag. Promise: you will build the entire dispenser!
The LED Ring is controlled by the microprocessor, and is used to display the status of the overall application. It is powered and controlled by the microcontroller and the firmware you will compile and flash.
The Controller Board serves a few functions.
Follow each step in order and use the Click to open for detailed step-by-step instructions if required.
Take these five components from the zip-top bag (you should already have the ESP32 microcontroller and USB cable out from earlier testing):
Install the LED Ring into the WS2812
3-pin connector on the back Controller Board with the tab aligned with the connector slot. Turn over the Controller Board and attach the 9 Volt battery lead.
Align the microcontroller to the dual inline socket on the other side of the Controller Board, aligning the large metal square package over the 9 Volt battery extending out from the controller board. Make sure all pins on the ESP32 are aligned with the socket, the pin tips slightly inserted, then gently insert until all the way in.
It is very easy to accidentally bend the pins on the microcontroller. Turn over the Controller Board with the socket facing up, and then with your other hand gently position the microcontroller pins into the holes. Once all are in place, gently apply pressure equally (center of microcontroller works best) to insert all the way in. If you accidentally install backwards, place a finger underneath one end of the microcontroller and apply pressure to lift slightly. The do the same on the other end and alternate back and forth until the microcontroller is out of the socket.
Insert the USB cable’s Micro USB connector end into the microcontroller, and the Type-A connector into your laptop. The red LED on the microcontroller indicates power, and the Ring LED may light up, but if it doesn’t, that is okay. Next, check that the serial port tested in the Laptop Setup module is there. Use the serial monitoring software to connect to the serial port. Press the button to the left of the USB connection (reset) and verify that you see text scrolling in the serial monitor window after each press. Exit your monitoring software.
A Micro USB to Type-A cable is provided as part of the kit. If your laptop only has Type-C connector and you have a Micro USB to Type-C cable, make sure that it supports both power and data connections. The workshop presenter may have Micro USB to Type-C cables to loan out.
If after connecting the microcontroller, the controller board, and the LED, you get errors about insufficient power or the red LED doesn’t not stay lit, your laptop or USB adapter may not be able to provide sufficient power. In that case, remove the microcontroller and connect a 9 volt battery to the controller board. It is connector under the microcontroller and not the one on the back next to LED Ring connector.
Please ensure the following checkpoints are validated before moving on to the next module.
screen
(CTRL-a CTRL-\
, the y
).Why are we only installing a few pieces of the entire dispenser instead of building it now?
When doing embedded software development, it is easier to work first with a microcontroller development kit and the accessories you will be controlling. Normally this would be done with a breadboard or some other development kit (devkit). However, for those that are not familiar with that process, using the minimum pieces now will allow us to incrementally test the system up to the final build of the dispenser.


|
NeuralSharp
1.0
NeuralSharp is a FOSS C# library for neural networks.
|
Represents a neural network which works on images. More...
Inherits Sequential< Image, IImagesLayer, IError< Image >>, and NeuralSharp.Convolutional.IImagesLayer.
Public Member Functions | |
| PurelyConvolutionalNN (ICollection< IImagesLayer > layers, bool createIO=true) | |
| Creates an instance of the More... | |
| override void | Feed (Image input, Image output, bool learning=false) |
| Feeds the layer forward. More... | |
| override void | BackPropagate (Image outputError, bool learning=true) |
| Backpropagates the given error trough the network. More... | |
| override void | BackPropagate (Image outputError, Image inputError, bool learning) |
| Backpropagates the given error trough the network. More... | |
| override float | GetError (Image output, Image expectedOutput, Image error, IError< Image > errorFunction) |
| Gets the error of the network. More... | |
| override float | FeedAndGetError (Image input, Image expectedOutput, Image error, IError< Image > errorFunction, bool learning) |
| Feeds the network forward and gets its error. More... | |
| override ILayer< Image, Image > | CreateSiamese () |
| Creates a siamese of the network. More... | |
| override ILayer< Image, Image > | Clone () |
| Creates a clone of the network. More... | |
| override void | SetInputAndOutput (Image input, Image output) |
| Sets the input image and the output image of the network. More... | |
| override Image | SetInputGetOutput (Image input) |
| Sets the input image of the network and creates and sets an output image. More... | |
| Public Member Functions inherited from NeuralSharp.ILayer< Image, Image > | |
| int | CountParameters (List< object > siameseIDs) |
| Counts the amount of parameters of the layer. More... | |
| void | Feed (bool learning=false) |
| Feeds the layer forward. More... | |
| void | UpdateWeights (float rate, float momentum=0.0F) |
| Updates the weights of the layer. More... | |
| void | BackPropagate (TOut outputError, TIn inputError, bool learning) |
| Backpropagates the given error trough the layer. More... | |
| void | SetInputAndOutput (TIn input, TOut output) |
| Sets the input object and the output object of the layer. More... | |
| TOut | SetInputGetOutput (TIn input) |
| Sets the input object of the layer and creates and sets the output object. More... | |
| ILayer< TIn, TOut > | CreateSiamese () |
| Creates a siamese of the layer. More... | |
| ILayer< TIn, TOut > | Clone () |
| Clones the layer. More... | |
Protected Member Functions | |
| PurelyConvolutionalNN (PurelyConvolutionalNN original, bool siamese) | |
| Either creates a siamese of the given More... | |
| override Image | NewError () |
| Create an object which can be used as output error. More... | |
| override void | AddTopLayer (IImagesLayer layer) |
| Adds a top layer. More... | |
| override void | AddBottomLayer (IImagesLayer layer) |
| Adds a bottom layer. More... | |
Properties | |
| int | InputDepth [get] |
| The depth of the input. More... | |
| int | InputWidth [get] |
| The width of the input. More... | |
| int | InputHeight [get] |
| The height of the input. More... | |
| int | OutputDepth [get] |
| The depth of the output. More... | |
| int | OutputWidth [get] |
| The width of the output. More... | |
| int | OutputHeight [get] |
| The height of the output. More... | |
| bool | LayersConnected [get] |
| Whether the layers are connected. More... | |
| Properties inherited from NeuralSharp.Convolutional.IImagesLayer | |
| int | InputDepth [get] |
| The depth of the input of the layer. More... | |
| int | InputWidth [get] |
| The width of the input of the layer. More... | |
| int | InputHeight [get] |
| The height of the input of the layer. More... | |
| int | OutputDepth [get] |
| The depth of the output of the layer. More... | |
| int | OutputWidth [get] |
| The width of the output of the layer. More... | |
| int | OutputHeight [get] |
| The height of the output of the layer. More... | |
| Properties inherited from NeuralSharp.ILayer< Image, Image > | |
| TIn | Input [get] |
| The input object of the layer. More... | |
| TOut | Output [get] |
| The output object. More... | |
| int | Parameters [get] |
| The amount of parameters of the layer. More... | |
| object | SiameseID [get] |
| The siamese identifier of the layer. More... | |
Represents a neural network which works on images.
|
protected |
Either creates a siamese of the given
PurelyConvolutionalNN
class or clones it.
| original | The original instance to be created a siamese of or cloned. |
| siamese | true false |
| NeuralSharp.Convolutional.PurelyConvolutionalNN.PurelyConvolutionalNN | ( | ICollection< IImagesLayer > | layers, |
| bool | createIO = true |
||
| ) |
Creates an instance of the
PurelyConvolutionalNN
class.
| layers | The layers of the network. |
| createIO | Whether the input image and the output image of the network are to be created. |
|
protected |
Adds a bottom layer.
| layer | The layer to be added. |
|
protected |
Adds a top layer.
| layer | The layer to be added. |
| override void NeuralSharp.Convolutional.PurelyConvolutionalNN.BackPropagate | ( | Image | outputError, |
| bool | learning = true |
||
| ) |
Backpropagates the given error trough the network.
| outputError | The error to be backpropagated. |
| learning | Whether the layer is being used in a training session. |
| override void NeuralSharp.Convolutional.PurelyConvolutionalNN.BackPropagate | ( | Image | outputError, |
| Image | inputError, | ||
| bool | learning | ||
| ) |
Backpropagates the given error trough the network.
| outputError | The output error to be backpropagated. |
| inputError | The image to be written the input into. |
| learning | Whether the layer is being used in a training session. |
Creates a clone of the network.
Creates a siamese of the network.
| override void NeuralSharp.Convolutional.PurelyConvolutionalNN.Feed | ( | Image | input, |
| Image | output, | ||
| bool | learning = false |
||
| ) |
Feeds the layer forward.
| input | The image to be copied the input from. |
| output | The image to be copied the output into. |
| learning | Whether the layer is being used in a training session. |
| override float NeuralSharp.Convolutional.PurelyConvolutionalNN.FeedAndGetError | ( | Image | input, |
| Image | expectedOutput, | ||
| Image | error, | ||
| IError< Image > | errorFunction, | ||
| bool | learning | ||
| ) |
Feeds the network forward and gets its error.
| input | The image to be copied the input from. |
| expectedOutput | The expected output of the network. |
| error | The image to be written the error into. |
| errorFunction | The error function to be used. |
| learning | Whether the network is being used in a training session. |
| override float NeuralSharp.Convolutional.PurelyConvolutionalNN.GetError | ( | Image | output, |
| Image | expectedOutput, | ||
| Image | error, | ||
| IError< Image > | errorFunction | ||
| ) |
Gets the error of the network.
| output | The actual output. |
| expectedOutput | The expected output. |
| error | The image to be written the output error into. |
| errorFunction | The error function to be used. |
|
protected |
Create an object which can be used as output error.
| override void NeuralSharp.Convolutional.PurelyConvolutionalNN.SetInputAndOutput | ( | Image | input, |
| Image | output | ||
| ) |
Sets the input image and the output image of the network.
| input | The input to be set. |
| output | The output image to be set. |
Sets the input image of the network and creates and sets an output image.
| input | The input image to be set. |
|
get |
The depth of the input.
|
get |
The height of the input.
|
get |
The width of the input.
|
get |
Whether the layers are connected.
|
get |
The depth of the output.
|
get |
The height of the output.
|
get |
The width of the output.


Download and install R packages stored in 'GitHub',
'BitBucket', or plain 'subversion' or 'git' repositories. This package
is a lightweight replacement of the 'install_*' functions in 'devtools'.
Indeed most of the code was copied over from 'devtools'.
| Version: |
2.0.2 |
| Depends: |
R (≥ 3.0.0) |
| Imports: |
methods, utils |
| Suggests: |
curl, covr, git2r (≥ 0.23.0), knitr, mockery, pkgbuild (≥
1.0.1), pingr, rmarkdown, testthat, withr |
| Published: |
2018-10-30 |
| Author: |
Gábor Csárdi [aut, cre],
Hadley Wickham [aut],
Winston Chang [aut],
Jim Hester [aut],
RStudio [cph],
Martin Morgan [aut],
Dan Tenenbaum [aut],
Mango Solutions [cph] |
| Maintainer: |
Gábor Csárdi <csardi.gabor at gmail.com> |
| BugReports: |
https://github.com/r-lib/remotes/issues |
| License: |
GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| URL: |
https://github.com/r-lib/remotes#readme |
| NeedsCompilation: |
no |
| SystemRequirements: |
Subversion for install_svn, git for install_git |
| Materials: |
README NEWS |
| CRAN checks: |
remotes results |


A simple calendar app for scheduling your work day
| Time | List | Save |
|---|---|---|
9 am |
||
10 am |
||
11 am |
||
12 pm |
||
1 pm |
||
2 pm |
||
3 pm |
||
4 pm |
||
5 pm |


I'm happy to release Outbrain's Propagator as open source. Propagator is a schema & data deployment tool which makes it easy to deploy, review, audit & fix deployments to your database servers.
What does multi-everything mean? It is:
- Multi-server: push your schema & data changes to multiple instances in parallel
- Multi-role: different servers have different schemas
- Multi-environment: recognizes the differences between development, QA, build & production servers
- Multi-technology: supports MySQL, Hive (Cassandra on the TODO list)
- Multi-user: allows users authenticated and audited access
- Multi-planetary: TODO
With dozens of database servers in our company (and these are master database servers), from development machines to testing machines, through build machines to production servers, and with a growing team of over 70 engineers, we faced the growing problem of controlling our database schema evolution. Controlling creation of tables, columns, keys, foreign keys; controlling creation of data that must be consistent across all servers became an infeasible task. Some changes were lost; some servers forgotten along the way, and inconsistencies blocked our development & deployments again and again.
We have reviewed schema-versioning tools (e.g. FlywayDB and Liquibase) only to conclude they solve a fraction of the problem. We looked at some GUI tools that promise to deliver the solution, but frankly any Windows Desktop GUI application is by definition the wrong tool for the job, and not (only) because of the "Windows" part.
Not all deployments are the same. Not all servers are the same. You don't ALTER a big table on production. You may be using different schema names on different servers. You may have multiple schemas on a single server with identical structure. You may wish to only deploy to some development servers, possibly to a test server, but not to all, and yet be able to pick up on where you left a few days later on to complete your deployment. Some deployments fail, and for various reasons (e.g. John created that table manually on this particular test server, so obviously you can't CREATE it again), and you want to be able to skip it, or mark it as "OK", or put some comments, or hint that you need assistance from a DBA. You want to be able to quickly add new servers to your deployment group.
 You want to know exactly who did what and when. If their deployment failed, you want to know that. You want to know why it failed. You want to be able to pick up and try it again, after your DBA found the problem. You want to be able to review yesterday's deployments, and be able to contact Jane and say "hey, I see you hit a problem here; I know what the problem is; you should do this and that, then please try to deploy again".
There's so much more, but I'll stop telling you what you want to have, since there's a good manual available.
This is how Propagator came to be. For the past three months it has been in production use at our company. Our engineers used it to deploy hundreds of schema and data changes, and provided with tons of feedback in the form of bug reports, feature requests and general hints on easy of use and expected behaviour.
My company, Outbrain, is a strong supporter of open source, and we mutually agreed that this would make for a good open source solution. My company provided me with the resources and patience to polish it to the level of an open source release: a fully featured, stable, documented, visually appealing product.
Propagator is available on GitHub and is released under the Apache 2.0 license.
Some technical details
Propagator is a PHP application, running on top Apache. It uses MySQL as backend for maintaining both internal data (instances, ports, roles, ...) as well as deployments status. On the frontend it uses Twitter Bootstrap, jQuery and all the usual suspects.
It is loosely forked off from Anemometer (get to know Anemometer if you haven't already).
Setting it up
It's mostly an "extract to apache, configure database access, put in some initial data" setup. There is some time to dwell on "putting the initial data". Which servers you have? What environments? What kind of roles you have? You'll need to set this up first.
The following are screenshots from the sample-phpunit-database. I can't provide with a screenshot from our internal production service, but you can get the general picture.
Propagator is one of the tools discussed in my upcoming talk at Percona Live: MySQL DevOps @ Outbrain
comments powered by Disqus


|
Wx
1.0.0
Windows API Extensions
|
Miscellaneous Windows support functions. More...
Classes | |
| class | ComInitializer |
| A class that initializes COM while it is in scope. More... | |
| class | DeviceContext |
| A windows device context (DC) wrapper. More... | |
| class | Win32ErrorException |
| An exception to throw when a Win32 function returns a failure. More... | |
Typedefs | |
| using | MessageLoopIdleCallback = bool(*)(HWND hWnd) |
| Idle function for MessageLoop(). More... | |
Functions | |
| int | MessageLoop (HWND hWnd, MessageLoopIdleCallback pCB) |
| This function waits for messages and dispatches them. More... | |
| ATOM | RegisterWindowClass (UINT style, WNDPROC lpfnWndProc, HINSTANCE hInstance, LPCTSTR lpszClassName, HCURSOR hCursor=NULL, HBRUSH hbrBackground=NULL, HICON hIcon=NULL, HICON hIconSm=NULL, LPCTSTR lpszMenuName=NULL, int cbClsExtra=0, int cbWndExtra=0) |
| Registers a window class. More... | |
Debugging Functions | |
| void | DumpDeviceCaps (HDC hDC) |
| Dumps the device's caps to the debugger output window. More... | |
| template<typename T > | |
| ULONG | GetReferenceCount (T *pObject) |
| Returns the COM object's current reference count. More... | |
Other Miscellaneous | |
| template<typename T > | |
| void | SafeRelease (T *&pObject) |
| Releases a COM object and resets the pointer to NULL. More... | |
Miscellaneous Windows support functions.
| using Wx::MessageLoopIdleCallback = typedef bool (*)(HWND hWnd) |
Idle function for MessageLoop().
This function is is a parameter to MessageLoop() and is called whenever the message queue is empty. If it returns true, then it will be called again immediately if the message queue is empty. If it returns false, it will not be called until a message has been processed and the queue is empty again.
| hWnd | Window handle |
| void Wx::DumpDeviceCaps | ( | HDC | hDC | ) |
Dumps the device's caps to the debugger output window.
| hDC | Device context |
| ULONG Wx::GetReferenceCount | ( | T * | pObject | ) |
Returns the COM object's current reference count.
| pObject | COM object pointer |
| int Wx::MessageLoop | ( | HWND | hWnd, |
| MessageLoopIdleCallback | pCB | ||
| ) |
This function waits for messages and dispatches them.
Standard windows message loop. Returns the value in the WM_QUIT message.
It does not return until a WM_QUIT message is received. If an idle function is supplied, the idle function is called rather than waiting for a message when there are none to be processed.
| hWnd | Window handle |
| pCB | The address of the idle function to be called when there are no messages to process, or 0. |
| ATOM Wx::RegisterWindowClass | ( | UINT | style, |
| WNDPROC | lpfnWndProc, | ||
| HINSTANCE | hInstance, | ||
| LPCTSTR | lpszClassName, | ||
| HCURSOR | hCursor, | ||
| HBRUSH | hbrBackground, | ||
| HICON | hIcon, | ||
| HICON | hIconSm, | ||
| LPCTSTR | lpszMenuName, | ||
| int | cbClsExtra, | ||
| int | cbWndExtra | ||
| ) |
Registers a window class.
| all | See the documentation for WNDCLASSEX for the meaning of each parameter. |
| void Wx::SafeRelease | ( | T *& | pObject | ) |
Releases a COM object and resets the pointer to NULL.
| pObject | COM object pointer |


Metanol version history
Metanol is part of
ĐTools project
. You can check for the newest version at
ĐTools project page
.


FLESH FEAST aka TIME IS TERROR
USA. 1970. Director - Brad F. Grinter, Screenplay - Grinter & Thomas Casey, Producers - Grinter & Veronica Lake, Photography - Casey, Special Effects - Douglas Hobart, Makeup - Gayl Doucette & Bill Rogers, Art Direction - Harry Kerwin. Production Company - Viking International. Veronica Lake (Dr Elaine Frederick), Phil Philbin (Ed Casey), Heather Hughes (Kristine Powell)
Plot: When a journalist is murdered while following an arms dealer, his editor Ed Casey follows the trail to Dr Elaine Frederick who is secretly conducting age rejuvenation experiments using flesh-eating maggots. Gradually Casey discovers that her backers are really Nazis and her intended test subject Adolf Hitler himself.
Veronica Lake, currently enjoying a revival of memory thanks to `L.A. Confidential', was one of the great cinematic beauties of the 1940s. After that decade though she fairly much faded from sight. `Flesh Feast' was her comeback after nearly twenty years and her last film before her death in 1973. It is anybody's guess what possessed Lake to choose such a dire and impoverished production for a comeback. In it she looks sad and aged - the film shoots her unglamorously and shows none of her former beauty. The climax of the film does offer the mildly fascinating spectacle of her going bonkers and laughing her head off like a maniac - it's sort of like one of the films that were the in-thing for awhile in the 1960s after the popularity of `What Ever Happened to Baby Jane ?' featuring aged stars going batty, but it comes without the layer of self-conscious freakshow appeal. The film is really dire. It has clearly been shot in someone's house where guest bedrooms double as hospital wards. The laboratory consists of a bench with two straps, an oxygen cylinder and two pieces of radio equipment. The whole film hangs on its twist ending - the revelation that the secret benefactor of Lake's flesh-eating maggot rejuvenation treatment is Adolf Hitler - but even though the film was the first to use such a twist, by the time it did it felt old hat. Sad.
Screening at the Christchurch 1998 Incredibly Strange Film Festival Reviewed by Richard Scheib
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


{% extends "issues/base.html" %}
{% block content %}
{% if my_open_issues %}
{% include "issues/issue/partials/table_header.html" %}
{% for issue in my_open_issues %}
{% include "issues/issue/partials/row.html" %}
{% endfor %}
{% endif %}
{% include "issues/issue/partials/table_header.html" %}
{% for issue in contract.get_open_issues %}
{% include "issues/issue/partials/row.html" %}
{% endfor %}
{% include "issues/issue/partials/table_header.html" %}
{% for issue in contract.get_open_issues %}
{% include "issues/issue/partials/row.html" %}
{% endfor %}
{% endblock %}


"Water is the most critical resource issue of our lifetime and our children’s lifetime. The health of our waters is the principal measure of how we live on the land."
Why conserve Water?
Over 900 happy clients, and we learn something new from each one.
Administration? Fun? Yea, somehow we make it happen.
Innovative solutions to the trickest of everyday tasks.


Home
Doc
About
TensorFlow Project
Multiple object detection
Multiple object detection using pre trained model in TensorFlow.js.


We received a request to unsubscribe this email account from HN Notifications. Please use the link below to remove your subscription
Unsubscribe


Peahi also known as Jaws and is located on the northshore of Maui. .
Some representative placeholder content for the second slide.
Some representative placeholder content for the third slide.


NOTICE
This product is based on or uses the following copyrighted materials released under their respective licenses.
based on idea-markdown - markdown plugin for IntelliJ products
Copyright 2011-2014 Julien Nicoulaud https://github.com/nicoulaj/idea-markdown
http://www.apache.org/licenses/LICENSE-2.0This software includes code from IntelliJ IDEA Community Edition
Copyright (C) JetBrains s.r.o.
https://www.jetbrains.com/idea/parts based on code from IntelliJ IDEA open source Plugins
Copyright (C) JetBrains s.r.o.
https://github.com/vsch/intellij-pluginsincludes highlight.js
Copyright (c) 2006, Ivan Sagalaev, https://github.com/isagalaev/highlight.js
https://github.com/isagalaev/highlight.js/blob/master/LICENSEincludes asm-all-4.1.jar
Copyright (c) 2012 France Télécom, All rights reserved.
http://asm.ow2.org/asmdex-license.htmlparts based on https://github.com/sindresorhus/github-markdown-css
Copyright (c) 2014-2015 Sindre Sorhus http://sindresorhus.com
https://opensource.org/licenses/MITparts based on gfm-plugin
Copyright (c) 2015 shyyko.serhiy https://github.com/ShyykoSerhiy/gfm-plugin
https://opensource.org/licenses/MITparts based on intellij-plugin-copy-and-open-github-url
Copyright 2013 Square, Inc. https://github.com/jawspeak/intellij-plugin-copy-and-open-github-url
No license information providedparts based on LanguageTextField
Copyright 2006 Sascha Weinreuter
http://www.apache.org/licenses/LICENSE-2.0includes Apache Commons IO software developed by
Copyright 2002-2012 The Apache Software Foundation
The Apache Software Foundation (http://www.apache.org/).
http://www.apache.org/licenses/LICENSE-2.0includes Apache Commons Validator software developed by
Copyright 2001-2014 The Apache Software Foundation
The Apache Software Foundation (http://www.apache.org/).
http://www.apache.org/licenses/LICENSE-2.0includes pegdown - A pure-Java Markdown processor based on a parboiled PEG parser supporting a number of extensions
Copyright (C) 2010-2015 Mathias Doenitz (http://pegdown.org)
http://www.apache.org/licenses/LICENSE-2.0based on peg-markdown - markdown in c, implemented using PEG grammar
Copyright (c) 2008 John MacFarlane (http://github.com/jgm/peg-markdown)


Eddie Valiant: You mean you could've taken your hand out of that cuff at any time?
Roger Rabbit: No, not at any time, only when it was funny.
Roger Rabbit: No, not at any time, only when it was funny.
Simply put, a character is tied up by the enemy for whatever purpose, and when the most dramatic (or the most humorously opportune) moment arises, reveals that they slipped out of their ropes ages ago. Can also be done with handcuffs. Often done to indicate an Escape Artist.
A variation is where they reveal that they could have slipped the ropes, but chose not to: this is Play-Along Prisoner.
Compare and contrast Breaking the Bonds, which is generally much less subtle.
Examples:
open/close all folders
Anime & Manga
- Ganta from Deadman Wonderland did this, using his own blood.
- Lupin III can only be handcuffed if he lets you handcuff him. During a Lupin III (Red Jacket) episode, Fujiko uses this trait to convince Zenigata Lupin is possessed: there's blood on the cuffs, which means he had to fight his way out of them... something the normal Lupin wouldn't have to do.
- Trigun: Vash the Stampede once slid out of ropes to protect a young woman from bandits. Said bandits caught him before he could get back into them... the second time.
- Dark and Riku from D.N.Angel have been captured and handcuffed because Dark surrendered the moment they were confronted. Riku is furious and begins yelling at Dark, at which point he reveals he has easily escaped. "You were saying...something about handcuffs?"
- Nausicaä of the Valley of the Wind manga. Yupa: "Heedra handler!"  Yupa: Holds up handcuffs, proceeds to kick their asses.
- Gunslinger Girl. Mafia boss Mario Bossi escapes Triela with a Bathroom Breakout, despite them being chained together. When Triela goes to chase after him, she finds he's slipped the chain's handcuff and reattached it to a water pipe, which she has to waste time ripping from the wall before she can get after him.
Comic Books
- Wonder Woman (1942): While Diana prefers to just break whatever bonds are holding her any time a villain manages to tie her up with her indestructible lasso she has to subtly slip out instead.
Films — Animation
- Iago had this moment in Aladdin and the King of Thieves. This time, however, it wasn't easy, as he had to wiggle out of his very tight bonds
- Done hilariously in Treasure Planet with Dr. Doppler. Turns out, he has abnormally thin wrists.
- Who Framed Roger Rabbit: Roger Rabbit can slip out of his cuffs at any given moment, but only when it's funny.
- Bugs Bunny in Space Jam. When the aliens have him imprisoned, and are "gloating" to the highly amused toons, Bugs is quietly rolling his eyes and slipping out of the somewhat impressive amount of rope he's bound with. And the cuffs for his ears.
Films — Live-Action
- The President in Air Force One did this, and used a shard of glass to get out.
- Babylon 5: A call To Arms has Dureena Nafeel show the entire Thieves guild that she already loosened the bonds by simply dropping them, then knocking out the person who was taunting her about being restrained.
- Dog Bite Dog has the main character escaping from behind a police car after pulling his right hand out of his cuffs.
- Harry Tasker did this in True Lies. The cool part is that he had just told his interrogator exactly how he was going to kill the guy, right before revealing the cuffs were off.
- Two of the kids from The Pacifier did this, silently and quite impressively.
- Marv did this in Sin City, combined with Breaking the Bonds.
- One of the villains Pike from The A-Team has his hands cuffed behind him and put in the backseat of a car. Using his would-be killer's incompetence he quickly reveals his hands are free and steals the gun away from the man, pointing out they should "Never handcuff a guy's hands behind his back, then you can't see the hands."
- In The Thing from Another World (1951), in an awkward romantic moment, a military officer lets a woman tie him to a chair after she claimed he was too handsy last time. He has already slipped out of his bonds by the time she confesses to things and says she would never have said them if he wasn't tied up.
Literature
- In the Relativity story "Master Blankard's Pawn", the heroes escape right in front of the villain while he's is monologuing.
Black Torrent: I'm free. What about you guys?
Zephyra: Me, too.
Overcast: Yep.
Dark Flame: [still tied up] How did you guys do that? - Journey to Chaos: Rope escape is part of Tiza's Squad Four cross-training. It comes in handy in Mana Mutation Menace when Dosh Heleti tries to kidnap her. She escapes the handcuffs he uses, magic eyes him into paralysis and then uses the cuffs on him instead.
- The Dresden Files: Harry manages to slip from being bound with duct tape, noting that if duct tape was actually any good as a restraint the police would be using is instead of handcuffs. However, he has lamented more than once that his father (who was a stage magician) never got around to teaching him how to slip a pair of handcuffs.
Live-Action TV
- In Agents of S.H.I.E.L.D. episode "0-8-4", Melinda May does this... by dislocating her wrist first.
- Buffy the Vampire Slayer. In "Living Conditions" Buffy is starting to go Ax-Crazy because a demon is taking her soul, so the Scoobies tie her to a chair. At one point Xander and Oz wonder if the ropes are tight enough, and cautiously approach Buffy...who promptly bangs their heads together.
- Supernatural. Played for Drama when Dean discovers Sam doesn't have a soul after being rescued from Hell. He beats Sam up and ties him to a chair while he and Castiel try and work out what to do. Sam argues that it doesn't make any difference, and Dean can hardly keep him tied to a chair forever. He then stands up having spent the time working on his bonds.
- Person of Interest:
- ("The Crossing"). Having been tortured by HR, Detective Fusco is about to be executed by Dirty Cop Petersen. Fusco has his hands cuffed behind his back.
Petersen: You want me to hold your hand, Fusco? Oh, I forgot, we broke your fingers.
Fusco: Yeah, you did. Which made it no big deal for me to break my thumb.- At the start of "The Cold War", Team Machine have Token Evil Teammate Shaw handcuffed to a bench and she isn't happy about it. Root points out that they can't hold her, "not against your will, anyway." Shaw shows Root the unlocked handcuff. "Too true."
- Doctor Who: In "Death in Heaven", Missy not only uncuffs herself without her captors noticing, she sneaks the cuffs into Osgood's pocket for the sake of a joke.
Missy: Oh, my giddy aunt. Quiet ones are the worst.
- Oliver does this in the pilot episode of Arrow. It gets a Call-Back in the fifth season premier, complete with a flashback to when he was introduced to the skill.
Kidnapper: Did [your father] tell you anything?
Oliver: Y...yes, he did. [...]
Kidnapper: [laughs] You're delusional. You're zip-cuffed to that chair!
Oliver: [reveals hands] Not anymore. [kicks their asses]
Video Games
- Cody in Street Fighter Alpha 3 is a prisoner who makes a habit of breaking out of jail. He's handcuffed. In his taunt, he slips out of the cuffs, makes fun of his enemy, and then puts them back on.
- In Professor Layton and the Diabolical Box, Layton and Luke get captured and tied up by a vampire who intends to drink their blood. Luckily, their captor did a sloppy job of securing the ropes, so after a quick puzzle, they manage to free themselves and continue their investigation. This turns out to have been an Invoked Trope. Anton's standard procedure for dealing with intruders is to capture them, threaten them a little, then leave them alone so they can escape and flee to further spread his fearsome reputation.
- In Mass Effect 3: Citadel, after the final mission, Maya Brooks is captured by Shepard's squad and cuffed with some kind of Hard Light omni-cuffs, which she proceeds to try to hack before she's even left the room. She's perfectly capable of working the cuffs off in less than a minute. She's less capable of dodging gunfire from ten feet away.
Web Comics
- The Order of the Stick: Haley Starshine has ranks in both escape artist and use rope, meaning tying her up is doomed to failure.
Gannji: Hey, wait. Weren't you tied up a moment ago?
Haley: That was a moment ago. - The Adventures of Dr. McNinja Dr. McNinja has demonstrated this ability at least once.
Web Original
- In the first book of Shadow of the Templar, Gentleman Thief Jeremy is captured and handcuffed by Team Templar. When the team decides that it's safe to release Jeremy from the cuffs, he casually tosses them away before they can even reach for the key.
Web Videos
- Flander's Company: In episode "Holidays", Dr. Parker is taken hostage by activists and tied up. In the ensuing negotiations, he slips out of the ropes — twice — while making a point, to the hostage-takers' annoyance.
Western Animation
- Lestrade does this at least once on the cartoon Sherlock Holmes in the 22nd Century.
Lestrade: Never put a cop in their own cuffs. They probably know how to get out of them.
- In the last episode of Sam & Max: Freelance Police, Sam and Max get bored and do this repeatedly.
- Avatar: The Last Airbender:
- In "Avatar Day", Aang is charged for murder in a former life, imprisoned with hands and head locked in a pillory, and casually slipped out of it during a chat with other inmates. In this case, it's implied Aang wasn't being limber, the stock just seems oversized.
- In "The Earth King", Team Avatar get caught by the Dai Li when attempting to reach the Earth King. When Long Feng accidentally reveals that the Avatar is among those caught, Sokka points Aang out. Aang, being the Cheerful Child he is, Earthbends his cuffs off, waves to the King, then Bends them back on again. Oddly, this does not clue the Dai Li that they probably need more firepower to keep this particular prisoner (plus Toph) in line.
- Futurama: When the Space Amazons have Bender, Zap, Fry, and Kif chained up, to explain that Bender lacks certain parts he slips one hand out of the chains to demonstrate and then puts it back in the chain.
- Family Guy:
- Parodying this trope, the family get tied up by robbers and are trying to work out how to get free, when Chris or Peter stands up as the robbers didn't bother to tie him up.
- In the "Stewie Kills Lois/Lois Kills Stewie" episodes, Stewie ties up the entire family. To pass the time, they start making up celebrity rumors, until Chris starts clapping. He claims that Stewie must have forgotten him.
Lois: You realize we've been sitting here for fourteen hours?!
Chris: Well, get pissy if you want, Mom. I've enjoyed the time we've had as a family.
- Jackie Chan Adventures played with this. One episode had the good guys voluntarily let themselves be tied to chairs (clones were involved, just go with it). When they are attacked by a clone Viper slips the ropes, El Toro and Tohru break the ropes, and Captain Black tries to slip out, but fails.
- My Little Pony: Friendship Is Magic: In "Stranger Than Fan Fiction", when Quibble Pants and Rainbow Dash are captured by Caballeron, Quibble easily unties himself. In fact, he escapes so easily that he doesn't realize that Caballeron was seriously trying to tie him up.
- Kid Flash did this to the Hive Five in Teen Titans.
- In a series of Wander over Yonder shorts airing between the first and second seasons, Lord Hater has finally captured Wander and has him shackled while he plans to broadcast his execution live. However, Wander is able to slip out easily, which annoys Hater to no end.
- The Flash does this in an episode of Justice League. He was arrested and cooperating with police, then when they went to uncuff him he just handed the empty cuffs to them as a way of showing that he was there purely by choice.
Real Life
- Harry Houdini did this a lot. On more than one occasion, police officers he challenged handcuffed him to something and walked away, saying, "We'll be back for you in an hour." Before they reached the door, Houdini would walk up to them and say, "Take your handcuffs with you."
- At least one magician has had a routine where he's handcuffed by volunteers, supposedly to do a trick, his hands are hidden and he's continually pulling out one hand or the other (sometimes with the cuffs dangling from it) to "assist" the volunteers in setting up the supposed trick or "correcting" things they've supposedly done wrong.


Background
The global deployment of a Resource Public Key Infrastructure
(RPKI [5]) is one step towards securing the Internet routing
through cryptography.
The RPKI allows the holder of a distinct IP prefix to authorize certain
autonomous systems (AS) to originate corresponding routes, which is
cryptographically verifiable through Route Origination Authorizations (ROAs)
that are stored in the RPKI.
RPKI enabled routers do not store such ROAs themselves, but only the validated
content of those.
To achieve high scalability as well as limit resource utilization on BGP
routers, the validation of ROAs is performed by trusted RPKI cache servers,
which are deployed at the network operator site.
The RPKI-RTR protocol defines a standard mechanism to maintain exchange of
the prefix origin AS relations between the cache server and routers.
In combination with a BGP prefix origin validation scheme a router is able to
verify received BGP updates without suffering from cryptographic complexity.
The RTRlib is a lightweight C library that implements the RPKI-RTR protocol for
the client end (i.e., routers) and the proposed prefix origin validation scheme.
The RTRlib provides functions to establish a connection to a single or multiple
trusted caches using TCP and SSH transport connections, and further allows to
determine the validation state of prefix to origin AS relations.
Fig. 1 shows a typical RPKI deployment, where trusted cache servers
collect ROAs from global RPKI repositories of the RIRs, such as RIPE and APNIC.
Each local RPKI cache periodically updates and verifies the stored ROAs, and
pushes the preprocessed data to connected RPKI enabled BGP routers using
the RTR protocol.
Further Reading
Detailed insights on the implementation of the RTRlib and its performance can
be found in [6].
Further information is available in the standard specifications and
protocols in RFCs 6810 [1] and 6811 [2], to which
the RTRlib complies.
Even more background material on BGP security extensions can be found in
[7], [4],
and [8]
References
| [1] | (1, 2) R. Bush and R. Austein. The Resource Public Key Infrastructure (RPKI) to Router Protocol. RFC 6810, IETF, January 2013. |
| [2] | (1, 2) P. Mohapatra, J. Scudder, D. Ward, R. Bush, and R. Austein. BGP Prefix Origin Validation. RFC 6811, IETF, January 2013. |
| [3] | Randy Bush and Rob Austein. The Resource Public Key Infrastructure (RPKI) to Router Protocol. Internet-Draft – work in progress 07, IETF, March 2016. |
| [4] | (1, 2) Matthew Lepinski and Sean Turner. An Overview of BGPsec. Internet-Draft – work in progress 08, IETF, June 2016. |
| [5] | M. Lepinski and S. Kent. An Infrastructure to Support Secure Internet Routing. RFC 6480, IETF, February 2012. |
| [7] | S. Bellovin, R. Bush, and D. Ward. Security Requirements for BGP Path Validation. RFC 7353, IETF, August 2014. |
| [8] | Matthew Lepinski and Kotikalapudi Sriram. BGPsec Protocol Specification. Internet-Draft – work in progress 19, IETF, November 2016. |


Style transfer
Step
0
/
0
, time:
0.00
s/step, update:
0.00
, loss:
0
, tv:
0.00
Connecting to the backend...


Bolivian Upper House Elects Lawmaker From Morales’ Party as New Speaker
MEXICO CITY (Sputnik) – The Senate, the upper house of the Bolivian Parliament, said that Monica Eva Copa Murga, a lawmaker from the party Movement Toward Socialism (MAS) of former President Evo Morales, has been elected to become the new House speaker amid instability following the president’s resignation.
"In a unanimous decision, the Bolivian Senate elected the new chair for the period of 2019-2020. This seat will be taken by lawmaker Eva Copa Murga", the upper house wrote on Twitter on Thursday.
Opposition lawmaker Jeanine Anez, who was the deputy speaker of Bolivia’s upper house, declared herself interim president. Late on Wednesday, Anez appointed 11 ministers of her transitional cabinet to ensure that the work of government agencies continues and the next general elections can be organised.
On Sunday, Morales resigned and left Bolivia for Mexico amid mass protests over the results of the recent presidential election that saw him secure a fourth term in office, according to the official figures that have not been recognised by the opposition.


This How to shows a number of ways to help protect your ASP.NET application from SQL injection attacks. SQL injection can occur when an application uses input to construct dynamic SQL statements. Successful SQL injection attacks enable malicious users to execute arbitrary queries on the application's database.
Countermeasures include validating input, using parameterized SQL for data access, and using a least privileged account that has restricted permissions in the database. Using stored procedures with parameterized SQL is the recommended approach because SQL parameters are type safe. Type-safe SQL parameters can also be used with dynamic SQL.
A successful SQL injection attack enables a malicious user to execute queries on your application's database by using the privileges granted to your application's login. The problem is more severe if your application uses an over-privileged account to connect to the database. For example, if your application's login has privileges to eliminate a database, then without adequate safeguards, an attacker might be able to perform this operation.
Common vulnerabilities that make your data access code susceptible to SQL injection attacks include:
You should validate all input to your ASP.NET applications for type, length, format, and range. By constraining the input used in your data access queries, you can protect your application from SQL injection.
Note: When constraining input, it is a good practice to create a list of acceptable characters and use regular expressions to reject any characters that are not on the list. The potential risk associated with using a list of unacceptable characters is that it is always possible to overlook an unacceptable character when defining the list; also, an unacceptable character can be represented in an alternate format to pass validation.
Start by constraining input in the server-side code for your ASP.NET Web pages. Do not rely on client-side validation because it can be easily bypassed. Use client-side validation only to reduce round trips and to improve the user experience.
If you use server controls, use the ASP.NET validator controls, such as the RegularExpressionValidator
and RangeValidator
controls to constrain input. If you use regular HTML input controls, use the Regex class in your server-side code to constrain input.
If in the previous code example, the SSN value is captured by an ASP.NET TextBox control, you can constrain its input by using a RegularExpressionValidator
control as shown in the following.
<%@ language="C#" %>
<form id="form1" runat="server">
<asp:TextBox ID="SSN" runat="server"/>
<asp:RegularExpressionValidator ID="regexpSSN" runat="server"
ErrorMessage="Incorrect SSN Number"
ControlToValidate="SSN"
ValidationExpression="^\d{3}-\d{2}-\d{4}$" />
</form>
If the SSN input is from another source, such as an HTML control, a query string parameter, or a cookie, you can constrain it by using the Regex
class from the System.Text.RegularExpressions
namespace. The following example assumes that the input is obtained from a cookie.
using System.Text.RegularExpressions;
if (Regex.IsMatch(Request.Cookies["SSN"], "^\d{3}-\d{2}-\d{4}$"))
{
// access the database
}
else
{
// handle the bad input
}
In some situations, you need to provide validation in your data access code, perhaps in addition to your ASP.NET page-level validation. Two common situations where you need to provide validation in your data access code are:
The following example shows how a data access routine can validate its input parameters by using regular expressions prior to using the parameters in a SQL statement.
using System;
using System.Text.RegularExpressions;
public void CreateNewUserAccount(string name, string password)
{
// Check name contains only lower case or upper case letters,
// the apostrophe, a dot, or white space. Also check it is
// between 1 and 40 characters long
if ( !Regex.IsMatch(userIDTxt.Text, @"^[a-zA-Z'./s]{1,40}$"))
throw new FormatException("Invalid name format");
// Check password contains at least one digit, one lower case
// letter, one uppercase letter, and is between 8 and 10
// characters long
if ( !Regex.IsMatch(passwordTxt.Text,
@"^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$" ))
throw new FormatException("Invalid password format");
// Perform data access logic (using type safe parameters)
...
}
Using stored procedures does not necessarily prevent SQL injection. The important thing to do is use parameters with stored procedures. If you do not use parameters, your stored procedures can be susceptible to SQL injection if they use unfiltered input as described in the "Overview" section of this document.
The following code shows how to use SqlParameterCollection
when calling a stored procedure.
using System.Data;
using System.Data.SqlClient;
using (SqlConnection connection = new SqlConnection(connectionString))
{
DataSet userDataset = new DataSet();
SqlDataAdapter myCommand = new SqlDataAdapter(
"LoginStoredProcedure", connection);
myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
myCommand.SelectCommand.Parameters.Add("@au_id", SqlDbType.VarChar, 11);
<EMAIL_ADDRESS>= SSN.Text;
myCommand.Fill(userDataset);
}
In this case, the @au_id parameter is treated as a literal value and not as executable code. Also, the parameter is checked for type and length. In the preceding code example, the input value cannot be longer than 11 characters. If the data does not conform to the type or length defined by the parameter, the SqlParameter
class throws an exception.
Because using stored procedures with parameters does not necessarily prevent SQL injection, you should review your application's use of this type of stored procedure. For example, the following parameterized stored procedure is unsafe:
CREATE PROCEDURE dbo.RunQuery(@var ntext) AS
exec sp_executesql @var;
This stored procedure ultimately concatenates data passed to it into SQL syntax, thus negating parameterization. Consider the @var variable being set to: DROP TABLE ORDERS;
In this case, the ORDERS table will be dropped. The main principle for preventing SQL injection is never concatenating untrusted data into SQL syntax or in other words never treating data as SQL syntax. In this example, data is being treated as SQL syntax.
If you cannot use stored procedures, you should still use parameters when constructing dynamic SQL statements. The following code shows how to use the SqlParametersCollection
with dynamic SQL.
using System.Data;
using System.Data.SqlClient;
using (SqlConnection connection = new SqlConnection(connectionString))
{
DataSet userDataset = new DataSet();
SqlDataAdapter myDataAdapter = new SqlDataAdapter(
"SELECT au_lname, au_fname FROM Authors WHERE au_id = @au_id",
connection);
myCommand.SelectCommand.Parameters.Add("@au_id", SqlDbType.VarChar, 11);
<EMAIL_ADDRESS>= SSN.Text;
myDataAdapter.Fill(userDataset);
}
A common misconception is that if you concatenate several SQL statements to send a batch of statements to the server in a single round trip, you cannot use parameters. However, you can use this technique if you make sure that parameter names are not repeated. You can easily do this by making sure that you use unique parameter names during SQL text concatenation, as shown here.
using System.Data;
using System.Data.SqlClient;
...
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlDataAdapter dataAdapter = new SqlDataAdapter(
"SELECT CustomerID INTO #Temp1 FROM Customers " +
"WHERE CustomerID > @custIDParm; SELECT CompanyName FROM Customers " +
"WHERE Country = @countryParm and CustomerID IN " +
"(SELECT CustomerID FROM #Temp1);",
connection);
SqlParameter custIDParm = dataAdapter.SelectCommand.Parameters.Add(
"@custIDParm", SqlDbType.NChar, 5);
custIDParm.Value = customerID.Text;
SqlParameter countryParm = dataAdapter.SelectCommand.Parameters.Add(
"@countryParm", SqlDbType.NVarChar, 15);
countryParm.Value = country.Text;
connection.Open();
DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet);
}
...
Use structured exception handling to catch errors and prevent them from propagating back to the client. Log detailed error information locally, but return limited error details to the client.
If errors occur while the user is connecting to the database, be sure that you provide only limited information about the nature of the error to the user. If you disclose information related to data access and database errors, you could provide a malicious user with useful information that he or she can use to compromise your database security. Attackers use the information in detailed error messages to help deconstruct a SQL query that they are trying to inject with malicious code. A detailed error message may reveal valuable information such as the connection string, SQL server name, or table and database naming conventions.
Adapted from Microsoft patterns & practices guidance.


After working in financial services for the past 5 years, I decided to make the switch to web development for the new challenges. I started coding through the Web Development Bootcamp at the UC Berkeley Extension, where I picked up the foundational skills for full-stack development.
I am currently seeking dev internship opportunities and support engineer roles to kickstart my career in engineering.
As a side note, I am always looking to grow and develop professionally, so if you’d like to collaborate with me on a project or just want to say hello, feel free to connect with me!


The HyperText Transfer Protocol is used to communicate between web browsers and web servers. For more information see
http://www.w3.org/Protocols/


CSL-M Styles
-
IndigoBook (for law reviews)
A style for US legal materials, integrated with the IndigoBook project, an open-access restatement of the Bluebook citation rules. This version automatically generates footnotes, and is for use in law review articles.
-
IndigoBook (for legal memoranda)
A style for US legal materials, integrated with the IndigoBook project, an open-access restatement of the Bluebook citation rules. This version generates in-text references, and is for use in legal briefs.
-
JM Chicago Manual of Style 16th edition (full note)
The Jurism version of the Zotero Chicago Manual of Style Full Note with Bibliography style.
-
JM Chicago Manual of Style 16th edition (full note, polyglot)
A multilingual version of the JM Chicago Manual of Style Full Note with Bibliography style. (It has not been updated in some time, and may require adjustment to suit local requirements.)
-
JM Chinese Std GB/T 7714-2005 (numeric, Chinese)
A Chinese style for technical and scientific writing.
-
JM Harvard - Australian National University
There are many flavors of the “Harvard” referencing style. This one is in use at the Australian National University.
-
JM IBFD Standard Citations and References (with page label)
One of a family of Austrian legal styles.
-
JM LegCit mit Rechtsquellenverzeichnis und Literaturverzeichnis
One of a family of Austrian legal styles.
-
JM Canadian Guide to Uniform Legal Citation (9th edition) / Manuel canadien de la référence juridique (9ᵉ édition)
The CSL-M version of the “McGill Guide,” the most commonly used citation format for writing on Canadian law.
-
JM New Zealand Law Style
The New Zealand Law style is the first legal style to be fully implemented in Jurism.
-
JM Turabian 8th edition (full note, EU multilingual)
This is a multilingual version of the Turabian style, suitable for use in writing for a pan-European audience.
-
JM Turabian 8th edition (full note, Dutch multilingual)
This is a multilingual version of the Turabian style, with Dutch as the primary language.
-
JM Vis Moot variant 1
Briefs for the Vis Moot competition have exceptionally difficult formatting requirements that make manual preparation of the list of authorities a considerable task, and one-click generation of the list impossible. This style produces a raw listing with embedded placeholders that can be converted to a properly formatted list of authorities with a pair of Word or LibreOffice macros. If you are involved in the Competition you should definitely check it out.


At San Churro, we believe happiness is the key to success!
Every community needs a place like San Churro, where the food is delicious, the service is friendly and familiar, the experience is fun and happiness is contagious. If you get satisfaction through making people happy then now is an amazing time to join the San Churro family and be involved with one of Australia’s most exciting and successful franchise concepts.
Opportunities exist NATIONALLY for passionate and hard-working individuals who love to make customers happy and have sharp business acumen and a fire in their belly to become a part of the San Churro success story.
If you are seriously considering becoming a part of our family (which we hope you are), we recommend you read through these pages and download our Franchising Kit and express your interest by completing our enquiry form. We look forward to getting to know you better!
In the video below San Churro Franchise Partners share their chocolate dreams. We had the opportunity to ask them why they chose to walk away from their established careers to join the San Churro family and open their own San Churro chocolateria. Here's what they had to say...
Life is sweeter at Coffee Lounge.
At San Churro, we believe happiness is the key to success!
Every community needs a place like San Churro, where the food is delicious, the service is friendly and familiar, the experience is fun and happiness is contagious. If you get satisfaction through making people happy then now is an amazing time to join the San Churro family and be involved with one of Australia’s most exciting and successful franchise concepts.
Opportunities exist NATIONALLY for passionate and hard-working individuals who love to make customers happy and have sharp business acumen and a fire in their belly to become a part of the San Churro success story.
If you are seriously considering becoming a part of our family (which we hope you are), we recommend you read through these pages and download our Franchising Kit and express your interest by completing our enquiry form. We look forward to getting to know you better!
In the video below San Churro Franchise Partners share their chocolate dreams. We had the opportunity to ask them why they chose to walk away from their established careers to join the San Churro family and open their own San Churro chocolateria. Here's what they had to say...
Life is sweeter at Coffee Lounge.
At San Churro, we believe happiness is the key to success!
Every community needs a place like San Churro, where the food is delicious, the service is friendly and familiar, the experience is fun and happiness is contagious. If you get satisfaction through making people happy then now is an amazing time to join the San Churro family and be involved with one of Australia’s most exciting and successful franchise concepts.
Opportunities exist NATIONALLY for passionate and hard-working individuals who love to make customers happy and have sharp business acumen and a fire in their belly to become a part of the San Churro success story.
If you are seriously considering becoming a part of our family (which we hope you are), we recommend you read through these pages and download our Franchising Kit and express your interest by completing our enquiry form. We look forward to getting to know you better!
In the video below San Churro Franchise Partners share their chocolate dreams. We had the opportunity to ask them why they chose to walk away from their established careers to join the San Churro family and open their own San Churro chocolateria. Here's what they had to say...
Life is sweeter at Coffee Lounge.
At San Churro, we believe happiness is the key to success!
Every community needs a place like San Churro, where the food is delicious, the service is friendly and familiar, the experience is fun and happiness is contagious. If you get satisfaction through making people happy then now is an amazing time to join the San Churro family and be involved with one of Australia’s most exciting and successful franchise concepts.
Opportunities exist NATIONALLY for passionate and hard-working individuals who love to make customers happy and have sharp business acumen and a fire in their belly to become a part of the San Churro success story.
If you are seriously considering becoming a part of our family (which we hope you are), we recommend you read through these pages and download our Franchising Kit and express your interest by completing our enquiry form. We look forward to getting to know you better!
In the video below San Churro Franchise Partners share their chocolate dreams. We had the opportunity to ask them why they chose to walk away from their established careers to join the San Churro family and open their own San Churro chocolateria. Here's what they had to say...
Life is sweeter at Coffee Lounge.
At San Churro, we believe happiness is the key to success!
Every community needs a place like San Churro, where the food is delicious, the service is friendly and familiar, the experience is fun and happiness is contagious. If you get satisfaction through making people happy then now is an amazing time to join the San Churro family and be involved with one of Australia’s most exciting and successful franchise concepts.
Opportunities exist NATIONALLY for passionate and hard-working individuals who love to make customers happy and have sharp business acumen and a fire in their belly to become a part of the San Churro success story.
If you are seriously considering becoming a part of our family (which we hope you are), we recommend you read through these pages and download our Franchising Kit and express your interest by completing our enquiry form. We look forward to getting to know you better!
In the video below San Churro Franchise Partners share their chocolate dreams. We had the opportunity to ask them why they chose to walk away from their established careers to join the San Churro family and open their own San Churro chocolateria. Here's what they had to say...
Play
CONTACT US
Got a question, some feedback or just want to say hola! Get in touch with us here!


Encapsulates functions to streamline calls from R to the REDCap API. REDCap (Research Electronic Data CAPture) is a web application for building and managing online surveys and databases developed at Vanderbilt University. The Application Programming Interface (API) offers an avenue to access and modify data programmatically, improving the capacity for literate and reproducible programming.
| Version: | 0.9.8 |
| Depends: | R (≥ 3.0.0), stats |
| Imports: | data.table, dplyr, httr (≥ <IP_ADDRESS>00), magrittr, methods, readr, tibble, tidyr |
| Suggests: | devtools, kableExtra, knitr, rmarkdown, RODBC, RODBCext, testthat (≥ 0.9) |
| Published: | 2017-05-18 |
| Author: | Will Beasley [aut, cre], David Bard [ctb], Thomas Wilson [ctb], John J Aponte [ctb], Rollie Parrish [ctb], Benjamin Nutter [ctb], Andrew Peters [ctb], Hao Zhu [ctb] |
| Maintainer: | Will Beasley <wibeasley at hotmail.com> |
| BugReports: | https://github.com/OuhscBbmc/REDCapR/issues |
| License: | GPL-2 |
| URL: | https://github.com/OuhscBbmc/REDCapR, http://ouhsc.edu/bbmc/, http://project-redcap.org |
| NeedsCompilation: | no |
| Materials: | README NEWS |
| CRAN checks: | REDCapR results |
| Reference manual: | REDCapR.pdf |
| Vignettes: |
Basic REDCapR Operations Security Database Troubleshooting REDCap API Calls Advanced REDCapR Operations |
| Package source: | REDCapR_0.9.8.tar.gz |
| Windows binaries: | r-devel: REDCapR_0.9.8.zip, r-release: REDCapR_0.9.8.zip, r-oldrel: REDCapR_0.9.8.zip |
| OS X binaries: | r-release: REDCapR_0.9.8.tgz, r-oldrel: REDCapR_0.9.8.tgz |
| Old sources: | REDCapR archive |
| Reverse suggests: | codified |
Please use the canonical form https://CRAN.R-project.org/package=REDCapR to link to this page.


Please upload file <%= fileName%>
Step 1
Step 2
Step 3
Step 4
Step 5
Step 6
Search duplicates by
Pick delimeter for CSV


Multiple bushfires break out around SA on day of record-breaking heat and wind
At least two houses and multiple sheds have been destroyed by the out-of-control Yorketown bushfire. Another uncontrolled fire is burning near Price, also on the Yorke Peninsula, on a day of record-breaking heat and high winds.
CFS crews are attempting to direct the Yorketown fire towards the beach to minimise its spread, but it is still too early to assess the full impact.
The fire started on the outskirts of Yorketown, just 100m from houses, and has destroyed hundreds of hectares of crops and paddocks as it burns in a south-easterly direction towards St Vincent Highway, and towards the coastline in the vicinity of Edithburgh, Wattle Point and Troubridge Point.
The Price fire was contained earlier on Wednesday afternoon, but broke containment lines in the evening.
Conditions are dangerous and firefighters warned they were unable to prevent the fires from spreading.
If you are in the area of one of these fires, take shelter in a solid building. It is too late to leave by foot or vehicle - the roads will not be safe.
Three other fires - one near Jamestown, another near Angaston in the Barossa Valley, and a third at Beaufort near Port Wakefield - have now been downgraded.
For the latest fire information from across the state, please visit the CFS website and look at the latest blog posts at the bottom of this story.
On a day of extreme and in some areas record-breaking November heat, Ceduna was the first place in SA to reach 40C at 10.19am, and reached 46.2C at 3pm. Many other areas around the state exceeded 44C. Adelaide's temperature hit a maximum of 41.6C at West Tce at 4.21pm.
More than 100 government schools were closed today due to the extreme weather conditions.
HOUR BY HOUR: TEMPS ACROSS SA
FOLLOW OUR LIVE BLOG FOR THE LATEST ON THE EXTREME HOT WEATHER AND BUSHFIRES


Introduction
A Teensy-based project to adapt XT, AT, PS/2 and some 122-key terminal keyboards to USB, also known simply as "Soarer's Converter".
Features
Keyboard protocols supported:
- PC/XT (scan code set 1)
- AT (scan code set 2)
- PS/2 (MF2) (extended scan code set 2)
- Terminal e.g. 3179/318x/319x (scan code set 3)
Configurable Features: v0.997+
- Remapping
- Layers
- Macros
- On-the fly Config Selection
Other Features:
- Full NKRO, if the keyboard supports it (even on Macs!)
- Boot mode support (even with faulty BIOS!)
- Auto-detection of the keyboard type
- XT and AT boards are remapped correctly for PrtSc etc.
- 1000Hz polling using Full Speed USB
- Media and Power key support
- Jump to bootloader function (update firmware without pressing the reset button) v1.0+
- Support for 'almost' PC/XT protocol keyboards, e.g. Leading Edge DC-2014 v1.1+
- Keyboard Reset output (required by some PC/XT keyboards) v1.1+
- Five auxiliary key inputs (for extra keys, buttons, or footswitches) v1.1+
- Support for IBM RT keyboards v1.11+
Award!
Origins
Way back in 2010, a Teensy landed on my doormat.
My goal then was simply "to make a USB adapter for my AT model F".
Why? I had modified the keyboard, and existing PS/2 to USB adapters didn't support the unusual codes created by the extra key positions.
A few months later, the first release was made available on geekhack, in my project thread.
On the release of v1.0, I also made it available on Deskthority.
I guess I got a little carried away :-)


We want to know about just the events from a single mouse click while a bunch of other stuff is happening on the page
This is useful in E2E testing. Because you know when there are no async tasks, you avoid adding timeouts that wait for tasks that run for an indeterminable amount of time.


Jenkins plugin which allows to transfer settings from a POM to a job configuration.
Plugin Information |
|---|
View pom2config on the plugin site for more information. |
The plugin parses a given POM and gives you afterwards the opportunity to replace different job settings like project description or the SCM URL with the found values from the POM.
The plugin shows up in the left bar of a job. There are three possibilities to give the plugin a POM file to parse, you can either use an existing POM in the workspace of the current job, get it from an URL or just upload one.
The following functions are supported
- Project description
- Editable Email Notification (recipient list only)
- Git SCM URL
- SVN SCM URL
Changelog
Version 1.2 (Dez 11 2013)
- First version of this plugin
Version 1.0 / 1.1 failed release
Attachments:
pom2config.png (image/png)


"BOAZ "alacrity. (1.) The husband of Ruth, a wealthy Bethlehemite. By the “levirate law” the duty devolved on him of marrying Ruth the Moabitess (Ruth 4:1-13). He was a kinsman of Mahlon, her first husband. (2.) The name given (for what reason is unknown) to one of the two (the other was called Jachin) brazen pillars which Solomon erected in the court of the temple (1 Kings 7:21; 2 Chronicles 3:17). These pillars were broken up and carried to Babylon by Nebuchadnezzar.
"BOAZ "alacrity. (1.) The husband of Ruth, a wealthy Bethlehemite. By the “levirate law” the duty devolved on him of marrying Ruth the Moabitess (Ruth 4:1-13). He was a kinsman of Mahlon, her first husband.
(2.) The name given (for what reason is unknown) to one of the two (the other was called Jachin) brazen pillars which Solomon erected in the court of the temple (1 Kings 7:21; 2 Chronicles 3:17). These pillars were broken up and carried to Babylon by Nebuchadnezzar.


Disclosure: I plan to move ~20% of my crypto portfolio to ZCash this quarter.
After transactions are complete (first initiated earlier today), I’ll still be majority BTC, but ZEC will leapfrog ETH as my second largest holding.
(Not investment advice.)


| Number of Classes | Line Coverage | Mutation Coverage | Test Strength | Mutation Score |
|---|---|---|---|---|
| 3 | 83% | 74% | 98% | 95%
Killed: 18
Uncertain: 0
|
| Name | Line Coverage | Mutation Coverage | Test Strength | Mutation Score |
|---|---|---|---|---|
| CloudhopperCharsetAdapter.java | 100% |
80% |
100% |
100%
Killed: 1
Uncertain: 0
|
| MessageDecoder.java | 86% |
74% |
98% |
94%
Killed: 15
Uncertain: 0
|
| SmsUtils.java | 50% |
71% |
100% |
100%
Killed: 2
Uncertain: 0
|


TGAMMA
Section: Linux Programmer's Manual (3)
Updated: 2010-09-20
Index
Return to Main Contents
NAME
tgamma, tgammaf, tgammal - true gamma function
SYNOPSIS
#include <math.h>
double tgamma(double x);
float tgammaf(float x);
long double tgammal(long double x);
Link with -lm.
Feature Test Macro Requirements for glibc (see
feature_test_macros(7)):
tgamma(),
tgammaf(),
tgammal():
-
_XOPEN_SOURCE >= 600 || _ISOC99_SOURCE ||
_POSIX_C_SOURCE >= 200112L;
or
cc -std=c99
DESCRIPTION
The Gamma function is defined by
Gamma(x) = integral from 0 to infinity of t^(x-1) e^-t dt
It is defined for every real number except for nonpositive integers.
For nonnegative integral
m
one has
Gamma(m+1) = m!
and, more generally, for all
x:
Gamma(x+1) = x * Gamma(x)
Furthermore, the following is valid for all values of
x
outside the poles:
Gamma(x) * Gamma(1 - x) = PI / sin(PI * x)
RETURN VALUE
On success, these functions return Gamma(x).
If
x
is a NaN, a NaN is returned.
If
x
is positive infinity, positive infinity is returned.
If
x
is a negative integer, or is negative infinity,
a domain error occurs,
and a NaN is returned.
If the result overflows,
a range error occurs,
and the functions return
HUGE_VAL,
HUGE_VALF,
or
HUGE_VALL,
respectively, with the correct mathematical sign.
If the result underflows,
a range error occurs,
and the functions return 0, with the correct mathematical sign.
If
x
is -0 or +0,
a pole error occurs,
and the functions return
HUGE_VAL,
HUGE_VALF,
or
HUGE_VALL,
respectively, with the same sign as the 0.
ERRORS
See
math_error(7)
for information on how to determine whether an error has occurred
when calling these functions.
The following errors can occur:
- Domain error: x is a negative integer, or negative infinity
-
errno
is set to
EDOM.
An invalid floating-point exception
(FE_INVALID)
is raised (but see BUGS).
- Pole error: x is +0 or -0
-
errno
is set to
ERANGE.
A divide-by-zero floating-point exception
(FE_DIVBYZERO)
is raised.
- Range error: result overflow
-
errno
is set to
ERANGE.
An overflow floating-point exception
(FE_OVERFLOW)
is raised.
glibc also gives the following error which is not specified
in C99 or POSIX.1-2001.
- Range error: result underflow
-
An underflow floating-point exception
(FE_UNDERFLOW)
is raised.
-
errno
is not set for this case.
VERSIONS
These functions first appeared in glibc in version 2.1.
CONFORMING TO
C99, POSIX.1-2001.
NOTES
This function had to be called "true gamma function"
since there is already a function
gamma(3)
that returns something else (see
gamma(3)
for details).
BUGS
If
x
is negative infinity,
errno
is not set (it should be set to
EDOM).
In glibc versions 2.3.3 and earlier,
an argument of +0 or -0 incorrectly produced a domain error
(errno
set to
EDOM
and an
FE_INVALID
exception raised), rather than a pole error.
SEE ALSO
gamma(3),
lgamma(3)
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- RETURN VALUE
-
- ERRORS
-
- VERSIONS
-
- CONFORMING TO
-
- NOTES
-
- BUGS
-
- SEE ALSO
-
This document was created by
man2html,
using the manual pages.
Time: 02:54:54 GMT, September 18, 2014


postmaster - PostgreSQL database server
postmaster [option...]
postmaster is a deprecated alias of postgres.
postgres(1)


top
|
up
|
prev
|
next
ConcreteNodeCreator<T> Abstract Class
Definition at line
173
of
Node.cpp
Constructors
ConcreteNodeCreator
()
ConcreteNodeCreator
(
const
ConcreteNodeCreator
&)
delete
Member Functions
Node
*
CreateNode
(
const
Span& span,
const
boost::uuids::uuid& moduleId)
override
ConcreteNodeCreator
&
operator=
(
const
ConcreteNodeCreator
&)
delete
Constructor Details
ConcreteNodeCreator Constructor
sngcm::ast::ConcreteNodeCreator::ConcreteNodeCreator()
Definition at line
176
of
Node.cpp
:
176
:
NodeCreator
(
)
{
}
ConcreteNodeCreator Constructor
sngcm::ast::ConcreteNodeCreator::ConcreteNodeCreator(
const
ConcreteNodeCreator
&)
delete
Definition at line
177
of
Node.cpp
Member Function Details
CreateNode Member Function
Node
* sngcm::ast::ConcreteNodeCreator::CreateNode(
const
Span& span,
const
boost::uuids::uuid& moduleId)
override
Definition at line
179
of
Node.cpp
:
180
{
181
return
new
T
(
span
,
moduleId
)
;
182
}
operator= Member Function
ConcreteNodeCreator
& sngcm::ast::ConcreteNodeCreator::operator=(
const
ConcreteNodeCreator
&)
delete
Definition at line
178
of
Node.cpp
top
|
up
|
prev
|
next


--- layout: post title: "Tennis kata using the State pattern" description: "An example of using the State design pattern." date: 2021-05-24 7:03 UTC tags: [Unit Testing, Design Patterns] --- {% include JB/setup %}
{{ page.description }}
Regular readers of this blog will know that I keep coming back to the tennis kata. It's an interesting little problem to attack from various angles.
I don't think you have to do the kata that many times before you realise that you're describing a simple state machine. A few years ago I decided to use that insight to get reacquainted with the State design pattern.
In this article I'll show you what the code looks like.
As part of the exercise, I decided to stay close to the pattern description in Design Patterns. The public API should be exposed as a single class that hides all the internal state machinery. In the general pattern description, this class is called Context
. The TCP example given in the book, however, calls the example class TCPConnection
. This indicates that you don't have to use the word context when naming the class. I chose to simply call it Game
:
public class Game { public Game() : this(new Points(Point.Love, Point.Love)) { } public Game(IScore score) { Score = score; } public IScore Score { get; internal set; } public void BallTo(Player player) { Score.BallTo(player, this); } }
Since the Game
class delegates all behaviour to its Score
property, it's basically redundant. This may be a degenerate example, but as an exercise of staying true to the pattern, I decided to keep it. It's the class that all tests work through.
All tests look similar. This parametrised test verifies what happens after deuce:
[Theory] [InlineData(Player.One)] [InlineData(Player.Two)] public void ScoreDeuce(Player winner) { var sut = new Game(Deuce.Instance); sut.BallTo(winner); Assert.Equal(new Advantage(winner), sut.Score); }
This is code that I wrote years ago, so it uses xUnit.net 2.3.1 and runs on .NET Framework 4.6.1, but I don't think it'd have looked different today. It follows my heuristic for formatting unit tests.
The equality assertion works because Advantage
has structural equality. In this exercise, I found it simpler to declare types as value types instead of overriding Equals
and GetHashCode
:
public struct Advantage : IScore { public Advantage(Player player) { Player = player; } public Player Player { get; set; } public void BallTo(Player winner, Game game) { if (winner == Player) game.Score = new CompletedGame(winner); else game.Score = Deuce.Instance; } }
This turned out to be possible throughout, since all types emerged as mere compositions of other value types. The above Advantage
struct, for example, adapts a Player
, which, unsurprisingly, is an enum
:
public enum Player { One = 0, Two }
One of the states holds no data at all, so I made it a Singleton, as suggested in the book. (Contrary to popular belief, I don't consider Singleton an anti-pattern.)
public struct Deuce : IScore { public readonly static IScore Instance = new Deuce(); public void BallTo(Player winner, Game game) { game.Score = new Advantage(winner); } }
Since it's a Singleton, from an equality perspective it doesn't matter whether it's a value or reference type, but I made it a struct
for consistency's sake.
In the State design pattern's formal structure, the Context
delegates all behaviour to an abstract State
class. Since I consider inheritance harmful (as well as redundant), I instead chose to model the state as an interface:
public interface IScore { void BallTo(Player winner, Game game); }
As the pattern suggests, the State object exposes methods that take the Context as an extra parameter. This enables concrete State implementation to change the state of the Context, as both the above structs (Advantage
and Deuce
) demonstrate. They both implement the interface.
When I do the kata, I always seem to arrive at five distinct states. I'm not sure if this reflects the underlying properties of the problem, or if it's just because that's what worked for me years ago, and I'm now stuck in some cognitive local maximum. In any case, that's what happened here as well. Apart from the above Advantage
and Deuce
there's also a Forty
implementation:
public struct Forty : IScore { public Forty(Player player, Point otherPlayerPoint) { Player = player; OtherPlayerPoint = otherPlayerPoint; } public Player Player { get; } public Point OtherPlayerPoint { get; } public void BallTo(Player winner, Game game) { if (Player == winner) game.Score = new CompletedGame(winner); else if (OtherPlayerPoint == Point.Thirty) game.Score = Deuce.Instance; else if (OtherPlayerPoint == Point.Fifteen) game.Score = new Forty(Player, Point.Thirty); else game.Score = new Forty(Player, Point.Fifteen); } }
Another thing that I've also noticed when doing the Tennis kata is that the state logic for advantage and deuce is simple, whereas the state transitions involving points is more complicated. If you think Forty
looks complicated, then consider Points
:
public struct Points : IScore { public Points(Point playerOnePoint, Point playerTwoPoint) { PlayerOnePoint = playerOnePoint; PlayerTwoPoint = playerTwoPoint; } public Point PlayerOnePoint { get; } public Point PlayerTwoPoint { get; } public void BallTo(Player winner, Game game) { var pp = PlayerPoint(winner); var opp = PlayerPoint(winner.Other()); if (pp == Point.Thirty) game.Score = new Forty(winner, opp); else if (winner == Player.One) game.Score = new Points(Increment(PlayerOnePoint), PlayerTwoPoint); else game.Score = new Points(PlayerOnePoint, Increment(PlayerTwoPoint)); } private Point PlayerPoint(Player player) { if (player == Player.One) return PlayerOnePoint; else return PlayerTwoPoint; } private static Point Increment(Point point) { if (point == Point.Love) return Point.Fifteen; else return Point.Thirty; } }
The last IScore
implementation represents a completed game:
public struct CompletedGame : IScore { public CompletedGame(Player player) { Player = player; } public Player Player { get; } public void BallTo(Player winner, Game game) { } }
In a completed game, the BallTo
implementation is a no-op, because Player
has already won the game.
Here's a few more tests, just to back up my claim that all tests look similar:
[Theory] [InlineData(Player.One, Point.Love)] [InlineData(Player.One, Point.Fifteen)] [InlineData(Player.One, Point.Thirty)] [InlineData(Player.Two, Point.Love)] [InlineData(Player.Two, Point.Fifteen)] [InlineData(Player.Two, Point.Thirty)] public void FortyWins(Player winner, Point otherPlayerPoint) { var sut = new Game(new Forty(winner, otherPlayerPoint)); sut.BallTo(winner); Assert.Equal(new CompletedGame(winner), sut.Score); } [Theory] [InlineData(Player.One)] [InlineData(Player.Two)] public void FortyThirty(Player player) { var sut = new Game(new Forty(player, Point.Thirty)); sut.BallTo(player.Other()); Assert.Equal(Deuce.Instance, sut.Score); }
The second of these test methods uses an extension method called Other
:
public static class PlayerEnvy { public static Player Other(this Player player) { if (player == Player.One) return Player.Two; else return Player.One; } }
As is my custom, I named the class containing the extension method with the Envy
suffix, because I often consider this kind of extension method a sign of Feature Envy. Alas, in C# you can't add methods to an enum
.
Implementing the tennis kata with the classic State pattern is straightforward.
After having spent the majority of the last decade with functional programming, I've come to realise that many problems are really just state machines waiting to be revealed as such. Implementing a finite state machine in a language with algebraic data types is so easy that you often reach for that kind of modelling.
Before I learned functional programming, when all I knew was procedural and object-oriented code, I rarely thought of problems in terms of finite state machines. Now I see them everywhere. It's an example of how learning a completely different thing can feed back on everyday programming.
Once you recognise that a problem can be modelled as a finite state machine, you have new options. If you're in a conservative context where colleagues aren't keen on fancy FP shenanigans, you can always reach for the State design pattern.
Comments
Do you think that perhaps you are at risk of making too many problems look like nails for your state machine hammer? :-) Actually, you just want to convert a pair of points into a tennis score. That doesn't require a state machine, I don't think:
Jim, thank you for writing. You're right: a state machine isn't required. It's a nice judo trick to keep track of the server and receiver points as two different numbers. That does simplify the code.
I tried something similar many years ago (after all, the kata description itself strongly hints at that alternative perspective), but for various reasons ended with an implementation that wasn't as nice as yours. I never published it. I've done this exercise many times, and I've only published the ones that I find can be used to highlight some interesting point.
The point of doing a coding kata is to experiment with variation. The goal isn't always to reach the fewest lines of code, or complete the exercise as fast as possible. These can be interesting exercises in their own rights, but by doing a kata with other constraints can be illuminating as well.
My goal with this variation was mainly to get reacquainted with the State pattern. Actually 'solving' the problem is a requirement, but not the goal.
Modelling the problem with the State pattern has advantages and disadvantages. A major advantage is that it offers an API that enables client code to programmatically distinguish between the various states. When I did the exercise similar to your code, asserting against a string is easy. However, basing an API on a returned string may not be an adequate design. It's okay for an exercise, but imagine that you were asked to translate the scores. For example, in Danish, advantage is instead called fordel. Another requirement might be that you report players by name. So, for example, a Danish score might instead require something like fordel Serena Williams.
Don't take this as a criticism of your code. Sometimes, you don't need more than what you've done, and in such cases, doing more would be over-engineering.
On the other hand, if you find yourself in situations where e.g. translation is required, it can be helpful to be aware that other ways to model a problem are available. That's the underlying benefit of doing katas. The more variations you do, the better prepared you become to 'choose the right tool for the job.'
All that said, though, with the tennis kata, you can make it trivially simple modelling it as a finite state automaton.


Andrii Divnych
Log in
Thank you for staying with us
Now, please log in to explore lessons
Email address
Password
Log in