OpenGL is a trademark of Silicon Graphics, Inc. X Window System is a trademark
of X Consortium, Inc. Spaceball is a registered trademark of Spatial
Systems Inc.
The authors have taken care in preparation of this documentation but make
no expressed or implied warranty of any kind and assumes no responsibility
for errors or omissions. No liability is assumed for incidental or consequential
damages in connection with or arising from the use of information or programs
contained herein.
2.0 Introduction
3.0 Background
3.1 Design Philosophy
3.2 Conventions
3.3 Terminology
3.4 Differences from GLUT 3.7
4.1 glutInit
4.2 glutInitWindowPosition, glutInitWindowSize
4.3 glutInitDisplayMode
4.4 glutInitDisplayString
5.0 Event Processing Functions
5.1 glutMainLoop
5.2 glutMainLoopEvent
5.3 glutLeaveMainLoop
6.0 Window Functions
6.1 glutCreateWindow
6.2 glutCreateSubwindow
6.3 glutDestroyWindow
6.4 glutSetWindow, glutGetWindow
6.5 glutSetWindowTitle, glutSetIconTitle
6.6 glutReshapeWindow
6.7 glutPositionWindow
6.8 glutShowWindow, glutHideWindow, glutIconifyWindow
6.9 glutPushWindow, glutPopWindow
6.10 glutFullScreen
7.1 glutPostRedisplay
7.2 glutPostWindowRedisplay
7.3 glutSwapBuffers
8.1 glutSetCursor
8.2 glutWarpPointer
9.1 glutEstablishOverlay
9.2 glutRemoveOverlay
9.3 glutUseLayer
9.4 glutPostOverlayRedisplay
9.5 glutPostWindowOverlayRedisplay
9.6 glutShowOverlay, glutHideOverlay
10.0 Menu Functions
10.1 glutCreateMenu
10.2 glutDestroyMenu
10.3 glutGetMenu, glutSetMenu
10.4 glutAddMenuEntry
10.5 glutAddSubMenu
10.6 glutChangeToMenuEntry
10.7 glutChangeToSubMenu
10.8 glutRemoveMenuItem
10.9 glutAttachMenu, glutDetachMenu
11.0 Global Callback Registration Functions
11.1 glutTimerFunc
11.2 glutIdleFunc
12.0 Window-Specific Callback Registration
Functions
12.1 glutDisplayFunc
12.2 glutOverlayDisplayFunc
12.3 glutReshapeFunc
12.4 glutCloseFunc
12.5 glutKeyboardFunc
12.6 glutSpecialFunc
12.7 glutKeyboardUpFunc
12.8 glutSpecialUpFunc
12.9 glutMouseFunc
12.10 glutMotionFunc, glutPassiveMotionFunc
12.11 glutVisibilityFunc
12.12 glutEntryFunc
12.13 glutJoystickFunc
12.14 glutSpaceballMotionFunc
12.15 glutSpaceballRotateFunc
12.16 glutSpaceballButtonFunc
12.17 glutButtonBoxFunc
12.18 glutDialsFunc
12.19 glutTabletMotionFunc
12.20 glutTabletButtonFunc12.21 glutMenuStatusFunc
12.22 glutWindowStatusFunc
13.0 State Setting and Retrieval Functions
13.1 glutSetOption
13.2 glutGet
13.3 glutDeviceGet
13.4 glutGetModifiers
13.5 glutLayerGet
13.6 glutExtensionSupported
13.7 glutGetProcAddress
14.1 glutBitmapCharacter
14.2 glutBitmapString
14.3 glutBitmapWidth
14.4 glutBitmapLength
14.5 glutBitmapHeight
14.6 glutStrokeCharacter
14.7 glutStrokeString
14.8 glutStrokeWidth
14.9 glutStrokeLength
14.10 glutStrokeHeight
15.0 Geometric Object Rendering Functions
15.1 glutWireSphere, glutSolidSphere
15.2 glutWireTorus, glutSolidTorus
15.3 glutWireCone, glutSolidCone
15.4 glutWireCube, glutSolidCube
15.5 glutWireTetrahedron, glutSolidTetrahedron
15.6 glutWireOctahedron, glutSolidOctahedron
15.7 glutWireDodecahedron, glutSolidDodecahedron
15.8 glutWireIcosahedron, glutSolidIcosahedron
15.9 glutWireRhombicDodecahedron, glutSolidRhombicDodecahedron
15.10 glutWireTeapot, glutSolidTeapot
16.0 Game Mode Functions
16.1 glutGameModeString
16.2 glutEnterGameMode, glutLeaveGameMode
16.3 glutGameModeGet
17.1 glutVideoResizeGet
17.2 glutSetupVideoResizing, glutStopVideoResizing
17.3 glutVideoResize
17.4 glutVideoPan
18.0 Color Map Functions
18.1 glutSetColor, glutGetColor
18.2 glutCopyColormap
19.1 glutIgnoreKeyRepeat, glutSetKeyRepeat
19.2 glutForceJoystickFunc
19.3 glutReportErrors
20.0 Usage Notes
21.0 Implementation Notes
22.0 GLUT State
24.0 References
25.0 Index
Mr. Kilgard copyrighted his library and gave it a rather unusual license. Under his license, people are allowed freely to copy and distribute the libraries and the source code, but they are not allowed to modify it. For a long time this did not matter because the GLUT library worked so well and because Mr. Kilgard was releasing updates on a regular basis. But with the passage of time, people started wanting some slightly different behaviours in their windowing system. When Mr. Kilgard stopped supporting the GLUT library in 1999, having moved on to bigger and better things, this started to become a problem.
In December 1999, Mr. Pawel Olzsta started work on an open-source clone of the GLUT library. This open-source clone, which does not use any of the GLUT source code, has evolved into the present freeglut library. This documentation specifies the application program interface to the freeglut library.
Usage
void glutInitWindowPosition ( int
x, int y ) ;
void glutInitWindowSize ( int width,
int height ) ;
Description
The "glutInitWindowPosition " and "glutInitWindowSize" functions specify a desired position and size for windows that freeglut will create in the future. The position is measured in pixels from the upper left hand corner of the screen, with "x" increasing to the right and "y" increasing towards the bottom of the screen. The size is measured in pixels. Freeglut does not promise to follow these specifications in creating its windows, it certainly makes an attempt to.
The position and size of a window are a matter of some subtlety. Most windows have a usable area surrounded by a border and with a title bar on the top. The border and title bar are commonly called "decorations." The position of the window unfortunately varies with the operating system. On Linux, it is the coordinates of the upper left-hand corner of its decorations. On Windows, it is the coordinates of the upper left hand corner of its usable interior. For both operating systems, the size of the window is the size of the usable interior.
Windows has some additional quirks which the application programmer should know about. First, the minimum y-coordinate of a window decoration is zero. (This is a feature of freeglut and can be adjusted if so desired.) Second, there appears to be a minimum window width on Windows which is 104 pixels. The user may specify a smaller width, but the Windows system calls ignore it. It is also impossible to make a window narrower than this by dragging on its corner.
Changes From GLUT
For some reason, GLUT is not affected by the 104-pixel minimum window width. If the user clicks on the corner of a window which is narrower than this amount, the window will immediately snap out to this width, but the application can call "glutReshapeWindow " and make a window narrower again.
In GLUT, control never returned from the event loop (as invoked by the "glutMainLoop" function) to the calling function. This prevented an application from having re-entrant code, in which GLUT could be invoked from within a callback, and it prevented the application from doing any post-processing (such as freeing allocated memory) after GLUT had closed down. Freeglut allows the application programmer to specify more direct control over the event loop by means of two new functions. The first, "glutMainLoopEvent", processes a single iteration of the event loop and allows the application to use a different event loop controller or to contain re-entrant code. The second, " glutLeaveMainLoop", causes the event loop to exit nicely; this is preferable to the application's calling "exit" from within a GLUT callback.
Usage
void glutMainLoop ( void ) ;
Description
The "glutMainLoop" function causes the program to enter the window event loop. An application should call this function at most once. It will call any application callback functions as required to process mouse clicks, mouse motion, key presses, and so on.
Changes From GLUT
In GLUT, there was absolutely no way for the application programmer to have control return from the "glutMainLoop " function to the calling function. Freeglut allows the programmer to force this by setting the "GLUT_ACTION_ON_WINDOW_CLOSE" option and invoking the "glutLeaveMainLoop" function from one of the callbacks. Stopping the program this way is preferable to simply calling "exit " from within a callback because this allows freeglut to free allocated memory and otherwise clean up after itself. (I know I just said this, but I think it is important enough that it bears repeating.)
Usage
void glutMainLoopEvent ( void ) ;
Description
The "glutMainLoopEvent " function causes freeglut to process one iteration's worth of events in its event loop. This allows the application to control its own event loop and still use the freeglut windowing system.
Changes From GLUT
GLUT does not include this function.
Usage
void glutLeaveMainLoop ( void ) ;
Description
The "glutLeaveMainLoop " function causes freeglut to stop the event loop. If the " GLUT_ACTION_ON_WINDOW_CLOSE" option has been set to "GLUT_ACTION_CONTINUE_EXECUTION ", control will return to the function which called "glutMainLoop "; otherwise the application will exit.
If the application has two nested calls to "glutMainLoop" and calls "glutLeaveMainLoop", the behaviour of freeglut is undefined. It may leave only the inner nested loop or it may leave both loops. If the reader has a strong preference for one behaviour over the other he should contact the freeglut Programming Consortium and ask for the code to be fixed.
Changes From GLUT
GLUT does not include this function.
Usage
void glutEstablishOverlay ( void ) ;
Description
The "glutEstablishOverlay" function is not implemented in freeglut.
Changes From GLUT
GLUT implements this function.
Usage
void glutRemoveOverlay ( void ) ;
Description
The "glutRemoveOverlay" function is not implemented in freeglut.
Changes From GLUT
GLUT implements this function.
Usage
void glutUseLayer ( GLenum layer ) ;
Description
The "glutUseLayer" function is not implemented in freeglut.
Changes From GLUT
GLUT implements this function.
Usage
void glutPostOverlayRedisplay ( void ) ;
Description
The "glutPostOverlayRedisplay " function is not implemented in freeglut.
Changes From GLUT
GLUT implements this function.
Usage
void glutPostWindowOverlayRedisplay ( int window ) ;
Description
The "glutPostWindowOverlayRedisplay " function is not implemented in freeglut.
Changes From GLUT
GLUT implements this function.
Usage
void glutShowOverlay( void ) ;
void glutHideOverlay( void ) ;
Description
The "glutShowOverlay" and " glutHideOverlay" functions are not implemented in freeglut .
Changes From GLUT
GLUT implements these functions.
Usage
void glutIdleFunc ( void (*func) ( void ) ) ;
func The new global idle callback function
Description
The "glutIdleFunc" function
specifies the function that freeglut will call to perform background
processing tasks such as continuous animation when window system events are
not being received. If enabled, this function is called continuously
from freeglut while no events are received. The callback function
has no parameters and returns no value. Freeglut does not change
the current window or the current menu before invoking the idle
callback; programs with multiple windows or menus must explicitly set the
current window and current menu
and not rely on its current setting.
The amount of computation and rendering done in an idle
callback should be minimized to avoid affecting the program's interactive
response. In general, no more than a single frame of rendering should
be done in a single invocation of an idle callback.
Calling "glutIdleFunc" with a NULL argument
disables the call to an idle callback.
Changes From GLUT
Application programmers should note that if they have specified the "continue execution" action on window closure, freeglut will continue to call the idle callback after the user has closed a window by clicking on the "x" in the window header bar. If the idle callback renders a particular window (this is considered bad form but is frequently done anyway), the programmer should supply a window closure callback for that window which changes or disables the idle callback.
Usage
void glutSpecialFunc ( void (*func) ( int key, int x, int y ) ) ;
func The window's
new special key press callback function
key The
key whose press triggers the callback
x
The x-coordinate of the mouse relative
to the window at the time the key is pressed
y
The y-coordinate of the mouse relative
to the window at the time the key is pressed
Description
The "glutSpecialFunc"
function specifies the function that freeglut will call when the user
presses a special key on the keyboard. The callback function has one
argument: the name of the function to be invoked ("called back") at
the time at which the special key is pressed. The function returns no
value. Freeglut sets the current window to the window
which is active when the callback is invoked. "Special keys" are the
function keys, the arrow keys, the Page Up and Page Down keys, and the Insert
key. The Delete key is considered to be a regular key.
Calling "glutSpecialUpFunc" with a NULL argument
disables the call to the window's special key press callback.
The "key " argument may take one of the following defined constant values:
None.
Usage
void glutKeyboardUpFunc ( void (*func) ( unsigned char key, int x, int y ) ) ;
func The window's
new key release callback function
key The
key whose release triggers the callback
x
The x-coordinate of the mouse relative
to the window at the time the key is released
y
The y-coordinate of the mouse relative
to the window at the time the key is released
Description
The "glutKeyboardUpFunc
" function specifies the function that freeglut will call when the
user releases a key from the keyboard. The callback function has one
argument: the name of the function to be invoked ("called back") at
the time at which the key is released. The function returns no value.
Freeglut sets the current window
to the window which is active when the callback is invoked.
While freeglut checks for upper or lower case
letters, it does not do so for non-alphabetical characters. Nor does
it account for the Caps-Lock key being on. The operating system may
send some unexpected characters to freeglut, such as "8" when the
user is pressing the Shift key. Freeglut also invokes the callback
when the user releases the Control, Alt, or Shift keys, among others.
Releasing the Delete key causes this function to be invoked with a value
of 127 for "key".
Calling "glutKeyboardUpFunc" with a NULL argument
disables the call to the window's key release callback.
Changes From GLUT
This function is not implemented in GLUT versions before Version 4. It has been designed to be as close to GLUT as possible. Users who find differences should contact the freeglut Programming Consortium to have them fixed.
Usage
void glutSpecialUpFunc ( void (*func) ( int key, int x, int y ) ) ;
func The window's
new special key release callback function
key The
key whose release triggers the callback
x
The x-coordinate of the mouse relative
to the window at the time the key is released
y
The y-coordinate of the mouse relative
to the window at the time the key is released
Description
The "glutSpecialUpFunc
" function specifies the function that freeglut will call when the
user releases a special key from the keyboard. The callback function
has one argument: the name of the function to be invoked ("called back")
at the time at which the special key is released. The function returns
no value. Freeglut sets the current window to the window
which is active when the callback is invoked. "Special keys" are the
function keys, the arrow keys, the Page Up and Page Down keys, and the Insert
key. The Delete key is considered to be a regular key.
Calling "glutSpecialUpFunc" with a NULL argument
disables the call to the window's special key release callback.
The "key " argument may take one of the following defined constant values:
This function is not implemented in GLUT versions before Version 4. It has been designed to be as close to GLUT as possible. Users who find differences should contact the freeglut Programming Consortium to have them fixed.
Usage
void glutSpaceballMotionFunc ( void (* callback)( int x, int y, int z ) ) ;
Description
The "glutSpaceballMotionFunc " function is not implemented in freeglut.
Changes From GLUT
GLUT implements this function.
Usage
void glutSpaceballRotateFunc ( void (* callback)( int x, int y, int z ) ) ;
Description
The "glutSpaceballRotateFunc " function is not implemented in freeglut.
Changes From GLUT
GLUT implements this function.
Usage
void glutSpaceballButtonFunc ( void (* callback)( int button, int updown ) ) ;
Description
The "glutSpaceballButtonFunc " function is not implemented in freeglut.
Changes From GLUT
GLUT implements this function.
Usage
void glutSpaceballButtonBoxFunc ( void (* callback)( int button, int updown ) ) ;
Description
The "glutSpaceballButtonBoxFunc " function is not implemented in freeglut.
Changes From GLUT
GLUT implements this function.
Usage
void glutDialsFunc ( void (* callback)( int dial, int value ) ) ;
Description
The "glutDialsFunc" function is not implemented in freeglut.
Changes From GLUT
GLUT implements this function.
Usage
void glutTabletMotionFunc ( void (* callback)( int x, int y ) ) ;
Description
The "glutTabletMotionFunc" function is not implemented in freeglut.
Changes From GLUT
GLUT implements this function.
Usage
void glutTabletButtonFunc ( void (* callback)( int button, int updown, int x, int y ) ) ;
Description
The "glutTabletButtonFunc" function is not implemented in freeglut.
Changes From GLUT
GLUT implements this function.
The following state variables may be queried with "glutGet". The returned value is an integer.
These queries are with respect to the current window:
These queries do not depend on the current window.
glutGetProcAddress returns a pointer to a named GL or freeglut function.
Usage
void *glutGetProcAddress ( const char *procName ) ;
procName Name of an OpenGL or GLUT function.
Description
glutGetProcAddress is useful for dealing with OpenGL extensions. If an application calls OpenGL extension functions directly, that application will only link/run with an OpenGL library that supports the extension. By using a function pointer returned from glutGetProcAddress(), the application will avoid this hard dependency and be more portable and interoperate better with various implementations of OpenGL.
Both OpenGL functions and freeglut functions can be queried with this function.
Changes From GLUT
GLUT does not include this function.
It should be noted that freeglut fonts are similar but not identical to GLUT fonts. At the moment, freeglut fonts do not support the "`" (backquote) and "|" (vertical line) characters; in their place it renders asterisks.
Freeglut supports the following bitmap fonts:
Freeglut supports the following stroke fonts:
Usage
void glutBitmapCharacter ( void *font, int character ) ;
font
The bitmapped font to use in rendering
the character
character The ASCII
code of the character to be rendered
Description
The "glutBitmapCharacter " function renders the given character in the specified bitmap font. Freeglut automatically sets the necessary pixel unpack storage modes and restores the existing modes when it has finished. Before the first call to "glutBitMapCharacter " the application program should call "glRasterPos*" to set the position of the character in the window. The "glutBitmapCharacter " function advances the cursor position as part of its call to "glBitmap " and so the application does not need to call "glRasterPos*" again for successive characters on the same line.
Changes From GLUT
Nonexistent characters are rendered as asterisks. The rendering position in freeglut is apparently off from GLUT's position by a few pixels vertically and one or two pixels horizontally.
Usage
void glutBitmapString ( void *font, char *string ) ;
font
The bitmapped font to use in rendering
the character string
string String
of characters to be rendered
Description
The "glutBitmapString " function renders the given character string in the specified bitmap font. Freeglut automatically sets the necessary pixel unpack storage modes and restores the existing modes when it has finished. Before calling "glutBitMapString" the application program should call "glRasterPos*" to set the position of the string in the window. The "glutBitmapString" function handles carriage returns. Nonexistent characters are rendered as asterisks.
Changes From GLUT
GLUT does not include this function.
Usage
int glutBitmapWidth ( void *font, int character ) ;
font
The bitmapped font to use in calculating
the character width
character The ASCII
code of the character
Description
The "glutBitmapWidth" function returns the width of the given character in the specified bitmap font. Because the font is bitmapped, the width is an exact integer.
Changes From GLUT
Nonexistent characters return the width of an asterisk.
Usage
int glutBitmapLength ( void *font, char *string ) ;
font The bitmapped
font to use in calculating the character width
string String of characters
whose width is to be calculated
Description
The "glutBitmapLength " function returns the width in pixels of the given character string in the specified bitmap font. Because the font is bitmapped, the width is an exact integer: the return value is identical to the sum of the character widths returned by a series of calls to "glutBitmapWidth ". The width of nonexistent characters is counted to be the width of an asterisk.
If the string contains one or more carriage returns, freeglut calculates the widths in pixels of the lines separately and returns the largest width.
Changes From GLUT
GLUT does not include this function.
Usage
int glutBitmapHeight ( void *font ) ;
font The bitmapped font to use in calculating the character height
Description
The "glutBitmapHeight " function returns the height of a character in the specified bitmap font. Because the font is bitmapped, the height is an exact integer. The fonts are designed such that all characters have (nominally) the same height.
Changes From GLUT
GLUT does not include this function.
Usage
void glutStrokeCharacter ( void *font, int character ) ;
font
The stroke font to use in rendering
the character
character The ASCII
code of the character to be rendered
Description
The "glutStrokeCharacter " function renders the given character in the specified stroke font. Before the first call to "glutStrokeCharacter" the application program should call the OpenGL transformation (positioning and scaling) functions to set the position of the character in the window. The "glutStrokeCharacter " function advances the cursor position by a call to "glTranslatef " and so the application does not need to call the OpenGL positioning functions again for successive characters on the same line.
Changes From GLUT
Nonexistent characters are rendered as asterisks.
Usage
void glutStrokeString ( void *font, char *string ) ;
font
The stroke font to use in rendering
the character string
string String
of characters to be rendered
Description
The "glutStrokeString " function renders the given character string in the specified stroke font. Before calling "glutStrokeString" the application program should call the OpenGL transformation (positioning and scaling) functions to set the position of the string in the window. The "glutStrokeString " function handles carriage returns. Nonexistent characters are rendered as asterisks.
Changes From GLUT
GLUT does not include this function.
Usage
int glutStrokeWidth ( void *font, int character ) ;
font
The stroke font to use in calculating
the character width
character The ASCII
code of the character
Description
The "glutStrokeWidth" function returns the width of the given character in the specified stroke font. Because the font is a stroke font, the width is actually a floating-point number; the function rounds it to the nearest integer for the return value.
Changes From GLUT
Nonexistent characters return the width of an asterisk.
Usage
int glutStrokeLength ( void *font, char *string ) ;
font The stroke
font to use in calculating the character width
string String of characters
whose width is to be calculated
Description
The "glutStrokeLength " function returns the width in pixels of the given character string in the specified stroke font. Because the font is a stroke font, the width of an individual character is a floating-point number. Freeglut adds the floating-point widths and rounds the funal result to return the integer value. Thus the return value may differ from the sum of the character widths returned by a series of calls to "glutStrokeWidth ". The width of nonexistent characters is counted to be the width of an asterisk.
If the string contains one or more carriage returns, freeglut calculates the widths in pixels of the lines separately and returns the largest width.
Changes From GLUT
GLUT does not include this function.
Usage
GLfloat glutStrokeHeight ( void *font ) ;
font The stroke font to use in calculating the character height
Description
The "glutStrokeHeight " function returns the height of a character in the specified stroke font. The application programmer should note that, unlike the other freeglut font functions, this one returns a floating-point number. The fonts are designed such that all characters have (nominally) the same height.
Changes From GLUT
GLUT does not include this function.
Usage
void glutWireSphere ( GLdouble dRadius, GLint slices, GLint stacks ) ;
void glutSolidSphere ( GLdouble dRadius, GLint slices, GLint stacks ) ;
dRadius The desired radius of the sphere
slices The desired number of slices (divisions in the longitudinal direction) in the sphere
stacks The desired number of stacks (divisions in the latitudinal direction) in the sphere. The number of points in this direction, including the north and south poles, is stacks+1
Description
The "glutWireSphere" and " glutSolidSphere" functions render a sphere centered at the origin of the modeling coordinate system. The north and south poles of the sphere are on the positive and negative Z-axes respectively and the prime meridian crosses the positive X-axis.
Changes From GLUT
None that we know of.
Usage
void glutWireTorus ( GLdouble dInnerRadius, GLdouble dOuterRadius, GLint nSides, GLint nRings ) ;
void glutSolidTorus ( GLdouble dInnerRadius, GLdouble dOuterRadius, GLint nSides, GLint nRings ) ;
dInnerRadius The desired inner radius of the torus, from the origin to the circle defining the centers of the outer circles
dOuterRadius The desired outer radius of the torus, from the center of the outer circle to the actual surface of the torus
nSides The desired number of segments in a single outer circle of the torus
nRings The desired number of outer circles around the origin of the torus
Description
The "glutWireTorus" and " glutSolidTorus" functions render a torus centered at the origin of the modeling coordinate system. The torus is circularly symmetric about the Z-axis and starts at the positive X-axis.
Changes From GLUT
None that we know of.
Usage
void glutWireCone ( GLdouble base, GLdouble height, GLint slices, GLint stacks ) ;
void glutSolidCone ( GLdouble base, GLdouble height, GLint slices, GLint stacks ) ;
base The desired radius of the base of the cone
height The desired height of the cone
slices The desired number of slices around the base of the cone
stacks The desired number of segments between the base and the tip of the cone (the number of points, including the tip, is stacks + 1)
Description
The "glutWireCone" and " glutSolidCone" functions render a right circular cone with a base centered at the origin and in the X-Y plane and its tip on the positive Z-axis. The wire cone is rendered with triangular elements.
Changes From GLUT
None that we know of.
Usage
void glutWireCube ( GLdouble dSize ) ;
void glutSolidCube ( GLdouble dSize ) ;
dSize The desired length of an edge of the cube
Description
The "glutWireCube" and " glutSolidCube" functions render a cube of the desired size, centered at the origin. Its faces are normal to the coordinate directions.
Changes From GLUT
None that we know of.
Usage
void glutWireTetrahedron ( void ) ;
void glutSolidTetrahedron ( void ) ;
Description
The "glutWireTetrahedron" and "glutSolidTetrahedron" functions render a tetrahedron whose corners are each a distance of one from the origin. The length of each side is 2/3 sqrt(6). One corner is on the positive X-axis and another is in the X-Y plane with a positive Y-coordinate.
Changes From GLUT
None that we know of.
Usage
void glutWireOctahedron ( void ) ;
void glutSolidOctahedron ( void ) ;
Description
The "glutWireOctahedron" and "glutSolidOctahedron" functions render an octahedron whose corners are each a distance of one from the origin. The length of each side is sqrt(2). The corners are on the positive and negative coordinate axes.
Changes From GLUT
None that we know of.
Usage
void glutWireDodecahedron ( void ) ;
void glutSolidDodecahedron ( void ) ;
Description
The "glutWireDodecahedron" and "glutSolidDodecahedron" functions render a dodecahedron whose corners are each a distance of sqrt(3) from the origin. The length of each side is sqrt(5)-1. There are twenty corners; interestingly enough, eight of them coincide with the corners of a cube with sizes of length 2.
Changes From GLUT
None that we know of.
Usage
void glutWireIcosahedron ( void ) ;
void glutSolidIcosahedron ( void ) ;
Description
The "glutWireIcosahedron" and "glutSolidIcosahedron" functions render an icosahedron whose corners are each a unit distance from the origin. The length of each side is slightly greater than one. Two of the corners lie on the positive and negative X-axes.
Changes From GLUT
None that we know of.
Usage
void glutWireRhombicDodecahedron ( void ) ;
void glutSolidRhombicDodecahedron ( void ) ;
Description
The "glutWireRhombicDodecahedron " and "glutSolidRhombicDodecahedron" functions render a rhombic dodecahedron whose corners are at most a distance of one from the origin. The rhombic dodecahedron has faces which are identical rhombuses (rhombi?) but which have some vertices at which three faces meet and some vertices at which four faces meet. The length of each side is sqrt(3)/2. Vertices at which four faces meet are found at (0, 0, +1) and ( +sqrt(2)/2, +sqrt(2)/2, 0).
Changes From GLUT
GLUT does not include these functions.
Usage
void glutWireTeapot ( GLdouble dSize ) ;
void glutSolidTeapot ( GLdouble dSize ) ;
dSize The desired size of the teapot
Description
The "glutWireTeapot" and " glutSolidTeapot" functions render a teapot of the desired size, centered at the origin. This is the famous OpenGL teapot [add reference].
Changes From GLUT
None that we know of.
The following environment variables are recognized by freeglut:
Application programmers who are porting their GLUT programs to freeglut may continue to include <GL/glut.h> in their programs. Programs which use the freeglut-specific extensions to GLUT should include <GL/freeglut.h>. One possible arrangement is as follows:
#ifdef FREEGLUT #include <GL/freeglut_ext.h> #else #include <GL/glut.h> #endif
Compile-time freeglut version testing can be done as follows:
#ifdef FREEGLUT_VERSION_2_0 code specific to freeglut 2.0 or later here #endif
In future releases, FREEGLUT_VERSION_2_1, FREEGLUT_VERSION_2_2, etc will be defined. This scheme mimics OpenGL conventions.
The freeglut version can be queried at runtime by calling glutGet(GLUT_VERSION). The result will be X*10000+Y*100+Z where X is the major version, Y is the minor version and Z is the patch level.
This may be used as follows:
if (glutGet(GLUT_VERSION) < 20001) { printf("Sorry, you need freeglut version 2.0.1 or later to run this program.\n"); exit(1); }


Cooding Park
Home
About
Service
Products
Contact Us
Are You Ready To Learn Programming?
Explore More
Watch Videos


{% include '../includes/head.html' %}
Home
Log In
Log out
{% block content %}{% endblock %}
{% include '../includes/foot.html' %}


28 March 2019: Gent (Universiteit Gent, Faculty of Economics and Business Administration), workshop “Firm Heterogeneity in Technical Change”: Jin, Q., K. Kerstens, I. Van de Woestyne “Metafrontier Malmquist Productivity Index and The Price of a Convexiﬁcation Strategy” (poster).
13 June 2019: London (University of London, Senate House) Sixteenth European Workshop on Efficiency and Productivity Measurement: Kerstens, K., C. O’Donnell, I. Van De Woestyne “The Cost Metafrontier is Nonconvex in the Outputs Since the Metafrontier is Nonconvex: The Price of a Convexification Strategy”.
25 June 2019: Dublin (University College Dublin) Euro2019: Kerstens, K., C. O’Donnell, I. Van De Woestyne “The Cost Metafrontier is Nonconvex in the Outputs Since the Metafrontier is Nonconvex: The Price of a Convexification Strategy”.
29 June 2019: Canterbury (University of Kent, Kent Business School) DEAIC: Kerstens, K., C. O’Donnell, I. Van De Woestyne “The Cost Metafrontier is Nonconvex in the Outputs Since the Metafrontier is Nonconvex: The Price of a Convexification Strategy”.
9 June 2020: Coral Gables (University of Miami, Miami Business School), 11th North American Productivity Workshop, virtual keynote: Kerstens, K., J. Sadeghi, I. Van de Woestyne, J. Walden “Short-Run Johansen Frontier-Based Industry Models: Methodological Refinements and Empirical Illustration on Fisheries”.
24 October 2021: Anaheim (Anaheim Convention Center), 2021 INFORMS Annual Meeting: Kerstens, K., C. O’Donnell, I. Van De Woestyne “Estimating Nonconvex Cost Metafrontiers Correctly: The Price of a Convexification Strategy”.
28 October 2021: Tehran (Iranian DEA Society), 13th International Conference on Decision and Data Envelopment Analysis, virtual keynote: Chen, X., K. Kerstens, Q. Zhu “Exploring Horizontal Mergers in Swedish District Courts Using Convex and Nonconvex Technologies: Usefulness of a Conservative Approach”.
28 June 2022: Porto (Católica Porto Business School), Seventeenth European Workshop on Efficiency and Productivity Measurement: Ang, F., K. Kerstens, J. Sadeghi “Energy Productivity and Greenhouse Gas Emission Intensity in Dutch Dairy Farms: A Hicks-Moorsteen By-production Approach Under Convexity and Nonconvexity and Equivalence Results”.
8 Octobre 2022: Taipei (National Taiwan University & Taiwan Efficiency and Productivity Association), Asia Pacific Productivity Conference 2022 - Virtual Meeting: Ang, F., K. Kerstens, J. Sadeghi “Energy Productivity and Greenhouse Gas Emission Intensity in Dutch Dairy Farms: A Hicks-Moorsteen By-production Approach Under Convexity and Nonconvexity and Equivalence Results”.
17 November 2022 : Tabriz (Department of Mathematics, Azarbaijan Shahid Madani University) 15th International Conference of Iranian Operations Research Society, virtual keynote speaker : Ang, F., K. Kerstens, J. Sadeghi “Energy Productivity and Greenhouse Gas Emission Intensity in Dutch Dairy Farms: A Hicks-Moorsteen By-production Approach Under Convexity and Nonconvexity and Equivalence Results”.
Participation in conferences (before 2019):
Australia: Brisbane (University of Queensland, Centre for Efficiency and Productivity Analysis (2014)).
Ottawa (DoubleTree by Hilton, Gatineau-Ottawa (2014));
Quebec (Le Concorde);
Toronto (University of Toronto (2004)).
China:
Tianjin (Nankai University);
Wuhan (Jianghan University).
Czech Republic: Prague (University of Economics (2017)).
Denmark: Copenhagen (KVL (1997, 1999)).
Finland: Helsinki (Aalto University School of Economics (2012, 2013); Grand Marina Congress Center (2015)).
France:
Aix-en-Provence (La Baume Les Aix (2006));
Lille (ESC (2008); IESEG School of Management (2007, 2008); Université de Lille 3 (2004, 2006));
Marq en Barœul (Maison des Professions (1998));
Marseille (CID/DESS, Université de la Méditerranée (1997));
Nantes (Université de Nantes (2006));
Paris (Ministère de l’Education Nationale, de la Recherche et de la Technologie (1998)).
Germany:
Braunschweig (TU Braunschweig (2015));
Wernigerode (Fachhochschule Harz (1998)).
Greece: Athens (Athens University of Economics and Business (2006, 2008); University of Athens (1993)).
Hungary: Budapest (Budapest University of Economic Sciences and Public Administration (2004)).
Iran: Karaj (Kharazmi University (2018)).
Italy:
Pisa (University of Pisa, School of Engineering (2009)).
Verona (University of Verona, School of Economics (2011))
South Korea: Seoul (Seoul National University, Global Education Center for Engineers (2018)).
Spain:
Barcelona (Universitat Politècnica de Catalunya (1997));
Oviedo (Universidad de Oviedo (2001, 2003)).
Sweden: Stockholm (Norra Latin Conference Center (1997)).
Taiwan: Taipei (Academia Sinica, Institute of Economics (2010); Soochow University, School of Business (2014)).
UK:
Birmingham (Aston University, Aston Business School (2018));
Coventry (Warwick Business School (1996));
Leicester (University of Leicester, School of Management (2009));
London (University of London, Senate House (2017));
St Andrews (School of Management, University of St Andrews (2013)).
USA:
Athens (University of Georgia (1994, 1996, 1998));
Coral Gables (University of Miami, Miami Business School (2018));
Corvallis (Oregon State University (2000));
Houston (Rice University, James Baker III Institute for Public Policy (2010, 2012));
New York (Stern School of Business (2006));
Santa Cruz (Southwest Fisheries Science Center (2012));
Schenectady (Union College (2000, 2002)).
Seminars presented (2019-2023):
23 January 2020: Paris (Leonard de Vinci Business School (EMLV)) seminar: Kerstens, K., C. O’Donnell, I. Van de Woestyne “Cost Metafrontiers are Nonconvex in the Outputs since the Metafrontier is Nonconvex: The Price of a Convexification Strategy”.
15 June 2020: Ardabil (University of Mohaghegh Ardabili, International Relations Office) seminar (webinar): “COVID-19: Reflections of a European Academic Economist” and “Using COVID-19 Mortality to Select Among Hospital Plant Capacity Models: An Empirical Application to the Hubei Province”.
19 December 2022: Nanjing (Nanjing University of Information Science and Technology, School of Management Science and Engineering) seminar (webinar): Kerstens, K., C. O’Donnell, I. Van de Woestyne “Cost Metafrontiers are Nonconvex in the Outputs since the Metafrontier is Nonconvex: The Price of a Convexification Strategy”.
21 December 2022: Nanjing (Nanjing University of Aeronautics and Astronautics, College of Economics and Management) seminar (webinar): Kerstens, K., C. O’Donnell, I. Van de Woestyne “Cost Metafrontiers are Nonconvex in the Outputs since the Metafrontier is Nonconvex: The Price of a Convexification Strategy”.
25 April 2023: Dijon (Burgundy School of Business), seminar: Kerstens, K., C. O’Donnell, I. Van de Woestyne “When the Production Metafrontier is Nonconvex, then Cost Metafrontiers are Nonconvex in the Outputs: The Price of a Convexiﬁcation Strategy”.
1 June 2023: Liège (HEC, Université de Liège), seminar: Kerstens, K., C. O’Donnell, I. Van de Woestyne “When the Production Metafrontier is Nonconvex, then Cost Metafrontiers are Nonconvex in the Outputs: The Price of a Convexiﬁcation Strategy”.
Seminars presented (before 2019):
Belgium:
Antwerp (Universiteit Antwerpen, Department of Economics - Department of Accounting and Finance (2013));
Gent (Universiteit Gent, Faculty of Economics and Business Administration (2005));
Louvain-la-Neuve (Université Catholique de Louvain, Institut de Statistique (1999); Université Catholique de Louvain, CORE (2009)).
China:
Harbin (School of Management, Harbin Institute of Technology (2013));
Hong Kong (Hong Kong Baptist University, School of Business (2006));
Shanghai (East China University of Science and Technology, School of Business (2016));
Tianjin (Tianjin University, College of Management and Economics (2016)).
Denmark: Esbjerg (University of Southern Denmark, Department of Environmental and Business Economics (2001)).
France:
Bordeaux (Université Montesquieu - Bordeaux IV, GREThA (2014, 2015, 2016));
Brest (Université de Bretagne Occidentale (UBO), Centre de Droit et d’Economie de la Mer (2004));
Lille (SKEMA Business School (2011); Université Catholique de Lille, LABORES (1995); Université des Sciences et Technologies Lille1, IAE (2004); Université des Sciences et Technologies Lille1, MEDEE (2005));
Berlin (Deutsches Institut für Wirtschaftsforschung (2012));
Kiel (Federal Dairy Research Centre, Institute of Food Industry Economics (2004));
Mannheim (ZEW (2008)).
Iran:
Shiraz (Islamic Azad University, Facility of Economics and Management (2018));
Tehran (Islamic Azad University, Department of Mathematics, Science and Research Branch (2018)).
Italy:
Verona (Università degli Studi di Verona, Dipartimento di Scienze Economiche (2006));
Venice (Università Ca’ Foscari, Department of Management (2018)).
Netherlands: Wageningen (Wageningen University, Mansholt Graduate School of Social Sciences (2005)).
New Zealand:
Auckland (University of Auckland, Business School (2014));
Palmerston North (Massey University, School of Economics & Finance (2014)).
Norway: Bergen (Norges Handelshøyskole - Norwegian School of Economics and Business Administration (1997)).
Spain:
Barcelona (Universitat Autònoma de Barcelona, Departament d’Economia de l’Empresa (2002, 2005, 2007, 2011));
Castelló de la Plana (Universitat Jaume I, Departament d’Economia & Departament de Finances I Comptabilitat (2005));
Girona (Universitat de Girona, Facultat de Ciències Econòmiques i Empresarials (2003));
Malaga (Universidad de Málaga, Dpto. Teoría e Historia Económica (2006));
Oviedo (Universidad de Oviedo, Departamento de Economía (2002));
Valencia (Universitat de Valencia, Departament d’Estructura Economica (2005)).
Taiwan: Taipei (National Chiao Tung University, Institute of Business and Management (2010, 2014); National Taiwan University, Department of Agricultural Economics (2007, 2008); National Taiwan University, Department of Economics (2007, 2008)).
UK:
Bangor (University of Wales, School for Business and Regional Development (2006));
Bath (University of Bath, Department of Economics (2011));
Canterbury (University of Kent, Canterbury Business School (1999));
Edinburgh (University of Edinburgh, Business School (2016));
Coventry (University of Warwick, Warwick Business School (1995, 2006));
London (Cass Business School (2008));
Nottingham (Nottingham University, Business School (2004)).


Domain White List: (Note: For all domains, leave blank. For multiple domains, use comma separated list.)
Delete CSV after converting to XLSX
Remove Trailing Numbers from Filename
Append Timestamp to Filename (ensures unique filename)
Add space when character case changes (i.e 'ProjectTasks.xlsx' will become 'Project Tasks.xlsx')
Cancel
Save


My name is Theodore Caputi. I am a first-year in the Ph.D. in Economics program at MIT. I am also the author of the Behavioral Health Matters blog for Psychology Today.
I graduated summa cum laude from the University of Pennsylvania’s Wharton School with a B.S. in Economics in 2017 and first in my class with a Master of Public Health from University College Cork as a Mitchell Scholar in 2019. From 2018-2019, I was a Research Assistant for Professor Amanda Pallais at Harvard University’s Department of Economics and the National Bureau of Economic Research. From 2019-2020, I studied Health Sciences at the University of York as a British Marshall Scholar.
My primary research interest is behavioral public health. I use tools from economics, epidemiology, data science, and related fields to understand the social, economic, and industry factors influencing individuals’ health behaviors and decisions (e.g., substance use, suicidal ideation, and violence). I am also interested in health care policy and health innovation.
I have published over 30 studies and commentaries in peer-reviewed journals. Most of these papers are available free-of-charge on this site. My work has been featured in journals such as Journal of the American Medical Association (JAMA), JAMA Internal Medicine, JAMA Pediatrics, Health Affairs, Addiction, American Journal of Preventive Medicine, American Journal of Public Health, and Tobacco Control and in news outlets such as The New York Times, the LA Times and CNN.


Experiments since 2013, looking for an "unreacheable?" dream...
Vuejs WebApps, Arduino, Decentralized Solid Apps...
Shighl, is for S-olid high L-evel
Why High Level ? Because Shighl is based on other libs like solid-auth-client,
mostly @solid/query-ldflex, ...
to give you the most common used functionnalities to deal with session,
pod, chat, inbox... of the Solid Project.
Webcoponents based on Shighl.
Spoggy is a simple way to create nodes & edges.
Partager les dernières innovations technologiques, ça vous intéresse ?
An inbox proto based on Solid.
! Your recipient must have granted "Authenticated Agent" to "Submitter"!
From ShEx shape to Linked Forms.
Traduction d'un tutoriel anglais pour démarrer avec Bootstrap et créer ton premier site web.


RCMP address 'unfounded'
by Chelsea PowriePenticton RCMP say they will be keeping an eye on a review in Kelowna looking into high numbers of police-deemed 'unfounded' sex assaults.
Recent Stats Canada results show in 2018 Penticton RCMP received 29 reports of sexual related offences, 11 of which were deemed unfounded, a police term that means "when a criminal offence has been reported and a police investigation has determined that the offence has not occurred or been attempted."
Kelowna RCMP also has high numbers which are currently being officially reviewed.
"Although we are not in a position to discuss specific cases, we assure the general public that we take these reports very seriously and remain accountable for our investigations," reads a release from Penticton RCMP Thursday.
"We recognize that sexual crimes can be a life altering event, and we continue to encourage survivors of sexual assault to report these crimes to police ... Penticton RCMP is monitoring and will pay close attention to the results of the review underway in Kelowna for any trends that may apply."


Congratulations!
You have successfully signed up.
We are happy to see you as a member of Spentless application.
Our system will help you to save your costs and control all your transactions.
Also, we have a lot of other interesting features.
You may want to activate monobank and telegram notifications.
More detailed information you can found in the application.
Do not waste time - let's configure your budget!


--- layout: page title: About header-img: "img/about-bg.png" ---
just trying to bring some happiness into this meaningless abyss.
also love building things
goal: wh1ter0se


Zenreach is a late stage startup which modernizes marketing for the offline world. With offices located in San Francisco, Arizona and Kitchener, I worked as a software developer at the Kitchener office.
At the job, I had many goals which included: - Gain knowledge of the react/redux framework and sharpen up my JS skills - Learn the python framework Django - Apply test driven development and perform code reviews Throughout my term I met all of these goals, and kept a constant communication with my manager on areas to improve in as a developer.
My main duties were full-stack development, experimenting and learning technologies such as React/Reudx, Django, Babel and Webpack to name a few. I worked on the core product team, where I worked on an agile product team working on new features for the web application. During my term, we were building a new customer experience UI, creating new user experiences and adding much desired features from our users. My technical responsibilities inlcuded designing HTTP API endpoints, create Django models and architect the front-end and it's data stores.
In conclusion I had a great time working at Zenerach and my manager and team were great. Working in an innovative VC funded company exposed me to the fast paced and interesting start up market, while also teaching me valuable skills in new tech which I haven't worked with before. Overall it was a great experience and i'd highly recommend the workplace.


Class Hierarchy Compound List Compound Members Related Pages
CSoundChannel Class Reference
#include <sndmix.h>
List of all members.
Detailed Description
CSoundChannel controls the playing of sounds. Is is not a sound sample (it only has a pointer to CSound) but it is all the wrapping info: when to start and stop the sound, the sound envelope, etc.
The documentation for this classwas generated from the following file:
Version
1.0 of the Flash 4 Porting SDK
Middlesoft, Inc.


Java Mission Control is a Profiling, Monitoring, and Diagnostics Tools Suite.
jmc [ options ]
Options, if used, should follow immediately after the command name. Options may be in any order. For more information about the options used with the jmc
command, see Options.
Note: Java Mission Control requires a commercial license for use in production. To learn more about commercial features and how to enable them please visit http://www.oracle.com/technetwork/java/javaseproducts/
.
Java Mission Control is a tool for production time profiling and diagnostics for the HotSpot JVM. The two main features of Java Mission Control are the Management Console and Java Flight Recorder, but several more features are offered as plug-ins, which can be downloaded from the tool. Java Mission Control is also available as a set of plug-ins for the Eclipse IDE.
The following options are available when you launch Java Mission Control.
Prints jmc
command help.
Prints the version of Java Mission Control and exit.
Prints the version of Java Mission Control and continue.
Enables debug output.
Prints the Eclipse log on the console. (Flag from Eclipse).
On Windows, use this option as follows:
JAVA_HOME\bin\jmc.exe -consoleLog 2>&1 | more
Sets the workspace used while running Java Mission Control. The default workspace is $HOME/.jmc
. (Flag from Eclipse).
Opens the file in Java Mission Control. For example, to open a Flight Recording file (.jfr
file).
Passes this eclipse option to the underlying Eclipse platform. Eg. -nosplash
Overrides the JVM arguments specified in the jmc.ini
file located in JAVA_HOME/bin
.
Appends JVM arguments from the -vmargs
flag to those in the jmc.ini
file.
Oracle Java SE Advanced and Oracle Java SE Suite at http://www.oracle.com/us/technologies/java/standard-edition/advanced-suite/overview/index.html
Java Mission Control User's Guide at http://docs.oracle.com/javacomponents/jmc.htm


Mazda3 Wins 2019 Women’s World Car Of The Year Award
The new Kodo design language must've helped.
by Anthony KarrWhat are the main criteria you follow when shopping for a new car? I guess you look for a better fuel economy, good design, practicality and versatility, and a reasonable price – probably, but it turns out that women may have a slightly different take. That’s what we learn from the organizers of the Women's World Car of the Year awards, which say the competition features “female judges from over 30 different countries who are asked to vote according to criteria women use when buying a car.”
See The Previous Winners:
Well, we won’t dive into that as the Mazda3 has just won this year’s award and is now the Supreme Winner, as well as Women's World Family Car of the Year. Mazda’s hypothesis is that the 3 won the hearts of the judges mainly with its “matured Kodo design language,” which combines simple lines with a bold appearance and a more prominent overall body structure. Maybe the promised more natural feel when accelerating, turning, and braking helped, too? Who knows.
Save Thousands On A New Mazda Mazda3
MSRP $ 21,920
MSRP $ 21,920
Save on average over $3,400 off MSRP* with
Motor1.com Car Buying Service
SEE PRICING
To make the hatch (also available as a sedan) even more compelling, Mazda has recently unveiled the Mazda3 TCR race car, which has a turbocharged four-cylinder engine good for 350 horsepower (261 kilowatts) and 361 pound-feet (490 Newton-meters) of torque. A six-speed sequential gearbox channels the power to the wheels, helping the car reach a top speed of 150 miles per hour (241 kilometers per hour). The race car will take part in the 2020 IMSA Michelin Pilot Challenge and is scheduled to receive its racing debut with the four-hour Endurance Challenge part of the Rolex 24 at Daytona on Sunday, January 26.
Gallery: 2019 Mazda3: First Drive
At this point, we can only dream of a road-going version of that hot hatch as the Zoom-Zoom company recently said it doesn’t have plans to bring one to the market.
Source: Mazda
Show press release
HIROSHIMA, Japan—Mazda3 has been named “Supreme Winner” of the 2019 Women's World Car of the Year awards. In addition to taking the top award, the model also won Women's World Family Car of the Year. Established in 2010, Women's World Car of the Year is voted on by a panel of female judges from over 30 different countries who are asked to vote according to criteria women use when buying a car.
The Mazda3 adopts a matured Kodo design language that aims to embody the essence of Japanese aesthetics. While the overall form presents a simple, single motion, subtle undulations bring the design to life through shifting light and reflections that glide over the body surface. The result is a more natural and powerful expression of vitality than previous Kodo models. Despite sharing the Mazda3 moniker, the hatchback and sedan models have distinct personalities; the design of the hatchback is emotive, the sedan elegant.
The model incorporates Mazda's Skyactiv-Vehicle Architecture, designed to help people to make the most of their natural sense of balance. The powertrain lineup comprises the latest Skyactiv-X, Skyactiv-G and Skyactiv-D engines, each of which provides responsive speed control in any driving situation. Based on its philosophy of designing the car around the human being, Mazda has dramatically enhanced the model's fundamental driving attributes to make accelerating, turning and braking feel completely natural.
Mazda aims to make a special bond with customers by offering products, technologies and services that appeal to more people.


Deploy the standalone web application (jmp-examples.war) distributed with the tag library to your container. Follow the examples to familiarize yourself with the usage of JMP.
Check README for runtime dependencies of this example web application.


---
sort_order: 34
tei_id: rdx_b5j2m.p.idm61485440
annotation_count: 0
images:
small-thumbnail: http://readux.library.emory.edu/books/emory:b5j2m/pages/emory:p74gh/mini-thumbnail/
json: http://readux.library.emory.edu/books/emory:b5j2m/pages/emory:p74gh/info/
full: http://readux.library.emory.edu/books/emory:b5j2m/pages/emory:p74gh/fs/
page: http://readux.library.emory.edu/books/emory:b5j2m/pages/emory:p74gh/single-page/
thumbnail: http://readux.library.emory.edu/books/emory:b5j2m/pages/emory:p74gh/thumbnail/
title: Page 34
number: 34
---
{% raw %}30 MRS. H. BEECHER STOWF.'s " UNCLE TOM."{% endraw %}
{% raw %}can go to the meeting." "Where?" " Down at New¬{% endraw %}
{% raw %}port Mill." "Who is going to preach?" "Mr.{% endraw %}
{% raw %}McKenny." " What do you want to hear him{% endraw %}
{% raw %}preach for ?" Here I was in a difficulty; I did{% endraw %}
{% raw %}not know what I wanted to go for, and I told him{% endraw %}
{% raw %}so. " What good will it do for you ? " Here I{% endraw %}
{% raw %}was at another point. " Who put that into your{% endraw %}
{% raw %}head ? " There was another thing; 1 did not want{% endraw %}
{% raw %}to get my poor old mother into trouble. But she{% endraw %}
{% raw %}had always told me to tell the truth. So I answered:{% endraw %}
{% raw %}"My mother." "Ah," said he, "I thought it was{% endraw %}
{% raw %}your mother. I suppose she wants to have you{% endraw %}
{% raw %}spoilt. When will you come back ? " " As soon{% endraw %}
{% raw %}as meeting is over." Well, I went to the meet¬{% endraw %}
{% raw %}ing, I heard the preacher, but I could not see him.{% endraw %}
{% raw %}They would not let niggers go into the meeting. I{% endraw %}
{% raw %}went all round the house; I could hear him, and at{% endraw %}
{% raw %}last I got in front of the door. I saw him with his{% endraw %}
{% raw %}hands raised, looking up to heaven, and he said, with{% endraw %}
{% raw %}emphasis: " Jesus Christ, the Son of God, tasted{% endraw %}
{% raw %}death for every man; for the high, for the low, for{% endraw %}
{% raw %}the rich, for the poor, the bond, the free, the negro{% endraw %}
{% raw %}in his chains, the man in gold and diamonds." His{% endraw %}
{% raw %}heart was filled with the love of Christ, and by the{% endraw %}
{% raw %}power of the Spirit of God he preached a universal{% endraw %}
{% raw %}salvation through Jesus Christ. I stood and heard it.{% endraw %}
{% raw %}It touched my heart, and I cried out: " I wonder if{% endraw %}
{% raw %}Jesus Christ died for me." And then I wondered{% endraw %}
{% raw %}what could have induced Him to die for me. I was{% endraw %}
{% raw %}then eighteen years old, I had never heard a sermon{% endraw %}
{% raw %}nor any conversation whatever, upon religious topics,{% endraw %}


In this vignette, we illustrate the use of the sequential quadratic programming (SQP) algorithm implemented in mixsqp
, and we compare its runtime and accuracy against an interior-point (IP) solver implemented by the MOSEK commercial software (it is called by the “KWDual” function in the REBayes package).
If you do not have the Rmosek and REBayes packages installed on your computer, you may skip over these steps in the vignette.
Load the mixsqp
package.
library(mixsqp)
Optionally, load the Rmosek
package. (The Rmosek package is only used to check the version of MOSEK.)
library(Rmosek)
Next, initialize the sequence of pseudorandom numbers.
set.seed(1)
We begin with a small example to show how mixsqp
works.
L <- simulatemixdata(1000,20)$L
dim(L)
# [1] 1000 20
This call to simulatemixdata
created an \(n \times m\) conditional likelihood matrix for a mixture of zero-centered normals, with \(n = 1000\) and \(m = 20\). By default, simulatemixdata
normalizes the rows of the likelihood matrix so that the maximum entry in each row is 1.
Now we fit the mixture model using the SQP algorithm:
fit.sqp <- mixsqp(L)
# Running mix-SQP algorithm 0.1-85 on 1000 x 20 matrix
# convergence tol. (SQP): 1.0e-08
# conv. tol. (active-set): 1.0e-10
# zero threshold (solution): 1.0e-06
# zero thresh. (search dir.): 1.0e-08
# max. iter (SQP): 1000
# max. iter (active-set): 100
# iter objective max(rdual) nnz max.diff nqp nls
# 1 +7.43494e-01 +2.102e-01 20 NA NA NA
# 2 +7.10831e-01 +2.612e+00 4 3.44e-01 33 1
# 3 +6.62093e-01 +1.084e+00 4 1.08e-01 5 1
# 4 +6.45338e-01 +3.914e-01 5 2.39e-01 10 1
# 5 +6.35842e-01 +1.149e-01 4 3.58e-02 3 1
# 6 +6.31837e-01 +2.390e-02 5 2.06e-01 4 1
# 7 +6.28742e-01 +3.280e-03 4 7.64e-02 3 1
# 8 +6.28208e-01 +5.598e-05 4 8.00e-03 2 1
# 9 +6.28198e-01 -1.570e-08 4 1.13e-04 2 1
# Convergence criteria met---optimal solution found.
In this example, the SQP algorithm converged to a solution in a small number of iterations.
By default, mixsqp
outputs information on its progress. It begins by summarizing the optimization problem and the algorithm settings used. (Since we did not change these settings in the mixsqp
call, all the settings shown here are the default settings.)
After that, it outputs, at each iteration, information about the current solution, such as the value of the objective (“objective”) and the number of nonzeros (“nnz”).
The “max(rdual)” column shows the quantity used to assess convergence. It reports the maximum value of the “dual residual”; the SQP solver terminates when the maximum dual residual is less than conv.tol
, which by default is \(10^{-8}\). In this example, we see that the dual residual shrinks rapidly toward zero.
Another useful indicator of convergence is the “max.diff” column—it reports the maximum difference between the solution estimates at two successive iterations. We normally expect these differences to shrink as we approach the solution, which is precisely what we see in this example.
This information is also provided in the return value, which we can use, for example, to create a plot of the objective value at each iteration of the SQP algorithm:
numiter <- nrow(fit.sqp$progress)
plot(1:numiter,fit.sqp$progress$objective,type = "b",
pch = 20,lwd = 2,xlab = "SQP iteration",
ylab = "objective",xaxp = c(1,numiter,numiter - 1))
To assess the accuracy of the SQP solution, we can compare against the solution computed by the IP algorithm. (If you do not have the REBayes package installed, you can skip this step.)
fit.ip <- mixkwdual(L)
If you run the IP algorithm, you should see that the IP and SQP solutions achieve nearly the same objective value.
cat(sprintf("Objective at SQP solution: %0.16f\n",fit.sqp$value,digits = 16))
cat(sprintf("Objective at IP solution: %0.16f\n",fit.ip$value,digits = 16))
cat(sprintf("Difference in objectives: %0.4e\n",fit.sqp$value - fit.ip$value))
# Objective at SQP solution: 0.6281978481946300
# Objective at IP solution: 0.6281978456083795
# Difference in objectives: 2.5863e-09
We observed that the SQP and IP methods achieve nearly the same solution quality in the example above. Here, we explore the computational properties of the SQP and IP algorithms in a larger data set.
As before, we compute the \(n \times m\) likelihood matrix for a mixture of zero-centered normals. This time, we use a finer grid of \(m = 100\) normal densities, as well as many more samples.
L <- simulatemixdata(1e5,100)$L
dim(L)
# [1] 100000 100
Now we fit the model using the SQP algorithm:
timing <- system.time(fit.sqp <- mixsqp(L))
cat(sprintf("Computation took %0.2f seconds\n",timing["elapsed"]))
# Running mix-SQP algorithm 0.1-85 on 100000 x 100 matrix
# convergence tol. (SQP): 1.0e-08
# conv. tol. (active-set): 1.0e-10
# zero threshold (solution): 1.0e-06
# zero thresh. (search dir.): 1.0e-08
# max. iter (SQP): 1000
# max. iter (active-set): 100
# iter objective max(rdual) nnz max.diff nqp nls
# 1 +7.79069e-01 +2.447e-01 100 NA NA NA
# 2 +6.92758e-01 +2.219e+01 4 3.62e-01 100 1
# 3 +6.37165e-01 +9.824e+00 7 4.91e-01 47 1
# 4 +6.23319e-01 +4.545e+00 4 2.07e-01 14 1
# 5 +6.17706e-01 +1.251e+00 5 2.97e-01 13 1
# 6 +6.16019e-01 +2.574e-01 5 2.73e-01 14 1
# 7 +6.15240e-01 +4.100e-02 5 2.19e-01 35 1
# 8 +6.15066e-01 +4.111e-03 7 1.02e-01 24 1
# 9 +6.15053e-01 +2.241e-04 7 2.80e-03 2 1
# 10 +6.15052e-01 +9.288e-07 7 9.53e-04 2 1
# 11 +6.15052e-01 -1.543e-08 7 1.14e-05 2 1
# Convergence criteria met---optimal solution found.
# Computation took 7.54 seconds
If you have the REBayes package, you can also run the IP method:
timing <- system.time(fit.ip <- mixkwdual(L))
cat(sprintf("Computation took %0.2f seconds\n",timing["elapsed"]))
# Computation took 14.45 seconds
If you run the IP algorithm, you should find that the SQP algorithm was considerably faster than the IP solver, and it converged to a solution with nearly the same objective value as the IP solution.
cat(sprintf("Objective at SQP solution: %0.16f\n",fit.sqp$value,digits = 16))
cat(sprintf("Objective at IP solution: %0.16f\n",fit.ip$value,digits = 16))
cat(sprintf("Difference in objectives: %0.4e\n",fit.sqp$value - fit.ip$value))
# Objective at SQP solution: 0.6150522313978147
# Objective at IP solution: 0.6150522313757822
# Difference in objectives: 2.2032e-11
This next code chunk gives information about the computing environment used to generate the results contained in this vignette, including the version of R and the packages used.
sessionInfo()
# R version 3.4.3 (2017-11-30)
# Platform: x86_64-apple-darwin15.6.0 (64-bit)
# Running under: macOS High Sierra 10.13.6
#
# Matrix products: default
# BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
# LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
#
# locale:
# [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
#
# attached base packages:
# [1] stats graphics grDevices utils datasets methods base
#
# other attached packages:
# [1] Rmosek_8.0.69 Matrix_1.2-12 mixsqp_0.1-85
#
# loaded via a namespace (and not attached):
# [1] Rcpp_1.0.0 lattice_0.20-35 digest_0.6.17 rprojroot_1.3-2
# [5] grid_3.4.3 backports_1.1.2 magrittr_1.5 evaluate_0.11
# [9] stringi_1.2.4 rmarkdown_1.10 tools_3.4.3 stringr_1.3.1
# [13] REBayes_1.3 yaml_2.2.0 compiler_3.4.3 htmltools_0.3.6
# [17] knitr_1.20
If you used REBayes
and Rmosek
above, it is also helpful to record the version of MOSEK that was used.
mosek_version()
# [1] "MOSEK <IP_ADDRESS>"


Don't forget to open up your console.
Basic Debug (d) Info (i)
Warning (w) Error (e) Critical (c)
System (x) All at once


Symbollic Logic
by Lewis Carroll
“Book 3: Chapter 1”
Additional Information
- Year Published: 1896
- Language: English
- Country of Origin: United States of America
- Source: Carroll, L. (1896). Symbollic Logic. New York; Macmillan & Co.
-
Readability:
- Flesch–Kincaid Level: 10.5
- Word Count: 2,013
- Genre: Informational
- Keywords: math history, mathematics
- ✎ Cite This
Downloads
BOOK III.
THE BILITERAL DIAGRAM.
-------------
| | |
| xy | xy' |
| | |
|------|------|
| | |
| x'y | x'y' |
| | |
-------------
CHAPTER I.
SYMBOLS AND CELLS.
First, let us suppose that the above Diagram is an enclosure assigned to a certain Class of Things, which we have selected as out ‘Universe of Discourse.’ or, more briefly, as our ‘Univ’.
[For example, we might say “let Univ. be ‘books’”; and we might imagine the Diagram to be a large table, assigned to all “books.”] [The Reader is strongly advised, in reading this Chapter, not to refer to the above Diagram, but to draw a large one for himself, without any letters, and to have it by him while he reads, and keep his finger on that particular part of it, about which he is reading.]
Secondly, let us suppose that we have selected a certain Adjunct, which we may call “x,” and have divided the large Class, to which we have assigned the whole Diagram, into the two smaller Classes whose Differentiae are “x” and “not-x” (which we may call “x’”), and that we have assigned the North Half of the Diagram to the one (which we may call “the Class of x-Things,” or “the x-Class”), and the South Half to the other (which we may call “the Class of x’-Things,” or “the x’-Class”).
[For example, we might say “Let x mean ‘old,’ so that x’ will mean ‘new’,” and we might suppose that we had divided books into the two Classes whose Differentiae are “old” and “new,” and had assigned the North Half of the table to “old books” and the South Half to “new books.”
Thirdly, let us suppose that we have selected another Adjunct, which we may call “y”, and have subdivided the x-Class into the two Classes whose Differentiae are “y” and “y’”, and that we have assigned the North-West Cell to the one (which we may call “the xy-Class”), and the North-East Cell to the other (which we may call “the xy’-Class”).
[For example, we might say “Let y mean ‘English,’ so that y’ will mean ‘foreign’”, and we might suppose that we had subdivided “old books” into the two Classes whose Differentiae are “English” and “foreign”, and had assigned the North- -West Cell to “old English books”, and the North-East Cell to “old foreign books.”]
Fourthly, let us suppose that we have subdivided the x’–Class in the same manner, and have assigned the South– West Cell to the x’y-Class, and the South-East Cell to the x’y’-Class.
[For example, we might suppose that we had subdivided “new books” into the two Classes “new English books” and “new foreign books”, and had assigned the South-West Cell to the one, and the South-East Cell to the other.]
It is evident that, if we had begun by dividing for y and y’, and had then subdivided for x and x’, we should have got the
same four Classes. Hence we see that we have assigned the West Half to the y-Class, and the East Half to the y’-Class.
[Thus, in the above Example, we should find that we had assigned the West Half of the table to “English books” and the East Half to “foreign books.”
-------------------
| old | old |
| English | foreign |
We have , in fact, assigned the four | books | books |
Quarters of the table to four different |---------|---------|
Classes of books, as here shown. | new | new |
| English | foreign |
| books | books |
-------------------
The Reader should carefully remember that, in such a phrase as “the x-Things,” the word “Things” means that particular kind of Things, to which the whole Diagram has been assigned.
[Thus, if we say “Let Univ. be ‘books’,” we mean that we have assigned the whole Diagram to “books.” In that case, if we took “x” to mean “old”, the phrase “the x-Things” would mean “the old books.”]
The Reader should not go to the next Chapter until he is quite familiar with the blank Diagram I have advised him to draw.
He ought to be able to name, instantly, the Adjunct assigned to any Compartment named in the right-hand column of the following Table.
Also he ought to be able to name, instantly, the Compart- ment assigned to any Adjunct named in the left-hand column.
To make sure of this, he had better put the book into the hands of some genial friend, while he himself has nothing but the blank Diagram, and get that genial friend to question him on this Table, dodging about as much as possible. The Ques- tions and Answers should be something like this:–
TABLE I.
-----------------------------------
| Adjunts | Compartments, or Cells, |
| of | assigned to them. |
| Classes | |
|---------|-------------------------|
| x . . . | North Half. |
| x' . . | South " |
| y . . . | West " |
| y' . . | East " |
|---------|-------------------------|
| xy . . | North-West Cell. |
| xy' . . | " East " |
| x'y . . | South-West " |
| x'y' . | " East " |
-----------------------------------
Q. "Adjunct for West Half?"
A. "y."
Q. "Compartment for xy'?"
A. "North-East Cell."
Q. "Adjunct for South-West Cell?"
A. "x'y."
&c., &c,
After a little practice,he will find himself able to do with- out the blank Diagram, and will be able to see it mentally ( “in my mind’s eye, Horatio!”) while answering the questions of his genial friend. When this result has been reached, he may safely go on to the next Chapter.


<< Back to the demo
Original image:
here
Original image:
here
Original image:
here
Original image:
here
Original image:
here


Stettler County Public Works is gearing up for its snow removal season
Crews first concentrate on the main road network, followed by laneway and road shoulder clearing
By Jessica Jones For the Independent
With the first blast of snowfall recently, Stettler County Public Works is gearing up for its snow removal season, advising residents that it could take upwards of a week for crews to clear away large amounts of snowfall from primary road networks.
County of Stettler Director of Operations Rick Green says that crews would first concentrate on the main road network, followed by laneway and road shoulder clearing.
“Activities, such as school or work, may need to be adjusted on major events, or planning alternate vehicles with higher clearance for necessary trips, should take place,” he said.
Green explains that 15 cm of snowfall is the guideline the County follows to identify needs and their response to service requests.
The County of Stettler prioritizes its snow plowing, itemized in its Snow Plowing Service Standards policy, by first plowing its hard-surfaced roads, such as in hamlets and subdivisions, followed by the access roads to subdivisions.
Crews would then work on plowing gravel roads, and later start laneway plowing.
Green says that approximately 60 of the County’s residents have signed up to receive the laneway snow plowing service, available for farms and acreages.
“Laneways are our last priority with no one laneway taking priority over others,” Green said.
“Work completed is focused on the fastest way to accomplish the clearing without backtracking,” he added.
The County of Stettler doesn’t specifically budget for snow removal, stating that, “It is handled through a number of budget areas,” such as the cost of fuel, wages, and capital equipment costs.
County of Stettler Director of Communications Niki Thorsteinsson says the County has put enough money aside in its budget to, “Keep all our graders and plow trucks moving full-time for the entire season.
“In the event that we have a light snow year and we don’t have the big snow events or episodes, we end up with a little surplus in our budget,” she said.
For more information visit, www.stettlercounty.ca, contact<EMAIL_ADDRESS>or call<PHONE_NUMBER>.


Classes
Upcoming Assignments
Use this document as a way to quickly start any new project. All you get is this text and a mostly barebones HTML document.


EdgeMAX / Vyatta Site to Site VPN
I recently moved and now have servers in two locations across the country (NY and AR)! Both networks’ edge routers are the EdgeRouter Lite (see what I did there) made by Ubiquiti. These routers run a modified version of Vyatta with a web GUI. Typically all CLI commands are cross compatible, but there are a few circumstances where they aren’t.
I set up a site-to-site VPN between the two in addition to L2TP/IPSec PSK Authentication on one of the EdgeRouters. This is how I set it up.
First and foremost, to prevent us from having to deal with too much firewall configuration, lets set up auto firewall and nat exclude:
Set the VPN auto update to 1 minute:
Configure the ESP Group. Note that “ESP-1W” is an arbitrarily chosen name:
Configure the IKE Group. Again, “IKE-1W” is arbitrarily chosen:
Lets configure dead peer detection. This allows the VPN to detect if there is a dead IKE peer and restart the connection:
Set the appropriate IPSec interface (Typically the WAN interface):
Set the VPN to enable NAT traversal. This allows IPSec packets to traverse any NAT points on our network:
Setup the site to site connection with a pre shared secret:
One side needs to initiate the connection, the other side needs to respond. We’ll set this side to initiaite. Just make sure to set the other side to respond:
Set ESP and IKE groups and IKEv2 reauth & local-address policy:
Finally, set up the tunnel:
You can also add more than one tunnel if you have more local or remote destinations.
This needs to be done on both sides, while changing the appropriate values depending on what side you’re on.
For debugging purposes, on the EdgeRouter Lite you can log in via SSH and run sudo swanctl --log
as well as show vpn log
which will output VPN logs and any errors. A few other commands that you could use to check on the status of the VPN are, show vpn ipsec sa | state | status | policy
I’ll add another post for L2TP set up.


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/rec_name.html ---
After adding an inductive type to the environment using add_inductive
, I can use the induction
tactic, but it doesn't return any useful case names... Can I solve this by defining rec_name
?
Sounds like it: https://github.com/leanprover/lean/blob/master/library/init/meta/tactic.lean#L425-L426
Good to know that induction
works at all
Yes, that's indeed a good thing. I don't even have to add the using
clause...
Apparently you do, if you want nice case names :)
The alternative is to set the case names on your own, using a wrapper around the induction
tactic
I don't _really_ need the case names so far, but I'm kind of feeling that I don't have enough control over which case belongs to which constructor while the tactic is working on it...
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


AMAZING PEOPLE ARE MAKING AMAZING DESIGNS IN A FUN ENVIRONMENT
When you work with us, you part of a team of committed collaborators. All aspects of software development process are intergrated, interactive
and agile.
Our approach inufies design, development and product management to create exceptional products.
We start each project by understanding your business goals, the user's needs and the products requirements
Then we help translate them into effective and elegant solutions
Before we sign a contract or write a line of code our team will spend the necessary time needed to understand your product vision
The outcome of this scoping session is proposal or high-level statement of work.
based on your requirements, we can provide acomplete offering or just the pieces you need.
Our design practice offers a full range of services including brand strategy, andvisual design and user experience testing.Throughout your project, our designers create and implement visual design and workflows, solicit gets built is what is needed.
All engineers are fluent in the latest enterprise, mobile and web development technologies. They collaborate with your team to write, and improve code on a daily basis, using proven practices such as test-driven development and pair programming.
Planning and development is iterative. Because we are constantly coding and testing, the products we build are always ready to go live. This iterative process allows for changes as business requirements evolve.
work4
Work3
Work2
Work1
Work5
Work6
Work7
Work8


"And we have not sent you except as a mercy to the whole universe" - Quran Surah Mu'minoon Ayah 107
Here's a time line of Prophet Muhammad's life:
570 - Muhammad was born in the year 570 in the town of Mecca. He was the first and only son of Abdullah bin Al-Muttalib and Amina bint Wahb. His father, Abdullah died before his birth.
575 - When Muhammad was five or six his mother took him to Yathrib, an oasis town a few hundred miles north of Mecca, to stay with relatives and visit his father's grave there. On the return journey, Amina took ill and died. Halima, his nurse, returned to Mecca with the orphaned boy and placed him in the protection of his paternal grandfather, Abdul Al-Muttalib.
578 - Upon his grandfather's death in 578, Muhammad, aged about eight, passed into the care of a paternal uncle, Abu Talib.
580-594 - As a young boy, Muhammad worked as a shepherd to help pay his keep (his uncle was of modest means). In his teens he sometimes traveled with Abu Talib, who was a merchant, accompanying caravans to trade centers like Syria and Yemen.
594 - Muhammad Acts as Caravan Agent for Wealthy Tradeswoman, Khadija. In his early twenties, Muhammad entered the service of a wealthy Meccan merchant, a widow named Khadija bint Khawalayd. The two were distant cousins. Muhammad carried her goods to the north and returned with a profit.
595-609 - Impressed by Muhammad's honesty and character, Khadija eventually proposed marriage. They were wed in about 595. He was twenty-five. She was nearly forty.
Muhammad continued to manage Khadija's business affairs, and their next years were pleasant and prosperous. Six children were born to them, two sons who both died in infancy, and four daughters. Mecca prospered too, becoming a well–off trading center in the hands of an elite group of clan leaders who were mostly successful traders.
610 -
Mecca's new materialism and its traditional idolatry disturbed Muhammad. He began making long retreats to a mountain cave outside town. There, he fasted and meditated. On one occasion, after a number of indistinct visionary experiences, Muhammad was visited by an overpowering presence and instructed to recite words of such beauty and force that he and others gradually attributed them to God. This experience shook Muhammad to the core. It was several years before he dared to talk about it outside his family.
613 -
After several similar experiences, Muhammad finally began to reveal the messages he was receiving to his tribe. These were gathered verse by verse and later would become the Qur'an, Islam's sacred scripture.
622 -
In 622, Muhammad and his few hundred followers left Mecca and traveled to Yathrib, the oasis town where his father was buried. The leaders there were suffering through a vicious civil war, and they had invited this man well known for his wisdom to act as their mediator.
625-628 -
The Meccans did not take Muhammad's new success lightly. Early skirmishes led to three major battles in the next three years. Of these the Muslims won the first (the Battle of Badr, March, 624), lost the second (the Battle of Uhud, March, 625), and outlasted the third, (The Battle of the Trench and the Siege of Medina, April, 627).
630 -
By now, the balance of power had shifted radically away from once-powerful Mecca, toward Muhammad and the Muslims. In January, 630, they marched on Mecca and were joined by tribe after tribe along the way. They entered Mecca without bloodshed and the Meccans, seeing the tide had turned, joined them.
630-632 -
Muhammad returned to live in Medina. In the next three years, he consolidated most of the Arabian Peninsula under Islam. In March, 632, he returned to Mecca one last time to perform a pilgrimage, and tens of thousands of Muslims joined him.
After the pilgrimage, he returned to Medina. Three months later on June 8, 632 he died there, after a brief illness. He is buried in the mosque in Medina. Within a hundred years Muhammad's teaching and way of life had spread from the remote corners of Arabia as far east as Indo-China and as far west as Morocco, France and Spain.
Umar, may Allah be pleased with him reported the Prophet sallallaahu `alayhi wa sallam ( may Allah exalt his mention ) as saying: "Do not exalt me as the Christians have exalted Jesus, son of Mary. I am just His servant, so call me Allah's Servant and Messenger."
Every human being should read more about this incredible human being on his Wikipedia page.


Michael Jackson
Jackson's contributions to music, dance, and fashion.
Here's a time line of Michael Jackson's life:
- 1958–1975: - Move to Epic and Off the Wall
- 1975–1981: - Move to Epic and Off the Wall
- 1982–1983: - Thriller and Motown 25: Yesterday, Today, Forever
- 1984–1985: - Pepsi, "We Are the World", and business career
- 1986–1990: - Changing appearance, tabloids, Bad, films, autobiography, and Neverland
- 1991–1993: - Dangerous, Heal the World Foundation, and Super Bowl XXVII
- 1993–1994: - First child sexual abuse allegations and first marriage
- 1995–1997: - History, second marriage, and fatherhood
- 1997–2002: - Label dispute and Invincible
- 2002–2005: - Second child sexual abuse allegations and acquittal
- 2006–2009: - Closure of Neverland, final years, and This Is It
If you have time, you should read more about this incredible human being on his Wikipedia Entry
FCC Tribute Project - Ye Yuan


Here you can track, categorize, and notate your association's spending and income. You can connect your bank account so that transactions are
synchronized automatically. This is meant to help small associations and is not a replacement for a more robust application like QuickBooks
or using an accountant.
Plaid needs you to refresh your login credentials for your {{curAccount.accountName}} account. Click here to refresh.
Import Transactions Manage Categories
Get started by adding an account using the button above.
Owner Transaction History Note:
This optional note will show above the owner's transaction history. You can use this to explain details about
the transactions such as the last time it was updated or who to contact with questions.
Bulk Transaction Import History
Date
Resident
Import
Notes
{{curRow.importDateUtc | date:'short'}}
{{curRow.importUserFullName}}
{{curRow.importMessage}}
{{curRow.userNotes}}
Transaction Details
This entry came from Plaid so cannot be changed.
This entry came from Plaid so cannot be changed.
Split Transactions
Category
Description
Unit
Amount
×
The split total is {{$ctrl.splitAmountTotal | currency}} but must equal {{$ctrl.editingTransaction.amount | currency}}
Our software will automatically retrieve categorized transactions from your bank via Plaid.
NOTE: Plaid's automatic account connection process has been failing lately for the vast majority of users. If the choice is given, use the micro-deposit account verification.
You will manually add an categorize transactions.
Launching Plaid setup...
If you find yourself waiting on any step more than 5 minutes, refresh the page and start over.
{{$ctrl.plaidSuccessProgressMsg}}
Created Accounts:
{{$index + 1}}. {{curAccount.accountName}}
Plaid will begin processing your records immediately, but it still takes some time. Come back in 5-10 minutes and you should see the first batch of transactions loaded covering the last 30 days. After
around 30 minutes you should see as far back as your bank allows, this can vary from 90 days to 2 years.


Sysadmin & Infrastructure developer
GNU/Linux administration, Network, Monitoring
Docker, Ansible, Cloudformation & CD/CI
Puppet & Web administration
Testing infrastructure code, Chef & Git
GNU/Linux administration, Network, Monitoring
Docker, Ansible, Cloudformation & CD/CI
Puppet & Web administration
Testing infrastructure code, Chef & Git


Start putting together your perfect pizza below.
Each topping is an additional $1.
Your pizza will cost $


--- title: Quantum Mining Model author: '' date: '2021-01-22' ---
Now that we have covered what cryptocurrency is and how mining it works, we apply our two special tools (quantum computers and Grover’s Algorithm).
As of this post, the reward is 6.25 BTC for finishing a block. Since the price is at 39,766.64 dollars, this amounts to a total of 248,541.50 USD. The time it takes to find a hash is controlled for difficulty ever 2016 blocks, but it take a single miner (on average) about 5 years to finish a block. It is important to keep in mind that this number includes people with complex mining rigs and those with a more simplistic approaches to hashing. Still, the potential to make 49,708.30 dollars a year (before expenses) is enough to incentivize many hopeful miners.
Theory In order to acquire cryptocurrency, we need to find a specific (or smaller) sequence of 64 letters and numbers. Cryptocurrency mining involves repeatedly changing our guess until we find a sequence that works. On a classic computer, this can only be done using exhaustive, brute force methods. This takes a long time and is difficult to do, hence the high rewards for success.
For each position of the 64, there are 16 possibilities: 0 though 9 and a, b, c, d, e, and f. At the moment, we also know that the first 8 to 64 positions must be “0”. As of 08/04/2021, the number of leading zeros is 17. This means that we are realistically trying to compute only 48 digits out of the 64.
How many combinations is that? Well, you have probability \(\frac{1}{16}\) of randomly guessing the first digit correctly. You have a \(\frac{1}{16}\)*\(\frac{1}{16}\)=\(\frac{1}{256}\) chance of guessing the first and second digits correctly. From here, we infer that our chances of guessing every digit correctly is \(\frac{1}{16^{n}}\), where n=48. This is a tiny probability (it is about 0.0000000000000000000000000000000000000000000000000000000159%, if you were curious). For your typical home computer to find the right hash guessing randomly, it would take would take thousands of years to mine a new block However, with mining camps and supercomputers, the real number of iterations can be fewer. Nowadays, Bitcoin is designed to be adaptive in difficulty, and one new block is found on average every 10 minutes, or 600 seconds.
About this “quantum” stuff? Let’s figure out just home much of an advantage a quantum computer can provide. Recall, Grover offers us a speedup from for a database of N to √N. Imagine that we can try 0-f on our first digit at the same time. Likewise, for every subsequent digit, the quantum computer can try all the possibilities in parallel.
Since the number of leading zeros can change, we will consider a hypothetical scenario where we have to generate the full sequence of 64 characters for simplicity. Since we have 64 positions, with each digit having 16 possibilities, we have \(16^{64}\) combinations. 16 can be written as a power of 2, \(2^{4}\), which will allow us to simplify this number to \(2^{256}\). This is where the Bitcoin cryptographic hashing function“SHA-256” gets its name.
Classically, the probability of successfully mining a block via random guess is given by \(\frac{Trt}{2^{256}}\), where r is the hash rate (the number of guesses made per second), t is the time (seconds), and T is the “adaptive difficulty” mentioned above, which can be computed using the number of hashes equal or less than the target. It is intuitively understood that the faster you can guess, the faster you can find a solution.
My personal laptop uses an Intel i7 processor, which can reach a hash rate of 1811.35 H/s, so we will use that number for further calculations. Also, at the time of this writing, T= 14,496,442,856,349. Difficulty and other statistics can be found on the Bitcoin website.
On a quantum computer using Grover, we can represent the equation for Bitcoin mining as \(sin^{2}(2r_{q}t\sqrt{T/2^{256}})\) where \(r_{q}\) is the quantum hash rate, determined by the number of Grover iterations per second. Remember, T is adaptive, so for Grover to work we need to make sure that we run the loop and take a measurement before T changes. Now, the interval between blocks shows an exponential distribution, which means that the chance that a block is still discoverable after a time t is \(e^{-t/600}\).
We can then represent our earning potential on a quantum computer with \(Re^{-t/600}sin^{2}(2r_{q}t\sqrt{T/2^{256}})-Ct\) where C is the constant cost of running the computer and R is the 6.25 BTC reward.
The number of qubits available to a quantum computer would change the outcome, but after a certain point, the advantage begins to level out and will not exceed \(\sqrt{2^{256}/T}\).
One could ask, how many qubits will be available in the near future? To answer this, we have to look at the rate of growth quantum computers have shown in recent years and generate a new model for predicting qubit availability. Qubit growth has been historically exponential, and we verify that the model is still the best fit in this case. We found that the estimate for ambitions growth will see the number of qubits double every year while the conservative estimate believes it to double every two years.
Here is an example of the data:
| Number of Qubits | Year | Quantum Computer |
|---|---|---|
| 2 | 2013 | IBM |
| 5 | 2014 | UC Santa Barbara |
| 3 | 2014 | IBM |
| 5 | 2016 | IBM |
| 16 | 2017 | IBM |
| 20 | 2017 | |
| 49 | 2018 | |
| … | … | … |
By our computation, we expect:
| Number of Qubits (Min) | Number of Qubits (Max) | Year |
|---|---|---|
| 82 | 420 | 2025 |
| 117 | 919 | 2030 |
| 153 | 1610 | 2035 |
| 189 | 2494 | 2040 |
| … | … | … |
Along with the number of qubits, we can model hashing power of each computer. We can again notice the rates from 2012-2020 and see exponential growth. Data for this portion of the project was gathered at blockchain.info. Here, the conservative estimate was generated assuming we continue at the current rate of growth linearly, and the aggressive estimate uses exponential increases for the first 5 years.
By our computation, we expect:
| Hash Rate (Min) | Hash Rate (Max) | Year |
|---|---|---|
| \(10^{19}\) | \(10^{21}\) | 2025 |
| \(10^{19.2}\) | \(10^{21.2}\) | 2030 |
| \(10^{19.4}\) | \(10^{21.4}\) | 2035 |
| \(10^{19.8}\) | \(10^{21.8}\) | 2040 |
| … | … | … |
In sum, the technology will be available shortly such that it will allow us an advantage over classic mining techniques. By 2025, we will have access to quantum computers strong enough (min. 1e+19 hash rate) and large enough (min. 82 qubits). This will allow quantum computers to be competitive against even resistant Bitcoin networks and add an advantage to mining through quadratic speedups due to parallel processing.
My chances of successfully mining a block on my laptop would be about \((\frac{1811.35*14,496,442,856,349}{2^{256}})\), or 2.268e-61, while my chances of doing to on a quantum computer with a 2020 hash rate would be about \(sin^{2}(2*10^{19}\sqrt{14,496,442,856,349/2^{256}})\), or 5.01e-26. Those both are very small numbers, but hopefully it is evident how much better 0.0000000000000000000000000501 is than 0.000000000000000000000000000000000000000000000000000000000000227.
Limitations Current iterations of quantum computers have a lot of calculation error. Quantum error correction is required in order to counteract the issue, but it uses a large number of qubits.
Another limitation is specific to Bitcoin. Because miners have become highly specialized, they can be extremely fast compared to even quantum computers. Bitcoin is then relatively resistant to the speedup granted by quantum computers.
Finally, it should be mentioned that we talk about using quantum computers in a legal way to honestly mine cryptocurrency. There is a real danger that quantum computers will enable hackers to steal finished blocks from individuals with real computers. That is a different type of security problem that is outside the scope of this inquiry.
What are your impressions? Read some closing thoughts on quantum computing and cryptocurrency here.
Image from nhst.tech


this is the paragraph of the first page
Welcome to timeless restaurant
first name:
last name:
email:
Male
Female


Continue with Facebook
Continue with Google
OR
Continue with Email
Have an account already?
Log In
Complete your information
Please review and provide any missing information to finish signing up.
Birthday
To sign up, you must be 18 or older. Other people won't see your birthday.
Month
January
February
March
April
May
June
July
August
September
October
November
December
Day
Year
I'd like to receive coupons, promotions, surveys, and updates via email about Peerbuds and its partners.
Signup
Cancel


Match Play. Red leads 12-10 to 13. How should Red play 41?
pips Red=69 White=87
(CorrectAnswer= 0/0, ErrorScore= 0)
13/9, 4/3 is a blunder for two reasons:
1) It fails to clear Red’s most awkward point in the bear-in.
2) It removes the outfield guard if White runs with one checker.
6/1 is also wrong for similar reasons and also look at 65 next time!!
7/6, 7/3 is the right move by a long way.
1) It fails to clear Red’s most awkward point in the bear-in.
2) It removes the outfield guard if White runs with one checker.
6/1 is also wrong for similar reasons and also look at 65 next time!!
7/6, 7/3 is the right move by a long way.
1. Cubeful 2-ply 7/6 7/3 Eq.: +0.614 0.812 0.054 0.001 - 0.188 0.005 0.000 2. Cubeful 2-ply 6/1 Eq.: +0.541 (-0.073) 0.778 0.041 0.000 - 0.222 0.007 0.000 3. Cubeful 2-ply 13/9 4/3 Eq.: +0.535 (-0.079) 0.773 0.026 0.000 - 0.227 0.005 0.000 4. Cubeful 0-ply 13/8 Eq.: +0.331 (-0.282) 0.684 0.037 0.000 - 0.316 0.018 0.000 5. Cubeful 0-ply 13/9 6/5 Eq.: +0.161 (-0.453) 0.627 0.044 0.001 - 0.373 0.046 0.001


oci_fetch_object
(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)
oci_fetch_object — Returns the next row from a query as an object
说明
object oci_fetch_object ( resource $statement )
Returns an object containing the next result-set row of a query. Each attribute
of the object corresponds to a column of the row. This function is typically
called in a loop until it returns FALSE, indicating no more rows exist.
要获取 OCI8 扩展进行数据类型映射的细节，请参见驱动所支持的数据类型。
参数
statement
有效的 OCI8 报表标识符由 oci_parse() 创建，被 oci_execute() 或 REF CURSOR
statement 标识执行。
返回值
Returns an object. Each attribute of the object corresponds to a column of the
row. If there are no more rows in the statement then FALSE is returned.
Any LOB columns are returned as LOB descriptors.
DATE columns are returned as strings formatted to the current date format. The
default format can be changed with Oracle environment variables such as
NLS_LANG or by a previously executed ALTER SESSION SET NLS_DATE_FORMAT command.
Oracle's default, non-case sensitive column names will have uppercase attribute
names. Case-sensitive column names will have attribute names using the exact
column case. Use var_dump() on the result object to verify the appropriate case
for attribute access.
Attribute values will be NULL for any NULL data fields.
范例
Example #1 oci_fetch_object() example
ID . "
\n";
echo $row->DESCRIPTION . "
\n";
}
// Output is:
// 1
// Fish and Chips
oci_free_statement($stid);
oci_close($conn);
?>
Example #2 oci_fetch_object() with case sensitive column names
ID . "
\n";
// Use the exact case for the case sensitive column name
echo $row->MyDescription . "
\n";
}
// Output is:
// 1
// Iced Coffee
oci_free_statement($stid);
oci_close($conn);
?>
Example #3 oci_fetch_object() with LOBs
ID . "
\n";
// The following will output the first 11 bytes from DESCRIPTION
echo $row->DESCRIPTION->read(11) . "
\n";
}
// Output is:
// 1
// A very long
oci_free_statement($stid);
oci_close($conn);
?>
参见
• oci_fetch() - Fetches the next row into result-buffer
• oci_fetch_all() - 获取结果数据的所有行到一个数组
• oci_fetch_assoc() - Returns the next row from a query as an associative
array
• oci_fetch_array() - Returns the next row from a query as an associative or
numeric array
• oci_fetch_row() - Returns the next row from a query as a numeric array
User Contributed Notes 1 note
===============================================================================
Please note that you can still reference a column that has a very complex name
by using the curly syntax as shown in this example:
{'COUNT(*)'}; //Curly syntax reference
?>


Message bundle File
Internationalization (i18n) is a powerful feature present in almost all Web frameworks
nowadays. And it’s no different with VRaptor3. With i18n you can make your applications
support several different languages (such as French, Portuguese, Spanish, English, etc)
in a very easy way: simply translating the application messages.
In order to support i18n, you must create a file called messages.properties
and make
it available in your application classpath (WEB-INF/classes
). That file contains
lines which are a set of key/value entries, for example:
field.userName = Username
field.password = Password
So far, it’s easy, but what if you want to create files containing messages in other
languages, for example, Portuguese? Also easy. You just need to create another properties
file called messages_pt_BR.properties
. Notice the suffix _pt_BR on the file name.
It indicates that when the user access your application from his computer configured with
Brazilian Portuguese locale, the messages in this file will be used. The file contents
would be:
field.userName = Nome do Usuário
field.password = Senha
Notice that the keys are the same in both files, what changes is the value to the specific
language.
In order to use those messages in your JSP files, you could use JSTL. The code would go
as follows:
<html>
<body>
<fmt:message key="field.userName" /> <input name="user.userName" />
<br />
<fmt:message key="field.password" /> <input type="password" name="user.password" />
<input type="submit" />
</body>
</html>