Class ARBShadingLanguageInclude
- java.lang.Object
-
- org.lwjgl.opengl.ARBShadingLanguageInclude
-
public class ARBShadingLanguageInclude extends java.lang.Object
Native bindings to the ARB_shading_language_include extension.This extension introduces a
#include
GLSL directive to allow reusing the same shader text in multiple shaders and defines the semantics and syntax of the names allowed in#include
directives. It also defines API mechanisms to define the named string backing a#include
.Introduction
The GLSL
#include
mechanism looks up paths in a tree built through the OpenGL API. This appendix describes the syntax and semantic model of the tree and paths into the tree. How the tree is used is up to users of the tree, like the OpenGL API or GLSL.The Tree
The tree is a singly rooted hierarchy of tree locations. The root may have one or more child locations, and any location may in turn have its own children. Except for the root, each location has exactly one parent; the root has no parent.
Paths into the Tree
The locations in the tree are created or looked up by path strings. The path string "/" locates the root of the tree. The path "/foo" locates the child "foo" of the root. Formally, a valid path is a sequence of tokens delimited by the beginning of the string, by the path-separator forward slash ( / ), and by the end of the string. The string "foo/bar" has two tokens; "foo" and "bar". The string "/foo/./bar" has 3 tokens; "foo", ".", and "bar". The string "/foo/.." has two tokens; "foo" and "..". The string "/foo/.bar" has two tokens; "foo" and ".bar". A path is invalid if
path
contains any characters not listed in Section 3.1 "Character Set", or the double quote character, or angled brackets, or any white space characters other than the space character.path
has consecutive forward slashes ( // ); "/foo//bar" is not valid (zero length tokens are not allowed).path
ends with a forward slash ( / )path
contains no characters.
There are no path escape characters, so there is no way to get the forward slash delimiter within a single token.
When using a path to lookup a tree location, the path tokens are used to walk the tree. The initial location to start the walk is specified by the user of the tree and is updated as follows by the tokens in the path. (Paths starting with "/" will start at the root.) Taken left to right:
The token ".." walks to the parent. Or, if already at the root, then the location remains at the root.
The token "." leaves the location unchanged.
Any other token is considered the name of a child of the current location, and walks to that child. (If there is no child of that name, this may result in a failed lookup or in the child being created, as specified by the user of the tree for the operation being performed.)
Associated Strings
Each location in the tree can have an additional string associated with it (that a user like the
#include
mechanism can use as an included string). This is true even for locations that have children: "/foo/bar" can exist in the tree at the same time that "/foo" has an additional string associated with it. Typically, when a path is used to find a location in the tree, it is for the purpose of returning this associated string.Hence, the tree can be built from a collection of (path,string) pairs, where path is a string establishing the existence of a location in the tree and string is the string associated with the node. Details of how to do this are specified by the user of the tree.
Requires GLSL 1.10.
-
-
Field Summary
Fields Modifier and Type Field and Description static int
GL_NAMED_STRING_LENGTH_ARB
GL_NAMED_STRING_TYPE_ARBAccepted by thepname
parameter of GetNamedStringivARB.static int
GL_SHADER_INCLUDE_ARB
Accepted by thetype
parameter of NamedStringARB.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method and Description static void
glCompileShaderIncludeARB(int shader, PointerBuffer path, int[] length)
Array version of:CompileShaderIncludeARB
static void
glCompileShaderIncludeARB(int shader, PointerBuffer path, java.nio.IntBuffer length)
Compiles a shader object.static void
glDeleteNamedStringARB(java.nio.ByteBuffer name)
Deletes a named string.static void
glDeleteNamedStringARB(java.lang.CharSequence name)
Deletes a named string.static void
glGetNamedStringARB(java.nio.ByteBuffer name, int[] stringlen, java.nio.ByteBuffer string)
Array version of:GetNamedStringARB
static void
glGetNamedStringARB(java.nio.ByteBuffer name, java.nio.IntBuffer stringlen, java.nio.ByteBuffer string)
Returns instring
the string corresponding to the specifiedname
.static java.lang.String
glGetNamedStringARB(java.lang.CharSequence name)
Returns instring
the string corresponding to the specifiedname
.static java.lang.String
glGetNamedStringARB(java.lang.CharSequence name, int bufSize)
Returns instring
the string corresponding to the specifiedname
.static void
glGetNamedStringARB(java.lang.CharSequence name, int[] stringlen, java.nio.ByteBuffer string)
Array version of:GetNamedStringARB
static void
glGetNamedStringARB(java.lang.CharSequence name, java.nio.IntBuffer stringlen, java.nio.ByteBuffer string)
Returns instring
the string corresponding to the specifiedname
.static int
glGetNamedStringiARB(java.lang.CharSequence name, int pname)
Returns properties of the named string whose tree location corresponds toname
.static void
glGetNamedStringivARB(java.nio.ByteBuffer name, int pname, int[] params)
Array version of:GetNamedStringivARB
static void
glGetNamedStringivARB(java.nio.ByteBuffer name, int pname, java.nio.IntBuffer params)
Returns properties of the named string whose tree location corresponds toname
.static void
glGetNamedStringivARB(java.lang.CharSequence name, int pname, int[] params)
Array version of:GetNamedStringivARB
static void
glGetNamedStringivARB(java.lang.CharSequence name, int pname, java.nio.IntBuffer params)
Returns properties of the named string whose tree location corresponds toname
.static boolean
glIsNamedStringARB(java.nio.ByteBuffer name)
static boolean
glIsNamedStringARB(java.lang.CharSequence name)
static void
glNamedStringARB(int type, java.nio.ByteBuffer name, java.nio.ByteBuffer string)
Specifies a string and its name.static void
glNamedStringARB(int type, java.lang.CharSequence name, java.lang.CharSequence string)
Specifies a string and its name.
-
-
-
Field Detail
-
GL_SHADER_INCLUDE_ARB
public static final int GL_SHADER_INCLUDE_ARB
Accepted by thetype
parameter of NamedStringARB.- See Also:
- Constant Field Values
-
GL_NAMED_STRING_LENGTH_ARB
public static final int GL_NAMED_STRING_LENGTH_ARB
Accepted by thepname
parameter of GetNamedStringivARB.- See Also:
- Constant Field Values
-
GL_NAMED_STRING_TYPE_ARB
public static final int GL_NAMED_STRING_TYPE_ARB
Accepted by thepname
parameter of GetNamedStringivARB.- See Also:
- Constant Field Values
-
-
Method Detail
-
glNamedStringARB
public static void glNamedStringARB(int type, java.nio.ByteBuffer name, java.nio.ByteBuffer string)
Specifies a string and its name. Such strings can be included by name in shaders during compilation, allowing reuse of the same code segments.After calling NamedStringARB, the contents of
string
are associated with the tree location corresponding toname
. If a string is already associated with that tree location, it will be replaced with the newstring
.- Parameters:
type
- the string type. Must be:SHADER_INCLUDE_ARB
name
- the name associated with the stringstring
- an arbitrary string of characters
-
glNamedStringARB
public static void glNamedStringARB(int type, java.lang.CharSequence name, java.lang.CharSequence string)
Specifies a string and its name. Such strings can be included by name in shaders during compilation, allowing reuse of the same code segments.After calling NamedStringARB, the contents of
string
are associated with the tree location corresponding toname
. If a string is already associated with that tree location, it will be replaced with the newstring
.- Parameters:
type
- the string type. Must be:SHADER_INCLUDE_ARB
name
- the name associated with the stringstring
- an arbitrary string of characters
-
glDeleteNamedStringARB
public static void glDeleteNamedStringARB(java.nio.ByteBuffer name)
Deletes a named string.- Parameters:
name
- the name associated with the string
-
glDeleteNamedStringARB
public static void glDeleteNamedStringARB(java.lang.CharSequence name)
Deletes a named string.- Parameters:
name
- the name associated with the string
-
glCompileShaderIncludeARB
public static void glCompileShaderIncludeARB(int shader, PointerBuffer path, java.nio.IntBuffer length)
Compiles a shader object.The ordered list of
path
s is used during compilation, together with the arguments of#include
directives in the shader source, to search for named strings corresponding to the#include
directives. If a#include
directive does not correspond to a valid named string, compilation will fail.- Parameters:
shader
- the shader object compilepath
- an ordered array ofcount
pointers to optionally null-terminated character strings defining search pathslength
- an arraycount
values with the number of characters in each string (the string length). If an element inlength
is negative, its accompanying string is null-terminated. Iflength
isNULL
, all strings in thepath
argument are considered null-terminated.
-
glIsNamedStringARB
public static boolean glIsNamedStringARB(java.nio.ByteBuffer name)
ReturnsTRUE
if the tree location corresponding toname
has a string associated with it, andFALSE
if the tree location has no string associated with it.- Parameters:
name
- the name associated with the string
-
glIsNamedStringARB
public static boolean glIsNamedStringARB(java.lang.CharSequence name)
ReturnsTRUE
if the tree location corresponding toname
has a string associated with it, andFALSE
if the tree location has no string associated with it.- Parameters:
name
- the name associated with the string
-
glGetNamedStringARB
public static void glGetNamedStringARB(java.nio.ByteBuffer name, java.nio.IntBuffer stringlen, java.nio.ByteBuffer string)
Returns instring
the string corresponding to the specifiedname
. The returned string will be null-terminated.- Parameters:
name
- the name associated with the stringstringlen
- a buffer in which to place the actual number of characters written intostring
, excluding the null terminator. IfNULL
, no length is returned.string
- a buffer in which to place the returned string
-
glGetNamedStringARB
public static void glGetNamedStringARB(java.lang.CharSequence name, java.nio.IntBuffer stringlen, java.nio.ByteBuffer string)
Returns instring
the string corresponding to the specifiedname
. The returned string will be null-terminated.- Parameters:
name
- the name associated with the stringstringlen
- a buffer in which to place the actual number of characters written intostring
, excluding the null terminator. IfNULL
, no length is returned.string
- a buffer in which to place the returned string
-
glGetNamedStringARB
public static java.lang.String glGetNamedStringARB(java.lang.CharSequence name, int bufSize)
Returns instring
the string corresponding to the specifiedname
. The returned string will be null-terminated.- Parameters:
name
- the name associated with the stringbufSize
- the maximum number of characters that may be written intostring
, including the null terminator
-
glGetNamedStringARB
public static java.lang.String glGetNamedStringARB(java.lang.CharSequence name)
Returns instring
the string corresponding to the specifiedname
. The returned string will be null-terminated.- Parameters:
name
- the name associated with the string
-
glGetNamedStringivARB
public static void glGetNamedStringivARB(java.nio.ByteBuffer name, int pname, java.nio.IntBuffer params)
Returns properties of the named string whose tree location corresponds toname
.- Parameters:
name
- the name associated with the stringpname
- the parameter to query. One of:NAMED_STRING_LENGTH_ARB
NAMED_STRING_TYPE_ARB
params
- a buffer in which to place the returned value
-
glGetNamedStringivARB
public static void glGetNamedStringivARB(java.lang.CharSequence name, int pname, java.nio.IntBuffer params)
Returns properties of the named string whose tree location corresponds toname
.- Parameters:
name
- the name associated with the stringpname
- the parameter to query. One of:NAMED_STRING_LENGTH_ARB
NAMED_STRING_TYPE_ARB
params
- a buffer in which to place the returned value
-
glGetNamedStringiARB
public static int glGetNamedStringiARB(java.lang.CharSequence name, int pname)
Returns properties of the named string whose tree location corresponds toname
.- Parameters:
name
- the name associated with the stringpname
- the parameter to query. One of:NAMED_STRING_LENGTH_ARB
NAMED_STRING_TYPE_ARB
-
glCompileShaderIncludeARB
public static void glCompileShaderIncludeARB(int shader, PointerBuffer path, int[] length)
Array version of:CompileShaderIncludeARB
-
glGetNamedStringARB
public static void glGetNamedStringARB(java.nio.ByteBuffer name, int[] stringlen, java.nio.ByteBuffer string)
Array version of:GetNamedStringARB
-
glGetNamedStringARB
public static void glGetNamedStringARB(java.lang.CharSequence name, int[] stringlen, java.nio.ByteBuffer string)
Array version of:GetNamedStringARB
-
glGetNamedStringivARB
public static void glGetNamedStringivARB(java.nio.ByteBuffer name, int pname, int[] params)
Array version of:GetNamedStringivARB
-
glGetNamedStringivARB
public static void glGetNamedStringivARB(java.lang.CharSequence name, int pname, int[] params)
Array version of:GetNamedStringivARB
-
-


MBLogSeverity Constants Reference
| Declared in | MBModuleLog.h |
|---|
MBLogSeverity
Specifies the relative importance of a log message.
Definition
typedef NS_ENUM(NSUInteger, MBLogSeverity ) {
MBLogSeverityVerbose = 1,
MBLogSeverityDebug = 2,
MBLogSeverityInfo = 3,
MBLogSeverityWarning = 4,
MBLogSeverityError = 5,
};
Constants
MBLogSeverityVerbose
-
The lowest severity, used for detailed or frequently occurring debugging and diagnostic information. Not intended for use in production code.
Declared In
MBModuleLog.h
. MBLogSeverityDebug
-
Used for debugging and diagnostic information. Not intended for use in production code.
Declared In
MBModuleLog.h
. MBLogSeverityInfo
-
Used to indicate something of interest that is not problematic.
Declared In
MBModuleLog.h
. MBLogSeverityWarning
-
Used to indicate that something appears amiss and potentially problematic. The situation bears looking into before a larger problem arises.
Declared In
MBModuleLog.h
. MBLogSeverityError
-
The highest severity, used to indicate that something has gone wrong; a fatal error may be imminent.
Declared In
MBModuleLog.h
.
Declared In
MBModuleLog.h


Page Links: First Previous 1 2 3 4 5 6 Next Last Index Page
| ChristiaanJ 13th May 2011, 17:44 permalink Post: 1366 |
Quote:
The question is less odd than it seems.... With full take-off power plus reheat, Concorde could not be held on brakes alone (hence the various procedures at take-off). Maybe somebody has the full story.... in the light of chocks being less than perfect.... CJ |
|
| ZimmerFly 13th May 2011, 21:42 permalink Post: 1367 |
I cannot imagine any requirement for more than one engine (with or without reheat) to be run at full power when parked in the detuners. Thus there would be very little chance of exceeding the brake torque limits.
|
|
| tristar 500 17th May 2011, 20:15 permalink Post: 1369 |
ZimmerFly said
I cannot imagine any requirement for more than one engine (with or without reheat) to be run at full power when parked in the detuners. Thus there would be very little chance of exceeding the brake torque limits. Brake torque us only one of the things you have to think about when running at high power. Consider running an engine on one side with all the others at idle or even shut down, what do you do when the aircraft starts to slide sideways? The engine run drills call for "balanced" power. What this means is that you have to balance the power which means running the opposite engine at high power also. Been there, done that!! tristar 500 |
|
| NW1 12th Jun 2011, 16:26 permalink Post: 1381 |
What was the minimum maneuvering speed for Concorde
It was expressed in the flight manual as "Lowest Authorised" speed, Vla, and didn't depend on weight. 0-15,000' Vla=V2 or Vref as appropriate, 15,000'-41,000' Vla=250kias, 41,000'-60,000' Vla=300kias Also what was the typical climb speed I'm guessing you mean rate of climb rather than IAS? - At lift-off? From memory Vr was around 200kts, V2 around 220kts and if restricted to 250kts (way below min drag) you'd get pretty poor rates of climb - about 1000fpm if you were lucky and IIRC - you'd quickly want to lower the nose, just barely climb and get her up to 400kts when she'd really fly... - Once 240 kts is achieved? see above - but once you got her up to min drag (about 400kts at MTOW) things went better - about 4000fpm without reheat - At minimum maneuvering speed at typical takeoff weight? At V2 she staggered up due the the drag of the slender delta wing at low IAS - but climb performance on three engines (in contingency reheat) at V2/MTOW was better than a conventional subsonic jet on three / MTOW / V2 due to conservative certification requirements of the TSS - At MTOGW? Does the above answer your Q? Happy to add more if you need... Edited to add, most transatlantic takeoffs were at MTOW - around 185 tonnes - and due to the slender delta aerodynamics, weight didn't affect performance as much as a conventional wing anyway because induced drag was the bigger player at slow speeds - and I've just completely exhausted my very limited grasp of aerodynamic engineering!! |
|
| NW1 24th Jun 2011, 00:15 permalink Post: 1399 |
<<
I'm guessing you mean rate of climb rather than IAS?
>>
<<No, I meant the airspeed you'd be flying at while climbing (post takeoff)>> OK, then the answer to your Q's: Also what was the typical climb speed - At lift-off? About 200kts - Once 240 kts is achieved? 240kts - At minimum maneuvering speed at typical takeoff weight? Vla after takeoff was V2 until 15,000'. I.E. about 220kts - At MTOGW? V2 didn't vary much by weight Out of JFK we flew at Vmo once further than 12nms from the coast. Vmo=400kts IAS at low level. Out of LHR overland the IAS restriction was 300kts until past the speed limit point early in the SID - much less draggy than 250kts and hence better climb rates. But you'd quickly be released to get to 400kts (barder's pole) where it was designed to be flown. <<Why higher speed? That have to do with shockwaves and the resulting pressure distribution differences?>> The flight envelope was bigger and more complex than subsonic types: it was developed in flight test and probably had many considerations involved. I think someone posted it earlier in this thread in graphical form (from the flight manual) if you want to see it. In practice, you had to be aware of three basic parameters - IAS, Mach and CG position (the CG "corridor"). Once understood, it wasn't that difficult to keep up with it...and the IAS and Machmeters had barber's poles handily programmed to show the limiting values (including, cleverly, max temp on the nose Tmo=127 degrees celcius). Regarding climb rates - best ROC was at 400kts (MTOW) or 380kts (MLW). As speed reduced below that, drag increased and ROC reduced. At MTOW and 400kts you'd get about 4000fpm max dry power. At 250kts it was all noise and very few feet per minute - after noise abate procedures you had to lower the nose, just barely climb, and get IAS up toward min drag as soon as possible. With an engine failed go for 300kts minimum - Vmo as soon as you can. <<shockwaves and the resulting pressure distribution differences>> You had to avoid the "transonic" region due to these effects: maximum subsonic cruise was 0.95M due to the auto-stabilised flying controls become over-active as shockwaves started to "dance" around the airframe (usually asymmetrically). This calmed down by about 1.3M in the acceleration (when the intake ramps started to do their thing). To accelerate to 2.0M you needed reheat until 1.7M so you didn't hang around between 0.95M and 1.7M. FL260 was best for subsonic cruise because at that level 400kts IAS = 0.95M... Last edited by NW1; 24th Jun 2011 at 09:09 . |
|
| NWSRG 24th Aug 2011, 22:29 permalink Post: 1449 |
Hi all,
I'm a humble PPLer, and have been (speed) reading the last 70 pages...a fabulous story, of engineering and operational excellence, which I will read again at length when time permits. I have only seen Concorde in the flesh on a few occasions...generally while passing through LHR. But in October 2003, I had the privilege to watch the final Concorde take-off from Belfast at close quarters. I was standing at the GA Apron at Aldergrove as she took off on runway 07, actually getting off the ground barely 150yds from where we stood. I was among a crowd of local aviation buffs, all of whom had managed to cajole, bluff, and persuade their way into the GA area to see her go. And it was awesome. The afterburner roar rippled through my body, the noise was deafening, the reheat flame was mesmerising, but above all she was a beautiful creation. Art comes in many forms, and to my mind, Concorde was up there with the works of all the great masters. Last edited by NWSRG; 24th Aug 2011 at 22:41 . |
|
| M2dude 9th Sep 2011, 22:04 permalink Post: 1454 |
Concorde, the love of our lives
Nice one guys. I honestly is a pleasure to share my experiences (and feeble knowledge) of the aeroplane with so many wonderful people here, be they aviation professionals, former supersonic SLF or just inerested enthusiasts.
Unless of course it's from me. 'What pert of the aeroplane was manufactured by a division of General Motors in the USA?'. Oh Shaggy, can't claim credit for the 3/4 flag, or reheat capability indicator', but I remember having a right chuckle when we fitted this highly comples piece of precision engineering ( ) in the early eighties. I thought it was some kind of belated April Fools's joke. |
|
| M2dude 16th Sep 2011, 14:45 permalink Post: 1456 |
Hi Philflies
The 3/4 tab mounted by the #4 EGT indicator had in fact nothing to do with the EGT indication at all. It wasa reheat capability indicator and was set by the crew prior to take off. Set to 4 meant that all 4 reheats were required for take-off (and if one failed it then meant that the take-off should be rejected). Set to 3 it meant that a single reheat failure could be tolerated and the take-off could continue. I hope this helps Philflies. Oh and check out the website BRINGING CONCORDE G-BOAC BACK TO LIFE - Welcome The fat lady aint singing yet. Also check out the Concorde comes alive thread here too. Last edited by M2dude; 16th Sep 2011 at 17:21 . |
|
| ChristiaanJ 17th Sep 2011, 17:42 permalink Post: 1459 |
Philflies
,
M2dude is right, and IIRC there is already a description of this much earlier in the thread. The background of the 3/4 tab is, that ... on most aircraft you can - at the start of the take-off - 'run up the engines against the brakes', check they all deliver full power, and release the brakes only then. ... on Concorde it was impossible to 'hold the aircraft on the brakes' while going to full t/o thrust including the reheat (not so much because of insufficient brakes as insufficient 'footprint' of the wheels, IMHO). ... so, full t/o thrust (including reheat) didn't occur until the aircraft had already started the take-off roll. If, at that point, one of the four reheats didn't light (which did happen at times), you did not have an awful lot of time to decide on whether you could continue 'on three' or had to reject the take-off. Rather than having to check your pre-flight take-off calculations in a sheaf of papers or rely on your memory of the briefing, that little Heath Robinson "3/4 tab" gadget told you instantly whether to RTO NOW, or whether you could continue the take-off. Sorry to repeat an old story, but Philflies asked the question, and not everybody has read the entire thread..... |
|
| Brit312 17th Sep 2011, 21:13 permalink Post: 1461 |
Christiaan,
Just to add a bit more to your explanation is that The reheat decision speed on every take off was 100kts If the little tag showed 4 then you needed 4 reheats at 100kts to continue the take-off If the little tag showed 3 then at 100 kts you could continue the take-off even if one reheat had failed If above 100kts you could always continue with the take off, even if a reheat had failed [ always required 3 reheats working] So if it was a "3 reheat day" and a reheat failed prior to 100kts then a further reheat failure between 100kts and V1 would require the take off to be rejected. Hope that makes sense?? |
|
| M2dude 10th Oct 2011, 17:26 permalink Post: 1466 |
Humble aplogies to all, of course its mounted by the #1 EGT gauge (ANOTHER senior moment on my part). The RCICS, Reheat Capabilty Indication Control Sub-system (Oh OK then, I just made that up
) was fiitted in the very early days of Concorde operation. It looked at first sight a belated April Folls joke, but as was said (much) earlier prior to this
amazing
piece of technology the #3 INS CDU waypoint thumbwheel was used as the reheat GO/NO-GO indicator.
And NB2A, no apologies needed from you sir. A great link to the video starring Dave Rowland and Roger Bricknell (sorry Les). Best regards to all Dude |
|
| Mike-Bracknell 6th Dec 2011, 12:39 permalink Post: 1511 |
Anyone got \xa31.25m under the sofa?
Concorde Rolls-Royce Olympus 593-610 Turbojet Engine with Reheat | eBay |
|
| 911slf 6th Dec 2011, 13:28 permalink Post: 1513 |
ambidextrous
Thanks ChristiaanJ#1508 and CliveL#1509. That's what I thought. It was the quote in #1504 that implied left and right handed engines with all the stock problems that would cause.
At risk of thread drift I think that anything with propellers would be likely to suffer much more from asymmetry, but I think folk just put up with it - except in the few cases where there are contrarotating propellers. Am I right in thinking that once the necessary minimum rpm was achieved, reheat was selected on all four engines, but that some (automatic?) control restricted the power to engine#4 until 60kt was achieved? |
|
| booforty 24th Jul 2012, 15:11 permalink Post: 1659 |
Wow, what an amazing thread which I have only recently found.
Congratulations to all for a fascinating read Although I never got the opportunity to fly on Concorde, I will never forget seeing her fly some charters from Filton in the late 1990's. On one occasion I was stood at the wire fence at the end of runway 27 and watched Concorde taxi directly towards me, do a 360 degree turn and line up for takeoff. Concorde was only around 100ft-150ft away from me when the throttles were opened.  The noise, power and heat I felt from those Olympus engines was phenomenal. She looked stunning as she rotated amongst the heat haze and the slender delta climbed steeply away towards the Bristol Channel. What an aircraft! My grandfather worked on the Olympus 593 engines at Rolls Royce in Filton, so I will always hold Concorde close to my heart. I have been onboard Foxy at Filton when she was open to the public and I have visited 002 at Yeovilton and 101 at Duxford. I live quite close to Delta Golf at Brooklands and have been onboard her about 4 times now (including a sit in the cockpit) and recently flew the fantastic Concorde simulator with Captain John Eames and First Officer Ian Smith which is a day I will treasure. Opening up the throttles for take-off on 31L at JFK and tackling the checkerboard landing at Kai Tak were experiences I will never forget. Keep up the great postings everyone! |
|
| stilton 2nd Mar 2013, 20:32 permalink Post: 1704 |
Departure without noise or boom considerations
Just for theories sake, if there were no noise, speed or boom considerations what would be the optimum profile for Concorde to fly after departure ?
In normal service I understand it had to comply with normal noise abatement departures, speed limits and remain subsonic until far enough from land to prevent the boom being a consideration. But what if it could accelerate immediately, with no restrictions of any kind ? I imagine you would stay in afterburner, accelerate to VMO and on to M2 in the climb ? or would airframe heating at lower altitudes prevent this ? Lastly, was this ever done in testing, or for example leaving Barbados ? |
|
| NHerby 8th May 2013, 16:05 permalink Post: 1714 |
For the french speaking (or reading) people here, I just found a mine of very interesting informations about Concorde on this website:
Accueil This site has a database of thousand of concorde flights with the following datas: Date and time of the flight, airframe used, technical and commercial crews, guests, departure/arrival airports and flight type (regular, charter world tour...). On top of that, many infos and stories around Concorde can also be found there. I can't resist to translate one of those stories (I'm far from being a native english speaker or a professional translator; so forgive me for the misspellings and other translation mistakes). It is a report about one of the biggest incident that happened to the prototype 001 during the flight tests: Shock of shockwaves We were flying with Concorde at Mach 2 since 3 month already on both side of the Channel. The prototype 001 did outstrip 002 which was supposed to be the first to reach Mach 2. Unfortunately, a technical issue delayed 002 and Brian Trubshaw fairly let Andr\xe9 Turcat be the first to reach Mach 2 with the 001 which was ready to go. The flight tests were progressing fast and we were discovering a part of the atmosphere that military aircrafts hardly reached before. With Concorde, we were able to stay there for hours although limited by the huge fuel consumption of the prototypes. The Olympus engines did not reached their nominal performance yet and, most of the time, we had to turn on the reheat in supersonic cruise to maintain Mach 2. The reheat is what we call afterburner on military aircrafts. Fuel is injected between the last compressor stage of the low pressure turbine and the first exhaust nozzle. This increases the thrust for the whole engine and its nozzle. The 4 reheats, one for each engine, are controlled by the piano switches behind the thrust leavers on the center pedestal between the two pilots. Air was fed into the engines through 4 air intakes, one for each engine, attached 2 by 2 to the 2 engine nacelle, one under each wing. The advantage in terms of drag reduction was obvious. However, tests in wind tunnel showed that, at supersonic speed, if a problem happens on one engine, there was a great chance for the adjacent engine to be affected as well by the shockwave interference from one air intake to the other despite the presence the dividing wall between the two intakes. So we knew that an engine failure at mach 2 would result in the loss of 2 engines on the same side, resulting in a lateral movement leading to a strong sideslip that would likely impact the 2 remaining engines and transform the aircraft into the fastest glider in the world. This is why an automatic anti sideslip device was developed and installed on the aircrafts. The air intakes are very sophisticated. At mach 2, it creates a system of shockwaves that slows down the air from 600 m/sec in front of the aircraft to 200 m/sec in front of the engine while maintaining a very good thermodynamic performance. In supersonic cruise, the engines, operating at full capacity all the time, were sensitive to any perturbation and reacted violently with engine surge: the engine refusing the incoming air. Stopping suddenly a flow of almost 200kg of air per second traveling at 600m/sec causes a few problems. As a result, a spill door was installed under the air intake and automatically opened in such event. To control the system of shockwaves and obtain an efficiency of 0,96 in compression in the air intake, 2 articulated ramps, controlled by hydraulic jacks, are installed on the top of the air intakes in front of the engines. Each ramp is roughly the size of a big dining room table, and the 2 ramps, mechanically synchronized, move up or down following the instruction of an highly sophisticated computer that adapts the ramp position according to the mach number, the engine rating and other parameters such as skidding. At that time, it was the less known part of the aircraft, almost only designed through calculation since no simulator, no wind tunnel, did allow a full scale test of the system. The control of the system was analog and very complex but it was not easy to tune and we were moving ahead with a lot of caution in our test at mach 2. On the 26th of January 1971, we were doing a nearly routine flight to measure the effect of a new engine setting supposed to enhance the engine efficiency at mach 2. It was a small increase of the rotation speed of the low pressure turbine increasing the air flow and, as a result, the thrust. The flight test crews now regularly alternate their participation and their position in the cockpit for the pilots. Today, Gilbert Defer is on the left side, myself on the right side, Michel R\xe9tif is the flight engineer, Claude Durand is the main flight engineer and Jean Conche is the engine flight engineer. With them is an official representative of the flight test centre, Hubert Guyonnet, seated in the cockpit's jump seat, he is in charge of radio testing. We took off from Toulouse, accelerated to supersonic speed over the Atlantic near Arcachon continuing up to the north west of Ireland. Two reheats, the 1 and the 3, are left on because the air temperature does not allow to maintain mach 2 without them. Everything goes fine. During the previous flight, the crew experienced some strong turbulence, quite rare in the stratosphere and warned us about this. No problem was found on the aircraft. We are on our way back to Toulouse off the coast of Ireland. Our program includes subsonic tests and we have to decelerate. Gilbert is piloting the aircraft. Michel and the engineers notify us that everything is normal and ready for the deceleration and the descent. We are at FL500 at mach 2 with an IAS of 530 kt, the maximum dynamic pressure in normal use. On Concorde, the right hand seat is the place offering the less possibility to operate the systems. But here, we get busy by helping the others to follow the program and the checklists and by manipulating the secondary commands such as the landing gear, the droop nose, the radio navigation, comms, and some essential engine settings apart from the thrust leavers such as the reheat switches. The normal procedure consists in stopping the reheat before lowering the throttle. Gilbert asks me to do it. After, he will slowly reduce the throttle to avoid temporary heckler. Note that he did advise us during the training on the air intake to avoid to move the thrust leaver in case of engine surge. As a safety measure, I shut down the reheat one by one, checking that everything goes fine for each one. Thus I switch off the reheat 1 with the light shock marking the thrust reduction. Then the 3\x85 Instantly, we are thrown in a crazy situation. Deafening noise like a canon firing 300 times a minute next to us. Terrible shake. The cockpit, that looked like a submarine with the metallic and totally opaque visor obviously in the upper position, is shaken at a frequency of 5 oscillation a second and a crazy amplitude of about 4 to 5 G. To the point that we cannot see anymore, our eyes not being able to follow the movements. Gilbert has a test pilot reaction, we have to get out of the maximum kinetic energy zone as fast as possible and to reduce speed immediately. He then moves the throttle to idle without any useless care. During that time, I try, we all try to answer the question: what is going on? What is the cause of this and what can we do to stop it? Suspecting an issue with the engines, I try to read the indicators on the centre control panel through the mist of my disturbed vision and in the middle of a rain of electric indicators falling from the roof. We cannot speak to each other through the intercom. I vaguely see that the engines 3 and 4 seem to run slower than the 2 others, especially the 4. We have to do something. Gilbert is piloting the plane and is already busy. I have a stupid reaction dictated by the idea that I have to do something to stop that, while I can only reach a few commands that may be linked to the problem. I first try to increase the thrust on number 4 engine. No effect so I reduce frankly and definitively. I desperately look for something to do from my right hand seat with a terrible feeling of being helpless and useless. Then everything stops as suddenly as it started. How long did it last, 30 seconds, one minute? By looking at the flight data records afterward, we saw that it only last\x85 12 seconds! However, I have the feeling that I had time to think about tons of things, to do a lot of reasoning, assumption and to have searched and searched and searched\x85! It looked like my brain suddenly switched to a fastest mod of thinking. But, above all, it's the feeling of failure, the fact that I was not able to do anything and that I did not understand anything that remains stuck in my mind forever. To comfort me, I have to say that nobody among the crew did understand anything either and was able to do anything, apart from Gilbert. The aircraft slows down and the engine 3 that seemed to have shut down restart thanks to the auto ignition system. But the 4 is off indeed. Michel makes a check of his instruments. He also notes that the engine 4 has shut down but the 4 air intakes work normally, which makes us feel better. After discussing together, we start to think that we probably faced some stratospheric turbulence of very high intensity, our experience in this altitude range being quite limited at that time. But nobody really believes in this explanation. Finally, at subsonic speed, mach 0.9, with all instruments looking normal, we try to restart engine 4 since we still have a long way to go to fly back to Toulouse. Michel launches the process to restart the engine. It restarts, remains at a medium rotation speed and shuts down after 20 seconds, leaving us puzzled and a bit worried despite the fact that the instrument indicators are normal. Gilbert then decide to give up and won't try to restart this engine anymore and Claude leaves his engineer station to have a look in a device installed on the prototype to inspect the landing gear and the engines when needed: an hypo-scope, a kind of periscope going out through the floor and not through the roof. After a few seconds, we can hear him on the intercom: "Shit! (stuttering) we have lost the intake number 4." He then describes a wide opening in the air intake, the ramp seems to be missing and he can see some structural damages on the nacelle. Gilbert reacts rapidly by further reducing the speed to limit even more the dynamic pressure. But we don't know exactly the extent of the damage. Are the wing and the control surfaces damaged? What about engine 3? We decide to fly back at a speed of 250 kts at a lower altitude and to divert toward Fairford where our british colleagues and the 002 are based. I inform everybody about the problem on the radio and tell them our intentions. However, I add that if no other problems occur, we will try to reach Toulouse since we still have enough fuel.  All the possible diversion airport on the way have been informed by the flight test centre who follows us on their radar. At low speed, knowing what happened to us and having nothing else to do but to wait for us, time passes slowly, very slowly and we don't talk much, each one of us thinking and trying to understand what happened. However, we keep watching closely after engine 3. Personally, I remember the funny story of the poor guy who sees his house collapse when he flushes his toilets. I feel in the same situation. Gilbert makes a precautionary landing since we don't rely much on engine 3 anymore. But everything goes fine. At the parking, there is a lot of people waiting for us and, as soon as the engines stop, we can see a big rush toward the nacelles of the right hand side engines. Gilbert and myself are the first to get off the plane and we are welcomed down the stairs by Andr\xe9 Turcat and Jean Franchi who came out from the crowd watching at the right hand side nacelle. They both behave the same way, with a slow pace attitude, the same look, a mix of disbelief and frustration. Andr\xe9 is the first to speak: "I can't believe we were not on this flight, really unlucky\x85". Yes, this flight was supposed to be just a routine flight\x85! The condition of the nacelle is impressive. We come closer and everybody move aside for us with a look of disbelief and respect as if we were hell survivors. The ramps of the intake 4, those 2 "dining tables", have completely disappeared leaving a hole where we can see the hydraulic jacks and the stub rod where the ramps were attached. Indeed, only the ramps were missing, apparently ejected forward which was unbelievable knowing how fast we were flying. The ramp slipped under the nacelle causing some damages on it and on the hood of one of the elevon's servo control. Fortunately, the control did not suffer any damage. What is left of the rear ramp seems to be blocked down inside the intake in front of the engine and we can see behind it the first blades of the compressor, or what is left of it, not much. The engine swallowed a huge amount of metal but no vital parts of the aircraft has been damaged, no hydraulic leaks, no fuel leaks. I remembered at that time the stories of some B58 Hustler accident where the loss of an engine at mach 2 almost certainly ended with the complete loss of the aircraft. Our Concorde has only been shaken. This incident strengthened the trust I had in this plane. And I was not unhappy to have experienced this ordeal, especially when I saw the frustration on the face of Andr\xe9 Turcat and Jean Franchi. But we had to understand what happened and how; and also why the ramp's fixing broke. It didn't take much time to get the answers. I unintentionally triggered the problem when shutting down the reheat of engine 3. The sudden stop of the fuel flow did of course stop the combustion and the back pressure behind the low pressure turbine. But, probably because of the modification made on the engine before the flight, the stop of the reheat has not been followed by the normal closing movement of the primary nozzle to compensate the pressure drop. So the low pressure turbine ran out of control, dragging down the low pressure compressor which reacts by surging. Despite the opening of the spill door, the engine surge led to a sudden movement of the shockwaves in the air intake creating a surge in the intake itself. A similar surge happened in the adjacent intake 4 followed by a surge of the corresponding engine. This caused an excessive pressure above the ramps and the fixings of the intake 4 did not hold. Since it was the first time we experienced a surge in the air intake, we had little knowledge of the stress it would create on the ramps. This led to miscalculation of the strength of the ramps's frames and they did brake. Another mistake: instead of installing the motion detectors on the ramp itself, to make the production easier, they have been placed on the arms of the hydraulic jacks. This is why Michel R\xe9tif thought that the position of the ramps were correct. The hydraulic jacks did not suffer any damage and were still working normally even if the ramps were missing. All the data recorded during this event helped us in redesigning the air intakes and the flight test program resumed three month later. After this, we deliberately created dozen and dozen of air intake surge to fine tune the way to regulate them with digital calculator this time. From now on, even if it was still very impressive, it was safe and their intensity was not comparable with what we experienced with the missing ramps. However, a french president may kept a lasting memory of this, much later, during a flight back from Saudi Arabia. This time, I was on the left side, Gilbert on the right and Michel was still in the third seat\x85 But that's another story. For me, the lasting impression of failing and being helpless during this incident made me wonder what a commercial pilot would have done in this situation. This plane was designed to be handled by standard commercial pilots and not only by the flight test pilots. At that time, I was interested in taking in charge the management of a training center for the pilots of the future Airbus's clients. This event pushed me that way and I made it clear that I wanted to add the flight training on Concorde in this project. This has been agreed and I did it. And the Concorde training program now covers the air intake surges and how to deal with them. Jean PINET Former test pilot Member and former president of the Air and Space Academy Last edited by NHerby; 9th May 2013 at 17:24 . |
|
| peter kent 10th Oct 2013, 01:12 permalink Post: 1715 |
SNECMA reheat
I've always seen it mentioned as SNECMA reheat until the other day..
The ORIGINAL design for the reheat was done by SNECMA, but due to them getting into all sorts of trouble with the fuel injection system and flame stabilisation, Rolls-Royce baled them out, and it became a Rolls-Royce/ SNECMA design. ref heritageconcorde.com Does anyone have any details on the 'joint' development alluded to above? Thanks. Last edited by peter kent; 10th Oct 2013 at 01:14 . |
|
| CliveL 14th Oct 2013, 15:06 permalink Post: 1722 |
Quote:
The problem apparently was that flame stabilisation operating in "contingency" rating was sensitive to the point that every engine had to be checked, so there was a lot of engine plus reheat testing, most of which was done at Patchway. The solution was addition of some form of 'spike' at various points on the spray bar (my informant wasn't very specific).  The development process was, as you suggested, a joint activity. |
|
| Chris Scott 14th Oct 2013, 23:34 permalink Post: 1723 |
PJ2 reminds us of the way the airframes of other a/c queuing for take-off would resonate as Concorde departed. Whether it was the responsibility of SNECMA or Rolls Royce (or even Bristol Siddeley?
), the reheat was certain to set off a random sprinkling of car alarms on the airfield, which used to make my day when lucky enough to be returning to the car park around midday at LHR.
Even without reheat, however, the engine had a distinctly military sound - quite unlike other civil turbojets I can remember. The sound of it in the descent at about 4000ft over my house at 5 pm daily was unmistakeable. On the approach, if you weren't expecting it, it could be quite unnerving. One night in the late 1970s, during a long car journey, I stopped for a call of nature at a well-known public house near Hatton Cross (about a mile from touchdown on LHR 27L). It was pitch dark, and I decided that the hedge at the side of the car park would be a suitable venue. Never having heard Concorde on the approach before, I became increasingly nervous as the sound, initially unidentified, got progressively louder. And then the landing lights were switched on... |
|
| tdracer 18th Oct 2013, 05:16 permalink Post: 1729 |
Many years ago, I'd flown into Heathrow (after a horrible flight - a 6+ hour delay after pushback at JFK due to weather). I was in line to pick up my rental car when suddenly there was this horrendous noise - a "can't hear yourself think" noise. The strange part was no one else even seemed to notice
. I turned and looked outside, and there was a Concord on it's takeoff run in full afterburner
. It was the only time I was able to see a Concord moving under it's own power
.
No idea what tail number it is, but there is a Concord at the Seattle Museum of Flight. First time I walked inside I was stunned at how small it was. The windows are tiny, and the seats would not appear out-of-place in economy on todays international flights. The cockpit is blocked off with clear Plexiglas, but looked decidedly primitive by todays (or even 1980's) standards. No doubt the cabin service was top notch, and there is definitely a luxury in making a six hour flight in two hours. But it's also not hard to understand why it wasn't a commercial success . But I sure wish I'd had the opportunity to fly on one |


Game
New R
Pause P
Beginner
Intermediate
Expert
Custom Game
Pop Out
Exit
Settings
System Info
Reset Statistics
Change Color
Toggle Solitaire
About


National Outdoor 10,000m Champions for Croatia
Men (26 runnings) 15 Apr 2017 Zagreb 30:56.2 Antun-Rudolf Pavelic 09 Apr 2016 Zagreb 31:13.7 Goran Grdenic-5 25 Apr 2015 Bozjakovina 29:31.0 Dino Bosnjak 05 Apr 2014 Sinj 31:37.40 Goran Grdenic-4 06 Apr 2013 Sinj 32:22.04 Goran Grdenic-3 14 Apr 2012 Zagreb 31:59.72 Goran Grdenic-2 26 Mar 2011 Sinj 33:28.02 Goran Grdenic 17 Apr 2010 Zagreb 31:50.5 Slavko Petrovic-7 03 May 2009 Zagreb 31:32.7 Slavko Petrovic-6 26 Apr 2008 Zagreb 31:53.5 Sinisa Goricanec 28 Apr 2007 Zagreb 31:49.95 Slavko Petrovic-5 01 Apr 2006 Zagreb 29:23.3 Slavko Petrovic-4 09 Apr 2005 Split 31:48.1 Slavko Petrovic-3 02 May 2004 Zagreb 30:49.4 Slavko Petrovic-2 04 May 2003 Osijek 31:32.45 Drazen Dinjar 28 Apr 2002 Cakovec 31:07.6 Slavko Petrovic 28 Apr 2001 Split 31:16.5 Perica Brkic 13 May 2000 Karlovac 17 Apr 1999 Makarska 31:07.0 Robert Juricic 04 Apr 1998 Karlovac 31:07.6 Drago Paripovic-2 05 Apr 1997 Zagreb Drago Paripovic 1996 Nikola Samardžija 1995 Romeo Živko 1994 30:54.4 Mladen Krsek-3 1993 31:28.65 Mladen Krsek-2 1992 Mladen Krsek Non-champion winners 2013 31:37.07 Jure Josipovic (CRO) (junior, not eligible for senior championships) Women (23 runnings) 15 Apr 2017 Zagreb 35:10.3 Kristina Hendel 09 Apr 2016 Zagreb 35:41.2 Matea Parlov 25 Apr 2015 Bozjakovina 37:05.0 Nikolina Stepan 05 Apr 2014 Sinj 33:17.91 Lisa-Christina Stublic-3 06 Apr 2013 Sinj 36:08.27 Barbara Belusic-3 14 Apr 2012 Zagreb 34:29.11 Matea Matosevic-2 26 Mar 2011 Sinj 35:44.99 Matea Matosevic 17 Apr 2010 Zagreb 37:32.1 Barbara Belusic-2 03 May 2009 Zagreb 35:25.7 Lisa-Christina Stublic-2 26 Apr 2008 Zagreb 35:40.5 Lisa-Christina Stublic 28 Apr 2007 Zagreb 37:40.67 Lidija Rajcic-3 01 Apr 2006 Zagreb 37:30.0 Barbara Belusic 09 Apr 2005 Split 39:39.9 Lidija Rajcic-2 02 May 2004 Zagreb 36:29.6 Jannette Vrga 04 May 2003 Osijek 39:03.06 Veronika Jurisic 28 Apr 2002 Cakovec 38:06.2 Lidija Rajcic 28 Apr 2001 Split 38:53.1 Ivancica Cvitkovic 13 May 2000 Karlovac Tijana Pavicic 17 Apr 1999 Makarska 38:47.5 Marijana Stopic-2 04 Apr 1998 Karlovac 38:36.1 Marijana Stopic 05 Apr 1997 Zagreb 37:18.5 Ivancica Cvitkovic .... 1994 39:41.0 Slavica Brcic 04 Jul 1993 Split 37:59.92 Ljubica Bekavac Non-champion winners 2015 37:00.8 Kristina Bozic (CRO) (junior, not eligible for senior championships) 1997 37:15.0 Marijana Stopic (CRO) (junior, not eligible for senior championships)
Most Titles
Men
(1992/date)
7
Slavko Petrovic
2002,2004-07,2009-10
Women
(1992/date)
3
Lidija Rajcic
2002,2005,2007
Barbara Belusic
2006,2010,2013
Lisa-Christina Stublic
2008-09,2014
Note:
For 1918 to 1941, Croatia was part of Yugoslavia
For 1941 to 1945, Croatia was a puppet state under German occupation
For 1945 to 1992, Croatia was part of Yugoslavia
For 1992 to date, Croatia has been a separate state
Click here for the list of champions for Yugoslavia.
Last Updated on
16 Apr 2017
Contributors: Klaas Loonstra (30), www.gbrathletics.com, Juraj Gasparovic (50)


Just bookmark or share the current page, or copy and paste .
Click here to download this fractal as a picture on your computer.
Use this HTML code to embed an interactive browser of this fractal in your webpage.
An open source javascript program that lets you explore and share famous fractal sets with the mouse and scrollwheel.


pear channel-discover server->name ?>
Listing available packages:
pear remote-list -c server->alias ?>
Installing a package:
pear install server->alias ?>/package_name
Installing a specific version/stability:
pear install server->alias ?>/package_name-1.0.0
pear install server->alias ?>/package_name-beta
Receiving updates via a feed:
server->url ?>/feed.xml
packages as $package):
$deps = array();
if (isset($package['deps']['required']['package'])) {
$deps = $package['deps']['required']['package'];
if (isset($deps['name'])) {
$deps = array($deps);
}
}
$grps = array();
if (isset($package['deps']['group'])) {
$grps = $package['deps']['group'];
}
?>
| Install command | install server->alias ?>/ |
|---|---|
| Install groups: | |
| License | |
| Dependencies | |
| Maintainers | |
| Releases |
The server->name ?> PEAR Channel Server is proudly powered by Pirum


FROM THE DESK OF MR ALHJI IMAM. BANK OF AFRICA [BOA] OUAGADOUGOU, BURKINA FASO<EMAIL_ADDRESS>Dear friend, TOP SECRET Compliments, i am MR ALHJI IMAM. I am the manager of bill and exchange at the foreign remittance department of BANK OF AFRICA. I am writing to seek your cooperation over this business deal. In my department, I discovered an abandoned sum of$30million USD(THIRTY million US dollars)only , in an account that belongs to one of our foreign customers who died along with his entire family in a plane crash that took place in Kenya, East Africa, the Late DR. GEORGE BRUMLEY, a citizen of Atlanta, United States of America but naturalised in Burkina Faso, West Africa and contractor with ECOWAS,(ECONOMIC COMMUNITY OF WEST AFRICAN STATES) . Since we got information about his death, we have been expecting his next of kin to come over and claim his money because it cannot be released unless somebody applies for it as next of kin or relation to the deceased as indicated in our banking guidelines but unfortunately , all his supposed next of kin or relation died alongside with him at the plane crash leaving nobody behind for the claim. It is therefore upon this discovery that I now decided to make this business proposal to you and release the money to you via your foreign bank account as the next of kin or relation to the deceased for safety and subsequent disbursement since nobody is coming for it and this money Could go into the Bank treasury as unclaimed Bill. The Banking law and guideline here stipulates that if such money Remained unclaimed after four years, the money will be transferred into the Bank treasury as unclaimed fund. The request for your assistance and maximum co-operation as a foreign citizen to stand as the next of kin in this business is occasioned by the fact that the deceased customer was a foreigner and a Burkinabe cannot stand as next of kin to a foreigner. 40 % of this money will be for you as my foreign partner, in respect to the provision of a foreign account. 10 %will be set aside for expenses in cured during the business and 50 % would be for me. There after I will come over to your country for disbursement according to the percentages indicated. Therefore to enable the immediate transfer of this fund to you as arranged, you must apply first to the bank as the relation or next of kin to the deceased, indicating your claims and wherein the money will be remitted . Upon receipt of your reply, I will send to you by fax or email the text of application which you will fill and submit to the office of the foreign remittance director of the bank of Africa. I will not fail to bring to your notice that this transaction is strictly confidential and i will use my position in this Bank to effect a hitch free transfer of the fund. You should contact me immediately as soon as you receive this letter. Trusting to hear from you immediately. Please , visit the website below for more information�s about the Plane Crash and the tragic death of the deceased and his entire family, Late DR. GEORGE BRUMLEY. http://www.cnn.com/2003/WORLD/africa/07/20/kenya.crash/index.html Your�s faithfully, MR ALHJI IMAM. NB :please reply me back by my this e-mail address<EMAIL_ADDRESS>_________________________________________________________________ Ten : Messenger en illimité sur votre mobile ! http://mobile.live.fr/messenger/ten/


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/lost.20in.20translation.html ---
What is https://github.com/leanprover/vscode-lean/commit/7d42d7e25091a4c86811cdf40565c6faec4c1ac0#diff-7c2385f0b8db521fe81e3d20489e5f12L939?! How do we get this cross now?
@Edward Ayers Why did you remove it?
it's \x
now
No, it's not
That's a different cross
That was a key component of my Amsterdam talk!
it's the prod
cross
which cross are you talking about?
I assigned the cross Ed removed to (a fixed version of) prod.map
, without any conflict with prod
\X
was ⨯ (U+2A2F)
, and now \x
is × (U+00D7)
it appears to be gone in the translations file now... it's indistinguishable from \times
on my monitor
why are you using notations like this?
⨯ (U+2A2F)
is not found in mathlib
That's the point: it's indistinguishable (as it should be) but Lean distinguishes them (because it can't seem to cope with using the same symbol)
I would suggest reinstating it as \cross
this is underhanded lean
most of ed's update is removing a bunch of random unused unicode from the translations file, particularly the weird one-character ones... this looks like a good candidate for removal
How can I get a reasonable symbol for prod.map
then?
<×>
?
reasonable?
I'm not a fan of this crazy unicode overloading
it makes it very difficult to read and know what's what
This is only a workaround until we get the Parser.
Hi I think I removed it because I didn't realise that U+2A2F
was different to U+00D7
, I thought it was a duplicate to \x
. My policy with cleaning up the translations file was to only remove things which didn't break users' established experience so this was a mistake.
I vote for getting it back
Quick fix -- add this to your settings file:
"lean.input.customTranslations": { "X" : "\u2A2F" }
In general I agree with Mario that using different unicodes which look similar is a bad idea.
· • . ․ ‧ ⋅ ⬝ ∙ ● ⚫ ⬤ 🌑
⁃ ∎ ╸ ╹ ╺ ╻ ━ ■ ▪ ▬ ▮ ◼ ◾ ⬛ ⯀ 🔲
⋄ ◇ ◊ ♢ ✧ ⬦ ⬨ ⬫
‣ ▶ ▸ ▸ ⯈ 🢒
I'm pretty sure we can put that third line to good use
I notice that nobody complained about that cross during my Amsterdam talk
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


ADDAMS FAMILY VALUES A film review by Scott Renshaw Copyright 1993 Scott Renshaw
Starring: Anjelica Huston, Raul Julia, Christopher Lloyd, Joan Cusack, Christina Ricci, Jimmy Workman. Screenplay: Paul Rudnick. Director: Barry Sonnenfeld.
There were plenty of things surrounding the first ADDAMS FAMILY film that I hated more than the film itself: its undeserved status as blockbuster; the stupendously annoying theme song by Hammer; endless iterations of the word "ooky" in print. 1991's THE ADDAMS FAMILY was not a terrible film. It was high-spirited and gleefully performed. It simply exhausted its premise after about fifteen minutes. ADDAMS FAMILY VALUES is lots more of the same, which means that its premise is exhausted before it begins. Yet it's both worse and better than its predecessor, the latter the result of Christina Ricci's marvelously morbid Wednesday.
ADDAMS FAMILY VALUES opens with Morticia (Anjelica Huston) giving birth to the newest Addams: baby Pubert, a mustachioed dead ringer for papa Gomez (Raul Julia). This development does not sit at all well with Wednesday (Christina Ricci) and Pugsley (Jimmy Workman), who believe that the arrival of a new child means an old one has to go. To help manage the children, the Addams Family hires nanny Debbie Jellinsky (Joan Cusack), who turns out to be a homicidal golddigger out for Uncle Fester's (Christopher Lloyd) money. When the kids become suspicious, Debbie has them sent away to an upscale summer camp, leaving her to win over Fester and turn him agains the family.
Like many recent megasequels, ADDAMS FAMILY VALUES meticulously recreates the original, element for element. Carol Kane replaces Judy Malina as Granny, but the rest of the family cast is back in place. The script is once again largely a collection of black-humored sight gags and one-liners, and the theme song is again rap (a slightly altered version of Tag Team's excruciating hit "Whoomp! (There It Is)"). Even the title design is the same; "no surprises" is clearly the motto in place. The only real question is, is it funny, and as in the case of THE ADDAMS FAMILY the answer is "sometimes." There aren't as many laughs as there were in the original, but the laughs that do come are bigger. There's a great photo among the shots of Debbie's previous disguises, and the summer camp play is an anarchic riot. What almost never worked for me were the jokes in the "setup ... macabre retort" format. I kept wanting to yell out, "All right, they're weird, I get the point."
VALUES is broken into three almost entirely unrelated subplots (not that plot is an issue here). The Pubert plot is basically an excuse for a series of elaborate attempts by Wednesday and Pugsley to do away with the baby, and later for some "normal baby" jokes. The Debbie/Uncle Fester plot is extremely sluggish; Joan Cusack tries gamely, but doesn't quite click as the villainous black widow. The biggest surprise may be that Gomez and Morticia play a very small role in the proceedings. They get a nice, goofy dance sequence, but for most of the film Raul Julia only reacts, while Anjelica Huston spends her time hitting lighting marks so that her eyes and cheekbones appear translucent.
The upside of the senior Addams' diminished role is that the larger part is given to Christina Ricci. The summer camp subplot is far and away the best, and Ricci is a demonic delight. She has a lot to work with: a nerdy would-be boyfriend; the unbearably up-with-everything camp counselors; a debutante rival (Mercedes McNab, who played the Girl Scout in the first film). Ricci spits out her lines with comic venom, and provides most of VALUES' highlights.
The easiest conclusion to reach about ADDAMS FAMILY VALUES is that it will probably please those it was made to please, the same folks who brought over $100 million to THE ADDAMS FAMILY. If you didn't like the original formula, there's little to inspire a change of heart the second time around. Cheers to Christina Ricci, but I hope her contract doesn't demand another sequel. She deserves better.
On the Renshaw scale of 0 to 10 uses of "ooky": 5.
-- Scott Renshaw Stanford University Office of the General Counsel
.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


URBANIA A film review by Steve Rhodes Copyright 2000 Steve Rhodes RATING (0 TO ****): ***
Heard any good stories lately? Think any of them are true?
Jon Shear's edgy thriller, URBANIA, loves to mess with our minds, and it has lots of stories to tell us. Set on a night with a built-in extra hour due to the Daylight Savings Time shift, the episodic story has characters who relate incidents with varying degrees of believability. The reaction of the characters hearing the stories frequently reveals more about them than about the teller. Sometimes nervous laughter will be followed by painful introspection.
The disorienting film takes devious delight in layering various versions of the stories so that we feel like we're jurors looking into a courtroom lined with funhouse mirrors. What are we supposed to believe? One thing certain in this intriguing and distorting tale is that our eyes are glued to the screen. The wonderfully labyrinthic script by Daniel Reitz and Jon Shear is based on Reitz's play "Urban Folk Tales."
In a terrific, nuanced performance, Dan Futterman (THE BIRDCAGE) plays the story's protagonist, a gay man named Charlie, who is searching for his Mr. Right, Dean (Samuel Ball). When Charlie first laid eyes on Dean, a hunk with a heart and snake tattoo, Charlie decided that Dean was the man for him. Among the many questions is whether Dean, who appears to be a potentially violent homophobe, is what he seems to be.
Along the way this eventful night, Charlie encounters people gay and straight who have their stories to tell, most of which we see acted out. One story, about a woman with a wet poodle and a microwave, is thrown in as the story's only real joke. The script is especially good at not telegraphing which stories have legs and which end almost before they begin.  Even the most minor of these incidents are staged with such creepy class that they become quite intriguing.
It's the sort of film in which even innocuous phrases such as, "Don't forget to set your clock back," manage to have dark, ominous portents. The crisp editing by Randolph Bricker and Ed Marx keeps us on our toes as images sometimes flash by like a hit-and-run and others times linger to haunt us. And Shane Kelly's cinematography captures the mood almost too well. Nightmares after this film are definitely possible, not so much for what happens as for the movie's raw intensity.
"Just give me a second to figure out the ending," Charlie tells us at the opening of the movie. The biggest disappointment for me was that URBANIA doesn't really have an ending. Oh well, as they say, "the journey is the reward." And for adventuresome moviegoers, URBANIA takes us through a fascinating night when danger is definitely in the air.
URBANIA runs a little long at 1:43. It is rated R for strong violent and sexual content, language and some drug use. It would be acceptable for college students and older.
Email<EMAIL_ADDRESS>Web: http://www.InternetReviews.com
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Possible Exceptions
<- go to the main page
- Document format not supported (for example mkv) response 415 will be returned
- Service checks if the POST-request has the file part. The application accesses the file from the
files dictionary on the request object. If there is no file, the service returns 400.


This table provides metadata for the actual indicator available from {{ site.country.name }} statistics closest to the corresponding global SDG indicator. Please note that even when the global SDG indicator is fully available from {{ site.country.adjective }} statistics, this table should be consulted for information on national methodology and other {{ site.country.adjective }}-specific metadata information.
{% include components/metadata.html scope='national' %}{{ meta.graph_title }}
Sub-categories
Choose categories from the dropdowns below to see different breakdowns of the data. Some will not be available until a higher level is chosen.
Click on the legend to remove individual lines from the chart.
This table provides information on metadata for SDG indicators as defined by the UN Statistical Commission. Complete global metadata is provided by the UN Statistics Division.
{% include components/metadata.html scope='global' %}


₹100
₹120
₹80
₹70
Running a salon successfully might not even seem very much managerial, but do not be fooled. Making up a winning salon simply means tying all the various aspects of luxury, style and beauty. Interior design is one of the factors that really encompass not just the layout of the salon but also the furniture of the salon as well.
We would love to hear from you!


Hello,
My first post so apologies up front for incorrect terminology.
RE: Recent shop order #10564
emonTH 433MHz Temperature & Humidity, Node [emonTH 433MHz], emonTH Case: emonTH Case, Sensor: DTH22 Temperature & Humdity , emonTH node ID: 19 (defaut)
I've got an emonPi up and running up home. It is also connected to an emonTH as above. The emonTH appears to be connected to node 23, but neither the temp or RH readings are showing (both null all the time). I'm a real beginner so could be something simple.
Things I've noticed and tried:
- Although it says node ID 19 in the invoice above it appears to be connected to node 23. As I bought recently and both dips are off I think I have RF node ID V2.x firmware. So node 23 is right.
- RXid 4 is showing a constant reading of 25. I thought this might be battery voltage (2.5V) and that it might have tried a few different batteries and it changed from 25 to 27. The batteries are new. I don't have a power supply suitable.
- I've tried it right next to the emonPi and nothing changes. Seems to be communicating fine.
- I read a long post about emonTH timing issues, I don't think I have this as it seems to be logging, just reading 0. I think this is the relevant bit from the emonhub debug log:
2015-12-24 09:26:47,643 DEBUG RFM2Pi 62491 NEW FRAME : OK 23 0 0 0 0 0 0 25 0 1 0 0 0 (-42) 2015-12-24 09:26:47,645 DEBUG RFM2Pi 62491 Timestamp :<PHONE_NUMBER>.64 2015-12-24 09:26:47,645 DEBUG RFM2Pi 62491 From Node : 23 2015-12-24 09:26:47,646 DEBUG RFM2Pi 62491 Values : [0, 0, 0, 25, 1, 0] 2015-12-24 09:26:47,647 DEBUG RFM2Pi 62491 RSSI : -42 2015-12-24 09:26:47,648 INFO RFM2Pi Publishing: emonhub/rx/23/values 0,0,0,25,1,0 2015-12-24 09:26:47,650 INFO RFM2Pi Publishing: emonhub/rx/23/rssi -42
I wondered whether I might have a faulty sensor?
Will
Re: emonTH not receiving temperature or RH
When the batteries are inserted into the emonTH does the red LED light up once then extinguish or does it flash. A flashing LED indicates a fault status (no sensor detected). Is the sensor correctly inserted? Have you go a meter to test the actual battery voltage?
Re: emonTH not receiving temperature or RH
Hello, Thanks for the reply. I can't remember and I'm not at home at the moment so can't check. I get back this week so will take a look. I've got a multimeter so will check the battery voltage at the same time.
Re: emonTH not receiving temperature or RH
Hello,
I have same (similar) issue as wilfredsouth.
I just bought emonPI and 2 emonTH units (order No.10870 from 20.12.2015). First emonTH unit is set to ID 23 and works fine. Showing temp, hum. and battery voltage. Second emonTH unit is set to ID 24 and showing only battery voltage. I tried to swap DHT22 sensor betwen both emonTH units but with no luck. Unit with ID 24 still showing only Ubat. Values of temp and hum. are zero. I also tried to switch ID on this unit, but with same result - temp and hum. are stil zero.
Can you help me with this?
Thank you :)
Re: emonTH not receiving temperature or RH
Another fact ... when I remove sensor and restart emonTH, red LED light didn't start flash. It only went up for about 8sec and then went off
Re: emonTH not receiving temperature or RH
OK, problem solved. There was some problem in uploaded firmware. I re-uploaded latest firmware and everythink is working now.
Re: emonTH not receiving temperature or RH
WoMec: Glad to see you have solved your problem. The designers are on holiday at present, I was beginning to think there was a manufacturing problem. Maybe there was - the wrong firmware perhaps? Which version did you use to solve the issue?
Re: emonTH not receiving temperature or RH
I used this one:
https://github.com/openenergymonitor/emonTH/blob/master/emonTH_DHT22_DS1...
You will also need libraries to compile FW - https://github.com/openenergymonitor/emonTH
:)
Re: emonTH not receiving temperature or RH
Hello, thanks for all the replies.
I checked the startup and the LED lights once for a few seconds and then goes out, so no fault detected. The battery voltage is 2.54V and they are NiMH rechargeables so I think this is OK.
I don't have a serial adapter so can't change the firmware easily to test Womec's solution. I will have to get one. Bit disappointing if this is the issue as even with opensource etc. for a paid item I'd expect it to have some working firmware.
Re: emonTH not receiving temperature or RH
wilfredsouth: donť worry, the adapter itself is cheap and you can buy it almost everywhere on internet (ebay, dealextreme etc ... ) I'm using this one:
http://www.dx.com/p/crius-ftdi-basic-breakout-5v-usb-to-ttl-6-pin-module...
I think, that you will use it in many other aplications ;) It is very handy tool, especialy if you interested in this kind of electronics
Re: emonTH not receiving temperature or RH
WoMec: Thank you for the fix, re-installing the firmware worked for me too. Or at least it is now recognising the sensor in the serial monitor so I'm hoping it will log to emonCMS as well.
Before I installed this the serial monitor was not detecting the DHT22 monitor.
Quite a lot of learning for me but pleased I got there in the end.
Cheers.


RASC hosts the annual USC Robotics Open House during the US National Robotics Week. The event has taken place annually since 2010 and draws between 1000 to 2000 visitors from the local area, focusing on K-12 students and families, but also including businesses and the general public. For information on the upcoming Robotics Open House please look
here.


@* * Copyright 2010-2016 Artima, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import controllers.Application.latestSuperSafeVersion @import controllers.Application.scaladocsPageUrl @import controllers.Application.baseScalaVersion @nonHomePage("SuperSafe") {
Artima SuperSafe is a commercial Scala compiler plugin with a free Community Edition
that checks Scalactic TripleEquals
(===
and !==
) expressions for correctness.
Using SuperSafe Community Edition together with Scalactic can save you time and ensure certain
errors do not exist in your code. (See the
installation section below for instructions
on installing SuperSafe Community Edition.)
Here are some examples:
scala> import org.scalactic._ import org.scalactic._ scala> import TripleEquals._ import TripleEquals._ scala> val x = Some(1) x: Some[Int] = Some(1) scala> x === 1 <console>:18: error: [Artima SuperSafe] Values of type Some[Int] and Int may not be compared with the === operator. If you really want to compare them for equality, configure Artima SuperSafe to allow those types to be compared for equality. For more information on this kind of error, see: http://www.artima.com/supersafe_user_guide.html#safer-equality x === 1 ^ scala> x !== 1 <console>:18: error: [Artima SuperSafe] Values of type Some[Int] and Int may not be compared with the !== operator. If you really want to compare them for inequality, configure Artima SuperSafe to allow those types to be compared for inequality (which will also enable them to be compared for equality). For more information on this kind of error, see: http://www.artima.com/supersafe_user_guide.html#safer-equality x !== 1 ^ scala> x === Some(1L) res4: Boolean = true scala> List(1, 2, 3) === Vector(1, 2, 3) res5: Boolean = true scala> List(1, 2, 3) === Set(1, 2, 3) <console>:17: error: [Artima SuperSafe] Values of type List[Int] and scala.collection.immutable.Set[Int] may not be compared with the === operator. If you really want to compare them for equality, configure Artima SuperSafe to allow those types to be compared for equality. For more information on this kind of error, see: http://www.artima.com/supersafe_user_guide.html#safer-equality List(1, 2, 3) === Set(1, 2, 3) ^
If you are using sbt as your build tool, you can install the SuperSafe Community Edition by adding the following line to your project/plugins.sbt:
addSbtPlugin("com.artima.supersafe" % "sbtplugin" % "@{latestSuperSafeVersion}")
If you are using Maven as your build tool, you can install the community edition of SuperSafe by adding the compiler plugin to your pom.xml
, like this:
<plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <configuration> <compilerPlugins> <compilerPlugin> <groupId>com.artima.supersafe</groupId> <artifactId>supersafe_@{baseScalaVersion}</artifactId> <version>@{latestSuperSafeVersion}</version> </compilerPlugin> </compilerPlugins> </configuration> <executions> ... </executions> </plugin>
Note: You need to use the exact Scala version in the artifactId, because compiler plugin depends on compiler API that's not binary compatible between Scala minor releases.


| pivot {SparkR} | R Documentation |
Pivot a column of the GroupedData and perform the specified aggregation. There are two versions of pivot function: one that requires the caller to specify the list of distinct values to pivot on, and one that does not. The latter is more concise but less efficient, because Spark needs to first compute the list of distinct values internally.
## S4 method for signature 'GroupedData,character'
pivot(x, colname, values = list())
x |
a GroupedData object |
colname |
A column name |
values |
A value or a list/vector of distinct values for the output columns. |
GroupedData object
pivot since 2.0.0
## Not run:
##D df <- createDataFrame(data.frame(
##D earnings = c(10000, 10000, 11000, 15000, 12000, 20000, 21000, 22000),
##D course = c("R", "Python", "R", "Python", "R", "Python", "R", "Python"),
##D period = c("1H", "1H", "2H", "2H", "1H", "1H", "2H", "2H"),
##D year = c(2015, 2015, 2015, 2015, 2016, 2016, 2016, 2016)
##D ))
##D group_sum <- sum(pivot(groupBy(df, "year"), "course"), "earnings")
##D group_min <- min(pivot(groupBy(df, "year"), "course", "R"), "earnings")
##D group_max <- max(pivot(groupBy(df, "year"), "course", c("Python", "R")), "earnings")
##D group_mean <- mean(pivot(groupBy(df, "year"), "course", list("Python", "R")), "earnings")
## End(Not run)


Experiments in Bone Carving - part one
Bone carving failure with a side of success!
Posted on Sun, 08 Mar 2015 13:00:00 MDT by Aaron Bieber
Beard Comb - first attempt!
I have been interested in bone carving for some time now, but it hasn’t been until recently that I have actually started doing it! It is proving to be a fun and challenging hobby!
Today’s project was a Beard Comb carved from a rib bone! In hind sight, rib might not have been the best choice for this particular project. The bone is very strong length wise, as that is the direction of the “grain”. This makes for weak teeth.
Some other valuable lessons I learned while undertaking this are:
- Use of a jig is very important.
- Remove all material to form the shape of your project prior to diving into aspects like the teeth of the comb.
- Pick the right bone for the job.
- Pencil rubs off fast.
While I was able to “finish” the comb, it isn’t very useful. I broke off three teeth while cutting them out (torqued the saw just a bit when taking it out of the slot). The teeth are also too thick which prevents the comb from actually being used.


{% extends 'layout.html' %} {% block title %} Swiggidy swag. {% endblock %}
| price | description |
|---|---|
| $80 / $140 1 | register the domain name, buy hosting, set up user accounts, emails, etc. |
| $80 | install site/database, set up security features and site analytics |
| $30/hour | Generate wireframes for layout, design interactions and color schemes. |
| $25/hour | code. |
| $20/hour | Upload first-draft of content 2 |
| $10/hour | keep site's cms updated |
| breakfast | meet to go over wireframes, interactions and color schemes |
| breakfast | Teach you how to upload content and how to use site. |
| free | "how do I" text/email messages3 |
| free | consultation |
| 1Most of the cost here is from the hosting- $5-$10/month depending on which hosting package you prefer. | |
| 2 First-draft content essentially means the stuff for landing page. | |
| 3 For the first 90 days; thereafter if they're short also free. |


To geocode an address, simply create a geocoder instance, and request a geocode.
>>> g = Geocoder()
>>> results = g.geocode('1600 Amphitheatre Pkwy')
If you want to provide any additional parameters that the Maps API accepts, send them after the address.
>>> g.geocode('Toledo', region='es', language='es', sensor='true')
See working_with_results for what to do next.
To do a reverse geocode, simply use the reverse_geocode method and provide lat/lng values
>>> g = Geocoder()
>>> results = g.reverse_geocode(37.4220827, -122.08289)
See working_with_results for what to do next.
If the geocode is successful, you will have an object that is has a list of geocoded results. You can check the number of results returned.
>>> len(results)
1
You can access each result by referencing its index in your result set.
>>> first_result = results[0]
Once you have geocoded an address, it is very easy to work with. There are a couple convenience methods for the GeoResult object.
The string representation will always be the formatted address. You can also access formatted address directly, coordinates, and a boolean check is_valid_address to see if the address is a valid street address. Finally, there is a raw attribute which gives you access to the raw data returned by the Google Maps API.
>>> str(first_result)
'1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA'
>>> first_result.formatted_address
u'1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA'
>>> first_result.coordinates
(37.4220827, -122.08289)
>>> first_result.is_valid_address
True
The ‘address_components’ that the Maps API provides are made easily accessible by simple attribute lookups.
>>> first_result.street_number
u'1600'
>>> first_result.postal_code
u'94043'
>>> first_result.country
u'United States'
By default, the GeoResult will give you the ‘long_name’ of the address component. If you want the short name, just add it to your attribute lookup.
>>> first_result.country__short_name
u'US'


Blockchain Underpinnings: Hashing
Light bulbs, bits, and bytes
You may have heard that all data in computers, is either 0 or 1. The smallest piece of data is a bit, and is either a 0 or 1. Imagine a computer as having many light bulbs, and the bulbs are either on (1) or off (0). Different pieces of data are represented by the pattern displayed by the bulbs. Large data, such as videos, use many light bulbs. A short email, would use fewer light bulbs. A single light bulb is a bit. Another term you may have heard of is a byte, which is simply a group of 8 bulbs. A megabyte of data is 1 million bytes, which would be 8 million bulbs.
Today’s home computers have billions and even trillions of light bulbs. But with the power of doubling, notice that even just a group of 256 bulbs is almost enough to represent any of the observable particles in the universe. Imagine all the patterns that a group of 256 bulbs can produce, and it is an astronomical number: mathematically it’s 2 to the power of 256.
Cryptographic hash functions
A hash function, takes any input, and produces an output of a specific size. The process of applying a hash function to some data, is called hashing. The output of a hash function is called a hash. The basic feature of a particular hash function is the size of the output it produces. For the examples in this article, we’ll use a hash function that produces an output of 256 bits (32 bytes). There are hash functions to produce smaller output, and others that produce larger output. There are also many hash functions that produce an output of 256 bits, but the examples don’t care about which specific one is used.
Using the example hash function, when a video of many megabytes is hashed, the output will be 256 light bulbs with some of the bulbs lighted. When a short email is hashed, the output will be 256 light bulbs with a different pattern. In some ways, hashing looks like compression. To briefly explain a difference between the two, hashing always produces the same number of light bulbs, whereas compressing a video of many megabytes will still produce an output of millions of light bulbs. A compressed video, can be decompressed to obtain the original video. When a video is hashed to only 256 light bulbs, reconstructing the many megabytes of the original video from the hash is unlikely. It may not sound desired, but this behavior is actually a powerful feature of hash functions.
One critical characteristic of a secure cryptographic hash function is that it is one-way. This means that from the output, it is virtually impossible, or mathematically and computationally improbable, to determine what the input is. That is, given a hash, it should be infeasible to learn about or find the input data that was provided to the hash function. The technical term for this is pre-image resistance.
A consequence is that a hash function should consume approximately the same amount of time, whether it is hashing a large or small input. Another desirable outcome is that hashes, patterns of light bulbs produced by hash functions, should appear to be random. Hashing the data “password1” should produce a very different pattern of light bulbs, than from hashing the data “password2”. Otherwise, if the patterns were similar, an adversary could infer that the inputs are similar, and if either or related words (like “pass”, “word”) are discovered, the passwords could be found easily. Secure hash functions produce drastically different outputs, even if inputs differ by only a single bit.
The ideal behavior for security is that given a hash, the only way to find the input data is by hashing all combinations of inputs, until the correct input is hashed. If the input is random, finding it would take an indeterminate amount of time, and thus effectively impossible.
While finding the input for a hash should be very difficult and take a very long time, computing a hash should be fast to compute. One can provide a hash function, with a very large input, and still receive the output in less than a second. Given that today’s smartphones perform billions of computations per second, 1 second is a long time computing-wise.
Cryptographic hash functions should also be collision resistant. A collision is when a hash function produces the same output, for more than one input. If hashing data1, which maybe a spreadsheet, and hashing data2, which maybe a picture, produce the same output, then a collision has occurred.
The importance of the properties of secure cryptographic hash functions will be more evident as we describe blockchains and hashing.
Blockchains and Hashing
Hashing is extensively used with blockchains and here are some examples.
Addresses on a blockchain are derived by a process of hashing public keys. An Ethereum account is computed by hashing a public key with Keccak-256 (developers should read the crucial distinction with SHA3–256). A Bitcoin address is computed by hashing a public key with SHA2–256 and RIPEMD160.
Collision resistance of the hash functions are important because if 2 people generate the same address (a collision) then either could spend the money sent to that address.
Signatures are a fundamental part of blockchains. Similar to signing a check, cryptographic signatures determine which transactions are valid. Signatures are generated from a hash of data to be signed, and a private key.
Transaction hashes are highly visible in a blockchain. Instead of describing a transaction as “the transaction where Alice sent Bob X units of currency at date D and time T”, transactions are referred to by their hash. For example, 5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060 is a transaction in the Ethereum blockchain. Transaction hashes are also more direct to use, as compared to a description like the “1024th transaction in block 1337”. Just copy the hash, and paste it into a blockchain explorer, to see details of the transaction.
Metaphysically, blocks in a blockchain are identified by their hash, which serves the dual purpose of identification as well as integrity verification. An identification string that also provides its own integrity is called a self-certifying identifier.
For blockchains that use mining, the Proof-of-Work is a number, called a nonce, that when combined with other data and hashed, produces a value smaller than a specified target. Mining makes full use of the properties that hashing is fast one-way, and not reversible. Finding a valid nonce takes time because there are no clues available that will lead to a sufficiently small hash, and the only approach to find one that is smaller than the target, is to compute many hashes: in Bitcoin, currently that’s over 10 septillion hashes. When a valid nonce is found, verifying it is done within a second, and then the new block propagates across the network, forming the latest consensus and blockchain.
Since storage in blockchains is permanent, and storing large amounts of data on a blockchain is not economical, the practical way to store data on a blockchain is to store a fixed (and normally smaller) size representation of the data called the “hash of the data.” One use for a blockchain is as a timestamping service. Suppose there is a picture that you wanted to prove currently exists, and is not fabricated in the future. You could store the picture in the blockchain now, and a year later, if a judge asks if the picture was really taken a year ago, you could show it on the blockchain. But, since you know about hashes, you hash the picture and store the hash on the blockchain instead. When the judge asks for proof, you provide the picture, then the judge can hash the picture and compare it against the hash that you stored on the blockchain.
There are also more advanced examples where hashing is involved, for example in Merkle trees which are at the root of innovation for blockchains, scalability, and mobile and light wallets.
Hashes for identifying anything securely
Secure cryptographic hash functions are one-way, fast to compute, and collision resistant. Combined with the property that they process any type of input to produce an output of fixed-size, called a hash, hashes are very useful as an identifier for any data. Hashes of length 256 bits represent an astronomical number of combinations, that they are more than enough to be a globally unique identifier for the Internet of Things, even at the scale of nanotechnology and beyond. And these hashes can be written as 64 characters (hexadecimal), which make them practical enough to use as identifiers. In blockchains, hashes are used as identifiers for blocks, transactions, and addresses.
Hashes enjoy advantages of security and privacy. If a song is recorded in a digital format, and the hash of the song is stored on a blockchain, there is no way for someone else to claim that they were first to create the song that produced the hash, without knowing the song itself: someone can’t write a song and tamper with its hash. Similarly, unless the song or other digitized property or data is revealed, it remains private with only the hash displayed on the blockchain. Ownership registries can be stored on the blockchain, with the details of what’s owned remaining private among the parties involved. As a simple example, a vehicle registry could store hashes of car data (pictures, VIN, license plate) and only the owners, insurance company, and government would know the actual details of the vehicle.
Deeply theoretical but widely practical
Designing cryptographic hash functions require a combination of art and science. To prove their security requires advanced mathematics and computer science. Blockchains are the first user interfaces filled with hashes, available to a broad demographic. Good user experience will hide many hashes behind the scenes, but just as we see various id and serial numbers today, sometimes a hash is the best identifier for something instead of a long-winded description. As technology such as cryptography and the Internet of Things become widespread, expect to see 64 character hashes more in the future!
Source<EMAIL_ADDRESS>Author: Joseph Chow, ConsenSys.