super(ObserverFrame, self).__init__(*args, **kwargs)
# Attributes
self.txt = wx.TextCtrl(self, style=wx.TE_MULTILINE)
self.txt.SetValue("Change the font in the config "
"dialog and see it update here.")
# Observer of configuration changes
Publisher.subscribe(self.OnConfigMsg, MSG_CONFIG_ROOT)
def __del__(self):
# Unsubscribe when deleted
Here is the observer method that will be called when any message beginning with 'config' is sent by the pubsub Publisher. In this sample application, we just check for the ('config', 'font') message and update the font of the TextCtrl object to use the newly-configured one:
def OnConfigMsg(self, msg):
"""Observer method for config change messages"""
if msg.topic[-1] == 'font':
# font has changed so update controls
if __name__ == '__main__':
app = ObserverApp(False)
How it works...
This recipe shows a convenient way to manage an application's configuration by allowing the interested parts of an application to subscribe to updates when certain parts of the configuration are modified. Let's start with a quick walkthrough of how pubsub works.
Pubsub messages use a tree structure to organize the categories of different messages. A message type can be defined either as a tuple ('root', 'child1', 'grandchild1') or as a dot-separated string ('root.child1.grandchild1'). Subscribing a callback to ('root',) will cause your callback method to be called for all messages that start with ('root',). This means that if a component publishes ('root', 'child1', 'grandchild1') or ('root', 'child1'), then any method that is subscribed to ('root',) will also be called
Pubsub basically works by storing the mapping of message types to callbacks in static memory in the pubsub module. In Python, modules are only imported once any other part of your application that uses the pubsub module shares the same singleton Publisher object.
In our recipe, the Configuration object is a simple object for storing data about the configuration of our application. Its SetValue method is the important part to look at. This is the method that will be called whenever a configuration change is made in the application. In turn, when this is called, it will send a pubsub message of ('config',) + (key,) that will allow any observers to subscribe to either the root item or more specific topics determined by the exact configuration item.
Next, we have our simple ConfigDialog class. This is just a simple example that only has an option for configuring the application's font. When a change is made in the FontPickerCtrl in the ConfigPanel, the Configuration object will be retrieved from the App and will be updated to store the newly-selected Font. When this happens, the Configuration object will publish an update message to all subscribed observers.
Our ObserverFrame is an observer of all ('config',) messages by subscribing its OnConfigMsg method to MSG_CONFIG_ROOT. OnConfigMsg will be called any time the Configuration object's SetValue method is called. The msg parameter of the callback will contain a Message object that has a topic and data attribute. The topic attribute will contain the tuple that represents the message that triggered the callback and the data attribute will contain any data that was associated with the topic by the publisher of the message. In the case of a ('config', 'font') message, our handler will update the Font of the Frame and its TextCtrl.
 Read more about this book
(For more resources on Python, see here.)
Strategy pattern
The strategy pattern is an approach that allows for an application to choose the strategy or behavior that will be used at run time. It accomplishes this by encapsulating different algorithms and making them usable by the client regardless of what the underlying behavior of the algorithm is. This is probably one of the most fundamental design patterns in programming, and you're probably already using it in one form or another without even knowing it. This recipe shows how to create a reusable Dialog class that uses the strategy pattern to allow for the main content to vary depending on the strategy used.
How to do it...
First, we will start by defining a base interface with all of the strategies that our dialog class will use:
class BaseDialogStrategy:
"""Defines the strategy interface"""
def GetWindowObject(self, parent):
"""Must return a Window object"""
raise NotImplementedError, "Required method"
def DoOnOk(self):
"""_USER_: bool (True to exit, False to not)"""
return True
def DoOnCancel(self):
return True
Now let's define our simple Ok/Cancel dialog, which will use a strategy derived from our BaseDialogStrategy class to allow its main content area to vary depending on the strategy used:
class StrategyDialog(wx.Dialog):
"""Simple dialog with builtin OK/Cancel button and
strategy based content area.
def __init__(self, parent, strategy, *args, **kwargs):
super(StrategyDialog, self).__init__(parent,
# Attributes
self.strategy = strategy
self.pane = self.strategy.GetWindowObject(self)
# Layout
# Event Handlers
self.Bind(wx.EVT_BUTTON, self.OnButton)
Here, in the following methods of our StrategyDialog, we just delegate to the current strategy to allow it to define the behavior of the dialog:
def __DoLayout(self):
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.pane, 1, wx.EXPAND)
btnsz = self.CreateButtonSizer(wx.OK|wx.CANCEL)
sizer.Add(btnsz, 0, wx.EXPAND|wx.ALL, 8)
def GetStrategy(self):
return self.strategy
def OnButton(self, event):
evt_id = event.GetId()
bCanExit = False
if evt_id == wx.ID_OK:
bCanExit = self.strategy.DoOnOk()
elif evt_id == wx.ID_OK:
bCanExit = self.strategy.DoOnCancel()
if bCanExit:
Now let's implement a simple strategy that can be used to get the dialog to display a control for selecting a file:
class FileTreeStrategy(BaseDialogStrategy):
"""File chooser strategy"""
def GetWindowObject(self, parent):
assert not hasattr(self, 'dirctrl')
self.dirctrl = wx.GenericDirCtrl(parent)
return self.dirctrl
def DoOnOk(self):
path = self.dirctrl.GetPath()
if path:
wx.MessageBox("You selected: %s" % path)
return True
wx.MessageBox("No file selected!")
return False
Then, in an application, all that needs to be done to create a dialog that uses this strategy would be the following:
# Note:'self' is some window object (i.e a Frame)
strategy = FileTreeStrategy()
dlg = StrategyDialog(self, strategy, title="Choose File")
How it works...
Since all strategies that our dialog will use must be interchangeable, it is important to define an interface that they will implement. So, in our BaseDialogStrategy class, we defined a simple three-method interface that our StrategyDialog will delegate to.
The StrategyDialog is basically just a simple generic shell that delegates all decisions regarding its appearance and behavior to the strategy. When the dialog is initialized, it asks the strategy for a window object that will be used as the main content area of the dialog. The dialog then creates and adds some standard OK/Cancel buttons to the interface.
When a user clicks on one of these buttons, the StrategyDialog will then simply delegate to its strategy, to allow the strategy to handle the user action. This allows us to reuse this dialog class in many different ways, by simply implementing different strategies.
Model View Controller
Model View Controller (MVC) is a design pattern that creates a clear separation of concerns within a program's architecture. It breaks down into three layers: the Model, which is the application's data objects and business logic at the bottom, the View at the top, which typically consists of controls for displaying and editing data, and finally the Controller in the middle, which is responsible for mediating the flow of data from the Model to the View and vice versa:
wxPython: Design Approaches and Techniques
M VC is really one big monster pattern made up of other, simpler patterns working together. The Model implements an observer pattern to keep interested parties updated on changes, which allows it to be implemented separately from the View and Controller. The View and the Controller, on the other hand, implement a strategy pattern where the Controller is a strategy that implements the behavior of the View.
In this recipe, we explore how to create a simple number generator application that implements this pattern in wxPython.
How to do it...
Since there are multiple components that need to work together, having defined interfaces is an important step in the process, so first let us define some base classes that define the interface for our number generator's model and controller.
Beginning with our Model's interface, we provide a class that simply requires its Generate method to be overridden in order to provide the implementation-specific behavior. We have also built in a simple observer pattern mechanism to allow the view to subscribe to update notifications in the model:
class ModelInterface(object):
"""Defines an interface for a simple value
generator model.
def __init__(self):
super(ModelInterface, self).__init__()
# Attributes
self.val = 0
self.observers = list()
def Generate(self):
"""Interface method to be implemented by
raise NotImplementedError
def SetValue(self, val):
self.val = val
def GetValue(self):
return self.val
def RegisterObserver(self, callback):
"""Register an observer callback
_USER_: callable(newval)
def NotifyObservers(self):
"""Notify all observers of current value"""
for observer in self.observers:
Next we have the base interface definition for the controllers of our framework's view to derive from. This just defines


text:
Computer Engineering Institute, The Technological University of the Mixteca (UTM), Carretera Huajuapan-Acatlima Km. 2.5, Huajuapan de León, 69000 Oaxaca, Mexico
Copyright © 2010 Ricardo Pérez-Aguila. This is an open access article distributed under the
Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.
This work is devoted to present a methodology for the computation of Discrete Compactness in -dimensional orthogonal pseudo-polytopes. The proposed procedures take in account compactness' definitions originally presented for the 2D and 3D cases and extend them directly for considering the D case. There are introduced efficient algorithms for computing discrete compactness which are based on an orthogonal polytopes representation scheme known as the Extreme Vertices Model in the -Dimensional Space (D-EVM). It will be shown the potential of the application of Discrete Compactness in higher-dimensional contexts by applying it, through EVM-based algorithms, in the classification of video sequences, associated to the monitoring of a volcano's activity, which are expressed as 4D orthogonal polytopes in the space-color-time geometry.

source: openbmb/Ultra-FineWeb


text:
This paper presents experimental results of inner dynamics study of human serum albumin by a series of physical methods: a) the method of radical pairs recombination based on measuring of recombination rate of radical pairs included to surface layers of a protein globule; b) the method of spin labels with saturation transfer technique. The complex of methods used in this work permits to measure the mobility of physical labels and environment matrix in a wide correlation frequency range 10(-4)-5.10(10) s-1 in 30-230 K temperature range. The analysis of the data obtained allows to make conclusions on the molecular mobility in surface layers of a protein globule under different conditions.
|Translated title of the contribution||Mobility of free radicals connected with serum albumins at 30-230 K|
|Number of pages||5|
|State||Published - 1 Jul 1983|
ASJC Scopus subject areas
- Medicine (all)

source: m-a-p/FineFineWeb


Notifiable Disease Charts
From Public Health Agency of Canada
Diseases by year, Moving Line Chart, _PHONE_
Displays a moving line chart where a single or multiple notifiable diseases (up to 6) may be selected. The chart can be a static display for all years (from 1924 up to 2014) or an animated moving line(s) displaying the selected disease(s) in 10 year blocks. The chart can represent either the number or rate of reported cases. The source data table, limitations of the data and descriptions for the selected notifiable disease(s) are also provided.
Disease by grouping - Pie chart
Displays a pie chart with the relative contribution of each disease to all cases reported for the selected disease group. The chart is displayed by year (from 1991 up to 2014) and can be further broken down by age group and sex. The source data table, limitations of the data and descriptions for each notifiable disease in a selected group are also provided.
Disease by year - Static Line Chart
Displays a static line chart where multiple notifiable diseases (up to 6) may be selected within any selected year range (from 1991 up to 2014) and by selecting either the number or rate of reported cases. The chart can be further broken down by age group and sex. The source data table, limitations of the data and descriptions for each notifiable disease(s) are also provided.
Single disease, age and sex distribution by year - Stacked Bar Chart
Displays a stacked bar chart showing either the number or rate of reported cases of a single disease in any selected year (from 1991 up to 2014). Each bar represents a specific age group and is stacked to show sex breakdown within the age group. The source data table, limitations of the data and description of the selected notifiable disease are also provided.
Multiple disease age distribution by year - Bar Chart
Displays a bar chart showing either the number or rate of reported cases for a single disease or multiple diseases (up to 6) for any selected year (from 1991 up to 2014) and is displayed by age group. The source data table, limitations of the data and descriptions of the selected notifiable disease(s) are also provided.
Date modified:


Archaeological Tour of Bulgaria
The Archaeological Tour of Bulgaria introduces you to the most exciting archaeological finds and excavations in Bulgaria. Archaeology in Bulgaria encompasses the history of ancient Greece and Rome, the Thracians and the Varna culture dating back 8000 years.
archaeological tour bulgaria plovdiv
Visit ancient Philipopolis
The archaeological tour is a journey of discovery through layers of history that are still be unravelled. All the Mediterranean civilisations have left their mark on the lands now called Bulgaria: Romans, Greeks, Thracians and a much more ancient civilisation dating back over 8000 years, called the Varna culture that predates Sumer.
The tour can be lead by a classics or archaeological professor and supported by a local historical tour guide. It is usually 8 days but can be extended to 12 days. It is available from April to October.
The Archaeological Tour of Bulgaria is tailored to your personal preferences. On the basis of our experience of organising archaeological tours in Bulgaria we would recommend visiting:
 1. Sofia the ancient Roman Serdika where new excavations of the Roman garrison have been beautifully and controversially restored.
 2. Plovdiv known in ancient times as Philippopolis is at the cross-roads of the Via Diagonalis that connects East to West, Asia to Europe and just north of the Via Egnatia.
 3. Kazanluk is famous for the beautiful UNESCO World Heritage Thracian tomb with stunning frescoes of a couple.
 4. Perperikon is a huge and unexplained ritual site in the enchanted Rhodope mountains of Orpheus.
 5. Villa Armira is one of the best example of a Roman villa outside Italy with stunning mosaics.
 6. Sozopol on the Black sea coast was known as Apollonia Magna, an ancient Greek settlement that traded goods with the Thracians inland.
 7. Nesebar known as Mesemvria was a rival Greek colony and is now a beautiful UNESCO World Heritage site.
 8. Pomorie is mysterious piece of Thracian architecture shaped like the Tree of Life.
 9. Varna formerly Odessos is home to the remains of the Varna culture.
 10. Kabile is a recently excavated Roman settlement.
 11. Stara Zagora was known as Augusta Traiana in Roman and Beroe previously. It has many layers of history and its Roman amphitheatre has been restored.
 12. Nicopolis ad Istrum: A huge late Roman town in the Danube plain that is still being excavated.
During your journey you will hear of stories of Dionysus, Heros the Thracian horseman and Orpheus and the legends of nymphs and maenads.
archaeological tour bulgaria plovdiv
The Roman stadium in Plovdiv
Archaeological Tour of Bulgaria information
The Archaeological Tour of Bulgaria can be adapted to your personal preferences, time and budget.
Location: Bulgaria: Sofia, Plovdiv, Stara Zagora, Nesebar, Varna.
Time: 8 days
Itinerary: Arrival and departure in Sofia
Accommodation: 3 and 4 star hotels
Food: Full-board breakfasts, lunches and dinners included.
Price: around EUR 800 per person with discounts for children
Season: From April to October
Excluded: drinks, travel insurance,
More information and photos of the Archaeologicical Tour of Bulgaria.
As a tailor-made tour we offer options to tailor the journey to your personal interests. The Archaeological Tour of Bulgaria can be adapted and extended to include:
 - Ruse and the Sveshtari Thracian tomb
 - Vratsa and the Rogazen treasure
 - Edirne the historical Ottoman city in Western Turkey
 - Thessaloniki in Northern Greece
 - Narrow-gauge train ride and a train ride with an old fashioned locomotive
 - We can combine it with the Classical Tour of Thrace that encompasses Northern Greece and Western Turkey
product image
5 based on 2 votes
JMB Travel Bulgaria
Archaeological Tour of Bulgaria
EUR 800
Pre-Order Only


C# preprocessor directives
Although the compiler doesn't have a separate preprocessor, the directives described in this section are processed as if there were one. You use them to help in conditional compilation. Unlike C and C++ directives, you can't use these directives to create macros. A preprocessor directive must be the only instruction on a line.
Nullable context
The #nullable preprocessor directive sets the nullable annotation context and nullable warning context. This directive controls whether nullable annotations have effect, and whether nullability warnings are given. Each context is either disabled or enabled.
Both contexts can be specified at the project level (outside of C# source code) adding the Nullable element to the PropertyGroup element. The #nullable directive controls the annotation and warning contexts and takes precedence over the project-level settings. A directive sets the context(s) it controls until another directive overrides it, or until the end of the source file.
The effect of the directives is as follows:
 - #nullable disable: Sets the nullable annotation and warning contexts to disabled.
 - #nullable enable: Sets the nullable annotation and warning contexts to enabled.
 - #nullable restore: Restores the nullable annotation and warning contexts to project settings.
 - #nullable disable annotations: Sets the nullable annotation context to disabled.
 - #nullable enable annotations: Sets the nullable annotation context to enabled.
 - #nullable restore annotations: Restores the nullable annotation context to project settings.
 - #nullable disable warnings: Sets the nullable warning context to disabled.
 - #nullable enable warnings: Sets the nullable warning context to enabled.
 - #nullable restore warnings: Restores the nullable warning context to project settings.
Conditional compilation
You use four preprocessor directives to control conditional compilation:
 - #if: Opens a conditional compilation, where code is compiled only if the specified symbol is defined.
 - #elif: Closes the preceding conditional compilation and opens a new conditional compilation based on if the specified symbol is defined.
 - #else: Closes the preceding conditional compilation and opens a new conditional compilation if the previous specified symbol isn't defined.
 - #endif: Closes the preceding conditional compilation.
The C# compiler compiles the code between the #if directive and #endif directive only if the specified symbol is defined, or not defined when the ! not operator is used. Unlike C and C++, a numeric value to a symbol can't be assigned. The #if statement in C# is Boolean and only tests whether the symbol has been defined or not. For example, the following code is compiled when DEBUG is defined:
#if DEBUG
 Console.WriteLine("Debug version");
#endif
The following code is compiled when MYTEST is not defined:
#if !MYTEST
 Console.WriteLine("MYTEST is not defined");
#endif
You can use the operators == (equality) and != (inequality) to test for the bool values true or false. true means the symbol is defined. The statement #if DEBUG has the same meaning as #if (DEBUG == true). You can use the && (and), || (or), and ! (not) operators to evaluate whether multiple symbols have been defined. You can also group symbols and operators with parentheses.
The following is a complex directive that allows your code to take advantage of newer .NET features while remaining backward compatible. For example, imagine that you're using a NuGet package in your code, but the package only supports .NET 6 and up, as well as .NET Standard 2.0 and up:
#if (NET6_0_OR_GREATER || NETSTANDARD2_0_OR_GREATER)
 Console.WriteLine("Using .NET 6+ or .NET Standard 2+ code.");
#else
 Console.WriteLine("Using older code that doesn't support the above .NET versions.");
#endif
#if, along with the #else, #elif, #endif, #define, and #undef directives, lets you include or exclude code based on the existence of one or more symbols. Conditional compilation can be useful when compiling code for a debug build or when compiling for a specific configuration.
A conditional directive beginning with an #if directive must explicitly be terminated with an #endif directive. #define lets you define a symbol. By using the symbol as the expression passed to the #if directive, the expression evaluates to true. You can also define a symbol with the DefineConstants compiler option. You can undefine a symbol with #undef. The scope of a symbol created with #define is the file in which it was defined. A symbol that you define with DefineConstants or with #define doesn't conflict with a variable of the same name. That is, a variable name shouldn't be passed to a preprocessor directive, and a symbol can only be evaluated by a preprocessor directive.
#elif lets you create a compound conditional directive. The #elif expression will be evaluated if neither the preceding #if nor any preceding, optional, #elif directive expressions evaluate to true. If an #elif expression evaluates to true, the compiler evaluates all the code between the #elif and the next conditional directive. For example:
#define VC7
//...
#if DEBUG
 Console.WriteLine("Debug build");
#elif VC7
 Console.WriteLine("Visual Studio 7");
#endif
#else lets you create a compound conditional directive, so that, if none of the expressions in the preceding #if or (optional) #elif directives evaluate to true, the compiler will evaluate all code between #else and the next #endif. #endif(#endif) must be the next preprocessor directive after #else.
#endif specifies the end of a conditional directive, which began with the #if directive.
The build system is also aware of predefined preprocessor symbols representing different target frameworks in SDK-style projects. They're useful when creating applications that can target more than one .NET version.
Target Frameworks Symbols Additional symbols
(available in .NET 5+ SDKs)
Platform symbols (available only
when you specify an OS-specific TFM)
.NET Framework NETFRAMEWORK, NET48, NET472, NET471, NET47, NET462, NET461, NET46, NET452, NET451, NET45, NET40, NET35, NET20 NET48_OR_GREATER, NET472_OR_GREATER, NET471_OR_GREATER, NET47_OR_GREATER, NET462_OR_GREATER, NET461_OR_GREATER, NET46_OR_GREATER, NET452_OR_GREATER, NET451_OR_GREATER, NET45_OR_GREATER, NET40_OR_GREATER, NET35_OR_GREATER, NET20_OR_GREATER
.NET Standard NETSTANDARD, NETSTANDARD2_1, NETSTANDARD2_0, NETSTANDARD1_6, NETSTANDARD1_5, NETSTANDARD1_4, NETSTANDARD1_3, NETSTANDARD1_2, NETSTANDARD1_1, NETSTANDARD1_0 NETSTANDARD2_1_OR_GREATER, NETSTANDARD2_0_OR_GREATER, NETSTANDARD1_6_OR_GREATER, NETSTANDARD1_5_OR_GREATER, NETSTANDARD1_4_OR_GREATER, NETSTANDARD1_3_OR_GREATER, NETSTANDARD1_2_OR_GREATER, NETSTANDARD1_1_OR_GREATER, NETSTANDARD1_0_OR_GREATER
.NET 5+ (and .NET Core) NET, NET8_0, NET7_0, NET6_0, NET5_0, NETCOREAPP, NETCOREAPP3_1, NETCOREAPP3_0, NETCOREAPP2_2, NETCOREAPP2_1, NETCOREAPP2_0, NETCOREAPP1_1, NETCOREAPP1_0 NET8_0_OR_GREATER, NET7_0_OR_GREATER, NET6_0_OR_GREATER, NET5_0_OR_GREATER, NETCOREAPP3_1_OR_GREATER, NETCOREAPP3_0_OR_GREATER, NETCOREAPP2_2_OR_GREATER, NETCOREAPP2_1_OR_GREATER, NETCOREAPP2_0_OR_GREATER, NETCOREAPP1_1_OR_GREATER, NETCOREAPP1_0_OR_GREATER ANDROID, BROWSER, IOS, MACCATALYST, MACOS, TVOS, WINDOWS,
[OS][version] (for example IOS15_1),
[OS][version]_OR_GREATER (for example IOS15_1_OR_GREATER)
Note
 - Versionless symbols are defined regardless of the version you're targeting.
 - Version-specific symbols are only defined for the


Ward 1c - A Heavy Symbolism
A Heavy Symbolism
The Coroner found that Mr Ward 'suffered a terrible death while in custody which was wholly unnecessary and avoidable.' Much of the official record traces this chain of seemingly minor decisions and small preventable acts that led to the death of Mr Ward. Yet, in its totality, this chain of eventualities assumes a destructive inevitability. There is a heavy symbolism attached to the fact of Mr Ward's arrest on Australia Day, the day marking the arrival of the British First Fleet in 1788. Many Aboriginal people refer to this date as Invasion Day or Survival Day, a day of mourning, not celebration.
The case of Mr Ward bears out the continuing effects of colonial invasion and usurped sovereignty with its murderous disregard for Aboriginal life.
Please Read


Tag Info
Hot answers tagged
13
The geopy module provides the Vincenty formula, which provides accurate ellipsoid distances. Couple this with the wkt loading in Shapely, and you have reasonably simple code: from geopy import distance from shapely.wkt import loads line_wkt="LINESTRING(3.0 4.0, 3.1 4.1)" # a number of other elipsoids are supported distance.VincentyDistance.ELLIPSOID = ...
8
Apart from, as @underdark says ST_Length() returns a cartesian distance between the two points which in an unprojected CS is meaningless in this case, I would go with the answer you get from PostGIS. Google Earth uses a spherical globe, whereas the WGS84 globe is a spheroid - it is slightly squashed at the poles. Over short distances, there won't be much ...
8
The principal radius of the WGS84 spheroid is a = _PHONE_ meters and its inverse flattening is f = 298.257223563, whence the squared eccentricity is e2 = (2 - 1/f)/f = 0.0066943799901413165. The meridional radius of curvature at latitude phi is M = a(1 - e2) / (1 - e2 sin(phi)^2)^(3/2) and the radius of curvature along the parallel is N = a / (1 - e2 ...
5
Replacing st_length with st_transform(way,4326)::geography solves the geodetic distance problem - thanks unicoletti!. Old Beechy Rail Trail | 47.2km Great Southern Rail Trail | 53.5km Ballarat-Skipton Rail Trail | 57.2km High Country Rail Trail | 63.7km East Gippsland Rail Trail | 97.6km ...
5
You are not using geodesic functions to calculate the length, which means that for a point there is an error factor of: cos( LATITUDE * pi() / 180 ) If you then multiply the calculated lenght by the error factor you should obtain a value pretty close to the actual trail length. For instance the Old Beechy Rail Trail is close to Melbourne, which has a ...
5
One option is to create a fishnet grid specific to your area of interest. By specifying one row and X columns, you can very efficiently create a series of lines. I describe this method in greater detail here and here for two similar situations. For fine control of individual line placement, use the editor. From the image, you can see I created 16 lines ...
5
it is much easier now in 10. Right click on the length field and select calculate geometry. you can select the pcs of the data or the document, then select the units.
5
The CRS of your project is probably set on a geometric CRS like WGS. Try setting it to the same one you used for the shapefile.
4
Unioning the tables together is one way: WITH alltables AS ( SELECT the_geom FROM D1_r UNION ALL SELECT the_geom FROM D2_r UNION ALL SELECT the_geom FROM D3_r ) SELECT sum(ST_Length_Spheroid(the_geom,'SPHEROID["WGS 84",_PHONE_,298.257223563]'))/1000 AS km_roads FROM alltables; Incidentally if you want PostGIS 1.5+ you can use the Geography ...
4
You could also use Shapely's length property, i.e.: from shapely.wkt import loads l=loads('LINESTRING(3.0 4.0, 3.1 4.1)') print l.length
4
try to use following sql. ALTER TABLE network ADD COLUMN shape_leng double precision; UPDATE network SET shape_leng = length(the_geom); i hope it helps you...
4
As alfaciano says in shapely, the distance is the Euclidean Distance or Linear distance between two points on a plane and not the Great-circle distance between two points on a sphere. from shapely.geometry import Point point1 = Point(50.67,4.62) point2 = Point(51.67, 4.64) import math # Euclidean Dustance def Euclidean_distance(point1,point2): return ...
4
There actually is no difference between the two functions, which both yield 1.195 km. The problem is that in your question the axis order is flipped for trajectory, so you are seeing different answers than you expect. SELECT ST_AsLatLonText(point_a) AS point_a_latlon, ST_AsLatLonText(point_b) AS point_b_latlon, ST_Distance_Spheroid(point_a, point_b, ...
3
If you can make the start of the line as coordinate locations in a table, then Add Field and Calculate Field values for the end coordinate locations (if the 30 m change is in both the X and Y or by an angle this may need trigonometry), then Make XY Event Layer for each set of coordinate pairs, Merge into one point file, and then use Points To Line with the ...
3
Let's first address the side note. "3D length" means the actual length of the path on the earth's surface represented by the polyline, accounting for the additional length contributed by its motion up and down. "Geodesic length" usually refers to the length of a path within a Riemannian manifold. There are at least two useful and reasonable ways in which ...
3
Coordinate Systems [...] Shapely does not support coordinate system transformations. All operations on two or more features presume that the features exist in the same Cartesian plane. Source: _URL_ Being shapely completely agnostic in reference to SRS, it's quite obvious that the length ...
2
I'd use ogr2ogr (_URL_ to do it directly but if you really must use python then there are python bindings (_URL_ to let you do it.
2
do you mean inside the field calculator? in this case I suggest you to use python because starting from 10.0 it's the "official" language supported in ArcGIS 10.0 is the last ArcGIS version that uses VBscript, staring from 10.1 it will be deprecated and unsupported with Python in field calculator you have to use !Shape.length! or !Shape.area! (Python "!" ...
2
Answer: SELECT (SELECT sum(ST_Length_Spheroid("D1_r".the_geom,'SPHEROID["WGS 84",_PHONE_,298.257223563]'))/1000 FROM "D1_r") AS km_roads1, (SELECT sum(ST_Length_Spheroid("D2_r".the_geom,'SPHEROID["WGS 84",_PHONE_,298.257223563]'))/1000 FROM "D2_r") AS km_roads2, (SELECT sum(ST_Length_Spheroid("D1_r".the_geom,'SPHEROID["WGS ...
2
The "Improved Polygon Capturing" plugin will let you specify line lengths as you draw. The CAD Tools ortho tool will let you draw 90 degree angles. However, unfortunately it doesn't seem like the two will work together!
2
A slight modification of the answer linked in the comments would be to do a Summary Statistics to get the SUM of the Shape.Length field of the intersect feature class, using the FID field of the polygons a case field, and then Join Field that back to the polygon feature class. In the ArcMap 10.1 Python window, these commands worked for me: intersection = ...
2
If the data in the network table is either being updated or added, it would be wise to make a trigger function to update the data, so the line lengths are always up-to-date. To do this, make a trigger procedure, written in PL/pgSQL: CREATE OR REPLACE FUNCTION shape_leng() RETURNS trigger AS $BODY$BEGIN NEW.shape_leng := ST_Length(NEW.the_geom); RETURN ...
2
"Sum line lengths" calculates length in the units of the input layer's CRS. So if the input layer is in WGS84, the results will be in degrees. If the input layer is in some UTM projection, it will be meters or feet. NOTE: Reprojecting on-the file does NOT change the results of length calculations. You have to reproject the layers permanently using "Save as ...
2
You could turn your raster into a polygon then run an intersect with this polygon layer with your line layer.
2
In QGIS start an edit session for your line layer, then open the attribute table. Click the Field Calculator button, create a new field with a "Double" data type


Archive for June, 2012
June 25, 2012
I've pretty much wrung-out the possibilities of propagating by grafting, and wanted to delve into some other hard-to-propagate fruits, and so I've ventured into the rarefied air of plant tissue culture. Tissue Culture is growing embryonic plants from parts of the tree you wouldn't always think of for starting plants, like slices of the leaf. The sterile growing medium this cherry is in consists of tapioca starch, coconut milk, table sugar, minerals, vitamins, growth hormones, and a preservative. This clump will multiply and be divided into more jars, and continue to multiply until its time to change the hormone so it will grow roots. Photosynthesis is not necessary, as it bypasses the usual method of making food, where chlorophyll takes sunlight and water to make glucose. The plant takes up sugar directly from the medium and actually grows better in the dark. Gardening in a baby food jar with no bugs, no disease, no sunlight, and the end result is clean, vigorous plants; there's a lot to like about this.


text:
Location is next to old Hamilton Smokestack, 26810 – 98th Ave NW, Stanwood, by the former lumber mill smokestack.
Make connections to the river on the Old Stillaguamish River channel across from the Zis-A-Ba estuary. Look for birds and learn about salmon lifecycle, this rich intertidal estuary habitat reconnects the river and Puget Sound. The mudflats, river channels, wetlands and riparian areas benefit birds and salmon.
Find Sound Water Stewards Pop-Up at the Water's Edge! This week at Hamilton Landing in Stanwood.
We live next to the amazing saltwater bay named Port Susan and the freshwater Stillaguamish River. The mixing of salt and fresh water, the estuary, is a rich ecosystem that provides food for salmon, marine birds, and much more.
SWS pop-up booth sparks curiosity and strengthens a connection to marine and shoreline ecosystems. We provide education to support visitors' voluntary actions to contribute to a healthy marine environment and offer ways to explore, enjoy, and learn while causing no harm. We believe people will take care of what they love and this is one of the places you'll learn to love.
Learn more about Hamilton Landing – the site of a future waterfront river-access park:
Every Thursday for Summer 2022, retired State Parks Interpreter Tina Dinzl-Pederson, SWS Class of 2016, assisted by Sound Water Stewards' members, sets up a pop-up educational booth at an Island County Park on Camano or Landing Park in Stanwood offering beach visitors an opportunity to learn about the local marine ecosystem with Sound Water Stewards.
Pop-ups occur on THURSDAYS, 10 am to 3 pm, site varies each week.
Stewards: Sign Up Here to help!


text:
AutoCAD Draftsman - Piping (5-10 yrs)
Job Description :
1. Proficient in Piping and Mechanical drawing using AutoCAD.
2. Good knowledge of basic Piping design, Pipe routing, Pipe sizing, Piping Material Specifications, and Piping layout.
3. Development of Inspection Isometrics referring inspection reports and Inspection sketches to support corrosion monitoring campaigns.
4. Updating of existing Piping isometrics with regards to latest inspection reports.
5. Coordination with team members in timely submission of deliverables.
6. Creating, Updating, and Maintaining Registers such as Piping Asset Register, Master Equipment List, Anomaly registers, etc.
7. Should be proficient in using MS office.


Ask a Paleontologist: How Did Dinosaurs Reproduce?
On Exhibit posts
How did dinosaurs reproduce? The Central Asiatic Expeditions, led by the Museum's Roy Chapman Andrews and Walter Granger, discovered some of the earliest, well-preserved dinosaur eggs in Mongolia during the 1920s. The oval-shaped eggs, about 20 cm long, were thought to belong to the most commonly found dinosaur at the Flaming Cliffs, Protoceratops.
However, Museum expeditions in the 1990s discovered identical eggs, one of which contained the embryo of an Oviraptor-like dinosaur, which altered our view of which dinosaur laid these eggs.
Oviraptor fossil with eggs
Oviraptor fossil with eggs
© AMNH/D. Finnin
Also, skeletons of Oviraptor were discovered squatting on top of clusters of eggs, with their arms folded back against their body, just like many living birds brood on their nests.


text:
Same Model
If you apply both forward and reverse geocoding functionality to the same model (say users can supply an address or coordinates and you want to fill in whatever's missing), you will provide two address methods:
one for storing the fetched address (reverse geocoding)
one for providing an address to use when fetching coordinates (forward geocoding)
class Venue # build an address from street, city, and state attributes geocoded_by :address_from_components # store the fetched address in the full_address attribute reverse_geocoded_by :latitude, :longitude, :address => :full_address end
However, there can be only one set of latitude/longitude attributes, and whichever you specify last will be used. For example:
class Venue geocoded_by :address, :latitude => :fetched_latitude, # this will be overridden by the below :longitude => :fetched_longitude # same here reverse_geocoded_by :latitude, :longitude end
The reason for this is that we don't want ambiguity when doing distance calculations. We need a single, authoritative source for coordinates!
Request Geocoding by IP Address
Geocoder adds a location method to the standard Rack::Request object so you can easily look up the location of any HTTP request by IP address. For example, in a Rails controller or a Sinatra app:
# returns Geocoder::Result object result = request.location
Use Outside of Rails
You can use Geocoder outside of Rails by calling the Geocoder.search method:
results = Geocoder.search("McCarren Park, Brooklyn, NY")
This returns an array of Geocoder::Result objects with all information provided by the geocoding service. Please see above and in the code for details.
Distance Queries in SQLite
SQLite's lack of trigonometric functions requires an alternate implementation of the near scope. When using SQLite, Geocoder will automatically use a less accurate algorithm for finding objects near a given point. Results of this algorithm should not be trusted too much as it will return objects that are outside the given radius, along with inaccurate distance and bearing calculations.
There are few options for finding objects near a given point in SQLite without installing extensions:
Use a square instead of a circle for finding nearby points. For example, if you want to find points near 40.71, 100.23, search for objects with latitude between 39.71 and 41.71 and longitude between 99.23 and 101.23. One degree of latitude or longitude is at most 69 miles so divide your radius (in miles) by 69.0 to get the amount to add and subtract from your center coordinates to get the upper and lower bounds. The results will not be very accurate (you'll get points outside the desired radius), but you will get all the points within the required radius.
Load all objects into memory and compute distances between them using the Geocoder::Calculations.distance_between method. This will produce accurate results but will be very slow (and use a lot of memory) if you have a lot of objects in your database.
If you have a large number of objects (so you can't use approach #2) and you need accurate results (better than approach #1 will give), you can use a combination of the two. Get all the objects within a square around your center point, and then eliminate the ones that are too far away using Geocoder::Calculations.distance_between.
Because Geocoder needs to provide this functionality as a scope, we must go with option #1, but feel free to implement #2 or #3 if you need more accuracy.
You cannot use the near scope with another scope that provides an includes option because the SELECT clause generated by near will overwrite it (or vice versa). Instead, try using joins and pass a :select option to the near scope to get the columns you want. For example, in Rails 2 syntax:
# instead of :includes => :venues: City.near("Omaha, NE", 20, :select => "venues.*").all(:joins => :venues)
If anyone has a more elegant solution to this problem I am very interested in seeing it.
add support for more ORMs (Mongoid, DataMapper)
add support for more geocoding services
maintain the same simple interface
Copyright © 2009-11 Alex Reisner, released under the MIT license


TCPView works on Windows NT/2000/XP and Windows 98/Me. You can use TCPView on Windows 95 if you get the Windows 95 Winsock 2 Update from Microsoft.
Using TCPView
When you start TCPView it will enumerate all active TCP and UDP endpoints, resolving all IP addresses to their domain name versions. You can use atoolbar button or menu item to toggle the display of resolved names. On Windows XP systems, TCPView shows the name of the process that owns each endpoint.
Tcpvcon Usage
Show all endpoints (default is to show established TCP connections).
Print output as CSV.
Don't resolve addresses.
Source Code to Netstatp
Wonder how TCPView works? Netstatp is a program with source that demonstrates how to program some of TCPView's functionality. It shows how to use IP Helper interfaces, documented in MSDN, to obtain a list of TCP/IP endpoints. Note, however, that netstatp doesn't show process names on NT 4 and Win2K like TCPView and TCPVCon.


type = 'inline'
Introduction
Inline-Relational-Record-Editing (IRRE) offers a way of directly editing parent-child-relations in one backend view. New child records are created using AJAX calls to prevent a reload of the complete backend view.
type='inline' is a powerful element that allows handling a huge list of relations. This includes simple 1:n and nested 1:n-1:n relations, as well as various m:n relation scenarios with different view aspects and localization setups. Combined with other TCA properties in 'ctrl' and 'types', the sheer amount of different display variants is amazing.
Be aware that inline has been mostly designed to manage 1:n relations. In those relations one parent record can have multiple children, but one child is connected to only one parent. Children can not be moved from one parent to another.
The exception are m:n relations where a child can be connected via an intermediate table to multiple parents, and the intermediate table can have editable fields on its own, thus attaching additional information to one specific parent-child relation. In the core, the "FAL" / resource handling is an example of that. A parent record (for instance of table "tt_content") is connected via table "sys_file_reference" to one media resource in "sys_file". A sys_file record has table "sys_file_metadata" as child record which holds meta information details of the file in question (for instance a description). This information can be overwritten for the specific file resource used in "tt_content" by adding a new description in table "sys_file_reference". The various inline and field properties like "placeholder" help managing this complex setup in TCA.
Examples
Images
A nested 1:n to 1:n relation
A nested 1:n to 1:n relation
A typical FAL relation
A typical FAL relation
A m:n relation with combination box
A m:n relation with combination box
Simple 1:n relation
This combines a table companies with persons (employees):
'employees' => [
 'exclude' => 1,
 'label' => 'LLL:EXT:myextension/locallang_db.xml:company.employees',
 'config' => [
 'type' => 'inline',
 'foreign_table' => 'person',
 'foreign_field' => 'parentid',
 'foreign_table_field' => 'parenttable',
 'maxitems' => 10,
 'appearance' => [
 'collapseAll' => 1,
 'expandSingle' => 1,
 ],
 ],
],
File Abstraction Layer
Inline-type fields are massively used by the TYPO3 Core in the File Abstraction Layer (FAL) .
FAL provides an API for registering an inline-type field with relations to the "sys_file_reference" table containing information related to existing media. Here is how to use it for the "image" field of table "tt_content":
'image' => [
 'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.images',
 'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
 'image',
 [
 'appearance' => [
 'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
 ],
 // custom configuration for displaying fields in the overlay/reference table
 // to use the image overlay palette instead of the basic overlay palette
 'overrideChildTca' => [
 'types' => [
 '0' => [
 'showitem' => '
 --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
 --palette--;;filePalette'
 ],
 \TYPO3\CMS\Core\Resource\File::FILETYPE_TEXT => [
 'showitem' => '
 --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
 --palette--;;filePalette'
 ],
 ],
 ],
 ],
 $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
 ),
],
The method to call is \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig() which takes four parameters. The first one is the name of the field, the second one is an array of configuration options which will be merged with the default configuration. The third one is the list of allowed file types and the fourth one (not used above) the list of disallowed file types. The default field configuration into which the options (second call parameter) are merged looks like:
$fileFieldTCAConfig = [
 'type' => 'inline',
 'foreign_table' => 'sys_file_reference',
 'foreign_field' => 'uid_foreign',
 'foreign_sortby' => 'sorting_foreign',
 'foreign_table_field' => 'tablenames',
 'foreign_match_fields' => [
 'fieldname' => $fieldName
 ],
 'foreign_label' => 'uid_local',
 'foreign_selector' => 'uid_local',
 'overrideChildTca' => [
 'columns' => [
 'uid_local' => [
 'config' => [
 'appearance' => [
 'elementBrowserType' => 'file',
 'elementBrowserAllowed' => $allowedFileExtensions
 ],
 ],
 ],
 ],
 ],
 'filter' => [
 [
 'userFunc' => 'TYPO3\\CMS\\Core\\Resource\\Filter\\FileExtensionFilter->filterInlineChildren',
 'parameters' => [
 'allowedFileExtensions' => $allowedFileExtensions,
 'disallowedFileExtensions' => $disallowedFileExtensions
 ]
 ]
 ],
 'appearance' => [
 'useSortable' => true,
 'headerThumbnail' => [
 'field' => 'uid_local',
 'width' => '45',
 'height' => '45c',
 ],
 'showPossibleLocalizationRecords' => false,
 'showRemovedLocalizationRecords' => false,
 'showSynchronizationLink' => false,
 'showAllLocalizationLink' => false,
 'enabledControls' => [
 'info' => false,
 'new' => false,
 'dragdrop' => true,
 'sort' => false,
 'hide' => true,
 'delete' => true,
 'localize' => true,
 ],
 ],
];
Attributes on anti-symmetric intermediate table
This example combines companies with persons (employees) using an intermediate table. It is also possible to add attributes to every relation – in this example, an attribute "jobtype" on the "person_company" table is defined. It is also possible to look at the relation from both sides (parent and child):
$GLOBALS['TCA']['person'] = [
 'columns' => [
 'employers' => [
 'label' => 'LLL:EXT:myextension/locallang_db.xml:person.employers',
 'config' => [
 'type' => 'inline',
 'foreign_table' => 'person_company',
 'foreign_field' => 'person',
 'foreign_label' => 'company',
 ],
 ],
 ],
];
$GLOBALS['TCA']['company'] = [
 'columns' => [
 'employees' => [
 'label' => 'LLL:EXT:myextension/locallang_db.xml:company.employees',
 'config' => [
 'type' => 'inline',
 'foreign_table' => 'person_company',
 'foreign_field' => 'company',
 'foreign_label' => 'person',
 ],
 ],
 ],
];
$GLOBALS['TCA']['person_company'] = [
 'columns' => [
 'person' => [
 'label' => 'LLL:EXT:myextension/locallang_db.xml:person_company.person',
 'config' => [
 'type' => 'select',
 'renderType' =>


text:
A Hybrid Approach for Efficient Provenance Storage
Efficient provenance storage is an essential step towards the adoption of provenance. In this paper, the authors analyze the provenance collected from multiple workloads with a view towards efficient storage. Based on their analysis, they characterize the properties of provenance with respect to long term storage. They then propose a hybrid scheme that takes advantage of the graph structure of provenance data and the inherent duplication in provenance data. Their evaluation indicates that their hybrid scheme, a combination of web graph compression (adapted for provenance) and dictionary encoding, provides the best tradeo in terms of compression ratio, compression time and query performance when compared to other compression schemes.


text: This survey is a study of fish commercialized in Forto Velho, Rondônia, Brazil from 1934 until 1989. The area studied is the Madeira river in a region of extensive gold extraction activity and therefore subjected to mercury contamination. The results showed that from the total fish yield, the fruiteating species ranged from 39.3% (in 1984) to 49.5% (in 1989). Among them, tambaqui (Colossoma macropomum) is the most captured mass. 22.9% (in 1939) to 32.5 (in 1936) of the species are detritivore and Curimata (Prochilodus nigricans) is the most important. Only 10.7% (in 1935) to 15.1%. (in 1934) are carnivore (Tucunare-Cichla spp and Pourada-Brachyplatystoma flavicans). The paper also deals with some of the ecological factors which can interfere with mercury accumulation in the food chain.


text:
STACEES is the St Andrews Network for Climate, Energy, Environment and Sustainability. We are a vibrant and diverse community of researchers based at the University of St Andrews, where we launched in April 2021.
Connecting with Bonn: Sustainability Research & Cooperation
30 May 2022, 12:00 to 13:30. Lunchtime networking event. Event information Would you like to know more about the Bonn Alliance for Sustainability Research and Bonn-St Andrews funding opportunities? STACEES are delighted to announce a talk by Dr Sandra Gilgan, Managing Director of the Bonn Alliance for Sustainability Research as part of her Erasmus+ visit to the University … Read more
Digitalisation and Sustainability at Home
24 May 2022, 11:00 to 12:00. Research seminar. Speaker: Dr Louise Reid (School of Geography & Sustainable Development, University of St Andrews) Abstract In November 2021, the United Nations Environment Programme published an Early Warning, Emerging Issues and Futures paper highlighting the growing environmental footprint of digitalisation, specifically the increase in energy demand, impacts from minerals and … Read more
Communicating Climate through Arts
29 April 2022, 12:00 to 13:00. Research seminar. Speakers: Olivia Booker and Claudia Lubao (PhD candidates, University of St Andrews) Abstracts Claudia Lubao (PhD candidate, School of Earth and Environmental Sciences)'The act of Musicalizing in Tanzania'This talk focuses on how popular music can be used as one of the strategies to change, mitigate and raise … Read more
Environmental Humanities @ St Andrews workshop: our contributions to climate research
18 March 2022, 10:00-12:00. STACEES and the Scottish Arts and Humanities Alliance (SAHA)* warmly invite members of the University of St Andrews research community working on or with an interest in the environmental humanities to join us for this virtual workshop. Participation is welcomed from all career stages, including students. Colleagues and students who do … Read more
STACEES @ Sustainability Fayre
11 February 2022, 13:00 to 15:00. STACEES participated with a stall at the Sustainability Fayre in the Large Rehearsal Room in the Union. Hosted by The Environment Subcommittee and Transition, the fayre's goal was to equip students/attendees with the knowledge or practice of how to integrate an aspect of sustainability into their everyday lives.


possible deployment topologies, it's not always trivial to select the most appropriate strategy suitable for your use case.
In this blog post, we cover the following aspects of running Kafka clusters on AWS:
 - Deployment considerations and patterns
 - Storage options
 - Instance types
 - Networking
 - Upgrades
 - Performance tuning
 - Monitoring
 - Security
 - Backup and restore
Note: While implementing Kafka clusters in a production environment, make sure also to consider factors like your number of messages, message size, monitoring, failure handling, and any operational issues.
Deployment considerations and patterns
In this section, we discuss various deployment options available for Kafka on AWS, along with pros and cons of each option. A successful deployment starts with thoughtful consideration of these options. Considering availability, consistency, and operational overhead of the deployment helps when choosing the right option.
Single AWS Region, Three Availability Zones, All Active
One typical deployment pattern (all active) is in a single AWS Region with three Availability Zones (AZs). One Kafka cluster is deployed in each AZ along with Apache ZooKeeper and Kafka producer and consumer instances as shown in the illustration following.
In this pattern, this is the Kafka cluster deployment:
 - Kafka producers and Kafka cluster are deployed on each AZ.
 - Data is distributed evenly across three Kafka clusters by using Elastic Load Balancer.
 - Kafka consumers aggregate data from all three Kafka clusters.
Kafka cluster failover occurs this way:
 - Mark down all Kafka producers
 - Stop consumers
 - Debug and restack Kafka
 - Restart consumers
 - Restart Kafka producers
Following are the pros and cons of this pattern.
Pros Cons
 - Highly available
 - Can sustain the failure of two AZs
 - No message loss during failover
 - Simple deployment

 - Very high operational overhead:
 - All changes need to be deployed three times, one for each Kafka cluster
 - Maintaining and monitoring three Kafka clusters
 - Maintaining and monitoring three consumer clusters
A restart is required for patching and upgrading brokers in a Kafka cluster. In this approach, a rolling upgrade is done separately for each cluster.
Single Region, Three Availability Zones, Active-Standby
Another typical deployment pattern (active-standby) is in a single AWS Region with a single Kafka cluster and Kafka brokers and Zookeepers distributed across three AZs. Another similar Kafka cluster acts as a standby as shown in the illustration following. You can use Kafka mirroring with MirrorMaker to replicate messages between any two clusters.
In this pattern, this is the Kafka cluster deployment:
 - Kafka producers are deployed on all three AZs.
 - Only one Kafka cluster is deployed across three AZs (active).
 - ZooKeeper instances are deployed on each AZ.
 - Brokers are spread evenly across all three AZs.
 - Kafka consumers can be deployed across all three AZs.
 - Standby Kafka producers and a Multi-AZ Kafka cluster are part of the deployment.
Kafka cluster failover occurs this way:
 - Switch traffic to standby Kafka producers cluster and Kafka cluster.
 - Restart consumers to consume from standby Kafka cluster.
Following are the pros and cons of this pattern.
Pros Cons
 - Less operational overhead when compared to the first option
 - Only one Kafka cluster to manage and consume data from
 - Can handle single AZ failures without activating a standby Kafka cluster
 - Added latency due to cross-AZ data transfer among Kafka brokers
 - For Kafka versions before 0.10, replicas for topic partitions have to be assigned so they're distributed to the brokers on different AZs (rack-awareness)
 - The cluster can become unavailable in case of a network glitch, where ZooKeeper does not see Kafka brokers
 - Possibility of in-transit message loss during failover
Intuit recommends using a single Kafka cluster in one AWS Region, with brokers distributing across three AZs (single region, three AZs). This approach offers stronger fault tolerance than otherwise, because a failed AZ won't cause Kafka downtime.
Storage options
There are two storage options for file storage in Amazon EC2:
Ephemeral storage is local to the Amazon EC2 instance. It can provide high IOPS based on the instance type. On the other hand, Amazon EBS volumes offer higher resiliency and you can configure IOPS based on your storage needs. EBS volumes also offer some distinct advantages in terms of recovery time. Your choice of storage is closely related to the type of workload supported by your Kafka cluster.
Kafka provides built-in fault tolerance by replicating data partitions across a configurable number of instances. If a broker fails, you can recover it by fetching all the data from other brokers in the cluster that host the other replicas. Depending on the size of the data transfer, it can affect recovery process and network traffic. These in turn eventually affect the cluster's performance.
The following table contrasts the benefits of using an instance store versus using EBS for storage.
Instance store EBS
 - Instance storage is recommended for large- and medium-sized Kafka clusters. For a large cluster, read/write traffic is distributed across a high number of brokers, so the loss of a broker has less of an impact. However, for smaller clusters, a quick recovery for the failed node is important, but a failed broker takes longer and requires more network traffic for a smaller Kafka cluster.
 - Storage-optimized instances like h1, i3, and d2 are an ideal choice for distributed applications like Kafka.

 - The primary advantage of using EBS in a Kafka deployment is that it significantly reduces data-transfer traffic when a broker fails or must be replaced. The replacement broker joins the cluster much faster.
 - Data stored on EBS is persisted in case of an instance failure or termination. The broker's data stored on an EBS volume remains intact, and you can mount the EBS volume to a new EC2 instance. Most of the replicated data for the replacement broker is already available in the EBS volume and need not be copied over the network from another broker. Only the changes made after the original broker failure need to be transferred across the network. That makes this process much faster.

Intuit chose EBS because of their frequent instance restacking requirements and also other benefits provided by EBS.
Generally, Kafka deployments use a replication factor of three. EBS offers replication within their service, so Intuit chose a replication factor of two instead of three.
Instance types
The choice of instance types is generally driven by the type of storage required for your streaming applications on a Kafka cluster. If your application requires ephemeral storage, h1, i3, and d2 instances are your best option.
Intuit used r3.xlarge instances for their brokers and r3.large for ZooKeeper, with ST1 (throughput optimized HDD) EBS for their Kafka cluster.
Here are sample benchmark numbers from Intuit tests.
Configuration Broker bytes (MB/s)
 - r3.xlarge
 - ST1 EBS
 - 12 brokers
 - 12 partitions

Aggregate 346.9
If you need EBS storage, then AWS has a newer-generation r4 instance. The r4 instance is superior to R3 in many ways:
 - It has a faster processor (Broadwell).
 - EBS is optimized by default.
 - It features networking based on Elastic Network Adapter (ENA), with up to 10 Gbps on smaller sizes.
 - It costs 20 percent less than R3.
Note: It's always best practice to check for the latest changes in instance types.
Networking
The network plays a very important role in a distributed system like Kafka. A fast and reliable network ensures that nodes can communicate with each other easily. The available network throughput controls the maximum amount of traffic that Kafka can handle. Network throughput, combined with disk storage, is often the governing factor for cluster sizing.
If you expect your cluster to receive high read/write traffic, select an instance type that offers 10-Gb/s performance.
In addition, choose an option that keeps interbroker network traffic on the private subnet, because this approach allows clients to connect to the brokers. Communication between brokers and clients uses the same network interface and port. For more details, see the documentation about IP addressing for EC2 instances.
If you are deploying in more than one AWS Region, you can connect the two VPCs in the two AWS Regions using cross-region VPC peering. However, be aware of the networking costs associated with cross-AZ deployments.
Upgrades
Kafka has a history of not being backward compatible, but its support of backward compatibility is getting better. During a Kafka upgrade, you should keep your producer and consumer clients on a version equal to or lower than the version you are upgrading from. After the upgrade is finished, you can start using a new protocol version and any new features it supports. There are three upgrade approaches available, discussed following.
Rolling or in-place upgrade
In a rolling or in-place upgrade scenario, upgrade one Kafka broker at a time. Take into consideration the recommendations for doing rolling restarts to avoid downtime for end users.
Downtime upgrade
If you can afford the downtime, you can take your entire cluster down, upgrade each Kafka broker


text: Brantley County dates to 1920 when the state legislature sliced and then combined parts of Charlton, Pierce and Wayne counties. Historians speculate that the county owes its name to either prominent landowner, Benjamin Daniel Brantley, or his son and U.S. congressman, William Gordon Brantley. Nahunta, the county seat, is not an Indian name, as one might guess. It was a timber stop on the railroad labeled N. A. Hunter Siding. The railroad men dubbed it "Nahunta."

source: HuggingFaceFW/fineweb-edu


Take the 2-minute tour ×
Suppose I'm instructing people to learn Chinese kungfu and I ask them to look at the direction, downward and forward(it's the movement of their eyes).
If I want to say "look forward and look downward at the same time", can I express it in the following way?
"look forward and downward."
I don't know if it's natural in English. If not, how should we say? Thank you in advance.
share|improve this question
Perhaps look straight down. Hmm, that doesn't sound quite right. – Damkerng T. Dec 17 '13 at 9:13
You might be interested in our related site: English Language Learners – Matt Эллен Dec 17 '13 at 9:14
Thank you. But can I say "look down in front of you" or " the flying insect is straight down (as you said) – longxianchen Dec 17 '13 at 9:29
I think straight down often implies below your feet (if you were standing). – chaosamoeba Mar 11 at 18:09
1 Answer 1
You can use either "look forward" or "look downward" in English but the instruction "look forward and downward" is a little confusing because the directions are considered somewhat different from each other.
Another complicating factor is the idiom, "forward and upward" which isn't directly related to physical directions. If you were to say "forward and downward" many people would associate the phrase with the idiom and assume you were invoking some form of wordplay.
The alternative you mention in the comments is much more clear:
Look down in front of you.
This is a relatively common expression and means exactly what you want it to mean. You can also omit "down":
Look in front of you.
Most English speakers will look slightly ahead of themselves and then scan downward looking for the intended object.
share|improve this answer
Your Answer


text:
which can be later used for viewing as on-demand smooth streaming contents.
Figure 8 – Client Output and Archive Output
For archive output, you can have the option to save the entire event as a single presentation or create segmented presentations each of which has a fixed duration. This option is useful if you want to publish some early portion of the live event as on-demand contents before the event is finished. If you disable the archive option, server will use temporary files to store data that are needed for client's DVR viewing and automatically delete them after the publishing point is stopped. So you still need to plan your disk space accordingly even if you disable archive option but still allow client DVR.
For client output, you can configure how much DVR window you want to make available to the client. For example, if it's a 2 – 3 hour sports event and you have enough disk space for holding all the content, you can just use the default "Enable DVR for the entire event". Or in another case, say you have a 24x7 always running live channel, you probably want to specify a DVR window limit so that the disk/memory usage is limited on both the server (potentially with archive disabled as well) and the client.
Putting it all together
Ok, so we've gone through all the possible inputs and outputs and their functionalities. Now let's take a look at a IIS Live Smooth Streaming server solution as an example and see how these inputs and outputs work.
Figure 9 – Live Smooth Streaming Server Solution Example
This is a topology that quite some live event deployments were derived from. There are five layers in this diagram: encoder, ingest, origin, distribution and client. The solid lines are the normal data flow path while the dotted lines are the backup/failover paths. First, let's go through each layer and see what their roles in this diagram are:
Encoders take in live source feeds and encode them into smooth streaming formats. Then it uses HTTP POST to send the streams to Ingest servers which as configured with push input streams.
2. Ingest Servers
Ingest servers are mainly for taking in encoder streams and then fanning them out to origin servers. To effectively achieve stream fan-out and redundancy, ingest servers use PUSH output streams to push to multiple (two in this diagram) origin servers simultaneously. Because ingest servers typically don't need to directly serve client requests or save local archives, these two options can be disabled.
3. Origin servers
In this solution, the origin server tier is the one that holds all the information about the live streaming, or a "single point of truth" as we would call. There are multiple origin servers running at the same time to provide scalability and redundancy. It has the capability to directly serve client requests. It can also be the source for distribution servers and synchronize past information with them if needed. To serve distribution servers, origin servers need to have the pull stream output enabled. To serve client requests either directly or indirectly through generic HTTP network which contains HTTP cache/proxy/edge servers, they need to have archive and client output options configured accordingly.
4. Distribution servers
Distribution servers can further scale out the network by offloading archiving and client request serving from the origin server tier. Distribution servers use pull input stream and are configured with multiple origin server URLs for redundancy. Distribution servers don't have to be started at the beginning of the event because they know how to synchronize with origin servers to provide full DVR access to the entire live event. Please refer to the "Pull Input Stream" section above.
Client is not really a tier in the server network. But I'd like to point out that because of the stateless nature of the smooth streaming protocol, the retry/failover logic from the client can happen at the HTTP request level. In another words, for each fragment request, the client is free to use whichever server that's available or provides the best throughput.
In terms of scalability, I think it is pretty obvious how it was achieved in this diagram. Now let's focus on what are the different failover scenarios and how this solution can handle them.
1. Encoder failover
If any one of the primary encoders failed, the connection to the ingest server will be broken. As we discussed in "Push Input Stream" section, the server will keep everything running and expecting new encoder push streams to come in. Once the backup encoder is up and running pushing to the same publishing point using the same "streamID" values, the live stream can continue. From the client's perspective, there will be a brief period of time that the latest live fragments for the broken streams/bitrates are not available. "Live" players that are on those bitrates will try to switch to other bitrates while players on other bitrates will not be affected.
Players in DVR mode will also not be affected since all servers are still capable of serving archived contents even when the live streams are down.
If the bandwidth between the encoders and the ingest servers are big enough, the backup encoders can behave as a hot backup meaning that they can encode and push to the same publishing points at the same time (see "Push Input Stream" section). Then in the encoder failover case, because there is a hot backup, the live stream can continue without any interruption.
2. Ingest failover
In normal condition, primary encoders push to primary ingest server which in turn pushes the same streams to two origin servers simultaneously. If, say, the primary ingest server failed, all connections among primary encoder, primary ingest server and origin servers will be broken. The encoder can detect this failure and starts pushing to the backup ingest server. The backup ingest server is configured exactly the same way as the primary ingest server and it will also in turn pushes the streams to the same origin servers, which will resume the live streams. The client side experience is similar to the encoder failover case.
Another option is to have the primary encoder pushing to both the primary ingest server and the backup ingest server at the same time if the bandwidth is not a concern. In that case, any single ingest server failover will not interrupt the live stream.
3. Origin failover
If one origin server failed, the other ones can serve as its backup immediately because they are all running and have the same data. Another aspect of it is that distribution servers also know where to re-request and retry the stream in the case of origin server failure. You can refer to "Pull Input Stream" section for more detail.
4. Distribution server failover
Just as origin servers, distribution servers are hot backups and can recover from server failure smoothly. This is especially true if the distribution server is used together with ARR (see "Pull Input Stream" section).
5. Client failover
Well, get another one. :)
Sometimes in real world deployment, you may have smart HTTP gateway devices that can automatically reroute HTTP requests to a server farm based on the server health information. In that case, you can just use URLs based on the virtual IP instead of hardcode multiple URLs. This would allow you to change a particular server tier without the need to modify settings in other tiers.
Hopefully by now you've got a better understanding about how input/out streams work in Live Smooth Streaming and how you can build a scalable and robust server solution with those options. Even though the example (as in Figure 9) we walked through is a compelling solution, it's certainly not the only way to build your network. As the team who designed and built the Live Smooth Streaming platform, our goal is to make it powerful and flexible enough to build the best solution you need. Needless to say, there are definitely things that we missed or could further improve, especially considering this is the very first release of this new technology. So please do share your thoughts with us. We would love to hear your feedback and make our platform better for you. Happy smooth streaming!


Name shadowing in VHDL
Posted on 2015-01-26 by Philippe Faes
Like many other languages, it is possible in VHDL to perform name scoping. This happens if you declare a new object in a nested scope that reuses the name of an object that was already declared. This is not an error in VHDL, but it can be confusing and it can cause errors. In general, I would advice against name scoping unless you have a very good reason. Even then, it would be best if you document (comment) your code so that everybody understands what is going on.
This is a straightforward example of name shadowing:
entity e0 is
end entity e0;
architecture demo of e0 is
 constant c : integer := 1;
 assert c = 1;
 myblock : block
 constant c : integer := 2;
 assert c = 2 report "the second declaration of constant c shadows the first";
 end block myblock;
 assert c = 1 report "this is the scope of the first declaration again";
end architecture demo;
It gets more confusing if you shadow names from the a standardized package:
architecture demo2 of e0 is
 constant true : boolean := false; -- shadowing the name "true". Bad idea!
 assert false = true;
end architecture demo;
A common misconception is that loop iterators need to be declared beforehand. They don't, because they are declared implicitly in the loop statement.
architecture demo4 of e0 is
 process is
 variable i: integer := 1;
 assert i = 1;
 i := 5;
 assert i = 5;
 for i in 0 to 10 loop -- this is a different object, shadowing the variable i
 report integer'image(i);
 -- i behaves like a constant here
 i := i+1; -- error! cannot assign to constants!
 end loop;
 assert i = 5; -- this is still the variable, declared in the process
 i := i+1;
 assert i = 6;
 end process ;
end architecture;
Note: you can reach these shadowed names by using their expanded names:
entity fun is
end entity;
architecture hide of fun is
 example : process is
 variable x : integer := 0;
 procedure changevar (x : integer) is
 hide.example.x := x; -- or example.x
 end procedure;
 report "x=" & integer'image(x);
 end process;
end architecture;
VSIM 1> run -all
# ** Note: x=5
# Time: 0 ns Iteration: 0 Instance: /fun
comments powered by Disqus


text:
Main Article Content
This study aims to identify architecture in coastal areas that are influenced by acculturation. Indonesia is the second country with the longest coastal area in the world. Coastal areas are un-secluded areas that have the potential to open up access to economic, social, and cultural factors. The wide-open cultural access causes the coastal areas to have diversity in architecture, Cultural acculturation is a process of cultural fusion as a result of blending immigrants culture with the local culture. The architecture of the coastal area has specific characteristics with several forms of amalgamation from immigrant culture's influence. Using a qualitative approach with the literature study method. The diversity of architecture in Indonesia's coastal areas includes traditional architecture, modern and contemporary architecture. According to historical records, most of the immigrants who entered Indonesia through various coastal areas were ethnic Chinese, Arabs, and Dutch. The culture of the immigrants is mixed with the culture of the local community. In its development, the mixture of cultures from China, Arabic, and the Netherlands gave a significant influence on the architecture of coastal communities. The mixing of cultures is manifested in various values ??and forms in the figure and form of the architecture. Chinese architecture, Arabic architecture, and Colonial architecture are forms of cultural acculturation.


Take the 2-minute tour ×
I have a long list of data in Excel 2007. Using the Hyperlink function:
I've added individual links to them all. Now I want to get rid of the function and just leave the data with the link.
If I do Paste Special > Values, it does the job but the link will be removed.
How can I paste the values and keep the hyperlink?
share|improve this question
add comment
2 Answers
How about a paste out to Word? (and then copy it there and paste back into Excel if you really need it back in Excel).
This retains both the link and the title, and is clickable.
No paste special required, although depending on your settings you may get some naff formatting inherited from the the default tabel format in Word. You can get round this using the paste options in Word to keep the source formatting.
share|improve this answer
Just what I was after! Novel solution. – cw84 Mar 18 '13 at 16:04
add comment
Errrr, the function is the link. There's no such thing as a clickable link without that function. (Consider this: which value would you expect when pasting something that is both a clickable link and a title? C2 or A2?)
You could replace the function with just C2. After that, using Paste Values will give you a non-clickable link. (But: you would already have that very same non-clickable link in C2 itself, so in the end that's useless.)
Or, if you expect some HTML magic: use something like the following, which is not clickable in Excel, but may be helpful when you use the result elsewhere:
= "" & A2 & ""
(Where & is the short notation for function CONCATENATE.)
share|improve this answer
Ok but if say I write some text in a cell and right click --> add hyperlink and then add a link that way. The cell retains the text in the formula bar and adds the link as a kind of meta data. Right now the cells i have linked contain this =HYPERLINK(C2,A2) in the formula bar. – Pete Sep 26 '09 at 2:38
Can you also perform that right-click trick on part of the text? (Just like you could make part of the text appear in bold, etcetera.) And what happens when using Paste Values on cells on which you've used that right-click option? – Arjan Sep 26 '09 at 10:36
add comment
Your Answer


text: In this paper, a new multiobjective optimization approach is proposed for the selection of the optimal values for cutting conditions in the face milling of cobalt-based alloys. This approach aims to handle the possible manufacturing errors in the design stage. These errors are taken into consideration as a change in design parameter, and the design most robust to change is selected as the optimum design. Experiments on a cobalt-based superalloy were performed to investigate the effect of cutting speed, feed rate and cutting depth on the cutting forces under dry conditions. Material removal rate values were also obtained. Minimizing cutting forces and maximizing the material removal were considered as objectives. It is believed that the used method provides a robust way of looking at the optimum parameter selection problems.


text:
Water levels on Lake Nipissing have lowered enough for the flood warning to be downgraded to a watch and the Parks Creek Backflood Control Structure to be shut down by the North Bay-Mattawa Conservation Authority.
A flood warning for Lake Nipissing had been in place since April 25.
"A flood watch notifies that the potential for flooding exists. Although water levels are trending down, water levels on Lake Nipissing remain higher than normal, affecting the lower reaches of the La Vase River, Parks Creek and Jessups Creek. Mattawa and the reminder of our jurisdiction remain under a water conditions statement for water safety," says authority duty officer Kurtis Romanchuk.
The pumps and logs were removed from the Parks Creek Backflood Control Structure and the waterway and Eva Wardlaw Conservation Area were reopened today.
Visitors to the conservation area as asked to use caution along the shoreline due to erosion. Restoration work is planned for the shoreline.
Memorial Drive, meanwhile, has been reopened to traffic following the removal today of auxiliary pumps from the city's wastewater treatment plant.
The pumps, along with temporary piping, were brought in several weeks ago to assist in the discharge of fully treated wastewater due to operational challenges caused by high water levels on Lake Nipissing.
The plant typically relies on gravity flow for the discharge of treated effluent. The pumps were used at times when water levels were too high to assist the plant in operating as it normally would.
Municipal boat launches at Sunset and Champlain parks are also now open, along with the trail that extends from Marathon Beach to Gorman Street.


Gorm Salomonsen
Learn More
We describe the theory behind a practical voting scheme based on homomorphic encryption. We give an example of an ElGamal-style encryption scheme, which can be used as the underlying cryptosystem. Then, we present efficient honest verifier zero-knowledge proofs that make the messages in the voting scheme shorter and easier to compute and verify, for voters(More)
 - 1


How Statistics Homework Determines The Photographer's Future
Photographer's Future
Remember the first time your kids took some shots with your camera phone. It was their first time and of course, they are not professional photographers. But guess what these are signs they will make good photographers in the future.
It might sound absurd but statistics does determine the future of the photographer. A good photographer will do well with the sound knowledge of statistics or other subjects involving calculations. This is why people can pay for statistics homework just to see the results. Let's find out how.
 1. Understanding the Rule of the third
A good photographer would obviously need a sound knowledge of statistics to excel. Take a look at the photos you have at home. Aren't they looking great? There is one formula that makes it possible to determine if something is great to the human eye. It is known as the rule of thirds.
The rule in question is simple to understand and also needs some statistical knowledge. You can have a pleasing composition of the image if this rule is applied well. The photographer's duty is to make sure that points of interest are placed along the lines of a grid of nine. This is also the area where the picture is shared into three main parts; vertically and horizontally. The view should also be divided fast.
The complex calculations in statistics are one of the reasons students dump statistics homework. Most of the calculations are abstract and difficult to understand. But if your dream is to become a professional photographer in the future, there is no point in running away from your statistics homework. It is very easy to find online help with statistics no matter how complex the homework is.
Writing service providers like have made things a lot easier for students to pass statistics assignment and broaden their understanding. They are written by experts who have sound knowledge and qualification on statistics.
 1. Making Use of the Camera
Pressing the green circle on the screen of the phone is what is used to take pictures. But there is more a professional photographer need to understand. The Single-lens reflex camera (SLR) is what the professional photographer uses. And to be effective, they need to know a thing or two about the depth of field and shutter speeds which will also involve sound statistical or mathematical knowledge. The shutter speed is used to determine how fast the camera blinks. The aperture, on the other hand, controls the amount of light that comes in.
As a photographer, one also needs to have a basic understanding of geometric sequence to determine the correct shutter speed. Calculations on shutter speed are in fractions of seconds. So photographers should be sound with calculations.
Most statistics homework is complex and difficult to understand. But students can seek statistics online help whenever they encounter challenges with their homework. There are dozens of professionals online who are willing to assist students to get good grades on their statistics assignment. So, if you want to become a professional photographer in the future, embrace statistics.


text:
- Which is better liquid or paste car wax?
- Are auto car washes bad?
- What does the wax do at the car wash?
- Does Car Wash Wax really work?
- What happens if you never wax your car?
- What happens if you don't wax your car?
- Can you double wax a car?
- Can waxing your car ruin the paint?
- What happens if you wax your car too much?
- Should I wax or polish my new car?
- How long does wax last on a vehicle?
- Is it bad to wax car in Sun?
- Is spray wax bad for your car?
- Is it bad to wax your car every week?
- Do you rinse after wax at car wash?
Which is better liquid or paste car wax?
Compared to paste wax, liquid waxes are gentler on your car's finish.
They are a better choice for newer cars or those with well-preserved finishes.
Paste wax typically contains more solvents and wax than liquid formulas, making paste more effective in removing old paint and embedded dirt..
Are auto car washes bad?
Sadly, the answer is potentially yes. While some types of car washes are worse than others, any time you wash your car—even if you are carefully hand washing it—you are essentially applying an abrasive and/or harsh chemicals to the paint finish and the risk of swirls and scratches in the finish is always there.
What does the wax do at the car wash?
A hot wax car wash creates a barrier between elements and your car's paint. It shields the car from minor physical abuse such as scraping by grime and grit during washing. In addition, it makes washing much easier. For dark colored cars, an additional waxing annually gives better results.
Does Car Wash Wax really work?
While most car experts agree that any wax is better than no wax, the professional consensus is that if you want it done right, it should be done by hand. Spray-on wax does help a little, but it doesn't provide even close to the same level of protection as wax applied by hand.
What happens if you never wax your car?
For example, if you don't wax your car, you're just letting tiny scratches stick around and possibly exposing the paint to damage over time. Plus, not waxing your car means you're missing out on the chance to drive around in a car that looks shiny and brand new!
What happens if you don't wax your car?
By not waxing your car on a regular basis, you are giving these corrosive substances a better chance of damaging the clear coat (the finish on top that seals the paint) and exposing the paint below. In addition, you're making it harder to clean the car.
Can you double wax a car?
Aside from being wasteful, a thick layer of wax won't make your car any shinier. … For extra protection, you can do a double wax by simply repeating the aforementioned steps. When possible, you should use a nano-shield synthetic wax for the first layer followed by a show car wax to top it off.
Can waxing your car ruin the paint?
Waxing does not damage the paint of the car unless you do it wrong. … There are many types of wax, and for new cars the one you want is a non-abrasive one that does not 'eat' away the surface layer of your paint.
What happens if you wax your car too much?
Applying too much can make your coat uneven, and also makes for a long cleanup process. After the wax is applied, use microfiber towels to wipe up any excess. In addition to wiping off residue, microfiber will also buff the car's paint job.
Should I wax or polish my new car?
Waxing helps to protect the car and produce a high shine. You should wax your car approximately every 3 months, but polishing only needs to be done when you notice problem spots. Ultimately you should check out your car after washing but before waxing to see if you need to use polish.
How long does wax last on a vehicle?
3 to 6 monthsTypically, wax has been built to last 3 to 6 months, which is all dependent on the quality of your car to begin with and where and how you are driving it. If you park in the sun all day long, the wax is not going to last as long; if it is in shade, it will last longer.
Is it bad to wax car in Sun?
It is best to wax your car in the shade on especially warm days. If the sun is beating down onto your car as you wax, then it will bake the wax onto your car making the wax very difficult to remove, which can actually do more harm than good to your coat of paint.
Is spray wax bad for your car?
This product is safe for every exterior part of your car. That includes the paint, fiberglass, and clear coat, as well as any exterior plastics. Plus, any metal on your car—including chrome, aluminum, and stainless steel—is a good candidate for an application of 303 Automotive Spray Wax.
Is it bad to wax your car every week?
It's fine to wax your car every week. It 's not going to hurt anything as long as you follow the correct procedure. It's good that you like to take care of your car like that. Most people are too lazy to wax at all.
Do you rinse after wax at car wash?
Always rinse before moving onto wax and clear coat Soap doesn't chemically react well with the solutions used to maintain your clear coat or the high pressure wax most car washes use. You need to rinse it off first, that's why the car wash puts the rinse feature after the foaming brush in the order of their features.


text:
|Oracle® Fusion Applications Extensibility Guide
11g Release 1 (126.96.36.199)
Part Number E16691-02
This chapter describes how you can customize or extend user assistance help in your Oracle Fusion application to match any customizations.
This chapter contains the following sections:
When you customize an Oracle Fusion application, you may find you also need to customize or extend the existing help to match your changes. Oracle Fusion applications provide two different types of help.
Oracle Fusion Applications Help
Embedded static page-level help
This type of help is displayed directly on a page, using attributes of a component. The help text is included in the application.
Tip:Help text is stored in resource bundles, and so can be translated. For more information, see Chapter 16, "Translating Custom Text."
Embedded help includes the following:
Static instruction text: displayed by panel components that normally contain forms or tables. This instruction guides the user in filling out the form or using the table, as shown in Figure 18-2.
In-field help note: displayed by input components and guides the user in entering data into the component. Figure 18-3 shows an in-field note.
Terminology definition: displayed by input components and defines terms used on the page, as shown in Figure 18-4.
Bubble help: displayed when the end user mouses over a button or link component, as shown in Figure 18-5.
Help window: displayed when a user clicks the help icon, as shown in Figure 18-6. This type of help is generally brief context-sensitive help, and can also provide links to help files in Oracle Fusion Applications Help.
In Oracle Fusion Applications Help, you can change the content in existing help windows or you can create new help windows. Within a page of an application, you can customize or create bubble help, static instructions, in-field notes, terminology definitions, and help windows. This help text is stored either as a value for an attribute, or in translatable resource bundles.
Before you customize help, you should be familiar with the Oracle Fusion application architecture that enables customization, as described in Chapter 1, "Customizing and Extending Oracle Fusion Applications." You should also understand the typical workflows for working with customizations, as described in Chapter 2, "Understanding the Customization Development Lifecycle."
You will also need to do the following before you can begin customizing help:
If you will be adding or customizing Oracle Fusion Applications Help, you will need the correct privileges. Please contact your security administrator for details.
Install JDeveloper and set up your development environment. For more information, see "Chapter 2 Setting Up Your Development Environment" of the Oracle Fusion Applications Developer's Guide.
Create a customization application workspace. For more information, see Chapter 10, "Using JDeveloper for Customizations."
Launch JDeveloper in the Oracle Fusion Applications Administrator Customization role.
Select a layer value. When customizing application artifacts in JDeveloper, you first need to select the layer and layer value to work in. You use the Customization Context window to make this selection. For more information about customization layers, see Section 1.2, "Understanding Customization Layers.""
You can customize existing help files in Oracle Fusion Applications Help, or you can extend Oracle Fusion Applications Help by adding custom topics.
Once created, custom help files are distinguished by an icon in search results, and they are displayed at the top of help listings when you navigate.
Task: Customize Oracle Fusion Applications Help Windows
When you have the correct privileges, help windows in Oracle Fusion Applications Help display a Manage Custom Help link, which allows you to change the content and specify in which help windows in the application your custom help will appear, and where it will appear in the help site navigators. For more information, see the "Define Help Configuration" section in the Oracle Fusion Applications Common Implementation Guide.
Task: Add Custom Help Files to Oracle Fusion Applications Help
You can add new custom help files to Oracle Fusion Applications Help. Custom help files will appear like standard help files and can be searched and included in help windows and navigators. For more information, see the "Define Help Configuration" section in the Oracle Fusion Applications Common Implementation Guide.
For bubble help, you can use CRM Application Composer or Oracle Composer to customize or create the help text.
The following components use bubble help.
Task: Customize or Add Bubble Help
The text displayed in bubble help is the value of the component's
shortDesc attribute. Normally, the value resolves to a key in a resource bundle. If your are customizing a CRM application, you can use CRM Application Composer to customize the value of the attribute. For more information, see Section 4.2, "Editing Objects." For other applications, you use Oracle Composer to customize the attribute. For more information, see Section 3.3, "Editing Component Properties in Oracle Composer."
Oracle Fusion Applications embedded help (aside from bubble help) uses two types of ADF Faces help: instruction and definition. Instruction-type help displays static text, either in a specified area on a component (like static instruction help, shown in Figure 18-2), or in a note window, as in-field notes do, shown in Figure 18-3. Definition-type help displays a help icon, and is what terminology definition embedded help uses, as shown in Figure 18-4. When the user mouses over the help icon, the help text displays in a message box. UI components display the instruction and definition help text using the
helpTopicId attribute. For more information about the ADF Faces help framework, see the "Displaying Help for Components" section of the Oracle Fusion Middleware Web User Interface Developer's Guide for Oracle Application Development Framework.
It is important that for the type of help you want to add or customize, you understand which component actually displays the help, and which type of ADF Faces help is being used. Table 18-1 shows the different types of Oracle Fusion Applications embedded help, the corresponding ADF Faces help, and the components that display that type of help.
Table 18-1 Oracle Fusion Applications Help and Corresponding ADF Faces Help and UI Components
|Oracle Fusion Application Help Type||ADF Faces Help Type||Component|
You perform the following tasks in JDeveloper in the Oracle Fusion Applications Administrator Customization role.
Note:You cannot directly customize the existing help text strings. If you want to change text that currently appears, you need to create a new text string and associate the component with that new text.
Task: Add Help Strings to Resource Bundle
Add custom help text strings to an existing custom resource bundle or create a new resource bundle to hold your customized help text (Oracle Fusion applications use XLIFF files for resource bundles). If you create a new resource file, you must register that file with the project. For information about creating and using resource bundles for an Oracle Fusion application, see Section 11.10, "Customizing or Adding Resource Bundles."
The help text must use the following syntax:
: Enter the topic ID. This must contain a unique prefix, the topic name, and the help type, either INSTRUCTION or DEFINITION.
Note:You prefix must unique. You must use this prefix for all your custom help strings.
In this example, MYCUSTHELPis the prefix used to access the XLIFF file. NEWHELPTOPIC is the topic name, and DEFINITION is the type of ADF Faces help.UI components access the help content based on the topic name. Therefore, if you use the same topic name for two different types of help (instruction and definition), then both types of help will be displayed by the UI component.
: Create as a direct child of the
 element and enter the help text.
: Create as a direct child of the
 element and leave it blank. This will hold translated text populated by translation tools.
: Create as a direct child of the
 element and enter a description for the help text.
Example 18-1 shows an example of a resource file that contains two topics.
Example 18-1 XLIFF Resource Bundle
 Credit Card Definition This is the credit card definition text. Credit Card Instructions This is the credit card instruction text.
Task: Associate the Component with the Help Strings
In JDeveloper, select the component to display the help. Associate that component with the
 element in the resource bundle, using the component's
helpTopicID attribute. Ensure that the component supports the type of help (that is, definition or instruction) defined in the trans-unit id. For instructions, see the "How to Access Help Content from a UI Component" section of the Oracle Fusion Middleware Web User Interface Developer's Guide for Oracle Application Development Framework.