Operators $( ) @( ) :: &
( ) Grouping Expression operator.
Parenthesis/Brackets work just as they do in mathematics, each pair will determine the order of evaluation and return the result of the expression within.
PS C:\> (2 + 3) * 5
A shortcut syntax is available (…).property that returns a single property from an item or a collection (PowerShell V3.0):
PS C:\> (dir).FullName
To return multiple properties, pipe to ForEach-Object (%) or Select-Object
Simple Parenthesis will also evaluate variable assignments - displaying the value(s).
for example:
$msg = "Hello World"
"$msg"
can be rewritten as:
($msg = "Hello World")
$( ) SubExpression operator.
Use a subexpression to return specific properties of an object.
Unlike simple parenthesis, a subexpression can contain multiple ; semicolon ; separated ; statements.
The output of each statement contributes to the output of the subexpression. For a single result, it will return a scalar. For multiple results, it will return an array.
Subexpressions allow you to evaluate and act on the results of an expression in a single line; with no need for an intermediate variable:
if($(code that returns a value/object) -eq "somevalue") { do_something }
PS C:\> $city="Copenhagen"
PS C:\> $strLength = "$($city.length)"
#n.b. not "$city.length" that would return "Copenhagen.Length"
PS C:\> "The result of 2 + 3 = $(2+3)"
PS C:\> $(Get-WMIObject win32_Directory)
@( ) Array SubExpression operator.
An array subexpression behaves just like a subexpression except that it guarantees that the output will be an array.
This works even if there is no output at all (gives an empy array.)
If the result is a scalar value then the result will be a single element array containg the scalar value.
(If the output is already an array then the use of an array subexpression will have no effect, it won't wrap one array inside of another array.)
PS C:\> @(Get-WMIObject win32_logicalDisk)
Using either $( ) or @( )will cause the powershell parser to re-evaluate the parsing mode based on the first non-whitespace character inside the parenthesis. A neat effect of this is that object properties will be evaluated instead of being treated as literal strings:
"$user.department" ==> JDOE.department
"$($user.department)" ==> "Human Resources"
:: Static member operator
Call the static properties operator and methods of a .NET Framework class.
To find the static properties and methods of an object, use the -Static parameter of Get-Member:
[datetime] | gm -static
[datetime]::now
[datetime]::Utcnow
, Comma operator
As a binary operator, the comma creates an array.
As a unary operator, the comma creates an array with one member. Place the comma before the member.
& Call operator
Run a command, script, or script block. The call operator, also known as the "invocation operator," lets you run commands that are stored in variables and represented by strings. Because the call operator does not parse the command, it cannot interpret command parameters.
C:\PS> $c = "get-executionpolicy"
C:\PS> $c
get-executionpolicy
C:\PS> & $c
AllSigned
. Dot sourcing operator
Run a script in the current scope so that any functions, aliases, and variables that the script creates are added to the current scope. (without dot sourcing, the variables created within a script will all disappear when the script finishes.)
. C:\sample1.ps1
. .\sample2.ps1
Note: The dot sourcing operator is followed by a space. Use the space to distinguish the dot from the dot (.) symbol that represents the current directory.
-f Format operator
Format a string expression.
Place {0} {1} etc. into the string as placemarkers where you want the variables to appear, immediately follow the string with the -f operator and then lastly, the list of comma separated variables which will be used to populate the placemarkers.
Get-ChildItem c:\ | ForEach-Object {'File {0} Created {1}' -f $_.fullname,$_.creationtime}
Optional format string(s) can be included to add padding/alignment and display dates/times/percentages/hex etc correctly, see the -f format page for full details.
..Range operator
Produce a sequence of numbers:
10..20
5..25
"No need to ask. He's a smooth operator, smooth operator, smooth operator.." ~ Sade
Related PowerShell Commands:
Comparison Operators -eq -neq -contains etc
Scriptblock - A collection of statements: { … }
Variables - PowerShell Variables and basic Mathematical operators (+ - = /)
Pipelines - Pass objects down the pipeline
Copyright © SS64.com _PHONE_
Some rights reserved


text:
Rushes must be controlled or they can overrun grasslands. According to the Suffolk Wildlife Trust, rushes can be soft or hard weeds that grow in the wild. The weeds provide natural cover for wild birds and can grow in dry or moist areas. Rushes typically grow in environments with low pH levels. Reducing or eliminating rushes is necessary to keep grasslands healthy and prevent the unnecessary creation of shelter for dangerous wild animals.
- Skill level:
- Moderately Easy
Other People Are Reading
Things you need
Cut the rushes. Identify the area of grasslands with rushes; if two-thirds or more of area is covered with rushes, it is time to cut. Use a tractor-mounted cutter to mow and destroy rushes. Cut rushes only between July 15 and the end of July. Trimming rushes too soon may result in the killing of nesting birds, while cutting in the latter half of July makes it an ideal time to uproot the rushes just before they bloom. Always leave at least one-tenth of your grassland rushes intact to provide nesting birds a natural habitat.
Apply herbicides. Spray an herbicide such as Clopyraid to eliminate large areas of hard thistle. Put on gloves and provide a spot-herbicide treatment to smaller areas. Rub the herbicide directly onto the stem and bud of each plant between May and July.
Let goats graze. Place goats in areas where rushes grow. Goats naturally eat thistle and other rushes. Place the goats on the grasslands after they have been cut to reduce the odds of returning rushes.
- 20 of the funniest online reviews ever
- 14 Biggest lies people tell in online dating sites
- Hilarious things Google thinks you're trying to search for

source: openbmb/Ultra-FineWeb


Astro-WISE Environment
image0 image1 image2 image3 image4 image5
and coordinated by OmegaCEN-NOVA. AWE was conceived as the solution to handle the vast amounts of astronomical data generated by all-sky surveys, particularly those to be observed with OmegaCAM on the VLT Survey Telescope (VST) on Cerro Paranal in Chile.
This tutorial will give you an introduction to the Astro-WISE environment in about 3 hours. It starts from the level of a completely new user who has never logged in but has an Astro-WISE account. This tutorial consists of exercises to be done primarily from the awe-prompt or notebook.
First follow the steps in HOW-TO Get started to setup your environment.
The tutorial consists of the following topics (links to iPython notebooks):
 1. The awe-prompt basics
 2. Basic calibration tasks
 3. Astrometry
 4. Photometry
 5. Working with SourceLists
 6. DataMining
 7. Galaxy surface brightness analysis
 8. Astro-WISE and Virtual Observatory interoperability
Topics sometimes depend on the results derived in earlier topics. The tutorial is by no means comprehensive or exhaustive. The exercises are very basic and many topics are not discussed at all. To get a more in-depth and comprehensive presentation of the Astro-WISE environment we refer to the HOWTOs and the Manual.
API documentation


DOCUMENTATION
Android Applications
See the basic setup steps below to get started with the Logify Alert service:
Generate an API Key
The Logify Alert service uses unique identifiers – API keys – to register and monitor individual applications. You will use this key later when creating an instance of Logify Alert client in code.
 1. Log in to the Logify Alert website: logify.devexpress.com.
 2. Switch to the Applications tab and click Create New Application.
 3. Specify the application name and description, then click Create.
 4. The Applications tab will now display a new entry with an auto-generated API key.
Send Reports to Logify Alert
This section explains how to make your Android application send unhandled exceptions to the Logify Alert service.
Add the Logify Alert Client to Your Project
In your application module's build.gradle file, do the following:
 1. In the dependencies section, declare the logify-alert-android library dependency:
 compile "com.devexpress.logify:logify-alert-android:1.0.2"
 2. In the repositories section, declare the Logify Alert's maven repository:
 maven {
 url "_URL_
 }

 3. In the defaultConfig section, ensure that minSdkVersion is set to a value from 17 to 28.
In the pom.xml file, do the following:
 1. In the dependencies section, declare the logify-alert-android library dependency:
 <dependency>
 <groupId>com.devexpress.logify</groupId>
 <artifactId>logify-alert-android</artifactId>
 <version>1.0.2</version>
 </dependency>
 2. In the repositories section, declare the Logify Alert's maven repository:
 <repository>
 <id>any-name-or-id</id>
 <url>_URL_ </url>
 </repository>

 3. In the defaultConfig section, ensure that minSdkVersion is set to a value from 17 to 28.
Synchronize your project.
Send Reports Automatically
Initialize and configure the Logify Alert client in the onCreate method of your application's main activity to automatically intercept all unhandled exceptions and send the corresponding crash reports to Logify Alert:
import com.devexpress.logify.alert.android.LogifyAlert;
 public class MainActivity extends Activity {
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 // Initialize the Logify Alert client.
 LogifyAlert client = LogifyAlert.getInstance();

 // Specify an API Key to register your application in the Logify Alert service.
 client.setApiKey("YOUR_API_KEY");
 // Optional but recommended.
 // Pass your application context to the Logify Alert client
 // to include application environment information in crash reports.
 client.setContext(this.getApplicationContext());
 // Report unhandled exceptions to Logify Alert.
 client.startExceptionsHandling();
 }
}
Alternatively, you can specify an API Key in the logify.properties file (Logify Alert reads this file if you pass your application context to the client using the setContext method):
apiKey=YOUR_API_KEY
Send Reports Manually
Use the following code to catch exceptions and send reports manually.
import com.devexpress.logify.alert.android.LogifyAlert;
try {
 // Some code
}
catch (Throwable ex){
 LogifyAlert client = LogifyAlert.getInstance();
 client.setApiKey("YOUR_API_KEY");
 client.send(e);
}
Rebuild and Run Your Application
Once your updated application has been redeployed, log in to logify.devexpress.com to review and process incoming reports.
Terms of use Copyright © 2016-2020 Developer Express Inc.


text:
within practicable time limits. We propose a novel hybrid Evolutionary Algorithm based on the Differential Evolution algorithm and Adaptive Parameter Gaining Sharing Knowledge-based algorithm to solve global real-world constrained parameter space. The proposed CHAGSKODE algorithm leverages the power of multiple adaptation strategies concerning the control parameters, search mechanisms, as well as uses knowledge sharing between junior and senior phases. We test our method on the benchmark functions taken from the CEC2020 special session & competition on real-world constrained optimization. Experimental results indicate that CHAGSKODE is able to achieve state-of-theart performance on real-world constrained global optimization when compared against other well-known real-world constrained optimizers.
ARTICLE | doi:10.20944/preprints201804.0137.v1
Subject: Engineering, Electrical & Electronic Engineering Keywords: eddy current loss; multi-objective optimization (MOO); electromagnetic analysis; equivalent hierarchical method
Online: 11 April 2018 (05:45:35 CEST)
The eddy current loss should be optimized to be as less as possible for the stability of permanent magnet in high speed permanent magnet synchronous motor (HSPMSM) rotor and ensure the high efficiency and low temperature of the motor. This paper analyzes the eddy current distribution in rotor, with consideration of the conflict of the thickness of sleeve and diameter of the rotor, calculating the eddy current loss (ECL) and the thermal distribution via Separation of variables method for solving Maxwell's equations with analytical hieratical model of ECL constructed. The optimization result of ECL of the HSPMSM whose power and rated speed is 30kw 48000r/min can be got by multi-objective optimization method, combined weighting coefficient method and traversal algorithm based on chaotic local search particle swarm optimization (CLSPSO), utilizing ECL analytical model and other analytical constraints. Related experiment and measurement has been implemented with new approach of loss separation.
Subject: Engineering, Industrial & Manufacturing Engineering Keywords: parallel robot; five-DoF task; 3T2R task; functional redundancy; task redundancy; redundancy resolution; reciprocal Euler angles; inverse kinematics
Online: 1 July 2019 (12:17:56 CEST)
Industrial manipulators and parallel robots are often used for tasks like drilling or milling, that require three translational, but only two rotational degrees of freedom ("3T2R"). While kinematic models for specific mechanisms for these tasks exist, a general kinematic model for parallel robots is still missing. This paper presents the definition of the rotational component of kinematic constraints equations for parallel robots based on two reciprocal sets of Euler angles for the end-effector orientation and the orientation residual. The method allows to completely remove the redundant coordinate in 3T2R tasks and to solve the inverse kinematics for general serial and parallel robots with the gradient-descent algorithm. The functional redundancy of robots with full mobility is exploited using nullspace projection.
ARTICLE | doi:10.20944/preprints202211.0103.v1
Subject: Mathematics & Computer Science, Numerical Analysis & Optimization Keywords: multi-objective optimization; hypervolume indicator; Newton method; evolutionary algorithms; constraint handling; hypervolume scalarization
Online: 7 November 2022 (04:20:09 CET)
Recently, the Hypervolume Newton method (HVN) has been proposed as fast and precise indicator-based method for solving unconstrained bi-objective optimization problems with objective functions that are at least twice continuously differentiable. The HVN is defined on the space of (vectorized) fixed cardinality sets of decision space vectors for a given multi-objective optimization problem (MOP) and seeks to maximize the hypervolume indicator adopting the Newton-Raphson method for deterministic numerical optimization. To extend its scope to non-convex optimization problems the HVN method was hybridized with a multi-objective evolutionary algorithm (MOEA), which resulted in a competitive solver for continuous unconstrained bi-objective optimization problems. In this paper, we extend the HVN to constrained MOPs with in principle any number of objectives. We demonstrate the applicability of the extended HVN on a set of challenging benchmark problems and show that the new method can be readily be applied to solve equality constraints with a high precision problems, and to some extend also inequalities. We finally use HVN as local search engine within a MOEA and show the benefit of this hybrid method on several benchmark problems.
ARTICLE | doi:10.20944/preprints201810.0420.v1
Subject: Engineering, Energy & Fuel Technology Keywords: District Heating; multi-objective evolutionary optimization; distributed cogeneration; optimal operation.
Online: 18 October 2018 (11:53:15 CEST)
The paper deals with the modelization and optimization of an integrated multi-component energy system. On-off operation and presence-absence of components must be described by means of binary decision variables, besides equality and inequality constraints; furthermore, the synthesis and the operation of the energy system should be optimized at the same time. In this paper a hierarchical optimization strategy is used, adopting a genetic algorithm in the higher optimization level, to choose the main binary decision variables, whilst a MILP algorithm is used in the lower level, to choose the optimal operation of the system and to supply the merit function to the genetic algorithm. The method is then applied to a distributed generation system, which has to be designed for a set of users located in the center of a small town in the North-East of Italy. The results show the advantage of distributed cogeneration, when the optimal synthesis and operation of the whole system are adopted, and significant reduction in the computing time by using the proposed two-level optimization procedure.
ARTICLE | doi:10.20944/preprints201910.0009.v1
Subject: Physical Sciences, Optics Keywords: multi-task learning; non-linear regression; neural networks; luminescence; luminescence quenching; oxygen sensing; phase fluorimetry; temperature sensing
Online: 2 October 2019 (03:17:07 CEST)
The classical approach to non-linear regression in physics, is to take a mathematical model describing the functional dependence of the dependent variable from a set of independent variables, and then, using non-linear fitting algorithms, extract the parameters used in the modeling. Particularly challenging are real systems, characterised by several additional influencing factors related to specific components, like electronics or optical parts. In such cases, to make the model reproduce the data, empirically determined terms are built-in the models to compensate for the impossibility of modeling things that are, by construction, impossible to model. A new approach to solve this issue is to use neural networks, particularly feed-forward architectures with a sufficient number of hidden layers and an appropriate number of output neurons, each responsible for predicting the desired variables. Unfortunately, feed-forward neural networks (FFNNs) usually perform less efficiently when applied to multi-dimensional regression problems, that is when they are required to predict simultaneously multiple variables that depend from the input dataset in fundamentally different ways. To address this problem, we propose multi-task learning (MTL) architectures. These are characterized by multiple branches of task-specific layers, which have as input the output of a common set of layers. To demonstrate the power of this approach for multi-dimensional regression, the method is applied to luminescence sensing. Here the MTL architecture allows predicting multiple parameters, the oxygen concentration and the temperature, from a single set of measurements.
ARTICLE | doi:10.20944/preprints201709.0063.v1
Subject: Engineering, Biomedical & Chemical Engineering Keywords: design of experiments; multi-objective optimization; Fisher information matrix; curvature; biological processes; mathematical modeling
Online: 15 September 2017 (11:07:52 CEST)
The bottleneck in creating dynamic models of biological networks and processes often lies in estimating unknown kinetic model parameters from experimental data. In this regard, experimental conditions have a strong influence on parameter identifiability and should therefore be optimized to give the maximum information for parameter estimation. Existing model-based design of experiment (MBDOE) methods commonly rely on the Fisher Information Matrix (FIM) for defining a metric of data informativeness. When the model behavior is highly nonlinear, FIM-based criteria may lead to suboptimal designs since the FIM only accounts for the linear variation of the model outputs with respect to the parameters. In this work, we developed a multi-objective optimization (MOO) MBDOE, where model nonlinearity was taken into consideration through the use of curvature. The proposed MOO MBDOE involved maximizing data informativeness using a FIM-based metric and at the same time minimizing the model curvature. We demonstrated the advantages of the MOO MBDOE over existing FIM-based and other curvature-based MBDOEs in an application to the kinetic modeling of fed-batch fermentation of Baker's yeast.
ARTICLE | doi:10.20944/preprints201609.0005.v1
Subject: Engineering, Electrical & Electronic Engineering Keywords: multi-type loads; active power dispatch optimization; simulated-annealing Q-learning
Online: 2 September 2016 (11:23:55 CEST)
An active power dispatch method for a microgrid (MG) with multi-type loads, renewable energy sources (RESs) and distributed energy storage devices (DESDs) is the focus of this paper. The MG operates in a grid-connected model, and distributed power sources contribute to the service for load demands. The outputs of multiple DESDs are controlled to optimize the active power dispatch. Our goal with optimization is to reduce the economic cost under time-of-use (TOU) price, and to adjust the excessively high or low load rate of distributed transformers (DTs) caused by the peak-valley


text:
Datura discolor – Desert Thorn-apple
Scientific Name: Datura discolor
Common Name: Desert Thorn-apple
Growth Habit: Herb/Forb
Arizona Native Status: Native
Habitat: Desert. It grows in desert washes, along roadsides, in drainage ditches, and in other disturbed areas with loose soil.
Flower Color: White
Flowering Season: Summer
Height: To 2 feet (61 cm) tall, but usually less
Description: The showy flowers are nocturnal and open around sundown. The flowers are tubular, up to 6 1/3 inches (16 cm) long, held erect (not drooping), and have a glabrous corolla with short lobe tips and a distinctive purple-streaked throat. The flowers are followed by spiny, drooping, minutely hairy, rounded fruits that contain black seeds. The fruit is initially green, but it dries to a brown color. The leaves are green, alternate, broadly oval-shaped, and coarsely toothed.
No other Datura species found here has purple streaks in the floral tube.
Allergenic – Skin contact with the sap may cause contact dermatitis in susceptible persons.
Poisonous – The plants are poisonous and contain toxic tropane alkaloids.
Kingdom: Plantae – Plants
Subkingdom: Tracheobionta – Vascular plants
Superdivision: Spermatophyta – Seed plants
Division: Magnoliophyta – Flowering plants
Class: Magnoliopsida – Dicotyledons
Family: Solanaceae – Potato family
Genus: Datura L. – jimsonweed
Species: Datura discolor Bernh. – desert thorn-apple
More About This Plant

source: HuggingFaceFW/fineweb-edu


Google Updates The Nest Hub With New Sleep Sensing Soli Technology
Google has just announced its 2nd-generation Nest Hub that will further improve its technology and add Sleep Sensing to track and help our sleeping patterns.
The next-gen Nest Hub will retain much of its look and thick bezel to retain its real-life photo frame look. It will be available in Chalk (White), Charcoal (Black), Sand (Pink) and a new Mist (Blue) colour.
What's unique about the Nest Hub has always been its technology. The new Nest Hub consists of a machine learning chip that lets your common Assistant commands be processed much faster locally, has an all-new improved sound system with 50% more bass and a third far-field microphone. Another addition is also the hidden Soli radar chip that helps you to play/pause media by just tapping in the air. There is also a wave gesture to snooze alarms.
The Sleep Sensing powered by the Soli technology uses sensors to analyze your sleep based on your movement, breathing and other sleep occurrences such as coughing, snoring, or temperature changes. Behind the Soli technology isn't a camera that can see you visually, what it does is generate movement graphs to determine and analyze those sleep patterns you have daily. These results can be deleted easily in the morning.
Simply check-in with Google in the morning by asking "Hey Google, how did I sleep?" or tap the "Sleep Summary" button for the entire breakdown of your sleep. There are also weekly summaries to check your breathes per minute, snoring or cough data. Google will then analyze these data and suggest recommendations for you to improve your sleep.
So if you're always worried about bad sleeping patterns, perhaps this might be a good investment that you can consider, because sleep is forever important.
The new Nest Hub is available for pre-order for only US$99.99 on the Google Store and will launch officially on 30 March.
Drop a Facebook comment below!
We Are Social


text:
Recently I was given the opportunity to work in a React Native project, as a developer, most of my experience was with React, so I was thrilled with expanding my knowledge in this area.
As I started studying the platform, I got really interested in how to make animations using React Native, and in this blogpost, I am going to share my experience, and create a guide for beginners on how to start animating your React Native apps. In this guide, we are going to create a Burger Button that when activated spins and turns into an X button. For this, introductory knowledge of React Native will be required.
To follow the code, use the instructions in Getting Started with React Native, and then we can start our guide.
There are different techniques provided by this library to animate your component's properties, the most basic being 'Animated.timing'. To show this we are going to begin creating a simple burger button.
Any resemblance with a music playing app is purely coincidental. But before we can begin animating this component, we have to add a wrapper to the views we want to animate, so we can dynamically change its properties. This wrapper is provided by Animated, and it needs to be used for all of the components you wish to animate.
Now that we have setup the basis, we are going to use the 'Animated.timing' function to begin animating the relevant properties. This function takes a property with a value created by Animated's method Animated.Value, and updates it according to instructions. First we are going to translate the upper and lower parts of the button to the middle. Why we need to do this for our animation will be explained later.
With this, we have our first animation in React Native. As you can see, we created a function that uses Animated Timing to change the value of our translateY property, and passed this value to our Animated Views through an object called animatedStyles.
Now we are going to see how to animate more complicated properties, such as color, and rotation. To achieve such animations, we are going to have to use the mathematical concept of Interpolation, which consists of constructing new data points within the range of a discrete set of known data points (according to Wikipedia).
Fortunately, we don't need any mathematical knowledge for this, we can use Animated to interpolate our data, which means, it can calculate which colors would make sense in the animation between two given colors. For example, this is how it would look like if we wanted our button to change colors from green to red when activated. Additionally, we are going to use interpolation to clean up our code, and remove the repeated values in the translate animations.
To interpolate our data, we have to use our animated property's method 'interpolate', and pass into it an input range and an output range. The input range must be the value of the range of our animated property, and output range the initial and final value of the component's property we wish to animate.
Interpolate supports mapping strings, this way, you can pass rotation values, and colors (either by names or RGB hex codes). To continue the animation of our button, now we are going to make the middle part of the button disappear as the animation occurs.
Additionally, we can pass an array with more than only two numbers to both input and output range parameters, with this we could make an animation that has different interactions in the output depending on the range of the input, like an animation that is really fast in the beginning, and slower in the end, similar to keyframe animations in CSS.
For now we have only used Animated's timing method, but there are other possibilities to animate your values. For the rotation we are going to use Animated.Spring, which is an animation function that does not take a duration, it only needs a toValue to work, but you can set friction and tension or speed and bounciness to improve your animation. The spring animation imitates a physical spring, and so, it overshoots the toValue that you provide, the amount it overshoots depends on the values we set before.
To make this animation run in parallel with our previous animation we need to use Animated's parallel function, which takes an array of Animated methods and runs them in parallel. In our example we are going to use high tension and low friction on our spring, so it will be really bouncy:
With this, we have finished our animation. Other possibilities for composing animations are sequence, that waits until one animation ends for the other to begin, and delay, that waits a given amount a time after an animation begins to start the next one.
Comparison with CSS animations
If you have any experience with CSS animations, you can see the similarities. With CSS animations we can declare a transition which will watch for a given CSS property change and automagically interpolate the values for this property to pass during the transition, or we can declare a keyframe animation and decide what we want to happen in the progression of our animation.
With React Native we have to use an approach similar to the CSS keyframe animations, and declare how we want our animation to progress. The main advantage of CSS animation vs React Native Animation is that not all of the properties of CSS are in React Native styles, one example we have on our burger button is the transform origin CSS property.
If we wanted to create the rotation animation of our button, we could declare the transform origin of our upper part of the burger, for example, as left and simply rotate it to 45 degrees, and reach the same animation as the one we did in this course, which needed a translateY to the final position where rotating 45 degrees from the center of the bar would reach the position we want.
But this is not a problem with Animated, it's a problem with React Native in general, but more and more CSS properties are being added to React Native, and I believe, eventually it will reach a realm of possibilities very similar to that of CSS3 in general.
In the introduction of the blogpost I talked about the possibility of creating native animations, but until now we haven't used any of it. Not everything we can do with Animated is supported by the native driver, as a rule of thumb, we cannot animate layout properties, we can animate things like transform and opacity.
In our project, we can use native driver for anything, except the background color and the height of the middle part of the button. But Animated only supports one driver per animation, so we cannot declare a Native Driver for this animations that do not support it, we have to declare a separate, non native driver for them. The way we use the native driver is very simple, we simply have to set a boolean in the animation to true, as follows:
This won't change our animation, it will simply make it more fluid and consume less memory.
With these few basic concepts, we can get started creating useful animations that will improve our users experience with our apps.
Furthermore, with React Native and Animated, we can also track gestures using the Animated.event method and create dynamic animations, like dragging an element or scrolling. Also, we can use libraries to improve our animations, some that I tend to use are libraries that create SVG animations, like flubber.js and D3-Interpolate.
There is still much to be improved in React Native's Animated API, but the path ahead for the platform is very exciting and filled with very smart people. This was my take on how to start with animating your React Native apps, any suggestions are more than welcome.
Thank you for reading!


Advertisement
Energy distributions for the Schottky-Nordheim barrier
 - R. G. ForbesEmail author
Part of the Condensed Matter book series (volume 45B)
Abstract
In this chapter an overview of the different energy distribution for the Schottky-Nordheim barrier is provided.
Particularly in connection with the theory of field electron emission sources and their electron-optical properties, it is useful to have information about the normal energy distribution (NED), parallel energy distribution (PED), and total energy distribution (TED) of emitted electrons, for each of the LECD regimes. In each case what one ideally needs to know is the mathematical form of the distribution, information about its peak value and average value, and information about the width of the distribution, as assessed by one or more appropriate criteria (such as full width at half maximum).
For the cold field electron emission and barrier-top regimes, these values (and analytical formulae for them, where derivable) would depend somewhat on the form assumed for the tunneling barrier and on precisely what other theoretical assumptions are made. In practice, it is only for the Murphy-Good-type theory [56Mur] of emission across the SN barrier that substantial amounts of detailed theory have been developed, and this theory is neither fully complete in its scope nor presently assembled in any one place.
It is beyond the scope of this contribution to complete and assemble detailed information concerning energy distribution theory. Useful introductory material may be found in [73S], more details concerning cold field electron emission in [09S2] and more about barrier-top electron emission in [09S1]. Other relevant material may be found in [73G, 84Mod, 96H, 07J].
Symbols and abbreviations
Short form
Full form
PED
parallel energy distribution
LECD
local emission current density
TED
transmission electron diffraction
NED
normal energy distribution
References
 1. [56Mur]
 Murphy, E.L., Good Jr., E.H.: Phys. Rev. 102, 1464 (1956)ADSCrossRefGoogle Scholar
 2. [73G]
 Gadzuk, J.W., Plummer, E.W.: Rev. Mod. Phys. 45, 487 (1973)ADSCrossRefGoogle Scholar
 3. [73S]
 Swanson, L.W., Bell, A.E.: Adv. Electr. Electron. Phys. 32, 193 (1973)CrossRefGoogle Scholar
 4. [84Mod]
 Modinos, A.: Field, Thermionic and Secondary Electron Emission Spectroscopy. Plenum, New York (1984). Republished as paperback edition by Springer, New York (2013)Google Scholar
 5. [96H]
 Hawkes, P.W., Kasper, E.: Principles of Electron Optics. Applied Geometrical Optics, vol. 2. Academic, London (1996)Google Scholar
 6. [07J]
 Jensen, K.L.: Electron emission physics. Adv. Imaging Electron Phys. 149, 1 (2007)CrossRefGoogle Scholar
 7. [09S1]
 Swanson, L.W., Schwind, G.A.: Chapter 1. In: Orloff, J. (ed) Handbook of Charged Particle Optics (2nd Edition). Boca Raton, CRC Press (2009)Google Scholar
 8. [09S2]
 Swanson, L.W., Schwind, G.A.: Chapter 2. In: Hawkes, P. (ed.) Cold Field Emission and the Scanning Transmission Electron Microscope. Advances in Imaging and Electron Physics, vol. 139, p. 63. Elsevier, Amsterdam (2009)Google Scholar
Copyright information
© Springer-Verlag GmbH Germany 2018
Authors and Affiliations
 1. 1.Advanced Technology InstituteUniversity of SurreyGuildfordUK
Personalised recommendations


text:
beyond the speed of light to return to wedge R. Therefore the boundary between two Rindler wedges is similar to the event horizon of a black hole.
Moreover a free falling observer in wedge R will fall towards the horizon, however, just like with a black hole it will take an infinite amount of (Rindler) time to reach the horizon, as shown in figure 3.
Figure 3: Left Minkowski space, right Rindler space. The blue line is particle at rest falling to the horizon.
We know that a free falling particle in Rindler space will follow a straight line in Minkowski space. So in
x2− y2 (15)
τ = arctanh (y/x) (16)
as we aproach the boundary we have:
as t ↑ x (17)
ρ → 0 (18)
τ → ∞ (19)
Rindler coordinates are a useful tool in the study of black holes. For example the metric of the Schwarzschild black hole can be written as the Rindler metric when we look close to the horizon. The Schwarzschild metric is
ds2 = − 1 −r0
dt2+ 1 −r0
dr2+ r2dΩ2 (20)
dΩ2 = dθ2+ sin (θ)2dφ2 (21)
where r0 = 2M . in the near horizon expansion we have r − ro = ε and ignore higher orders of ε. The metric then reduces to
εdε2+ r20dΩ2 (22)
setting 4r0ε = ρ2 and t = 2r1
0τ we obtain:
ds2 = −ρ2dτ2+ dρ2+ r02dΩ2 (23)
which is just the Rindler metric together with the metric of a sphere with radius r0. Therefore close to the horizon we obtain Rindler space. Furthermore because we know that we can rewrite these coordinates again as a patch of Minkowski space we conclude that at a classical level we expect no strange behaviour at the horizon.
Rindler space can also be used to calculate the temperature of a black hole in quick manner. We Wick rotate to Euclidean space τ = −iτE and obtain the metric of Euclidean space in polar coordinates.
ds2= ρ2dτE2 + dρ2 (24)
To avoid conical singularities we need to identify τE = τE+ 2π, and as shown in appendix A.1 we conclude that the system is at T = 2π1 . Furthermore in the case of the Schwarzschild metric we scaled the time with t = 2r1
0τ to obtain the Rindler metric, therefore the imaginary time tE should be periodic with period β = 4r0π to avoid conical singularities. Thus the temperature of a Schwarzschild black hole is T = 8M π1 = 8M πGk~c3
B. For the Rindler temperature we will provide a more rigorous proof in section 2.6.
2.3 Wave modes
To study the effects of a black hole horizon we place a scalar field with mass m on the background of the Rindler metric. A scalar field obeys the Klein-Gordon equation.
ψ = m2ψ (25)
In a curved background this becomes :
−ggµν∂νψ = m2ψ (26)
Using the ansatz ψ(τ, ρ) = e−iωτfω(ρ) together with the Rindler metric in the R wedge, we obtain:
ρ2fω00+ ρfω0 − (ρ2m2− ω2)fω= 0 (27)
Therefore our solution is of the form:
fω(ρ) = NωKiω(mρ) (28)
where Nω is some normalization constant and Kα(x) is the modified Bessel function of the second kind.
Although the equation is also solved by the modified Bessel function of the first kind, that solution rejected because it has infinite energy. We decompose the field in positive and negative frequency waves. Thus our field operator in the right wedge is:
ΨR(τ, ρ) = Z
2ω (aR,ωψR,ω(τ, ρ) + h.c.) (29)
ψR,ω(τ, ρ) = e−iωτNωKiω(mρ) (30)
A similar expression holds for the left wedge, however, as the time runs backward we should choose a different sign for ω.
ψL,ω(τ, ρ) = eiωτNωK−iω(mρ) (31)
So at this point we can describe the fields in the left and right wedges.
2.4 Behind the horizon
Behind the horizon of a black hole corresponds to the future wedge of the Rindler space-time. We repeat the discussion of last subsection for the future wedge (the past wedge is similar to the future wedge).
The main difference between the future and the right wedge is the sign in the metric (12), (13). Which effectively flips the sign of m2 in equation (27).
ρ2fω00+ ρfω0 + (ρ2m2+ ω2)fω= 0 (32) therefore our solution is of the form:
ψF,ω(τ, ρ) = e−iωτNˆωJiω(mρ) (33)
where ˆNω is some normalization constant and Jα(x) is the Bessel function of the first kind. Because τ is now a space-like direction, we no long decompose this into positive and negative frequency waves. We have to consider the entire frequency range, however, for calculation it is more convenient to write them separately. Moreover, Bessel functions of the first kind can be written as a linear combination of modified Bessel functions of the second kind, which makes it easier to compare with the modes in the right wedge.
Therefore our modes in the future wedge are.
ψ1,ω(τ, ρ) = e−iωτN˜ωKiω(−imρ) (34) ψ2,ω(τ, ρ) = eiωτN˜ωK−iω(−imρ) (35) where in the second mode we have flipped the sign of ω to obtain only positive ω for the field operator:
ΨF(τ, ρ) = Z
2ω(a1,ωψ1,ω(τ, ρ) + a2,ωψ2,ω(τ, ρ) + h.c.) (36) which describes the fields in the future wedge.
We now have two sets of annihilation and creation operators, the left and right one and the operators from the future wedge, while only one is needed to hold all the information. Therefore the right field (29) and its left partner describe the same information as the future field (36). Therefore we are able to link the creation and annihilation operators of the left and right wedges to the future wedge.
We analytically continue the modes of the right wedge to the future wedge. This is most easily done using light-cone coordinates.
u = t + x (37)
v = t − x (38)
τ = 1
2ln (u) −1
2ln (−v) (40)
The expressions for ρ and τ hold for the right wedge and changes for the other wedges. The R mode and the future modes in the future wedge look like:
ψR,ω(u, v) = e−iω12(ln u−ln v)NωKiω(im√
ψ1,ω(u, v) = e−iω12(ln u−ln v)N˜ωKiω(−im√
ψ2,ω(u, v) = eiω12(ln u−ln v)N˜ωK−iω(−im√
So in fact ψR,ω(u, v) ∼ ψ†2,ω(u, v), furthermore we repeat the same for the left wedge and obtain ψL,ω(u, v) ∼ ψ†1,ω(u, v). Therefore we can relate the creation and annihilation operators in the left and right wedges to the future wedge operators.
aR,ω = a†2,ω (44)
a†R,ω = a2,ω (45)
aL,ω = a†1,ω (46)
a†L,ω = a1,ω (47)
Intuitively speaking this exchange between creation and annihilation operators is to be expected. A particle passing the boundary between the right wedge and the future wedge is destroyed in the right wedge and created in the future wedge. Using this prescription we have found a smooth way to relate all the wedges.
2.5 Minkowski modes
The left and right wedges contained the same information as the future wedge and could be connected to each other. However, as we seen in section 2.1 the Rindler coordinates describe the same space as Minkowski coordinates. Therefore we can relate the Rindler modes to the Minkowski modes. As the future modes are related to the left and right modes we only have to relate the Minkowski modes to one set of modes. We will rewrite the left and right modes as follows:
(ψR,ω In region R
0 In region L (48)
(0 In region R
ψL,ω In region L (49)
Furthermore with constant ρ we can rewrite τ = − ln(ρ) + ln(u) in the R region. So the above equation become:
(e−iωτ ∼ e−iω ln(u)

source: m-a-p/FineFineWeb


text:
Writing: A College Handbook - End Marks (Ch. 31)
About this resource
||5.0 (1 votes)
||Nov 24, 2008|
[FROM THE TEXT]
Use a period to mark the end of a declarative sentence, a mild command, or an indirect question: "The days are growing shorter, and the nights are becoming cool." When typing on a computer, skip one space after the period before beginning the next sentence. (On a typewriter, skip two spaces.) Use a period to mark the end of some abbreviations: "Dr. Boyle". (NOTE: MLA recommends not using periods in abbreviations that include capital letters, such as PhD and BC.) Generally, you don't need periods with acronyms (words formed from the initials of a multiword title), with capital-letter abbreviations of technical terms, or with abbreviated names of states, agencies, and organizations: "IBM". But you do need periods with abbreviations standing for the names of political entities: "U.S.A." For guidance, see your dictionary. Use a period to mark letters or numerals used in vertical lists. If you give the information in a sentence, enclose the letters or numbers within parentheses and omit the periods.
[ABOUT THE BOOK]
Through four successful editions, Writing: A College Handbook's positive approach has not only empowered students to write effectively, it has challenged students to consider why good writing matters. The Fifth Edition builds on this emphasis, exemplifying in clear, engaging prose the skills that students need to communicate in a wide variety of rhetorical contexts. A reliable and easy-to-use reference tool and an up-to-date rhetoric and research guide, Writing: A College Handbook invites students to discover the power of effective writing.


text:
The role of storytelling in website copywriting for travel websites
Scroll to navigate
When it comes to travel websites, storytelling plays a crucial role in engaging visitors and inspiring them to take action. Effective website copywriting goes beyond simply providing information about destinations and services. It creates a narrative that captivates the audience, evokes emotions, and ultimately drives conversions. In this article, we will explore the significance of storytelling in website copywriting for travel websites and how it can enhance the overall user experience.
The Power of Storytelling
Storytelling has been an integral part of human communication for centuries. It allows us to connect with others, share experiences, and convey complex ideas in a relatable manner. In the context of travel websites, storytelling helps create an emotional connection with potential travelers. By presenting captivating narratives, travel websites can transport users to different destinations, igniting their curiosity and desire to explore.
Creating an Emotional Connection
One of the main goals of a travel website is to evoke emotions and inspire visitors to take action. Whether it's booking a trip, signing up for a newsletter, or exploring more content, storytelling can play a key role in driving these actions. By crafting compelling narratives that highlight the unique experiences and benefits of a destination, travel websites can create an emotional connection with their audience.
Engaging the Audience
In an era where attention spans are decreasing, it's crucial for travel websites to engage their audience from the moment they land on the page. Storytelling can help capture attention and keep visitors engaged throughout their journey on the website. By presenting information in a narrative format, travel websites can make content more memorable and enjoyable to consume.
Building Trust and Credibility
Trust is essential in the travel industry, as travelers often rely on the information provided by websites to make informed decisions. By incorporating storytelling into website copywriting, travel websites can build trust and credibility with their audience. Authentic and relatable stories can help establish a connection with users, making them more likely to trust the website's recommendations and offerings.
Creating a Unique Brand Identity
In a highly competitive market, it's important for travel websites to differentiate themselves from their competitors. Storytelling can be a powerful tool in creating a unique brand identity. By crafting narratives that reflect the values, mission, and personality of the website, travel businesses can stand out and attract a loyal customer base.
Optimizing for SEO
While storytelling is important, travel websites also need to ensure that their content is optimized for search engines. By incorporating relevant keywords and phrases throughout the website copy, travel businesses can improve their visibility in search engine results. This requires a careful balance between storytelling and SEO techniques, ensuring that the content is both engaging and discoverable.
Measuring Success with Website Analytics
Website analytics play a crucial role in understanding the effectiveness of website copywriting and storytelling. By using tools like Google Analytics, travel websites can track key metrics such as website traffic, user engagement, and conversion rates. This data can help businesses identify areas for improvement, refine their storytelling strategies, and optimize the overall user experience.
In conclusion, storytelling is a powerful tool in website copywriting for travel websites. It allows businesses to create an emotional connection with their audience, engage visitors, build trust, and differentiate themselves from competitors. By incorporating storytelling techniques into their website content, travel businesses can enhance the overall user experience, inspire action, and ultimately drive conversions.
The use of call-to-action buttons on a portfolio website to encourage visitor engagement
Centric is in the business of reshaping the future. Our groundbreaking solutions and visionary designs revolutionize industries, turning ideas into realities that captivate audiences and catapult brands to the forefront of their markets.


text:
Document Type : Research Paper
Department of Mathematics, Faculty of Science, Arak University, Arak, Iran
Department of Mathematics, Arak University, Arak, Iran
In this paper, by using C-sequentially sign property for bifunctions, we provide sufficient conditions that ensure the existence of solutions of some vector equilibrium problems in Hausdorff topological vector spaces which ordered by a cone. The conditions which we consider are not imposed on the whole domain of the operators involved, but just on a locally segment-dense subset of the domain.


text:
Vocalisation has been recognised as one of the important modes of animal communication. In one anabantoid fish, the croaking gourami Trichopsis vittata, both sexes produce loud, croaking sounds during agonistic encounters and courtship. It is known that sound emission of this fish is mostly involved with the ritualised portion of the contest, which is likely to convey information between the opponents about their respective strength and status. The sound is produced by a complex mechanism that involves two modified tendons, located behind each pectoral fin. Due to the external position of these soft structures, parasites, sickness, or injury from fights can easily damage the tendons, leading to muteness. Reduction or even loss of the croaking ability may result in a substantial decreasing of the overall fitness. Experiments were designed to test whether or not croaking gouramis can repair damaged tendons and regain fully functional sound producing organs, as well as to evaluate the effect of muting and recovery on the outcomes of agonistic interactions. Fishes were muted by surgically cutting one or both the tendons that connect the "sonic'' muscle with the fin rays. The occurrence and timing of recovery was evaluated for 30 specimens of T. vittata after surgical muting. Croaking sounds produced by the fish were recorded during staged contests after recovery. Sound from each specimen was previously recorded before and after muting as well, for comparison. The elapsed time of reconnection of each tendon to the relative fin ray was also recorded. Some fishes were found to recover completely within less than 30 days, while others needed up to three months. However, evidence for the beginning of the recovery process was noticed as early as 4 days after operation. Behavioural performance after recovery was normal. Details of sounds produced and changes of behavioural repertoires are discussed (supported by National Organization for Hearing Research, NIMH-58198, Institute of Museum and Library Service-LL90187).
Nicola Novarini, Tomonari Akamatsu & Hong Y. Yan (2002). Effects of muting and recovery on sound production in the croaking gourami Trichopsis vittata (Pisces: Anabantoidei) [abstract]. Bioacoustics 13(2): 202-203


Vaping Relavant
 - Proper Tips for Vaping Outside During the Winter
 Proper Tips for Vaping Outside During the Winter
 If you're new to vaping, you probably aren't familiar with the struggle vapers face during the winter months. In addition to having to brave the cold every so often to enjoy your vape, the drop in temperature also complicates the mechanics of your device. Below are some helpful tips for vaping this winter.
 Winter Vaping Outdoors Tip #1: Keep Your E-Liquid at Room Temperature
 While stepping outside for a quick vape won't ruin your e-juice, prolonged exposure to the cold could cause the liquid to thicken. Avoid this by limiting the device's time in the cold or by keeping it warm in your hand. Otherwise you run the risk of not only thickening your liquid, but also damaging your coil.
 Winter Vaping Outdoors Tip #2: Protect Your Equipment from Moisture
 Remember that your vape is an electronic device and that, like all electronics, it doesn't mix well with moisture. By simply moving from the warm interior of your home to the freezing cold outside, condensation can form on the most sensitive parts of your vape. Take the necessary precautions by packing it in a protective carrying case to keep the moisture away.
 Winter Vaping Outdoors Tip #3: Limit Your Devices Exposure to Freezing Temperatures
 In addition to damaging your hardware, freezing temperatures can also do a number on your device's battery life. When batteries are exposed to the cold, it can cause lithium inside to create plating over the electrodes, thereby causing your device's battery to overheat or charge at a slower rate. If you absolutely must vape outside in the cold this winter, allow your device to acclimate to the warmth of your home before charging it.
 Final Winter Vaping Outdoors Tip: Avoid the Metal Drip Tip
 If you're a fan of metal tips, you may want to consider a nice plastic tip this winter. It could spare you from a rather painful realization. When freezing metal comes in contact with something warm and wet, it will very likely stick to it. The same principle applies when your mouth touches a metal tip of a vape. If you're not into plastic drip tips, you can always spring for one of the wooden or glass variety.
 Of course, you could always choose to vape inside your home to avoid exposing your device (and yourself) to the bitter cold.
 - What Makes A Cheap Vaping Coil Well...Cheap?
 What Makes A Cheap Vaping Coil Well...Cheap
 Vaping, atomizing, and electronic cigarettes are a relatively new yet revolutionary concept in self-medication practice. The benefits to vaping and using these products are expertly verified and quite varied as well. Within these various tools of the trade however lie crucial components, necessary to the act of mechanical vaping – our most beloved activity.
 Importance of the Coil
 Perhaps the most important of all of these components is the coil. This central part of the vaping mechanism is single-handedly responsible for the device's changeover of liquid to gas, and the subsequent presence of a usable vapor. This is true regardless of the coil class - MOD coils, portable vaporizer coils, or e-cig coils.
 Because of their crucial role to the entirety of the vaping experience, coils have thus become a matter of elevated interest. Particularly, there has been much more curiosity as to how these coils differ at different quality levels as well as how they function in the first place. To make it all easier to understand, let's break it down to the basics. The following may come as a bit of a science lesson to some, but we'll keep it brief, explaining the function of the coil as well as providing some basic insights into electricity itself.
 How It Works
 First, some basics about electricity will really help one to understand their coil and its quality. Electricity flows very well through particular metals. In other metals however, it struggles to flow as well and thus encounters what is referred to as "resistance". Resistance can be terrible in some applications. Here though, the concept of resistance is actually necessary.
 This is where the coil comes in. The coil acts as this aforementioned, metallic path of travel for the electricity generated by the device's battery. The electricity naturally wants to flow across the body of this part whenever the battery sends power to it. However, due to its finely crafted, intentionally resistant composition, the electricity must struggle to run through it.
 The result here is a controlled and focused heat point – a super-heated and very focused point on the coil in which this reaction takes place. Subsequently, the vaporizer's liquid solution is pulled across this finely focused heat source. This then creates the inhalable vapor ultimately sought.
 The Effect of Coil Quality
 As in all manufactured wares, costs are a big governor over quality in product when it comes to vaping coils. Regardless of the type of vaporizing mechanism, the core innerworkings of the coil are much the same. Variations in quality however change everything.
 How exactly does quality differ between coils? In most cases, cost-control dictates the type of metals and casting processes used in the creation of a coil. Overall quality in design is also touched by the consideration.
 In a low quality coil, the company has likely saved money on the mass production of its coil via the use of cheaper metals, manufacturing processes, and designs. The result is a coil that does not employ the optimal metal compositions or design for the optimal electrical resistance and resulting vaporization. Perhaps then the coil dies quicker because the metal couldn't withstand the constant and demanding electron travels across it. Maybe the coil only works intermittently, a sign of troubled travel of electricity through the cheaply-made design. Regardless of the symptom, coil quality greatly dictates effective and reliable vaporization in addition to actual occurrences of bad symptoms.
 These are the basics of the concept of the coil as well as the effects of quality on these crucial parts. Cheap coils will typically produce equivalent results while quality ones will do the same. To the benefit of the patron though, the wide variety in available choices here is always a plus.
 Whether you run a dripper or a tank, a regulated variable voltage/variable wattage device is a valuable addition to every vaper's arsenal. These devices give users the ability to adjust the wattage in order to tailor the heat and vapor output of the unit to their preference. Additionally, regulated devices eliminate voltage drop which plagues mechanical units.
 The Chain Reaction is a 50 Watt 26650 regulated device made by Amigo Itsuwa which features a durable yet sleek design. The attractive styling boasts a durable carbon fiber battery tube cover which compliments the stainless steel components and protects the copper battery tube and red bronze contacts. The OLED display is easy to read, and the software is intuitive.
 The device operates in the manner that all experienced vapers have come to expect: utilizing a power button which doubles as an on/off switch and two buttons for wattage adjustment from 7 to 50 Watts. The buttons offer satisfying tactile feedback and are of durable proven design. Disassembly of the unit is achieved by first unscrewing the bottom cap and removing the battery. The carbon fiber covered copper tube can then be unscrewed from the rest of the device, although this would be unnecessary for any purpose other than deep cleaning of the unit.
 Although the device will fire as low as 0.3 Ohms, the sweet spot for this device is between 0.5 and 0.8 Ohms for RDA's and will handle any sub Ohm tank currently on the market utilizing coils in the correct range. The Chain Reaction features an overload protection circuit and will also measure the resistance of the build placed on the sturdy non-adjustable 510 connection preventing any shorts or undue stress to the battery. The sensible range, combined with the 26650 battery, provides an all-day vape which will satisfy even the most habitual vaper's.
 The 26650 powered regulated devices offer the experienced vaper a sensible go-to device which will meet the needs of these advanced users. In the hands of an experienced user, these devices are safe and reliable when compared to the outdated technology previously available. As always, battery safety should be of paramount concern to any ambassador of the vape community in order to project a positive image of our hobby.
 - Key Differences Between Internal and External Battery MODs
 Key Differences Between Internal and External Battery MODs
 MODs have become all the rage and are used by millions of vapers as the next level in the world of vaping. These devices are available in different brands and they use different types of batteries. A MOD is the modification of the device that allows increased or decreased vapor production, battery life, and voltage usage. The main drive of battery operated MODs are to provide heat to the liquid solution, which comprises of vegetable & propylene glycol and nicotine. These devices are offered with diverse battery types and functions.
 Types of Internal and External Batteries
 The primary differences between internal and external batteries are internal batteries are built into devices and external batteries are removable. Internal battery type, lithium polymer, also know also known as LiPo is permanently installed in a MOD and isn't removable. The device must be thrown away when its natural life usage has expired. To recharge the battery, the vaper is advised to use a computer's USB port that provides additional safety features compared to a wall socket.
 External battery MODs are replaceable and available in Lithium IMR or Lithium Manganese (Li-Mn), IMR/Hybrid, and ICR Lithium Ion (Li-Ion). Lithium IMR is considered the safest


text:
The following sections explain how to troubleshoot and prevent problems with the Unity editor in different situations. In general, make sure your computer meets all the system requirements, it's up-to-date, and you have the required user permissions in your system. Also make backups regularly to protect your projects.
You can install different versions of the editor in different folders. However, make sure you backup your projects as these might be upgraded by a newer version, and you won't be able to open them in an older version of Unity. See the manual page on installing Unity for further information.
Licenses of add-ons are valid only for the Unity versions that share the same major number, for example 3.x and 4.x. If you upgrade to a minor version of Unity, for example 4.0 to 4.1, the add-ons will be kept.
Internet Activation is the preferred method to generate your license of Unity. But if you are having problems follow these steps:
If you still have problems with registering or logging in to your user account please contact _EMAIL_.
If Unity crashes when starting then firstly make sure that your computer meets the minimal system requirements. Also update to the latest graphic and sound drivers.
If you get disk write errors, you should check your user account restrictions. When in MacOS, note the "root user" is not recommended and Unity hasn't been tested in this mode. Unity should always have write permissions for its folders, but if you are granting them manually check these folders:
C:\Documents and Settings\\Local Settings\Application Data\Unity
Some users have experienced difficulties when using hard disks formated with non-native partitions, and using certain software to translate data between storage devices.
Corrupt fonts can crash Unity, you can find damaged files following these steps:
The system might have resources constrained, for example running in a virtual machine. Use the Task Manager to find processes consuming lots of memory.
Unity could try to open a project that is corrupt, this might include the default sample project. In such case rename or move the folder of the project. After Unity starts correctly you can restore the project's folder if wished.
In the event of a corrupt installation, you may need to reinstall Unity - see the instructions below.
In Windows, there could be problems like installation errors, registry corruption, conflicts, etc. For example, error 0xC0000005 means the program has attempted to access memory that it shouldn't. If you added new hardware or drivers recently, remove and replace the hardware to determine if it's causing the problem. Run diagnostics software and check information on trouble-shooting the operating system.
If the editor runs slowly or crashes, particularly on builds, this might be caused by all of the available system resources being consumed. Close all other applications when you build the project. Clean up the system using its utilities, and consult the Task Manager (Windows) or Activity Monitor (MacOS) to find out if there are processes using lots of resources, for example memory. Sometimes virus protection software can slow down or even block the file system with its scanning process.
There are many factors that can destroy a project, you should constantly backup your projects to prevent unfortunate accidents. When in MacOS, activate the TimeMachine using an external hard disk reserved for this sole purpose. After a loss you can try any of the file recovery utilities that exist, but sometimes this is irreversible.
Follow these steps to reinstall the editor:
Uninstall Unity. When in MacOS, drag the Unity app to trash.
Delete these files if present:
Restart the computer.
Download the latest version from our website, since your original install might be corrupt: _URL_
Did you find this page useful? Please give it a rating:


text:
Author: Natasha Howes | Category: Fatima, The Apparitions, The Children, The Facts, The Message, The Prophesies, The Secrets | Tags: Apparitions of Fatima, Children of Fatima, fatima, Pope John Paul II, Prophecy, Prophecy of Fatima, Second Secret of Fatima, Secret of Fatima, Seers of Fatima, Third Secret of Fatima, Virgin Mary
The Second Secret of Fatima
The Second Secret of Fatima is the first of 2 prophesies of catastrophic world events revealed to three shepherd children in Fatima, Portugal in 1917. The Second Secret promised the end of the First World War, and portended a second worse war, and the spread of Communism from Russia.
The Second Secret of Fatima also contained a Peace Plan, a series of specific instructions given by the Virgin Mary to the Children of Fatima, of how people could earn a period of peace for the world by preventing the war and the spread of the Communist dogma.
To see the actual text of the Second Secret of Fatima, Keep reading!
To Explore explanations and lesser known facts, Read ON.
19 Jan 2014


SFTP Data Destination
Set up an SFTP data destination to export data from Singular automatically to an SFTP Server.
Note: Data destinations are an enterprise feature (learn more).

Setup Instructions
To add an SFTP data destination in Singular:
 1. In your Singular account, go to Settings > Data Destinations and click Add a new destination.
 2. Type in either "SFTP Destination" (to export aggregated marketing data) or "SFTP User-Level Destination" (to export user-level data).
 3. In the window that opens, fill in the bucket name you created:
 mceclip1.png
 4. Fill in the Username, Password, Hostname, and Port Number.
 5. Select the output format - "CSV" or "Parquet".
 6. Choose the output path in your SFTP, e.g., "singular_marketing_data/{date}{extension}".
 7. The schema of the data loaded into the destination. For your schema options, see Data Destinations: Aggregated Marketing Data Schemas and Data Destinations: User-Level Data Schemas.
Note that Singular supports several placeholders (macros) that will get expanded automatically:
Placeholder Description Example
{date} Date of the data being exported from Singular 2020-03-19
{day} The day part of the data being exported from Singular (zero-padded) 19
{month} The month part of the data being exported from Singular 03
{year} The year part of the data being exported from Singular 2020
{extension} Output file extension .csv or .parquet
{job_timestamp} The exact time the ETL job started running.
Use this if you would like to have a new file every day (for example, have a new folder for each run with all the dates that were pulled in that job)
2020-03-20 12:13:14
{job_date}
The date the ETL job started running.
Similar to {job_timestamp}, but contains only the date of the job rather than the full timestamp.
2020-03-20


1. 10409.jpg 1/3
 2. 10409_a.jpg 2/3
 3. 10409_b.jpg 3/3
Gabuiel BANU
Kala Lagaw Ya people
Boigu (Island) Torres Strait, Australia 1940 – 2003
Gainau [Pigeon] headdress [Torres Strait headdress: Pigeon] 1996 Description: headress - green exterior, with yellow interior, With white/yellow pigeon, string from wing tips to front of headress, joining with wooden bead, wings with hinges for movement.
Place made: Waiben (Thursday Island), Torres Strait, Queensland, Australia
Materials & Technique: sculptures, headdresses, mixed media
Dimensions: 42.0 h x 36.0 w x 33.0 d cm
Acknowledgement: Purchased 1996
Accession No: NGA 96.1098
 - This is a Pigeon headdress from the Torres Strait Islands. The fabrication of headdresses is an important part of the continuation of Torres Strait Islander cultural practices. The tradition of making headdresses and dance masks for ceremonies in the Torres Strait goes back 1000s of years. While in the past only natural materials such as wood, turtle shell, fibre and natural pigment were used, nowadays plywood, nylon fishing line, chicken feathers and enamel paints are regularly used. This is the Torres Strait Pigeon, a migratory bird that travels between the Torres Strait and northern Australia. The headdress is operated by pulling the string to flap both wings, imitating the movements of a pigeon in flight.
 Gabuiel Banu was born on Boigu Island in the Torres Strait Islands and spent his childhood fishing, gardening and learning about his family and culture. He was taught to make headdresses by his father and in turn he has passed on this skill to his family. His work observes the Torres Strait Islander tradition of making headdresses and serves as a role model for younger people to keep alive this important cultural practice.
 Text © National Gallery of Australia, Canberra


Graphing a Probability Density
Graphing the probability density or cumulative probability density of an uncertain variable is easy in Analytica. You need only select Probability Density or Cumulative Probability from the Result menu, or from the result mode dropdown at the top-left corner of a result window. In these cases, Analytica's GUI automatically knows how to show statistical results when the computed result is a sample indexed by Run.
However, if you compute a PDF or CDF histogram yourself, you end up with a 2-D array of histogram points. To plot this as a histogram, you set up a coordinate index. This mini-tutorial walks you through the steps.
Setting up the Data
Let's begin by computing some histograph data.
1. Start Analytica. In the model object window, title the model "Plotting Histogram Data". Then close the object window.
2. On the diagram, create a chance node, Ch1, and set its definition to
3. Press ResultToolbarButton.jpg to view the result.
That doesn't look like the PDF of a gamma distribution, does it? In this graph, the bin coordinates (X) are being plotted as one series, and the density values (Y) as a second series. To plot the PDF, we need to plot X versus Y, rather than plotting X and Y as separate series.
Before doing this, let's examine how the underlying data is organized.
4. Switch to table view, i.e., press the TableModeIcon.jpg button in the graph window. For easier viewing, pivot the table so that the Step index forms the rows, the DensityIndex the columns.
The values that we wish to plot on the X-values are stored in the first column of the data. The values we wish to plot on the Y-axis are in the second column. Hence, the Step index dimensions a set of 2-D data points. Each row of this table represents one point having an (X,Y) coordinate given by the two column values.
To use each row as a coordinate, we must tell Analytica to use the DensityIndex as the coordinate index (i.e., the index that dimensions the coordinates of each point).
5. Press the XYbutton.jpg at the top-left corner of the result window. Select "Use Coordinate Index".
Use Coordinate Index dialog.jpg
6. Finally, graph the data by pressing GraphModeIcon.jpg, and we have the desired density graph.
See Also
You are not allowed to post comments.


New drywall helps save energy, therefore isn't boring
Drywall may not be the most exciting topic, and I fully accept that. But what this new drywall could do to your power bill might excite you. The new drywall is filled with tiny beads of paraffin that absorb heat during the day, and release it at night. It could be the latest thing in green building technology.
Interested yet? Well…it could very well save a building's energy consumption by 40% so here's the scoop.
Normal drywall is made from gypsum-based plaster. The new drywall will contain the paraffin capsules for almost half the mix. As the building heats up during the day from sunlight, human activity, computers, appliances, etc. the beads of paraffin in the drywall will turn into a liquid state as they absorb the heat inside the building. This helps cool the building.
Conversely, at night when the beads start to return to a solid it releases the stored heat, keeping the building warmer.
The new drywall is a result of experiments at Spain's Universidad Politécnica de Madrid. When scientists ran tests, they found 1.5-inch thick boards made from the new material had five times the thermal capacity than normal drywall at the same thickness.
Incredibly, a six-inch layer of hollow brick masonry was found to have the same capacity of the new drywall. Further, in an area where the material was tested, a temperature range of 68 to 86 degrees Fahrenheit could be maintained without using air conditioning.
Given that these tests were done in Spain, can you start to see how these results might show promise for the U.S. market?
While there are some brands of drywall using paraffin already on the market, the mixture is not nearly as high as the ratios used in the testing. The tests just confirm that expanding the limits of the mix can exponentially change the efficiency, and the material is viable as a material to alternatively help keep costs down.
It's nice to know that there are scientists thinking of things like smart walls — they'll help us save on power costs without even having to think about it!
Universidad Politécnica de Madrid, via Gizmag
For the latest tech stories, follow DVICE on Twitter
at _USER_ or find us on Facebook


Display hidden fields from grid in edit form as texts
There are situation where we need to display the fields in edit form as texts, without a need to update it – just for information. In this article I will explain how to achieve this.
In Guriddo jqGrid there is no build-in way to display certain fields in forms as text for information purposes. Fortunately we have a custom functions with which we can do this.
In this example we will use custom_element and custom_value in editoptions object. The another requirement is that the field should be hidden in grid, but displayed into the form. Below are the settings in colModel which will do this:
colModel: [
 label: 'Freigh',
 name: 'Freight',
 width: 150,
 hidden : true,
 editable: true,
 edittype: "custom",
 editoptions: {
 custom_value: getFreightElementValue,
 custom_element: createFreightTextElement
 editrules : { edithidden : true }
In order not to display the field in grid, but in edit form we need to set the hidden option to true and edithidden option to true in editrules object
Now the field should be defined as editable and tell that a custom edit will be applied. This is done with editable: true and edittype: "custom" options in colModel. When a custom edit type is used we need to define two functions in editoptions – custom_element, which is responsible for the creation of our element and custom_value which is responsible for the manipulation of the value for that element. Bello are our two functions.
function createFreightTextElement(value, editOptions) {
 return $(""+value+"");
function getFreightElementValue(elem, oper, value) {
 if (oper === "set") {
 if (oper === "get") {
 return $(elem).text();
As can be seen the function which creates the element createFreightTextElement create a simple span element and append the value in this element. The function getFreightElementValue set the value in form when we walk through the records with navigator buttons (oper = set) and return the value when we push the Submit button form (oper= get). In case if there is a no need to submit this value to the server a serrializeEditData event should be defined in order to remove this Element. Below is the code that do this.
 { edit: true, add: false, del: false, search: false, refresh: true, view: false, align: "left" },
 // edit form options
 closeAfterEdit: true,
 delete data['Freight'];
 return data;
That is all. The example can be seen in our demo page here
Kind Regards,
Tony Tomov
Stay connected with us in your favorite flavor!


text:
Meaning of LIVE
What Does LIVE Mean? (Using LIVE Online)LIVE means "Exciting".
Summary of Key Points
Definition for LIVELIVE means "Exciting". This is the most common definition for LIVE on Snapchat, WhatsApp, Facebook, and Twitter. Here is some more information about LIVE:
4: Difficult to guess
Adults and Teenagers
A Text with LIVE
Using LIVE on a Cell Phone (SMS Texts, Whatsapp, and Yubl)


& }
We call this the E 2E^2 page of the spectral sequence. When the degrees of the differentials are as they are in our example (which is, again, the most common situation), we can draw the differential d 2d^2 on this lattice as moving two steps left and one step up. The best picture I've been able to find of this online is here, although it's of the dual "cohomologically indexed" case where the arrows go down and right instead of up and left.
Just to keep ourselves a bit more grounded, here's what the E 2E^2 page looks like in the case of an iterated fibration sequence of spaces:
π 1(X 2) π 2(X 2) π 3(X 2) π 4(X 2) π 0(X 1) π 1(X 1) π 2(X 1) π 3(X 1) 0 π 0(X 0) π 1(X 0) π 2(X 0) 0 0 0 0 \array{ & \vdots & \vdots & \vdots & \vdots & \\ \cdots & \pi_1(X_2) & \pi_2(X_2) & \pi_3(X_2) & \pi_4(X_2) & \cdots\\ \cdots & \pi_0(X_1) & \pi_1(X_1) & \pi_2(X_1) & \pi_3(X_1) & \cdots\\ \cdots & 0 & \pi_0(X_0) & \pi_1(X_0) & \pi_2(X_0) & \cdots\\ \cdots & 0 & 0 & 0 & 0 & \cdots\\ & \vdots & \vdots & \vdots & \vdots & }
With spectra, the zero groups above would be replaced by negative homotopy groups such as π 1(X 0)\pi_{-1}(X_0), etc.
We then obtain the E 3E^3 page by replacing each entry E pq 2E^2_{p q} of the E 2E^2 page by the homology of d 2d^2 at that spot, i.e. the kernel of the outgoing differential modulo the image of the incoming one. The E 3E^3 page then has its own differential d 3d^3 which goes three steps left and two steps up, and we repeat. We then "take the limit" of E rE^r as rr\to\infty, and hope that the resulting "E E^\infty" terms are useful — in our example, we hope they tell us something about the groups π n(Y)\pi_n(Y).
First of all, we have to address the question of what it means to "take the limit", since in general E r+1E^{r+1} is neither a subobject nor a quotient object of E rE^r, but a subquotient (a quotient of a subobject, or equivalently a subobject of a quotient). One can make sense of this in general, but in many (perhaps most) applications of spectral sequences, there's a much simpler answer. Namely, it often happens that for each grading (p,q)(p,q), the groups E pq rE^r_{p q} eventually stabilize as rr\to\infty, so that we can define E pq E^\infty_{p q} to be their eventual value. (The rr at which this happens generally depends on (p,q)(p,q), so that interesting things are still happening somewhere in E rE^r for arbitrarily large values of rr.)
Of course, having E pq r+1=E pq rE^{r+1}_{p q} = E^r_{p q} means that the differentials coming into and out of E pq rE^r_{p q} are zero, and a good reason for this is if their domain and codomain are respectively the zero group. Note that when the differentials have the usual degrees, they always move from one diagonal p+q=np+q=n to the next lower one p+q=n1p+q=n-1. Thus, if each diagonal in the E 2E^2 page (hence also in every other page) contains only finitely many nonzero groups, then the groups E pq rE^r_{p q} will eventually stabilize for each (p,q)(p,q).
In particular, this is the case in the example arising from a finite iterated fibration sequence, where the nonzero part of the spectral sequence lives entirely in a finite strip 0qQ0\le q\le Q. It's also the case for a bounded above fibration sequence (which stabilizes above some point s=Ts=T but extends infinitely downwards) as long as for every nn, there is a point below which π n(X s)=π n(Y s)=0\pi_n(X_s) = \pi_n(Y_s)=0, such as if the truncatedness of Y sY_s decreases, or their connectedness increases, as ss\to-\infty. In this case, we have the following.
Convergence Theorem: Suppose given a bounded-above iterated fibration sequence
X TY TY T1 X sY sY s1 X s1Y s1Y s2 \array{ X_{T} \to Y_{T} \to Y_{T-1}\\ \vdots \\ X_s \to Y_s \to Y_{s-1}\\ X_{s-1} \to Y_{s-1} \to Y_{s-2}\\ \vdots }
such that for every nn, there is an RR such that π n(X s)=π n(Y s)=0\pi_n(X_s) =\pi_n(Y_s)=0 for sRs\le R, and let Y=lim sY s=Y TY = \lim_s Y_s = Y_T. Then for every nn, there is a finite iterated extension:
E nT,T B n,TB n,T1 E ns,s B n,sB n,s1 E ns+1,s1 B n,s1B n,s2 E nR,R B n,R0\array{ E^\infty_{n-T,T} \to B_{n,T} \to B_{n,T-1}\\ \vdots \\ E^\infty_{n-s,s} \to B_{n,s} \to B_{n,s-1}\\ E^\infty_{n-s+1,s-1} \to B_{n,s-1} \to B_{n,s-2}\\ \vdots\\ E^\infty_{n-R,R} \to B_{n,R} \to 0 }
such that B n=lim sB n,s=B n,TB_n = \lim_s B_{n,s}= B_{n,T} is equal to π n(Y)\pi_n(Y).
This theorem makes our second analogy also into a functor between suitable categories of iterated fibration sequences and iterated extensions.
Note that the E E^\infty groups appearing in the iterated extension for π n(Y)\pi_n(Y) are those on the diagonal p+q=np+q=n. Thus, the theorem says that when YY is put together out of the X sX_s's, then π n(Y)\pi_n(Y) is put together out of the groups on this diagonal, which are computed from the homotopy groups of the X sX_s's in some way (encoded by the spectral sequence). It's traditional to write this sort of "convergence" as
E p,q 2=π p+q(X q)π p+q(Y) E^2_{p,q} = \pi_{p+q}(X_q) \;\Rightarrow\; \pi_{p+q}(Y)
to indicate which E E^\infty groups are the "ingredients" of which group in the target.
At this point I should remind you that we're either assuming all spaces are simply connected, or working with spectra instead of spaces. The notion of "convergence" is a lot trickier when you have to deal with nonabelianness of π 1\pi_1 and nongroupness of π 0\pi_0. There are also fancier convergence theorems that allow more infinite behavior, such as when E


text:
By Sarah Major
If a potential client asked one of your front-line employees about the history of your brand, would they be able to tell you? Would they know why the company was started and by whom? Would they know the product ingredients and why those specific ingredients were selected? Would they know why your specific manufacturing processes were selected? Would they be able to share the personal brand stories that make people lean in for more?
And most importantly, would they know your brand truths?
As often happens with successful, growing companies, brand truths get misplaced along the way as employees come and go, and as small, local facilities become multiple, specialized facilities around the world. Unfortunately, forgetting brand truths can also mean forgetting what makes a brand truly great, those unique brand characteristics that set an extraordinary brand apart from an ordinary brand.
Companies that know their brand truths use them to discover meaningful insights and ideas. These truths create a way in for new products and new product bundles that deliver on consumer needs in an authentic way. They allow everyone to have a clear understanding of important product elements on the way to building authentic consumer stories.
To create brand truths, a clear understanding of a range of product elements is imperative. Here are four to consider.
- Cultural Elements: Part of every brand truth includes understanding consumer held beliefs of the category, the language used, and the visuals. Cultural semiotics can help you to better understand the conscious and unconscious codes and visuals used by the product and category. For example, in this post, we demonstrate how semiotics can be used to learn that a simple apple is far more than an apple. It's also important to consider the established norms and permissions of the category. What are the generally agreed upon rules for using and not using the product?
- How It's Made: Brand truths should also consider the craftsmanship of the product including both the ingredients and processes used to create the product. Consider the brand promises that these things offer to consumers, including the limits of those promises. Especially consider how product features, benefits, and experiences specifically relate to consumer needs.
- Edge Cases: It's also important to consider the edges of what can and cannot be said about any features or benefits. Consider what you'd like to be able to say and what you can't say (and perhaps while you're there, think about whether innovations to allow those claims are appropriate). It's important to understand and respect the legal boundaries for claims within with your category, particularly if you're playing in medical, pharmaceutical, alcohol, tobacco, or cannabis (are you ready, Canadians?) categories.
- Competitive Market: While you're rediscovering your own product truths, it's imperative to consider the competitive landscape. Work to understand the brand truths of your competitors so that you can identify the truths that are unique to you.


Ms Valencia Mogashoa
MSc student
Centre for Bioinformatics and Computational Biology
Primary Supervisor
Sanushka Naidoo
My project focuses on predictive models for disease resistance whereby, we employ vibrational spectroscopy tools such as Fourier Transform infrared (FT-IR) and Near infrared (NIR) coupled with multivariate analysis tools such as SIMCA to classify plants into phenotypic groups as resistant or susceptible to a particular pathogen. This allows rapid identification of resistant phenotypes against certain pathogens thus saving time and allowing for more specific disease management as well as quicker incorporation of resistant phenotypes in breeding programs.


-leaf nodes to be accessed by Db2 is equal to the height of the index NLEVEL. After that, the number of page nodes accessed by Db2 is related to the number of records meeting the conditions. Not all leaf nodes need to be accessed, so how many leaf nodes will be read? Here must be used to calculate the predicate selectivity statistics FirstKeyCard, which is equivalent to the COLCARD of C1. In this example, the selectivity of the predicate C1 = 100 refers to the ratio of the number of records in table T1 that meet this predicate condition divided by the total number of records in T1. Under normal conditions, Db2 will consider the data distribution of the table to be uniform, then for column C1, if C1 has different COLCARD values, then the ratio of each value is 1/COLCARD (Filter Factor, FF for short). In this example, it is 1/100, which means that 1/100 of the table data meets the predicate condition. Similarly, the RID stored in the leaf node of the index only needs to be read 1/100, that is, 1/100 x NLEAF = 0.5 ~ an index page. Well, so the IO time for scanning the index is determined:

IO cost = NLEVEL + max(NLEAF x FF, 1) = 2 + max(50 x 1/100, 1) = 3 x 1ms = 3ms

When performing an index scan, every time a non-page node is accessed, it needs to be compared with the key value stored in it to determine the subtree that meets the condition, so it also spends some CPU time, which is estimated as follows:

CPU cost = NLEVEL * (Page cost /page + Scan cost /record) = 2 * 0.11ms = 0.22ms

So the total time required to scan the index is: IO cost + CPU cost = 3.22ms

The second step is to read the time recorded in the table through RID. The number of table records that need to be read is CARD * FF = 100,000 * 1/100 = 1000 records. If viewed by the average distribution, it is NPAGAES * FF = 5000 * 1/100 = 50 data pages. Then the IO time is estimated as follows:

IO cost = NPAGES * FF * IO cost/ page = 50ms

The predicate C2> 800 needs to be used while reading the table records, which requires CPU time, which is estimated as follows:

CPU cost = NPAGES * FF * Page cost /page + CARD * FF * Scan cost /record)
 = 50 * 0.1ms + 1000 * 0.01ms = 15ms

Finally, in the stage of reading table data, the total time that Db2 estimates is:

IO cost + CPU cost= 65ms

Adding up the time of the two stages is the total time to execute SQL through index IX1: 3.22ms + 65ms = 68.22ms. This time is much less than the full table scan (7500ms). Therefore, under normal circumstances, database administrators often create some indexes for tables to improve efficiency.

Through the above simple example, it's listed that in the cost model of Db2, the cost of each operation is calculated, such as full table scan, index scan, table join, data sorting, and so on. Of course, these calculation formulas are not as simple as the above examples, Db2 will also consider more complex factors. But for many SQL tuning cases, a general cost estimate formula can be analyzed.

 - Query Tuning Tips Sharing
Choose index scan or full table scan? This question is actually an extension of the above example. Using table and index statistics in our calculations. The most important statistics are the data pages of the table, the data pages of the index, and the selectivity of the predicate. When seeing that the data page of the table is large, the data page of the index is small, and the selectivity of the predicate is very good, the general index scan cost is smaller. On the contrary, if the data page of the table is small, the data page of the index is close to the table, and the predicate selectivity is not good, Db2 prefers to use a full table scan. In more complicated cases, considering data prefetching and random IO, etc., which will not be described in detail in this article.

Which is better under multiple indexes? This problem is very common. For specific problems, comparing the selectivity of the predicate corresponding to the key on each index, sometimes depending on the type of predicate and the order in which it is used on the index. The general principle is that when the first key of an index corresponds to a predicate with an operator of "=" in the predicate, and the predicate is very selective, even close to unique, then this index is definitely the best of. For example, in the above example, if the COLCARD of C1 is close to the number of records in T1, then the index using C1 as the first key will be optimal. Db2 also considers stability when selecting indexes. For example, for the same selective predicate, one operator is "=" and the other is ">". Relatively speaking, the former is more stable. When the input parameters change, the performance is relatively more consistent. Of course, some situations, such as data skew, require special consideration.

When do you need to avoid sorting? I have encountered a lot of sorting situations, because there are too many places to sort in Db2, such as the DINSTINCT, ORDER BY, and GROUP BY keywords added in SQL, as well as those needed in the table connection process, such as Merge Scan Join and so on. Sorting is not bad in all cases. A very simple example is to access data through a primary key index, but the column to be sorted is not in the index key. In this case, even if this column is added to the index key, the effect is very small, because after Db2 scans through the primary key, the number of records returned can only be at most one, and there is no need to sort at all. The situation where sorting really needs to be avoided is when the set to be handled is very large and expensive. An example I encountered before is the connection of two very large tables. After the join is completed, DISTINCT needs to be done to form a huge sort. In the end, after checking the join conditions, I put DISTINCT down on each table, and then created the appropriate index, thus finally avoiding sorting.

What are the important points to pay attention to in Nested Loop Join? Nested loop join is one of table join methods in Db2. Its principle is also very simple, which is to scan a table to obtain all the records that meet the conditions, and then access the second table according to the join conditions for each record, so that after scanning the second table multiple times, the records that meet the conditions on the two tables are finally merged together. The most critical part is the number of records that meet the conditions in the first table and the access method of the second table. Generally speaking, if the number of records in the first table that meet the conditions is large, and the access method of the second table is not good, such as a full-table query, you must pay attention. But rarely seeing this situation in the access path graph, because Db2 has calculated through statistical data and found that this situation is very costly, so choosing other table connection methods. Often our most common situation is that the number of records in the first table that meets the condition is very small, and the access method of the second table is a full table scan. At this time, please pay attention, because in some cases Db2 may incorrectly estimate the number of records in the first table that meets the conditions. The most common reasons are missing statistics, and the predicate type is difficult to estimate selectivity. So in this case, you need to split the query and run it in the actual environment to see what the number of records in the first table actually meets the conditions. If there is a big difference from the Db2 estimate, you must find out the reason before thinking a better solution. By the way, Db2 provides a good function to collect the actual cardinality. It's very useful to determine such estimation problems.

 - Conclusion
This sharing has come to an end. Believing you have a preliminary understanding of how Db2 handles SQL statements, Db2 optimizer and cost model analysis. More and richer use cases will be provided for your reference in the future.
1 comment
423 views
Permalink
Comments
Mar 11, 2022 05:50 AM
Great job.!!!
Shared by my social network.!


3
$\begingroup$
Bug introduced in 12.1 or earlier and persisting in 13.0.0
I have a flat 3D-Polygon (all points have the same z-Value) and a 3D-line, which I need to check if they intercept using RegionDisjoint. Assume this:
line = {{-7, 100, 42}, {0, 15, 10}};
poly = {{-(49/10), 266/5, 43/2}, {-(89/10), 47, 43/2}, {-(54/5), 85/2,
 43/2}, {-(62/5), 217/5, 43/2}, {-(88/5), 499/10, 43/
2}, {-(183/10), 487/10, 43/2}, {-(211/10), 221/5, 43/
2}, {-(17/10), 162/5, 43/2}, {69/10, 459/10, 43/2}, {-(22/5), 53,
43/2}};
RegionDisjoint[Line[line], Polygon[poly]]
Graphics3D[{Line[line], Polygon[poly]}]
This doesn't evaluate. It just returns this:
enter image description here
When I simply remove one random point of the polygon or move it up above the end of the line (z-coordinate >43/2) it suddenly evaluates. This example:
poly2 = poly*2;
RegionDisjoint[Line[line], Polygon[poly2]]
returns True. What am I doing wrong here?
Mathematica 12.1 on Windows 11
$\endgroup$
3
 - 3
 $\begingroup$ As a workaround, RegionIntersection[Line[line], Polygon[poly]] returns a point in your case, indicating that there is an intersection. Perhaps you could could use that return value as a stop gap measure. $\endgroup$
 – MarcoB
 Jan 14 at 15:07
 - 1
 $\begingroup$ Something is odd though: RegionDisjoint[Line[line], Polygon[poly], GenerateConditions -> True] returns an error: "RegionDisjoint::reg: GenerateConditions->True is not a correctly specified region.". That is unexpected! I wonder if something is going awry within RegionDisjoint then. $\endgroup$
 – MarcoB
 Jan 14 at 15:13
 - 2
 $\begingroup$ It also works for InfiniteLine, i.e., RegionDisjoint[ InfiniteLine[line], Polygon[poly]] evaluates to False $\endgroup$
 – Bob Hanlon
 Jan 14 at 16:03
2
$\begingroup$
It seems be a bug. By now we have to solve it manually.
poly = {{-(49/10), 266/5, 43/2}, {-(89/10), 47, 43/2}, {-(54/5), 85/2,
 43/2}, {-(62/5), 217/5, 43/2}, {-(88/5), 499/10,
 43/2}, {-(183/10), 487/10, 43/2}, {-(211/10), 221/5,
 43/2}, {-(17/10), 162/5, 43/2}, {69/10, 459/10, 43/2}, {-(22/5),
 53, 43/2}};
line = {{-7, 100, 42}, {0, 15, 10}};
Solve[{x, y, z} ∈ Polygon[poly] && {x, y, z} ∈
 Line[line], {x, y, z}]
Reduce[{RegionMember[Polygon[poly]]@{x, y, z},
 RegionMember[Line[line]]@{x, y, z}}, {x, y, z}]
FindInstance[{{x, y, z} ∈
 Polygon[poly] , {x, y, z} ∈ Line[line]}, {x, y, z}]
{{x -> -(161/64), y -> 2915/64, z -> 43/2}}
Graphics3D[{Line[line], Polygon[poly], Red,
 Ball[SolveValues[{x, y, z} ∈
 Polygon[poly] && {x, y, z} ∈ Line[line], {x, y, z}]]}]
enter image description here
We can define a regionDisjoint to do this.
regionDisjoint[reg1_, reg2_] :=
 If[Reduce[{RegionMember[reg1]@{x, y, z},
 RegionMember[reg2]@{x, y, z}}, {x, y, z}] === False,True,False];
regionDisjoint[Line[line], Polygon[poly]]
regionDisjoint[Line[line], Polygon[2poly]]
False
True
or define
regiondisjoint =
 If[RegionIntersection[#1, #2] === EmptyRegion[3], True, False] &
regiondisjoint[Line[line], Polygon[poly]]
regiondisjoint[Line[line], Polygon[2poly]]
False
True
$\endgroup$
Your Answer
By clicking "Post Your Answer", you agree to our terms of service, privacy policy and cookie policy
Not the answer you're looking for? Browse other questions tagged or ask your own question.