Approximates Freeman chain(s) with polygonal curve
CvSeq* cvApproxChains( CvSeq* srcSeq, CvMemStorage* storage, CvChainApproxMethod method=CV_CHAIN_APPROX_SIMPLE, double parameter=0, int minimalPerimeter=0, int recursive=0 );
This is a stand-alone approximation routine. The function cvApproxChains works exactly in the same way as cvFindContours with the corresponding approximation flag. The function returns pointer to the first resultant contour. Other approximated contours, if any, can be accessed via v_next or h_next fields of the returned structure.
Initializes chain reader
void cvStartReadChainPoints( CvChain* chain, CvChainPtReader* reader );
The function cvStartReadChainPoints initializes a special reader (see Dynamic Data Structures for more information on sets and sequences).
Gets next chain point
CvPoint cvReadChainPoint( CvChainPtReader* reader );
The function cvReadChainPoint returns the current chain point and updates the reader position.
Approximates polygonal curve(s) with desired precision
CvSeq* cvApproxPoly( const void* srcSeq, int headerSize, CvMemStorage* storage, int method, double parameter, int parameter2=0 );
The function cvApproxPoly approximates one or more curves and returns the approximation result[s]. In case of multiple curves approximation the resultant tree will have the same structure as the input one (1:1 correspondence).
Calculates up-right bounding rectangle of point set
CvRect cvBoundingRect( CvArr* contour, int update );
The function cvBoundingRect returns the up-right bounding rectangle for 2d point set.
Calculates area of the whole contour or contour section
double cvContourArea( const CvArr* contour, CvSlice slice=CV_WHOLE_SEQ );
The function cvContourArea calculates area of the whole contour or contour section. In the latter case the total area bounded by the contour arc and the chord connecting the 2 selected points is calculated as shown on the picture below:
NOTE: Orientation of the contour affects the area sign, thus the function may return negative result. Use fabs() function from C runtime to get the absolute value of area.
Calculates contour perimeter or curve length
double cvArcLength( const void* curve, CvSlice slice=CV_WHOLE_SEQ, int isClosed=-1 );
The function cvArcLength calculates length or curve as sum of lengths of segments between subsequent points
Compares two shapes
double cvMatchShapes( const void* A, const void* B, int method, double parameter=0 );
The function cvMatchShapes compares two shapes. The 3 implemented methods all use Hu moments (see cvGetHuMoments):
method=CV_CONTOUR_MATCH_I1: I1(A,B)=sumi=1..7abs(1/mAi - 1/mBi) method=CV_CONTOUR_MATCH_I2: I2(A,B)=sumi=1..7abs(mAi - mBi) method=CV_CONTOUR_MATCH_I3: I3(A,B)=sumi=1..7abs(mAi - mBi)/abs(mAi) where mAi=sign(hAi)•log(hAi), mBi=sign(hBi)•log(hBi), hAi, hBi - Hu moments of A and B, respectively.
Creates hierarchical representation of contour
CvContourTree* cvCreateContourTree( cont CvSeq* contour, CvMemStorage* storage, double threshold );
The function cvCreateContourTree creates binary tree representation for the input contour and returns the pointer to its root. If the parameter threshold is less than or equal to 0, the function creates full binary tree representation. If the threshold is greater than 0, the function creates representation with the precision threshold: if the vertices with the interceptive area of its base line are less than threshold, the tree should not be built any further. The function returns the created tree.
Restores contour from tree
CvSeq* cvContourFromContourTree( const CvContourTree* tree, CvMemStorage* storage, CvTermCriteria criteria );
The function cvContourFromContourTree restores the contour from its binary tree representation. The parameter criteria determines the accuracy and/or the number of tree levels used for reconstruction, so it is possible to build approximated contour. The function returns reconstructed contour.
Compares two contours using their tree representations
double cvMatchContourTrees( const CvContourTree* tree1, const CvContourTree* tree2, CvTreeMatchMethod method, double threshold );
The function cvMatchContourTrees calculates the value of the matching measure for two contour trees. The similarity measure is calculated level by level from the binary tree roots. If at the certain level difference between contours becomes less than threshold, the reconstruction process is interrupted and the current difference is returned.
Finds bounding rectangle for two given rectangles
CvRect cvMaxRect( const CvRect* rect1, const CvRect* rect2 );
The function cvMaxRect finds minimum area rectangle that contains both input rectangles inside:
Rotated 2D box
typedef struct CvBox2D { CvPoint2D32f center; /* center of the box */ CvSize2D32f size; /* box width and length */ float angle; /* angle between the horizontal axis and the first side (i.e. length) in radians */ } CvBox2D;
Finds box vertices
void cvBoxPoints( CvBox2D box, CvPoint2D32f pt[4] );
The function cvBoxPoints calculates vertices of the input 2d box. Here is the function code:
void cvBoxPoints( CvBox2D box, CvPoint2D32f pt[4] ) { float a = (float)cos(box.angle)*0.5f; float b = (float)sin(box.angle)*0.5f; pt[0].x = box.center.x - a*box.size.height - b*box.size.width; pt[0].y = box.center.y + b*box.size.height - a*box.size.width; pt[1].x = box.center.x + a*box.size.height - b*box.size.width; pt[1].y = box.center.y - b*box.size.height - a*box.size.width; pt[2].x = 2*box.center.x - pt[0].x; pt[2].y = 2*box.center.y - pt[0].y; pt[3].x = 2*box.center.x - pt[1].x; pt[3].y = 2*box.center.y - pt[1].y; }
Fits ellipse to set of 2D points
CvBox2D cvFitEllipse2( const CvArr* points );
The function cvFitEllipse calculates ellipse that fits best (in least-squares sense) to a set of 2D points. The meaning of the returned structure fields is similar to those in cvEllipse except that size stores the full lengths of the ellipse axises, not half-lengths
Fits line to 2D or 3D point set
void cvFitLine( const CvArr* points, CvDisType disType, double C, double reps, double aeps, float* line );
The function cvFitLine fits line to 2D or 3D point set by minimizing sumiρ(ri), where ri is distance between i-th point and the line and ρ(r) is a distance function, one of:
disType=CV_DIST_L2 (L2): ρ(r)=r2/2 (the simplest and the fastest least-squares method) disType=CV_DIST_L1 (L1): ρ(r)=r disType=CV_DIST_L12 (L1-L2): ρ(r)=2•[sqrt(1+r2/2) - 1] disType=CV_DIST_FAIR (Fair): ρ(r)=C2•[r/C - log(1 + r/C)], C=1.3998 disType=CV_DIST_WELSCH (Welsch): ρ(r)=C2/2•[1 - exp(-(r/C)2)], C=2.9846 disType=CV_DIST_HUBER (Huber): ρ(r)= r2/2, if r < C C•(r-C/2), otherwise; C=1.345
Finds convex hull of points set
CvSeq* cvConvexHull2( const void* points, void* hullStorage=0, int orientation=CV_CLOCKWISE, int returnPoints=0 );
The function cvConvexHull2 finds convex hull of 2D point set using Sklansky's algorithm. If hullStorage is memory storage, the function creates a sequence containing the hull points or pointers to them, depending on returnPoints value and returns the sequence on output.
#include "cv.h" #include "highgui.h" #include <stdlib.h> #define ARRAY 0 /* switch between array/sequence method by replacing 0<=>1 */ void main( int argc, char** argv ) { IplImage* img = cvCreateImage( cvSize( 500, 500 ), 8, 3 ); cvNamedWindow( "hull", 1 ); #if !ARRAY CvMemStorage* storage = cvCreateMemStorage(); #endif for(;;) { int i, count = rand()%100 + 1, hullcount; CvPoint pt0; #if !ARRAY CvSeq* ptseq = cvCreateSeq( CV_SEQ_KIND_GENERIC|CV_32SC2, sizeof(CvContour), sizeof(CvPoint), storage ); CvSeq* hull; for( i = 0; i < count; i++ ) { pt0.x = rand() % (img->width/2) + img->width/4; pt0.y = rand() % (img->height/2) + img->height/4; cvSeqPush( ptseq, &pt0 ); } hull = cvConvexHull2( ptseq, 0, CV_CLOCKWISE, 0 ); hullcount = hull->total; #else CvPoint* points = (CvPoint*)malloc( count * sizeof(points[0])); int* hull = (int*)malloc( count * sizeof(hull[0])); CvMat pointMat = cvMat( 1, count, CV_32SC2, points ); CvMat hullMat = cvMat( 1, count, CV_32SC1, hull ); for( i = 0; i < count; i++ ) { pt0.x = rand() % (img->width/2) + img->width/4; pt0.y = rand() % (img->height/2) + img->height/4; points[i] = pt0; } cvConvexHull2( &pointMat, &hullMat, CV_CLOCKWISE, 0 ); hullcount = hullMat.cols; #endif cvZero( img ); for( i = 0; i < count; i++ ) { #if !ARRAY pt0 = *CV_GET_SEQ_ELEM( CvPoint, ptseq, i ); #else pt0 = points[i]; #endif cvCircle( img, pt0, 2, CV_RGB( 255, 0, 0 ), CV_FILLED ); } #if !ARRAY pt0 = **CV_GET_SEQ_ELEM( CvPoint*, hull, hullcount - 1 ); #else pt0 = points[hull[hullcount-1]]; #endif for( i = 0; i < hullcount; i++ ) { #if !ARRAY CvPoint pt = **CV_GET_SEQ_ELEM( CvPoint*, hull, i ); #else CvPoint pt = points[hull[i]]; #endif cvLine( img, pt0, pt, CV_RGB( 0, 255, 0 )); pt0 = pt; } cvShowImage( "hull", img ); int key = cvWaitKey(0); if( key == 27 ) // 'ESC' break; #if !ARRAY cvClearMemStorage( storage ); #else free( points ); free( hull ); #endif } }
Tests contour convex
int cvCheckContourConvexity( const void* contour );
The function cvCheckContourConvexity tests whether the input contour is convex or not. The contour must be simple, i.e. without self-intersections.
Structure describing a single contour convexity detect
typedef struct CvConvexityDefect { CvPoint* start; /* point of the contour where the defect begins */ CvPoint* end; /* point of the contour where the defect ends */ CvPoint* depth_point; /* the farthest from the convex hull point within the defect */ float depth; /* distance between the farthest point and the convex hull */ } CvConvexityDefect;
Finds convexity defects of contour
CvSeq* cvConvexityDefects( const void* contour, const void* convexhull, CvMemStorage* storage=0 );
The function cvConvexityDefects finds all convexity defects of the input contour and returns a sequence of the CvConvexityDefect structures.
Finds circumscribed rectangle of minimal area for given 2D point set
CvBox2D cvMinAreaRect2( const void* points, CvMemStorage* storage=0 );
The function cvMinAreaRect2 finds a circumscribed rectangle of the minimal area for 2D point set by building convex hull for the set and applying rotating calipers technique to the hull.
Finds circumscribed circle of minimal area for given 2D point set
void cvMinEnclosingCircle( const void* points, CvPoint2D32f* center, float* radius );
The function cvMinEnclosingCircle finds the minimal circumscribed circle for 2D point set using iterative algorithm.
Calculates pair-wise geometrical histogram for contour
void cvCalcPGH( const CvSeq* contour, CvHistogram* hist );
The function cvCalcPGH calculates 2D pair-wise geometrical histogram (PGH), described in [Iivarinen97], for the contour. The algorithm considers every pair of the contour edges. The angle between the edges and the minimum/maximum distances are determined for every pair. To do this each of the edges in turn is taken as the base, while the function loops through all the other edges. When the base edge and any other edge are considered, the minimum and maximum distances from the points on the non-base edge and line of the base edge are selected. The angle between the edges defines the row of the histogram in which all the bins that correspond to the distance between the calculated minimum and maximum distances are incremented (that is, the histogram is transposed relatively to [Iivarninen97] definition). The histogram can be used for contour matching.
[Iivarinen97] Jukka Iivarinen, Markus Peura, Jaakko Srel, and Ari Visa. Comparison of Combined Shape Descriptors for Irregular Objects, 8th British Machine Vision Conference, BMVC'97. You may find online version at http://www.cis.hut.fi/research/IA/paper/publications/bmvc97/bmvc97.html
Splits set of vectors by given number of clusters
void cvKMeans2( const CvArr* samples, int numClusters, CvArr* clusterIdx, CvTermCriteria termcrit );
The function cvKMeans2 implements k-means algorithm that finds centers of numClusters clusters and groups the input samples around the clusters. On output clusterIdx(i) contains a cluster index for sample stored in i-th rows of samples.
#include "cv.h" #include "highgui.h" void main( int argc, char** argv ) { #define MAX_CLUSTERS 5 static const int color_tab[MAX_CLUSTERS] = { CV_RGB(255,0,0), CV_RGB(0,255,0), CV_RGB(100,100,255), CV_RGB(255,0,255), CV_RGB(255,255,0) }; IplImage* img = cvCreateImage( cvSize( 500, 500 ), 8, 3 ); CvRandState rng; cvRandInit( &rng, 0, 1, -1, CV_RAND_NORMAL ); cvNamedWindow( "clusters", 1 ); for(;;) { int k, cluster_count = cvRandNext(&rng)%MAX_CLUSTERS + 1; int i, sample_count = cvRandNext(&rng)%1000 + 1; CvMat* points = cvCreateMat( sample_count, 1, CV_32FC2 ); CvMat* clusters = cvCreateMat( sample_count, 1, CV_32SC1 ); /* generate random sample from multigaussian distribution */ for( k = 0; k < cluster_count; k++ ) { CvPoint center; CvMat point_chunk; center.x = cvRandNext(&rng)%img->width; center.y = cvRandNext(&rng)%img->height; cvRandSetRange( &rng, center.x, img->width/6, 0 ); cvRandSetRange( &rng, center.y, img->height/6, 1 ); cvGetRows( points, &point_chunk, k*sample_count/cluster_count, k == cluster_count - 1 ? sample_count : (k+1)*sample_count/cluster_count ); cvRand( &rng, &point_chunk ); } /* shuffle samples */ for( i = 0; i < sample_count/2; i++ ) { CvPoint2D32f* pt1 = (CvPoint2D32f*)points->data.fl + cvRandNext(&rng)%sample_count; CvPoint2D32f* pt2 = (CvPoint2D32f*)points->data.fl + cvRandNext(&rng)%sample_count; CvPoint2D32f temp; CV_SWAP( *pt1, *pt2, temp ); } cvKMeans2( points, cluster_count, clusters, cvTermCriteria( CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 10, 1.0 )); cvZero( img ); for( i = 0; i < sample_count; i++ ) { CvPoint2D32f pt = ((CvPoint2D32f*)points->data.fl)[i]; int cluster_idx = clusters->data.i[i]; cvCircle( img, cvPointFrom32f(pt), 2, color_tab[cluster_idx], CV_FILLED ); } cvReleaseMat( &points ); cvReleaseMat( &clusters ); cvShowImage( "clusters", img ); int key = cvWaitKey(0); if( key == 27 ) // 'ESC' break; } }
Finds circumscribed circle of minimal area for given 2D point set
void cvMinEnclosingCircle( const void* points, CvPoint2D32f* center, float* radius );
The function cvMinEnclosingCircle finds the minimal circumscribed circle for 2D point set using iterative algorithm.
Planar subdivision
#define CV_SUBDIV2D_FIELDS() \ CV_GRAPH_FIELDS() \ int quad_edges; \ int is_geometry_valid; \ CvSubdiv2DEdge recent_edge; \ CvPoint2D32f topleft; \ CvPoint2D32f bottomright; typedef struct CvSubdiv2D { CV_SUBDIV2D_FIELDS() } CvSubdiv2D;
Planar subdivision is a subdivision of a plane into a set of non-overlapped regions (facets) that cover the whole plane. The above structure describes a subdivision built on 2d point set, where the points are linked together and form a planar graph, which, together with a few edges connecting exterior subdivision points (namely, convex hull points) with infinity, subdivides a plane into facets by its edges.
For every subdivision there exists dual subdivision there facets and points (subdivision vertices) swap their roles, that is, a facet is treated as a vertex (called virtual point below) of dual subdivision and the original subdivision vertices become facets. On the picture below original subdivision is marked with solid lines and dual subdivision with dot lines
OpenCV subdivides plane into triangles using Delaunay's algorithm. Subdivision is built iteratively starting from a dummy triangle that includes all the subdivision points for sure. In this case the dual subdivision is Voronoi diagram of input 2d point set. The subdivisions can be used for 3d piece-wise transformation of a plane, morphing, fast location of points on the plane, building special graphs (such as NNG,RNG) etc.
Quad-edge of planar subdivision
/* one of edges within quad-edge, lower 2 bits is index (0..3) and upper bits are quad-edge pointer */ typedef long CvSubdiv2DEdge; /* quad-edge structure fields */ #define CV_QUADEDGE2D_FIELDS() \ int flags; \ struct CvSubdiv2DPoint* pt[4]; \ CvSubdiv2DEdge next[4]; typedef struct CvQuadEdge2D { CV_QUADEDGE2D_FIELDS() } CvQuadEdge2D;
Quad-edge is a basic element of subdivision, it contains four edges (e, eRot and reversed e & eRot):
Point of original or dual subdivision
#define CV_SUBDIV2D_POINT_FIELDS()\ int flags; \ CvSubdiv2DEdge first; \ CvPoint2D32f pt; #define CV_SUBDIV2D_VIRTUAL_POINT_FLAG (1 << 30) typedef struct CvSubdiv2DPoint { CV_SUBDIV2D_POINT_FIELDS() } CvSubdiv2DPoint;
Returns one of edges related to given
CvSubdiv2DEdge cvSubdiv2DGetEdge( CvSubdiv2DEdge edge, CvNextEdgeType type ); #define cvSubdiv2DNextEdge( edge ) cvSubdiv2DGetEdge( edge, CV_NEXT_AROUND_ORG )
The function cvSubdiv2DGetEdge returns one the edges related to the input edge.
Returns another edge of the same quad-edge
CvSubdiv2DEdge cvSubdiv2DRotateEdge( CvSubdiv2DEdge edge, int rotate );
The function cvSubdiv2DRotateEdge returns one the edges of the same quad-edge as the input edge.
Returns edge origin
CvSubdiv2DPoint* cvSubdiv2DEdgeOrg( CvSubdiv2DEdge edge );
The function cvSubdiv2DEdgeOrg returns the edge origin. The returned pointer may be NULL if the edge is from dual subdivision and the virtual point coordinates are not calculated yet. The virtual points can be calculated using function cvCalcSubdivVoronoi2D.
Returns edge destination
CvSubdiv2DPoint* cvSubdiv2DEdgeDst( CvSubdiv2DEdge edge );
The function cvSubdiv2DEdgeDst returns the edge destination. The returned pointer may be NULL if the edge is from dual subdivision and the virtual point coordinates are not calculated yet. The virtual points can be calculated using function cvCalcSubdivVoronoi2D.
Creates empty Delaunay triangulation
CvSubdiv2D* cvCreateSubdivDelaunay2D( CvRect rect, CvMemStorage* storage );
The function cvCreateSubdivDelaunay2D creates an empty Delaunay subdivision, where 2d points can be added further using function cvSubdivDelaunay2DInsert. All the points to be added must be within the specified rectangle, otherwise a runtime error will be raised.
Inserts a single point to Delaunay triangulation
CvSubdiv2DPoint* cvSubdivDelaunay2DInsert( CvSubdiv2D* subdiv, CvPoint2D32f pt);
The function cvSubdivDelaunay2DInsert inserts a single point to subdivision and modifies the subdivision topology appropriately. If a points with same coordinates exists already, no new points is added. The function returns pointer to the allocated point. No virtual points coordinates is calculated at this stage.
Inserts a single point to Delaunay triangulation
CvSubdiv2DPointLocation cvSubdiv2DLocate( CvSubdiv2D* subdiv, CvPoint2D32f pt, CvSubdiv2DEdge *edge, CvSubdiv2DPoint** vertex=0 );
The function cvSubdiv2DLocate locates input point within subdivision. There are 5 cases:
Finds the closest subdivision vertex to given point
CvSubdiv2DPoint* cvFindNearestPoint2D( CvSubdiv2D* subdiv, CvPoint2D32f pt );
The function cvFindNearestPoint2D is another function that locates input point within subdivision. It finds subdivision vertex that is the closest to the input point. It is not necessarily one of vertices of the facet containing the input point, though the facet (located using cvSubdiv2DLocate) is used as a starting point. The function returns pointer to the found subdivision vertex
Calculates coordinates of Voronoi diagram cells
void cvCalcSubdivVoronoi2D( CvSubdiv2D* subdiv );
The function cvCalcSubdivVoronoi2D calculates coordinates of virtual points. All virtual points corresponding to some vertex of original subdivision form (when connected together) a boundary of Voronoi cell of that point.
Removes all virtual points
void cvClearSubdivVoronoi2D( CvSubdiv2D* subdiv );
The function cvClearSubdivVoronoi2D removes all virtual points. It is called internally in cvCalcSubdivVoronoi2D if the subdivision was modified after previous call to the function.
There are a few other lower-level functions that work with planar subdivisions, see cv.h and the sources. Demo script delaunay.c that builds Delaunay triangulation and Voronoi diagram of random 2d point set can be found at opencv/samples/c.


Want to use our API? Log out and go to www.sc-mp.herokuapp.com/developer to log in to your developer account or create a new developer account.


Get All Todos
Json will go here
owner:
limit owner results:
get todos by owner
status:
get todos by status
contains:
Search todo bodies for String contained
category:
Search todos by category


|
mbed-lib
1.0
|
Defines | |
| #define | GP_LOW 0 |
| #define | GP_HIGH 1 |
| #define | GP_ERR 2 |
Set and read values for GPIO ports.
| #define GP_ERR 2 |
Indicates that the pin is not configured.
| #define GP_HIGH 1 |
High level (+3.3V)/
| #define GP_LOW 0 |
Low level (ground).


An example demonstrating the difference between using pure jQuery vs SimpleMVC together with jQuery.
I challenge you to write the same in pure jQuery which does the same thing as SimpleMVC does.
If you are fit for fight, let's get started by forking this fiddle!
When you're done, you can put a link to the forked fiddle in the comments below!


---
layout: ion
title: Honorary Advisors
permalink: /about/advisors/
---
Student Surgical Association of Hong KongSSAHK
Prof. C.M. Lo is the Chair Professor and Head of Department of Surgery at the University of Hong Kong. Professor Lo is internationally renowned for his innovation in hepatobiliary surgery and liver transplantation. He and his team pioneered adult living donor right lobe liver transplant since 1996 and revolutionized the world-wide practice of liver transplantation. By his surgical skills and innovation, he won China’s Top National Honours for Scientific Achievements in 2005.
Prof. James Y.W. Lau is the Chairman of the Department of Surgery at the Chinese University of Hong Kong. He is the founder and chairman of the vascular surgery team at the Department of Surgery on his return from training in Edinburgh to serve the public patients. He is also the Chairman of the Research and Development in CUHK’s Jockey Club Minimally Invasive Surgical Skills Centre. Professor Lau specializes in endoscopic treatment, and has published over 100 papers in international medical journals, earning him the first holder of Yao Ling Sun Professorship in Surgery.


Astrologer Creta:
Ah, a handbag left by Maria's friend! Very interesting... Handbags are very important to most women. Only a very careless woman would leave such an object behind.
This is certainly a sign of a future incident.
Ask if this is a clue


KING OF KINGS (US, 1961) Directed by Nicholas Ray. Written by Philip Yordan. Photography, Franz Planer, Milton Krasner, Manuel Berenguer. Editing, Harold F. Kress, Renee Lichtig. Set design & costumes, Georges Wakhevitch. Music, Miklos Rosza. Producer, Samuel Bronston. Cast: Jeffrey Hunter, Siobhan McKenna, Hurd Hatfield, Ron Randell, Viveca Lindfors, Rita Gam, Carmen Sevilla, Brigid Bazlen, Harry Guardino, Rip Torn, Frank Thring, Guy Rolfe, Maurice Marsac, Gregoire Aslan, Royal Dano, Edric Connor, George Coulouris, et al. 168 minutes.
KING OF KINGS (1961) In 1927, during the waning days of silents, Cecil B. DeMille made an impressive life-of-Jesus film called "King of Kings." Nicholas Ray's longer, 1961 version goes one better. It is surprisingly moving and sober, and though reverential, it amounts to much more than a collection of biblical postcards. The narration (by Orson Welles) is limited and well done.
The movie came after a spate of youth-centered pictures such as Nicholas Rayšs own classic "Rebel Without a Cause" (1955), and after silly titles like "I Was a Teen-Age Frankenstein" or "I Was a Teen-Age Werewolf." So the wags dubbed it "I Was a Teen-Age Jesus " -- a good jest had the movie deserved it.
But it didnšt. The joke was unfair to the film, its makers and Jeff Hunter. Hunter's face may lack the necessary intelligence for his role, but he is so well directed that he's convincing enough.
True, his King's English is not perfect. Hunter tells the rebelling Jews : "Romans are conquerors. If you become conquerors you will be no different than them." Good pacifism, bad grammar. Someone ought to have caught that jarring "than" and credited Christ with better English, so to speak. But then, literacy is not Hollywood's forte.
The picture establishes a clear continuity from Jews to Christians, that is, it stresses the Christians as Jews. There are several unusual scenes. Among them, Golgotha's disorderly array of crosses comes through like a mass of TV antennas --whether by chance or on purpose I cannot tell. Curiously, the opening of Francois Truffaut's British-made "Fahrenheit 451" of 1967, with its own antennas, bears some resemblance to this.
(Interestingly, Ray Bradbury, whose book Truffaut adapted, is the uncredited writer of the narration of King of Kings)
Jesus on the Cross is not a ghoulish sight. We see no torture. The descent comes very rapidly and discreetly. Physical violence and pain are neither underlined no exploited.
The interesting supporting cast includes Siobhan McKenna, Robert Ryan, Hurd Hatfield, Viveca Lindfors, Rita Gam and Rip Torn.
There are many Spanish supporting actors and extras. The movie was filmed in Spain, as was the entire quartet of "epics" produced by Samuel Bronston. These were Bronston's claim to fame: "El Cid" (1961, also partly shot in Italy and the UK); :The 55 Days of Peking" (1963); "The Fall of the Roman Empire" (1964). The 1960s were the heyday of shooting "epics" and action pictures in Spain, including the works of Sergio Leone --his justly famous Spaghetti Westerns --which were also Paella Westerns.
Beautiful score by Miklos Rozsa. "King of Kings" absolutely ought to be shown letterboxed, but is not always. (Edwin Jahiel)
Written = April 10, 1990 Small additions, changes = December 1998
" Le mauvais gout mene au crime" (Stendhal)
Edwin Jahiel's movie reviews are at http://www.prairienet.org/ejahiel
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


{% extends 'layout.html' %} {% block title %} RGT | Home {% endblock title %} {% block stylesheet %} {% endblock stylesheet %} {% block content %}
Please verify your email.
Welcome {{ firstName }}! Please use the menu above to navigate.
The Repertory Grid Tool is a project of the Software Engineering and Architecture research group (SEARCH), from the University of Groningen, in the Netherlands.
Please take note that we currently only support the following browsers:


Learning the ways of Full Stack Development.
Jody is an aspiring full stack developer who is currently attending a Full Stack Developer bootcamp at Johns Hopkins University! Jody is currently an Account Manager who manages finances in the hospitality industry and is looking to pursue a career in software development in either the web development field or game development field.
Presented by the "Git-Gud" team - Alex, Jordyn, Tina, and myself
Check it out!


Setup wake on LAN on local server
Why Wake on LAN? Wake on LAN is program to wake a system which is under deep sleep. That is, the system is shut down with power access. A system with an enabled Wake-on-LAN feature can be turned on using a special packet. This special packet is sent by the client remotely.
To implement Wake-On-LAN on the server, we need to install ethtool on our server and wakeonlan commanline program on our personal system.
First we will setup our server:-
-
Enable wake-on-LAN on BIOS settings. Enter into BIOS and search for wake on LAN and enable it. Make sure the ethernet cable connect from the server to the switch or router has all the 8 pins connected. This is because the magic packet is sent via a dedicatd pin, usually last 2 pins. Install ethtool into the server.
(Ubuntu / Debian)
$ sudo apt install ethtool
(Fedora)
$ sudo dnf install ethtool
(RHEL / CentOS)
$ sudo yum install ethtool
-
Now let’s find the name of ethernet port present in the system. This command will also reveal the mac address.
$ ip a
The above command will output the ethernet port name (Lets consider the ethernet name to be enp9s0).
-
Let’s check if ethtool detects the port.
$ sudo ethtool enp9s0
-
Now, let’s activate wake on lan.
$ sudo ethtool -s enp8s0 wol g
-
Now, we will setup wake on client on your system. i.e, the system that will be used to wake the server.
(Ubuntu / Debian)
$ sudo apt install etherwake
(Mac)
$ brew install wakeonlan
(Fedora / RHEL / CentOS)
$ wget http://gsd.di.uminho.pt/jpo/software/wakeonlan/downloads/wakeonlan-0.41-0.fdr.1.noarch.rpm $ rpm -Uvh wakeonlan-0.41-0.fdr.1.noarch.rpm
Now, we can wake the system using the wakeonlan command. Execute the following command.
$ wakeonlan mac-address
The above command will wake your system.


is a library for streamlining the editing and creation process for ROMs. Making or adjusting to different tools for different systems can be tedious, and sometimes a headache to even find tools for obscure systems. Perhaps you want to edit a game's levels, but want a simple framework to do it with rather than writing a tool from scratch. Maybe you make original games, and you need something to convert your resources as well as your code.
These things are what this project aspires to streamline.  It's more of a mastery of adaption to your interfacing rather than the systems themselves. I want to do anything I can to make that easier, for myself mainly. Therefore, eventually, Imperial will become a suite of tools to this effect. For this list of hopes and dreams, see the tool designs section.
The system strives for being the be all and end all of binary conversion and modification. It can easily support things besides ROMs, even if that's its focus.
| How to use the command-line interface to apply other peoples' projects. How to use the given tools and what for. | Learn how to write your own MPRL files to extract, modify, or create content. | Learn how to create your own library to add custom structs or data types. | Learn how the library is designed so that you can contribute to the core. |


Help us build Trustroots! Nobody can do everything, but everyone can do something...
Help manage our social media accounts.
We have too many support requests to handle. Check out the meta thread to get involved.
Work out new features and improve existing flows. We love good looking design.
Trustroots needs fresh photos every now and then. Would be great if you could donate your travel photos.
Write stuff for our blog or for the website.
Find spelling errors and send us corrections by opening an issue.
We can use help with legal issues.
Want to be a Trustroots developer? Jump right in. We have tons of issues... They even have labels (easy, texts, help wanted).
Use the website: travel and host! Test it out with different mobile devices, browsers, and screen sizes. Report bugs by opening an issue on GitHub or use the contact form.
Let us know if you have a space at your disposal that you want to provide to a Trustroots collective or hackathon. (Check out some previous Trustroots spaces.)
Honestly, the biggest thing that helps us is helping more people find out about Trustroots.
Tell your friends and fellow travelers about Trustroots, and tag us on social media. You can follow us on Twitter, Instagram, Facebook, Google+, and our blog.
If you write a post about Trustroots on your blog, definitely let us know so that we can share it.
We're always happy to hear from you if you don't know what you can do.
If you're still not sure and just want to chat to some humans, introduce yourself on our volunteer forum. All are welcome and we'll be happy to help you get started.


Aspiring entry-level software engineer
Programming Languages
Language skills
Malay
100%
English
90%
Can contact me via E-Mail
<EMAIL_ADDRESS>or just click any of my socmed at the footer


Uses of Class
com.erudika.para.core.validation.Constraint
Package
Description
Core domain classes for modeling the Para domain space.
Object validation utilities.
-
Uses of Constraint in com.erudika.para.core
Modifier and TypeMethodDescriptionboolean
App.addValidationConstraint
(String type, String field, Constraint c) Adds a new constraint to the list of constraints for a given field and type. -
Uses of Constraint in com.erudika.para.core.validation
Modifier and TypeMethodDescriptionstatic Constraint
Builds a new constraint from a given name and payload.static Constraint
static Constraint
Constraint.email()
The 'email' constraint - field must contain a valid email.static Constraint
Constraint.falsy()
The 'falsy' constraint - field value must not be equal to 'true'.static Constraint
Constraint.fromAnnotation
(Annotation anno) Builds a new constraint from the annotation data.static Constraint
Constraint.future()
The 'future' constraint - field value must be aDate
or a timestamp in the future.static Constraint
The 'max' constraint - field must contain a number smaller than or equal to max.static Constraint
The 'min' constraint - field must contain a number larger than or equal to min.static Constraint
Constraint.past()
The 'past' constraint - field value must be aDate
or a timestamp in the past.static Constraint
The 'pattern' constraint - field must contain a value matching a regular expression.static Constraint
Constraint.required()
The 'required' constraint - marks a field as required.static Constraint
The 'size' constraint - field must be aString
,Map
,Collection
or array with a given minimum and maximum length.static Constraint
Constraint.truthy()
The 'truthy' constraint - field value must be equal to 'true'.static Constraint
Constraint.url()
The 'url' constraint - field value must be a valid URL.


Oak 1.0 comes with a extension to the Jackrabbit user management API that allows to change the way how the name of an authorizable node is being generated.
As in Jackrabbit 2.x the target ID is used as name-hint by default. In order to prevent exposing identifier related information in the path of the authorizable node, it it’s desirable to change this default behavior by plugging a different implementation of the AuthorizableNodeName interface.
In the default implementation the corresponding configuration parameter is PARAM_AUTHORIZABLE_NODE_NAME. The default name generator can be replace by installing an OSGi service that implementations the AuthorizableNodeName interface. In a non-OSGi setup the user configuration must be initialized with configuration parameters that provide the custom generator implementation.
The following public interfaces are provided by Oak in the package org.apache.jackrabbit.oak.spi.security.user:
The AuthorizableNodeName interface itself defines single method that allows to generate a valid JCR name for a given authorizable ID.
Oak 1.0 provides the following base implementations:
The default security setup as present with Oak 1.0 can be run with a custom RandomAuthorizableNodeName implementations.
In an OSGi setup the following steps are required in order to add a different implementation:
In an OSGi-based setup it’s sufficient to make the service available to the repository in order to enable this custom node name generator.
@Component @Service(value = {AuthorizableNodeName.class}) /** * Custom implementation of the {@code AuthorizableNodeName} interface * that uses a uuid as authorizable node name. */ final class UUIDNodeName implements AuthorizableNodeName { @Override @Nonnull public String generateNodeName(@Nonnull String authorizableId) { return UUID.randomUUID().toString(); } }
In a non-OSGi setup this custom name generator can be plugged by making it available to the user configuration as follows:
Map<String, Object> userParams = new HashMap<String, Object>(); userParams.put(UserConstants.PARAM_AUTHORIZABLE_NODE_NAME, new UUIDNodeName()); ConfigurationParameters config = ConfigurationParameters.of(ImmutableMap.of(UserConfiguration.NAME, ConfigurationParameters.of(userParams))); SecurityProvider securityProvider = new SecurityProviderImpl(config)); Repository repo = new Jcr(new Oak()).with(securityProvider).createRepository();