AuthentiGo
Simple Golang tool that work as a "plug-and-play" executable for authenticate your webapplication
Getting Started
Documentation
During the development of every internal tools, 90% of the time it's request to create an "authentication layer" in order to restrict the access to the services only to the person admitted.
In some circonstances you can simply pick up an external webserver (like nginx/apache/happroxy) and proxypass/reroute the service. If you are the root of the machine you can also forward the traffic only to the people admitted to receive it by forwarding the TCP traffic only to the customer allowed.
But what in case that you are a little IT Specials that can't touch the enviroinment and want to restrict the access to a service using an authentication layer?
Taaa dan!
This tool is developed for have few HTTP API interfaces in order:
- Registration layer for save customers into a database;
- Login layer in order to get access to the services to the customer that have previously registered;
- Restrict access to the service only for the customer that are allowed;
Features
-
Login phase:
-- Purpouse:
1) Auth is needed in order to receive the token; 2) Retrict the access
-- Capabilites:
* *Input valdation methods* * *BasicAuth headers welcome* * *Verify if user match with the one in MongoDB* * *Generate token and set it into Redis*
-
Registration
-- Purpouse:
1) Save the user that can access to the services
-- Capabilities:
* *Input valdation methods* * *BasicAuth headers welcome* * *Persistent data saved into MongoDB*
-
Verification
-- Purpouse:
1) Create a middleware for "proxypass" the request 2) Verify the authentication of every request 3) Be as much "standard" as possibile in order to be used without integration issue 4) Have a performing verification layer that can be scaled @runtime
-- Capabilites:
* *RESTfull implementation* * *Input valdation methods* * *Redis authentication for great performance*
The tool is intended to:
- Run only on Linux machine (test on windows is appreciated);
- Bind the necessary network resources over a network device that can expose data to the network (ex: <IP_ADDRESS>);
- Consume as much low memory as possible (gzip data if request by the client);
- Be scalable;
- Don't steal time to the request
During the development of the source code, I'll will try as much as i can to write modular function that can be replaced or swapped. Feel free to copy and paste the code without ask, but please license your code as a MIT licensed software
Prerequisites
The installation process is described only for Linux machine.
The software is coded in:
- Golang
The software use two different database:
- MongoDB -- Used for store the data of the customer;
- Redis -- Used for store the token of the customer in order to speed up the authentication process;
For run the software you need:
- Golang
- MongoDB
- Redis-Server
1) Install Golang
In order to install golang in your machine, you have to run the following commands:
- NOTE:
- It's preferable to don't run these command as root. Simply
chown
theroot_foolder
of golang to be compliant with your user and run the script. - Run this "installer" script only once
- It's preferable to don't run these command as root. Simply
golang_version="1.12.4"
golang_link="https://dl.google.com/go/go$golang_version.linux-amd64.tar.gz"
root_foolder="/opt/GOLANG" # Set the tree variable needed for build the enviroinment
go_source="$root_foolder/go"
go_projects="$root_foolder/go_projects"
mkdir $root_foolder # creating dir for golang source code
cd $root_foolder # entering dir
wget $golang_link #downloading golang
tar xf $(ls | grep "tar") # extract only the tar file
mkdir go_projects
echo '
export GOPATH="$go_projects"
export GOBIN="$GOPATH/bin"
export GOROOT="$go_source"
export PATH="$PATH:$GOROOT/bin:$GOBIN"
' >> /home/$(whoami)/.bashrc
source /home/$(whoami)/.bashrc
go version
After running these command, you have to be able to see the golang version installed.
2) Install MongoDB
In order to install MongoDB (and some related usefull utils), you have to run the following commands:
The following operations have to be done as root
```bash
mkdir -p /opt/RPMs/MONGO
cd /opt/RPMs/MONGO
MONGO_VERSION="4.0.9-1.el7.x86_64"
wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/RPMS/mongodb-org-server-$MONGO_VERSION.rpm
wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/RPMS/mongodb-org-mongos-$MONGO_VERSION.rpm
wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/RPMS/mongodb-org-tools-$MONGO_VERSION.rpm
wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/RPMS/mongodb-org-shell-$MONGO_VERSION.rpm
for i in $(ls); do echo "|Installing ==== $i ====|"; sudo rpm -Uvh $i ; done
sudo service mongod start
```
3) Install Redis
In order to compile Redis from source, you have to run the following commands:
The following operations have to be done as root
```bash
mkdir /opt/Redis
cd $_
REDIS_VERSION="5.0.4"
wget http://download.redis.io/releases/redis-$REDIS_VERSION.tar.gz
tar xf redis-$REDIS_VERSION.tar.gz
cd redis-$REDIS_VERSION
for i in `find . -type f | grep -v git` ; do sed -i 's/-O[[:digit:]]/-Ofast/g' $i ; done
make
make install
echo 512 > /proc/sys/net/core/somaxconn
echo vm.overcommit_memory = 1 >> /etc/sysctl.conf
sysctl -p
```
AUTOMATED CONFIGURATION:
Redis came with an usefull script for automatize the install the server. If you want to use the default configuration provided, use the following command:
```bash
cd utils
bash install_server.sh
```
Now you have to press enter for confirm the default configuration location.
Post Prerequisites
NOTE:
- It's preferable to logout and login to the system for a fresh reload of the configuration after have installed all the packaged listed below.
Installing
The dependendencies used by the tool can be downloaded as following: NOTE:
```bash
go get -v -u github.com/valyala/fasthttp
go get -v -u github.com/valyala/gozstd
go get -v -u github.com/sirupsen/logrus
go get -v -u github.com/onrik/logrus/filename
go get -v -u github.com/go-redis/redis
go get -v -u github.com/globalsign/mgo
go get -v -u github.com/globalsign/mgo/bson
go get -v -u github.com/alessiosavi/GoUtils # Download the code
```
Than you have to download it manually
```bash
cd $GOPATH/src
git clone --recursive git@github.ibm.com:Alessio-Savi/AuthentiGo.git
cd AuthentiGo
go build
```
Running the tests
go test -v test/authentigo_test.go
Deployment
You can deploy the application in two methods:
- Deploy the executable in your remote machine
- Build the source in your local machine
- Deploy the executable
- Copy the code to you remote machine, run the following commands
scp -r authentigo.go auth/ user@machine.preprodiction.log:/home/no_sudo_user/AuthentiGo #Copy the code into your user folder
ssh<EMAIL_ADDRESS># Log in into the machine
cd /home/no_sudo_user/AuthentiGo
Now that you have a fresh version of the code and you are in the directory of the sources file
```bash
exe="authentigo" # Name of the executable generated
code="authentigo.go" # Name of the main source code
echo "Killing the process ..."
pkill $exe # Killing all process that are named like $exe value
echo "Deleting old code ..."
truncate -s0 $code # Empty the file containing the old code
echo "Copy your code"
vi $code # Paste the code here
echo "Cleaning old compilation files ..."
go clean # Remove build executable
echo "Copy the new utilies sources files ..."
cp -r $code auth/ $GOPATH/src/authentigo # Copy the code into the $GOPATH
echo "Building new executables ... "
go build $code
echo "Stripping debug symbols"
strip -s $exe
mkdir logs # create a folder for the logs
nohup ./$exe -path utils -port 8080 > logs/logs.txt & # Just run in background
```
Built With
- FastHTTP - HTTP Framework | Tuned for high performance. Zero memory allocations in hot paths. Up to 10x faster than net/http
-
logrus - Pretty logging framework | Not the fastest but
very cool and customizable
- filename - Plugin for logrus | Used fo print the filename and the logline at each entries of the log
- redis - Useful framework for talk with Redis DB
- mgo - The MongoDB driver for Go
Contributing
- Feel free to open issue in order to require new functionality
- Feel free to open issue if you discover a bug
- New idea/request/concept are very appreciated!
Versioning
We use SemVer for versioning.
Authors
- Alessio Savi - Initial work & Concept - IBM Client Innovation Center [CIC]
License
This project is licensed under the MIT License - see the LICENSE.md file for details
Acknowledgments
This backend tool it's intended to run over a VPN and be served "proxypassed & secured" by a webserver like Apache or Nginx, in order to crypt the traffic and provide a good layer of security.
However, few basic security enhancements will be developed just for fun.
DO NOT RUN THIS TOOL AS SUDOUSERS - ROOT


Statistical Pattern Recognition Toolbox (STPRtool).
Version 2.06 18-Sep-2006
Bayesian classification.
bayescls - Bayesian classifier with reject option.
bayesdf - Computes decision boundary of Bayesian classifier.
bayeserr - Computes Bayesian risk for 1D case with Gaussians.
Linear Discriminant function.
linclass - Linear classifier.
ekozinec - Kozinec's algorithm for eps-optimal hyperplane.
mperceptron - Perceptron to train multi-class linear classifier.
perceptron - Perceptron to train binary linear classifier.
fld - Fisher Linear Discriminant.
fldqp - Fisher Linear Discriminant using QP.
Generalized Anderson's task.
andrerr - Classification error of the Generalized Anderson's task.
androrig - Original method to solve the Anderson's task.
eanders - Epsilon-solution of the Generalized Anderson's task.
ganders - Solves the Generalized Anderson's task.
ggradander - Generalized gradients approach to Gen. Anderson's task.
Linear feature extraction.
linproj - Linear data projection.
lda - Linear Discriminant Analysis.
pca - Principal Component Analysis.
pcarec - Computes reconstructed vector after PCA projection.
Miscellaneous methods.
adaboost - AdaBoost algorithm.
adaclass - AdaBoost classifier.
cerror - Computes classification error.
crossval - Partions data for cross-validation.
knnclass - k-Nearest Neighbours classifier.
knnrule - Creates K-nearest neighbours classifier.
roc - Computes Receiver Operator Characteristic.
weaklearner - Produces classifier thresholding single feature.
Kernel machines.
diagker - Returns diagonal of kernel matrix.
dualcov - Dual representation of covariance matrix.
dualmean - Computes dual representation of mean vector.
kdist - Computes distance between points in kernel space.
kernel - Evaluates kernel function.
kernelproj - Kernel projection.
kfd - Kernel Fisher Discriminant.
knorm - Computes L2-norm in kernel space.
kperceptr - Kernel Perceptron.
lin2svm - Merges linear rule and kernel projection.
minball - Minimal enclosing ball in kernel feature space.
rsrbf - Reduced Set Method for RBF kernel expansion.
rspoly2 - Reduced Set Method for homegeneous 2nd polynomial kernel.
Kernel feature extraction.
gda - Generalized Discriminant Analysis.
greedykpca - Greedy kernel PCA.
kpca - Kernel Principal Component Analysis.
kpcarec - Reconstructs image after kernel PCA.
Optimization methods.
gmnp - Generalized Minimal Norm (GMNP) problem.
gnnls - Generalized Non-negative Least Squares (GNNLS) problem.
gnpp - Generalized Nearest Point (GNPP) problem.
gridsearch - Function minimization using grid search.
Pre-image problem for RBF kernel.
rbfpreimg - Schoelkopf's fixed-point algorithm.
rbfpreimg2 - Gradient optimization.
rbfpreimg3 - Kwok-Tsang's algorithm.
Support Vector Machines.
bsvm2 - Solver for multi-class BSVM with L2-soft margin.
evalsvm - Training and evaluates SVM classifier.
mvsvmclass - Majority voting multi-class SVM classifier.
oaasvm - Multi-class SVM using One-Agains-All decomposition.
oaosvm - Multi-class SVM using One-Against-One decomposition.
smo - Sequential Minimal Optimization for SVM (L1).
svm1d - Linear SVM for 1-dimensional input data.
svm2 - Solver for binary SVM with L2 soft margin.
svmclass - Support Vector Machines Classifier.
svmlight - Interface to SVM^{light} software.
svmquadprog - SVM trained by Matlab Optimization Toolbox.
Probability distribution functions and estimation.
dsamp - Generates samples from discrete distribution.
erfc2 - Normal cumulative distribution function.
gmmsamp - Generates sample from Gaussian mixture model (GMM).
gsamp - Generates sample from Gaussian distribution.
kmeans - K-means clustering algorithm.
mahalan - Computes Mahalanobis distance.
pdfgauss - Computes probability for Gaussian distribution.
pdfgmm - Computes probability for Gaussian mixture model.
sigmoid - Evaluates sigmoid function.
emgmm - Expectation-Maximization Algorithm for GMM.
mlcgmm - ML estimation of GMM from complete data.
mlsigmoid - Fitting a sigmoid function using ML estimation.
mmgauss - Minimax estimation of Gaussian distribution.
rsde - Reduced Set Density Estimator.
Quadratic discriminant function.
lin2quad - Merges linear rule and quadratic mapping.
qmap - Quadratic data mapping.
quadclass - Quadratic classifier.
Visualization.
pandr - Visualizes solution of the Generalized Anderson's task.
pboundary - Plots decision boundary of given classifier in 2D.
pgauss - Visualizes set of bivariate Gaussians.
pgmm - Visualizes Gaussian mixture model.
pkernelproj - Plots isolines of kernel projection.
plane3 - Plots plane in 3d.
pline - Plots line in 2D.
ppatterns - Plots pattern as points in feature space.
psvm - Plots decision boundary of binary SVM classifier.
showim - Displays given image(s).
Data sets.
andersons_task - (dir) Input for demo on Generalized Anderson's task.
binary_separable - (dir) Input for demo on Linear classification.
gmm_sample - (dir) Input for demo on EM algorithm for GMM.
iris_data - (dir) Fisher's Iris data set.
mm_sample - (dir) Input for demo on Minimax Algorithm.
multi_separable - (dir) Linearly separable multi-class data.
ocr_numerals - (dir) Examples of hand-written numerals.
riply_data - (dir) Riply's data set.
svm_sample - (dir) Input for demo on SVM.
c2s - Converts cell to structure array.
createdata - Interactive data generator.
gencircledata - Generates data on circle corrupted by Gaussian noise.
genlsdata - Generates linearly separable binary data.
mergesets - Merges data sets to one labeled data file.
savestruct - Saves fields of given structure to file.
usps2mat - Converts USPS database to Matlab data file (MAT).
Demos.
image_denoising - (dir) Image denoising using kernel PCA.
ocr - (dir) Optical Character Recognition.
demo_anderson - Generalized Anderson's task.
demo_emgmm - Expectation-Maximization algorithm for GMM.
demo_kpcadenois - Idea of image denoising based on Kernel PCA.
demo_linclass - Algorithms learning linear classifiers.
demo_mmgauss - Minimax estimation of Gaussian distribution.
demo_ocr - Run OCR demo.
demo_pcacomp - Image compression using PCA.
demo_svm - Support Vector Machines.
demo_svmpout - Fitting a posteriori probability to SVM output.
compilemex - Compiles all MEX files of the STPRtool.
stprpath - Sets path to the STPRtool.
About: Statistical Pattern Recognition Toolbox
(C) 1999-2005, Written by Vojtech Franc and Vaclav Hlavac
Czech Technical University Prague
Faculty of Electrical Engineering
Center for Machine Perception
Modifications:
18-sep-2006, VF
09-sep-2005, VF
06-jun-2005, VF
24-jan-2005, VF
22-dec-2004, VF
14-dec-2004, VF
08-oct-2004, VF
27-aug-2004, VF
15-jun-2004, VF
11-jun-2004, VF
20-sep-2003, VF


Toggle navigation
i
SSH
Connect
Exit
MultiExec
{{ UserInfo.displayName }}
Sign Out
{{key}}
{{server.displayName}}
{{ server.ip }}{{(server.port == '22' ? '' : ':'+server.port )}}
<EMAIL_ADDRESS>== '22' ? '' : ':' + item.port }}
Disable this terminal from 'MultiExec' mode
<EMAIL_ADDRESS>== '22' ? '' : ':' + item.port }}
×
Connect to server
Host
:
Host is required
Invalid ip address
Port cannot less than 1
Port cannot more than 65535
Port must be an integer
User
User is required
User cannot be longer than 16 characters
User cannot contains any special characters
Password
Password is required
Password cannot be longer than 30 characters
DisplayName
Display name cannot contains any special characters
Display name cannot be longer than 30 characters
Group
{{item}}
New Group
New Group Name
Group name is required
Group name cannot contains any special characters
Group name cannot be longer than 15 characters
Save To Cloud
Save Password
{{ isEditServer ? 'Save' : 'Connect' }}
Delete
Cancel
×
Server Passwod
Password
Password is required
Password cannot be longer than 30 characters
Connect
i
SSH
ssh<EMAIL_ADDRESS>-p 8888


|
| static Vector3 | Barycenter (List< Vector3 > points) |
| | Compute the barycenter of a point set. More...
|
| |
| static float | DistanceToLine (Vector3 point, Vector3 lineDirection, Vector3 linePoint) |
| | Calculate the distance of a given point to a line. More...
|
| |
| static bool | IsSurfaceSelfIntersecting (List< Vector3 > points) |
| | Check if a polygon intersect itself. More...
|
| |
| static bool | IsSurfacePlanar (List< Vector3 > points, float threeshold=0.01f) |
| | Check if all points of a list can be contained in a single plane. More...
|
| |
| static Plane | GetPlane (List< Vector3 > points) |
| | Return the best plane that contains every points (if planar). More...
|
| |
| static int | FindEar (List< Vector3 > points) |
| | Find an ear in the polygon and return the first index of the 3 consecutives points composing the eat. More...
|
| |
| static Bounds | ComputeBoundingBox (List< Vector3 > points) |
| |
| static Mesh | Merge (IEnumerable< Mesh > meshes) |
| | Merge meshes into one. More...
|
| |
| static List< Face3 > | GetPlanarSubFaces (Face3 face) |
| | If the face is not planar, return a list a faces such as every face is planar and the union of faces equals this face. Returned faces may have loose parts. More...
|
| |
| static bool | IsInsidePolygon (Vector3 target, List< Vector3 > polygon) |
| | Return true if a point is inside a plygon described by a list of points. More...
|
| |
| static bool | IsInTriangle (Vector3 target, Vector3 a, Vector3 b, Vector3 c) |
| | Is target inside of the triangle abc ? More...
|
| |
| static int[] | Triangulate (List< Vector3 > points) |
| | Triangulate a polygone (all points must be differents!). Return the index of the triangles' points as in Unity's Mesh triangle property. More...
|
| |
| static void | UnwrapUV (Mesh mesh) |
| |
| static List< Vector2 > | Normalize (List< Vector2 > points) |
| | Return a copy of the given list scaled to fit within a square of size 1. More...
|
| |
| static Vector3 | GetSurfaceNormal (List< Vector3 > points) |
| |
| static Mesh | MergeVerticesByDistance (Mesh mesh, float threeshold=0.01f) |
| | Merge vertices when their distance to each others is bellow a given threeshold. More...
|
| |
| static Vector2Int | GetClosestPoints (Mesh mesh) |
| | Find the two points from mesh that are the closest to each other, and return their indexes. More...
|
| |
| static Mesh | MergeVertices (Mesh mesh, int vertice1, int vertice2) |
| | Merge two vertices into the first vertex location. More...
|
| |
| static Mesh | ForceNormalUp (Mesh mesh) |
| | Force all triangles to face upward. More...
|
| |
| static float | GetArea (Vector3 point1, Vector3 point2, Vector3 point3) |
| | Compute the area of a triangle. More...
|
| |
| static bool | IsTriangleFlat (List< Vector3 > triangle) |
| |
| static Mesh | RemoveFlatTriangles (Mesh mesh) |
| |
| static Mesh | GetBase (Mesh volume, float angleLimit, float stepLimit, float pointsMergeDistance=-1) |
| | Get the faces of the base of a volume. More...
|
| |
| static Mesh | GetCylinder (Vector3 position, Quaternion rotation, Vector3 scale, float radius, float height, int subdiv=16) |
| |
| static Mesh | GetBox (Vector3 position, Quaternion rotation, Vector3 scale, Bounds bounds) |
| |
| static Mesh | GetBox (Matrix4x4 transform, Bounds bounds) |
| |
| static bool | IsInside (Mesh mesh, Vector3 point) |
| | Check if a point is inside a mesh. More...
|
| |
Contains several useful functions for geometry computing.


File Descriptions
- BezierCurve.{h,cpp}
- Class modeling a 2D bezier curve
- BezierSurface.h
- Class modeling a 3D bezier surface
- Camera.{h,cpp}
- Camera class from previous work
- main.cpp
- Entry point, initializes, creates UI
Usage
To create a bezier curve, click New Curve and start adding points. Once there are at least
3 points the curve will become visible. Continued clicking adds more points.
To modify a curve, click Modify Points and click-drag points to change the curve.
To create a bezier surface, click New Surface and one will be created.
To rotate the view, click Camera Model and click-drag to change the view on the
curve/surface.
To change U, slide the U spinner from 0 to 1.
Known Issues
- Manual creation of surfaces is not implemented. One has its control points statically
defined.
- Shaded surfaces are not implemented. The quad strip is complete, but no normals are
specified.
- Camera rotation is off-axis. I was unable to see why exactly, as it is a direct use of
the camera class as before.
- Surfaces are not modifyable.


Across: 1,12,6dn. Change jumper? To me, no issues in great undertaking to dive into organic fabric (5 6 7) 4. Graduates, gets amazing praise... these are rungs on life's most important ladder! (4 5) 9. Dare let out being family? (7) 10. Bit of sputum gathered as DNA may be extracted (7) 11. Live in cut back units to convey gain (8) 12. see 1 across 14. Friend pursuing origin of Transylvanian count (5) 15. Luxury is finding effortless introduction for essay (8) 18. Most clearly defined DNA splicing technique has others losing rights (8) 20. see 21 down 22. Employs terrific burst of aphrodisiac (6) 24. Substitution which makes a scanner a sterner receptacle (8) 26. Laboratory equipment capturing right waveform (7) 27. Instructions for life: take this type of acid! (7) 28. Said how he felt about paying alimony? (9) 29. Important games which occur in laboratories (5) Down: 1. You fathered it... you provide inheritance! (8) 2. Cryptic clue in bizarre moral scale of mechanisms by which inheritance operates (9) 3. With fame, if not with skill (7) 4. Sect behold disintegrating linen where progenitor may have left DNA evidence? (10) 5. Commando hospital's decoration (4) 6. see 1 across 7. Small house with one good toilet (5) 8. Saturated solution of 21 dioxide establishes 27 origins (6) 13. Did study again, taking a second to be moderate (10) 16. Haemal evidence perhaps of small and large plates (9) 17. Samples taken along with additional CT scans initially (8) 19. Dot keeps active around cold and lonely base (7) 20. Loss of fur in sick Thai cur (7) 21,20ac. Intertwining of two forms essential part of our reproduction (6 5) 23. Leak about opening of "Hello Dolly" perhaps (5) 25. 17 from earth, that one 17 from forest? (4)


See: Description
| Interface | Description |
|---|---|
| ITextFieldKeys |
Class containing predicates for dealing with function keys for text fields.
|
| Class | Description |
|---|---|
| Button<T> |
Button widget class.
|
| ClosableComponent<S extends IComponent,T extends IComponent> |
A panel that can be opened and closed.
|
| ColorComponent |
Component representing a color-valued setting.
|
| ColorPicker |
Color picker field widget.
|
| ColorPickerComponent |
Full color picker with field and slider.
|
| ColorSliderComponent |
Returns color component consisting of sliders.
|
| CycleButton |
Component representing an enumeration-valued setting which cycles.
|
| CycleSwitch |
Component representing an enumeration-valued setting which cycles in both directions, by pressing embedded buttons.
|
| DropDownList |
Drop-down list widget.
|
| EmptySpace<T> |
Component that is supposed to function as the corner for scrollable components or other sorts of blank spaces.
|
| KeybindComponent |
Button representing a keybind.
|
| NumberSlider |
Component that represents a number-valued setting through a
Slider . |
| RadioButton |
Widget for radio button list.
|
| ResizableComponent<T extends IFixedComponent> |
A fixed component that can be resized.
|
| ScrollBar<T> |
Scroll bar for use in scrollable containers.
|
| ScrollBarComponent<S,T extends IComponent> |
Composite container containing a scroll component, which can be scrolled using scroll bars.
|
| SearchableRadioButton |
Radio list that can be searched via a search bar.
|
| Slider |
Base class for components that are sliders.
|
| Spinner |
A spinner for fine tuning numerical settings.
|
| TextField |
The text field widget.
|
| ToggleButton |
Button with two values that can be toggled by the left mouse button.
|
| ToggleSwitch |
Switch widget that can control a toggleable.
|


Africa is the world's second-largest and second-most populous continent, after Asia in both cases.At about 30.3 million km2 (11.7 million square miles) including adjacent islands, it covers 6% of Earth's total surface area and 20% of its land area.The continent is surrounded by the Mediterranean Sea to the north, the Isthmus of Suez and the Red Sea to the northeast, the Indian Ocean to the southeast and the Atlantic Ocean to the west.
Africa is the world's second-largest and second-most populous continent, after Asia in both cases.At about 30.3 million km2 (11.7 million square miles) including adjacent islands, it covers 6% of Earth's total surface area and 20% of its land area.The continent is surrounded by the Mediterranean Sea to the north, the Isthmus of Suez and the Red Sea to the northeast, the Indian Ocean to the southeast and the Atlantic Ocean to the west.


A logo design for the Yale-NUS newspaper, the erstwhile-titled "Panopt", whose name has since been changed to "The Octant".
The name for the magazine comes from Jeremy Bentham's Panopticon - a prison designed so that the warden was in the center of the prison. This allowed the warden sitting at the centre of the prison to effectively watch everyone in the prison at the same time. Terrible name for a newspaper? Possibly. Did I have a say in it? No. So let's crack on.
The idea started with a simplified diagram of the Panopticon.
The goal was to incorporate the design into the text somehow, effectively creating a logotype. I distilled the panopticon to its simplest form - a circle with a smaller circle in it - to suggest the visual identity of the panopticon, without being too literal about the whole thing. The next step was to pick the font.
Here I had some interesting choices. I narrowed it down to 3 - a sans-serif medium weight font, a more traditional newsy serif font and a light geometric font. Out of the three, the geometric font conveyed the idea clearest and was more modern to go with the modern nature of the newspaper and the content.


Welcome to the
Click here for more about
this website
Click here to go to the MCHS
website
Click here to go to the MCC
of OGS website
|
CDs of
important |
1851
Adams,
Rev. JosiahAdams
Published
Spirit of Democracy April 16, 1851
Death of Rev Josiah Adams
We
are under the painful necessity of announcing the death of another member of
the Pittsburgh Conference, Br. Josiah Adams, of New Lisbon, (O) station,
departed this life April 10th, after a short illness. This is, we think, the fourth member of the
Pittsburgh Conference that has been removed by death since the last session. -
Christian Advocate.
Addis,
Joseph Addis
Published
Spirit of Democracy Aug 13, 1851
Died
in Miltonsburgh, on the fifth ult., Joseph, son of Tohn B. Addis, aged 7 years.
Alexander,
Virginia Ann Alexander
Published
Spirit of Democracy July 2, 1851
On
Wednesday the 4th ultimo, Virginia Ann, daughter of Wm. B. and Susan
Alexander, of
Alford,
Jonas Alford
Published
Spirit of Democracy Jan 1 1851
Died - On Sunday the 29th inst., at his residence, in this
township, Mr. Jonas Alford, in the 75th year of his age.
Bockhouse, Mrs. Bockhouse
Published
Spirit of Democracy Sept 3 1851
Pittsburgh
Aug 29 - Mrs. Bockhouse, a highly respectable lady,
was run over today by the train between Alleghany and Sewekly,
and killed instantly.
Campbell,
Robert Campbell
Published
Spirit of Democracy Nov. 12, 1851
Died
- On the 4th inst., Robert, son of David and Margaret Campbell, aged
1 year and 9 months.
Craven,
Benjamin Craven
Published
Spirit of Democracy Dec. 10 1851
Died - At the residence of Jacob Norris, in this township, on the 6th
inst. Mr. Benjamin Craven of Belmont County.
Cunningham,
Ebenezer Cunningham
Published
Spirit of Democracy Dec. 31, 1851
Found Dead
Mr.
Ebenezer Cunningham of this (Olive) township, says the Noble County
Investigator, was found dead on Saturday morning lst,
in a field five or six miles from this place.
He has been missing for about two weeks and from the appearance of the
body it is supposed he had been dead for about that length of time. The last time he was seen, was on the evening
of the 25th November, near the spot where he was found, sitting by
the road side, in close companionship with a bottle. The reader may imagine the rest and make his
own comments.
Below
we give the verdict of the Coroner s jury on the case, which we have received
since writing the above.
We,
the undersigned jurors empanelled and sworn out the 13th day of
December,1851, at the township of Olive, in the county
of Noble, by John Banum, of said county, to inquire
and true presentment make, in what manner and by whom Ebenezer Cunningham,
whose body was found on the farm of Mary Tilton, in Olive township in said
county on the 13th day of December, 1851, came to his death. After having heard the evidence and examined
said body, we do find
that the deceased came to his death by drinking spirituous
liquors furnished by Nicholas Schriver.
Diehl,
George W. Diehl
Published
Spirit of Democracy April 16, 1851
Died - On Saturday morning the 5th inst., George W. infant
son of Mr. C Diehl, of this place, aged 2 months.
Driggs, Allen Driggs
Published
Spirit of Democracy Jan 15, 1851
We
copy the following of Allen A Driggs for the
Westchester Times. Allen A Driggs
We do
not know when our sympathies were so much touched, as they were when we read
the following mournful intelligence in the Woodsfield Spirit of Democracy, of
the 18th
inst. We have been
acquainted with Mr. Driggs for a number of years, and
a more whole hearted soul, we never had for an acquaintance. Our affections for one another were of the
strongest kind, a kind too, that none can feel but those who have endured the
same hardships together - both of us having served a fourteen month tour, in
the same company, during the late war with
Furnace,
Samuel Furnace
Published
Spirit of Democracy Sept 10, 1851
Departed
this life Sept. 7th 1851, at half past 1 o clock, P.M. at the residence of his
father-in-law, Joseph Reddin, in this place, in the
thirty first year of his age.
The
deceased left a wide circle of friends and relatives to mourn his early
departure - an amiable wife and dear little daughter to weep for a loss that
can only be repaired in Heaven, where he has gone.
The
writer of this believes he can say in truth, that our departed friend lived
without a fault, suffered nearly two years of most excruciating affliction
without a murmur - died without an enemy, and has gone home to glory. A
Neighbor.
Gray,
John A Gray
Published
Spirit of Democracy July 30, 1851
Died
- In this place, on Monday last, of Consumption, John A Gray,
aged about 31 years. The deceased leaves
a kind and affectionate wife and one child to mourn their irreparable loss.
Hamer, Lieut. T M Hamer
Published
Spirit of Democracy Aug. 20, 1851
Lieut.
T M Hamer, oldest son of Gen. T L Hamer,
deceased, died a few days since.
Hammond,
Mr. David Hammond
Published
Spirit of Democracy Oct. 8, 1851
Cholera
- The Belmont Chronicle, of last week, says:- We learn with regret that the
Cholera appeared in the house of Mr. David Hammond, of Mead township, in this
county, on last Saturday, and that by Monday Mr. Hammond, his wife and one son
fell victims to this fatal destroyer. We
have not heard whether the disease has spread further.
Harper,
Mr. Alexander Harper
Published
Spirit of Democracy Feb. 12 1851 Sad
Accident
As
the cars were about leaving
Harris,
Mr. Joseph Harris
Published
Spirit of Democracy Dec 24, 1851
Died - Near St. Clairsville, on the 6th
inst., Mr. Joseph Harris, in the 72d year of his age. Mr. Harris resided a number of years in
Belmont and Harrison counties, and was many years employed as a Clerk in one of
the departments at
Jeffries,
Joseph Jefferies
Published
Spirit of Democracy May 7, 1851
On the 3d inst., at his residence in this township, Joseph Jeffries,
aged about 50 years.
Jones,
Dr. John S Jones
Published
Spirit of Democracy July 9, 1851
Died
- In Beallsville, on Monday last Dr. John S Jones.
Landback, Samuel Landback
Published
Spirit of Democracy Mar. 26 1851
Died - On Sunday evening
last, in this place, at the residence of Mr. F Koehler, Samuel Landback a well known and much respected citizen.
Mansperger, John Mansperger
Published
Spirit of Democracy July 2, 1851
Thursday
the 5th ult., John, son of george
and Susannah Masperger, of
Martry, Ellen Martry
Published
Spirit of Democracy Dec. 17 1851 A Melancholy Affair
Died
- At the residence of Mr. Jacob Winemiller, in the
town of
The
subject of this notice came to this place, in April lst,
in company with a young man calling himself John R Martry,
(a tailor,) who professed to be a gentleman, having the protection and
guardianship of a beloved sister devolving upon him.-
They
remained here as brother and sister, until the 1st of July last,
when the wretch, finding he could no longer pass as the kind and affectionate
brother but must be recognized as the base deceiver and vile seducer of the
girl, eloped, leaving a young, confiding, and, as we believe, innocent female
among strangers in a strange land, far from the home of her youth and pennyless(sic). Since that time she passed her lingering
hours in the deepest mental agony, until the 4th instant, when she
gave birth to a daughter. The memories of
the past, the present and the future were too much to be bourne(sic)
by this young and delicate female, and she immediately passed into
puerperal(sic) convulsions and continued insensible to surrounding objects,
(despite of medical skill,) until Saturday morning the 6th inst.,
when the pale messenger, death, closed the scene.
Her
remains were, on Sunday, the 7th, genteelly and respectably interred
in the Methodist Episcopal burying ground, in
The
deceased was an industrious young girl, of modest and rather reserved habits;
and had, during her short stay among us, deserved and obtained friends by the
ladylike manner in which she demeaned herself.
After the guilty wretch left her, she declared they were married - that
her father s name was Green- that he lived in Allentown, Lehigh county, PA,
that she became ardently attached to John R Martry
and married him contrary to the wishes of her father-that they traveled
considerably, always passing as husband and wife until they came to
Barnesville, Belmont Co.,
There the heartless villain compelled her to pass as his
sister. She also stated that her parents
are wealthy - that Martry has a certificate of their
marriage in his possession, and other papers that will enable him, in the event
of her father s death, to receive anything that might be left her by him. If this statement be correct, the villain s
schemes ought to be frustrated, and the property, (if any) preserved for the
motherless, and worse than fatherless, babe.
A
fragment of a Journal was found in the possession of the deceased, supposed to
have been kept by Martry in which frequent mention is
made of the town of
John
R Martry is about five feet six inches high,
tolerably fair complexion, has a large nose and a small chin; is a tailor by
trade, and professes to be a kind of a lawyer. - The last account of him here
was that he was in
The
friends of the deceased will receive all the particulars by writing to Mr.
Jacob Winemiller, Dr. J M Stout or Dr. L F Ellsworth,
Calais, Monroe Co.,
The
Mason,
James P Mason
Mason,
Catharine Mason
Published
Spirit of Democracy Dec 3, 1851 Death
of James P Mason
A
telegraph dispatch was received here a few days since, from H M Boggess, announcing the death of James P Mason, late of
this place, and formerly Professor of Mathematics, in
This
is truly a terrible bereavement to his affectionate companion and little
children, as well as his numerous relatives and friends. But a few short weeks ago (and) the deceased
left here with his wife and children, accompanied by his father, mother, two
sisters, his brother-in-law, William Boggess, and his
two children, to seek a home in the West.
A few days after their arrival his sister Miss Catherine Mason was laid
in the silent tomb: and now the brother is called to his long home.
We
understand that they have all been sorely afflicted by the diseases incident to
a new country.
McElroy,
Mr. & Mrs. McElroy
Published
Spirit of Democracy Sept 3 1851
A
young couple named McElroy, while returning home from a party about one o clock
this morning, fell over a precipice called the Falls. McElroy was instantly killed, and the lady so
badly injured that she cannot survive.
Minor,
Theophilus Minor
Published
Spirit of Democracy Mar 5 1851
Died - On Sunday the 2d
inst., at his residence in this county, Theophilus
Minor, in the 84th year of his age.
Morris,
Harriet Morris
Published
Spirit of Democracy Mar. 26, 1851
On
the same day (Sunday) Harriet, daughter of Elihu Morris,
Esq., of
Neisz,
Katharina Magdalena Neisz
Katharina
Magdalena Neisz died September 2, 1851. She was born
February 2, 1847, the daughter of John and Christina Peppel
Neisz.
Nicholson,
Mrs. Rachel Nicholson
Published
Spirit of Democracy Oct. 15, 1851
Died-
On the 24th ult., at the residence of her daughter, Nancy Danford, in
Schmidt,
Elisabetha Schmidt
Elisabetha Schmidt died October 18, 1851, and her brother, Ludwig Schmidt died
October 21, 1851. Elisabetha was born January 26,
1837, and Ludwig was born May 28, 1841, the children of George and Christina Veyock Schmidt.
Simmons,
David Uriah Simmons
Published
Spirit of Democracy Dec. 31, 1851
Died
- On the 29th inst., David Uriah , son of
James N and Lucretia Simmons of this place, aged 1
year and 8 months.
Steward,
Dr. Steward
Published
Spirit of Democracy Aug. 20 1851
Died - On Monday last, Dr. Steward of Beallsville.
Terry,
Mr. Terry
Published
Spirit of Democracy June 18, 1851
Terry,
the editor of the Lynchburg Virginian, who was shot by young Sanders, died on
Sunday evening at 7 o clock.
Tolson, Alexander Tolson,
Jr.
Published
Spirit of Democracy May 7 1851
Died
- On the 2d inst., at the residence of Mr. Robert Smith, in this township,
Alexander Tolson, Jr., aged about 25 years.
Truax, Nathan Truax
Published
Sprit of Democracy July 2, 1851
Died
- At the residence of his father, in Sunsbury township, on the night of the 28th ult., Mr.
Nathan Truax, in the 24th year of his
age. The deceased was a young man of
exemplary habits, and was universally esteemed by his associates and
acquaintances. He was prosecuting the
study of medicine- the theme of his choice, with a fair prospect for long life
and usefulness, when the messenger death, appeared and struck its victim
down. The deceased has left a numerous circle of relatives and friends to mourn his unexpected
and premature departure. COM.
Walters,
Mrs. Walters
Published
Spirit of Democracy April 16, 1851
Mrs. Walters wife of Andrew Walters of
Way,
Mrs. Lydia Way
Published
Spirit of Democracy Jan 29 1851
Died
on Monday last, Mrs.
Williams,
Mr. Lewis Williams
Published
Spirit of Democracy June 11, 1851
The
editor was called from home before preparing any editorial for to-day s paper. By the death of his brother in law, Mr. Lewis Williams, of Wetzel
County, Virginia.
Yoho,
Peter Yoho Jr.
Published
Spirit of Democracy Oct 1, 1851
Died
- On Thursday morning last, in this township, Peter Yoho Jr., aged about 30
years.
Yoho, Peter Yoho, Jr.
Source: The Spirit of Democracy,
Peter YOHO, Jr., of this township, died Thursday
Last. He was about 30 years old.
Last
modified Oct. 12, 2009 by reh
Click here for the Short-Cut Table of Contents


Dhour Shweir Municipality Website
Technologies used: CSS, HTML, Javascript, Joomla.
Website: http://www.shweir.gov.lb/
The Objective
Refresh the municipality's website in a way that is useful for the people, and easy for the municipality to manage.
The Process
Writeup coming soon! The live site is linked above. Feel free to email me feedback and see more projects!


{% extends "about/about_base.html" %} {% load markdown_filter %} {% load static %} {# fmt:off #} {% block page_title %}The Team{% endblock page_title %} {% block page_heading %}
Building and maintaining Democracy Club's services is a long-term commitment, both in the run up to the elections held in May every year, and in keeping the underlying technology running year round.
Throughout the year, we also run an online community of around 1,000 members and a mailing list with 15K subscribers. Our volunteers are non-partisan, either interested in democracy, open source technology, or both.
The club is supported by a small core team and an experienced board of directors.
With a background in international development, Virginia pivoted to coding after working with startups and charities struggling with outdated products and systems. In a quest for better weather, Virginia moved from NYC to London in 2015.
Susan is strategic communications, capacity building and governance consultant, working internationally to communicate complex law and policy issues within human rights, citizenship, international development and democratisation/elections. She has worked in Iraq with the Electoral Management Commission, UNAMI and is a member of the OSCE-ODIHR Election Experts database and experienced observer. She is Chair of Learning for Life UK and a Trustee of South London Botanical Institute.
Democracy Club has been helped by many people along the way. We are grateful to them all, but some deserve a special mention:
Seb Bacon, Tim Green, Edmund von der Burg and Tom Steinberg for their initial work in 2010, and much help from Michael Collins and Eleesha Taylor-Barrett since.
Mark Longair for all his work on YourNextRepresentative.
Andy Lulham for support, feedback and code contributions and general top wombling.
Former board members Olly Benson, Rebecca Eligon, Sarah Hartley, Rebecca Kemp, Alison Walters, and Ian Watt.
Chris Shaw for "being the person who cared about WhereDoIVote the most". Without him the polling station finder wouldn't exist, and millions of people would still be looking for their polling station to this very day.
And last but not least, Joe Mitchell who took a leap in to Democracy Club, via a basement, after Sym spammed him once in 2014, and kept us afloat as co-coordinator for the best part of 5 years. He also wrote almost all the blog posts.
{% endblock %}


Gradient Descender
The GradientDescender class represents a gradient descent algorithm.
Use in initialising a NeuralNet
When initialising a NeuralNet, the gradient descender is passed to NeuralNetFactory.
Provided Gradient Descenders
There are two gradient descenders provided by default: Adam and Stochastic gradient descent.
Adam Gradient Descender
Adam gradient descent is the go-to gradient descent algorithm for most projects. It is a complex algorithm that uses a combination of many different learning rates, which each speed up or slow down independently while learning.
To create an AdamGradientDescender
with default settings, simply run
AdamGradientDescender gradientDescender = new();
This uses the settings reccommended by the creators of the algorithm. These settings work well for most projects. If you would like to set your own values, however, specify in any of the three hyper-parameters like so:
AdamGradientDescender gradientDescender = new(learningRate: ..., momentumDecay: ..., varianceDecay: ...);
With respect to the original article:
- learningRate
corresponds to α
- momentumDecay
corresponds to β1
- varianceDecay
corresponds to β2
Stochastic Gradient Descender
Stochastic gradient descent (also known as vanilla mini-batch gradient descent) is the simplest gradient descent algorithm. Adam gradient descent may be faster than stochastic gradient descent in most cases, but stochastic gradient descent is a safe fall-back if you suspect adam gradient descent is not suited for your project.
For example, if you think a learning rate of 0.001 is best for your project, you can create a StochasticGradientDescender
by
StochasticGradientDescender gradientDescender = new(learningRate: 0.001);
Stochastic gradient descent is far simpler than Adam gradient descent. Instead of dynamically speeding up or slowing down learning rates, stochastic gradient descent sticks with one single learning rate throughout the learning process. This means that picking the right learning rate is crucial, and will depend highly on your own project.
Making your own Gradient Descender (Technical)
If you have a gradient descent algorithm in mind, you can make your own gradient descender class.
To work with NeuralNet, and in particular, serialization, your class will have to:
- inherit from the abstract class GradientDescender
- implement all the hyper-parameters you need as fields
- annotate all the hyper-parameters you need with SerializableHyperParameter
- have a default constructor
- implement Parameter GradientDescentStep(Parameter gradient)
You will need to have read Parameter and SerializableHyperParameter before reading this.
Let's implement momentum gradient descent as an example:
First, we import the required namespaces for Parameter, GradientDescender
and SerializableHyperParameter respectively.
using NeuralNetLearning.Maths;
using NeuralNetLearning.Maths.GradientDescent;
using NeuralNetLearning.Serialization;
public class MomentumGradientDescender : GradientDescender
{
Next, we mark all the hyper-parameters that we want to be able to save and read in with SerializableHyperParameter. These hyper-parameters should be enough to fully reconstruct our gradient descender.
In this example, _learningRate
corresponds to η in the momentum gradient descent description, and _momentumRate
corresponds to γ.
[SerializableHyperParameter("learning rate")]
private readonly double _learningRate;
[SerializableHyperParameter("momentum rate")]
private readonly double _momentumRate;
[SerializableHyperParameter("past step")]
private Parameter _pastStep = null;
We then create our constructor for these fields. A default constructor is also required for the automatic serialization.
public MomentumGradientDescender(double learningRate, double momentumRate)
{
_learningRate = learningRate;
_momentumRate = momentumRate;
}
private MomentumGradientDescender()
: this(learningRate: 0.01, momentumRate: 0.9)
{ }
Finally, we implement the momentum gradient descent algorithm in Parameter GradientDescentStep(Parameter gradient)
. The function takes in the cost gradient of the weights and biases as a Parameter. This Parameter holds all the cost gradients of the corresponding weight/bias entries.
GradientDescentStep(...)
returns the step that should be made in parameter space to reduce cost. In other words, the return value will be added to the Parameter holding the weights and biases of the NeuralNet to reduce cost.
public override Parameter GradientDescentStep(Parameter gradient)
{
if (_pastStep == null)
_pastStep = ParameterFactory.Zero(gradient.LayerSizes);
Parameter step = -_learningRate * gradient + _momentumRate * _pastStep;
_pastStep = step;
return step; // in the NeuralNet class: parameter += step;
}
}


Guidance
How the Agency selects colleges for funding assurance reviews and how the related documents will be used by the SFA and appointed auditors.
ZIP , 1.59MB
If you use assistive technology (such as a screen reader) and need a version of this document in a more accessible format, please email<EMAIL_ADDRESS>. Please tell us what format you need. It will help us if you say what assistive technology you use.
PDF , 230KB , 7 pages
If you use assistive technology (such as a screen reader) and need a version of this document in a more accessible format, please email<EMAIL_ADDRESS>. Please tell us what format you need. It will help us if you say what assistive technology you use.
ZIP , 1010KB
If you use assistive technology (such as a screen reader) and need a version of this document in a more accessible format, please email<EMAIL_ADDRESS>. Please tell us what format you need. It will help us if you say what assistive technology you use.
This zip file contains documentation that the SFA’s provider financial management and assurance team and other appointed auditors will use to audit the adult skills budget, 16 to 18 provision (apprenticeships and traineeships) and EFA funded 16 to 19 provision for a sample of providers and to give their opinion on whether they comply with the funding rules. It includes an overview of the assurance approach and guidance notes for PDSAT users on how to review PDSAT report output.
Sets out proposals for how the Skills Funding Agency will select colleges for funding assurance reviews of their 2012 to 2013 data. It will be of interest to all colleges.
Documentation that will be used by the Agency’s appointed funding auditors to audit a sample of providers’ funding claims and to give their opinion on whether the providers’ 16 to 19 and adult skills budget and 16 to 18 apprenticeships funding claims comply with funding requirements.
An overview of the audit process is included within the E1 Assurance Overview and Planning Guidance document.
Documentation that will be used by the Agency’s auditors to audit a sample of providers’ adult skills budget provision and to give their opinion on whether this provision complies with the funding requirements.
Published: 7 March 2014
Updated: 24 October 2016


Please Register.
First Name
Last Name
Utep ID
email
Phone Number
Classification
Undergraduate
Graduate
Birth Date
Username
Password


Service
[Postman](https://www.getpostman.com/downloads/) | Postman is a collaboration platform for API development. Postman's features simplify each step of building an API and streamline collaboration so you can create better APIs—faster.
[SoapUI]() |
Auth / Tokens
[JWT.io](https://jwt.io/) | JSON Web Token decider/verifier


Reflections
Did you connect with any of the analogies for the mind?
I really liked the analogy of the mind being like a flag and mindfulness being like the flagpole. the flagpole keeps the mind stable even when the flag is all over the place.
What learnings did you take from the chapter?
I am really intrigued by the section about converting emotions from existential to physiological. This is a very practical and beneficial piece of advice.
How did you find the body scanning?
it is very cool, I feel like I'm going to need a lot more practice though


--- layout: nb-post title: "Python Kafka Client Benchmarking" author: John Dennison github: jofusa tags: [python, kafka] ---
NOTE: the code in shown notebook is hidden for better readability. To toggle on/off, click here.
Kafka is an incredibly powerful service that can help you process huge streams of data. It is written in Scala and has been undergoing lots of changes. Historically, the JVM clients have been better supported then those in the Python ecosystem. However, this doesn't need to be case! The Kafka binary protocol has largely solidified and many people in open source community are working to provide first class support for non-JVM languages.
In this post we will benchmark the three main Python Kafka clients. pykafka, python-kafka and the newest arrival confluent-kafka-client. This will also be useful as an introduction to the different clients in the python ecosystem and their high level APIs.
We are going to keep the setup simple and run a single broker that will auto-create topics with one partition. Please note this is a contrived setup. Any production deployment would be multi-broker and likely more partitions, but for simplicity sake we are going to use one.
Spin up a single Kafka 0.9 broker
We are going to produce and consume 1 million 100 bytes messages with each client.
We will require a producer acks
of 1. meaning that only the leader (we one have one broker anyways) needs to ack a message. Increasing this will ensure your data is not lost due to broker failure but will slow down production.
I am using the following versions:
pykafka 2.3.1
python-kafka 1.1.1
confluent-kafka-python 0.9.1
I ran these tests within Vagrant hosted on a MacBook Pro 2.2Ghz i7.
Like all benchmarks, take this with a grain of salt. A single broker on a local machine is hardly a production deployment. All settings are largely left to their defaults. Also, the amount of file caching broker does really help the client consumption speed. To help combat this we will rerun each consumption test to compensate for caching recently accessed data.
Even with all the normal stipulations, I hope you find this informative.
Installing clients can be complicated by the fact of some C extensions. We are big fans of conda and maintain python3 linux builds of some of these clients here with recipes here.
The easiest way is to use conda to install the clients:
conda create -n kafka-benchmark python=3 ipython jupyter pandas seaborn -y
source activate kafka-benchmark
conda install -c activisiongamescience confluent-kafka pykafka -y # will also get librdkafka
pip install kafka-python # pure python version is easy to install
If you would like to run this notebook please find the full repo here
Included in this repo is a docker-compose file that will spin up a single kafka 0.9 broker and zookeeper instance locally. We can shell out and start it with docker compose.
!docker-compose up -d
msg_count = 1000000
msg_size = 100
msg_payload = ('kafkatest' * 20).encode()[:msg_size]
print(msg_payload)
print(len(msg_payload))
bootstrap_servers = 'localhost:9092' # change if your brokers live else where
import time
producer_timings = {}
consumer_timings = {}
def calculate_thoughput(timing, n_messages=1000000, msg_size=100):
print("Processed {0} messsages in {1:.2f} seconds".format(n_messages, timing))
print("{0:.2f} MB/s".format((msg_size * n_messages) / timing / (1024*1024)))
print("{0:.2f} Msgs/s".format(n_messages / timing))
from pykafka import KafkaClient
def pykafka_producer_performance(use_rdkafka=False):
# Setup client
client = KafkaClient(hosts=bootstrap_servers)
topic = client.topics[b'pykafka-test-topic']
producer = topic.get_producer(use_rdkafka=use_rdkafka)
msgs_produced = 0
produce_start = time.time()
for i in range(msg_count):
# Start producing
producer.produce(msg_payload)
producer.stop() # Will flush background queue
return time.time() - produce_start
producer_timings['pykafka_producer'] = pykafka_producer_performance()
calculate_thoughput(producer_timings['pykafka_producer'])
If you are monitoring this function, you will notice that the produce loop completes and then the function stalls at the produce.stop()
. This is because the producer is asynchronous and batches produce calls to Kafka. Kafka's speed comes from the ability to batch many message together. To take advantage of this, the client will keep a buffer of messages in the background and batch them. So, when you call producer.produce
you are performing no external I/O. That message is queued in an in-memory buffer and the method returns immediately. So we are able to load the in-memory buffer faster then pykafka can send them to kafka. producer.stop()
will block until all messages are sent.
So when producing messages make sure you allow the producer to flush the remaining messages before you exit.
Another way to ensure that the messages where produced is to check the topic offsets.
client = KafkaClient(hosts=bootstrap_servers)
topic = client.topics[b'pykafka-test-topic']
print(topic.earliest_available_offsets())
print(topic.latest_available_offsets())
Pykafka has an optional producer backend that wraps the librdkafka package. librdkafka is a pure C kafka client and holds very impressive benchmarks. Let rerun our pykafka producer test with rdkafka enabled.
producer_timings['pykafka_producer_rdkafka'] = pykafka_producer_performance(use_rdkafka=True)
calculate_thoughput(producer_timings['pykafka_producer_rdkafka'])
def pykafka_consumer_performance(use_rdkafka=False):
# Setup client
client = KafkaClient(hosts=bootstrap_servers)
topic = client.topics[b'pykafka-test-topic']
msg_consumed_count = 0
consumer_start = time.time()
# Consumer starts polling messages in background thread, need to start timer here
consumer = topic.get_simple_consumer(use_rdkafka=use_rdkafka)
while True:
msg = consumer.consume()
if msg:
msg_consumed_count += 1
if msg_consumed_count >= msg_count:
break
consumer_timing = time.time() - consumer_start
consumer.stop()
return consumer_timing
_ = pykafka_consumer_performance(use_rdkafka=False)
consumer_timings['pykafka_consumer'] = pykafka_consumer_performance(use_rdkafka=False)
calculate_thoughput(consumer_timings['pykafka_consumer'])
# run it once thorough to warm the cache
_ = pykafka_consumer_performance(use_rdkafka=True)
consumer_timings['pykafka_consumer_rdkafka'] = pykafka_consumer_performance(use_rdkafka=True)
calculate_thoughput(consumer_timings['pykafka_consumer_rdkafka'])
kafka-python aims to replicate the java client api exactly. This is a key difference with pykafka, which trys to maintains "pythonic" api. In earlier versions of kafka, partition balancing was left to the client. Pykafka was the only python client to implement this feature. However, with kafka 0.9 the broker provides this, so the lack of support within kafka-python is less important.
from kafka import KafkaProducer
def python_kafka_producer_performance():
producer = KafkaProducer(bootstrap_servers=bootstrap_servers)
producer_start = time.time()
topic = 'python-kafka-topic'
for i in range(msg_count):
producer.send(topic, msg_payload)
producer.flush() # clear all local buffers and produce pending messages
return time.time() - producer_start
producer_timings['python_kafka_producer'] = python_kafka_producer_performance()
calculate_thoughput(producer_timings['python_kafka_producer'])
from kafka import KafkaConsumer
def python_kafka_consumer_performance():
topic = 'python-kafka-topic'
consumer = KafkaConsumer(
bootstrap_servers=bootstrap_servers,
auto_offset_reset = 'earliest', # start at earliest topic
group_id = None # do no offest commit
)
msg_consumed_count = 0
consumer_start = time.time()
consumer.subscribe([topic])
for msg in consumer:
msg_consumed_count += 1
if msg_consumed_count >= msg_count:
break
consumer_timing = time.time() - consumer_start
consumer.close()
return consumer_timing
_ = python_kafka_consumer_performance()
consumer_timings['python_kafka_consumer'] = python_kafka_consumer_performance()
calculate_thoughput(consumer_timings['python_kafka_consumer'])
With the latest release of the Confluent platform, there is a new python client on the scene. confluent-kafka-python is a python wrapper around librdkafka and is largely built by the same author. The underlying library is basis for most non-JVM clients out there. We have already mentioned it earlier when looking at pykafka.
import confluent_kafka
topic = 'confluent-kafka-topic'
def confluent_kafka_producer_performance():
topic = 'confluent-kafka-topic'
conf = {'bootstrap.servers': bootstrap_servers}
producer = confluent_kafka.Producer(**conf)
messages_to_retry = 0
producer_start = time.time()
for i in range(msg_count):
try:
producer.produce(topic, value=msg_payload)
except BufferError as e:
messages_to_retry += 1
# hacky retry messages that over filled the local buffer
for i in range(messages_to_retry):
producer.poll(0)
try:
producer.produce(topic, value=msg_payload)
except BufferError as e:
producer.poll(0)
producer.produce(topic, value=msg_payload)
producer.flush()
return time.time() - producer_start
producer_timings['confluent_kafka_producer'] = confluent_kafka_producer_performance()
calculate_thoughput(producer_timings['confluent_kafka_producer'])
client = KafkaClient(hosts=bootstrap_servers)
topic = client.topics[b'confluent-kafka-topic']
print(topic.earliest_available_offsets())
print(topic.latest_available_offsets())
import confluent_kafka
import uuid
def confluent_kafka_consumer_performance():
topic = 'confluent-kafka-topic'
msg_consumed_count = 0
conf = {'bootstrap.servers': bootstrap_servers,
'group.id': uuid.uuid1(),
'session.timeout.ms': 6000,
'default.topic.config': {
'auto.offset.reset': 'earliest'
}
}
consumer = confluent_kafka.Consumer(**conf)
consumer_start = time.time()
# This is the same as pykafka, subscribing to a topic will start a background thread
consumer.subscribe([topic])
while True:
msg = consumer.poll(1)
if msg:
msg_consumed_count += 1
if msg_consumed_count >= msg_count:
break
consumer_timing = time.time() - consumer_start
consumer.close()
return consumer_timing
_ = confluent_kafka_consumer_performance() # Warm cache
consumer_timings['confluent_kafka_consumer'] = confluent_kafka_consumer_performance()
calculate_thoughput(consumer_timings['confluent_kafka_consumer'])
The confluent_kafka client is crushingly fast. It can consume over 250K messages a second from a single broker. Note that the raw C client has been benchmarked at over 3 million messages/sec, so you see how much overhead python adds. But on the side of developer speed, you don't have to code in C!
import pandas as pd
import seaborn as sns
%pylab inline
consumer_df = pd.DataFrame.from_dict(consumer_timings, orient='index').rename(columns={0: 'time_in_seconds'})
producer_df = pd.DataFrame.from_dict(producer_timings, orient='index').rename(columns={0: 'time_in_seconds'})
consumer_df['MBs/s'] = (len(msg_payload) * msg_count) / consumer_df.time_in_seconds / (1024*1024)
producer_df['MBs/s'] = (len(msg_payload) * msg_count) / producer_df.time_in_seconds / (1024*1024)
consumer_df['Msgs/s'] = msg_count / consumer_df.time_in_seconds
producer_df['Msgs/s'] = msg_count / producer_df.time_in_seconds
producer_df.sort_index(inplace=True)
producer_df
consumer_df.sort_index(inplace=True)
consumer_df
producer_df.plot(kind='bar', subplots=True, figsize=(10, 10), title="Producer Comparison")
consumer_df.plot(kind='bar', subplots=True, figsize=(10, 10), title="Consumer Comparison")
This is not a complete overview of these clients. There are many trade-offs to consider before you jump and pick one. First, is the confluent and rdkafka version of pykafka are C backed and will not work with pypy. Also, packaging and distributing python packages with C extension can be a pain. We are big fans of conda to help alleviate this pain. We have package both pykafka, confluent-kafka-client and librdkafka on our public conda channel.
Another limitation of this benchmark approach that negatively affects the performance of pykafka and confluent_kafka is the lack of other work other then blindly ripping through messages. Pykafka uses a background thread to consume messages before you ever call consume()
. The vagaries of python threading and limitations of the GIL are beyond the scope of this post but keep in mind that pykafka's background will continue to poll brokers while you do work in your program. This effect is more pronounced for any work that is I/O bound.
The confluent_kafka client was released on May 25th, so while the underlying librdkafka is hardened as widely used, the python client is very fresh. Also, some of the metadata APIs are not exposed to the client. Specifically, we have found issues with the Offset API and Offset Commit/Fetch API, so getting the starting and ending offset for a partition and the current lag of a consumer group is not straight forward. Confluent seems committed to the client, so I'm sure a sane client metadata api will be added.
Not to devolve this post into the ravings of a petulant language zealot, but why should the JVM get all the goodies first! It is really exciting to see the python ecosystem around Kafka develop. Having first class Python support for Kafka is huge for our work here at Activision and for anyone who is interested in stream processing and streaming analytics.
!docker-compose down # Cleanup


Priceless diamond stolen in German museum heist
by NwaforDiamond thieves stole three ‘priceless’ sets of 18th-century jewellery from a German museum in an early-morning raid.
Ooni of Ife to inaugurate maiden Oduduwa Mobile Library(Opens in a new browser tab)
The Green Vault in Dresden has suffered an ‘immeasurable’ loss after burglars broke into the building in the early hours of Monday, officials said.
The thieves switched off a power supply at 5a.m. before breaking through a window into a museum which once boasted it was ‘as secure as Fort Knox’.
Once inside, they stole three sets of diamonds which were commissioned by Saxony’s ruler Augustus the Strong in an 18th-century show of power.
Museum experts have said the items are priceless and could never be sold, but report said that up to a billion Euros’ worth of treasures may have been stolen.
Two thieves were apparently caught on CCTV cameras inside the museum but they escaped in a getaway car and a manhunt has so far proved fruitless.
At a press conference this afternoon, museum director Marion Ackermann said staff were ‘shocked’ by the ‘brutality’ of the break-in.
Thieves smashed into a glass cabinet and made off with three sets of jewellery which were made for Augustus the Strong, the elector of Saxony in the 18th century, she explained.
Augustus competed with French monarch Louis XIV to assemble the most extravagant jewellery, she explained, describing the items stolen as ‘state treasures of the 18th century’.
The material worth of the jewellery was less important than the fact they had come as a set, Ackermann said.
Asked about the suggested value of a billion Euros (£850million), she said the value of the items stolen could not be quantified.
‘We’re dealing with priceless artistic and cultural treasures,’ she told reporters in Dresden.
Man docked over alleged theft of Church musical instruments(Opens in a new browser tab)
Police say they were alerted to the break-in at 4.59am and suspect that the thieves were behind an electrical fire which broke out nearby.
Shutting off the electricity may have helped the burglars to disable the museum’s alarm systems and also left the area in darkness, it is feared.
In addition, a burned-out vehicle was discovered nearby and detectives are now trying to track down the owner to establish if the fire was related to the theft.
Reports in Germany say the thieves were ‘noticeably small’ and able to fit through a tiny space in a window.
State police officers are now at the crime scene as they investigate how the thieves got inside and stole the jewellery.
‘We have not identified a perpetrator and nor have we yet made any arrests,’ police spokesman Marko Laske said.
At the press conference, police said that the cabinet in question had been made of special safety glass but that it was unclear how the thieves had got inside, perhaps by sawing through.
Detectives are now examining the video footage on which two people are seen, but others may have been waiting outside.
German federal police and authorities in neighbouring states have also been informed, police said.
However, a getaway car could be well on its way to the motorway within minutes of leaving the museum, they warned.
A notice on the museum’s website this morning states only that the building is closed today for ‘organisational reasons’.
State interior minister Roland Woeller said it was a ‘bitter day for the cultural heritage of Saxony’.
The thieves ‘stole cultural treasures of immeasurable worth – that is not only the material worth but also the intangible worth to the state of Saxony, which is impossible to estimate,’ he said.
A 1billion Euro art theft would be comfortably the largest in history, surpassing the 500million dollars raid on the Gardner Museum in Boston nearly 30 years ago.
Two thieves disguised as police officers stole 13 works of art from the Boston museum in March 1990 and the crime remains unsolved.
PDP should not attempt to cause violence in Kogi State — APC(Opens in a new browser tab)
The Dresden museum was founded in 1723 and houses thousands of items including historic coins and jewellery.
However, one of its most valuable treasures – a 41-carat naturally green diamond called the Dresden Green – is currently out on loan in New York.


Carry on Emmannuelle
Written by Graeme Huggan
Copyright 1998
This was the last Carry on movie (if you discount 'Carry on Columbus' as a Carry on movie) and was made by a new production company. Based in Central London, this movie is about the attempts by Emmanuelle Prevert (Suzanne Danielle) to bed her husband Emile the French Ambassador (Kenneth Williams). When he seems unwilling, she is given his permission to bed anyone she likes, such as the Prime Minister and the U.S.Ambassador. Her antics get her into trouble and the British press spread these rumours all over their front pages. She is invited to talk on television to set the record straight but only confirms the rumours instead. Meanwhile, Theodore Valentine (Larry Dann) is in love with Emmannuelle after a chance encounter in the toilet of the Concorde and is determined to marry her. However, she is only interested in restoring her husband's ardour which seems a little difficult after Emile's accident with a church spire!  It is embarassing to see some of the remaining regulars struggle through this diabolical script by Lance Peters and try to pull off some of the crude and tasteless jokes that he has written. Newcomers Suzanne Danielle and Beryl Reid (as Mrs.Valentine) are mildly funny, but Larry Dann as Theodore is excruciatingly bad. Kenneth Williams only appears in a few scenes and his lacklustre performance is warranted, given the script. The small parts for Jack Douglas as Lyons the butler, Joan Sims as Mrs.Dangle, Kenneth Connor as Leyland the chauffeur, and Peter Butterworth as Richmond, are worthless and embarassing. In fact, all four parts are surplus to requirements. However, the only humourous scene in the film is when the four of them and Emmannuelle talk about their most amourous escapades. An awful script, a terrible collection of jokes, very poor production values (especially the scene where Emmannuelle takes her clothes off at St.James Palace), a ludicrous and cringeworthy musical score, and a non-existent plot or storyline. Its just a succession of awful set pieces about who Emmannuelle will bed next! Jack Douglas is not so annoying but is more boring, Joan Sims and Peter Butterworth are wasted, and Kenneth Connor and Kenneth Williams put in some poor performances as Leyland and Emile. A complete waste of time, this movie was trying to catch up with the new sexually permissive Seventies. It was a Certificate 15 film but by 1978, there was little interest in this kind of film and it flopped at the box office and was only given its premiere on UK terrestrial television in April 1998! Avoid at all costs!
My rating:- 0.5 out of 5 stars.
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


Interacting with ENA Database¶
Data¶
Data in ENA are organzed into 11 domains (or type):
| Domain | Description |
|---|---|
| Assembly | Information describing the construction of reads and sequence contigs into higher order scaffolds and chromosomes |
| Sequence | Assembled and, optionally, annotated assembled reads |
| Coding | A virtual domain comprising sequence regions reported by data providers as being protein-coding regions |
| Non-coding | A virtual domain comprising sequence regions reported by data providers as representing non-protein-coding (RNA) genes |
| Marker | A virtual domain comprising information relating to phylogenetic, identification and molecular ecology marker data |
| Analysis | Derived data forms, such as recalibrated aligned reads and metabarcoding identifications |
| Read | Raw sequencing reads from next generation platforms |
| Trace | Raw sequencing data from capillary platforms |
| Taxon | Information relating to the organism that was the source of the sequenced biological sample |
| Sample | Information relating to the biological sample studied in the sequencing experiment |
| Study | Information relating to the scope of the sequencing effort; also known as ‘Project’, the primary use of study is to unite content otherwise dispersed across the ENA domains |
Each domains are further subdivided in some cases into data classes. It is the results that can be accessed:
| Domain | Result | Description |
|---|---|---|
| Assembly | assembly | Genome assemblies |
| Sequence | sequence_release | Nucleotide sequences (Release) |
| sequence_update | Nucleotide sequences (Update) | |
| wgs_set | Genome assembly contig sets (WGS) | |
| tsa_set | Transcriptome assembly contig sets (TSA) | |
| Coding | coding_release | Protein coding sequences (Release) |
| coding_update | Protein coding sequences (Update) | |
| Non-coding | noncoding_release | Non-coding sequences (Release) |
| noncoding_update | Non-coding sequences (Update) | |
| Analysis | analysis_study | Studies used for nucleotide sequence analyses from reads |
| analysis | Nucleotide sequence analyses from reads | |
| Read | read_experiment | Experiments used for raw reads |
| read_run | Raw reads | |
| read_study | Studies used for raw reads | |
| Sample | sample | Samples |
| Taxon | taxon | Taxonomic classfication |
| Environmental | environmental | Environmental samples |
| Study | Study | Studies |
This list can be accessed with get_results.
Each “result” can be searched, the outputs can be formatted and sorted given different fields. These fields are accessible via the commands:
- get_filter_fields to obtain the fields to build a query or filter (more information about the type of these filters with get_filter_types)
- get_returnable_fields to obtain the fields extractable for a result
- get_sortable_fields to obtain the fields usable to sort the outputs
Programmatic access¶
The data on ENA can be accessed programmatically, in ENASearch:
ENA database can be queried via search_data
Data with an accession id can be retrieved via retrieve_data
This function can not be used to
Retrieve taxonomic data
It must be done via the taxon portal with retrieve_taxons. The taxonomy results can be accessed via get_taxonomy_results
Retrieve a run file report via a study accession (ERP, SRP, DRP, PRJ prefixes), experiment accession (ERX, SRX, DRX prefixes), sample accessions (ERS, SRS, DRS, SAM prefixes) or a run accessions (ERR, SRR, DRR prefixes)
retrieve_run_report is used then. The fields accessible for the run report can be obtained with get_run_fields
Retrieve an analysis report via a study accession (ERP, SRP, DRP, PRJ prefixes), sample accession (ERS, SRS, DRS, SAM prefixes) or analysis accession (ERZ, SRZ, DRZ prefixes)
retrieve_analysis_report is used then. The fields accessible for the run report can be obtained with get_analysis_fields


Salutation Your given name Your family name
Your organization Your work email
Your timezone
How many employees need browser isolation?
I agree to the terms and conditions, privacy policy, data protection statement and consent to be contacted about this service.
Submit request I'm happy with my current solution.
Login email
Login password
Login Not now


{% extends "_base.html" %} {% block content %}
The latest stable and development code can be found on GitHub: http://www.github.com/ankitrohatgi/WebPlotDigitizer
Language Translation
To translate WebPlotDigitizer to your language of choice or correct existing translations, please email<EMAIL_ADDRESS>WebPlotDigitizer uses the GetText internationalization system and new translations can be easily added by editing .po files using a free software such as PoEdit.
Feature Requests and Bug Reports
To request new features or to report problems, feel free to drop me an email on<EMAIL_ADDRESS>or use the issue tracker on GitHub: https://github.com/ankitrohatgi/WebPlotDigitizer/issues
Collaborations and Extensions
Drop me an email on<EMAIL_ADDRESS>and we can have a chat.
Donate
If you like this project and want it to grow further, you can donate using the PayPal "Donate" button on the right side. If you wish to donate by other means then email me on<EMAIL_ADDRESS>and we can work it out.
I am grateful for the donations I have received so far and it certainly keeps me motivated to keep improving this program. The donations also make it feasible for me to keep paying for a good hosting service for this project.
{% endblock %}


Helidon project support for Visual Studio Code
This extension helps users to generate their first
Helidon project, develop and run it.
Requirements
Features
The Helidon extension provides:
- Helidon project creation wizard.
- Start/stop helidon dev.
(as you make source code changes the project will automatically recompile and restart your application)
- Autocomplition for the application.properties files.
How to generate Helidon Project
- Open Command Palette by shortcut you are using
(default: Ctrl+Shift+P).
- Start typing 'Helidon'.
- Choose 'Helidon: Generate a Helidon project'.
- Choose type of the Helidon project.
- Follow generator till the end.
- You will receive messages during the process and a request where do you want to open the
project.
- Your new project is generated.
How to start helidon dev
- Open Command Palette by shortcut you are using (default: Ctrl+Shift+P).
- Start typing 'Helidon'.
- Choose 'Helidon: Start helidon dev'.
- If workspace contains only one helidon project, helidon dev starts automatically.
If workspace contains more than one helidon project, you will be asked to choose a directory to start helidon
dev.
- You will find the server logs in the bottom panel in the output tab.
You can select a server to show the logs choosing project directory in the drop-down list.
How to stop helidon dev
- Open Command Palette by shortcut you are using (default: Ctrl+Shift+P).
- Start typing 'Helidon'.
- Choose 'Helidon: Stop helidon dev'.
- If workspace contains only one running helidon project, helidon dev stops automatically.
If workspace contains more than one running helidon project, you will be asked to choose a directory to stop
helidon dev.
Helidon Documentation
Helidon provides detailed documentation and guides
for its components.
Documentation
Guides
Do you
have a problem or question?
Let us know if you need help with Helidon on our
Slack channel or report an issue on our issue tracker.
Github issues
Slack
channel


{% extends "workflow/viewport-element.html" %} {% load staticfiles %} {% load bootstrap4 %} {% block content %}
Note that not all labs host every kind of machine. As you make your selections, labs and hosts that are not compatible with your current configuration will become unavailable.


WITNESS LIST Appropriations-S/C on Education Committee (Subcommittee on Education) February 5, 2001-8:00A Budget For: Cochran, Steve (Self) Kubecka, Bill (Self) On: Bennett, Kem (Texas Engineering Extension Service) Bowen, Ray (Texas A&M University) Bugh, Don (Texas Transportation Institute) Campbell, Helen (Texas Engineering Extension Service) Cisneros, Marc (Texas A&M - Kingsville) Douglas, Ronald (Texas A&M University) Estrada, Joseph (Texas A&M University) Fehlis, Chester (Texas Agriculture Extension Service) Furgason, Robert (Texas A&M University - Corpus Christi) Graves, Howard (Texas A&M University System) Haden, Clovis (Texas Engineering Experiment Station) Hersley, Stephen (Texas A&M University - Texarkana) Hiler, Edward (Texas A&M University - Ag Programs) Hines, Charles (Prairie View A&M University) Hull, James (Texas Forest Service) Jennett, Charles (Texas A&M International University) Keck, III, Ray (Texas A&M International University) Kelley, Judy (Texas Engineering Experiment Station) Kemp, Mike (Texas A&M University - Galveston) Klussmann, Wallace (Texas Agriculture Extension Service) Long, Russell (Self) McCabe, Dennis (Tarleton State University) McFarland, Keith (Texas A&M University - Commerce) Prock, Robert (Texas A&M University) Richardson, Herbert (Texas Transportation Institute) Walker, Clint (Self)


home
add
book
edit
contact_mail
hotel
marco
polo
Pool
menu
arrow_drop_down
Sign Out
Choose your Event
edit
delete
Event
Location/Date
Extra Info
Pick a Category
Free
Music
Entertainment
Sports
Parties
Sports
Category
Location
Time & Date
Description
Image URL


WITNESS LIST Judiciary Committee March 30, 2005-2:00P HB 934 On: Henderson, Mary T. (The Texas Attorney General) HB 1686 For: Schraub, BB (Self and Presiding Judges) Underwood, Olen (Presiding Judges of Regions) HB 2011 For: Lehmann, Jeff (Self) HB 2256 For: Spratt-Anderson, Melanie (Self) HB 2474 For: Morris, Rick (District Courts of Bell Co.) HB 2913 For: Klager, James E. (Self) Little, Tyner (Nueces County Commissioners Court) HB 3240 For: Brigance, John (Texas Bankers Association- Trust Division) May, Gordon D. (Self and Frost National Bank, Trustee- Austin Branch) Registering, but not testifying: For: Pratka, Hampton (The Frost National Bank (San Antonio)) HJR 87 On: Willing, Seana (State Commission on Judicial Conduct)


Password safety is very important when it comes to cyber security in general, but especially on the internet.


| Package | com.yahoo.social |
| Class | public class YahooUser |
// create a yahoo session object and pass into it the OAuth credentials, appid and a guid YahooSession.YAP_VIEWER = "12345"; YahooSession.YAP_OWNER = "67890" YahooSession.YAP_APPID = "your-appid"; var session:YahooSession = new YahooSession('$consumerKey', '$consumerSecret', '$accessToken', '$accessTokenSecret'); // retrieve the sessioned user var user:YahooUser = session.getSessionedUser();
| Property | Defined by | ||
|---|---|---|---|
| connections : ConnectionsRequest
[read-only]
The instance of the ConnectionsRequest API for this user.
| YahooUser | ||
| contacts : ContactsRequest
[read-only]
The instance of the ContactsRequest API for this user.
| YahooUser | ||
| guid : String [read-only]
The GUID of this user, a 26-character string which represents a Yahoo! user.
| YahooUser | ||
| lang : String = "en-US"
The language code query parameter used in all requests by an API method attached to this user.
| YahooUser | ||
| profile : ProfileRequest
[read-only]
The instance of the ProfileRequest API for this user.
| YahooUser | ||
| region : String = "US"
The region code query parameter represents a country territory in all requests by an API method attached to this user.
| YahooUser | ||
| session : YahooSession
[read-only]
The global YahooSession object.
| YahooUser | ||
| sessioned : Boolean [read-only]
Returns a boolean, true if this user is the currently sessioned viewer of the app.
| YahooUser | ||
| status : StatusRequest
[read-only]
The instance of the StatusRequest API for this user.
| YahooUser | ||
| updates : UpdatesRequest
[read-only]
The instance of the UpdatesRequest API for this user.
| YahooUser | ||
| yql : YQL
[read-only]
The instance of the YQL API for this user.
| YahooUser |
| Method | Defined by | ||
|---|---|---|---|
|
YahooUser(session:YahooSession, guid:String)
Class constructor.
| YahooUser | ||
|
setSmallView(content:String):void
Sets the small view for this user.
| YahooUser |
| connections | property |
connections:ConnectionsRequest
[read-only]The instance of the ConnectionsRequest API for this user.
Implementation public function get connections():ConnectionsRequest
See also
| contacts | property |
contacts:ContactsRequest
[read-only]The instance of the ContactsRequest API for this user.
Implementation public function get contacts():ContactsRequest
See also
| guid | property |
guid:String
[read-only]The GUID of this user, a 26-character string which represents a Yahoo! user.
Implementation public function get guid():String
See also
| lang | property |
public var lang:String = "en-US"
The language code query parameter used in all requests by an API method attached to this user. The language code must conform to RFC 4646.
Examples language codes:
The default value is en-US
See also
var user:YahooUser = _session.getSessionedUser(); user.lang = "fr-CA";
| profile | property |
profile:ProfileRequest
[read-only]The instance of the ProfileRequest API for this user.
Implementation public function get profile():ProfileRequest
See also
| region | property |
public var region:String = "US"
The region code query parameter represents a country territory in all requests by an API method attached to this user. The region code must conform to an ISO 3166-1 alpha-2 country code.
Example regions codes:
The default value is en-US
See also
var user:YahooUser = _session.getSessionedUser(); user.region = "DE";
| session | property |
session:YahooSession
[read-only]The global YahooSession object.
Implementation public function get session():YahooSession
| sessioned | property |
sessioned:Boolean
[read-only]Returns a boolean, true if this user is the currently sessioned viewer of the app.
Implementation public function get sessioned():Boolean
| status | property |
status:StatusRequest
[read-only]The instance of the StatusRequest API for this user.
Implementation public function get status():StatusRequest
See also
| updates | property |
updates:UpdatesRequest
[read-only]The instance of the UpdatesRequest API for this user.
Implementation public function get updates():UpdatesRequest
See also
| yql | property |
yql:YQL
[read-only]The instance of the YQL API for this user.
Implementation public function get yql():YQL
See also
| YahooUser | () | constructor |
public function YahooUser(session:YahooSession, guid:String)
Class constructor.
Creates a new YahooUser object.
This should not be called directly, but through the getUser
or getSessionedUser
methods of YahooSession.
This is in order to provide session and authentication information to the API methods attached to this user.
session:YahooSession — A YahooSession object.
|
|
guid:String — The GUID of the user.
|
See also
| setSmallView | () | method |
public function setSmallView(content:String):void
Sets the small view for this user. Supports only HTML and YML Lite
Parameterscontent:String — HTML and YML Lite contents.
|


Why Choose Us?
With passionates and mining experience, our team are committed to operate our nodes on a cloud-based infrastructure, utilizing 99.9% availability, scalability and security.
High Speed & Secure
1Gbps network connections
Cloud firewalls & DDoS protection
Highly Scalable
Dedicated cloud servers for each nodes
Distributed nodes across the globe
Reliable & Low Cost
24/7 with 99.99% uptime SLA
0% + Minimum fixed fee
How To Delegate To Us?
-
1
Go to delegate center
Download and create wallet. Navigate to delegation center after wallet synced with the blockchain.
-
2
Select stake pool
Selected your wallet for staking. Choose ADAM stake pool from the list of validators
-
3
Delegate your stake
Enter your spending password. Pay a small fee to delegate. Start waiting for staking reward after having received a congratulatory message.
Daedalus Wallet
- A desktop, full-node hierarchical deterministic (HD) wallet for ada cryptocurrency, bundled with full Cardano node.
- Stores the entire history of Cardano blockchain and validates all blocks and transactions for fully trustless and autonomous operation.
- Runs on Windows, Mac, and Linux operating systems
Yoroi Wallet
- A lite hierarchical deterministic (HD) wallet for ada cryptocurrency, running as a Chrome or Firefox extension.
- Connects to a full Cardano node hosted by a third party (Emurgo).
- Runs on Windows, Mac, and Linux, as well as iOS and Android.
Staking ADA is at zero-risk to you.
You can unstake or redelegate ADA at any time.
Staking rewards are paid in ADA into your wallet directly.
Frequently Asked Questions
What is Cardano?
Cardano is the world's first peer-reviewed blockchain. The nonprofit foundation responsible for Cardano assembled a network of academics and scientists from various universities, including the University of Edinburgh and Tokyo Institute of Technology, to review its protocols before they are released. It is a third-generation cryptocurrency and smart contract platform that claims to improve upon the scaling problems of bitcoin, a first-generation coin, and ethereum, which belongs to the second- generation.
What is ADA?
Ada Is The Native Token Of Cardano. It is named after Ada Lovelace: a 19th-century mathematician who is recognized as the first computer programmer, and is the daughter of the poet Lord Byron.
What can I do with ADA?
Ada is a digital currency. Any user, located anywhere in the world, can use ada as a secure exchange of value – without requiring a third party to mediate the exchange. Every transaction is permanently, securely, and transparently recorded on the Cardano blockchain. Every ada holder also holds a stake in the Cardano network. Ada stored in a wallet can be delegated to a stake pool to earn rewards – to participate in the successful running of the network – or pledged to a stake pool to increase the pool's likelihood of receiving rewards. In time, ada will also be usable for a variety of applications and services on the Cardano platform.
How do I buy/sell ADA?
You can buy or sell ada for fiat or other cryptocurrencies using cryptocurrency exchanges. As an ada holder, it is important to keep your funds secure, and that means you need to keep your private keys private. It is highly recommended to avoid keeping your cryptocurrency in an exchange longer than necessary, and instead to use a cryptocurrency wallet. We recommend either a full-node wallet like Daedalus, or the browser-based Yoroi.
What is staking?
Staking is the process of participating in transaction validation on a proof-of-stake (PoS) blockchain. It is through stake delegation (delegating your ADA to a pool) that rewards can be earned. Staking ADA delegates your wallet address to a pool, there is thus no need to be continuously online to stake as the pool you are delegating to has this responsibility. There is a minimum ADA requirement of ~10 ADA to stake and there is no lockup period. You can move your ADA at any time.
What is a stake pool?
Stake pools are run by stake pool operators. These are network participants with the skills to reliably ensure consistent uptime of a node, which is essential in ensuring the success of the Ouroboros protocol and the Cardano network as a whole.
Are there risks or downsides to staking?
No, there are no downsides to staking your ADA as long as you follow good security practices (Don't share your 24 word seed phrase + write these down on 2-3 pieces of paper and store them somewhere safe you will remember. These are a backup in case you need to restore your ADA wallet if your PC breaks/other incident). There is never a risk of losing your money through staking as you still have full control of those funds, not the stake pool / operator. Do not rush any transactions & take your time, consider sending a small test transaction amount if you are transferring to / from exchanges.
Is it expensive to do staking?
Staking has a 2ADA and some transaction costs as a deposit to the protocol. If you cancel the staking setting, the deposit fee of 2ADA will be refunded.
When will I be rewarded after delegating the pool?
The delegation to the validator, Cardano's PoS, becomes active after two selected epochs. The flow from the actual delegation to the payment of compensation is as follows. Example: Epoch 100 (Delegation) → Epoch 101 (Take a snapshot of delegation status) → Epoch 102 (Delegation becomes active) → Epoch 103 (Calculate reward) → Epoch 104 → (Payment of reward) Note that all pool operators only generate blocks. The payment schedule is the same for all pools. All payments for your rewards are automatically processed by the protocol and the pool operator has no access to or involvement in the rewards.
Do I need to be online to stake ADA?
No, if you are staking with Daedalus / Yoroi or other means you are delegating your wallet address (it is an interface). Closing your application will have no impact on rewards/ the staking process. The pool you are delegating to has the responsibility to stay online and process blocks for rewards that will be distributed to delegators.
Do I loose my rewards if I switch a stake pool?
No. You will get the rewards for the current epoch as the snapshot is taken at the beginning of each epoch.
What is wallet?
A wallet is a software program that creates, stores and manages access to the private and public key pairs that control funds on a blockchain. You can use different wallets but, as long as you’re using same private key, you would have access to the same funds on chain. Wallets in the Cardano ecosystem are Hierarchical Deterministic (HD) and based on the UTXO model - and for good reasons. Before diving into these terms, lets review the basics regarding keys.
What is Daedalus wallet?
Daedalus is a full-node desktop wallet developed by IOHK. Daedalus is unique in that it downloads a full copy of the Cardano blockchain and independently validates every transaction in its history. This provides maximum security and completely trustless operation, without centrally hosted third-party servers.
What is Yoroi wallet?
Yoroi is EMURGO's one-click-install, light wallet for Cardano. With Yoroi, it is not necessary to download a copy of the blockchain’s history. This makes it a simple, fast way to store and transact your ada (₳). Yoroi is the perfect day-to-day wallet for any Cardano user available as either a web-based extension or a downloadable app.
Where to download Daedalus wallet?
Please visit Daedalus to download and install the latest version of Daedalus wallet for the Cardano mainnet. Never download Daedalus from non-official, untrusted sources. Scammers may create fake copies of Daedalus and attempt to trick you into downloading the wallet from a different source. If you download Daedalus from an unofficial source, you put your ada at serious risk of being stolen. Please also remember, Daedalus does NOT have a mobile application.
How do I download Yoroi?
Yoroi can be found and installed through the Chrome Store.
How to delegate in Deadalus wallet?
How to delegate to ADAMax pool?
After creating the wallet click middle icon in the left menu to go to "Delegation center" and then click "Stake pools". Type ADAM in Search stake pools box, then select the ADAM box. Next click "Delegate to this pool". You should get a popup where you select the wallet. Click "Continue".


| # | Item | Description |
|---|---|---|
| A. | Metapattern name | CompoundFact |
| B. | Description | A compound fact information model is characterized by the fact that for some set of concepts expressed within some information model; that information model can be expressed over some characteristic expressed as an [Axis]. Basically, it is the [Axis] which provides additional information which makes each information model unique. For example, the salary information for the directors of an entity is a compound fact. The salary information is made up of salary, bonuses, director fees and such information must be associated with a specific director to be meaningful and to distinguish, say, one salary from another salary. |
| C. | Visual example | |
| D. | Visual example file | |
| E. | XBRL Taxonomy | XSD |
| F. | XBRL Instance | XBRL |
| H. | ZIP Archieve with All Files | ZIP |
This work is licensed under a Creative Commons License.


Source code for nextcode.services.phenotype.phenotype
"""
Phenotype
------------------
Representation of a serverside phenotype.
"""
import json
import datetime
import dateutil
import time
import logging
from typing import Callable, Union, Optional, Dict, List
from .exceptions import PhenotypeError
from ...exceptions import ServerError
from ...session import ServiceSession
log = logging.getLogger(__name__)
[docs]class Phenotype:
"""
A local object representing a phenotype response from the phenotype
catalog service.
Note that most of the attributes come directly from the phenotype
serverside response and are therefore not documented directly here.
Please refer to the API Documentation for the phenotype catalog service.
In addition to the ones documented here, this object has at least these attributes:
* name - Phenotype name
* description - Textual description of this phenotype
* result_type - Type of result. Cannot be changed. One of SET, QT, CATEGORY
* created_at - Timestamp when the phenotype was first created
* updated_at - Timestamp when the phenotype was last updated
* created_by - Username who created the phenotype
* versions - List of data versions available in this phenotype
To intraspect the data you can call `phenotype.data.keys()`. Each key
in the `data` dict is exposed as an attribute with intelligent type casting.
"""
def __init__(self, session: ServiceSession, data: Dict):
self.session = session
self.data = data
self.links = data["links"]
def __getattr__(self, name):
try:
val = self.data[name]
except KeyError:
raise AttributeError
try:
val = dateutil.parser.parse(val)
except Exception:
pass
return val
def __repr__(self) -> str:
return f"<Phenotype {self.name} in project {self.project_key}>"
[docs] def refresh(self):
"""
Refresh the local cache
"""
resp = self.session.get(self.links["self"])
data = resp.json()
self.data = data["phenotype"]
[docs] def delete(self):
"""
Delete a phenotype, including all data from a project
:raises: `ServerError` if the phenotype could not be deleted
"""
_ = self.session.delete(self.links["self"])
[docs] def upload(self, data: List):
"""
Upload phenotype data
The data is expected to be a list of lists.
e.g. `phenotype.upload([['a'], ['b']])`.
The `result_type` of the phenotype dictates
if each sublist should contain one or two items.
:raises: `ServerError` if there was a problem uploading
"""
if not isinstance(data, list):
raise TypeError("data must be a list")
url = self.links["upload"]
content = {"data": data}
resp = self.session.post(url, json=content)
return resp.json()
[docs] def update_description(self, description: str):
"""
Update the phenotype with a new description
"""
url = self.links["self"]
content = {"description": description}
_ = self.session.patch(url, json=content)
self.refresh()
[docs] def add_tag(self, tag: str):
"""
Add a new tag to this phenotype.
:raises: `PhenotypeError` if the tag is already set on this phenotype
"""
url = self.links["self"]
tags = set(self.tag_list)
if tag in tags:
raise PhenotypeError(f"Tag {tag} already exists on this phenotype")
tags.add(tag)
content = {"tag_list": list(tags)}
self.session.patch(url, json=content)
self.refresh()
[docs] def delete_tag(self, tag: str):
"""
Delete a tag from the phenotype.
:raises: `PhenotypeError` if the tag does not exist
"""
url = self.links["self"]
tags = set(self.tag_list)
try:
tags.remove(tag)
except KeyError:
raise PhenotypeError(f"Tag {tag} does not exist on this phenotype")
content = {"tag_list": list(tags)}
self.session.patch(url, json=content)
self.refresh()