<IP_ADDRESS>. Reference Curve of the log-plot
<IP_ADDRESS>. Add Track to Log-plot
<IP_ADDRESS>. Delete Tracks from log-plot
<IP_ADDRESS>. Edit Track properties
<IP_ADDRESS>. Bulk edit track properties
<IP_ADDRESS>.1. Add Curves to log-plot
<IP_ADDRESS>.2. Delete Curves from log track
<IP_ADDRESS>.3. Move curve between tracks
<IP_ADDRESS>.4. Edit Curve properties
<IP_ADDRESS>.5. Bulk edit curve properties
<IP_ADDRESS>.6. Reverse curve display
<IP_ADDRESS>.7. Create cross-plot from 2 curves on log-plot
<IP_ADDRESS>.8. Create histogram from the curve on log-plot
<IP_ADDRESS>. Curve pre-processing
11.2.3. Create shading for curves
<IP_ADDRESS>. Add a shading for curves
<IP_ADDRESS>.1. Setting up the header of shading
<IP_ADDRESS>.3. Variable Shading type
<IP_ADDRESS>. Move a Shading inside a log track
11.2.4. Create annotation in log track
<IP_ADDRESS>. Manage an annotation
11.2.5. Insert Plots in an Object Track
<IP_ADDRESS>. Create an object track from log-plot
11.2.6. Display Image Set in Log-Plot
11.2.7. Display Zonation and marker
<IP_ADDRESS>. Create and edit a Marker Set in Log-plot
<IP_ADDRESS>.1. Display marker set on log-plot
<IP_ADDRESS>.2. Create markers on log-plot
<IP_ADDRESS>.1. Edit Marker depth on log-plot
<IP_ADDRESS>.2. Delete marker from log-plot
<IP_ADDRESS>. Create and edit a Zone Set in Log-plot
<IP_ADDRESS>.1. Add zonation track on log-plot
<IP_ADDRESS>.2. Add zones on zonation track
<IP_ADDRESS>.3. Split zone on zonation track
<IP_ADDRESS>.4. Edit zone interval
<IP_ADDRESS>.5. Delete a zone from zonation track on log-plot
<IP_ADDRESS>. Display well correlation
<IP_ADDRESS>.1. Well correlation by zone set
<IP_ADDRESS>.2. Well correlation by a marker set
11.3. Building
a log-plot view
Log-Plot
is a useful tool that allows you to display every petrophysical type of data, including log, zone,
marker, text data, array data, core image, and core measurements of the Project Browser.
Figure 11‑1 Components of the Log-plot
ToolBar lists the actions available to manage a Log-plot
|
Icon |
Name
of Icon |
Description |
|
|
Reload |
Reload
to update the data in case there is anything changed in the database |
|
|
Save
log-plot as a template for the later use |
|
|
|
Edit
Format |
Set
up and change the log-plot format |
|
|
Print |
Prints
the log plot as PDF/Graphics files |
|
|
Scale |
Set up a log
vertical scale |
|
|
Zoom In |
Zoom in log
vertical scale |
|
|
Zoom Out |
Zoom out log
vertical scale |
|
|
Crop Display |
Focus on
interest area on Navigation Bar |
|
|
Range Specific |
Allows user to
define depth range and associated vertical scales setting |
|
|
View Whole Well |
View from top
to bottom of the current wells |
|
|
Add Depth Axis |
Add a new depth
track on the current log-plot |
|
|
Add Log Track |
Add a new log
track on the current log-plot |
|
|
Duplicate Log
Track |
Make a copy of
a set of current track settings, with all curves and shadings into a new
track |
|
|
Add Zonation
Track |
Add a new zone
track on the current log-plot |
|
|
Delete Track |
Remove the
selected track from current log-plot |
|
|
Add Annotation |
Add annotation
into a current track of log-plot |
|
|
Add Shading |
Create shading
between two curves or between a curve and a constant value on the current
track of log-plot |
|
|
Choose Default
Zone Template |
Choose a Zone Template to create new Zones on the current Zone track |
|
|
Choose Default
Marker Template |
Choose a Marker Template to create new Markers on the current Log track |
|
|
Create Cross-Plot |
Create a cross
plot chart between 2 selected curves on the current track of log-plot |
|
|
Create Histogram |
Create
histogram from the selected curve(s) on the current track of log-plot |
|
|
Auto Organize
Track |
Organize tracks
on current log-plot by well |
|
|
Track Bulk
Update |
Bulk edit
properties of multiple tracks at once |
|
|
Curve Bulk
Update |
Bulk edit
properties of multiple curves at once |
|
|
Reference Line |
View vertical
or horizontal lines in current log-plot |
|
|
Tooltip |
View curve values
on the x-axis and y-axis respectively |
Reference Track is always the first track of the log-plot window to quickly navigate along the borehole.
Click on this Reference Track to display log plots properties in the Properties Editor window
From Data tree, drag-and-drop a Curve you want to display as Reference Curve into the Reference Track. Reference Curve is available for all curves (except Text Curve).
Figure 11‑2 Reference Curve of the Log-plot
You can display the Reference Curve by the family’s curve’s scale.
Figure 11‑3 Navigation Bar of the Log-plot
By moving the Navigation Bar in Reference Track, the user can quickly navigate to any part of the log display in the main log plot window. The user can change the depth interval being displayed by drag the top and bottom of the Navigation Bar up or down to a new position.
Tip: You can also change the Log-plot Scale by holding Ctrl while scrolling.
Horizontal Scrollbar is located at the bottom of the log plot window, moves the display horizontally in increments of one track. Normally, it is better to simply expand the whole window if some of the tracks are not displayed
View Controller button () is located in the bottom right corner of the log plot window. Click on it to view all the Wells that are presenting in the current log-plot.
Users can hide Wells
from the Log-plot by clicking on Well-name
in the View Controller
Figure 11‑4 View Controller
Click Delete () icon next to the Well-name to delete all data of that well
Click on this Blank Space to display Log-plot’s properties in the Properties Editor window.
Each Log-plot has tree headers: Track, Variable, and Shading.
Figure 11‑5 Header of Log-plot
· Track Header: display Track name and Well name.
· Curve Header: display Curve name, unit, and scale of the curve.
· Shading Header: display Shading name, type, and color of the shading
The Header can be resized by clicking on the bottom border of the header area and dragging it up or down to a new size.
A Track is a vertical section of a log presentation over which one
particular set of data is displayed. I2G
supports 5 track types: Depth track, Log
track, Image track, Zonation track, and
Object tracking.
Depth Track
is displayed according to the available and selected datum such as MD, TVD,
TVDSS. By default, the MD reference depth (in general the measured depth) is
displayed in Depth Track.
Figure 11‑6 Depth Track
The
depth value is displayed in the center of Depth
Track.
Depth
‘ticks’ is also displayed on left and right of depth track as default
Users
can change the properties (Depth type, color, unit, …) of Depth Track in the Properties Editor window
Figure 11‑7 Depth Track properties
Note: you can only change the setting of the Ticks from the Log-plot properties in
the Properties Editor window
Figure 11‑8 Setting of the Ticks of Depth Track
Log Track is a track where curves are displayed. When you add/drag a curve into a log-plot, the curve is automatically displayed in a Log Track.
Figure 11‑9 Log Tracks
The value ticks of the log track
depend on the curve type that you are focusing on.
Figure 11‑10 Log Track types
Image Track is a track where a set of images along the wellbore are displayed. Refer to this article for more information.
Figure 11‑11 Image Track
The
Zonation Track displays correlation
line(s) between wells. If several wells are displayed in the Log-plot, you can
insert a zonation track for each well. Refer to this article for more information
Figure 11‑12 Zonation Track
Histograms and Cross-plots can be added to the Object Track. Refer to this article for more information.
Figure 11‑13 Object Track
I2G supports 4 curve types: Log, Core, Text Curve and Array data. To display data, select and drag one or multiple curves from the Project Browser to a Log-plot window. The curves for each family display according to the parameters set in the family database.
Figure 11‑14 Variable types in i2G
Baseline shift: uses graphically
define points as new references. The variable curve is shifted accordingly.
Refer to … for more information.
Log
Plot consists of Menu Bar, Navigation Bar, and View
Space as shown below (Figure 4.1.1).
I2G has 2 places to display the properties
of an object:
q Properties window: Located under Project Browser window, Properties
window structure may vary depending on the object(s) being selected at that
moment
q Properties
dialog: double-click or
right-click on an object and select object properties option to open it. In
this dialog, every option and setting will be displayed including advanced,
complicated ones. With this, every object in the log view is fully customizable
Right-click on the log-plot area or any existing track > select add type of track you want to. The new track will be added to the right of the previously selected one
Figure 11‑15 Add new Track into a log-plot
There are 2 ways to delete a track:
· Focus on Track and click Delete Track () icon on the Tool Bar
· Right-click on Track and select Delete Track from its context menu
Step 1. Focus on a Track Header and drag it away from the current place, the Track Header will move as you drag
Step 2. Hold down your cursor until the target Track is highlighted in blue > release your cursor, the Track has moved successfully to the new place
Figure 11‑16 Move Track
I2G has 2 places to display properties of the
track:
·
Properties
window: focus on a track (the track will be highlighted in yellow), now you
will see its properties in the Properties
Editor window
Figure 11‑17 Track Properties in Properties Editor window
·
Properties dialog: double-click or right-click on a track and
select curve properties option to open it.
Figure 11‑18 Open Track Properties dialog
§
Show title: allows the
user to tick on/off to display the title of the log track.
§
Title: Number
is displayed as default. The title of the log track allows the user to change the
name by manually typing text.
§
Top
justification: allows the user to change the alignment of title of depth track
by selecting 3 options: left, right and center
§
Show value grid: allows the user to tick on/off to display
the vertical grid line of log track. Tick on to display the vertical grid line
and tick off to un-display the vertical grid line. It is not necessary to define the linear/logarithmic
track, I2G will identify them automatically
§
Major ticks:
to set up the major gridlines on the log track, allows the user to type number.
The default value is 1.
§
Minor ticks count: allows the user to set up the minor
gridlines on the log track, the default value is 5.
§
Show the depth
grid: allows the user to tick on/off. Tick on the display of
the horizontal grid lines of the log track. The horizontal grid line is
identical to the major ticks of depth value. Tick off to un-display the
horizontal depth grid lines.
§
Width: allows the
user to change the width of log track by manually typing number
§
Width Unit: sets the
unit of track width as inch or cm
§
Track
color: select background color for log track by selecting a color from
Color Picker dialog.
§
Zone Set: select a
Zone Set to display zones boundaries on log track
§
Marker Set: select a
marker set to display markers on the log track. Users can choose different
marker set on tracks
Users can quickly edit the properties of multiple tracks on log-plot at the same time.
Click () icon on the Tool Bar to open “Track Bulk Update dialog. All the tracks of log-plot will be listed here.
Figure 11‑19 Bulk edit track properties
There are 2 ways
to add curves to log-plot:
· Drag and drop one or multiple Curves from the Project Browser to a Log-plot window
Figure 11‑20 Add curves to log-plot from Project browser
· Double-clicking on a Track to open Track Properties dialog, choose Curve tab and Select Curve from the dropdown box.
Figure 11‑21 Add curves from Track Properties dialog
There are 3 ways to delete a curve:
· Focus on Curve and press Delete button keyboard
· Right-click on Curve and select Remove Curve from its context menu
· Double-clicking on a Track to open Track Properties dialog, choose the Curve tab and click Remove () icon to delete the desired curve.
Step 1. Focus on a Curve and drag it away from the current Track, the Curve will move as you drag
Step 2. Hold down your cursor until the target Track is highlighted in blue > release your cursor, the target Track returns to white and the curve has moved successfully
Figure 11‑22 Move curve between tracks
I2G has 2 places to display properties of the
curve:
·
Properties
window: focus on a curve, you will see its properties in the Properties Editor
window
Figure 11‑23 Curve Properties in Properties Editor window
·
Properties dialog: double-click or right-click on a curve and
select curve properties option to open it.
Figure 11‑24 Open Curve Properties dialog
§
Name: allows the
user to define the name of a curve to display into the log plot by manually
typing text. Note: this name is not
linked to the curve name in the data tree.
§
Show header checkbox:
allows the user to tick on/off to display the header of the curve
§
Show dataset: tick on to
display the dataset that contains the selected curve. The name will display as
format @datasetName.@curveName
§
Left/Right
value: allows the user to define the left/right value of a
curve on a log track display. The family database defines the default scales of
a curve.
§
Scale: user can
choose to display curve as linear or logarithmic
§
Unit: user can
choose the compatible unit to display
§
Family Scale: returns the
Left/Right value to the family’s scale in database
§
Variable
scale: returns the Left/Right value to the curve’s scale itself
§
Display As: choose the
style of the display from the drop-down box:
+
Normal: display as
normal type.
+
Cumulative: is used,
for example, to plot lithology – type shading. The value plotted for a
cumulative style curve is equal to the curve value plus the values of all other
“cumulative” style curves in the log track whose names appear higher in
the curve list than the curve is plotted.
+
Mirror: will plot
the selected curve with its mirror image (same curve with reversed scale). The
gap between the two curves is shaded with the selected curve color.
+
Pid: the PID
style is designed to plot horizontal lines from the data point to the value
zero
§
Block
Position: allows
displaying curve line with block type like a fluid curve
§
Wrap mode: If the values
of the variable are outside of the horizontal axis limits, they are not
displayed unless you activate this Wrap display mode. There are 4 options: None, Left, Right and Both.
§
Display
mode: user can
choose the type to display of curve as Line,
Symbol, Both or None
§
Edit button:
allows users to modify the color, width and line/symbol styles
Users can quickly edit the properties of multiple curves on log-plot at the same time.
Click () icon on the Tool Bar to open “Curve Bulk Update dialog. All the curves of the log-plot will be listed here.
Figure 11‑25 Bulk edit curve properties
Tip: check Edit all line in track option (blue
row) to edit all of the curves in track with the same properties
The default scales for a curve are defined in the family database, the lower value on the left and the higher value on the right.
Right-click on a curve and choose Reverse Display to switch left value and right value.
Figure 11‑26 Reverse curve display
User can create cross-plot directly from log-plot in 2 ways:
· Select 2 curves in a log track and then click Cross-plot () icon on the Tool Bar
· Select 2 curves in a log track > right-click on it > choose Create Cross-plot option from its context menu
Figure 11‑27 Create cross-plot directly from 2 curves on log-plot
User can create histogram directly from log-plot in 2 ways:
· Select a curve in the log track and then click the Histogram () icon on the Tool Bar
· Right-click on a curve in the log track and choose Create Histogram option from its context menu
Figure 11‑28 Create histogram directly from a curve on log-plot
Right-click on a curve, users can quickly access a series of pre-processing tools such as Split Curve, Depth Shift, Baseline Shift, Smooth Curve, Edit Curve, and Fill Curve.
Figure 11‑29 Access to pre-processing tools from the curve on log track
It is not necessary to
define the text curve, I2G will identify them automatically and display that
curve on log track as text
Figure 11‑30 Display text curve on log track
Users can access text color, text size, background color, palette in the curve properties editor window or dialog.
Figure 11‑31 Text curve properties dialog
Figure 11‑32 Text curve properties window
There are 4 types to display text curve: Anchor, Palette, Palette-improved, and Boundary.
It is not necessary to
define the array curve, I2G will identify them automatically and display that
curve on log track as an array
Figure 11‑33 Display array curve on log track
There are 3 display types: Column, Waveform, and Matrix.
Users can access the array attributes such as column reading, interval value for waveform display, Y vertical axis, size & unit of window display and start/stop color in the Curve Properties dialog.
Figure 11‑34 Define array properties
There are 3 ways to create shading for curves on the log track:
· Create a shading from the Tool Bar
Step 1. Select 1 or 2 curves on log track with a left click
Step 2. Click Add Shading () icon on the Tool Bar
· Create a shading from the curve’s context menu
Step 1. Select 1 or 2 curves on log track with a left click
Step 2. Right-click on the selected curve and choose Create Shading option from its context menu
Figure 11‑35 Create a shading from the curve’s context menu
· Create a shading from the Track Properties dialog
Step 1. Double-clicking on a Track to open the Track Properties dialog
Step 2. Choose Shading tab > click () icon on the top right of the dialog to add new shading row
Step 3. Select Curves from the dropdown box to create shading
Figure 11‑36 Create a shading from the Track Properties dialog
Note:
·
A Shading
header is automatically added to the header of the track
·
You can
add multiple shadings for the same curve
Name box: enter a name for the shading
Curve 1 box: By default, the first curve selected is used as a color curve in the shading. To use another curve, click on this curve name and choose another one from the dropdown box. All of the curves that are presenting on this track will appear here.
Curve 2 box:
· If you choose a curve, the shading will be created between 2 curves (Curve 1 and Curve 2)
· If you choose Fixed Value (Left - the left value of the scale of the curve, Right - the right value of the scale of the curve, Custom), the shading will be created between Curve 1 and a baseline
Figure 11‑37 Create shading between a curve and a baseline
I2G provides 2 types of shading: Fill Pattern and Variable
Shading
By default, the color of the new shading is blue. You can modify the Fill Pattern, Foreground color, Background color.
Figure 11‑38 Create shading between a curve and a baseline Left
The shading is performed on both sides of the curve selected first. Check the Positive/Negative Fill option to apply a shading only to the left or to the right instead of both.
Figure 11‑39 Create shading between 2 curves with
positive/negative fill option
I2G supports nearly 100
different types of patterns for you to choose from to suit your purpose.
Figure 11‑40 Types of pattern
Users can choose another curve from the well to control the shading in this shading type. Users can modify the interval of shading by typing the values in the Low and High boxes of the controlled curve.
There are 3 modes:
· Gradient
Figure 11‑41 Gradient shading mode
· Palette
Figure 11‑42 Palette shading mode
· Custom Fills
Figure 11‑43 Custom Fills shading mode
Note: the shading is
applied to the defined intervals colors, colors in out of range are lost.
Step 1. On log track, Focus on a Shading and drag it up/down from the current place, the Shading will move as you drag
Step 2. drag it up/down to the location that you want > release your cursor, the Shading has moved successfully to the new place
Figure 11‑44 Move a shading inside a log track
The Add annotation option launches a text
editor which allows the user to write annotation on log track at any depth
Step 1. Right-click on log track > choose Add annotation option. Annotation Properties dialog pops up.
Figure 11‑45 Add annotation to log track
Step 2. In the Annotation Properties dialog, input text into a box. You can set text properties such as size, color, depth > then click Ok.
Figure 11‑46 Annotation on log track
Figure 11‑47 Annotation properties dialog
You can access text size, text color, background color, boundaries (top, bottom, left, width) or set the alignment of text in the Annotation Properties dialog.
Step 1.
From
log-plot > Right-click > Choose Add object track option (1) > the
object track properties will be displayed.
Step 2.
From object
track properties, you can modify the setting of header and geometry then
click OK to create Object Track (2). The blank Object Track will be created (3)
Figure 11‑48 Create an Object Track
Step
1.
From
Object Track in log-plot > Right-click on Object track > Choose Add
Histogram option > The Histogram properties will be display
Step
2.
You
have to select the curve to be displayed over the object track, and then custom
histogram properties for the curve (scale, interval, color …) > Click OK to display histogram.
Figure 11‑49 Add histogram into object track
Step
1.
From
Object Track in log plot > Right-click on Object track > Choose Add Cross-plot
option > The Cross-plot properties will be display
Step
2.
You
have to select curves to be displayed over the object track, and then custom cross-plot
properties for the curves > Click OK to display cross-plot.
Figure 11‑50 Add cross-plot into object track
To view core
images along the wellbore, users
need to show them in Log-Plot module:
Step 1.
Right-click on log-plot area > select Add Image Track option in the context
menu, the Image Track Properties
dialog pops up
Figure 11‑51 Add an image track to log-plot
Step 2.
In the Image Track Properties dialog, users
can specify some general information
of image track such as Title, Width, Width Unit…
Figure 11‑52 Image track properties dialog
Step 3.
Select
Well > select Image Set that you want to display on
track > click Ok. A new image
track will appear on the right side of the log-plot.
Figure 11‑53 display image set on track
Tip: Double click on
an image in the image track to view
it at original size
Figure 11‑54 View image at original size
Zonation
Track allows you to insert and display zones on the View Space. To access this feature, right-click on the track and
select the Add Zonation track. In addition, you can combine it with Markers by
selecting a Marker Set in Log-Plot Properties to enhance the visibility of the connecting
zone between wells.
The
zonation track and markers will be automatically updated when you modify any
zone or zonation set
In case you do not have the correct
marker data and have to rely on the shape of the curves to define each marker
by geological components, I2G helps you create marker data directly on the
log-plot.
To
work with the marker in the log-plot, you must have an existing log-plot first.
Focus
on log plot’s Blank Space or Reference Track > go to Properties Editor window > Zone Set &
Marker Set section > select the Marker Set you want to display.
Figure 11‑55 Select markers set in the Properties Editor window
Step 1. Refer to this article to manually create new Marker Set in Marker Set Manager form
Step 2. Create new or open an available log-plot from the data tree.
Step 3.
Show the newly created marker set to the
log-plot by selecting it in the Properties
Editor window.
Step 4. You can start creating markers by right-clicking on log track > select Add Marker > the Choose Marker Template pops up.
Figure 11‑56 Choose Marker Template to add a marker on the log track
Tip: You can also open
the Choose Marker Template by holding
down Shift+Alt while left-clicking on log track
Step 5. After selecting the marker template to be used > OK, move to the location you want to create a marker on log track, hold Shift key + left click to pick marker. To be able to capture the correct depth, you should enable the tooltip to work easier.
Step 6. Hold down Shift+Alt while left-clicking on log track to switch to another Marker Template by choosing it from the Choose Marker Template dialog. Repeat step 5 to create new markers
Note:
I2G will automatically save the changes
of the marker set you are working on to the log-plot. So, you will not need to
manually save the marker set.
Step 1.
Focus on the desired
marker
Step 2.
Hover the cursor over the marker until it
turns to , then move up/down to the new place
Figure 11‑57 Edit marker depth on log track
Right-click on
the desired marker > Remove Marker
Figure 11‑58 Remove marker from log track
In case the correct zone data is not
available and has to rely on the shape of the curves, you can divide each zone
by various geological components. I2G allows you to create zone data directly
on the log-plot.
To work with
zones in the log-plot, you must have an existing log-plot first.
Step 1.
Right-click
on a logging track > Select Add
Zonation Track > Zone Track
Properties dialog will be displayed
Tip: click ()
icon to create a new Zone Set from Zone Set Manager form. Refer to this article
for more information.
Step 2.
Choose
Well (1) and Zone Set (2) to display
Step 3.
Click
OK
Figure 11‑59 Add zonation track to log-plot
Step 1. Right-click on a Zonation track > Add zone. The Choose Zone Template dialog pops up.
Figure 11‑60 Choose Zone Template to add zone into Zonation track
Tip: You can also open the Choose Zone Template by holding down Shift+Alt while left-clicking on zonation track
Step 2. Select a Zone Template for the to-be-created zone > Ok
Step 3. Navigate to the desired interval on the zonation track and create a zone by holding down the left mouse button and sweep. To be able to capture the correct depth, you should enable the tooltip to precisely input depths
Note:
I2G will automatically save the changes of the zone set you are working on to
the log-plot. So, manual saving the zone set might not require.
Right-click
on the zone to split > Split Zone
> Click on the location you want to split
Figure 11‑61 Split zone from zonation track on log-plot
Step 1. Focus on the desired zone
Step 2. Hover the cursor over the top/bottom of the zone until it turns to
Step 3. Hold the left button and drag the zone to the desired position then release it.
Figure 11‑62 Edit zone interval on zonation track
Right-click
on the zone to be deleted and choose Remove
Zone. You can also use Delete
keyboard instead
Figure 11‑63 Delete a zone from zonation track on
log-plot
Step 1. From log-plot, focus on log-plot’s Blank Space or Reference Track
Step 2. Go to Properties Editor window > at the Zone Set & Marker Set section, select the Zone Set you want to display
Figure 11‑64 Well correlation by zone set
Step 1. From log-plot, focus on log-plot’s Blank Space or Reference Track
Step 2. Go to Properties Editor window > at the Zone Set & Marker Set section, select the Marker Set you want to display
Figure 11‑65 Well correlation by a marker set
Step 1. Create a Log-plot by right-clicking on “log-plot” button in data tree > New Log-Plot > Blank Log-Plot, then rename Revo_03_Overview
Step 2. In the data tree, choose well Revo_03 > LQC, hold on the Ctrl key and choose CALI and drag-and-drop this curve into the log-plot. I2G will automatically display CALI in a new track named Track 1.
Step 3. Focus on Track 1 > from Properties Editor window, rename Track 1 to Gamma Ray > Enter
Step 4. Right-click on Gamma-Ray Track > select Add Depth Track. The new Depth Track placed on the right side of the Gamma Ray Track
Step 5. Focus on Depth Track header and drag it to the left side of the Gamma Ray Track. Refer to Move Track section for more information
Figure 11‑66 Move Depth Track
Step 6. In the same LQC dataset, choose GR curve and do the same to drop it into Gamma Ray Track
Step 7. Right-click on the GR curve and choose Create Shading. In Shading Properties dialog, choose Variable Shading type, the Curve value from 0 (Low) to 130 (High). At Fill Color, Select yellow and green to represent Low and High.
Figure 11‑67 Setting shading for GR curve
Step 8.
Hold Ctrl to choose DEN and NEU
simultaneously. Drag-and-drop these curves
into the Blank Space of log-plot. The second track will be automatically
created named Track 2. Rename Track 2 to Phi
Step 9.
Hold
Ctrl key + select the DEN and NEU curves
and right-click to choose to Create Shading. In Shading
Properties dialog, choose Positive/Negative
Fill with green and yellow as representative for positive and negative
respectively.
Step 10.
Continue
to choose
CPOR from data tree and drag-and-drop
it into Track 2. focus on this curve,
setting left-right scale = 0.45 and – 0.15 respectively from Properties Editor window
Figure 11‑68 Log data and point data plot simultaneously
on the same track
Step 11.
In
the log-plot view, right-click on Phi
track > Add Log Track. The new
log track will be appeared named Track 3
Step 12.
Double
click on Track 3 to open Track
Properties dialog > rename
Track 3 to Res. Then focus on Curve tab > add curve RES_MED
and RES_DEP from Curve drop-down box > click Ok
Figure 11‑69 select curves from the track properties
dialog
Tips:
• Track
grid in the linear/logarithmic scale will be automatically updated depending on
the curve you selected
• The
user can be typing 1 or more character on the Curve dropdown box to search the
curve name quickly
Step 13.
Right-click on Depth Track > Add
Zonation Track. In Zone Track
Properties dialog, choose well REVO_03
> choose the zonation named “Zone
Stratigraphy” > click OK
Figure 11‑70 building a log-plot
Step 14. Focus on log-plot’s Blank Space or Reference Track > go to Properties Editor window > in the Auto Size section, enter 1.5 into All Log Track box to reduce the width of all log tracks.
Step 15. Right-click on Phi track > choose Add Object Track, the Object Track Properties dialog pops up > rename title from Object Track 1 to Plots > click Ok. The new Plots track placed between Phi track and Res track
Step 16. Right-click on Plots track> choose Add Histogram
Figure 11‑71 Add object track to log-plot
Step 17. In Histogram for Track dialog, enter title “GR” > set Top-Bottom depth as 2260-2310 > at Well box, choose REVO_03, choose Dataset LQC, Curve GR > set Fill color as green > click Ok. The new histogram is now added on the object track.
Figure 11‑72 Add histogram into object track
Step 18. Right-click on Plots track> choose Add Cross-plot (same step 16)
Step 19.
In Cross-plot
for Track dialog, enter the title “Neu_Den”
> set Top-Bottom depth as
2340-2375 > choose Dataset LQC, X-Y axis as curve Neu and Den > click Ok.
Figure 11‑73 Add cross-plot into object track
After
creating a specific log-plot, to save time and homogenize data displayed, users can save it as a template and apply it to
other wells/datasets to create a cross-section. The log-plot template saves all the settings of log-plot, the curves
present in the tracks, the curves
properties, and the track properties.
To
save a log-plot as a template: in Log-plot window, click on Save As New Template () icon
and enter a name for the new template. All of the
templates will be stored in the Asset Manager.
Figure 11‑74 Save a log-plot as a template
To Apply a template for any
other wells/datasets:
Step 1.
From Menu Bar, click on the Plot tab and choose Custom Template, the Select Log-Plot Template dialog opens.
Figure 11‑75 Select log-plot template dialog
Tips: From Data-tree,
Users can also open the Custom Template dialog by
right-clicking on Log-plot > New Log-Plot > Custom Template
Step 2.
In Log plot
Template list box, select a template you want to
apply for wells/datasets
Figure 11‑76 Choose a log-plot template from the dropdown
box
Tip: Users can type 1 or more characters to search the template name quickly
Step 3.
Enter a name for the
new applied log-plot. The name will be automatically suffixed with @wellName/@datasetName
Step 4.
Select an Insertion Level you want to apply the template. There
are 2 levels:
·
Well:
curves will be collected by exact syntax @datasetName
/@curveName in those assigned wells
·
Dataset:
curves will be collected by @curveName
in those assigned datasets
Notice that there
will be no display if curves do not satisfy the above conditions.
Figure 11‑77 Insertion level when applying template
Tips:
Users can select multi-items by holding
Shift/Ctrl key, all the items you specifically select will be highlighted.
Step 5.
Click Ok to launch the procedure.
All the new log-plots now appear.
Figure 11‑78 Apply
log-plot template to other wells/datasets
Note:
The Ok button is only activated after you define all the options
To
save time and homogenize data displayed in the same project, users can create a
new log-plot by combining any tracks from the existing log-plots.
How
to work on Log-plot Designer:
Step 1.
From Menu Bar, click on the Plot tab and choose Log-plot
Designer, the Log-plot
Designer window opens.
Figure 11‑79 Open Log-plot Designer form
Tip: From Data-tree, Users can also open
the Log-plot
Designer dialog by right-clicking on Log-plot > New Log-Plot > Log-plot
Designer.
Step 2.
In
Plots area (on the left side), focus and expand a log-plot in the tree view
control. You can see a hierarchical list of tracks
Figure 11‑80 Hierarchical list of tracks in Log-plot
Designer tool
Step 3.
Users
select any tracks of any log-plot from the Plots
area, put them in the Output Plot table
by clicking Export () icon. All the curves present
in the tracks, the curves properties,
and the track properties will be selected as well.
Figure 11‑81 Design new log-plot by selecting tracks
Tips:
·
In the Output Plot area, if users want to remove the tracks, select
them and choose ( ) icon to remove the selected tracks.
·
Select ( ) to remove all items in the Output Plot area
·
Use ( ), ( ) icon to move a track up/down one line
Step 4.
Click
Create Plot ( ) icon in the top right corner, then enter a new log-plot.
Figure 11‑82 Enter a name for the newly designed log-plot
Step 5.
Click Ok to launch the procedure. The new log-plot will
appear on the right side of the Log-plot Designer window.
Figure 11‑83 New designed log-plot
To Apply a Track to Wells/Datasets in the same log-plot
Step 1.
Right-click on a
log track > select Apply to another well option in the context
menu, the Apply
to another well dialog pops up
Figure 11‑84 Open track template dialog
Step 2.
Select an Insertion Level you want to apply the template. There
are 2 levels:
·
Well:
curves will be collected by exact syntax @datasetName
/@curveName in those assigned wells
·
Dataset:
curves will be collected by @curveName
in those assigned datasets
Notice that there
will be no display if curves do not satisfy the above conditions.
Figure 11‑85 Apply track template to other wells/datasets
Tips:
Users can select multi-items by holding
Shift/Ctrl key, all the items you specifically select will be highlighted.
Step 3.
Click Ok.
The new log track will appear on the right side of the log-plot


“All languages change all the time. It is not very well understood why this is the case,
but it is a universal characteristic of human languages.”(Page 1)[1].
This myth focusses on how the meaning of certain words can change over time and by the influence of cultures.
The meaning of words in the English language have changed significantly over time
and differ from dialect to dialect. In most cases,
the chance of miscommunication is largely mitigated by reading the context of the sentence in question.
Through this evolution of the language,
it is shown that the meaning of a word is not truly decided by the definition specified in the dictionary,
it is decided by what the majority perceives the meaning to be.
“A number of people seem to think that the fact that languages change the meaning of their words is unfortunate.
They believe a change in language is inherently undesirable and that we should say everything we can to stop it
because change can be dangerous and confusing.”
(Page 3)[1].
The evolution of the English language is something that happens constantly and will continue to happen,
at perhaps an even faster pace in because of the age of tech. Language is ever evolving, and even though certain words may lose the meaning they previously had, I believe the evolution of language is necessary to keep up with the quickly evolving world we live in now.


Expand All
Collapse All
User's Documentation
Table of contents:
Known issues:
Tests:
Toggle navigation
Test
Expand All
Collapse All
%CONTENT%


This example shows the accessibility features of Telerik Calendar for ASP.NET MVC.
You can use Action(...) method like in select action example.
Telerik Calendar for ASP.NET MVC is level A accessible (in compliance with the W3C Web Accessibility Guidelines 2.0).


Textbox Revision Tracker
Text
Save
Undo
Redo
Revision History
Revision Number
Time of Revision
Diff from Previous Version
Revert to revision?


Each new client starts with a detailed assessment covering measurements and several aspects of movement. We then use the data as a baseline to track progress and to design the perfect program for your unique body and needs.
Every week we track your progress using the most important metrics for your specific goals. This can be an extremely useful tool for both accountability and motivation. For starters, nothing is more motivating than seeing progress from week to week, and knowing that someone else is monitoring your progress adds that extra layer of accountability to top it off.
No time spent in traffic and no need to purchase any fancy equipment. We find a time that works best, and I come right to your front door with all required equipment. You just make sure you’re ready to put in the work!
Based on our initial assessment, you’re built a personalized program tailored to your goals and needs using the latest evidence-based methods. Any previous injuries, pains or limitations are taken into account, and exercises are modified as needed. This is where we put the plan into action!
The world’s premier nutrition software. ProCoach is a platform that delivers daily nutrition lessons and biweekly eating habits that, when combined with the one to one problem solving involved while working with your coach, make the results you want inevitable.
Perhaps the most important aspect of working in-person with a trainer. Scheduled appointments, having money in the game (paying for training), in-depth goal setting, commitment contracts, and ongoing coaching all provide you the accountability needed to keep you going when times get tough.  That’s what accountability is all about because in training, as in life, if you want to achieve something great, you need to be consistent over time!
An absolute must, and the first thing we do before designing your program. Using Skype, I will take you through an assortment of movement and mobility tasks that provide us with the information needed to design the ideal program for you.
The worlds premier nutrition software. ProCoach is a platform that delivers daily nutrition lessons and biweekly eating habits that, when combined with the ongoing communication you’ll have while working remotely with your coach, make the results you want inevitable.
Using the Trainerize fitness app, customized workouts are delivered to your phone allowing you to workout wherever and whenever you want. All exercises in your program have video demonstrations to help you workout both safely and effectively, and we track several measures of progress through the app to make sure you’re progressing just the way we want.
You have questions, I have answers (hopefully!). Either through email or the Trainerize app, I am here to support you throughout your training journey. I provide some general guidelines for communication but rest assured that your questions will be answered within 24 hours!
Not mandatory but highly recommended, we use check-in calls to see what’s going well and what might not be going so well with your training. It’s also a great coaching opportunity to get into some of the deeper aspects of motivation and problem solving that can be more easily addressed in a conversation than in text, not to mention, it adds a layer of accountability that can provide that extra boost to help you toward success!
Arguably the most valuable aspect of online training. You feel like training at 3am? No problem. Training in person is dictated by 60 minutes sessions. With online training, sessions can be as short or long as needed/desired. You can train while in another country, in a gym, at home or on a beach. As I’ve mentioned before you get to train wherever, whenever (and let’s add), and however you want!
Put simply, the hybrid approach is a combination of in-home and online personal training. Here are 3 great reasons why someone would want to use the hybrid approach:
Those are just a few of many possible reasons that the hybrid approach could be the best solution for you!


a little about myself
Hello! My name is Tony Nguyen and I am a software developer based out of Atlanta, GA. I am the first generation American-born of my family, and recently the proud father of two kids! While I'm not coding, I like spending quality time with my family and sunny weekend afternoon barbecues. Currently a full stack mobile Android developer at Emory Universities BioInformatics Department since 2016, with experience in architecting and deploying custom AWS VPC's. I also have a plethora of personal Ruby on Rails projects you can find at the bottom of the page. If your team is looking for someone who is adaptable, loves problem-solving, and open to learning new technologies, please feel free to contact me!


Our services
SubTitle
---
layout: services
---
SubTitle
We are committed building a sustainable future fostering a
collaborative spirit.
We are committed building a sustainable future fostering a
collaborative spirit.
We are committed building a sustainable future fostering a
collaborative spirit.
We are committed building a sustainable future fostering a
collaborative spirit.
"Thank you for guiding us through the construction process,
understanding, and always ready to accommodate our needs. We love
our new space and know that it was built by the very best!"
"Thank you for guiding us through the construction process,
understanding, and always ready to accommodate our needs. We love
our new space and know that it was built by the very best!"
"Thank you for guiding us through the construction process,
understanding, and always ready to accommodate our needs. We love
our new space and know that it was built by the very best!"
Our services
Our service
Our service
Our service
Our service
Partners Worldwide
Employees and Stuffs
Year Of Experience
Projects Completed
What people says
Kyle Frederick
Director
Valentin Lacoste
Director
José Carpio
Director


new Galaxy(x, y, part, id)
Procedurally generates a galaxy heirarchy.
Parameters:
| Name | Type | Description |
|---|---|---|
x |
Number | The size of the galaxy on its x-axis. Must be even. |
y |
Number | The size of the galaxy on its y-axis. Must be even. |
part |
Boolean | An optional parameter which determines if the galaxy is partially generated. |
id |
String | An optional parameter to create a galaxy with a predetermined ID. |
Methods
(async) genID()
Generates the galaxy's 10 digit code
Returns:
The galaxy's 10 digit code.
(async) genSector(x, y)
Creates and stores a sector object.
Parameters:
| Name | Type | Description |
|---|---|---|
x |
The x coordinate of the sector to be generated. | |
y |
The y coordinate of the sector to be generated. |
(async) genSectors(partial)
Creates and stores the sector objects in the galaxy's matrix of sectors for later generation reference.
Parameters:
| Name | Type | Description |
|---|---|---|
partial |
Boolean | When true the galaxy only generates the first 10x10 area of sectors, or the entire galaxy if it is greater or equal to these dimensions. |
getID()
Returns:
the galaxy's ID
(async) init()
Calls the asynchronous functions to generate the fields of the object.


RAA Road Crew Mechanics Are On Strike Today
Union members working for the RAA will be on strike on Thursday.
According to an RAA statement sent to FIVEaa Breakfast:
“RAA’s employees covered by the Automotive and Technical Grades Enterprise Agreement, who are members of the Australian Manufacturing Workers Union (AMWU), voted to take protected industrial action today.
“RAA is disappointed with this decision but we remain committed to reach a fair and sustainable agreement for all parties.
“We do not anticipate that the planned industrial action will have any impact on RAA’s services.”


A character is walking along when he notices a window that is apparently open. He wonders aloud who left the window open as he walks over to close it, only to run directly into the glass, revealing that the window is so clean that it gave the impression that it was open. Or a character looks over at the kitchen area to see an open area so they run over to it, only to run into the glass again, revealing it to be a sliding glass door that also gave it the impression of being an open door.
This is a Comedy trope where a character will mistake a clean window or a sliding glass door for an open door then run into the window or door when they try to go through it.
Truth in Television, although in Real Life this may result in anything from a bump on the head to being pelted with shattered glass.
Compare Glass Smack and Slide.
Examples:
- A series of Windex window cleaner commercials featured a pair of birds who were musing about how said cleaner is so bright that birds could get hurt flying into the windows that were cleaned.
- Inverted in this Super Bowl Doritos commercial.
- One advert for Fanta has a girl at a party walking into a glass door leaving her embarrassed. She quickly turns the situation around by performing an impromptu mine act, roping in one of the onlookers to dance with her.
- In The Devil Is a Part-Timer!, while Emi is at a convenience store with her back to the entrance, an assassin lunges at her... only to smack into the sliding glass door.
- In the second episode of Ace Attorney, Phoenix and Maya do this simultaneously at the detention center; they were on opposite sides, and they thought they could get closer to each other...only to bonk their foreheads right against the clear glass.
- In Pleasant Goat and Big Big Wolf: Joys of Seasons episode 96, Wolffy gets mad at the goats and goes after them when they make fun of his wife... not remembering until it's too late that he's behind the glass wall of Mr. Slowy's flu quarantine.
- Sillage: At the end of the first issue, Navis runs into a glass wall, as she discovers that she is not actually in her native jungle, but in an alien zoo exhibit.
- This was used four times in Garfield:
- Garfield tried to sneak up on Odie, only to run into a patio door.
- A bird runs into the window while Garfield was explaining about windows.
- Jon mistook a window that Garfield cleaned for being left open.
- Jon ran into the sliding glass door after noticing a dead bird on the lawn from flying into said door.
- Happens to the Crocodiles in a Pearls Before Swine'' strip.
"Guy protected by force field, Bob."
"Curse you, techmology." - The Fabulous Furry Freak Brothers plot to get their cousin out of prison. They boldly stride into a police station; Franklin and Phineas going through glass doors, and Fat Freddy between them thumping into the fixed glass window.
- One Dilbert strip has Dilbert helping a robin recuperate after it mistakes a picture window for more air.
- The Bolt Chronicles: A non-comedic example occurs in "The Blackbird" when the title creature flies into a window and knocks itself cold.
- Over the Hedge: Verne and the other animals try to escape from Gladys' house after trying to get food from her house, only to run into a sliding glass door.
- In Antz, Z walks toward a sandwich in a picnic but ends up walking into the plastic wrapping, which he thinks is Some Kind of Force Field.
- A frightened Nemo keeps running into the aquarium walls in Finding Nemo. Nigel the pelican also flies smack into the dentist's office window, cutting his attempt at a dramatic entrance short.
- Pictured above is Tommy, Chuckie, and Phil and Lil falling victim to this trope in the prologue of The Rugrats Movie after failing to get an ice cream sundae out of the refrigerator and subsequently being caught in the act by Didi.
- In The SpongeBob SquarePants Movie, after being captured by the diver, SpongeBob smacks into the side of fishbowl he and Patrick wake up in. Patrick initially assumes it's a wall of psychic energy.
- In Recess: School's Out, after seeing the experiments the Big Bad's men are conducting in the school, T.J rushes home to tell his family, only to run into the sliding door. His mother thinks he got a concussion when he tries to explain what he saw to her.
- Happens in the chase sequence at the beginning of Cats & Dogs. Buddy sees the cat he's been chasing sitting just outside an open door, dives at it... WHAM.
- Played straight in Battlefield Earth, when Johnny enters a long-abandoned mall and runs into a plastic display case, apparently not being able to see through the frosted, moisture-covered glass.
- In the 1967 Casino Royale (1967), archvillain Dr. Noah (Woody Allen), in his underground lair, meets up with his uncle James Bond (David Niven), and lowers a big sheet of invisible glass between them. When James sums up his plans for world domination as compensation for his feelings of sexual inferiority, Noah angrily steps forward — forgetting about the glass and smashing it to bits.
- In The Man with the Golden Gun, James Bond is trying to navigate Scaramanga's lair and walks into a clear glass wall.
- Near the end of Avatar, Neytiri walks into a window, then feels around it until she finds an opening.
- Tim Burton's Charlie and the Chocolate Factory has a scene where Willy Wonka walks straight into the glass elevator. And later on, guess what, he does it again.
- Joker (2019): Arthur talks to two detectives about the three murders on the subway while his mom is in the hospital for a stroke. He attempts to blow them off by walking a way to go see his mother, but he ends up running straight into the glass door instead.
- Non-humorous example: The book "What Happens When We Die", from the Children's Bible Basics series, opens with a child seeing a yellow warbler fly into a window and then succumb in a matter of seconds.
- Modern Family:
- Claire is worried that a dog Phil's father brought will walk into the back door. The dog doesn't, but their son Luke does.
- In another episode, Cameron walks into the back door screen on Jay's home.
- iCarly: Spencer invokes this in the episode "iPrank." He pranks Sam and Freddie by having a clear, nearly invisible plexiglass wall placed in front of the elevator so whoever exited it would smack into it.
- The first clip in the Daisy Fuentes-John Fugelsang era of America's Funniest Home Videos to win the $100,000 top prize was security camera footage of this trope.
- In The Cosby Mysteries, a Femme Fatale tries to shoot Bill Cosby, only to discover he's standing behind a sheet of bulletproof glass he's set up in the room between them.
- In the Haven episode "Silent Night", the town of Haven gets trapped under a giant glass dome. Several birds and drivers crash into it.
- In the Starsky & Hutch episode "A Body Worth Guarding," Hutch walks into a sliding glass door while checking out a hotel room.
- In a trailer/minisode of the 2015 The Muppets TV series, Miss Piggy does this. In a fun example of puppeteer attention to detail, she leaves a visible snout mark.
- In the play What I Meant Was by Craig Lucas, a mother forgives her son for (among other things) pretending he didn't know her when she walked into a plate glass window at his grade school and broke her nose.
- Inverted in El Goonish Shive. Ellen expected a window of a secure government facility to have glass and braced for impact when she was thrown toward it; it did not and she merely had to contend with a two-story drop.
- In a comic for Housepets!, Peanut is startled when a squirrel runs into a nearby window from outside.
- Happens to Mr. Bogus in the second act of the episode "Waterboy Bogus".
- In Teenage Mutant Ninja Turtles (2012), Pete, being a mutated pigeon, has a tendency to do this.
- DuckTales (2017): In "McMystery at McDuck McManor!", Mark Beaks hacks into the mansion's security camera and finds footage of Scrooge running into a glass door thinking it was open. He finds this hilarious, and he prepares to leave so he can upload it on the internet... only to run into a non-glass, completely opaque locked door.
- Birds are prone to flying into windows because they don't know that they're actually glass, so they end up hurting themselves real bad. There are a few instances of birds having left clear impressions of their bodies on windows after flying into them (apparently due to residue from their feathers).
- One fatal real-life example proved crucial to proving the existence of necrophilia among ducks.
- Several types of insects who follow the light-source (for an example, flies and bees) are known to repeatedly run into glass and they can even starve to death trying to fly through it even if there is an obvious way out of the house.note
- Justin Bieber has walked into a glass wall in 2010 and 2013, suffering a concussion from the second incident.


16 people discovered in sealed container on ferry to Ireland, all in good health
DUBLIN (Reuters) - Sixteen people were discovered on Thursday in a sealed trailer on a passenger ferry traveling to Ireland from France and all are in good health, Swedish ferry operator Stena Line said in a statement.
The group was discovered during a routine inspection on board a ferry traveling from the French port of Cherbourg to Rosslare in Ireland, a Stena Line spokesman said.
The vessel was due to arrive in Ireland at 15:30 GMT and immigration authorities have been alerted, he said, without giving any further details.
On Oct. 23, 39 bodies, all believed to be Vietnamese migrants, were discovered in the back of a refrigerated truck near London. Two people have been charged in Britain and eight in Vietnam over the deaths.
Dutch authorities on Tuesday found 25 migrants stowed away on a cargo ferry bound for Britain shortly after it left the Netherlands.


|
Collaborate with the AEROMAP teamAEROMAP's global aerosol model calculates aerosol microphysical parameters on the daily timescale and over the whole Earth surface at a spatial resolution of 1x1 degree. It's neural networks convert daily satellite measurements of optical depth and columnar water vapour to aerosol products that include the volume size distribution and its derived parameters (the volume concentration of fine and coarse particles as well as their geometric radii) in each pixel. From a multiparametric weighting of these parameters, AEROMAP also calculates 2 air quality indices (normalized to the international 1-10 scale): one as a measure of the hazard to human health and the second as a measure of the impact on visibility. AEROMAP's model has been validated for 10 distinct aerosol types/mixtures including: desert dust, biomass burning products, marine aerosol and urban pollution. We warmly welcome collaborations. Requests for simulated dataThe methodologies developed by AEROMAP are published in open access peer-reviewed journals. While the code used to generate AEROMAP's models is not open source, some useful MATLAB routines written by the fellow are available at the Researchers' Gateway. If you would like us to run our simulations for a particular time period or at a particular location feel free to contact us: Email AEROMAP .
Back to: [Home]
|
||


Class InitiateCommandTest
Description of InitiateCommandTest
- Symfony\Bundle\FrameworkBundle\Test\WebTestCase
- Xvolutions\AdminBundle\Tests\InitiateCommandTest
Namespace: Xvolutions\AdminBundle\Tests
Author: Pedro Resende<EMAIL_ADDRESS>Located at AdminBundle/Tests/Command/InitiateCommandTest.php
Author: Pedro Resende<EMAIL_ADDRESS>Located at AdminBundle/Tests/Command/InitiateCommandTest.php
public
|
|
public
|


This article continues from the article on textures. If you haven't read that yet you should probably start there.
In the previous article on textures we mostly used
image files for textures. Sometimes though we want to generate a texture
at runtime. One way to do this is to use a CanvasTexture
.
A canvas texture takes a <canvas>
as its input. If you don't know how to
draw with the 2D canvas API on a canvas there's a good tutorial on MDN.
Let's make a simple canvas program. Here's one that draws dots at random places in random colors.
const ctx = document.createElement('canvas').getContext('2d'); document.body.appendChild(ctx.canvas); ctx.canvas.width = 256; ctx.canvas.height = 256; ctx.fillStyle = '#FFF'; ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); function randInt(min, max) { if (max === undefined) { max = min; min = 0; } return Math.random() * (max - min) + min | 0; } function drawRandomDot() { ctx.fillStyle = `#${randInt(0x1000000).toString(16).padStart(6, '0')}`; ctx.beginPath(); const x = randInt(256); const y = randInt(256); const radius = randInt(10, 64); ctx.arc(x, y, radius, 0, Math.PI * 2); ctx.fill(); } function render() { drawRandomDot(); requestAnimationFrame(render); } requestAnimationFrame(render);
it's pretty straight forward.
Now let's use it to texture something. We'll start with the example of texturing
a cube from the previous article.
We'll remove the code that loads an image and instead use
our canvas by creating a CanvasTexture
and passing it the canvas we created.
const cubes = []; // just an array we can use to rotate the cubes -const loader = new THREE.TextureLoader(); - +const ctx = document.createElement('canvas').getContext('2d'); +ctx.canvas.width = 256; +ctx.canvas.height = 256; +ctx.fillStyle = '#FFF'; +ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); +const texture = new THREE.CanvasTexture(ctx.canvas); const material = new THREE.MeshBasicMaterial({ - map: loader.load('resources/images/wall.jpg'), + map: texture, }); const cube = new THREE.Mesh(geometry, material); scene.add(cube); cubes.push(cube); // add to our list of cubes to rotate
And then call the code to draw a random dot in our render loop
function render(time) { time *= 0.001; if (resizeRendererToDisplaySize(renderer)) { const canvas = renderer.domElement; camera.aspect = canvas.clientWidth / canvas.clientHeight; camera.updateProjectionMatrix(); } + drawRandomDot(); + texture.needsUpdate = true; cubes.forEach((cube, ndx) => { const speed = .2 + ndx * .1; const rot = time * speed; cube.rotation.x = rot; cube.rotation.y = rot; }); renderer.render(scene, camera); requestAnimationFrame(render); }
The only extra thing we need to do is set the needsUpdate
property
of the CanvasTexture
to tell three.js to update the texture with
the latest contents of the canvas.
And with that we have a canvas textured cube
Note that if you want to use three.js to draw into the canvas you're
better off using a RenderTarget
which is covered in this article.
A common use case for canvas textures is to provide text in a scene. For example if you wanted to put a person's name on their character's badge you might use a canvas texture to texture the badge.
Let's make a scene with 3 people and give each person a badge or label.
Let's take the example above and remove all the cube related stuff. Then let's set the background to white and add two lights.
const scene = new THREE.Scene(); +scene.background = new THREE.Color('white'); + +function addLight(position) { + const color = 0xFFFFFF; + const intensity = 1; + const light = new THREE.DirectionalLight(color, intensity); + light.position.set(...position); + scene.add(light); + scene.add(light.target); +} +addLight([-3, 1, 1]); +addLight([ 2, 1, .5]);
Let's make some code to make a label using canvas 2D
+function makeLabelCanvas(size, name) { + const borderSize = 2; + const ctx = document.createElement('canvas').getContext('2d'); + const font = `${size}px bold sans-serif`; + ctx.font = font; + // measure how long the name will be + const doubleBorderSize = borderSize * 2; + const width = ctx.measureText(name).width + doubleBorderSize; + const height = size + doubleBorderSize; + ctx.canvas.width = width; + ctx.canvas.height = height; + + // need to set font again after resizing canvas + ctx.font = font; + ctx.textBaseline = 'top'; + + ctx.fillStyle = 'blue'; + ctx.fillRect(0, 0, width, height); + ctx.fillStyle = 'white'; + ctx.fillText(name, borderSize, borderSize); + + return ctx.canvas; +}
Then we'll make simple people from a cylinder for the body, a sphere for the head, and a plane for the label.
First let's make the shared geometry.
+const bodyRadiusTop = .4; +const bodyRadiusBottom = .2; +const bodyHeight = 2; +const bodyRadialSegments = 6; +const bodyGeometry = new THREE.CylinderGeometry( + bodyRadiusTop, bodyRadiusBottom, bodyHeight, bodyRadialSegments); + +const headRadius = bodyRadiusTop * 0.8; +const headLonSegments = 12; +const headLatSegments = 5; +const headGeometry = new THREE.SphereGeometry( + headRadius, headLonSegments, headLatSegments); + +const labelGeometry = new THREE.PlaneGeometry(1, 1);
Then let's make a function to build a person from these parts.
+function makePerson(x, size, name, color) { + const canvas = makeLabelCanvas(size, name); + const texture = new THREE.CanvasTexture(canvas); + // because our canvas is likely not a power of 2 + // in both dimensions set the filtering appropriately. + texture.minFilter = THREE.LinearFilter; + texture.wrapS = THREE.ClampToEdgeWrapping; + texture.wrapT = THREE.ClampToEdgeWrapping; + + const labelMaterial = new THREE.MeshBasicMaterial({ + map: texture, + side: THREE.DoubleSide, + transparent: true, + }); + const bodyMaterial = new THREE.MeshPhongMaterial({ + color, + flatShading: true, + }); + + const root = new THREE.Object3D(); + root.position.x = x; + + const body = new THREE.Mesh(bodyGeometry, bodyMaterial); + root.add(body); + body.position.y = bodyHeight / 2; + + const head = new THREE.Mesh(headGeometry, bodyMaterial); + root.add(head); + head.position.y = bodyHeight + headRadius * 1.1; + + const label = new THREE.Mesh(labelGeometry, labelMaterial); + root.add(label); + label.position.y = bodyHeight * 4 / 5; + label.position.z = bodyRadiusTop * 1.01; + + // if units are meters then 0.01 here makes size + // of the label into centimeters. + const labelBaseScale = 0.01; + label.scale.x = canvas.width * labelBaseScale; + label.scale.y = canvas.height * labelBaseScale; + + scene.add(root); + return root; +}
You can see above we put the body, head, and label on a root
Object3D
and adjust their positions. This would let us move the
root object if we wanted to move the people. The body is 2 units
high. If 1 unit equals 1 meter then the code above tries to
make the label in centimeters so they will be size centimeters
tall and however wide is needed to fit the text.
We can then make people with labels
+makePerson(-3, 32, 'Purple People Eater', 'purple'); +makePerson(-0, 32, 'Green Machine', 'green'); +makePerson(+3, 32, 'Red Menace', 'red');
What's left is to add some OrbitControls
so we can move
the camera.
import * as THREE from 'three'; +import {OrbitControls} from 'three/addons/controls/OrbitControls.js';
const fov = 75; const aspect = 2; // the canvas default const near = 0.1; -const far = 5; +const far = 50; const camera = new THREE.PerspectiveCamera(fov, aspect, near, far); -camera.position.z = 2; +camera.position.set(0, 2, 5); +const controls = new OrbitControls(camera, canvas); +controls.target.set(0, 2, 0); +controls.update();
and we get simple labels.
Some things to notice.
There is no easy solution. There are more complex font rendering techniques but I know of no plugin solutions. Plus they will require the user download font data which would be slow.
One solution is to increase the resolution of the labels.
Try setting the size passed into to double what it is now
and setting labelBaseScale
to half what it currently is.
If you wanted to fix this you'd instead choose a fixed sized label and then squish the text.
This is pretty easy. Pass in a base width and scale the text to fit that width like this
-function makeLabelCanvas(size, name) { +function makeLabelCanvas(baseWidth, size, name) { const borderSize = 2; const ctx = document.createElement('canvas').getContext('2d'); const font = `${size}px bold sans-serif`; ctx.font = font; // measure how long the name will be + const textWidth = ctx.measureText(name).width; const doubleBorderSize = borderSize * 2; - const width = ctx.measureText(name).width + doubleBorderSize; + const width = baseWidth + doubleBorderSize; const height = size + doubleBorderSize; ctx.canvas.width = width; ctx.canvas.height = height; // need to set font again after resizing canvas ctx.font = font; - ctx.textBaseline = 'top'; + ctx.textBaseline = 'middle'; + ctx.textAlign = 'center'; ctx.fillStyle = 'blue'; ctx.fillRect(0, 0, width, height); + // scale to fit but don't stretch + const scaleFactor = Math.min(1, baseWidth / textWidth); + ctx.translate(width / 2, height / 2); + ctx.scale(scaleFactor, 1); ctx.fillStyle = 'white'; ctx.fillText(name, borderSize, borderSize); return ctx.canvas; }
Then we can pass in a width for the labels
-function makePerson(x, size, name, color) { - const canvas = makeLabelCanvas(size, name); +function makePerson(x, labelWidth, size, name, color) { + const canvas = makeLabelCanvas(labelWidth, size, name); ... } -makePerson(-3, 32, 'Purple People Eater', 'purple'); -makePerson(-0, 32, 'Green Machine', 'green'); -makePerson(+3, 32, 'Red Menace', 'red'); +makePerson(-3, 150, 32, 'Purple People Eater', 'purple'); +makePerson(-0, 150, 32, 'Green Machine', 'green'); +makePerson(+3, 150, 32, 'Red Menace', 'red');
and we get labels where the text is centered and scaled to fit
Above we used a new canvas for each texture. Whether or not to use a canvas per texture is up to you. If you need to update them often then having one canvas per texture is probably the best option. If they are rarely or never updated then you can choose to use a single canvas for multiple textures by forcing three.js to use the texture. Let's change the code above to do just that.
+const ctx = document.createElement('canvas').getContext('2d'); function makeLabelCanvas(baseWidth, size, name) { const borderSize = 2; - const ctx = document.createElement('canvas').getContext('2d'); const font = `${size}px bold sans-serif`; ... } +const forceTextureInitialization = function() { + const material = new THREE.MeshBasicMaterial(); + const geometry = new THREE.PlaneGeometry(); + const scene = new THREE.Scene(); + scene.add(new THREE.Mesh(geometry, material)); + const camera = new THREE.Camera(); + + return function forceTextureInitialization(texture) { + material.map = texture; + renderer.render(scene, camera); + }; +}(); function makePerson(x, labelWidth, size, name, color) { const canvas = makeLabelCanvas(labelWidth, size, name); const texture = new THREE.CanvasTexture(canvas); // because our canvas is likely not a power of 2 // in both dimensions set the filtering appropriately. texture.minFilter = THREE.LinearFilter; texture.wrapS = THREE.ClampToEdgeWrapping; texture.wrapT = THREE.ClampToEdgeWrapping; + forceTextureInitialization(texture); ...
Another issue is that the labels don't always face the camera. If you're using labels as badges that's probably a good thing. If you're using labels to put names over players in a 3D game maybe you want the labels to always face the camera. We'll cover how to do that in an article on billboards.
For labels in particular, another solution is to use HTML. The labels in this article are inside the 3D world which is good if you want them to be hidden by other objects where as HTML labels are always on top.


Welcome to my GitHub Page
Currently I am a student of Telecommunications Engineering at the UPM, Madrid.
Hobbies
I enjoy playing the guitar, casual gaming and coding. You can check my GitHub profile @jirojo2.
Projects
This is why I made this page... but I won't fill any info yet
This site is under construction


I'm A Celeb: Caitlyn Jenner spends first night in Snake Rock after losing task
Caitlyn Jenner spent the night sleeping on the floor in Snake Rock after losing out on the first day of I’m A Celebrity…Get Me Out Of Here!
Caitlyn was partnered with James Haskell as they faces off against the other celebs to become a ‘power couple’.
The power couples would get better living conditions and eat nice food on the first night, and also have control the fates of the other celebs in Snake Rock.
The reality TV star had to face a sky dive first of all, which she was more than ready to do as the rest of her famous family – the Kardashian-Jenners – have all skydived before.
She joked: ‘I’m a pilot and flown for 45 years but I’ve never jumped out of one. Everyone has always asked me over the years, “have you ever jumped?” and I’ve always said “no” because my plane has always worked.
Advertisement Advertisement
‘Kendall has skydived, Kim has and I think Kourtney has. I’m gonna do this, everyone in my family has done it.’
Caitlyn and James travelled to the Pontoon of Doom by canoe, along with Nadine Coyle and her partner Adele Roberts.

Dec revealed that they managed to retrieve their tokes in eight minutes and 8 seconds, however they lost to Adele and Nadine who got theirs in five minutes and 21 seconds.
After the challenge was over, they joined Ian Wright, Jacqueline Jossa, Kate Garraway and Andrew Maxwell were sent to Snake Rock where they awaited their feast of beans and rice.
Jacqueline was horrified to see that there were no beds and they would be sleeping on the ground.
But Caitlyn wanted to make the best of it, telling the other celebs.
She said: ‘We’ve had to straighten our camp up, kind of find out what everything is at and go from there. Let’s get it on. Camping baby!’
I’m A Celebrity…Get Me Out Of Here! airs daily at 9pm on ITV.
Got a showbiz story?
If you've got a story, video or pictures get in touch with the Metro.co.uk Entertainment team by emailing us<EMAIL_ADDRESS>calling 020 3615 2145 or by visiting our Submit Stuff page - we'd love to hear from you.


An Introduction to Information Visualization
Jalil Farid
Center for Cancer Computational Biology
Dana-Farber Cancer Institute


Basketball: NBA Raptors lose Lowry for two weeks, Ibaka indefinitely
LOS ANGELES: Toronto Raptors point guard Kyle Lowry will miss at least the next two weeks of the NBA season while Spanish forward Serge Ibaka is sidelined indefinitely, the club announced Saturday (Nov 9).
Lowry, who helped the Raptors win the NBA title last season, suffered a broken left thumb in the first quarter of a 122-104 victory on Friday at New Orleans.
Lowry, averaging 24.0 points and 6.7 assists this season, played only 16 minutes before suffering the injury, finishing with six points and five assists.
The timetable means Lowry will miss at least six games, including the Raptors' matchup Monday at the Los Angeles Clippers against former teammate Kawhi Leonard.
Leonard was named the NBA Finals Most Valuable Player for his role in leading Toronto over the Golden State Warriors in last June's best-of-seven championship series.
But Leonard left the Raptors to join the Clippers, who are off to a 6-3 start and expected to be among the NBA's top clubs this season.
Ibaka suffered a sprained right ankle late in the first half at New Orleans and will undergo more tests in Los Angeles before a timetable for his return is determined.
The Raptors (6-2) play at the NBA-leading Los Angeles Lakers (7-1) on Sunday.


Russia re-enacts World War II parade
by EndPlayMOSCOW (AP) - Russian troops clad in World War II-era uniforms marched across Moscow's Red Square in a reconstruction of a wartime parade.
The Nov. 7, 1941 parade has become a symbol of Soviet valor and tenacity in the face of overwhelming odds. Thursday's re-enactment featured about 4,000 troops, vintage tanks and other vehicles.
The Nazis forces approached Moscow in early October 1941 as the Red Army suffered a series of devastating defeats after the Nazi invasion of the Soviet Union on June 22, 1941. They came as close as 30 kilometers (less than 19 miles) to the city in some areas.
The Soviet command managed to bring fresh troops from the country's east and launch a counter-offensive that marked the first major Nazi defeat since the start of World War II.


Migration from version 0.6.0 to 1.0.0
Breaking changes
C# changes
ISimpleCommand
signature changed. You should migrate to wetherISimpleCommand<T>
orISimpleCommand
is no argument needs to be passed. Complete details hereIHTMLBinding
has been renamedIHtmlBinding
Updates on the ViewModel should now happen on the UI thread, since Neutronium is not redirecting them anymore.
Practically, this means that you should ensure that anyINotifyPropertyChanged
events and ObservableCollection updates occurs on the UI threads: you can use WPF DispatcherInvoke
orBeginInvoke
methods.
Neutronium ALWAYS will call ViewModel on the UI thread either when updating properties value or executing command.
Vue scripts
- Using vue mixins If you were using manual, registration, change:
Vue._vmMixin = [localMixin];
For:
window.glueHelper.setOption({mixins : [localMixin]});
Even better you can use install.js
file to register mixin if using neutronium-vue template.
ViewModel binding
Starting from version 1.0.0, Neutronium is converting main ViewModel and window viewModel to an object:
{
ViewModel,
__window__
}
This has no impact if you are using neutronium-vue
from scratch as new template take this into account.
If you are using knockout
, you may using with
binding around application mark-up to set-up the context to ViewModel
:
<!-- ko with:$data.ViewModel()-->
<!--application-->
<!--/ko-->
Next section describes how to update project created in version v0.6.0 using neutronium-vue
.
Template created from neutronium-vue
Update dependencies version:
"vue": "^2.5.2",
"vue-loader": "^13.3.0",
"vue-style-loader": "^3.0.3",
"vue-template-compiler": "^2.5.0"
Adjust the following files:
index.html
(two files, both under root and in the.\dist
folder)
Change
<App :view-model="$data">
</App>
To:
<App :view-model="$data.ViewModel" :__window__="$data.Window">
</App>
App.vue
Change
const props ={
viewModel: Object,
};
To:
const props={
viewModel: Object,
__window__: Object
};
main.js
Change
const vm = CircularJson.parse(rawVm);
To:
function updateVm(vm) {
var window = vm.__window__
if (window) {
delete vm.__window__
return { ViewModel: vm, Window: window }
}
return vm;
}
const vm = updateVm(CircularJson.parse(rawVm));


Street Medic Guide from Paper Revolution
Guide to Creating A Secure iOS Password
Protecting Yourself On Social Media
Anti-Doxing Guides for Activists Facing Attacks
Anonymize Your Online Footprint
Image Scrubber for Protest Photographs
Encrypted App Signal's Blur Technology for Photos
Know Your Rights While Protesting Video from ACLU (With Captions)
PDF Guide to Protecting Your Digital Privacy While Protesting


Introduction
In this project we seek to be able to analyze large satellite images and classify what is going on within
smaller segments of them so that we might stich these segments together to try and find openspace that
could be used in an emergency to land an aircraft. In the scope of this project we seek to classify segments
of a larger satellite image as either a development, openspace, rocks, or vegetation.
To do this we will be using the Inception v3 nueral network architecture that was freely published by google.
This architecure is used to classify images... below is a snippit from ai.googleblog.com that explains the power of Inception-v3.
The libraries and technology used in this project can be considered as cutting edge as it gets. Several of the tensorflow modules used to train the nueral network were published in the spring of 2020. These tools have not only proven themselves to be useful in classifying satellite imagery but in a broad range of imagery as well.
Overall this project presented a unique opportunity to showcase the power and efficacy of todays cutting edge machine vision tools. This project goes beyond the typical nueral network that seeks to validate itself using its training data and instead is applied to images it has never seen.
Implementation
Operating Environment
This program runs off of large satellite images that are gathered from GoogleMaps. For this example the image
sizes were around 15000 x 15000 pixels. From there the images are sliced into smaller 299 x 299 slices that are
then fed into the Emergen-See nueral network and classified as one of the following...
1. Development
2. OpenSpace
3. Rocks
4. Vegetation
Agent Output
The agent re-creates the original satellite image with the knowledge of the terrain analyzed. From there a landing algorithm can be ran over the new image and a selection of possible runways can be returned to the aircraft. Below is a random satellite image that was fed into the classifier. The green squares in the right image indicate an area of space that has no object within it. While this is not the finished product one can see how the green squares tend to inhabit the areas of the map that are covered in grass. This is a sure sign that the network is working as it is intended.
Agent - Training
The Emergen-See nueral network is trained using what is known as transfer learning. Using TensorFlow in parallel with TensorHub, I am able to download a similar satellite imagery NN that took weeks of processing time to train. From there I am able to retrain the the final layer of classification nodes within approximately 5 minutes. It is within this final layer that the labels for classification are generated. What is powerful in this methodology is that training time takes only a couple of minutes instead of several weeks for a powerful and interactive network.
Current Results
In training, the NN is able to achieve classification accuracies of around approximately 97%. When applied to data is has not seen before the accuracy goes down to approximately 80-90%. While this is still a work in progress I do believe that unseen data classifications will increase back up into the 90th percentile again as observations of the results reveal edge cases that I never trained the NN for.


What is the difference between the following 2 statements?
setTimeout(booyah, 2000);
setTimeout(booyah(), 2000);
Answer:
- First booyah will be called after given time 2 sec.
- Second booyah() method will be call immediately.
What do the following 2 alerts display (answer without running the code)?
var myfunc = function(a, x) {
return a * x;
};
var x = myfunc(2, 3);
var y = myfunc;
alert(x);
alert(y(2,3));
Answer:
- Both Alert will display 6
Write functions booyah1 and booyah2 so that in both cases below, an alert box comes up after 2 seconds that
says BOOYAH!
setTimeout(booyah1, 2000);
setTimeout(booyah2(), 2000);
Answer:
<script type="text/javascript">
function booyah1(){
alert("BOOYAH!");
}
function booyah2(){
setTimeout(booyah1, 2000);
}
<script>
What is "Unobtrusive Javascript"? What is the practical application of Unobtrusive Javascript (and the reasons
for using it)?
Answer:
- Unobtrusive Javascript: Uses the DOM to attach and execute all JavaScript functions.
- Idea behind 'Unobtrusive' is to keep script separate from HTML.
- Common 'obtrusive' example is <button onclick="someMethodCall();"> its not recommended approach.
- Recommended Unobtrusive approache is
< script ...>
var buttonElement = document.getElementById("buttonId");
buttonElement.onclick=someMethodCall;
</script>


Preparation time
less than 30 mins
Cooking time
1 to 2 hours
Serves
Serves 6
Who would have thought you could eat lasagne when on a diet? Well thanks to our amazingly clever recipe you can.
The pasta is replaced with sheets of blanched leeks so you can have all the deliciousness without the calorie count.
This meal provides 354 kcal, 29g protein, 22g carbohydrate (of which 10.5g sugars), 15g fat (of which 7g saturates), 5.5g fibre and 1.7g salt per portion.
Trim the leeks until they are about the same width as your lasagne dish. Cut the leeks lengthways through to the middle but no further.
Open out the leeks and remove five or six of the narrow leaves from the centre of each leek. Thinly slice these inner leaves. Separate the larger leaves – these will become your ‘lasagne’.
Finely chop half the onion and cut the other half into wedges. Thinly slice the celery and dice the carrots.
Put the minced beef in a large non-stick frying pan with the sliced leeks, chopped onion, celery, carrots and garlic.
Place the pan over a medium-high heat and fry without added fat for about 10 minutes until lightly coloured. You’ll need to break up the mince with a couple of wooden spatulas or spoons as it cooks.
Stir in the chopped mushrooms and cook for 2–3 minutes more. The pan should look fairly dry at this point.
Sprinkle over the plain flour and stir it thoroughly into the mince and vegetables. Slowly stir in the red wine and beef stock. Add the canned tomatoes, tomato purée and dried oregano, then drop a bay leaf into the pan and bring it to a simmer. Season with lots of freshly ground black pepper.
Turn down the heat slightly and leave the mince to simmer for 20–30 minutes until rich and thick, stirring occasionally.
While the mince is cooking, put the onion wedges in a saucepan with the remaining bay leaf. In a small bowl mix three tablespoons of the milk with the cornflour.
Pour the rest of the milk into the pan with the onion wedges and set it over a low heat. Bring to a very gentle simmer and cook for 2–3 minutes. Remove from the heat and leave the milk to infuse for 10 minutes.
Half fill a large saucepan with water and bring to the boil. Add the leek ‘lasagne’ and bring the water back to the boil.
Cook the leeks for five minutes or until very tender. It is important that the leeks are tender or the lasagne will be tricky to cut later.
Drain in a colander under running water until cold. Drain on kitchen paper or a clean tea towel.
Preheat the oven to 200C/400F/Gas 6.
Remove the onion wedges and bay leaf from the infused milk with a slotted spoon, then return the pan to the heat. Give the cornflour and milk mixture a good stir until it is smooth once more and pour it into the pan with the infused milk.
Bring to a simmer and cook for five minutes, stirring regularly until the sauce is smooth and thick.
Season the sauce with a good grating of nutmeg to taste and plenty of ground black pepper.
If the sauce is a little too thick to pour easily, whisk in a couple more tablespoons of milk.
Spoon a third of the mince mixture into a 2.5 litre lasagne dish. Top with a layer of blanched leeks. Repeat the layers twice more, finishing with leeks. Pour the white sauce over the leeks and top with the sliced tomatoes. Mix the cheddar and parmesan cheese and sprinkle all over the top. Bake for 30 minutes or until golden-brown and bubbling.
Divide into portions with your sharpest knife. Serve with a freshly dressed green salad.


You may have mistyped the address or the page may have moved.
Our browse page is the best place to start looking for travel blogs.
Any questions? Get in touch with us at feedback@blavel.com.


This project is the first in the Front-End Web Dev Nanodegree.
This project is the second in the Front-End Web Dev Nanodegree.
Something new is on it's way, stay tuned!


welcome to greenorange
April 10, 2011
This is GreenOrange , a free, fully standards-compliant CSS template designed by FCT. This free template is released under a Creative Commons Attributions 2.5 license, so you’re pretty much free to do whatever you want with it (even use it commercially) provided you keep the links in the footer intact. Aside from that, have fun with it :) Sed lacus. Donec lectus. Nullam pretium nibh ut turpis. Nam bibendum. In nulla tortor, elementum ipsum. Proin imperdiet est. Phasellus dapibus semper urna. Pellentesque ornare, orci in felis. Donec ut ante. In id eros. Suspendisse lacus turpis, cursus egestas at sem.


Mage Notingale:
Welcome to Gracia! I am here to guide adventures who come from Aden.
It is impossible to walk around in Gracia because of the contamination caused by the Seeds. Most move via Airship, but that is also difficult -- there simply aren't enough for everyone.
The magicians of Aden crafted an alternative plan. It is called an Aurabird. I think it is the better solution for you.
Ask what to do.
Ask about Aerial Raid Monsters.
Ask about major hunting grounds.
Quest


1. You may not have admin permissions on the repository you’re looking for. Check on
GitHub that you have admin permissions to that repository.
2. If the repository is owned by an organisation, your organisation may not allow access to this powerup.
Check the organisation’s settings to confirm that it’s repositories are accessible.
{% if owned_by_another_repos|length > 0 %}
3. Some of the repositories you have admin permissions on have already been connected to this powerup.


OSSL_PROVIDER-base - OpenSSL base provider
The OpenSSL base provider supplies the encoding for OpenSSL's asymmetric cryptography.
The implementations in this provider specifically have this property defined:
It may be used in a property query string with fetching functions.
It isn't mandatory to query for this property, except to make sure to get implementations of this provider and none other.
These may be used in a property query string with fetching functions to select which data are to be encoded. Either the private key material, the public key material or the domain parameters can be selected.
These may be used in a property query string with fetching functions to select the encoding output format. Either the DER, PEM and plaintext are currently permitted.
The OpenSSL base provider supports these operations and algorithms:
In addition to "provider=base", some of these encoders define the property "fips=yes", to allow them to be used together with the FIPS provider.
OSSL_PROVIDER-default(7), openssl-core.h(7), openssl-core_dispatch.h(7), provider(7)
This functionality was added in OpenSSL 3.0.
Copyright 2020 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.


Last Updated 4/12/2021
This Privacy Policy explains how Strive collects, uses, and discloses information about you when you access or use mobile application and interact with us.
We may change this Privacy Policy from time to time. If we make changes, we will notify you by revising the date at the top of the policy and, in some cases, we may provide you with additional notice (such as adding a statement to our website homepage or sending you a notification). We encourage you to review the Privacy Policy whenever you access the Services or otherwise interact with us to stay informed about our information practices and the choices available to you.
We collect information when you register for an account, participate in interactive features, participate in a competition, and communicate with us. The information you may provide includes your name, email, number of steps, exercise minutes, distance in miles, move calories, body measurements including weight, body fat percentage, body mass index, and height. We use this information to track your health and fitness goals, compete with friends on these metrics, display leaderboards in competitions, bar charts for your activity metrics, and line graphs for your body measurements.
When you use our Services, we collect the following information about you:
We also obtain information about you from other sources, including transaction information from third-party app stores you use to install our app.
We use the information we collect to:
We share information about you as follows and as otherwise described in this Privacy Policy:
We allow others to provide analytics services on our behalf in our mobile application. These entities use cookies, web beacons, device identifiers and other technologies to collect information about your use of our mobile application, including your IP address, device identifiers, mobile network information, screens viewed, time spent in our app, links clicked, and conversion information. This information may be used by Strive to analyze and track data, determine the popularity of certain features, and better understand your activity.
With your consent, we send push notifications to your mobile device. You can deactivate these messages at any time by changing the notification settings on your mobile device.
This section provides additional disclosures required by the California Consumer Privacy Act (or "CCPA").
Please see the list of the personal information we have collected about California consumers in the last 12 months, along with our business and commercial purposes and categories of third parties with whom this information may be shared. For more details about the personal information we collect, including the categories of sources, please see the "Collection of Information" section above.
Identifiers, such as your name, email address, and unique identifiers (like IP address) tied to your device. Characteristics of protected classifications under state or federal law , such as gender and age. Approximate geolocation data. Internet or other electronic network activity, such as browsing behavior and information about your usage and interactions with our Services. Other personal information you provide , including preferences, goals and other personal information contained in product reviews or communications. Inferences drawn from the above, such as features you like about the app.
Performing or providing our services, such as to maintain accounts, provide customer service, and verify customer information. Improving and maintaining our Services, such as by improving our Services and developing new products and services. Debugging, such as to identify and repair errors and other functionality issues. Communicate with you about marketing and other relationship or transactional messages. Analyze usage, such as by monitoring trends and activities in connection with use of our Services. Legal reasons, such as to help detect and protect against security incidents, or other malicious, deceptive, fraudulent, or illegal activity.
Companies that provide services to us, such as those that assist us with customer support, communications, data analytics, and bug fix management and logging. Third parties with whom you consent to sharing your information, such as with partners that help determine the popularity of certain features, and assist in better understanding your activity. Government entities or other third parties for legal reasons, such as to comply with law or for other legal reasons.
Subject to certain limitations and exceptions, the CCPA provides California consumers the right to request to know more details about the categories and specific pieces of personal information, to delete their personal information, to opt out of any "sales" that may be occurring, and to not be discriminated against for exercising these rights.
We do not "sell" the personal information we collect (and will not sell it in the future without providing a right to opt out).
California consumers may make a rights request by emailing us at<EMAIL_ADDRESS>We will verify your request by asking you to provide information that matches information we have on file about you. Consumers can also designate an authorized agent to exercise these rights on their behalf. Authorized agents should submit requests through the same channel, but we will require proof that the person is authorized to act on your behalf and may also still ask you to verify your identity with us directly.
Strive strives to make this privacy policy accessible in line with the World Wide Web Consortium's Web Content Accessibility Guidelines, version 2.1.
If you have any questions about this Privacy Policy, please contact us at: support@strivecompetitions.com


#include <db.h> int log_compare(const DB_LSN *lsn0, const DB_LSN *lsn1);
int log_compare(const DB_LSN *lsn0, const DB_LSN *lsn1);
The log_compare function allows the caller to compare two DB_LSN structures, returning 0 if they are equal, 1 if lsn0 is greater than lsn1, and -1 if lsn0 is less than lsn1.


8 references to AllowThisCommandToWrite
System.Management.Automation (8)
engine\CommandProcessor.cs (4)
166
using (commandRuntime.
AllowThisCommandToWrite
(false))
284
using (CommandRuntime.
AllowThisCommandToWrite
(false))
319
using (commandRuntime.
AllowThisCommandToWrite
(true))
368
using (commandRuntime.
AllowThisCommandToWrite
(true))
engine\CommandProcessorBase.cs (3)
429
using (this.CommandRuntime.
AllowThisCommandToWrite
(false))
517
using (commandRuntime.
AllowThisCommandToWrite
(true))
591
using (commandRuntime.
AllowThisCommandToWrite
(true))
engine\ScriptCommandProcessor.cs (1)
607
using (commandRuntime.
AllowThisCommandToWrite
(false))


Pollard Rayudu and Pollard reflect on the catching that helped MI edge RPS to win IPL 2017 Final
Hardik Pandya Pandya brothers speak on their respective journeys in IPL and how they have been a strong support system for each other
Parthiv Patel Made up for lack of runs with fielding says the MI wicketkeeper-batsman
MI become most-successful IPL team, Narrow wins in title-clashes, & Rohit's incredible record in T20 competitions
MI edge RPS to clinch third IPL title