Admission rules are managed with the oaradmissionrule command. See the usage or man page of the command.
The code of the admission rules is executed within oarsub at submission time. Many internal variables are available, making the mechanism very powerful… and dangerous. Hence the administrator must be very careful when playing with admission rules.
Example 1: avoid the ugly SQL error warning which appear in case of a typo in the oarsub -l syntax
The following admission rule can be added, which check the syntax for valid resource propoerties
# Check the validity of the resource request (-l option of oarsub) to avoid SQL ugly message
# The following variable lists the valid resource properties that the user can use
# See the output of the 'oarproperty -l' command for the list of available properties.
# Only properties which defines the implicit resource hierarchy need to be listed.
my _USER_=("host","cpu","core","thread");
foreach my $group (@$ref_resource_list) {
 foreach my $subgroup (@$group) {
 foreach my $moldable (@$subgroup) {
 foreach my $resource (@{$moldable->{resources}}) {
 while (my ($k,$v) = each(%$resource)) {
 if ($k eq "resource" and not grep (/^$v$/, ("nodes", "resource_id", _USER_))) {
 warn "Admission Rule ERROR : Unknown resource property \"$v\"\n";
 exit 1;
Example 2: enforce a minimum number of hosts in job
I'm looking for an admission rule that would reject job requests if the user ask for less than N hosts. E.g:
$ oarsub -l host=2 -I
would fail if I configure N=3.
I have a very limited set of properties configured:
$ oarproperty -l
You could inspect what resources are requested by looking at the the oarsub command line in an admission rule, using the $initial_request_string variable.
However, this could be very tricky to handle any request case.
You could also use the $ref_resource_list variable, which is a reference to the structure containing the result of the parsing of the resource request. That structure is complex, since it must store information such as the resources hierarchy, moldable jobs, properties, etc. See the code for the admission rule below:
my $min_resources = 5; # N=5
my $error = 0;
foreach my $group (@$ref_resource_list) {
 foreach my $subgroup (@$group) {
 foreach my $moldable (@$subgroup) {
 if ($k eq "resource" and ($v ne "network_address" or $v ne "host")) {
 warn "requesting resource of type $v is not allowed, use nodes or host\n";
 $error = 1;
 } elsif ($k eq "value" and $v < $min_resources) {
 warn "requesting less than $min_resources nodes is not allowed, you requested $v\n";
 $error = 1;
 exit 1 if $error;
Example 3: managing 2 compute nodes generations in the same cluster
After upgrading the cluster with new nodes, we need a rule to:
 1. send the interactive sessions on the old nodes as a default
 2. send the passive sessions on the new nodes as a default
 3. avoid mixing old and new nodes for parallel jobs as a default
 4. users are allowed to override this behavior via setting a property in their request.
First we need to add a property. We called it "cluster" and it is an integer (the year of the node installation): 2011 or 2016
$ oarproperty -a cluster
Nodes kareline-0-x (old one) are inserted in the OAR database with:
oarnodesetting -a -h 'kareline-0-0-p host='kareline-0-0' .... -p "cluster=2011"
Nodes kareline-1-x (new one) are inserted in the OAR database with:
oarnodesetting -a -h 'kareline-1-0-p host='kareline-1-0' .... -p "cluster=2016"
Then we add a rule to match our requirements, based on this property:
my $cluster;
if ($jobType eq "INTERACTIVE") {
 print "[DEBUG] Interactive job";
 $cluster =2011;
} else {
 print "[DEBUG] Passive job";
 $cluster =2016;
if (index($jobproperties, 'cluster') == -1) {
 print " without cluster (".$jobproperties.")";
 if ($jobproperties ne ""){
 $jobproperties = "($jobproperties) AND cluster = '".$cluster."'";
 } else {
 $jobproperties = "cluster = '".$cluster."'";
 print "\n $jobproperties \n";
(You can remove the "print" lines used to check what the rule is doing)
This rule is written in a text file: regle.oar and added ro oar with:
oaradmissionrules -n -r./regle.oar
Example 4: limit access to a queue, based on usernames set in a file
# Title : limit access to the challenge queue to authorized usersqueue
if ($queue_name eq "challenge"){
 open(FILE, "< $ENV{HOME}/challenge.users") || die("[ADMISSION RULE] Challenge user list is empty");
 my $authorized = 0;
 while (){
 if (m/^\s*$user\s*$/m){
 $authorized = 1;
 if($authorized ne 1){
 die("[ADMISSION RULE] $user is not authorized to submit in challenge queue\n");
Example 5: give a more privilege to the owners of nodes
Give a more privilege to the owners of nodes (e.g. people who payed for the nodes) to submit, by restricting others to besteffort jobs:
 - non-owners compete on the resources according to the scheduling policy of the besteffort queue ;
 - but owners can get jobs running, just like if those jobs did not exist (i.e. besteffort jobs are killed whenever non besteffort jobs require the same resources).
 - First add a property to resources: dedicated=NO or dedicated=team_name for nodes owned by each team.
 - Then add an admission rule which describes the team list with regard to unix users and groups.
 - Non-besteffort jobs will automatically bound to resources set with dedicated=NO, except for members of one or more of the defined teams, whose jobs are automatically directed to the union of their dedicated resources (dedicated=team_of_the_user) and the dedicated=NO resources.
 - Besteffort jobs do not have constraints: they are scheduled on any resources with the property besteffort=YES (usually all nodes).
# Description : set dedicated property for exceptional usages
my _USER_;
my %serpico_project = ( 'dedicated' =>'serpico', 'groups' => ['serpico', 'e-serpico' ], 'users' => [] );
my %neurinfo_project = ( 'dedicated' => 'neurinfo', 'groups' => ['visages'], 'users' => [] );
my %fluminance_project = ( 'dedicated' => 'user1', 'groups' => [], 'users' => ['user1'] );
push(_USER_, \%serpico_project);
push(_USER_, \%neurinfo_project);
push(_USER_, \%fluminance_project);
my $jobaddedprop = "\( dedicated='NO'" ;
# original : IGRIDA admission rule
# modified : nef @ Inria Sophia
if (!(grep(/^besteffort/, @{$type_list}))) {
 # Any user can run besteffort jobs on any resource :
 # no additional verification, no modification
 # Search for projects to which the user belongs
 foreach my $project (_USER_) {
 my _USER_;
 foreach (@{$project->{'groups'}}) {
 my $gr;
 (undef,undef,undef, $gr) = getgrnam($_);
 my _USER_ = split(/\s+/,$gr);
 push(_USER_, _USER_);
 push(_USER_, @{$project->{'users'}});
 my %h = map { $_ => 1 } _USER_;
 if ( $h{$user} eq 1 ) {
 $jobaddedprop.= " OR dedicated=\'$project->{'dedicated'}\'";
 } else {
 if ((grep(/dedicated(\s+|)=(\s+|)'$project->{'dedicated'}\'/, $jobproperties))) {
 die("[ADMISSION RULE] $project->{'dedicated'} dedicated nodes are only available for best-effort jobs.\n");
 $jobaddedprop.= " \)";
 # Always need to limit request to permitted nodes
 if ($queue_name ne "admin") {
 if (grep(/\S/, $jobproperties)) {
 $jobproperties = "($jobproperties) AND $jobaddedprop";
 } else {
 $jobproperties = "$jobproperties $jobaddedprop";
 print("[ADMISSION RULE] Automatically add constraint to go on nodes permitted for the user.\n");
That set up:
 - For a user of team'serpico' : $ oarsub -I


and the reference are different ABIs may no longer link.
There are various ways to form cross-package references in Go, though all depends on //go:linkname (which is explicitly unsafe) or complicated assembly symbol naming. Specifically, the following types of cross-package references may no longer link:
In this table "push" refers to a symbol that is implemented in one package, but its symbol name places it in a different package. In Go this is accomplished with //go:linkname and in assembly this is accomplished by explicitly specifying the package in a symbol name. There are a total of two instances of "asm+push" on all of public GitHub, both of which are already broken under current rules.
"Go+pull" refers to when an unexported symbol defined in one package is referenced from another package via //go:linkname. "asm+xref" refers to any cross-package symbol reference from assembly. The vast majority of "asm+xref" references in public GitHub repositories are to a small set of runtime package functions like entersyscall, exitsyscall, and memmove. These are serious abstraction violations, but they're also easy to keep working.
There are two general groups of link failures in the above table, indicated by superscripts.
In group 1, the compiler will create an ABIInternal reference to a symbol that may only provide an ABI0 implementation. This can be worked-around by ensuring there's a Go function stub for the symbol in the defining package. For "asm" definitions this is usually the case anyway, and "asm+push" definitions do not happen in practice outside the runtime. In all of these cases, type information is available at the reference site, so the compiler could record assembly ABI definitions in the export info and produce the stubs in the referencing package, assuming the defining package is imported.
In group 2, the assembler will create an ABI0 reference to a symbol that may only provide an ABIInternal implementation. In general, calls from assembly to Go are quite rare because they require either stack maps for the assembly code, or for the Go function and everything it calls recursively to be //go:nosplit (which is, in general, not possible to guarantee because of compiler-inserted calls). This can be worked-around by creating a dummy reference from assembly in the defining package. For "asm+xref" references to exported symbols, it would be possible to address this transparently by using export info to construct the ABI wrapper when compiling the referer package, again assuming the defining package is imported.
The situations that cause these link failures are vanishingly rare in public code corpora (outside of the standard library itself), all depend on unsafe code, and all have reasonable workarounds. Hence, we conclude that the potential compatibility issues created by this proposal are worth the upsides.
Calling runtime.panic* from assembly
One compatibility issue we found in public GitHub repositories was references from assembly to runtime.panic* functions. These calls to an unexported function are an obvious violation of modularity, but also a violation of the Go ABI because the callers invariably lack a stack map. If a stack growth or GC were to happen during this call, it would result in a fatal panic.
In these cases, we recommend wrapping the assembly function in a Go function that performs the necessary checks and then calls the assembly function. Typically, this Go function will be inlined into its caller, so this will not introduce additional call overhead.
For example, take a function that computes the pair-wise sums of two slices and requires its arguments to be the same length:
// func AddVecs(x, y []float64)
TEXT ·AddVecs(SB), NOSPLIT, $16
 //... check lengths, put panic message on stack...
 CALL runtime·panic(SB)
This should instead be written as a Go function that uses language facilities to panic, followed by a call to the assembly implementation that implements the operation:
func AddVecs(x, y []float64) {
 if len(x)!= len(y) {
 panic("slices must be the same length")
 addVecsAsm(x, y)
In this example, AddVecs is small enough that it will be inlined, so there's no additional overhead.
Austin Clements will implement this proposal for Go 1.12. This will allow the ABI split to soak for a release while the two calling conventions are in fact identical. Assuming that goes well, we can move on to changing the internal calling convention in Go 1.13.
Since both calling conventions will initially be identical, the implementation will initially use "ABI aliases" rather than full ABI wrappers. ABI aliases will be fully resolved by the Go linker, so in the final binary every symbol will still have one implementation and all calls (regardless of call ABI) will resolve to that implementation.
The rough implementation steps are as follows:
 1. Reserve space in the linker's symbol version numbering to represent symbol ABIs. Currently, all non-static symbols have version 0, so any linker code that depends on this will need to be updated.
 2. Add a -gensymabis flag to cmd/asm that scans assembly sources for text symbol definitions and references and produces a "symbol ABIs" file rather than assembling the code.
 3. Add a -symabis flag to cmd/compile that accepts this symbol ABIs file.
 4. Update cmd/go, cmd/dist, and any other mini-build systems in the standard tree to invoke asm in -gensymabis mode and feed the result to compile.
 5. Add support for recording symbol ABIs and ABI alias symbols to the object file format.
 6. Modify cmd/link to resolve ABI aliases.
 7. Modify cmd/compile to produce ABIInternal symbols for all Go functions, produce ABIInternalABI0 ABI aliases for Go functions referenced from assembly, and produce ABI0ABIInternal ABI aliases for assembly functions referenced from Go.
Once we're ready to modify the internal calling convention, the first step will be to produce actual ABI wrappers. We'll then likely want to start with a simple change, such as putting the stack bound in a fixed register.
Open issues
There are a few open issues in this proposal.
 1. How should tools that render symbols from object files (e.g., nm and objdump) display symbol ABIs? With ABI aliases, there's little need to show this (though it can affect how a symbol is resolved), but with full ABI wrappers it will become more pressing. Ideally this would be done in a way that doesn't significantly clutter the output.
 2. How do we represent symbols with different ABI entry-points in platform object files, particularly in shared objects? In the initial implementation using ABI aliases, we can simply erase the ABI. It may be that we need to use minor name mangling to encode the symbol ABI in its name (though this does not have to affect the Go symbol name).
 3. How should ABI wrappers and go:nosplit interact? In general, the wrapper needs to be go:nosplit if and only if the wrapped function is go:nosplit. However, for assembly functions, the wrapper is generated by the compiler and the compiler doesn't currently know whether the assembly function is go:nosplit. It could conservatively make wrappers for assembly functions go:nosplit, or the toolchain could include that information in the symabis file.


Why Does A Squirrel Screech
Why Does a Squirrel Screech? why-does-a-squirrel-screech
Ever wonder why a squirrel makes those loud noises? They don't make them for the entertainment value of humans, but to help the animal survive. They emit these noises until the source of distress is removed or they feel heard. To an outside listener, the constant chatter of a squirrel can be unnerving. But they do have a logical reason for it. Read on to learn more about the different types of squirrel sounds.
muk-muk
You may be wondering, "Why does a squirrel screech?" If you don't know what a kuk is, or what a muk sounds like, you're not alone. Many squirrel species use various sounds to communicate and warn their territory. Whether you're watching for predators or trying to attract other squirrels to your area, squirrels make a variety of noises to tell you that they're in danger.
Besides squeeking, squirrels use their tail flags to communicate. This may be a way of expressing frustration, but it's not exclusive to it. In addition to alarm signals, squirrels also wag their tails to signal anger and ward off intruders. And if you're in the same room as a squirrel, you'll notice them using their tails to communicate.
quaa
If you've ever wondered why squirrels screech, you're not alone. These animals have their own alarm call, which is similar to birds' chiq-chiqs. This high-pitched noise is meant to scare off predators. It's a good idea to listen to the call, so you can figure out the level of threat. And remember, the more dangerous the predator, the more likely the squirrel will screech.
First, it's important to understand what a squirrel's alarm call actually means. A squirrel's kuks are intended as a generic alarm signal that warns other animals and humans about possible threats. While quaas are more often meant for aerial threats, kuks are used to warn other squirrels of danger. Scientists have studied this sound, and have concluded that the squirrels use it in many different situations.
chiq-chiq
The chiq-chiq of a squirrel is a warning call for predators. Like birds, they make the noise to alert their mother and other squirrels of danger. The sound is higher-pitched, making the squirrel virtually inaudible, but a predator can still detect the chirp. The chiq-chiq of a squirrel can be heard through the nostrils.
The sound of a squirrel's voice varies depending on the situation. Often, a squirrel uses a range of sounds to convey a message, which is not at all helpful for people listening in from a distance. Although these squirrel chatterings can seem endless to outside listeners, there is an important underlying survival instinct. Jessica Watson, Ph.D., at the University of Washington, studied the behavior of squirrels and presented her research at various wildlife conferences.
chirr
If you're ever interested in learning how a squirrel communicates, you may be surprised to learn that it uses two types of alarm calls. First, a squirrel uses its 'chiq-chiq' alarm call, similar to that of birds. This high-pitched sound can make a squirrel practically invisible and is a powerful way of scaring off potential predators. Second, a squirrel uses its chirr alarm call to alert other squirrels when it feels threatened.
Squirrels produce high-pitched chirping sounds for communication. These ultrasonic sounds are so high in pitch that humans cannot hear them. In addition, the pitch of these sounds depends on the animal's mood. Therefore, a crying noise from a squirrel is perceived as a distress call. A squirrel may emit this cry if it is injured or is frightened. In such cases, the animal may attempt to protect its territory by making the noise.
snort
If you have ever wondered "Why does a squirrel snort?" it's likely you've heard this call at least once. Unlike humans, squirrels are very sensitive and use sound to protect themselves from predators. In addition to snorting, they also make a wide variety of warning calls, including screeches, rattles, barks, and kuks. These warning calls are typically very low-intensity and almost inaudible. In some cases, these sounds are meant to warn other squirrels of danger.
Squirrels use many different sounds to communicate with each other. Squirrels use different pitches for alarm and mating calls. They also make different sounds in urban settings and in the wild. The sounds they make are complex and fascinating. You'll be surprised at how clever these animals are! Here are some of the most common sounds. Let's start with a sound. A squirrel's snorting sounds can be quite loud.
meow
When a squirrel wants to attract a mate, it will make meow notes to let the other sex know that it is interested. These notes are generally one-way, and females make them when they are ready to mate. However, the sound may also be produced by a male when he is aroused and pursuing a female. Depending on the type of predator, male squirrels will meow in low tones, whereas females will meow in high tones when a predator is close.
In addition to these calls, squirrels make various sounds to alert others of their presence, such as a high quaa sound when a predator approaches, or a low 'Kuk' sound when a predator is close by. They also use a lower, chirruping-meow sound to let other squirrels know that they've cleared an area of predators, which is far more subtle than the 'Kuk' sound.
What is the main reason a squirrel screeches?
Answer: The main reason a squirrel screeches is to warn other animals of potential danger.
What else can a squirrel use its screech for?
Answer: A squirrel can also use its screech to communicate with other squirrels or to claim its territory.
How loud can a squirrel screech?
Answer: A squirrel's screech can be up to 100 decibels.
What kind of animals might a squirrel screech at?
Answer: A squirrel might screech at other squirrels birds snakes or even humans.
Do all squirrels screech?
Answer: No not all squirrels screech.
Some squirrels are silent.
What do baby squirrels do when they hear their mother screeching?
Answer: Baby squirrels will generally hide when they hear their mother screeching as it is a sign of danger.
How can you tell if a squirrel is about to screech?
Answer: Generally a squirrel will lift its tail and start chattering its teeth before it screeches.
What does a squirrel's screech sound like?
Answer: A squirrel's screech can vary but it is often described as a high-pitched shrill noise.
What time of day do squirrels screech the most?
Answer: Squirrels are generally more active during the day so they may screech more during daylight hours.
Where do squirrels usually screech from?
Answer: Squirrels can screech from anywhere but they are often heard from high up in trees.
What do other animals do when they hear a squirrel screeching?
Answer: Other animals will usually flee when they hear a squirrel screeching as it is a sign of danger.
Is a squirrel's screech ever mistaken for something else?
Answer: Yes sometimes a squirrel's screech can be confused for the sound of a bird.
What does a squirrel screech mean to humans?
Answer: A squirrel screech is generally a sign to humans that there is a potential danger nearby.
Can a squirrel's screech be considered music?
Answer: Some people consider a squirrel's screech to be music while others find it to be annoying.
Can a squirrel screech be used as a form of self-defense?
Answer: Yes a squirrel can screech as a form of self-defense if it feels threatened.
Leave a Comment
5 × five =


@article{Nowicki_2014, author = {Nowicki, Jacek}, title = {Stopping of Ships Equipped with Azipods[asterisk]}, journal = {TransNav, the International Journal on Marine Navigation and Safety of Sea Transportation}, volume = {8}, number = {3}, pages = {373-376}, year = {2014}, url = {./Article_Stopping_of_Ships_Equipped_with_Nowicki,31,519.html}, abstract = {The paper contains a description of different possibilities of stopping a large ship equipped with azipods. The model tests were carried out to compare the effectiveness of stopping the ship using the different methods. The ship model used in stopping tests reproduces a large LNG carrier of capacity ~150 000 m3}, doi = {10.12716/1001.08.03.07}, issn = {2083-6473}, publisher = {Gdynia Maritime University, Faculty of Navigation}, keywords = {Azipods, Propeller, Stopping od Ships, Ship Propulsion, Ship Model, Stopping Tests, LNG Carrier, Stopping Manoeuvres} }


because no loading of data from BW or HANA is involved. Just a rendering of the data which has already been pre-loaded will take place.
The Downsides, Pitfalls, and Disadvantages of Pre-Loading
As we have seen previously, there is no "official" API for pre-loading data. This is for a good reason. In most cases best performance is achieved when Lumira can decide when to perform such lengthy operations as fetching result sets. Lumira can make internal optimizations such as combining result set requests along with other data that needs to be fetched from BW or HANA.
In addition, there is the danger with complex applications that script code which pre-loads data is accidentally called in flows where pre-loading wasn't intended. That is especially relevant in applications that are highly modular and that structure their code using "Global Script Objects".
But finally, the most important aspects are these two interrelated ones:
 - Delayed loading uses loading indicators, but pre-loading cannot give any feedback to the user that something is "currently working" in the application, because the affected components are not visible.
 - Like with all background processing jobs, the user cannot interact with the application while pre-loading is running.
 Because there is no "loading indicator", which makes the user aware of the activity, users will assume that they can interact with the application, and when they do so, they will experience the application is not responding. They may get annoyed and think the application is buggy and unresponsive. This is exactly the opposite of what pre-loading aims for.
Simply put, pre-loading can only be considered, when it is certain that the user will only "look at" the application while pre-loading takes place. If pre-loading takes some time, and the user tries to interact with the application during that time, the user experience will be disappointing.

Summary / Conclusion
 - Consider using "delayed loading" of data sources to improve user experience for applications that have large and long-loading data sources.
 - Read the chapter "Working with Background Processing" of Lumira's "Application Designer Guide" to familiarize yourself with more things that background processing can do to improve application performance:
 _URL_
 - Check out the official SAP note about "Lumira Performance" for in-depth resources about performance tuning in Lumira applications:
 _URL_
 - If you understood the pitfalls and impacts of pre-loading data sources, you might consider using this concept if it is appropriate for your use case.


Aller au contenu
Updating the application
Before you start
Jasypt encryption settings
Since GeoNetwork 4.0.4, passwords stored in the database for the mail server, harvesters, etc. are encrypted with Jasypt.
By default, a random encryption password is generated when GeoNetwork is started, if it is not already defined, and it is stored in the data directory data/config/encryptor/encryptor.properties.
If you are using the application data direcotry, the encryption password is stored in the file /geonetwork/WEB-INF/data/config/encryptor/encryptor.properties.
Warning
This encryptor.propertie file must be copied to the new installation when upgrading the application; otherwise, it will not be possible to decrypt the existing passwords stored in the database.
If you have set the location of the data directory outside of the application, the file will be stored in this external location at data/config/encryptor/encryptor.properties
Read more at Customizing the data directory.
Upgrade from GeoNetwork 3.X to GeoNetwork 4.2
Upgrading from GeoNetwork 3.X to GeoNetwork 4.2 is a major upgrade.
We do not recommend updating a production system. Instead treat this as a migration, setting up a new GeoNetwork 4.2 installation and transfer data and settings.
Before you start:
 - Backup your database
 - Backup your data directory
GeoNetwork for Migration:
 1. GeoNetwork 4.2 requires a Java 8 environment (JRE) to be installed on your system.
 Later versions of Java will not work at present. This must be done prior to installation.
 2. GeoNetwork 4.2 changes the search engine to Elasticsearch.
 For installation instructions see Installing search platform.
 3. Perform a new install of GeoNetwork 4.2, according to installation approach used.
 4. Configure GeoNetwork use to your database and data directory.
 5. Start services:
 - Database
 - Elasticsearch
 - Application server for GeoNetwork
 6. GeoNetwork 4.2 encrypts stored passwords using Jasypt as described at the top of this page.
 During startup a random encryption password will be generated and stored in data directory data/config/encryptor/encryptor.properties.
 7. During startup the database schema will be updated to match the table structure required for GeoNetwork 4.2.
 8. GeoNetwork will create indices automatically when connecting to Elasticsearch.
Guidance:
The above links provided recommendations and mitigation measures where appropriate.
 - For information on new features and functionality:
 - Changelog 4.2
 - [Changelog 4.0](../../overview/change-log/history/index.md#40]


len
 (node : DevicePtr)
 (map : DevicePtr)
 (distances : DevicePtr)
 (minDist : DevicePtr)
 (minIndex : DevicePtr)
 // index into the original map, assuming
 // a node is a single entity
 let mapI = blockIdx.x * blockDim.x
 // actual position of the node component in the map
 let i = mapI + threadIdx.x
 if i < len then
 // index into the node
 let j = threadIdx.x % nodeLen
 if threadIdx.x % nodeLen = 0 then
 minIndex.[blockIdx.x] <- -1
 // find the minimum among threads
 let k = mapI + threadIdx.x
 let mutable sum = 0.
 for j = k to k + nodeLen - 1 do
 sum <- sum + distances.[j]
 minDist.[blockIdx.x] <- sum
 minIndex.[blockIdx.x] <- k / nodeLen
 @> |> defineKernelFunc
This kernel function only stores "winning" (minimal) distances within each section of the map. Now they need to be reduced to one value per node. There are 1905 blocks and 10000 nodes. 10000 minimum values are computed in one pass over the 1905 * 10000-length array of accumulated minimal distances:
 let minDists = dMinDists.ToHost()
 let indices = dMinIndices.ToHost()
 let mins = (Array.zeroCreate nodes.Length)
 for i = 0 to nodes.Length - 1 do
 let baseI = i * nBlocks
 let mutable min = minDists.[baseI]
 mins.[i] <- indices.[baseI]
 for j = 1 to nBlocks - 1 do
 if minDists.[baseI + j] < min then
 min <-minDists.[baseI + j]
And we are done. The improved version beats all the rest of my algorithms. Since all of these performance improvements looked so "juicy", I decided it was high time to abandon managed code and go back to the C++ world. Especially since writing C++ code is not going to be so different: no annoying loops to write, just express it linearly and reap the massively parallel goodness.
Computing Self-Organizing Maps in a Massively Parallel Way with CUDA. Part 1: F#
September 24, 2013 1 comment
By 2017, it is expected that GPUs will no longer be an external accelerator to a CPU; instead, CPUs and GPUs will be integrated on the same die with a unified memory architecture. Such a system eliminates some of accelerator architectures' historical challenges, including requiring the programmer to manage multiple memory spaces, suffering from bandwidth limitations from an interface such as PCI Express for transfers between CPUs and GPUs, and the system-level energy overheads for both chip crossings and replicated chip infrastructure.
Alan Tatourian.
This is going to be all about parallelism, CUDA, performance, and new direction in software development. For me personally anyway. All the code mentioned below is here.
So, here we've got it. The need for SOMs. SOMs are wonderful for clustering and visualizing high dimensional data. Naturally, using the sacred principle of software development (best software engineers steal) I looked around for some existing code. Found this and this very fast. The first of these shows you very quickly what SOMs are and how to do build them step-by-step, while the second already has the C++ code that can just be taken as is and used for computing SOMs. Which was what I did.
In my experiments, I used around 12,000 12-dimensional nodes with a map of 200x200. On my puny i5 650 (3.2 Ghz), 8 Gb RAM, generating a SOM with these parameters takes around 4 hrs, maybe less. One "epoch" takes around 40 sec and I run 500 epochs, however, since the neighborhood of code vectors that gets trained in one epoch gradually diminishes, it is not a straight multiplication of 500 * 40.
These experiments have actually not yielded the results I was hoping for, perhaps because the training set is not large enough for the data I am trying to cluster. Be it as it may, more experiments are needed with a larger dataset, and I am already at the brink of feasibility as far as performance. It does increase linearly with the number of nodes. The C++ code that I have (stolen) is actually pretty good, but it is single-threaded, so doing things in parallel seems to be a logical next step.
Step 0. CPU F#
At this point, I was actually interested more in performance improvements than in re-implementing SOM in F#. I did re-implement it in F#, but for my performance bench-marking I did not use the whole algorithm, just the first part where BMUs are calculated. Since BMU is a map vector that is closest to the given node, in order to compute one BMU it is necessary to iterate over the entire map. So computing BMUs for the entire set of nodes gets us the cost of O(n * d * m1 * m2) (m1, m2 are map dimensions, n is the length of the nodes array, d is dimensionality of each node vector). That's for one epoch only. And there are 500 of those. It adds up.
My F# implementation computed the BMU for one 12 dimensional node on a 200x200 SOM in a whopping 140 ms. Vs just 4ms for C++. I did expect a perfromance drop from C++, I just did not expect it to be that drastic.
 member this.GetBMU (node : Node) =
 let min = ref Double.MaxValue
 let minI = ref -1
 let minJ = ref -1
 this.somMap |> Array2D.iteri (fun i j e ->
 let dist = getDistance e node this.Metric
 !minI,!minJ
Then I added parallelism. And Parallel.ForEach worked slightly better than Parallel.For.
 member this.GetBMUParallel (node : Node) =
 let monitor = new obj()
 let minList = ref []
 Partitioner.Create(0, fst dims),
 (fun () -> ref (Double.MaxValue, -1, -1)),
 (fun range state local ->
 let mutable(min, minI, minJ) =
 match!local with
 | m, i, j -> m, i, j
 for i = fst range to snd range - 1 do
 for j = 0 to snd this.Dimensions - 1 do
 let dist = getDistance this.somMap.[i, j] node this.Metric
 if dist < min then
 min <- dist; minI <- i; minJ <- j
 local := (min, minI, minJ)
 (fun local -> lock monitor (fun () ->
 match!local with
 | m, i, j when i > 0 ->
 minList := (m, i, j) ::!minList
 |_ -> ()
 ))) |> ignore
 let minTuple =!minList |> List.minBy (fun (x, i, j) -> x)
 match minTuple with
 | x, i, j -> i, j
Nothing fancy here. Split the first dimension of the map into chunks and try processing them as much as possible in parallel, by utilizing all the 4 logical cores. The inner loop could also be re-written the same way (to use Parallel.For or Parallel.ForEach), but it would probably not do much good since we are already as parallel as we can be. (And in reality it did not. Do any good, that is). While I expected an at least 4-fold performance increase, I did not get. I did get a 2 times increase. Now it only took 70 ms for one node.
Going massively parallel
At this point, things are really intuitive. If it were up to me, I'd do every calculation there is in parallel and then reduce them once they are done. If it takes, I dunno, say 0.001 mks to multiply 2 numbers in one processor thread, how long does it take to multiply 12000 * 12 * 2 numbers on 144000 processors? Obviously the same 0.001 ms. So the problem becomes almost constant in the number of nodes if we only could always have as many processors as the number of nodes * their dimensions.
Reality is of course vastly different but it does not have to be measured by the number 4 (of CPU cores). Thus, CUDA or OpenCL. I invested $166 in a Quadro K600 Graphics card, which has 192 cores and 1 Gb of on-board RAM. I still wanted to remain faithful to F#, so I looked for _URL_ CUDA framework. After briefly evaluating several such frameworks (and they are all in different stages of nascent at this point), I picked Alea.cuBase from QuantAlea.
The Framework
Alea.cuBase is pretty neat. I like the paradigm - using quotations to write CUDA code. The documentation is pretty good, gets you up and running very quickly, once the basic concepts of CUDA have been grasped


The TROMPA project will advance various research disciplines, as represented by the various project partners.
More concretely, the following disciplines and knowledge will be contributed to by the project:
 - Music and musicology, music history (GOLD, CDR): Evolution of music structures in composition and performance (melody, harmony, patterns, etc.), similarity and style characterisation.
 - Music psychology, perception, performance science (MDW): Music perception and performance skills involved in human annotation, music performance appreciation, and intuitive visualisation.
 - Library sciences (CDR, MDW): Library science, ontologies, metadata, interfaces to relevant library collections (including non-music collections).
 - Computer science and engineering (UPF, TUD): artificial intelligence, human-computer interaction, information retrieval, signal processing and educational technologies.
At the same time, TROMPA will also be rooted in the interdisciplinary domains of computational musicology (GOLD) and music information retrieval (UPF, TUD, GOLD, MDW).
Under the various research submenus, several specific topics of interest to the project are highlighted.


text:
- Gerard Brandt, Het Leven en Bedrijif van den Heere Michiel de Ruiter, 1687.
- Frank Fox, A Distant Storm: the Four Days' Battle of 1666, 1996.
Saturday, September 03, 2005
Dutch Captain: Lieuwe van Hasevelt
Lieuwe van Hasevelt served the Admiralty of Amsterdam. He fought in the Battle of Lowestoft, where he commanded the Harderin (38 guns and a crew of 148 men). He was assigned to Egbert Meeuwssen Kortenaer's squadron. He was in De Ruyter's fleet in August 1665. He was assigned to Cornelis Tromp's squadron. In August, the Harderin carried 40 guns and had a crew of 126 sailors, 13 marines, and 17 soldiers. this is one of the few lists that provide information about marines carried. Usually, they are combined with sailors. Sources:

source: m-a-p/FineFineWeb


text:
2016-2017 Dorothy Thorndike Botanic Gardens Internship
The Dorothy Thorndike interns work to connect people to plants, nature, and the environment, using the botanical resources of the Margaret Ferguson Greenhouses, Alexandra Botanic Garden, and Hunnewell Arboretum of Wellesley College.This internship was established in fond memory of Dorothy Dudley Thorndike DS '75, to further the impact of her passion for plants and nature on students and visitors to the Wellesley College Botanic Gardens.
This internship is open to all current Wellesley College students who will be returning to campus for the following academic year. The primary requirement is a love for plants. Preference is given to students who have taken BISC 108 or have other botanical or horticultural experience.
Applications are closed for 2016-2017.
Summer Internships at Wellesley College Botanic Gardens 2016
Environmental Horticulture (2 interns)
Interns gain hands-on horticultural experience assisting in the maintenance of the Wellesley College Botanic Gardens under the direction of Senior Horticulturist Tricia Diggins. This includes learning ecological landscaping techniques of weeding, mulching, watering, pruning and controlling invasive species. While working, interns learn about identifying and cultivating North American native plants and native communities as well as woody plant species from around the world. Interns will also help design and plant a kitchen vegetable garden - this year's theme is African crop plants.
Sustainable Agriculture (2 interns)
Interns gain experience in a range of food-growing endeavors, in the Edible Ecosystem permaculture garden, the "Farm-In-a-Box" experiment comparing organic and synthetic approaches to growing carrots and spinach, and the student-run Regeneration farm plot. Work will include watering, weeding, harvesting, and pest management.
All internships are 10 weeks (June 6 - August 12) and include occasional field trips and other relevant activities with the whole group. Interns receive $425 per week, plus campus housing or equivalent housing stipend.
Applications are closed for Summer 2016.


text:
Culvert Sizing on Judicial Ditch #1
The purpose of this project is reduce peak flows in the North Fork of the Crow River through culvert sizing. Culvert sizing will typically result in smaller culverts, which will provide short-term temporary storage within channels and on adjacent lands upstream from road crossings. In addition to reducing peak flow rates, flood damage and downstream erosion, increased sediment and nutrient removal through extended detention time is expected.
This project will be implemented through a subwatershed design approach and is estimated to reduce 80 tons of sediment and 80 pounds of phosphorus per year.
This project resulted in the delineate of sub watersheds and a hydrologic model that was used to model the size of culverts and determine hydraulic impact of culvert sizing


text:
Faculty of Graduate Studies
The Masters of Science in Water and Environmental Engineering at An-Najah National University is a foundation of leadership for environmental professionals. The Water and Environmental Studies Institute (WESI) is a well-established multidisciplinary postgraduate institute with an international reputation and high experience for excellence in water and environmental engineering. The program was designed by academic leaders in the Water and Environmental Studies Institute at An-Najah National University and benefiting from experts and programs in applied science at regional institutes and universities. The focus of the program is on studying the environmental effects and impacts of current human activities and development on the present and future (in quality and quantity and in time and space) of environmental and natural resources.
The core curriculum consisting of 36 credit hours (18 core and 18 elective courses) provides the strong foundation of fundamental water and environmental engineering required to work at the forefront of the field. A broad range of electives provides curricular flexibility to allow students to tailor their academic experience to suit professional needs and interests. The MS in water and environmental engineering program faculty at An-Najah National University includes distinguished instructors with valuable experience in the academic, public and corporate sectors. The program is thesis oriented only (30 credit hours plus 6 credit hours as a thesis) to allow much research of local water and environmental engineering related problems.
The MSc program in Water and Environmental Engineering is over twenty years old and highly popular and relevant to the present and future needs of Palestinian people and development.
All students in the MS program in Water and Environmental Engineering earn skills and tools in the following areas:
- Water resources management and hydraulic modeling
- Water resources quality
- Applied Water chemistry and microbiology
- Water resources management and modeling
- Water and wastewater treatment processes and design
- Sanitation and sewerage
- Groundwater modeling/management
- Water Rules and regulations
- Waste management and Environmental Monitoring, Analysis and Pollution control
- Ecological Management
- Environmental regulations
- Environmental Chemistry
- Environmental Management
- Environmental Planning
- Data Management including Statistical analysis, simulation, and computer modeling
- Waste Management
- Environmental Impact Assessment
The master program in water and environmental engineering and sciences promotes learning technical and technological skills and social development and economic tools and works with individuals and groups from and in the Palestinian communities using a range of formal and informal methods with will lead to better relations and engagement between people, industry, and government in relation to issues of social and economic development as well as the environment.
By improving graduate's knowledge, skills and confidence, tools, organizational ability and various computational and modeling resources, graduates from the programs would help industry solving their problems and cope with and develop with time. These skills, abilities, and tools would help to solve the various problems of local industries as well as constituting the basis for innovative initiatives to develop the sector. This program would contribute to strengthening social capital by improving the knowledge, skills, tools, abilities, confidence, motivation, networks and resources that the individuals, groups, and industries in a community or a country have.
Teaching and Learning
Teaching and learning methods adopted and used in water and environmental engineering and sciences include direct instructor lecturing through best available teaching techniques and practices and infrastructures (buildings, teaching assistants, and labs). These methods are aimed at knowledge building (new text books-up to date-used and presented to students in course works), comprehension (demonstrating understanding of terms and concepts of water and environmental engineering and sciences), application (solving problems by laboratory and field demonstration), analysis (breaking things down into their elements, formulating theoretical explanations or mathematical or logical models for observed phenomena of water and environmental engineering and sciences), synthesis (creating, design, and make-up problem solving techniques and mechanisms, and combining elements and processes in novel ways), evaluation (choosing, determining, and selecting from among alternatives).
Active learning approach is practiced in this program resulting in and emphasizing recalling prior material, responding to questions, problem-solving, explaining the written material, analytical, critical, and creative thinking, and generating questions and summarizing. In addition, cooperative learning is employed in this program by involving students to work in teams to accomplish an assigned task and produce a final product. This cooperative learning includes the following elements: positive interdependence, individual accountability, face-to-face promotive interaction, appropriate use of teamwork skills, and regular self-assessment of team functioning.
Coursework and Assessment
The program is totaled 36 credit hours: 30 credits of coursework and 6 in thesis-research work. Continuous student opinions and feedbacks are essential for checking program learning outcomes. Also, these feedbacks are important and included/considered in the program and teaching meaningful evaluation and program assessment plan. Written exams are used in all courses (first, second, and final exam) are used to evaluate and grade students in this program. An-Najah national university uses end-of-course web-based student surveys to evaluate teaching quality. While students' opinions are important and should be included in any assessment plan, meaningful evaluation of teaching must rely primarily on an assessment of learning outcomes. In addition to exams, projects and lab reports are used as measures to obtain an accurate picture of students' content knowledge and skills.
Program taught in:

source: openbmb/Ultra-FineWeb


text:
Posted: Tuesday May 15, 2012
May 15, 2012
Winnie Palmer Nature Reserve at Saint Vincent College will offer two nature camps for children during the month of July.
Five-year-old children (accompanied by an adult) may attend Bug Camp from 10 a.m. to 12 noon Tuesday, July 24 to Thursday, July 26. They will have an opportunity to "go buggy" along the tall grasses, along the trails or among the cattails in the pond searching for butterflies, spiders, ants, dragonflies, bees, beetles and other insects native to the Reserve. Hands-on investigations, games and mini-labs will take children on a nature adventure within the 50-acre site. Each camper will receive a mini insect investigation kit. Registration ($50) is required and is limited to 25 children who must be age 5 by July 9.
Children ages 6 and 7 may register for Fuzzy-Feather Camp from 10 a.m. to 2 p.m. Monday, July 9 to Friday, July 13. Campers will enjoy a week of nature adventure as they explore the world of mammals and birds as they learn about song birds and birds of prey native to Pennsylvania. They will also discover mammals native to the region. Each day campers will explore "feathered and furry friends" which occupy the Reserve. Each camper will receive a mini nature explorer kit. Registration ($125) is required and is limited to 25 children who must be age 6 by July 9.
Registration deadline is Friday, June 15 and may be completed online at _URL_. For questions or further information, contact the Winnie Palmer Nature Reserve at _PHONE_.
Follow us on Twitter: @SVCPublicity
Like us on Facebook: Saint Vincent College Public Relations


How much does dust affect the output of my PV system?
Detailed studies have been conducted on this subject, concluding that dust does not have a significant impact on PV systems. This is perhaps surprising, but washing the panels with tap water in places where there is a high concentration of calcium (such as Alice Springs) can actually have a more negative effect than dust. The arrays at the DKA Solar Centre are washed once a year by a specialised company who use a reverse osmosis filtration system to treat their water before using it to wash the solar modules.


text:
MODEL-ZD9 TELLURIC EQUIPMENT
Thao Jianu;Su Mingda; Wang Yanqiong;Song Baochang;Zhang Xiaofan(Earthquake Research Institute of Lanzhou,SSB,Lanzhou 730000)
In this paper the technical indexes,principle,function of a new specialized electrotelluricmeasuring instrument(Medel-ZD9)developed by authors is introduced. This instrument canbe used for routine observation of earth electric field at field stations and to detect deep earthresistivity by using the tensor method. It can also be used in other cases where multi-channeldata collecting is required. The tests of various performances and long use in earthquake sitesshow that the instrument can meet the needs of observing the geoelectric field.


and NVMe;!Y refers to a medium different from Y
Adaptability to cross-storage media
With the rapid development of new storage media, many users will change the storage medium from a HDD to an SSD or NVMe SSD in order to achieve higher performance of the database in a busy I/O scenario. In contrast, for a database instance with low performance requirements, a HDD can be used to replace an SSD or NVMe SSD to reduce costs for users. To verify the adaptability of CDBTune when the storage medium changes, we use database instances CDB-D(HDD), CDB-S-A(SSD) and CDB-N-B(NVMe) in this experiment. Note that there is only a different storage medium between them (same memory size and disk capacity). We first directly utilize the model called M_HDD\(\rightarrow \){SSD, NVMe} trained on CDB_D to recommend configurations for CDB-S-A or CDB-N-B (cross testing), then use the model called M_HDD\(\rightarrow \)HDD trained on CDB_D to recommend configurations for CDB_D (normal testing), and also finally compare the performance after executing these two configurations. Similar, for different storage media, we use the same method to complete cross testing and normal testing on SSD and NVMe. As shown in Fig. 23, \({\texttt {CDBTune}}^{+}\) not only achieves the best performance compared with the other candidates but also makes the cross-testing model almost achieves the same performance as normal-testing model. This demonstrates that when the user changes the storage medium from a HDD to an SSD or NVMe SSD, \({\texttt {CDBTune}}^{+}\) will quickly adapt to a new storage medium in the online tuning step. For example, when we changed the storage medium from a HDD to an SSD, we found that \({\texttt {CDBTune}}^{+}\) increases the innodb_log_file_size. As the number of erase times of the SSD is limited, if a log file is repeatedly erased and written to the same location, than this will result in a large number of I/O delays which may deteriorate database performance. Increasing the value of innodb_log_file_size recommended by \({\texttt {CDBTune}}^{+}\) can effectively mitigate this situation.
Fig. 24
Performance comparison for the TPC-C workload in light of complex setup changes. Note that Z is selected from CDB-A (A), CDB-S-A (S_A) and CDB-N-A (N_A), and!Z refers to a database instance different from Z
Adaptability to complex setup changes
Users may not only change one of the factors at a time (memory size, disk capacity and workload), but may change multiple factors at the same time, inducing more complicated environmental changes. Therefore, in this section, we will discuss the adaptability of \({\texttt {CDBTune}}^{+}\) in this situation. We adopt three different database instances CDB-A (8 GB, 100 GB, HDD), CDB-S-A (16 GB, 200 GB, SSD) and CDB-N-A (32 GB, 300 GB, NVMe SSD) to conduct our experiments. Note that there are different memory sizes, disk capacities, and storage media between these three database instances. We conducted the normal testing and cross testing experiments and recorded the throughput and latency analogous to the previous experiments. Moreover, to experience more complex environmental changes, we trained our model on the JOB workload in the normal testing to recommend configurations for the TPC-C workload in cross testing. The experimental results are shown in the Fig. 24. For these complex environmental changes, the performance of \({\texttt {CDBTune}}^{+}\) in cross testing exhibits a very small decrease compared to the previous three experiments (where only one environmental factor is changed at a time). We attribute this to the fact that \({\texttt {CDBTune}}^{+}\) needs a trade off when many environmental factors are changed at the same time.We note that \({\texttt {CDBTune}}^{+}\) still achieves the best performance compared to the other candidates.
Summary. The results of the above five presented experiments show that (even with limited training data) our model exhibits strong adaptability to changes in the hardware environment or workload. In comparison, OtterTune relies highly on training datasets, and uses a simple regression approach for recommendation. Thus the performance of the recommended configuration is limited, and OtterTune and BestConfig do not explore the high-dimensional configuration space when the current workload or hardware configuration differs from training condition. Especially in a cloud environment, where we can expect frequent environment changes, the lack of relevant data in the training dataset will result in poor recommendations from OtterTune. Instead, RL enables \({\texttt {CDBTune}}^{+}\) simulate human brain, learn towards an optimizing direction, and recommend reasonable knob settings corresponding to the current workload and hardware environment. Thus, \({\texttt {CDBTune}}^{+}\) exhibits a high adaptability in cloud environments. In addition, our end-to-ed model is more accurate than the pipelined method (OtterTune) or the heuristic search method (BestConfig), as RL applies an exploration & exploitation strategy, and thereby reduces the possibility of falling into a local optimum. This characteristic results in achieving higher tuning performance but neglects its explainability (similar to the AlphaGo). This is always a tradeoff in many recent ML models. Note that we consider methods to explain the recommendations of our tuning model as an important direction for future work.
Related work
Database tuning DBMS tuning has been an interesting and active area of research in the last two decades [1, 5, 6, 10, 11, 19, 25, 42, 55, 60, 61, 68, 69]. Existing work can be classified into two broad categories: tuning the physical design and tuning the configuration parameters.
Table 9 63 metrics include two types: state value and cumulative value
Table 10 64 commonly used knobs (16 most impactful knobs and other extended ones)
(1) Physical Design Tuning. Major database vendors offer tools for automating database physical design [5, 9, 63, 69], and they focused on index optimizations, materialized views and partitions [1,2,3, 7, 26, 32, 41]. Database cracking is a technique to create indexes adaptively and incrementally as a side-product of query processing [22]. Several studies have proposed different cracking techniques for different aspects including tuple reconstruction [23], updates [19], and convergence [24]. Schuhknecht et al. conducted an experimental study on database cracking to identify the potential, and proposed promising directions in database cracking [44]. Richter et al. presented a novel indexing approach for HDFS and Hadoop MapReduce to create different clustered indexes over terabytes of data with minimal costs [42]. Idreos et al. presented the Data Calculator to enable interactive and semi-automated design of data structures and performance by capturing the first principles of data layout design and using learned cost models, respectively [25]. Sudipto et al. [12] presented the design, implementation, experience, and lessons learned from building the first industrial-strength auto-indexing service for Microsoft Azure SQL Database.
(2) Database configuration tuning Parameter configuration tuning selects appropriate values of parameters (knobs) that can improve a DBMS's performance. Most work in automated database tuning has either focused on specific parameter tuning (e.g., [46]) or holistic parameter tuning (e.g., [13]).
(i) Specific parameter tuning Techniques for tuning specific classes of parameters include memory management and identifying performance bottlenecks [22, 24, 44]. IBM DB2 released a self-tuning memory manager that uses heuristics to allocate memory to the DBMS's internal components [46, 52]. Tran et al. used linear and quadratic regression models for buffer tuning [53]. A resource monitoring tool has been used with Microsoft's SQL Server for the self-predicting DBMS [38]. Oracle also developed an internal monitoring system to identify bottlenecks due to misconfigurations [14, 29]. The DBSherlock tool helps a DBA diagnose problems by comparing slow regions with normal regions based on the DBMS's time-series performance data [64].
(ii) Holistic parameter tuning There are several works for the holistic tuning of configuration parameters in modern database systems. The COMFORT tool uses a technique from control theory that can adjust a single knob up or down at a time, but cannot discover the dependencies between multiple knobs [59]. IBM DB2 released a performance Wizard tool for automatically selecting the initial values for the configuration parameters [30]. BerkeleyDB uses influence diagrams to model probabilistic dependencies between configuration knobs, to infer expected outcomes of a particular DBMS configuration [47]. However, these diagrams must be created manually by a domain expert. The SARD tool generates a relative ranking of a DBMS's knobs using the Plackett-Burman design [13]. iTuned is a generic tool that continuously makes minor changes to the DBMS configuration, employing GP regression for automatic configuration tuning [15].
Table 11 Detailed configurations recommended by OtterTune for the same workloads in Table 12, while knobs are not identical
Our system is designed for holistic knob tuning. OtterTune [55] is most close to our work. It


Take the 2-minute tour ×
Let $G= SL(2, F)$, given a torus $T$, the Weyl group with respect to $T$ is defined to be $W=N(T)/Z(T)$, the quotient of the normalizer $N(T)$ of the torus by the centralizer $Z(T)$ of the torus.
My question might be basic and elementary for some of you, but I would like to be in a complete understanding.
Why Weyl group of $SL(2, F)$ is the group $\mathbb{Z}/2\mathbb{Z}$?
share|improve this question
It's not made explicit here what field $F$ is given, though the tag p-adic-groups is suggestive. Usually "the" Weyl group is defined for an algebraic group over an arbitrary algebraically closed field, relative to any given maximal torus (all such tori being conjugate). It would help to know what kind of textbook source you are starting with, since the question is certainly "basic and elementary" once the context is clear. But more precision is needed if you start to look at fields of definition which are not algebraically closed. – Jim Humphreys May 6 '12 at 13:53
The field $F$ is non-Arch. local field and the tag for p-adic group because am dealing with $SL(2,F)$. – Dragon May 6 '12 at 15:52
3 Answers 3
up vote 7 down vote accepted
Two people (so far) have tried to provide some sensible information, but I think the question itself is too loosely formulated to have a real answer. What you are looking at is the group of rational points of an algebraic group of rank 1 over a certain type of infinite field, which could be of characteristic 0 or not. This group itself is just an abstract group, which doesn't immediately have a definite "Weyl group" attached. It makes more sense to start with the algebraic group $G=\mathrm{SL}_2$, which is defined and split over any prime field. (The language of group schemes is appropriate here.) Over any field $F$, the group of rational points is just the usual group of $2 \times 2$ matrices of determinant 1 over $F$. It makes no difference for your question what $F$ is.
In $G$ there is a single well-defined (up to isomorphism) Weyl group $N_G(T)/T$ which just has order 2, as described concretely by Mrc Plm in the split case. All maximal tori of $G$ are conjugate as well as self-centralizing, so the choice doesn't matter.
However, if $F$ fails to be algebraically closed, the resulting abstract group $\mathrm{SL}_2(F)$ is more challenging because $G$ typically has more than one class of maximal tori defined over $F$. In your rank 1 case it's not so bad because there are just two possibilities, the "split" and "anisotropic" (or "compact") types of maximal tori. The structure of the normalizer modulo centralizer of each type has to be looked at case-by-case in terms of the "absolute" Weyl group. In higher ranks the situation gets more complicated. Anyway you have to take account of the variation of structure in the points of $G$ over an arbitrary field.
Again I'd emphasize that the basic theory coming from study of algebraic groups doesn't depend on which field of definition $F$ (even finite) you are ultimately interested in, though of course the end results about rational points depend heavily on that field. There are somewhat different expositions of all this in standard textbooks, but the idea is always the same in your limited situation.
share|improve this answer
Let $T$ be a split torus over a field $F$.
The Weyl group is by definition a subgroup of the group of outer morphisms (defined over $F$).
There are only two automorphism (the inverse and the identity) of $T$ (defined over F), so the group of outer automorphism is isomorphic to $\mathbb{Z}/2$.
Both can realized by the conugation via the non-trivial element $\begin{pmatrix} 0 & -1 \newline 1 & 0 \end{pmatrix}$ and by the identity elment respectively.
So the Weyl group has at least two elements, hence exactly two elements.
Similiar you can argue for the maximal split torus in $SL(n)$ or $GL(n)$.
For non-split tori, the question is more difficult to answer. I know only the $GL(n)$-situation. In $GL(2)$, the tori is isomorphic to a multiplicative group of a quadratic field extensions, and the outer automorphisms of the tori are isomorphic to the Galois group. Now these can be realized by conjugation of elements $GL(2)$, but they can not be realized by elements of determinant $1$.
share|improve this answer
For your last sentence, note that $O_2(\mathbb{R})$ does not embed in $SL_2(\mathbb{R})$. – S. Carnahan May 18 '12 at 8:19
Yes. I guess it is clear that every thing should be defined uniquely up to conjugation, and surely the determinant will be preserved, so I win my bet;) – Marc Palm May 18 '12 at 11:20
One can approach this from different point of views:
On a matrix level, the subgroup consisting of the diagonal matrices is an example of a torus $T$. Its centralizer is $T$ itself, and its normalizer $N(T)$ the group of monomial matrices in $G$. One then verifies that $N(T) / Z(T)$ is the cyclic group on two elements.
One can also use the projective line $\mathbb{P}^1(F)$. Then the centralizer is the subgroup fixing the 'apartment', which in this case is a pair of points of the projective line, pointwise. The normalizer is the subgroup of $G$ stabilizing this apartment. The Weyl group (the quotient) is then the group of faithful automorphisms of the apartment. So the Weyl group here consists of the identity and an involution switching the two points of the apartment.
share|improve this answer
Your Answer


Tip: Other languages are Google-Translated. You can visit the English version of this link.
Log in
x
or
x
x
Register
x
or
How to filter exact text in Excel?
Have you ever tried to exactly filter in Excel, it means to filter exact text. Normally, you can finish this job by using the Advanced Filter feature, and in this article, I will talk about some good tricks for you to filter exact text in Excel.
Filter exact text in Excel with Advanced Filter feature
Filter exact text in Excel with Custom Filter feature
Filter exact text in Excel with Kutools for Excel
arrow blue right bubble Filter exact text in Excel with Advanced Filter feature
For example, I have the following data range, and now, I just want to filter the cells content is KTE-1. Please do as follows:
doc filter exact match 1
1. Create the criterion in the worksheet, and then apply the Advanced Filter utility, please enter the column header name that you want to filter and enter this formula: ="=KTE-1" (KTE-1 is the text that you want to filter exactly) below the herder cell, and press Enter key, see screenshot:
doc filter exact match 2
2. Then click Data > Advanced, see screenshot:
doc filter exact match 3
3. In the Advanced Filter dialog box, select Filter the list, in-place under the Action, and then specify the list range that you want to filter and the criteria range that you want to filter based on, see screenshot:
doc filter exact match 4
4. Then click OK button, the exact text that you want will be filtered as following screenshot shown:
doc filter exact match 5
arrow blue right bubble Filter exact text in Excel with Custom Filter feature
In fact, the Auto Filter also can help you to achieve the result as you need.
1. Select the data range that you want to filter exact text.
2. Click Data > Filter to shown the arrow button.
3. And then click the arrow button at the lower right corner of the cell, and then select Text Filters > Custom Filter, see screenshot:
doc filter exact match 6
4. In the popped out Custom AutoFilter dialog box, choose equals from the drop down list, and enter the text criteria that you want to filter based on, see screenshot:
doc filter exact match 7
5. Then click OK button to filter the exact text as you need.
arrow blue right bubble Filter exact text in Excel with Kutools for Excel
If you have Kutools for Excel, with its Super Filter utility, you can finish some complex filter, such as filter cells with multiple criteria, filter cells case sensitive, filter cells with text length, and so on.
Kutools for Excel : with more than 300 handy Excel add-ins, free to try with no limitation in 60 days
After installing Kutools for Excel, please do as follows:( Free Download Kutools for Excel Now! )
1. Click Enterprise > Super Filter, see screenshot:
doc filter exact match 8
2. In the Super Filter pane, click doc filter exact match 10 button to select the data range that you want to filter, and then click the horizontal line to expand the criteria box, see screenshot:
doc filter exact match 9
3. After expanding the criteria box, select and enter the criteria as you need into the criteria box one by one, see screenshot:
doc filter exact match 11
4. Then click Filter button, the exact text that you need will be filtered out, see screenshot:
doc filter exact match 12
Note: With this powerful Super Filter feature, you can also filter by text length, filter text case sensitive as following screenshos shown:
Filter by text length: Filter text with case sensitive:
doc filter exact match 13 doc filter exact match 14
Free Download Kutools for Excel Now!
Related articles:
How to filter comma separated data in Excel?
How to filter data by multiple colors in Excel?
Recommended Productivity Tools
Ribbon of Excel (with Kutools for Excel installed)
300+ Advanced Features Increase Your Productivity by 71%, and Help You To Stand Out From Crowd!
Would you like to complete your daily work quickly and perfectly? Kutools For Excel brings 300+ cool and powerful advanced features (Combine workbooks, sum by color, split cell contents, convert date, and so on...) for 1500+ work scenarios, helps you solve 82% Excel problems.
 - Deal with all complicated tasks in seconds, help to enhance your work ability, get success from the fierce competition, and never worry about being fired.
 - Save a lot of work time, leave much time for you to love and care the family and enjoy a comfortable life now.
 - Reduce thousands of keyboard and mouse clicks every day, relieve your tired eyes and hands, and give you a healthy body.
 - Become an Excel expert in 3 minutes, and get admiring glance from your colleagues or friends.
 - No longer need to remember any painful formulas and VBA codes, have a relaxing and pleasant mind, give you a thrill you've never had before.
 - Spend only $39, but worth than $4000 training of others. Being used by 110,000 elites and 300+ well-known companies.
 - 60-day unlimited free trial. 60-day money back guarantee. Free upgrade and support for 2 years. Buy once, use forever.
 - Change the way you work now, and give you a better life immediately!
Office Tab Brings Efficient And Handy Tabs to Office (include Excel), Just Like Chrome, Firefox, And New IE
 - Increases your productivity by 50% when viewing and editing multiple documents.
 - Reduce hundreds of mouse clicks for you every day, say goodbye to mouse hand.
 - Open and create documents in new tabs of same window, rather than in new windows.
 - Help you work faster and easily stand out from the crowd! One second to switch between dozens of open documents!

Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
 - To post as a guest, your comment is unpublished.
 Mark Swan · 3 years ago
 Dear Sir,
 I am using Advanced filter and everything is working well.... However what I can't figure out is how to make the advanced filter I have setup search for a certain word or letters within text.
 For Example: I type the word (butter) in the Criteria range, and I want to search for any transaction that conatins this word, However currently it returns no value, Unless I type the exact search as it is listed in the data list precisely...
 How Can I overcome this Problem and be able to enter a word or any letters and return results that contain any of this using Advanced filter.
 Note: I know how to do this using Regular filter and drop down, but I want to be able to do it with advanced filter. Please anyone can tell me simply how to do it?
 - To post as a guest, your comment is unpublished.
 Vimal · 11 months ago
 you can try typing as
 "*"&"butter"&"*"
 in place of butter. This helps to search the text at all position in a cell.


@baloise/web-app-utils
 TypeScript icon, indicating that this package has built-in type declarations
 3.9.0 • Public • Published
 @baloise/web-app-utils
 Continuous Release npm npm bundle size npm GitHub GitHub issues
 Javascript utilities for Baloise Web Applications.
 Installation guide
 Using npm
 npm i @baloise/web-app-utils
 Table of Content
 Language Utils
 The language utils helps to list the common languages and to detect the correct ones.
 LanguageModel
 valueOf
 Returns the Language of the given language key or if the lauage is not registered it returns undefined.
 Signature valueOf(key: string): Language | undefined
 Example
 const language = LanguageModel.valueOf('de')
 if (language === undefined) {
 // language is not registered
 }
 valueOfOrDefault
 Returns the Language of the given language key or if the language is not registered it returns the default one.
 Signature valueOfOrDefault(key: string): Language
 Example
 const language = LanguageModel.valueOfOrDefault('de')
 isValidKey
 Verifies if the given language key is registered as a supported language or not.
 Signature isValidKey(key: string): boolean
 Example
 if (LanguageModel.isValidKey('de')) {
 // language key is valid
 } else {
 // language key is not valid
 }
 Languages
 We provide various set of language list for our supported countries. Those Languages have the type LanguageModel.
 LanguagesOfSwitzerland
 List of german, french, italien & english with the default language german.
 Example
 LanguagesOfSwitzerland.isValidKey('de') // true
 LanguagesOfSwitzerland.isValidKey('be') // false
 LanguagesOfGermany
 List of german & english with the default language german.
 LanguagesOfBelgium
 List of dutch, french, italien & english with the default language dutch.
 LanguagesOfLuxembourg
 List of luxembourgish, french & english with the default language luxembourgish.
 Language
 The language object has only one property the key which has the language key like en.
 Browser Utils
 The browser utils solve some common request when working with the broser api.
 For working with cookies we recommand to use the library js-cookie.
 For working with the url we recommand to use the library query-string.
 Functions
 scrollToAnchorElement
 Scrolls to the ancor element with the attribute data-ref="heading".
 Signature scrollToAnchorElement(referenceName: string): void
 Example

...

 scrollToAnchorElement('heading')
 scrollToTopOfBody
 Scrolls to the top of the body.
 Signature scrollToTopOfBody(): void
 open
 Opens a new location in the current tab.
 Signature open(url: string): void
 openInNewWindow
 Opens the new location in a new tab.
 Signature openInNewWindow(url: string): void
 getBrowserLanguage
 Returns the main language key. For example if the browser has the language de-CH this function return the language key de, so we can use our LangaugeModel.
 Signature getBrowserLanguage(): string
 Example
 const langKey = getBrowserLanguage()
 if(LanguagesOfSwitzerland.isValidKey(langKey)) { ... }
 ...
 disableDragAndDropFiles
 Disables for the whole web application drag and drop.
 Signature disableDragAndDropFiles(): void
 getBrowserInfo
 Returns some useful information from the browser.
 Signature getBrowserInfo(): BrowserInfo
 interface BrowserInfo {
 cookiesEnabled?: boolean
 language?: string
 timezone?: string
 userAgent?: string
 }
 Integration Utils
 The integration utils helps to work with our integration tools like one trust.
 loadOneTrustBaloiseSwitzerland
 Loads the one trust script directly from our main cms system with the necessary parameters.
 Signature loadOneTrustBaloiseSwitzerland(): void
 Common Model Utils
 Some useful models to use in the daily business.
 RequestState
 The RequestState enum helps to have a state variable to show the current stand of an api call.
 export enum RequestState {
 INIT,
 RUNNING,
 SUCCESS,
 ERROR,
 }
 Example (Angular)
 import { Component, OnInit } from '@angular/core'
 import { RequestState } from '@baloise/web-app-utils'
 import { ConfirmEmailService, EmailConfirmationResponse } from '../confirm-email.service'

 @Component({
 selector: 'confirm-email-page',
 templateUrl: './confirm-email.page.component.html',
 styleUrls: ['./confirm-email.page.component.scss'],
 })
 export class ConfirmEmailPageComponent implements OnInit {
 confirmEmailResponse: EmailConfirmationResponse
 requestState: RequestState = RequestState.INIT

 constructor(private confirmEmailService: ConfirmEmailService) {}

 confirmEmail() {
 this.requestState = RequestState.RUNNING
 this.confirmEmailService
 .confirmEmail()
 .toPromise()
 .then(resp => {
 this.requestState = RequestState.SUCCESS
 this.confirmEmailResponse = resp
 })
 .catch(() => {
 this.requestState = RequestState.ERROR
 })
 }
 }
 Common Utils
 API
 areArraysEqual
 areArraysEqual(a: any, b: any) => boolean
 Returns true if the arrays are equal
 areArraysEqual(['a', 'b'], ['b', 'a']) // true
 now
 now() => Date
 Returns a JS Date instance of the exact moment
 const date = now()
 // Wed Mar 10 2021 20:30:32 GMT+0100 (Central European Standard Time)
 today
 today() => Date
 Returns a JS Date instance of today with time being set to 0
 const date = today()
 // Wed Mar 10 2021 00:00:00 GMT+0100 (Central European Standard Time)
 floorTime
 floorTime(date: Date) => Date
 Returns a JS Date instance with time being set to 0
 const date = floorTime(new Date())
 // Wed Mar 10 2021 00:00:00 GMT+0100 (Central European Standard Time)
 ceilTime
 ceilTime(date: Date) => Date
 Returns a JS Date instance with the time set to the possible end
 const date = ceilTime(new Date())
 // Wed Mar 10 2021 23:59:59 GMT+0100 (Central European Standard Time)
 formatDateString
 formatDateString(date: Date) => string
 Return the formatted date string in ISO 8601 format. Options may be passed to control the parts and notations of the date.
 const dateString = formatDateString(new Date())
 // '2022-02-14'
 isValidIsoString
 isValidIsoString(dateString: any) => any
 Validates if the given date string matches the iso date format.
 isValidIsoString('2022-02-14')
 // 'true'
 format
 format(locale: any, date: Date) => any
 Formats the dates according to the given locale.
 format('de-CH', new Date())
 // '14.2.2022'
 parse
 parse(dateString: string, locale: any) => any
 Parses the iso date string into a javascript date object.
 const dateString = parse('2021-03-10')
 // Wed Mar 10 2021 00:00:00 GMT+0100 (Central European Standard Time)
 dateSeparator
 dateSeparator(locale: any) => string
 Returns the char which separates day form month and year.
 dateSeparator('de-CH')
 // .
 debounce
 debounce(func: any, wait: any) => any
 The debounce function wait a certain amount of time before running the inner function again. This should reduce the number of times a function is called.
 const debounceFunction = debounce(function () {
 // The function's code
 }, 250)

 window.addEventListener('resize', debounceFunction)
 isEmpty
 isEmpty(value: any) => boolean
 Returns true if the value is empty
 isEnterKey
 isEnterKey(event: KeyboardEvent) => boolean
 Returns true if the keyboard event was triggered by the Enter key
 isSpaceKey
 isSpaceKey(event: KeyboardEvent) => boolean
 Returns true if the keyboard event was triggered by the Space key
 isEscapeKey
 isEscapeKey(event: KeyboardEvent) => boolean
 Returns true if the keyboard event was triggered by the Escape key
 isBackspaceKey
 isBackspaceKey(event: KeyboardEvent


PPDL Picture of the Week
September 4, 2018
Hallowheart of Watermelons
Wenjing Guan, Clinical Engagement Assistant Professor-SWPAC, Horticulture and Landscape Architecture, Purdue University
Hollowheart of watermelons is a physiological fruit disorder. Flesh separate inside of the fruit, typically forming three gaps (Figure 1 and 2). In severe cases, hollowheart could cause watermelon load rejection.
Watermelon fruit that has hollowheart tends to be triangular shaped. Poor pollination is the primary reason causing hollowheart. Scientists were able to approve that seedless watermelons are more likely to develop hollowheart when the pollenizer plants (diploid watermelons) are located further away from the seedless plants. The study found hollow heart incidence started to increase when the distance between the seedless plant and the pollenizer plant is more than 6 feet.
Cold weather and the lack of bee movement during pollination period also cause poor pollination. Some growers use mixed pollenizer plants with different flowering peaks to ensure availability of pollens matching the blooming period of seedless plants. Bumblebees, in addition to honeybees, are used. This is partly because bumblebees are relatively more active at relatively low temperatures and low light intensity conditions.
In addition to poor pollination, water and fertility management are also believed to affect the incidence of hollow heart. The assumption is that hollow heart is caused when the fruit inner cells can not keep pace with the expansion rate of the rind, and this situation is more likely to occur on 'forced' plant, for example, planting with excessive fertilizers.
Incidence of hollowheart occurs more frequently in crown-set fruit compared to lateral-set fruit, part of the reason is that crown-fruit have larger intercellular spaces with fewer and larger cells. It could also because crown-fruit set earlier in the season when environmental factors such as low temperatures are more likely to affect pollination.
Although hollowheart symptom was observed on both seedless and seeded watermelons, seedless watermelons tend to have more hollowheart than the seeded watermelons. Under the same environmental conditions, yellow and orange-fleshed watermelon varieties tend to have the most severe hollowheart symptoms. Among typical seedless watermelon varieties, a negative correlation existed between watermelon flesh firmness and the ratings of hollowheart. Firmer fleshed-watermelons have lower hollowheart ratings.
Click image to enlarge


text:
British grown tomatoes are available in shops now, picked when they are perfect for eating and with only a short distance to travel to the shops they are super fresh, tasty, healthy and environmentally friendly.
Although many British growers produce tomatoes on a large scale they care about the environment, millions of bumblebees are used each year to pollinate plants, insects are used as a natural pest control and millions of gallons of water are stored from glasshouse roofs for irrigation.
Tomatoes are delicious fresh or cooked, they are very healthy containing Vitamins A, C and E, and Potassium and Calcium, they are low in calories and contain virtually no fat or cholesterol.
Store your Tomatoes at room temperature, keeping them in the fridge impairs their flavour.
Did you know?
- Tomatoes are fruits not vegetables.
- In Britain we each eat on average two tomatoes every week.
- Tomatoes originate from the Andes in South America, where they grow wild. They were first cultivated by the Aztecs and Incas as early as 700 AD.
- Tomato Seeds have been grown in space.
- The largest UK tomato glasshouse covers 26.5 acres, but is currently being extended to 44.5 acres, or 18 hectares. That's the size of 25 international football pitches.
So support our growers by buying British and local Tomatoes or why not have a go at growing your own it is a lot easier than you think and now is the perfect time to plant them, click here for a Guide to Growing your own Tomatoes.


text:
In the realm of exquisite jewelry, Art Deco diamond rings stand as timeless pieces that capture the essence of a bygone era. Characterized by their bold geometric designs, intricate 結婚戒指 details, and a touch of vintage charm, these rings are a stunning choice for individuals who appreciate the allure of Art Deco aesthetics. In this blog post, we will delve into the beauty and significance of Art Deco diamond rings.
The Allure of Art Deco Diamond Rings
A Glimpse into the Past
Art Deco is an artistic and design movement that flourished during the 1920s and 1930s, known for its embrace of geometric shapes, bold colors, and a sense of modernity. Art Deco diamond rings reflect the spirit of this era, offering a glimpse into a time when glamour and sophistication reigned supreme.
One of the defining characteristics of Art Deco rings is their use of geometric shapes, such as square, rectangle, and octagon settings. These shapes are meticulously crafted to create symmetrical and visually striking designs. The use of straight lines and clean angles adds a sense of sophistication to the rings.
Art Deco rings are renowned for their intricate details, often featuring delicate filigree work, milgrain edging, and engraved patterns. These details add a sense of refinement and craftsmanship that is both beautiful and timeless.
Selecting the Perfect Art Deco Diamond Ring
Diamond Shape and Cut
Art Deco rings can feature various diamond shapes, including round, emerald, marquise, and baguette cuts. The choice of shape should align with your personal taste and complement the overall design of the ring.
Metal Choice and Gemstones
The metal choice for Art Deco rings typically includes white gold or platinum, which enhances the vintage appeal. Additionally, many Art Deco rings incorporate colorful gemstones such as sapphires, rubies, or emeralds as accents, adding a pop of color to the design.
Setting and Band Design
The setting of an Art Deco ring can vary, from simple solitaires to elaborate halo designs. The band may also feature decorative elements like filigree patterns or engraved motifs, contributing to the overall elegance of the piece.
Art Deco Diamond Rings: Symbol of Timeless Glamour
Glamour and Sophistication
Art Deco diamond rings symbolize glamour and sophistication. They serve as a reminder of a time when elegance and opulence were highly celebrated, making them a perfect choice for those who appreciate vintage charm.
The enduring appeal of Art Deco designs mirrors the timeless nature of love and commitment. These rings are a testament to the lasting beauty of both the design and the bond they represent.
Caring for Your Art Deco Diamond Ring
To preserve the beauty and intricate details of your Art Deco diamond ring, regular cleaning and care are essential. Gentle cleaning with warm soapy water and a soft brush can help maintain the brilliance of the diamonds and the luster of the metal. Professional inspections can also address any potential issues and ensure the ring remains in excellent condition.
Art Deco diamond rings are a celebration of vintage glamour and timeless beauty. Their bold designs, intricate details, and connection to an era of sophistication make them a captivating choice for those seeking a symbol of love and commitment that is both stylish and enduring. Whether you're drawn to their geometric elegance or their representation of timeless glamour, Art Deco rings offer a unique and elegant way to express your enduring love. When it comes to symbolizing the beauty of love and the allure of a bygone era, Art Deco rings shine with vintage charm and sophistication.


text:
Activated protein C (APC) is a critical regulator of thrombin formation and thereby protects against thrombosis. On the other hand, overwhelming formation of APC increases the risk of bleeding such as in trauma-induced coagulopathy. Thus, pharmacological inhibition of APC activity may improve blood clottability in certain clinical situations. In this study, we demonstrate that the DNA aptamer HS02-52G binds with fast onset (1.118 ± 0.013 × 105 M-1 s-1) to APC and possesses a long residence time of 13.5 min within the aptamer-APC complex. Functional analysis revealed HS02-52G as a highly potent and specific inhibitor of APC in plasma and whole blood with IC50 values ≤30 nM, whose activity can be readily neutralized by the short complementary DNA molecule AD22. These features qualify the novel aptamer-antidote pair as a candidate treatment option for acute APC-related bleedings.
Keywords: activated protein C (APC); antidote; aptamer; hemophilia; inhibitor; trauma-induced coagulopathy (TIC).


.focusout()
.focusout( handler )Returns: jQuery
Description: Bind an event handler to the "focusout" JavaScript event.
This method is a shortcut for .on( "focusout", handler ) when passed arguments, and .trigger( "focusout" ) when no arguments are passed.
The focusout event is sent to an element when it, or any element inside of it, loses focus. This is distinct from the blur event in that it supports detecting the loss of focus on descendant elements (in other words, it supports event bubbling).
This event will likely be used together with the focusin event.
Additional Notes:
 - As the .focusout() method is just a shorthand for .on( "focusout", handler ), detaching is possible using .off( "focusout" ).
Example:
Watch for a loss of focus to occur inside paragraphs and note the difference between the focusout count and the blur count. (The blur count does not change because those events do not bubble.)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!doctype html>

<meta charset="utf-8">
<title>focusout demo</title>

Demo:


text:
Gauging Plant Health and Happiness1 week ago -
Comparing and contrasting are key when determining if a plant is growing to its full potential.
"The ability to detect or gauge plant health is a skill that takes time and experience to develop," explains Robert Spencer, commercial horticultural specialist at the Alberta Ag-Info Centre. "It is a bit of an art form, combined with varying depths of science to back it up."
Spencer says that at the heart of any diagnosis is a clear understanding and picture of what the plant or crop is "supposed" to look like. "It is a simple contrast and comparison between the mental picture and what is right in front of us."
He notes that there are many variables to consider when determining whether a plant is achieving its full potential. "Many of these require a deeper dive into the nuances and variations and can be entirely subjective."
These comparisons include:
- Plant vigour
- Plant size
- Leaf colour
- Plant shape
- Amount of root growth and perhaps the colour of the roots
- Amount of flowering
- Uniformity of the entire plant, leaves, stems, flowers, etc.
- Evidence of lesions, spots, stripes, pustules, flecks, pinholes, or any number of other symptoms and signs of infection or infestation
"Diagnosing plant health is very much a subjective, comparative process, where one attempts to judge whether the plant being examined is performing as well as it could, versus the other plants surrounding the one being examined," he adds.
Go to Diagnosing plant problems for a list of questions that producers can use to narrow down variables that can affect a plant's growth.
Source: Alberta Ag


text: The Ekhaga Foundation (Sweden) makes grants for research in ecological agriculture and biological medicine.The Foundation's research in agriculture relates to improvement and further development of ecological agriculture. It seeks to encouragne ecologically well-suited agricultural systems where chemical compounds for fertilization and other uses are replaced with ecological and biological measures of promoting production. Further, the Foundation can support research in preparation and storage of food with natural technology.Universities, research institutes, etc., from all over the world are invited to apply, although Ekhaga recommends cooperation with a European institution. Grant seekers can read Ekhaga's guidelines for preparing proposals and budgets. The deadline for pplications is 31 May 2013.


Facts Bite into Bird Tooth Story | The Institute for Creation Research
Facts Bite into Bird Tooth Story
Fossils clearly show that some birds used to have small teeth, but most birds today do not have teeth. When and how did this change happen? A new study in the journal Science makes a few unfounded conclusions.1
The Science team studied 46 genomes from the class Aves, which includes all birds. Each genome represented one of 46 major groups, including perching birds, birds of prey, swimming, tropical, and flightless birds. The study authors zoomed in on six key genes that toothed mammals and reptiles use in tooth formation today, finding that the bird versions of these six genes all look very different.
Even though hundreds of genes are involved in making teeth, the study authors attributed most of the differences in these six genes to genetic alterations like deleted exons, frameshift mutations, inserted stop codons, and splice-site mutations. These modifications are known to happen, but they do not always indicate that an altered gene does not function.2 Thus, before concluding that bird-tooth loss evolved through random genetic changes, scientists need to show why these alleged genetic changes could not have happened by design.
Because all six genes in today's birds have some of these supposed alterations—assuming that these genes have been altered from a code that once built bird teeth—the study authors concluded that all birds evolved from a single common ancestor that suffered tooth loss millions of years ago. However, this conclusion rests on the often-quoted, but impossible assumption, that all modern bird kinds evolved from one ancestor that had evolved from a dinosaur.
They wrote, "Modern birds share a common ancestry with toothed, maniraptoran theropod dinosaurs," and, "We estimate that tooth loss, or at least the loss of enamel caps that provide the outer layer of mineralized teeth, occurred about 116 million years ago."1 But if one concludes that all birds inherited tooth loss from an ancestor by assuming that all birds evolved from that supposed ancestor, then one has merely reasoned in a circle.
Besides, if all birds descended from a single ancestor that had lost the integrity of its tooth genes, then shouldn't all 46 of the birds they tested have inherited the same genetic mishap? Instead, the study authors found an array of gene alterations. And for that matter, shouldn't these supposedly broken genes have mutated beyond recognition after 116 million years of change?
Options other than broken-down tooth genes might better explain what these study authors found. For example, they wrote, "Previous studies have documented that [the six tooth genes] are expressed outside of tooth development."1 They then dismissed the idea that these genes have any critical functions by asserting that if the genes were critical to bird life, then they would have been maintained instead of altered. But what about the possibility that birds maintain the genes in their current forms for important uses? In other words, the study authors assumed that the genes were altered before they even came to the conclusion that the genes were altered in a common ancestor—another circular argument.
Maybe what these authors have interpreted as broken genes actually do something useful in bird tissues, like serving as regulatory RNA switches or signals as a bird develops inside its egg—but that would contradict their conclusions. After all, the genes are actively expressed and apparently functional. They are not dead sequences at all. If tooth loss in some birds did occur via corrupted genes, then this is a process of information loss—not upward evolutionary improvement. For all we really know, God originally intended these six genes to perform the same tasks "outside of tooth development" that they do today. The fact that modern birds do use these tooth genes takes a bite out of the idea that the six genes are corruptions—a conclusion that relies more on circular reasoning than on scientific observations.
References
 1. Meredith, R.W. et al. 2014. Evidence for a single loss of mineralized teeth in the common avian ancestor. Science. 346 (6215): _PHONE_-_PHONE_-6.
 2. Wells, J. 2011. The Myth of Junk DNA. Seattle: Discovery Institute Press.
*Mr. Thomas is Science Writer at the Institute for Creation Research.
Article posted on December 25, 2014.
The Latest
NEWS
Give Today to Reach the Next Generation
North Texas Giving Day is here once again! Will you help us reach the next generation? Your generosity will empower ICR and the brand-new ICR Discovery...
NEWS
Fossil Ape Skull Is a Game Ender
A recent poll of college-age Americans showed that the single most convincing science-based argument for evolution is the lineup of supposed ape-like evolutionary...
NEWS
Over a Dozen More Dinosaur Soft Tissues
A trio of scientists used sterile techniques to collect 17 dinosaur fossils. They searched deep inside the specimens for original, still-soft tissue...
NEWS
Komodo Dragon Genome Bites Evolution
Komodo dragons are the largest lizards in the world and a top predator on the remote Indonesian islands they inhabit. Their sensory system allows them...
NEWS
ICR Discovery Center Hosts Grand Opening
This Labor Day, over 1,600 people flowed through the ICR Discovery Center for Science & Earth History to celebrate its grand opening. ICR staff and...


text:
A process audit team is responsible for evaluating and improving the processes within an organization. The functions and advantages of a process audit team include:
- Identify areas for improvement: A process audit team can identify areas where processes are not working efficiently or effectively, and suggest changes to improve the overall performance of the organization.
- Ensure compliance: The team can ensure that processes are being followed according to established standards and procedures, which can help the organization avoid costly mistakes or legal issues.
- Evaluate risks: The team can evaluate potential risks associated with processes and suggest ways to mitigate or eliminate those risks.
- Increase efficiency: The team can identify ways to streamline processes, reduce waste, and improve productivity, which can help the organization save time and resources.
- Foster a culture of continuous improvement: By regularly conducting process audits and making recommendations for improvement, the team can help the organization develop a culture of continuous improvement.
- Provide feedback: The team can provide feedback to employees and management about how processes are working, which can help identify training needs, highlight best practices, and address any issues that arise.
- Enhance customer satisfaction: By improving processes, the organization can provide better products and services to its customers, leading to increased customer satisfaction and loyalty.
Overall, a process audit team can help an organization improve its performance, reduce risk, and achieve its strategic objectives.