This web application requires MetaMask plugin for your
browser.
(It may not work on Mist
or other software providing connection to Ethereum node)
If your MetaMask plugin is already activated you may need to reload this page.
ERROR: can not get Ethereum network information.
Your MetaMask or other software providing connection to Ethereum node, not really has such connection to node. Check Ethereum network in MetaMask, Mist browser or whatever you use, and/or try to refresh your browser.


Acquisitions – Land Packaging (I.2.)
Identify a property that meets (at least) one of the three opportunity categories. No problems; only opportunities. The land packager must be able to find properties that have a development issue or problems and fix that issue in a timely manner. This is why many land packagers have formal training in law , engineering, or land planning or have substantial experience in politics and government.
This is most common situation for the land packager. The land packager develops a conceptual land plan and set about getting that land plan approved by the appropriate governing bodies. These are usually zoning or planning commissions as well as city councils or county/township supervisory boards. The land packager must determine not only what approvals are needed , but also how to obtain those approvals in a timely manner.
2.Contains development impairments that can be remedied by studies, tests, and /or expert opinions.
The land packager must correctly identify the development issues and then determine what experts can provide the information to clarify the problems or identify the best cost effective solutions to the problems. These problems may include wetland issues, contamination issues, soil and rock conditions, neighborhood concerns or protests, historical or cultural issues, or adjacent land issues such as railroads, airports, prisons, or coffee manufacturer.
3.Has existing title or survey issue.
Most buyers avoid these kinds of problems, but with experience and special skills land packagers enjoy working out boundary issues, easement or right or way issues, existing liens, and clouds on the title. The timeliness and cost of fixing these issues is are the key factors for the land packager to assess. Almost any “problem” can be fixed with enough time and enough money., but the land packager cannot afford either.
Evaluate if the regulatory environment is receptive to changing land use conditions.
Clearly some municipalities and jurisdictions are easier to work in than others. However, know how the system or process works and who works the system is critical knowledge for the land packager. Perceived “outsiders” will bet treated much differently than known, credible, local people. The successful land packager will either need to be a “good ol’ boy or gal” or will be able to bring those people on her team.
On the other hand, municipalities or jurisdictions that have a difficult reputation, are creating opportunities for land packagers because of the perceived “barriers to entry” that limit the number of competitive development. Land packager must critically evaluate their ability to work in the system and moor importantly to achieve permits and approvals in a timely manner.
Acquire or control the property with attractive prices and conditions. The important part is to control the property rather than to own the property outright. Creative financing often includes some of the following:
Seller financing; The seller lends the buyer the money to property. This also referred to as a purchase money mortgage.
Option agreements: buyer acquires the right to purchase the property at a specified sometime some time in the future. Extension provisions can very important
Sales contract with conditions, pre-conditions to close: A sales contract can be used to control the property until certain condition are met prior to closing. Sales contract usually have non-refundable good faith deposits, and there are usually extension provisions in the contract.
Lease with option to buy: land leases allow the lessee (prospective buyer) to control the property (subject to the lease provisions), and the lease has provisions allowing the lessor to purchase the property at certain times during the lease term. The price of the property should be specified, but often it is not so the purchase price is at the market value or at a price mutually agreed upon between the lessor and the lessee
Land contracts: The land contract provides for the title to pass from the seller to the buyer after certain specific terms and conditions are met.
Interim land uses: These can provide rental income to the land banker which help to defray the holding costs. These uses can be as simple as seasonal hunting lease or as complex as a long term commercial lease with termination provisions.
Are there interim land uses to be dealt with? (Positive or Negative?)
 They can be very helpful in reducing the holding costs, and they can be very problematic in changing the use of the site or getting adjacent land owners to be cooperative.


CodeNote
options
GitHub personal access token
For help generating an access token, read
this
help article.
Save


"The Emperor's New Groove"
18-year old Emperor Kuzco (David Spade) is an arrogant, egocentric and selfish young ruler whose philosophy on the lives of his subjects is "don't know, don't care." Kuzco is so interested in himself and his own pleasures he doesn't have a clue that his new summer home, Kuzcotopia, will displace a caring and kindly peasant, Pacha (John Goodman), and his family. Meanwhile, wicked advisor Yzma (Eartha Kitt) has her own designs on the throne and turns the unsuspecting monarch into a llama. It's up to Kuzco and Pacha to restore him to his human form, return him to the throne and thwart Yzma's plans in Disney's latest animated feature, "The Emperor's New Groove."
The one word that jumped into my head after seeing the latest in Disney's long, long line of animated films is "serviceable." The history behind the creation of "The Emperor's New Groove" goes back to 1994 when the project was called "Kingdom of the Sun," a dramatic story inspired by pre-Colombian legend. As the development process moved along, the tone of the project changed from the serious to the silly. With the original dramatic intent taken away, the film became a light comedy with state-of-the-art animations and an insubstantial story, though a cute one.
Emperor K is a spoiled brat whose own wants and needs are first and foremost in his mind. He summons peasant Pacha to the palace to inquire about the beautiful hilltop where Pacha and his family live. Pacha assures his master that his hill is so special, it makes music. This sounds so good, Kuzco decides that his newest palace, with pool, will be built there and tells Pacha to move. The despondent, but loyal, peasant heads home to break the bad news to his pregnant wife, Chicha (Wendie Malick), and five daughters.
As Kuzco blithely makes his plans, his ancient and conniving advisor, Yzma, has delusions of grandeur of her own. The wicked counselor has, for years, used her exalted status to insinuate herself into a position of power. When the self-centered Kuzco, putting his own selfish desires aside for a moment, realizes that Yzma is usurping his throne, he fires her on the spot. But, since only Kuzco, Yzma and her loyal henchman, Kronk (Patrick Warburton), know about the dismissal, she decides the best course of action is to poison the egotistical sovereign and take over his kingdom. The plans go awry from the start when Kronk gives Kuzco extract of llama instead of a poison cocktail.
Kuzco, now a talking llama, has no choice but to enlist the help of Pacha in getting back to the palace and changing back to human form. Meanwhile, Yzma, realizing that Kronk could not kill the llama king (Kronk is your basic nice guy), heads out with her muscle-bound assistant to finish the job herself. It becomes a race against time and nature as Kuzco and Pacha must brave fierce crocodiles, deadly scorpions and startled bats in their journey to the castle. It is also an odyssey of change for Kuzco as the selfish boy-king learns the value of friendship and generosity and becomes a good man and better emperor in the end.
As Disney animations go you can see the force of skilled animators at work beneath the surface of the movie. Visually the characters are finely honed caricatures as they represent simple human virtues and flaws. The emperor, as voiced by Spade, is really a spoiled brat, used to getting what he wants whenever he wants. Good or bad, this self-centered attitude lasts through most of the film, changing only when the final climax looms. The selfishness and smart-ass attitude given the character by Spade gets tired after a while. Fortunately, his one-liners, peppered through the film, help get you by the rotten little kid aspect of Kuzco.
John Goodman is one of the serviceable aspects of the film, as is Eartha Kitt. Goodman's Pacha is a big-hearted, good-natured peasant who loves to give to those around him. It's rather inevitable, with such a companion by his side, that Kuzco is going to learn some valuable, life-affirming lessons. Kitt gets a low-rent version of Cruella DeVil to play with and does a decent job breathing life into the old crone that wants the throne.
Stealing the show, though, is Patrick Warburton as the lovable Kronk. The amiable big guy (he's a size 66 long with a 31-inch waist) is more interested in the quality of his cooking than in his henchman's duties. He's particularly proud of his spinach puffs, truth be known. Warburton and his animation team and writers create a funny, likeable character that is supposed to be bad but can't be. After all, he was a Junior Chipmunk as a kid and learned how to talk to squirrels, so how bad can he be. Beyond the four leads, though, there is little background activity for minor characters, giving the film a flat feel.
The animation processes used here are the epitome of the quality that we expect to come out of Disney Studios. There isn't any breakthrough development as was the case with the "deep canvas" process developed from "Tarzan," but the creators of "The Emperor's New Groove" utilize every tool at their disposal to create a fine visual work. The combination of the animation and, again I say, the serviceable vocal and writing talents involved help create a light bit of comedy entertainment that will please all ages, but won't make a lasting impression.
Animation director Mark Dindal co-wrote the story with screenwriter David Reynolds. They succeed in making a Disney-lite effort that is fast-talking and very, very hip - mainly due to Spade's chatter and Kronk's likableness. It fills the bill for the holidays and will keep the kids quiet and adults entertained. In the end, "The Emperor's New Groove" is a popcorn movie. I give it a B-.
For more Reeling reviews visit www.reelingreviews.com
<EMAIL_ADDRESS><EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


---
layout: archive
title: Lean Prover Zulip Chat Archive
permalink: 113488general/37878somethingistaking1second.html
---
The archive URL format has changed. Please find this page at:
https://leanprover-community.github.io/archive/stream/113488-general/topic/something.20is.20taking.201.20second.html


Cello
Verilog
Options
Results
About
Design Name
Assignment Index
Delete
Download Zip
input Verilog
output log file
gate assignment
response functions
predicted expression levels (RPU)
predicted toxicity (relative OD600)
logic circuit simulation
bionetlist
predicted gate RPUs
predicted output RPUs
Eugene rules for plasmid design
Circuit variants
SBOL files
Plasmid files
download results
Download zip file
Cello is a trademark of
Nona Research Foundation, Inc.


Class Camera
- java.lang.Object
-
- algorithms.imageProcessing.transform.Camera
-
public class Camera extends java.lang.Object
utility methods for camera intrinsic and extrinsic matrices. KIntrinsic is the camera intrinsic parameters KExtrinsic is the camera extrinsic parameters, specifically, the camera position and orientation in world coordinates. to project the world coordinate system point into the camera frame canonical form, multiply it by the extrinsic matrix (which will translate the coordinates and rotate them). to project the camera frame coordinate system into the image frame, multiply it by the intrinsic matrix. TODO: consider implementing tangential distortion. see Heikkila, Janne, and Olli Silven 1997. "A four-step camera calibration procedure with implicit image correction." Computer Vision and Pattern Recognition, 1997. Proceedings., 1997 IEEE Computer Society Conference on. IEEE, 1997.- Author:
- nichole
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Camera.CameraExtrinsicParameters
static class
Camera.CameraIntrinsicParameters
static class
Camera.CameraMatrices
static class
Camera.CameraParameters
static class
Camera.CameraProjection
-
Field Summary
Fields Modifier and Type Field Description static double
eps
-
Constructor Summary
Constructors Constructor Description Camera()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static double[][]
cameraToPixelCoordinates(double[][] xC, double[] rCoeffs, double focalLength, double centerX, double centerY, boolean useR2R4)
applies radial distortion to distortion-free camera centered coordinates then multiplies by the camera intrinsics to result in distorted coordinates in the image reference frame in units of pixels.static double[][]
cameraToPixelCoordinates(double[][] xC, double[] rCoeffs, Camera.CameraIntrinsicParameters kIntr, boolean useR2R4)
applies radial distortion to distortion-free camera centered coordinates then multiplies by the camera intrinsics to result in distorted coordinates in the image reference frame in units of pixels.static double[][]
createCamera(double[][] k, double[][] r, double[] t)
static double[][]
createCameraInverse(double[][] k, double[][] r, double[] t)
not ready for use.static double[][]
createIntrinsicCameraMatrix(double focalLength, double centerX, double centerY)
create camera intrinsic matrix k with assumptions of square pixels and no skew.static double[][]
createIntrinsicCameraMatrix(double focalLengthX, double focalLengthY, double centerX, double centerY, double skew)
create camera intrinsic matrix k.static double[][]
createIntrinsicCameraMatrixInverse(double[][] kIntr)
create the inverse of camera intrinsic matrix k.static double[][]
createIntrinsicCameraMatrixInverse(double focalLength, double centerX, double centerY)
create the inverse of camera intrinsic matrix k with assumptions of square pixels and no skew.static double[][]
pixelToCameraCoordinates(double[][] x, double[][] intr, double[] rCoeffs, boolean useR2R4)
converts pixel coordinates to camera coordinates by transforming them to camera reference frame then removing radial distortion.static double[][]
pixelToCameraCoordinates(double[][] x, Camera.CameraIntrinsicParameters kIntr, double[] rCoeffs, boolean useR2R4)
converts pixel coordinates to camera coordinates by transforming them to camera reference frame then removing radial distortion.static double[][]
pixelToNormalizedCameraCoordinates(double[][] x, Camera.CameraIntrinsicParameters intrinsic)
converts pixel coordinates to normalized camera coordinates by transforming them to camera reference frame then applying Lp2-normalization.static double[][]
transformToUnitNormDirections(double[][] x, Camera.CameraIntrinsicParameters k)
transform 2D pixel measurements x_i to unit norm 3D directionsstatic double[][]
worldToCameraCoordinates(double[][] xW, double[][] rot, double[] trans)
transform the world coordinates xW to the camera reference frame using (rot * xW + trans).static double[]
worldToCameraCoordinates(double[] xWPt, double[][] rot, double[] trans)
transform the world coordinate point xWPt to the camera reference frame using (rot * xW + trans).static void
worldToCameraCoordinates(double[] xWPt, double[][] rot, double[] trans, double[] out)
transform the world coordinate point xWPt to the camera reference frame using (rot * xW + trans).static void
worldToCameraCoordinates(double[] xWPt, double[][] rot, double[] trans, double[] aux, double[] out)
transform the world coordinate point xWPt to the camera reference frame using (rot * xW + trans).
-
-
-
Method Detail
-
createIntrinsicCameraMatrix
public static double[][] createIntrinsicCameraMatrix(double focalLength, double centerX, double centerY)
create camera intrinsic matrix k with assumptions of square pixels and no skew. the focal length and optical centers should be in units of pixels. NOTE that given the field of view (FOV) and the image dimensions, one can roughly estimate the focal length as (image width/2) / tan(FOV/2).- Parameters:
focalLength
- focal length of camera in units of pixels. NOTE that the sign of the focal length remains the same as is given, so if you want to use a right-hand coordinate system, you should give a negative focal length.centerX
- x coordinate of principal point in pixels, usually image center.centerY
- y coordinate of principal point in pixels, usually image center.- Returns:
- intrinsic camera matrix in units of pixels.
-
createIntrinsicCameraMatrix
public static double[][] createIntrinsicCameraMatrix(double focalLengthX, double focalLengthY, double centerX, double centerY, double skew)
create camera intrinsic matrix k. the focal length and optical centers should be in units of pixels. NOTE that given the field of view (FOV) and the image dimensions, one can roughly estimate the focal length as (image width/2) / tan(FOV/2).- Parameters:
focalLengthX
- focal length of camera in units of pixels along x axis. NOTE that the sign of the focal length remains the same as is given, so if you want to use a right-hand coordinate system, you should give a negative focal length.focalLengthY
- focal length of camera in units of pixels along y axis. NOTE that the sign of the focal length remains the same as is given, so if you want to use a right-hand coordinate system, you should give a negative focal length.centerX
- x coordinate of principal point in pixels, usually image center.centerY
- y coordinate of principal point in pixels, usually image center.skew
- camera skew- Returns:
- intrinsic camera matrix in units of pixels.
-
createIntrinsicCameraMatrixInverse
public static double[][] createIntrinsicCameraMatrixInverse(double focalLength, double centerX, double centerY)
create the inverse of camera intrinsic matrix k with assumptions of square pixels and no skew. the focal length and optical centers should be in units of pixels. NOTE that given the field of view (FOV) and the image dimensions, one can roughly estimate the focal length as (image width/2) / tan(FOV/2).- Parameters:
focalLength
- focal length of camera in units of pixels. NOTE that the sign of the focal length remains the same as is given, so if you want to use a right-hand coordinate system, you should give a negative focal length.centerX
- x coordinate of principal point in pixels, usually image center.centerY
- y coordinate of principal point in pixels, usually image center.- Returns:
- intrinsic camera matrix in units of pixels.
-
createIntrinsicCameraMatrixInverse
public static double[][] createIntrinsicCameraMatrixInverse(double[][] kIntr)
create the inverse of camera intrinsic matrix k.- Parameters:
kIntr
- intrinsic camera matrix.- Returns:
- intrinsic camera matrix inverse.
-
createCamera
public static double[][] createCamera(double[][] k, double[][] r, double[] t)
- Parameters:
k
- camera intrinsics matrix of size 3 x 3.r
- camera extrinsic rotation matrix of size 3 x 3.t
- camera extrinsic translation vector of length 2.- Returns:
- the camera matrix resulting from intrinsic and extrinsic parameters. the size is 3 x 4.
-
createCameraInverse
public static double[][] createCameraInverse(double[][] k, double[][] r, double[] t)
not ready for use. a quick rough method to estimate the 3D homogeneous point from the 2D-homogenous point and this inverse camera matrix, with caveat about missing information on the last dimension. One should use reconstruction methods instead of this method. to use:double[][] X = MatrixUtil.multiply(cameraInv, x); then divide each column by the 3rd row.
- Parameters:
k
- camera intrinsics matrix of size 3 x 3.r
- camera extrinsic rotation matrix of size 3 x 3.t
- camera extrinsic translation vector of length 2.- Returns:
- the inverse camera matrix resulting from intrinsic and extrinsic parameters. the size is 4x3
-
cameraToPixelCoordinates
public static double[][] cameraToPixelCoordinates(double[][] xC, double[] rCoeffs, double focalLength, double centerX, double centerY, boolean useR2R4)
applies radial distortion to distortion-free camera centered coordinates then multiplies by the camera intrinsics to result in distorted coordinates in the image reference frame in units of pixels. In terms of Table 1 of Ma et al. 2004, the input is a double array of (x, y) and the output is a double array of (u_d, v_d). The radial distortion functions to choose are from Ma et al. 2004 Table 2. The choices are model #4, f(r) = 1 +k1*r^2 + k2*r^4, or model #3, f(r) = 1 +k1*r + k2*r^2. Note that if rCoeffs is null or empty, no radial distortion is applied. Also useful reading is NVM Tools by Alex Locher https://github.com/alexlocher/nvmtools.git- Parameters:
xC
- distortion-free camera centered coordinates. format is 3XN for N points. In terms of Table 1 of Ma et al. 2004, this is a double array of (x, y).rCoeffs
- radial distortion vector of length 2 distortion vector of length 5. can be null to skip lens distortion correction. iffocalLength
- focal length of camera in units of pixels.centerX
- x coordinate of principal point in pixels, usually image center.centerY
- y coordinate of principal point in pixels, usually image center.useR2R4
- if true use radial distortion function from Ma et al. 2004 for model #4 in Table 2, f(r) = 1 +k1*r^2 + k2*r^4, else if false use model #3 f(r) = 1 +k1*r + k2*r^2. note that if rCoeffs is null or empty, no radial distortion is applied.- Returns:
- pixels in the reference frame of image with distortion applied. In terms of Table 1 of Ma et al. 2004, this is a double array of (u_d, v_d)
-
cameraToPixelCoordinates
public static double[][] cameraToPixelCoordinates(double[][] xC, double[] rCoeffs, Camera.CameraIntrinsicParameters kIntr, boolean useR2R4)
applies radial distortion to distortion-free camera centered coordinates then multiplies by the camera intrinsics to result in distorted coordinates in the image reference frame in units of pixels. In terms of Table 1 of Ma et al. 2004, the input is a double array of (x, y) and the output is a double array of (u_d, v_d). Also useful reading is NVM Tools by Alex Locher https://github.com/alexlocher/nvmtools.git- Parameters:
xC
- distortion-free camera centered coordinates. format is 3XN for N points. In terms of Table 1 of Ma et al. 2004, this is a double array of (x, y).rCoeffs
- radial distortion vector of length 2 distortion vector of length 5. can be null to skip lens distortion correction.kIntr
-useR2R4
- use radial distortion function from Ma et al. 2004 for model #4 in Table 2, f(r) = 1 +k1*r^2 + k2*r^4 if true, else use model #3 f(r) = 1 +k1*r + k2*r^2. note that if rCoeffs is null or empty, no radial distortion is applied.
-
pixelToNormalizedCameraCoordinates
public static double[][] pixelToNormalizedCameraCoordinates(double[][] x, Camera.CameraIntrinsicParameters intrinsic) throws no.uib.cipr.matrix.NotConvergedException
converts pixel coordinates to normalized camera coordinates by transforming them to camera reference frame then applying Lp2-normalization.- Parameters:
x
- points in the image reference frame. format is 3XN for N points in row-major format.intrinsic
-- Returns:
- pixels transformed to camera coordinate reerence frame then Lp2-normalized.
- Throws:
no.uib.cipr.matrix.NotConvergedException
-
worldToCameraCoordinates
public static double[][] worldToCameraCoordinates(double[][] xW, double[][] rot, double[] trans)
transform the world coordinates xW to the camera reference frame using (rot * xW + trans).- Parameters:
xW
- coordinates of objects in a world reference frame. The format is 3XN for N points.rot
- the rotation matrix to apply to the translated coordinates. the size is 3X3.trans
- the translation to apply to coordinates xW in x, y, and z. The length of the array is 3.- Returns:
- xW transformed to the camera reference frame.
-
worldToCameraCoordinates
public static double[] worldToCameraCoordinates(double[] xWPt, double[][] rot, double[] trans)
transform the world coordinate point xWPt to the camera reference frame using (rot * xW + trans).- Parameters:
xWPt
- coordinates of an object in a world reference frame. The length is 3.rot
- the rotation matrix to apply to the translated coordinates. the size is 3X3.trans
- the translation to apply to coordinates xW in x, y, and z. The length of the array is 3.- Returns:
- the point xW transformed to the camera reference frame.
-
worldToCameraCoordinates
public static void worldToCameraCoordinates(double[] xWPt, double[][] rot, double[] trans, double[] aux, double[] out)
transform the world coordinate point xWPt to the camera reference frame using (rot * xW + trans).- Parameters:
xWPt
- coordinates of an object in a world reference frame. The length is 3.rot
- the rotation matrix to apply to the translated coordinates. the size is 3X3.trans
- the translation to apply to coordinates xW in x, y, and z. The length of the array is 3.aux
- an auxiliary array of length 3 used internally to hold values for a calculation. it's present to help the invoker reuse an object instead of creating another. it's values are not used.out
- the point xW transformed to the camera reference frame.
-
worldToCameraCoordinates
public static void worldToCameraCoordinates(double[] xWPt, double[][] rot, double[] trans, double[] out)
transform the world coordinate point xWPt to the camera reference frame using (rot * xW + trans).- Parameters:
xWPt
- coordinates of an object in a world reference frame. The length is 3.rot
- the rotation matrix to apply to the translated coordinates. the size is 3X3.trans
- the translation to apply to coordinates xW in x, y, and z. The length of the array is 3.out
- the point transformed to the camera reference frame.
-
pixelToCameraCoordinates
public static double[][] pixelToCameraCoordinates(double[][] x, Camera.CameraIntrinsicParameters kIntr, double[] rCoeffs, boolean useR2R4) throws no.uib.cipr.matrix.NotConvergedException, java.io.IOException
converts pixel coordinates to camera coordinates by transforming them to camera reference frame then removing radial distortion. The input in terms of Table 1 of Ma et al. 2004 is a double array of (u_d, v_d) and the output is a double array of (x, y). Also useful reading is NVM Tools by Alex Locher https://github.com/alexlocher/nvmtools.git- Parameters:
x
- points in the camera centered reference frame. format is 3XN for N points.kIntr
-rCoeffs
- radial distortion vector of length 2 or radial and tangential distortion vector of length 5. can be null to skip lens distortion correction.useR2R4
- use radial distortion function from Ma et al. 2004 for model #4 in Table 2, f(r) = 1 +k1*r^2 + k2*r^4 if true, else use model #3 f(r) = 1 +k1*r + k2*r^2. note that if rCoeffs is null or empty, no radial distortion is removed.- Returns:
- pixels in the reference frame of
- Throws:
no.uib.cipr.matrix.NotConvergedException
java.io.IOException
-
pixelToCameraCoordinates
public static double[][] pixelToCameraCoordinates(double[][] x, double[][] intr, double[] rCoeffs, boolean useR2R4) throws no.uib.cipr.matrix.NotConvergedException, java.io.IOException
converts pixel coordinates to camera coordinates by transforming them to camera reference frame then removing radial distortion. The input in terms of Table 1 of Ma et al. 2004 is a double array of (u_d, v_d) and the output is a double array of (x, y). Also useful reading is NVM Tools by Alex Locher https://github.com/alexlocher/nvmtools.git- Parameters:
x
- points in the camera centered reference frame. format is 3XN for N points.intr
- intrinsic camera parameters. dimensions aer [3 X 3]rCoeffs
- radial distortion vector of length 2 or radial and tangential distortion vector of length 5. can be null to skip lens distortion correction.useR2R4
- use radial distortion function from Ma et al. 2004 for model #4 in Table 2, f(r) = 1 +k1*r^2 + k2*r^4 if true, else use model #3 f(r) = 1 +k1*r + k2*r^2. note that if rCoeffs is null or empty, no radial distortion is removed.- Returns:
- pixels in the reference frame of
- Throws:
no.uib.cipr.matrix.NotConvergedException
java.io.IOException
-
transformToUnitNormDirections
public static double[][] transformToUnitNormDirections(double[][] x, Camera.CameraIntrinsicParameters k)
transform 2D pixel measurements x_i to unit norm 3D directionsreferences Szeliski 2010, eqn (6.36)
- Parameters:
x
- 2D pixel measurements in format 3XN where the rows are x, y, and "1"'s and the columns are each point in the N points.k
- camera intrinsic parameters- Returns:
-
-


In the past six months, I've worked on the XML classes almost exclusively. I now consider it to be a decent XML parser. It won't parse UTF-8 encoded documents (ASCII, UNICODE and UCS4 is OK) but it will write them. It is a standalone parser. It parses all but two of James Clark's test files (found at http://www.jclark.com/xml/). One refers to an external reference (097.XML) and the other is UTF-8 encoded (063.XML). I started writing the XML classes in the wrong way. I coded up an XML parser then had to back fill it with all of the SGML baggage (inconsistencies, complexities and down right stupidity).  These changes have really slowed down the parser. It now takes about 3125 milliseconds (a little over 3 seconds) to parse Shakespeare's "Love's Labor's Lost& (many thanks to Jon Bosak for creating the XML). This document is 206,945 bytes long and contains 15,126 elements. I ran the parser on my development machine (P5-100 with 64MB RAM running Windows NT 4.0 build 1381 service pack 4). Nearest I can figure, Microsoft's XML parser (MSXML.DLL version 5.00.2314.1000) takes about 11 seconds to parse the same file (and MUCH longer to display it).
My XML parser parses bytes. It knows nothing of files, sockets or other such application-level objects. Because of this, my parser cannot reach out and touch things that other parsers assume will be there (like files or web sites). Any communication mechanisms are assumed to be application level objects and are not available to my XML parser.
wfc_create_hard_link - If you
just can't wait for that NT 5.0 API CreateHardLink()
, here's
a function that will create two directory entries for one file. In the
good old DOS days, that used to be known as a cross-link error.
wfc_append_string_to_CByteArray - I just got tired of writing while loops all over the place.
wfc_coverage.h
- This header file implements a
simple code coverage analysis system. I use it to test classes
to make sure all the code I've written is actually executed.
wfc_linker_setup.h
- This header file fixes the
LNK2005 problems. Turns out, we need to define _AFX_NOFORCE_LIBS
before we include afx.h
. This header file makes sure
the link libraries are included in the proper order.
CExtensibleMarkupLanguageElement - Lots of bugs fixed here.
CRandomNumberGenerator2 - Now returns something other than zero when you call GetFloat(). CWfcTrace - Now supports printing SIZE, RECT, POINT, LARGE_INTEGER and ULARGE_INTEGER structures. A bug where '%' appeared in the output string wasn't being displayed is fixed.
Sam Blackburn<EMAIL_ADDRESS>Return to Sam's Home Page


Index | Apps | Games
Do you want to write without using the verb "to be"?
Do you want to master e-prime?
Use our online tool to check your writing.


{{member.displayName}}
@{{member.username}}
Change permissions ({{member.id | memberRoles:boardPageAssets.memberShips}})
Leave Board...
Remove member


Glory day in the Pairc for primary school kids
by Fergal LynchThere was double celebration for Dunshaughlin schools in Pairc Tailteann this afternoon as St Seachnall's claimed the Meath Primary Schools Boys Div 1 title, while their neighbours in Gaelscoil na Rithe won the Girls Div 2/3 Shield crown.
Day of the Meath Primary Schools finals featured four finals with the Boys and Girls Div 1 Shields up for grabs along with the Boys and Girls Div2/3 Shields.
The opening game of the day was a saw nine goals, six of them going to Duleek as Megan O'Connor top scored with an amazing 5-7 to help Duleek GNS see off St Paul's from Ratoath by 6-8 to 3-4 to claim the Girls Div 1 Shield.
There was heartbreak for Duleek NS in the Boys Div 1 Shield as they threw away a big lead with Louis Keane firing 2-2 to inspire a stunning comeback victory for St Seachnall's by 5-5 to 3-8.
The second big win of the day for Dunshaughlin came in the Girls Div 2/3 Shield decider as Gaelscoil na Rithe withstood a strong second-half display from Kildalkey to claim the crown with a 4-6 to 3-3 win.
The final game of the day was mostly played in lashing rain and fading light, but huge credit must go to both St Columbanus NS and Robinstown for serving up a thriller in the Boys Div 2/3 Shield final which the Ballivor boys won 4-7 to 3-4.
Watch all the presentations above and check out Tuesday's Meath Chronicle for full exclusive coverage of all nine finals played tioday and tomorrow and we will also reveal our Spirit of the Final award winners.


Run this command in your terminal:
aws --version
Then proceed according to your output:
aws-cli version >= 1.16
aws-cli/1.18.68 Python/3.7.6 Darwin/19.6.0 botocore/1.16.18
aws-cli version < 1.16
aws-cli/1.15.68 Python/3.7.6 Darwin/19.6.0 botocore/1.16.18
Error
No such command
Run this command in your terminal:
aws sts get-caller-identity
Then proceed according to your output:
Success
{
"UserId": "AWSIDAWSIDAWSID",
"Account": "",
"Arn": "arn:aws:iam:::user/Name"
}
"UserId": "AWSIDAWSIDAWSID",
"Account": "",
"Arn": "arn:aws:iam:::user/Name"
}
Error
The config profile could not be found
Run this command in your terminal:
aws-iam-authenticator version
Then proceed according to your output:
Success
{
"Version" : "v0.5.2",
"Commit" : "292b9b82df69b87af962b92485b254d9f4b10f00"
}
"Version" : "v0.5.2",
"Commit" : "292b9b82df69b87af962b92485b254d9f4b10f00"
}
Error
command not found: aws-iam-authenticator
Run this command in your terminal:
aws eks get-token --cluster-name
Then proceed according to your output:
Success
{
"kind": "ExecCredential",
"apiVersion": "client.authentication.k8s.io/v1alpha1",
"spec":
{},
"status":
{
"expirationTimestamp": "2020-11-05T13:32:44Z",
"token": "k8s-aws-v1.LONG_ACCESS_TOKEN"
}
}
"kind": "ExecCredential",
"apiVersion": "client.authentication.k8s.io/v1alpha1",
"spec":
{},
"status":
{
"expirationTimestamp": "2020-11-05T13:32:44Z",
"token": "k8s-aws-v1.LONG_ACCESS_TOKEN"
}
}
Error
access denied
Run this command in your terminal:
kubectl version
Then proceed according to your output:
Success
Client Version: version.Info { Major: "1", Minor: "18", GitVersion: "v1.18.0", GitCommit: "9e991415386e4cf155a24b1da15becaa390438d8", GitTreeState: "clean", BuildDate: "2020-03-25T14:58:59Z", GoVersion: "go1.13.8", Compiler: "gc", Platform: "darwin/amd64" }
Server Version: version.Info { Major: "1", Minor: "16+", GitVersion: "v1.16.13-eks-2ba888", GitCommit: "2ba888155c7f8093a1bc06e3336333fbdb27b3da", GitTreeState: "clean", BuildDate: "2020-07-17T18:48:53Z", GoVersion: "go1.13.9", Compiler: "gc", Platform: "linux/amd64" }
Server Version: version.Info { Major: "1", Minor: "16+", GitVersion: "v1.16.13-eks-2ba888", GitCommit: "2ba888155c7f8093a1bc06e3336333fbdb27b3da", GitTreeState: "clean", BuildDate: "2020-07-17T18:48:53Z", GoVersion: "go1.13.9", Compiler: "gc", Platform: "linux/amd64" }
Error
command not found: kubectl
Run this command in your terminal:
aws eks --region update-kubeconfig --name
Then proceed according to your output:
Success
Added new context arn:aws:eks:::cluster/ to /Users/Name/.kube/config
Error
An error occured
Run this command in your terminal:
kubectl get pods
Then proceed according to your output:
Success
NAME READY STATUS RESTARTS AGE
hello-node 1/1 Running 0 43s
hello-node 1/1 Running 0 43s
Error
An error occured
Forbidden
Error from server (Forbidden): pods is forbidden: User "Name" cannot list resource "pods" in API group "" in the namespace "default"
Unauthorized
error: You must be logged in to the server (Unauthorized)
Set up the AWS CLI:
Before you can proceed, you must set up the AWS Command Line Utility (CLI) in order to access the Kubernetes Cluster. This requires an AWS identity with the appropriate permissions; if you do not have this, contact your AWS administrator.
To set up the AWS CLI, please refer to these resources:
Make sure you follow the correct instructions for your machine. Continue once you have the CLI installed.
To set up the AWS CLI, please refer to these resources:
- The AWS official walkthrough: here
- This simpler Cloud Academy walkthrough: here
- Any other walkthrough you find on Google.
Make sure you follow the correct instructions for your machine. Continue once you have the CLI installed.
Installed
Update the AWS CLI:
Accessing an Amazon Kubernetes cluster requires the AWS Command Line Interface (CLI) at version 1.16 or greater. If you are using an older version, you are required to upgrade before proceeding. Version 1.X is the original AWS CLI, which you currently use. Amazon has subsequently released Version 2 of the CLI, which they recommend. However, there are some breaking changes. You may choose either major version, but must upgrade to version 1.16 or greater.
To upgrade the AWS CLI, please refer to these resources:
Make sure you follow the correct instructions for your machine. Continue once you have finished the installation.
To upgrade the AWS CLI, please refer to these resources:
- The AWS official walkthrough to upgrade your Version 1: here
- The AWS official walkthrough to upgrade to Version 2: here
- Any other walkthrough you find on Google.
Make sure you follow the correct instructions for your machine. Continue once you have finished the installation.
Upgraded
Get an Identity
Accessing AWS resources requires a valid AWS identity set up on your machine. The previous command checked for that. If this gives you an error, you either do not have a valid identity, have not properly linked it to your machine, or have an issue with the AWS CLI.
You will need to fix this error before proceeding. If needed, please contact your AWS administrator with the error code for assistance.
You will need to fix this error before proceeding. If needed, please contact your AWS administrator with the error code for assistance.
 In order for Kubernetes to recognize this as valid, you need the aws-iam-authenticator as a go-between.
To install the aws-iam-authenticator, please refer to these resources:
Make sure you follow the correct instructions for your machine. Continue once you have finished the installation.
To install the aws-iam-authenticator, please refer to these resources:
- The AWS official walkthrough: here
- The Kubernetes GitHub walkthrough: here
- Any other walkthrough you find on Google.
Make sure you follow the correct instructions for your machine. Continue once you have finished the installation.
Installed
Resolve get-token
Amazon uses the get-token subroutine in order to verify your identity for cluster access.
You will need to fix this error before proceeding. Please contact your AWS administrator with the error code for assistance.
You will need to fix this error before proceeding. Please contact your AWS administrator with the error code for assistance.
Fixed
Installing Kubectl
You will communicate with the Amazon Kubernetes cluster using the kubectl command line tool. There are a lot of resources available for this, as it is the primary way of interacting with any Kubernetes cluster, not just the AWS one.
Feel free to install your own local Kubernetes cluster if you wish to have your own testing sandbox to explore. I recommend minikube. This is unnecessary but will give you more freedom to learn, as access to the AWS cluster may be restricted.
To install the kubectl, please refer to these resources:
Make sure you follow the correct instructions for your machine. Continue once you have finished the installation.
Feel free to install your own local Kubernetes cluster if you wish to have your own testing sandbox to explore. I recommend minikube. This is unnecessary but will give you more freedom to learn, as access to the AWS cluster may be restricted.
To install the kubectl, please refer to these resources:
- The AWS official walkthrough: here
- The Kubernetes official walkthrough: here (Recommended)
- Any other walkthrough you find on Google. You will be able to find a lot more for this since it's not Amazon-specific, so look around for whatever tutorial best suits you.
Make sure you follow the correct instructions for your machine. Continue once you have finished the installation.
Installed
Add Cluster
This command is required to link your local kubectl to the AWS cluster. Please return to the start and verify that all previous commands have succeeded.
If this fails a second time, please contact both your AWS administrator and your Kubernetes administrator with the error code.
If this fails a second time, please contact both your AWS administrator and your Kubernetes administrator with the error code.
Verify
Well Done!
Congratulations! You have successfully accessed the cluster! This message indicates that you have properly set up your configuration, and there's nothing left to be done on your side.
The error message indicates that you do not have access to the cluster, either because the administrator has not added your details correctly or because you do not have permission for this action.
To resolve this, you will need to contact your Kubernetes administrator. To get it fixed quickly, send them these commands and outputs:
The error message indicates that you do not have access to the cluster, either because the administrator has not added your details correctly or because you do not have permission for this action.
To resolve this, you will need to contact your Kubernetes administrator. To get it fixed quickly, send them these commands and outputs:
kubectl get pods
kubectl config get-contexts
kubectl config view --minify
aws sts get-caller-identity
kubectl config get-contexts
kubectl config view --minify
aws sts get-caller-identity
Success
Different error
If you're faced with a different error, please contact your Kubernetes administrator and proceed after it's resolved
Fixed
Congratulations!!
You have successfully installed kubectl and connected it to the Amazon cluster!
You're done with this walkthrough.
You're done with this walkthrough.
Welcome!
This guide will walk you through the steps neccessary to get access to our Amazon EKS Kubernetes cluster on your local machine.
While you'll be directed to other tutorials for most of the distinct installation directions, this guide is intended to make sure you've installed all the dependencies in the correct order. It's mostly a collection of Amazon tutorials, but let's face it, those are far from straightforward. This should give you a clear guide to the necessary steps, while checking that you meet all requirements for the set-up to proceed smoothly, and providing easy debugging for any issues. By the end, you will have access to our cluster.
This works by providing you with verification commands to run. If the command succeeds, you will continue to the next step. If it fails, you'll see how to fix it. Each command comes with examples of the success and failure states. Please note that your results may vary from these examples, especially if you're not using Mac. However, you should get the general idea. When in doubt, assume it failed.
While you'll be directed to other tutorials for most of the distinct installation directions, this guide is intended to make sure you've installed all the dependencies in the correct order. It's mostly a collection of Amazon tutorials, but let's face it, those are far from straightforward. This should give you a clear guide to the necessary steps, while checking that you meet all requirements for the set-up to proceed smoothly, and providing easy debugging for any issues. By the end, you will have access to our cluster.
This works by providing you with verification commands to run. If the command succeeds, you will continue to the next step. If it fails, you'll see how to fix it. Each command comes with examples of the success and failure states. Please note that your results may vary from these examples, especially if you're not using Mac. However, you should get the general idea. When in doubt, assume it failed.
Get started!


Hi. I'm a responsive HTML5 template and I was created by Life's Good.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla eget lectus lobortis, tincidunt est nec, maximus neque. Quisque eu vehicula felis.
Lorem ipsum dolor sit amet, consectetur adipiscing elit.


As a mathematics major at UCLA, I became disciplined in primarily business-focused curriculum, such as financial mathematics, risk and portfolio analysis, probability, and actuarial science. I took various courses in C++, R, STATA that were designed to help with advanced calculations and statistical modeling.
After graduating, I started my professional career as an associate at Netmarble Games, a hugely successful South Korean game developer and publisher. From my experience, I saw first-hand the incredible potential of the tech industry. Working as a liaison between HQ and North American companies like Disney, LucasArts, and Marvel, I matured quickly as a professional. More importantly, I learned the limits of being an associate, igniting my interest in becoming a developer.
With a newly kindled passion for coding, my research led me to the Coding Bootcamp at UCLA Extension. Under the guidance of working developers in the industry, I started my transformation into a developer, deploying multiple full-stack web apps.


(Function or Framework). Markup includes both HTML, Templating languages, and Markdown.
Things about stuff.


The developer has used a placeholder for the password parameter (parameterized query) because this input comes directly from the user. The username does not come directly from the user but is rather fetched from the database. Therefore, the developer has thought that the username was safe to use and concatenated it directly into the query.
UPDATE users SET password = ? WHERE username = '" + username + "'
To exploit this vulnerability and gain access to the admin’s account, we can create a user with the name
admin’ -- -
.
After having registered the malicious user, we can update the password for our user. Since the username gets concatenated directly into the SQL query, the executed query will look as follows:
UPDATE users SET password = ? WHERE username = 'admin' -- -'
Instead of updating the password for admin’ -- -, the application will update the password for the admin user. After updating the password, it is possible to log in as admin with the new password and view the flag.


Professional, uniformed and friendly valet attendants.
Pro-active management team with many years of
experience. Maintain highest standards of
customer service, performance, and integrity. Our
success is knowing how to assist you.
store
Values
Whether its for business or pleasure, our fleet
of luxurious stretch and executive vehicles,
combined
with professional, uniformed and friendly
drivers
will ensure your chauffeured experience is a
memorable one.
people
Core
Valet parking remains the core of our company. However, valet parking can pose the most
challenges and rewards to any operation.
That's where experience and understanding the needs
of our clients can make the difference.
Contact us to learn more.


Sukiyaki
Sukiyaki
The most delicious way to enjoy fish is to simply salt it and grill it. In my next life, I would love to have a grill with ventilation installed on my stove. In absence of this, I place the rack of the broiler at its’ highest position, as close to the heat source as possible. Cut the fish into individual serving sizes. If using salmon, I usually buy fillets and cut them into 2” thick diagonal slices. For mackeral, I cut each fillet in half. Liberally salt all sides of the fish.
 To simplify clean-up, fold all sides of the foil up to catch the juices released from the fish. Broil until golden brown, 5-10 minutes. Turn the pieces, skin side up, and continue to broil until the skin starts to brown and bubble up. This should only take 2-4 minutes. Mackeral tastes great with soy sauce and grated daikon and a slice of lemon. I prefer salmon with just a tiny bit of soy sauce.
The classic shape of plates for grilled or broiled fish is long, rectangular, and flat. Recently, my husband likes to use diamond shaped imari plates for small pieces


{% extends "global/Page.html" %} {% load otree static %} {% block title %} Start Round {% endblock %} {% block content %}
Click on "Next" to continue with round {{subsession.round_number}}/{{session.config.num_rounds}} of the experiment, whenever you are ready!
{% if is_training_round %}This is a training round! After clicking 'Next' please read the instructions in the news section.
{% endif %} {% next_button %} {% endblock %}


Reference site about Lorem Ipsum, giving information on its origins, as well as a random Lipsum In publishing and graphic design, lorem ipsum is a a document or visual presentation.generator.
Lorem Ipsum is simply Ipsum has been the industry's text of the printing and typesetting industry.
Lorem Ipsum is simply Ipsum has been the industry's text of the printing and typesetting industry.
Lorem Ipsum is simply Ipsum has been the industry's text of the printing and typesetting industry.
 Nam varius eros consequat auctor gravida. Fusce tristique lacus at urna sollicitudin pulvinar. Suspendisse hendrerit ultrices mauris.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam varius eros consequat auctor gravida. Fusce tristique lacus at urna sollicitudin pulvinar. Suspendisse hendrerit ultrices mauris.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam varius eros consequat auctor gravida. Fusce tristique lacus at urna sollicitudin pulvinar. Suspendisse hendrerit ultrices mauris.
Subscribe to our newsletter to be notified about new version release
Design and developed by Sunlimetech with


Don't Take My Word For It
We consulted with Jesse at the initial phase of Camperoo; his expertise on the best way forward enabled us to focus on features our users cared about. Our system is awesome and helps us connect parents and camps in a painless way; it's fast, we love adding features, and we are confident in our architecture. I recommend him for your Rails projects.
Jesse prototyped the initial Whimseybox subscription application on time and on budget. He was supremely helpful in developing the scope of the project as I had little/no experience with what I was asking to have done. In addition, after the project was complete he continued to provide great support anytime I or my CTO had questions. Jesse is exactly the kind of person I like to work with - super smart, a great communicator and also really friendly. I highly recommend him.
I have worked with multiple Ruby developers. Jesse is the most responsive, the quickest, and the most professional. I highly recommend him for your Ruby on Rails development needs.
Comal upgraded our aging architecture and test suite and trained our team; he enabled us to focus on features that matter to our business. Our system is faster and reliable, and we are confident in our architecture.


Scientific Coordinator:
Professor George I. Doukidis<EMAIL_ADDRESS>Research streams
- E-business strategy and innovation
- Business planning and exploitation
- Market analysis and differentiation strategies
- Starting new ventures and entrepreneurial thinking
- Guidance, acceleration and support for new e-business ventures


--- title: What is an interaction? author: Jeff Walker date: '2020-11-04' slug: what-is-an-interaction categories: - stats 101 tags: - anova - categorical X - interaction - linear model keywords: - tech ---
A factorial experiment is one in which there are two or more factor variables (categorical \(X\)) that are crossed, resulting in a group for each combination of the levels of each factor. Factorial experiments are used to estimate the interaction effect between factors. Two factors interact when the effect of one factor depends on the level of the other factors. Interactions are ubiquitous, although sometimes they are small enough to ignore with little to no loss of understanding.
Continue with What is an interaction?


Islamic State leader Baghdadi better captured alive: Corbyn
LONDON: It would have been the right thing to do to capture Islamic State leader Abu Bakr al-Baghdadi alive if it had been possible, the leader of Britain's opposition Labour Party Jeremy Corbyn said on Wednesday (Nov 13).
Baghdadi died alongside three of his children by detonating an explosive-laden vest when he fled US forces during an attack in northwest Syria, US President Donald Trump said.
READ: Trump confirms death of Islamic State group chief Baghdadi in US raid
Corbyn, a long-time critic of US foreign policy who hopes to succeed Boris Johnson as Britain's prime minister after an election on Dec 12, said people like Baghdadi needed to be put on trial at the International Court of Justice in the Hague.
"Him being removed from the scene is a very good thing," Corbyn told British radio station LBC.
"If it would have been possible to arrest him - and I don't know the details of the circumstances at the time, I’ve only seen various statements put out by the US about it - surely it would have been the right thing to do."
Corbyn told Iran's state-backed Press TV in 2011, before he was Labour leader, that the death of Osama bin Laden at the hands of the United States was a "tragedy", as there had been no attempt to arrest him and put him on trial.
Corbyn has faced regular criticism from political opponents for meeting members of Irish and Palestinian militant groups over the decades, and previously called members of Hamas and Hezbollah "friends".


Ankur Abhinav
Education
- 3rd year undergraduate
Computer Science and Engineering
Indian Institute of Technology Kharagpur
Home Town
- New Delhi
Capital of India
Enriched with diverse cultures
Goals
- To make new products and bring technological advancement in the world
- To make the life of people easier by contributing to the field of Computer Science
- To familiarise more and more people in the world with modern technologies
Projects
I love to participate actively in the projects related to Computer Science and developing new products. I have worked on many projects related to different areas of Computer Science such as Machine Learning, Image Processing, Cryptography, Web designing, etc.
Adobe R&D
During the summer of 2017, I worked at Adobe Research and Development Labs, Noida, India. The project was related to deep learning and our objective was to make Media a Shoppable Experience.
Searching Apparels in Banners or Videos
How we did it
Localization of Query Image Into Target
Uses
- Easy purchasing of your friend's apparels
- Purchase directly any apparel you find in a video
- No need of serching complicated keywords
Digital Prescription
The project aims to build a software that can digitize a doctor’s
prescription system. A chemist can use this software to upload the
scanned image of the doctor’s prescription and result to a digital textbased
prescription. A doctor is still allowed to write the prescription in
the conventional way.
Uses
The major reason due
to which the need of this software arises is the haphazard and hasty
handwriting of the doctors which leads to wrong dosages and/or wrong
medicine being given to the patient. This might cause the worsening
of the condition of the patient, which may result in risky consequences,
including death. This software aims to recognise the text in the
prescription, correct any form of grammatical errors and present an
error-free template of the prescription.
Methodolgy
- Image pre-processing using opencv.
- Used Microsoft Vision API for text detection and word level segmentation.
- Developed a probabilistic model which predicts the correction of the name of medicines detected in the prescription.
Input handwritten prescription
Final Digitized Prescription
Other major projects
- Built a web app for Airline Management System using Django. The app could be used by both customers and employees of the Airline Company for various purposes.
- Worked on Lane detection and Lane navigation for Autonomous Ground Vehicle at IIT Kharagpur.
- Working on different techniques and benefits of Identity Based Encryption and various proofs related to them.
Competitive Programming
Participated in many Coding Competition.
Some of the notable ones are-
| Contests | Rank |
|---|
| ACM ICPC 2017 Kanpur site | 10th |
|---|
| ACM ICPC 2017 Gwalior site | 16th |
|---|
| ACM ICPC 2016 India Finals | 16th |
|---|
| ACM ICPC 2016 Kharagpur site | 6th |
Awards and Recognition
- One of the 15 engineering students in India to be awarded with Aditya Birla Scholarship
- All India Rank 24 in KVPY(Kishore Vaigyanik Protsahan Yojana) 2013
- All India Rank 218 in IIT Joint Entrance Examination 2015
- Awarded with prestigious NTSE(National Talent Search Examination) Scholarship in 2011
Hobbies
- Reading books
- Watching movies
- Following cricket
Summer Internship 2018
- Very excited to work at Mercari as a summer intern
- Looking forward to explore Japan
- Eager to learn about Japanese culture and tradition


Over the past week, I've been learning a lot about Javascript. I've loved the simple English like-syntax and how nicely it plays with Chrome Dev tools. But real developers like Javascript too! This is because Javascript runs on its users' computers and therefore doesn't slow down servers or use up too much bandwidth. It also works with both on the back and front end, so it's useful for developers who want to see the whole picture of what they are building. It is also one of the world's most used languages, so it works well on multiple devices and browsers. This flexibility is what makes Javascript a relevant and essential coding language for new developers to learn.


| [
81]
|
Replication of human coronaviruses SARS-CoV, HCoV-NL63 and HCoV-229E is inhibited by the drug FK506 |
Carbajo-Lozoya
et al.
|
Germany/Switzerland |
2012 |
Coronaviruses represent the group of RNA viruses with the largest RNA genome to date therefore the development of resistant mutants to targeted drugs remains a concern.
Viral replication represents potential antiviral targets.
Study performed genome-wide SARS-CoV yeast-two-hybrid interaction screen with human cDNA libraries identifying FK506-binding proteins as interaction partners of SARS-CoV non-structural protein 1 (Nsp1).
FK506-binding proteins bind the immunosuppressive drug FK506 (tacrolimus).
Since Nsp1 interacts with FK506-binding proteins, investigated whether FK506 inhibits replication of human coronaviruses.
VeroFM cells infected with SARS-CoV and other human coronaviruses and treated with FK506.
Study found that FK506 inhibits the replication of SARS-CoV, HCoV-NL63 and HCoV-229E at non-toxic, low-micromolar concentrations with reduction in viral titers to undetectable levels.
All human coronaviruses sensitive to FK506 indicating the involvement of FK506-binding proteins in viral replication.
|
| [
82]
|
MERS CoV infection in two renal transplant recipients: Case report |
Al Ghamdi et al |
Saudi Arabia |
2015 |
Pneumonia caused by MERS-CoV associated with severe morbidity and mortality in immunocompromised patients.
Data on clinical picture in solid organ transplant recipients and effect of anti-rejection immunosuppressive regimens unclear.
30-year old patient with renal transplant on immunosuppressive regimen of tacrolimus.
Tested positive for MERS CoV through nasopharyngeal swab.
Received antibacterial therapy and mycophenolate mofetil dose reduced and underwent full recovery.
Difficult to pinpoint why made full recovery compared to other case study (not on tacrolimus) who died.
|
| [
83]
|
Human coronavirus NL63 replication is cyclophilin
A-dependent and inhibited by non-immunosuppressive
cyclosporine A-derivatives
including Alisporivir
|
Carbajo-Lozoya
et al
|
Germany |
2014 |
Previous study shown that FK506 inhibit coronavirus replication.
This study further shows that novel non-immunosuppressive derivatives of CsA and FK506 strongly inhibit the growth of human coronavirus HCoV-NL63 at low-micromolar, non-cytotoxic concentrations in cell culture.
HCoV-NL63 and HCoV-HKU1 discovered in 2004 and 2005 causing more severe lower respiratory tract
infections in younger children.
PPIase-independent activities of CsA and FK506 exerted by gain-of-function, result from binary complexes formed by binding of the drugs to FKBPs. Based on inhibition of the protein phosphatase activity of calcineurin, these complexes block the cellular calcineurin/NFAT pathway
thereby interfering with T-cell activation and IL-2 production.
FK506 analogues (altered by side chain modification)
|


Class CommandingDependencies
Extension methods for registering commanding dependencies
Inheritance
Inherited Members
Namespace: AzureFromTheTrenches.Commanding
Assembly: AzureFromTheTrenches.Commanding.dll
Syntax
public static class CommandingDependencies
Methods
| Improve this Doc View SourceAddAuditItemEnricher<TAuditItemEnricher>(ICommandingDependencyResolverAdapter)
Adds an audit item enricher
Declaration
public static ICommandingDependencyResolverAdapter AddAuditItemEnricher<TAuditItemEnricher>(this ICommandingDependencyResolverAdapter commandingDependencyResolver)
where TAuditItemEnricher : IAuditItemEnricher
Parameters
| Type | Name | Description |
|---|---|---|
| ICommandingDependencyResolverAdapter | commandingDependencyResolver | The commanding dependency resolver |
Returns
| Type | Description |
|---|---|
| ICommandingDependencyResolverAdapter | The commanding dependency resolver |
Type Parameters
| Name | Description |
|---|---|
| TAuditItemEnricher | The type of the enricher |
AddCommanding(ICommandingDependencyResolverAdapter, Options)
Registers the commanding system in an ioc container. If the container is not able to resolve unregistered types (for example the NetStandard Microsoft container) then the commandHandlerContainerRegistration should be used to perform the type registration for the handler
Declaration
public static ICommandRegistry AddCommanding(this ICommandingDependencyResolverAdapter dependencyResolver, Options options = null)
Parameters
| Type | Name | Description |
|---|---|---|
| ICommandingDependencyResolverAdapter | dependencyResolver | The dependency resolver to register inside |
| Options | options | Configuration options for the commanding system |
Returns
| Type | Description |
|---|---|
| ICommandRegistry | The dependency resolver |
AddCommanding(ICommandingDependencyResolverAdapter, Action<Type>)
Registers the commanding system in an ioc container. If the container is not able to resolve unregistered types (for example the NetStandard Microsoft container) then the commandHandlerContainerRegistration should be used to perform the type registration for the handler
Declaration
public static ICommandRegistry AddCommanding(this ICommandingDependencyResolverAdapter dependencyResolver, Action<Type> commandHandlerContainerRegistration)
Parameters
| Type | Name | Description |
|---|---|---|
| ICommandingDependencyResolverAdapter | dependencyResolver | The dependency resolver to register inside |
| System.Action<System.Type> | commandHandlerContainerRegistration | Unless an alternative implementation of ICommandHandlerFactory is supplied then actors are created through the dependency resolver but not all IoC containers can resolve unregistered concrete types (for example the built in ASP.Net Core IServiceCollection and IServiceProvider IoC cannot). Where this is the case supply an implementation for the CommandHandlerContainerRegistration action that registers the actors in the container. For example using an IServiceCollection instance of serviceCollection: resolver.UseCommanding(type => services.AddTransient(type, type)); |
Returns
| Type | Description |
|---|---|
| ICommandRegistry | The dependency resolver |
AddExecutionCommandingAuditor<TExecutionAuditorImpl>(ICommandingDependencyResolverAdapter, Boolean)
Registers an auditor that will be invoked directly after a command has been executed.
Declaration
public static ICommandingDependencyResolverAdapter AddExecutionCommandingAuditor<TExecutionAuditorImpl>(this ICommandingDependencyResolverAdapter dependencyResolver, bool auditRootCommandOnly = true)
where TExecutionAuditorImpl : ICommandAuditor
Parameters
| Type | Name | Description |
|---|---|---|
| ICommandingDependencyResolverAdapter | dependencyResolver | The dependency resolver |
| System.Boolean | auditRootCommandOnly | By default the built in auditor will audit every command that is dispatched however if using the audit as part of an event sourcing pipeline it can be useful to only audit the root command and exclude any commands dispatched as a result of that root command. Set this property to true to audit only the root commands, leave null or set to false to audit all commands. |
Returns
| Type | Description |
|---|---|
| ICommandingDependencyResolverAdapter | The dependency resolver |
Type Parameters
| Name | Description |
|---|---|
| TExecutionAuditorImpl | The type of the auditor |
AddPostDispatchCommandingAuditor<TDispatchAuditorImpl>(ICommandingDependencyResolverAdapter, Boolean)
Registers an auditor that will be invoked directly after a command has been dispatched.
Declaration
public static ICommandingDependencyResolverAdapter AddPostDispatchCommandingAuditor<TDispatchAuditorImpl>(this ICommandingDependencyResolverAdapter dependencyResolver, bool auditRootCommandOnly = true)
where TDispatchAuditorImpl : ICommandAuditor
Parameters
| Type | Name | Description |
|---|---|---|
| ICommandingDependencyResolverAdapter | dependencyResolver | The dependency resolver |
| System.Boolean | auditRootCommandOnly | By default the built in auditor will audit every command that is dispatched however if using the audit as part of an event sourcing pipeline it can be useful to only audit the root command and exclude any commands dispatched as a result of that root command. Set this property to true to audit only the root commands, leave null or set to false to audit all commands. |
Returns
| Type | Description |
|---|---|
| ICommandingDependencyResolverAdapter | The dependency resolver |
Type Parameters
| Name | Description |
|---|---|
| TDispatchAuditorImpl | The type of the auditor |
AddPreDispatchCommandingAuditor<TDispatchAuditorImpl>(ICommandingDependencyResolverAdapter, Boolean)
Registers an auditor that will be invoked directly before a command has been dispatched.
Declaration
public static ICommandingDependencyResolverAdapter AddPreDispatchCommandingAuditor<TDispatchAuditorImpl>(this ICommandingDependencyResolverAdapter dependencyResolver, bool auditRootCommandOnly = true)
where TDispatchAuditorImpl : ICommandAuditor
Parameters
| Type | Name | Description |
|---|---|---|
| ICommandingDependencyResolverAdapter | dependencyResolver | The dependency resolver |
| System.Boolean | auditRootCommandOnly | By default the built in auditor will audit every command that is dispatched however if using the audit as part of an event sourcing pipeline it can be useful to only audit the root command and exclude any commands dispatched as a result of that root command. Set this property to true to audit only the root commands, leave null or set to false to audit all commands. |
Returns
| Type | Description |
|---|---|
| ICommandingDependencyResolverAdapter | The dependency resolver |
Type Parameters
| Name | Description |
|---|---|
| TDispatchAuditorImpl | The type of the auditor |
UseAuditItemEnricher<TAuditItemEnricher>(ICommandingDependencyResolver)
Adds an audit item enricher
Declaration
[Obsolete("Please use AddAuditItemEnricher instead")]
public static ICommandingDependencyResolver UseAuditItemEnricher<TAuditItemEnricher>(this ICommandingDependencyResolver commandingDependencyResolver)
where TAuditItemEnricher : IAuditItemEnricher
Parameters
| Type | Name | Description |
|---|---|---|
| ICommandingDependencyResolver | commandingDependencyResolver | The commanding dependency resolver |
Returns
| Type | Description |
|---|---|
| ICommandingDependencyResolver | The commanding dependency resolver |
Type Parameters
| Name | Description |
|---|---|
| TAuditItemEnricher | The type of the enricher |
UseCommanding(ICommandingDependencyResolver, Options)
Registers the commanding system in an ioc container. If the container is not able to resolve unregistered types (for example the NetStandard Microsoft container) then the commandHandlerContainerRegistration should be used to perform the type registration for the handler
Declaration
[Obsolete("Please use AddCommanding instead")]
public static ICommandRegistry UseCommanding(this ICommandingDependencyResolver dependencyResolver, Options options = null)
Parameters
| Type | Name | Description |
|---|---|---|
| ICommandingDependencyResolver | dependencyResolver | The dependency resolver to register inside |
| Options | options | Configuration options for the commanding system |
Returns
| Type | Description |
|---|---|
| ICommandRegistry | The dependency resolver |
UseCommanding(ICommandingDependencyResolver, Action<Type>)
Registers the commanding system in an ioc container. If the container is not able to resolve unregistered types (for example the NetStandard Microsoft container) then the commandHandlerContainerRegistration should be used to perform the type registration for the handler
Declaration
[Obsolete("This will be removed in a future version, please use AddCommanding instead")]
public static ICommandRegistry UseCommanding(this ICommandingDependencyResolver dependencyResolver, Action<Type> commandHandlerContainerRegistration)
Parameters
| Type | Name | Description |
|---|---|---|
| ICommandingDependencyResolver | dependencyResolver | The dependency resolver to register inside |
| System.Action<System.Type> | commandHandlerContainerRegistration | Unless an alternative implementation of ICommandHandlerFactory is supplied then actors are created through the dependency resolver but not all IoC containers can resolve unregistered concrete types (for example the built in ASP.Net Core IServiceCollection and IServiceProvider IoC cannot). Where this is the case supply an implementation for the CommandHandlerContainerRegistration action that registers the actors in the container. For example using an IServiceCollection instance of serviceCollection: resolver.UseCommanding(type => services.AddTransient(type, type)); |
Returns
| Type | Description |
|---|---|
| ICommandRegistry | The dependency resolver |
UseExecutionCommandingAuditor<TExecutionAuditorImpl>(ICommandingDependencyResolver, Boolean)
Registers an auditor that will be invoked directly after a command has been executed.
Declaration
[Obsolete("Please use instead")]
public static ICommandingDependencyResolver UseExecutionCommandingAuditor<TExecutionAuditorImpl>(this ICommandingDependencyResolver dependencyResolver, bool auditRootCommandOnly = true)
where TExecutionAuditorImpl : ICommandAuditor
Parameters
| Type | Name | Description |
|---|---|---|
| ICommandingDependencyResolver | dependencyResolver | The dependency resolver |
| System.Boolean | auditRootCommandOnly | By default the built in auditor will audit every command that is dispatched however if using the audit as part of an event sourcing pipeline it can be useful to only audit the root command and exclude any commands dispatched as a result of that root command. Set this property to true to audit only the root commands, leave null or set to false to audit all commands. |
Returns
| Type | Description |
|---|---|
| ICommandingDependencyResolver | The dependency resolver |
Type Parameters
| Name | Description |
|---|---|
| TExecutionAuditorImpl | The type of the auditor |
UsePostDispatchCommandingAuditor<TDispatchAuditorImpl>(ICommandingDependencyResolver, Boolean)
Registers an auditor that will be invoked directly after a command has been dispatched.
Declaration
[Obsolete("Please use AddPostDispatchCommandingAuditor instead")]
public static ICommandingDependencyResolver UsePostDispatchCommandingAuditor<TDispatchAuditorImpl>(this ICommandingDependencyResolver dependencyResolver, bool auditRootCommandOnly = true)
where TDispatchAuditorImpl : ICommandAuditor
Parameters
| Type | Name | Description |
|---|---|---|
| ICommandingDependencyResolver | dependencyResolver | The dependency resolver |
| System.Boolean | auditRootCommandOnly | By default the built in auditor will audit every command that is dispatched however if using the audit as part of an event sourcing pipeline it can be useful to only audit the root command and exclude any commands dispatched as a result of that root command. Set this property to true to audit only the root commands, leave null or set to false to audit all commands. |
Returns
| Type | Description |
|---|---|
| ICommandingDependencyResolver | The dependency resolver |
Type Parameters
| Name | Description |
|---|---|
| TDispatchAuditorImpl | The type of the auditor |
UsePreDispatchCommandingAuditor<TDispatchAuditorImpl>(ICommandingDependencyResolver, Boolean)
Registers an auditor that will be invoked directly before a command has been dispatched.
Declaration
[Obsolete("Please use AddPreDispatchCommandingAuditor instead")]
public static ICommandingDependencyResolver UsePreDispatchCommandingAuditor<TDispatchAuditorImpl>(this ICommandingDependencyResolver dependencyResolver, bool auditRootCommandOnly = true)
where TDispatchAuditorImpl : ICommandAuditor
Parameters
| Type | Name | Description |
|---|---|---|
| ICommandingDependencyResolver | dependencyResolver | The dependency resolver |
| System.Boolean | auditRootCommandOnly | By default the built in auditor will audit every command that is dispatched however if using the audit as part of an event sourcing pipeline it can be useful to only audit the root command and exclude any commands dispatched as a result of that root command. Set this property to true to audit only the root commands, leave null or set to false to audit all commands. |
Returns
| Type | Description |
|---|---|
| ICommandingDependencyResolver | The dependency resolver |
Type Parameters
| Name | Description |
|---|---|
| TDispatchAuditorImpl | The type of the auditor |


If your application is going to locate databases in any directory other than the environment home directory, you need to consider the directory structure for all sites. There are several recommendations to make in this area.
The use of absolute pathnames is strongly discouraged when replication is in use. Absolute pathnames will not work if there is more than one site on a single machine. Replication with absolute pathnames is unlikely to work across different machines unless great care is taken to make sure the entire path is exactly the same on every machine.
If the master uses a data directory, as specified via DB_ENV->add_data_dir() or DB_ENV->set_create_dir(), it is recommended that you create the same directory structure on all client sites. When the same directory structure appears on a master and the client, replication creates the client databases in the same directory as the master regardless of the local client directory settings. If a master directory is missing on a client, replication decides where to create the client databases by using the client's local directory settings and the Berkeley DB file naming rules as described in File naming.
Whether you use the Base API or the Replication Manager, replication creates a set of internal files that are normally stored on-disk in your environment home directory. These files contain metadata which is necessary for replication operations, and so you should never delete these files.
You can cause these files to not be stored on disk, but instead to be held entirely in-memory, by specifying the DB_REP_CONF_INMEM flag to the DB_ENV->rep_set_config() method. Doing this can improve your application's data throughput by avoiding the disk I/O associated with these metadata files. However, in the event that your application is shut down, the contents of these files are lost. This results in some loss of functionality, including an increased chance that elections will fail, or that the wrong site will win an election. See the DB_REP_CONF_INMEM flag description for more information.
Note that turning on DB_REP_CONF_INMEM means that
Replication Manager cannot store group membership changes
persistently. This is because Replication Manager stores
group membership information in an internal database,
which is held in memory when DB_REP_CONF_INMEM is turned
on. For this reason, if your Replication Manager
application requires replication metadata to be stored in
memory, then you must manually identify all the sites in
your replication group using the
DB_LEGACY
site configuration
attribute. Be aware that this configuration needs to be
made permanent. (Normally, DB_LEGACY
is
used only on a temporary basis for the purpose of
upgrading old Replication Manager applications.)

For every site in your replication group:
Configure a DB_SITE handle for the
local site. Use DB_SITE->set_config() to
indicate that this is a legacy site by
setting the DB_LEGACY
parameter.
Configure a DB_SITE handle for
every other site
in the replication group. Set the
DB_LEGACY
parameter
for each of these handles.
Please pay careful attention to this step. To repeat: a DB_SITE handle MUST be configured for EVERY site in the replication group.
Restart all the sites in the replication group.
Alternatively, you can store persistent environment metadata files, including those required by replication, in a location other than your environment home directory. This is necessary if your environment home directory is on a device that is unstable, because the persistent metadata files cannot be lost or deleted. You do this using the DB_ENV->set_metadata_dir() method.
 That is, if you place your replication metadata in-memory on one site, then it must be placed in-memory on all the sites in the group. Similarly, if you place your replication metadata files in a non-standard directory location on one site, then they must be placed in the exact same directory location on all the sites in your group.


<dd>
The <dd> element contains the description of a term in a definition list entry (<dlentry>).
<dlentry>
Category: Body elements


Key-value stores are specialized NoSQL databases. Essentially, they are dictionaries1.
Database Properties
ACID is a set of properties of database transactions intended to guarantee validity even in the event of errors, power failures, etc:
- Atomicity: Either all statements are applied or none. This is important for SELECTs.
- Consistency: A transaction brings the DB from one valid state to another; see also eventual consistency
- Isolation: concurrent execution of transactions leaves the database in the same state that would have been obtained if the transactions were executed sequentially
- Durability: once a transaction has been committed, it will remain committed even in the case of a system failure
Please notice that Atomicity, Consistency and Isolation are not relevant in many cases where you use a key-value store as you only have GET / SET for one key.
Database Features
- Embedded or client/server: An embedded database is not visible to remote servers. It is embedded in the current process (which can, of course, make it visible).
- Type System: Enforcing types takes time and gives guarantees. Some databases have very simple type systems (e.g. SQLite) and some offer more (e.g. MySQL)
- Availability / Failover: Systems fail. The machine which contains your database could
simply be plugged out. How do you deal with that?
- Backup options: If this is relevant at all depends very much what you use it for. If the key-value store is used as a cache, then backup options are probably not necessary. If it is used to store configuration, then it likely is.
- Replication: Having another machine which replicates the data is the only way to make sure that the system is available, even if the main machine breaks. See Redis Replication.
- Scalability: Suppose you want to store more than you can do on the hardware of a single machine. Do you have to buy a better machine (scale vertically) or is it possible to have another (cheap) machine and run the datase on two machines in a distributed way (scale horizontally)? This is done via sharding.
- Users: Having a user system and different databases in the same database management system is nice, because it allows centralisation of the service for different teams at the same company. Then somebody takes care of the database being up / being backed up and others just get a user.
Use Cases
Configuration: Suppose you have a product which makes use of micro services. In some cases, those micro services need some alignment in form of configuration.
Caches: Web services can contain all sorts of computations which might need longer than acceptable. Caching / pre-calculating those are a common approach for this problem.
Other Benchmarks
MySQL Performance on Amazon EC2, 2007:
- EC2 small: 227 reads/s; 116 read+writes / s
- EC2 large: 430 reads/s; 310 read+writes / s
- EC2 xlarge: 630 reads/s; 483 read+writes / s
sysbench:
$ mysql
> create database sbtest;
$ sysbench oltp_read_write --db-driver=mysql --mysql-db=dbtest --mysql-user=root --mysql-password=YOUR_PASSWORD prepare
$ sysbench oltp_read_write --db-driver=mysql --mysql-db=dbtest --threads=16 --events=100000 --mysql-user=root --mysql-password=YOUR_PASSWORD run
$ sudo -u postgres psql
postgres=# CREATE DATABASE sbtest;
postgres=# grant all privileges on database sbtest to example_user;
$ sysbench oltp_read_write --db-driver=pgsql --pgsql-db=sbtest --pgsql-user=example_user --pgsql-password=example_password prepare
$ sysbench oltp_read_write --db-driver=pgsql --pgsql-db=sbtest --threads=16 --events=100000 --pgsql-user=example_user --pgsql-password=example_password run
On my Thinkpad T460p I get the following numbers. However, I'm not certain how valuable they are as they fluctuate quite a bit between consecutive runs.
| Database | Transactions | Queries | Latency | |||
|---|---|---|---|---|---|---|
| Min | AVG | Max | 95th percentile | |||
| MariaDB 15.1 | 484.81 / s | 9701.13 / s | 14.25ms | 32.61ms | 137.37ms | 53.85ms |
| Postgres 10.10 | 457.44 / s | 9644.38 / s | 5.44ms | 34.90ms | 2052.58ms | 32.53ms |
Features
| SQLite | MariaDB | Postgresql | Redis | Memcached | |
|---|---|---|---|---|---|
| Server | ✗ | ✔ | ✔ | ✔ | ✔ |
| Users | ✗ | ✔ | ✔ | ✗ | ✗ |
Serverless Databases
Serverless Database is a fancy name for a hosted database. It is also called DBaaS - database as a service. You don't have to worry about the underlying machine; you pay for the usage. This usually means:
- GET
- PUT
- Total storage in the database
You should not have to worry about:
- Backups
- Scaling it up
Databases which offer this:
Benchmark
This is not finished. You can find the code on Github.
If you don't make the key
column a primary key, MariaDB is quite a
bit faster.
| Database | Bulk Write | Batched Write | Bulk Read | Read Latency - Percentile | |||
|---|---|---|---|---|---|---|---|
| 25% | 50% | 95% | 99% | ||||
| dict | 2 639 859.62 inserts/s | - | - | 0μs | 0μs | 1μs | 2μs |
| SQLite (in-memory) | 259 834.14 inserts/s | 27 151.94 inserts/s | 69 163.37 selects/s | 32μs | 32μs | 36μs | 60μs |
| SQLite | 193 930.10 inserts/s | 6181.23 inserts/s | 61 012.26 selects/s | 34μs | 34μs | 38μs | 62μs |
| Memcached | 131 635.98 inserts/s | 123 937.91 inserts/s | 57 191.03 selects/s | 25μs | 26μs | 38μs | 51μs |
| Redis | 5103.39 inserts/s | 40 494.49 inserts/s | TODO selects/s | 52μs | 54μs | 80μs | 97μs |
| MariaDB (MyISAM) | 3412.18 inserts/s, 30 266.34🌞 |
4 885.09 inserts/s | 41 432.73 selects/s | 32μs | 33μs | 36μs | 60μs |
| MariaDB (Aria) | 2546.49 inserts/s, 19 708.31🌞 |
4309.30 inserts/s | 41 305.08 selects/s | 33μs | 33μs | 36μs | 57μs |
| PostgreSQL | 1767.12 inserts/s | 3529.08 inserts/s | 37 732.27 selects/s | 32μs | 33μs | 36μs | 59μs |
| MariaDB (InnoDB) | 1152.20 inserts/s *, 14 679.97🌞 |
643.56 inserts/s | 29 405.90 selects/s | 33μs | 33μs | 36μs | 53μs |
For some DBs, batching improved the bulk insert quite a bit. I guess this is because this way I can avoid swapping. Maybe changing the batch-size from 1000 to higher numbers additionally increases the throughput.
See also
- How many keys are too many in memcached?
- LevelDB
- NoSQL Database Types
- Redis Use Cases:
- Todd Hoff: How Twitter Uses Redis To Scale - 105TB RAM, 39MM QPS, 10,000+ Instances, 2014.
- Adam Bloom: Using Redis at Pinterest for Billions of Relationships, 2013.
- Siyuan Fu: Optimizing Memcached Efficiency, 2017
- Andreas Wittig: EC2 Network Performance Cheat Sheet, 2018.
- keyv: An interesting JavaScript project which abstracts the implementation of key-value stores away.
- MariaDB: Choosing the Right Storage Engine
- Jan Bodnar: MySQL storage engines, 2017.
- When to use MyISAM and InnoDB?
- How can I speed up bulk inserts into MySQL with SQLAlchemy?
Footnotes
-
Dictionaries are a fundamental data structure in Python. They are called associative arrays in PHP and hashtable in Java. ↩


--- # this is an empty front matter ---
This is an initiative to collect stories of how people interact with money and make payments in different parts of the world so as designers and developers we may be exposed to more diverse challenges from culture and access, in order to understand how to make Bitcoin a global money system, more accessible and fit into their daily lives.


Moozik
Moozik is a project that creates a Spotify playlist for a roadtrip based on the roadtrip's estimated travel time.
Programming Languages & Tools
Workflow
-
User research
-
Design Specification & Development To-Do List
-
Prototyping & Development
-
Debugging & Launching
Project: In Progess


After today’s guided project, you should be able to:
Here’s a cheat sheet for how to interact with server-side web services from a front-end client like the React apps we’re building:
| HTTP Verb (axios) | CRUD naming | Description | Happy Path |
|---|---|---|---|
| get | Read | Read a representation of a resource | 200 (OK) |
| post | Create | Create new resources | 201 (created) |
| put | Update | Update a resource | 200 (OK) or 201 (created) |
| delete | Delete | Delete a resource | 200 (OK) or 204 (no content) |
Most modern API’s conform to the “representational state transfer” (REST) architecture, with a standardized format for how the “endpoints” (the addresses you send your API calls to) are laid out and how they behave. For example, a typical RESTful resource endpoint might look like this:
HTTP is a protocol that defines how servers and clients communicate over a network, essentially the foundation of the Internet as we know it. REST is an architecture pattern to standardize the way we build HTTP-based web services and clients.
Side note for the routes shown above: it’s very common for API endpoints to be “namespaced” with something like “v1/” to indicate the api version. Depending on the structure of your app, you might have endpoints with additional nesting, with a URL structure more like “api/v1/users”.
The difference between these two types of requests is fairly straightforward: POST to create a new resource, PUT to update an existing one. If you’re ever unsure which to use, here’s a good rule of thumb.
Does the resource I’d like to write to the database already exist?
For both of these requests, we going the resource id along with data we’d like the API to write to the database. In practice, HTTP (the HyperText Transfer Protocol) doesn’t strictly enforce any of this so it’s up to you as the developer to think in terms of resources and follow the standard patterns of the REST architecture. Whether you’re a front-end, back-end, or full-stack developer, knowing these patterns and best practices is extermely important for being able to write good code.
With a delete request, we simply pass the id of the resource to be deleted. It ends up looking quite similar to a GET request for a single resource, hitting the same URL and just using a different verb.


Rails ActiveRecord models have a lifecycle that developers are allowed to hook into. But while most of us know about before_save
and after_update
, there are a few lesser unknown callbacks that are good to know about before you reinvent them. In this post, I'll cover all of the available ActiveRecord lifecycle callbacks, and also show how you can define custom callbacks for normal ruby objects.
The Rails guide for ActiveRecord Validations and Callbacks is a good starting point for an introduction of the available callbacks and what they do. Most developers will be familiar with the validation and persistence callbacks, so let's start with these
:before_validation, :after_validation
:before_save, :after_save
:before_create, :after_create
:before_update, :after_update
:before_destroy, :after_destroy
The callbacks above are self explanatory and commonly used, but if you're unfamiliar with them, or need a refresher, check out the Rails guide on the topic.
For save
, create
, update
, and destroy
, Rails also gives extra helper methods for defining both a before and after save callback at the same time.
For example, suppose you wanted to trigger your own custom callback while a model was being destroyed. You can do so by defining and triggering your own callback as follows:
class SomeModel < ActiveRecord::Base
define_callbacks :custom_callback
around_destroy :around_callback
def around_callback
run_callbacks :custom_callback do
yield # runs the actual destroy here
end
end
end
Most of the time, your Rails models will be using ActiveModel, but sometimes it makes sense to use a plain old ruby object. Wouldn't it be nice if we could define callbacks in the same way? Fortunately, the callback system is neatly abstracted into ActiveSupport::Callbacks so it's easy to mix into any ruby class.
# Look Ma, I'm just a normal ruby class!
class Group
include ActiveSupport::Callbacks
define_callbacks :user_added
def initialize(opts = {})
@users = []
end
# Whenever we add a new user to our array, we wrap the code
# with `run_callbacks`. This will run any defined callbacks
# in order.
def add_user(u)
run_callbacks :user_added do
@users << u
end
end
end
For a fully documented and runnable example, check out this github project. It'll also give some extra explanation about call order and inheritance.
:after_initialize is called right after an object has been unmarshalled from the database. This allows you to do any other custom initialization you want. Instead of defining an initialize
method on a model, use this instead.
:after_find hasn't been useful in my experience. I haven't run into a case where I wanted to manipulate documents after a find action. It could potentially be useful for metrics and profiling.
:after_touch. ActiveRecord allows you to touch a record or its association to refresh its updated_at
attribute. I've found this callback useful to triggering notifications to users after a model has been marked as updated, but not actually changed.
:after_commit is an interesting and tricky callback. Whenever ActiveRecord wants to make a change to a record (create, update, destroy), it wraps it around a transaction. after_commit
is called after you're positive that something has been written out to the database. Because it is also called for destroys, it makes sense to scope the callback if you intend to use it only for saves. Be warned that after_commit can be tricky to use if you're using nested transactions. That'll probably be the topic of another post though.
# call for creates, updates, and deletes
after_commit :all_callback
# call for creates and updates
after_commit :my_callback, :if => :persisted?
after_commit
. I haven't used it yet, but I can see it as being useful for doing manual cleanup after a failed transaction.While many of our models will be backed with ActiveRecord, or some ActiveModel compatitible datastore, it's nice to see how easy it is to follow a similar pattern in normal ruby without having to depend on Rails.


Drag and drop the button to your bookmarks toolbar
Then when you want to decode some base64, simply select your text in your webpage and click on the bookmark.
No matter if it's encoded twice or more in base64.
By selecting text and clicking on the bookmark
..or clicking on the bookmark and paste your base64


NeighborShare
View by:
Category
Category Name
Owner
Owner Name
View by:
Category
Category Name
Owner
Owner Name
Card title
Category
User
Name
Description (optional)
Text
Category
Available
Add Image (optional)
Submit
Name
Description
Text
Category
Item available for sharing?
Change Image
Submit
Delete Image
Confirm Image Delete?
Delete Item
Confirm Item Delete?


- geo_topics - Static variable in class com.example.team5geotopics.R.menu
-
- GeoTopicsApplication - Class in ca.ualberta.cs.team5geotopics
-
This is a collection of singletons.
- GET_PHOTO - Static variable in class ca.ualberta.cs.team5geotopics.InspectCommentActivity
-
- getClient() - Method in class ca.ualberta.cs.team5geotopics.GeoTopicsApplication
-
Gets the client using the applciation.
- getContext() - Method in class ca.ualberta.cs.team5geotopics.GeoTopicsApplication
-
Returns the context of the application.
- getDate() - Method in class ca.ualberta.cs.team5geotopics.CommentModel
-
Gets the date of the comment.
- getEpochTime() - Method in class ca.ualberta.cs.team5geotopics.CommentModel
-
Gets the epoch time of the comment.
- getGeoLocation() - Method in class ca.ualberta.cs.team5geotopics.CommentModel
-
Gets the geolocation of the comment.
- getHits() - Method in class ca.ualberta.cs.team5geotopics.ElasticSearchSearchResponse
-
Gets the Hits value of hits from a ElasticSearch Collection.
- getHits() - Method in class ca.ualberta.cs.team5geotopics.Hits
-
- getInstance() - Static method in class ca.ualberta.cs.team5geotopics.Cache
-
Returns the cache singleton.
- getInstance() - Static method in class ca.ualberta.cs.team5geotopics.GeoTopicsApplication
-
Gets a new instance of the application.
- getInstance() - Static method in class ca.ualberta.cs.team5geotopics.User
-
- getLat() - Method in class ca.ualberta.cs.team5geotopics.CommentModel
-
Gets the latitude of the comment.
- getList() - Method in class ca.ualberta.cs.team5geotopics.CommentListModel
-
Returns The list of comments in the CLM.
- getLon() - Method in class ca.ualberta.cs.team5geotopics.CommentModel
-
Gets the longitude of the comment.
- getmAuthor() - Method in class ca.ualberta.cs.team5geotopics.CommentModel
-
Gets the author from the comment.
- getmBody() - Method in class ca.ualberta.cs.team5geotopics.CommentModel
-
Gets the body from the comment.
- getmDate() - Method in class ca.ualberta.cs.team5geotopics.CommentModel
-
Gets the date of the comment.
- getmEsID() - Method in class ca.ualberta.cs.team5geotopics.CommentModel
-
This function gets the ID of the ElasticSearch comment location.
- getmEsType() - Method in class ca.ualberta.cs.team5geotopics.CommentModel
-
Gets the ElasticSearch type of comment.
- getmParentID() - Method in class ca.ualberta.cs.team5geotopics.CommentModel
-
Gets the comments parent ID.
- getmPicture() - Method in class ca.ualberta.cs.team5geotopics.CommentModel
-
Gets the picture from the comment.
- getmTitle() - Method in class ca.ualberta.cs.team5geotopics.CommentModel
-
Gets the title of the comment.
- getMyComments() - Method in class ca.ualberta.cs.team5geotopics.User
-
- getPhoto() - Method in class ca.ualberta.cs.team5geotopics.InspectCommentActivity
-
Method gets photo from gallery.
- getPicture() - Method in class ca.ualberta.cs.team5geotopics.CommentModel
-
Gets the picture of the comment.
- getSortWeight() - Method in class ca.ualberta.cs.team5geotopics.CommentModel
-
Gets the sort weight of the comment.
- getSource() - Method in class ca.ualberta.cs.team5geotopics.ElasticSearchResponse
-
- getSources() - Method in class ca.ualberta.cs.team5geotopics.ElasticSearchSearchResponse
-
Gets the sources from ElasticSearch.
- getType() - Method in class ca.ualberta.cs.team5geotopics.BrowseActivity
-
- getType() - Method in class ca.ualberta.cs.team5geotopics.MyCommentsActivity
-
Gets the current type of comment.
- getType() - Method in class ca.ualberta.cs.team5geotopics.ReplyLevelActivity
-
- getType() - Method in class ca.ualberta.cs.team5geotopics.TopLevelActivity
-
- getView(int, View, ViewGroup) - Method in class ca.ualberta.cs.team5geotopics.BrowseView
-
This method returns the view associated with the row of the ListView the adapter
is registered to.
- getViews() - Method in class ca.ualberta.cs.team5geotopics.AModel
-
Returns the list of Views currently registerd with the model.
- GraphAdapterBuilder - Class in ca.ualberta.cs.team5geotopics
-
Writes a graph of objects as a list of named nodes.
- GraphAdapterBuilder() - Constructor for class ca.ualberta.cs.team5geotopics.GraphAdapterBuilder
-
- green - Static variable in class com.example.team5geotopics.R.color
-