text:
This page contains information about the modern and authentic didgeridoos
we carry. Although we don't claim that it is exhaustive, we hope it gives
you a solid basic understanding of your instrument. If you need clarification
or have something you feel would be useful to add, please contact us.
We'd be happy to help!
To Play Your Didgeridoo
Position and Technique - The didjeridu can be played
while seated, standing. If you have heard an experienced didj player
you are probably familiar with the variety of sounds that one can make
with this simple instrument. Although you should not expect yourself
to be making overtones and efficiently circular breathing all within
10 minutes of beginning to play, by following these instructions, and
patiently practicing, you'll soon get the drone going.
- Step 1 - Warm up and loosen the lips by closing them
softly and blowing air through, making the "motorboat" sound.
- Step 2 - When you feel warmed up, lightly place the
lips on the beeswax mouthpiece. Most experienced players position the
mouth slightly off center, but beginners may find it easier placing
the lips squarely over the center of the mouthpiece.
- Step 3 - Begin with a small burst of air (like making
a "puh" sound) and continue to buzz the lips. The most common
mistake when learning to play is making the lips to tight and blowing
too hard. Try to relax the lips as much as possible, and don't waste
all of your breath in the first 5 seconds!
Step 4 - Once you can produce a steady drone, play
around with different vowel sounds, changing the size of the mouth cavity,
vocal noises and overtones, and continuous breathing.
How To Care for and Maintain
- Transport and Exposure - Although your didjeridu
is made with durability and mobility in mind, you should avoid exposing
it to the elements for prolonged periods of time (dampness, rain, snow,
etc.). Changes in humidity and altitude will not affect the instrument.
You must NEVER LEAVE YOUR DIDJERIDU IN DIRECT SUNLIGHT or in a very
warm room (including your car, near a heater vent, etc.) because the
beeswax mouthpiece will melt. Don't use your didj as a lever, cane,
bat, or weapon.
- Cleaning - Your didjeridu may be cleaned with a damp
cloth, but don't apply cleansing agents or other cleaning tools.
Avoid playing with dirty hands or leaving your didj exposed to sand
- Maintenance - Should you want or need to remold the
mouthpiece simply warm it under running warm water until it is the consistency
of playdough or silly putty. Overwarming can cause it to become flakey,
which should be avoided. When reinstalling the mouthpiece make sure
there is a consistent seal around the entire top rim of the didj by
pressing the beeswax firmly against the inside wall.
- Transport and Exposure - Eucalyptus is a very hard,
dense wood, which makes it resiliant. However, you should care for your
didgeridoo as you would any other valuable musical instrument. Do not
expose your didj to rain, snow, or sand, and do not leave it in extreme
conditions, such as very hot or very cold temperatures. You must NEVER
LEAVE YOUR DIDJERIDU IN DIRECT SUNLIGHT or in a very warm room (including
your car, near a heater vent, etc.) because the beeswax mouthpiece will
melt. If you need to travel with your didj we would recommend a well
padded travel bag, and some extra padding around the bell and mouth
ends if you anticipate a rough journey. High impacts may crack the wood,
and should be avoided.
- Cleaning - You may clean the outside of your didj
with a damp cloth, but don't use any cleansing agents or scrubbing tools.
After playing your eucalyptus didgeridoo for some time it may develop
a unique odor due to the wood's absorption of the moisture in your breath.
This is natural and will not damage your didgeridoo. If you would like
to restore the natural eucalyptus smell you can use some essential oils,
mixed with water, or other natural anticeptics such as tea tree oil.
Spray a few squirts into the mouth end of your didj, and let it dry.
- Maintenance -
- RIGHT AWAY: When you first get your didjeridu it will need to
adjust to its new home. Avoid playing for longer than 20 minutes
at a time for the first week or so. This will give the wood inside
the bore hole a chance to dry, and will prevent moisture buildup
- LONG TERM: Your eucalyptus didgeridoo was treated with linseed
oil before it was exported from Australia. The exterior was treated,
as well as the inside. Some didjs were stained before they were
oiled. With time the wood may appear dry, and perhaps could use
another coat of linseed oil. However, as linseed oil is a hardening
oil (i.e. when left exposed to air it will harden), it will serve
to harden the wood after it has been absorbed. This will prevent
future coats of linseed oil from soaking in, so only apply very
thin coats, giving many months for the oil to fully dry and harden.
You should not need to apply linseed oil more than once or twice
more in its lifetime.
- SPLITS IN WOOD: All wood is hygoroscopic, meaning it readily
takes up and releases water depending on relative humidity and
exposure to moisture. In dryer climates your didj may develop
some small hairline cracks on the bell or mouth end. These are
inconsequential and will not affect the sound of the didj, and
will often close up when in a more humid environment. And as
you play the didj the moisture from you breath will be absorbed
and released continually to some degree, and may eventually
cause some splitting. Occassionally a check will develop that
goes all the way through the wood, and allows air to escape.
If this is the case you can seal the crack yourself by using
one of the following methods:
- Soften pure beeswax
and mold it into the crack. The wax will harden and seal up
the leak. We have 1
OZ bars of beeswax available for this purpose.
- Super Glue works very well as a permanent fix. The wood will
absorb the glue first, then the glue will build up to fill the
hole. If the crack is too large to be filled with plain Super
Glue, fill the split with fine sawdust, then soak the sawdust
with the glue. This will create a very hard material that is
permanently stuck to the didj. Sand down any lumps or rough
- Size - The size of the opening does affect the playability
and versatility: the larger the hole the easier to play, while a smaller
hole facilitates circular breathing, sustained droning, and vocal tricks.
Beginners will probably appreciate a large mouthpiece opening.
- Reshaping - When played for a long period of time
the mouthpiece will soften because of the heat from the mouth. Taking
small breaks and remolding the mouthpiece will solve the problem. Gently
press the wax into the shape you want and let it cool until firm enough
- Installing a new mouthpiece - Don't be intimidated!
Installing or repairing a mouthpiece is very simple and intuitive. Follow
the steps below for some basic guidelines, and feel free to experiment.
- HEAT AND ROLL: Heat the bar of wax by either placing it in warm
water, heating in microwave on low for short amounts of time, or
using a blow drier on light heat. Be careful to not allow the wax
to melt, as this will alter the properties of the wax and make it
less useable as a mouthpiece. It should be soft enough to easily
- PREPARE DIDJ: Heat a small bit of wax until extremely soft, and
smear this onto the end of the cleaned mouth end of the didj. Also
apply to inside of bore hole about 1" down.
- INSTALL WAX ROLL: Making sure the wax on the mouth end, and the
wax roll are warm and malleable, place roll onto didj end and push
down firmly with thumb and index finger. Be sure to create a tight
seal between the wax and the wood. The inside wall should have wax
extending down about 1", gradually tapered from the top to
- SMOOTH OUTSIDE LIP: Once you have a solid seal shape the outside
of the wax. It shoud be rounded and comfortable to play. Make sure
the size is optimal for your player level and preference.
- CLEAN IT UP: After getting the shape you want remove any excess
wax from the outside that may be hanging over the wood or have uneven
edges. You should be able to peel it off with your fingers, or you
can use a knife for a cleaner line.
History of the Didgeridoo
The didjeridu (did-jury-doo) is possibly the most ancient
woodwind instrument known to man. The native Aborigines of Australia
use the didjerid


smooth camera follow script
Git version control for Unity using Bitbucket and Sourcetree
Git version control for Unity
Welcome to this easy and quick tutorial how to set up Git version control for the unity game engine.
Using Bitbucket and SourceTree
Making things easy, we use Bitbucket for online repositorys and the sourcetree-app to do commits, pulls and pushes.
Make shure to watch the following video, where I teach everything about setting up version control.
After that, don't forget to set up your gitignore-file for SourceTree, check out the screenshot and description below.

Afterwards don't forget to include a "gitignore"-file in your project directory.
That way you can make shure that only the necessary files will be uploaded to the remote repository.
All the crap stuff like temp- and build-files etc. will be ignored.
You can create the file by creating a new textfile, using filename "gitignore.txt".
Copy and paste the following content into the file and save it:
# =============== #
# Unity generated #
# =============== #
[Tt]emp/
[Oo]bj/
[Bb]uild
[Ll]ibrary/
sysinfo.txt
# ===================================== #
# Visual Studio / MonoDevelop generated #
# ===================================== #
[Ee]xported[Oo]bj/
/*.userprefs
/*.csproj
/*.pidb
/*.suo
/*.sln*
/*.user
/*.unityproj
/*.booproj
# ============ #
# OS generated #
# ============ #
.DS_Store*
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
[Tt]humbs.db

Than rename the file and delete the ".txt"-fileending. There you have your gitignore-file:

Since SourceTree uses its own gitignore-file, you have to tell SourceTree to use your gitignore-file.
SourceeTree -> Tools -> Options -> Git shows the git ignore file location it uses. You can also edit the file from a button in that dialog.

SourceTree set up gitignore file

4 comments
 1. Hi Tobi – I have played around with the .gitignore but there are some files in Library that won't ignore. Most of them are in the Library/Metada folder, but there are some other ones and it is ignoring most of the files in Library. Do you know why this might be happening? Thanks in advance!
 1. Hi Nahele,
 sorry for answering that late.
 If you talk about the .meta-files, they have to be included. Unity creates them for each asset, in order to identify the asset in the unity editor.
 If an asset loses its meta file (for example, if you moved or renamed the asset outside of Unity, without moving/renaming the corresponding .meta file), any reference to that asset will be broken.
 For more information you can read this official unity documentation:
 _URL_
 The Library folder should not be included in version control. Let me do some research, why it is included with this gitignore-file.
 According to the syntax of the file, the path "Library/" should be ignored.
 2. Hey there Nahele,
 here comes the solution: SourceTree uses its own gitignore file. The menu "SourceeTree -> Tools -> Options -> Git" shows the git ignore file location it uses.
 You can choose and edit your gitingnore-file from a button in that dialog.
 Here is a picture of that:
 SourceTree set up gitignore file
 However also important to know: git will continue to track any files that are already being tracked in your project.
 So you have to select the /Library/-files and select right mouse button -> stop tracking.
 After doing a commit, they are not tracked in the git-repository anymore.
 2. Thank you Tobi, your tutorial has been a great guide to setup the versioning of my Unity project.
Leave a Reply
Your email address will not be published. Required fields are marked *


text:
Water is a precious and finite resource, and it's important to conserve it. In the Netherlands, where water is plentiful, it's easy to take it for granted. But even small changes can make a big difference in water savings. One such change is to take shorter showers. So how much water does the Netherlands save if everyone takes a minute less in the shower?
Water Savings in the Netherlands
The Netherlands is one of the most water-rich countries in Europe, with an abundance of rivers, canals, and groundwater. But even in the Netherlands, water savings are important. The Dutch government has set a goal of reducing water use by 20 percent by 2030.
If every person in the Netherlands took one minute less in the shower, the savings would be significant. According to the Dutch water authority, the average person uses about 65 liters of water per shower. By reducing shower time by just one minute, the average person would save about 13 liters of water per shower. That's about 780 liters of water per person per year.
Shorter Showers Make a Difference
Multiply that by the 17 million people in the Netherlands and the savings become even more impressive. That's over 13 billion liters of water saved every year. That's enough to fill over 5,000 Olympic-sized swimming pools.
It's not just water savings that can be achieved through shorter showers. Taking quicker showers also saves energy, since the hot water heater doesn't have to run as long. And since people are in the shower for less time, that means they're using less soap and shampoo, which is better for the environment.
Shorter showers can make a real difference in water savings in the Netherlands. Taking one minute less in the shower can save 780 liters of water per person per year. That adds up to over 13 billion liters of water saved each year for the entire country. So next time you take a shower, try to take it one minute shorter and do your part for water conservation.

source: m-a-p/FineFineWeb


VeriDIP: Verifying Ownership of Deep Neural Networks through Privacy Leakage Fingerprints. (arXiv:2310.10656v1 [cs.CR])
Deploying Machine Learning as a Service gives rise to model plagiarism,
leading to copyright infringement. Ownership testing techniques are designed to
identify model fingerprints for verifying plagiarism. However, previous works
often rely on overfitting or robustness features as fingerprints, lacking
theoretical guarantees and exhibiting under-performance on generalized models.
In this paper, we propose a novel ownership testing method called VeriDIP,
which verifies a DNN model's intellectual property. VeriDIP makes two major
contributions. (1) It utilizes membership inference attacks to estimate the
lower bound of privacy leakage, which reflects the fingerprint of a given
model. The privacy leakage fingerprints highlight the unique patterns through
which the models memorize sensitive training datasets. (2) We introduce a novel
approach using less private samples to enhance the performance of ownership
testing.
Extensive experimental results confirm that VeriDIP is effective and
efficient in validating the ownership of deep learning models trained on both
image and tabular datasets. VeriDIP achieves comparable performance to
state-of-the-art methods on image datasets while significantly reducing
computation and communication costs. Enhanced VeriDIP demonstrates superior
verification performance on generalized deep learning models, particularly on
table-trained models. Additionally, VeriDIP exhibits similar effectiveness on
utility-preserving differentially private models compared to non-differentially
private baselines.
Source: _URL_
webmaster
Related post


game / 2020
Preview video
_URL_ (game demo)
_URL_ (Chinese version)
_URL_ (Japanese version)
_URL_ (Korean version)
TO CALL A HORSE A DEER is an experimental video game about language, hand-eye coordination, truth-bending and acts of complicity.
The title of the work is an inversion of "to call a deer a horse", a Chinese idiom that is used to describe the deliberate act of confusing truth with untruth. The idiom originates from a story in the Chinese classical text Shiji (The Records of Grand Historians) in which an ambitious Qin politician tried to identify adversaries and silence dissent by colluding others to confuse a deer with a horse.
This ancient tale resonates with our times in which truth-bending became an everyday political reality and tools of governance. The game, available in multiple languages, is both a mirror and a critique, a training simulator of truth-bending and its resistance.
Game rules
The player competes by answering rounds of "true or false" questions, following the instructions as given in the game.
 - The player will score 1 point by giving the CORRECT answer if he or she is instructed to LIE.
 - The player will score 1 point by giving the INCORRECT answer if he or she is instructed to TELL THE TRUTH.
 - An answer that does not conform to the given instruction will result in a deduction of 1 point.
 - The player can choose not to answer the question. In that case, no point will be added or deducted.
keywords: critical game, hand-eye coordination, truth-bending, complicity, binary game for a binary world


Skip to content
Definition of LMAO
 1. It is an acronym that comes from the English phrase Laughing My Ass Off and its meaning in Spanish is "Me cago de la risa". This expression is used when indicating that something is very funny. For example: I saw a movie and the whole time I was LMAO.
 2. By extension, it is used as a synonym that something is funny or causes laughter regardless of its intensity.
The acronym LMAO comes from the English phrase laughing my ass off, which literally means "breaking my ass." From that perspective, other possible translations would be "I'm shit laughing" or "I'm dying of laughter". This term began to be used on the internet to mean something that is very funny.
This abbreviation is part of internet jargon and is clearly rude. However, the expansion of its use has led to it being used as a synonym for something that is funny without the need to refer to its literal meaning.
 1. A more vulgar derivation of LMAO is the acronym LMFAO which means "laughing until my fucking ass falls off". In this case, it is a direct use of foul vocabulary.
 2. LMFAO was an American electro pop duo that ran from 2006 to 2012. Some of the group's achievements were, for example, making their two albums among the top three dance albums in America.


text:
Currently, the NN logs its edits to each of its edits directories in sequence. This can produce the following bad sequence:
- NN accumulates 100 edits (tx 1-100) in the buffer. Writes and syncs to local drive, then crashes
- Failover occurs. SBN takes over at txid=1, since txid 1 never got writen.
- First NN restarts. It reads up to txid 100 from its local directories. It is now "ahead" of the active NN with inconsistent state.
The solution is to write to the shared edits dir, and sync that, before writing to any local drives.

source: openbmb/Ultra-FineWeb


lookup_extended
Description:
public bool lookup_extended (K lookup_key, out unowned K orig_key, out unowned V value)
Looks up a key in the GenericSet, returning the original key and the associated value and a bool which is true if the key was found.
This is useful if you need to free the memory allocated for the original key, for example before calling remove.
You can actually pass null for lookup_key to test whether the null key exists, provided the hash and equal functions of hash_table are null-safe.
Parameters:
lookup_key
the key to look up
orig_key
return location for the original key
value
return location for the value associated with the key
hash_table
a GenericSet
Returns:
true if the key was found in the GenericSet


text:
Registrations are now open for the workshops held as part of The Porto Sessions program. The entire program will be announced soon. The Porto Sessions have been conceived by Meg Stuart in cooperation with Ana Rocha. The list of tutors includes Anna Nowicka, who will hold her own workshops titled Dreamstates. The team of pedagogues will also comprise such artists Benoît Lachambre, Mark Tompkins and Meg Stuart, among others.
14.09 – 18.09, 16 pm – 20 pm _workshop fee: 90?
Anna Nowicka: Dreamstates
The work will focus on the practice of dreaming aware, and on becoming awake to the ongoing dreaming process that is accompanying our conscious existence, allowing this continuous flow of images to in-form the body, influence its? presence and become the source of actions. We will work on participants? night dreams, opening a dialogue with them and using their structure as a kaleidoscopic map for creativity. Employing the procedure of dream opening and the tool of shifting perspectives, we will discover ways of unfolding the body, expanding it into a multiple, ever flowing entity that playfully shifts between real and imagined, between being and doing, distance and proximity, aware of the continuous flow of impulses, able to choose which one to follow and embody. The aim of the workshop is to combine intuitive ways of creating with conscious choreographic decisions, in order to empower performers to connect with their dreams as legible sources of knowledge and foundations for creativity.
All the workshops will be held at the Rivoli Municipal Theater of Porto.
A discount will be applied in case of registration of more than one workshop:
10% ?in the registration of 2 workshops
20% in the registration of 3 or 4 workshops
For registration and more details: _EMAIL_
Please send a short biographical note along with the inscription.
THE PORTO SESSIONS
Invited artists: Anna Nowicka, Benoît Lachambre, Christian Breuer, Cristina Planas Leit?o, Gaëtan Rusquet, Giulia Paolucci, Hamish MacPherson, Jeroen Peeters, Jozef Wouters, Joana Von Mayer Trindade, Jo?o Costa Espinho, Mark Tompkins, Mariana Tengner Barros, Mor Demer, Michiel VandeVelde, Noha Ramadan, Varinia Canto Villa and Rodrigo Malvar
More information: _URL_
With the support Goethe-Institut Porto, Maus Hábitos, STCP and Metro do Porto
MEZZANINE is a non profit cultural association financed by Governo de Portugal / Secretário de Estado da Cultura / Direcç?o-Geral das Artes
Meg Stuart/Damaged Goods is financed by the Flemish Authorities and Flemish Community Commission


text:
Report No. : GEO Report No. 97
Report Title : Hong Kong Rainfall and Landslides in 1997 (1999), 271 p. plus 2 drgs.
Author : T.W.K. Lam
This Report presents a review of rainfall and landslides in Hong Kong throughout 1997. Rainfall information has been obtained from the Geotechnical Engineering Office (GEO) automatic raingauge system and from the Hong Kong Observatory (HKO). Most of the landslide data have been taken from the records of incidents reported to the GEO in 1997. Supplementary data have been obtained from the GEO's 1997 Landslide Investigation Consultants and other Government Departments.
1997 was the wettest year at the Hong Kong Observatory (HKO) since records began in 1884. Rainfall at the HKO amounted to 3343.0 millimetres, 51% above normal and exceeding the previous record set in 1982. The most intense maximum 24-hour rainfall of 799.0 millimetres was recorded at the Chinese University (CU) on 2 and 3 July. The annual rainfall at the CU amounted to 4391.0 millimetres. The maximum annual rainfall of 4907.0 millimetres was recorded at Tai Mo Shan.
Eight Landslip Warnings were issued in 1997. The rainstorms in 1997 resulted in 543 incidents being reported to the GEO, 491 of which were classified as genuine landslides, and 50 of which were major (i.e. an event with a volume of collapsed mass of 50 m3 or more, or where a fatality has occurred). Two fatalities and nine injuries occurred. The consequences resulting from the landslides included the temporary evacuation of 47 squatter huts, 19 houses and 14 flats, the permanent evacuation of 115 squatter huts, and 120 landslides resulted in the blockage of sections of road, pedestrian pavement and/or access.
Report SPR 7/98 provides more detailed information on the rainfall and landslides associated with the rainstorm of 1-4 July 1997.


How to Disable YouTube History
Explore this Article Disabling YouTube Search History Disabling YouTube Watch History Ask a Question Related Articles References
If you don't like how Google stores your YouTube search and watch history, you can disable it.
1
Disabling YouTube Search History
 1. 1
 Go to the Google My Activity page. Go to myactivity.google.com. If you're not signed in, do so now.
 2. 2
 Click "Activity controls". It's on the left sidebar.
 3. 3
 Scroll down and locate "YouTube Search History". It's right under "Voice & Audio Activity".
 4. 4
 Turn off YouTube Search History. Toggle off the blue switch, right across "YouTube Search History".
 5. 5
 Confirm the change. Click PAUSE to do so.
 6. 6
 Finished. Note that any previous YouTube search history will be kept. You may want to read How to Clear Your YouTube History.
2
Disabling YouTube Watch History
 1. 1
 Go to the Google My Activity page. Go to myactivity.google.com. If you're not signed in, do so now.
 2. 2
 Click "Activity controls". It's on the left sidebar.
 3. 3
 Scroll down and locate "YouTube Watch History". It's right under "YouTube Search History".
 4. 4
 Turn off YouTube Watch History. Toggle off the blue switch, right across "YouTube Watch History".
 5. 5
 Confirm the change. Click PAUSE to do so.
 6. 6
 Finished. Note that any previous YouTube search history will be kept. You may want to read How to Clear Your YouTube History.
Community Q&A
Ask a Question
200 characters left
Include your email address to get a message when this question is answered.
Submit
 Warnings
 - You may see fewer and less precise video recommendations.[1]
 Article Info
 wikiHow is a "wiki," similar to Wikipedia, which means that many of our articles are co-written by multiple authors. To create this article, volunteer authors worked to edit and improve it over time. This article has also been viewed 11,191 times.
 Categories: YouTube History
 Thanks to all authors for creating a page that has been read 11,191 times.
 Is this article up to date?


Dbstl persistence
Direct database get
Change persistence
Object life time and persistence
The following sections provide information on how to achieve persistence using dbstl.
Direct database get
Each container has a begin() method which produces an iterator. These begin methods take a boolean parameter, directdb_get, which controls the caching behavior of the iterator. The default value of this parameter is true.
If directdb_get is true, then the persistent object is fetched anew from the database each time the iterator is dereferenced as a pointer by use of the star-operator (*iterator) or by use of the arrow-operator (iterator->member). If directdb_get is false, then the first dereferencing of the iterator fetches the object from the database, but later dereferences can return cached data.
With directdb_get set to true, if you call:
then the assignment to datamember1 will be lost, because the second dereferencing of the iterator would cause the cached copy of the object to be overwritten by the object's persistent data from the database.
You also can use the arrow operator like this:
This works exactly the same way as iterator::operator*. For this reason, the same caching rules apply to arrow operators as they do for star operators.
One way to avoid this problem is to create a reference to the object, and use it to access the object:
container::value_type &ref = *iterator;
...// more member function calls and datamember assignments
The above code will not lose the newly assigned value of ref.datamember1 in the way that the previous example did.
In order to avoid these complications, you can assign to the object referenced by an iterator with another object of the same type like this:
container::value_type obj2;
obj2.datamember1 = new-value1;
obj2.datamember2 = new-value2;
*itr = obj2;
This code snippet causes the new values in obj2 to be stored into the underlying database.
If you have two iterators going through the same container like this:
for (iterator1 = v.begin(), iterator2 = v.begin();
 iterator1!= v.end();
 ++iterator1, ++iterator2) {
 *iterator1 = new_value;
then the printed value will depend on the value of directdb_get with which the iterator had been created. If directdb_get is false, then the original, persistent value is printed; otherwise the newly assigned value is returned from the cache when iterator2 is dereferenced. This happens because each iterator has its own cached copy of the persistent object, and the dereferencing of iterator2 refreshes iterator2's copy from the database, retrieving the value stored by the assignment to *iterator1.
Alternatively, you can set directdb_get to false and call iterator2->refresh() immediately before the dereferencing of iterator2, so that iterator2's cached value is refreshed.
If directdb_get is false, a few of the tests in dbstl's test kit will fail. This is because the above contrived case appears in several of C++ STL tests. Consequently, the default value of the directdb_get parameter in the container::begin() methods is true. If your use cases avoid such bizarre usage of iterators, you can set it to false, which makes the iterator read operation faster.
Change persistence
If you modify the object to which an iterator refers by using one of the following:
(*iterator).data_member = new_value
then you should call iterator->_DB_STL_StoreElement() to store the change. Otherwise the change is lost after the iterator moves on to other elements.
If you are storing a sequence, and you modified some part of it, you should also call iterator->_DB_STL_StoreElement() before moving the iterator.
And in both cases, if directdb_get is true (this is the default value), you should call _DB_STL_StoreElement() after the change and before the next iterator movement OR the next dereferencing of the iterator by the star or arrow operators (iterator::operator* or iterator::operator->). Otherwise, you will lose the change.
If you update the element by assigning to a dereferenced iterator like this:
*iterator = new_element;
then you never have to call _DB_STL_StoreElement() because the change is stored in the database automatically.
Object life time and persistence
Dbstl is an interface to Berkeley DB, so it is used to store data persistently. This is really a different purpose from that of regular C++ STL. This difference in their goals has implications on expected object lifetime: In standard STL, when you store an object A of type ID into C++ stl vector V using V.push_back(A), if a proper copy constructor is provided in A's class type, then the copy of A (call it B) and everything in B, such as another object C pointed to by B's data member B.c_ptr, will be stored in V and will live as long as B is still in V and V is alive. B will be destroyed when V is destroyed or B is erased from V.
This is not true for dbstl, which will copy A's data and store it in the underlying database. The copy is by default a shallow copy, but users can register their object marshalling and unmarshalling functions using the DbstlElemTraits class template. So if A is passed to a db_vector container, dv, by using dv.push_back(A), then dbstl copies A's data using the registered functions, and stores data into the underlying database. Consequently, A will be valid, even if the container is destroyed, because it is stored into the database.
If the copy is simply a shallow copy, and A is later destroyed, then the pointer stored in the database will become invalid. The next time we use the retrieved object, we will be using an invalid pointer, which probably will result in errors. To avoid this, store the referred object C rather than the pointer member A.c_ptr itself, by registering the right marshalling/unmarshalling function with DbstlElemTraits.
For example, consider the following example class declaration:
class ID
 string Name;
 int Score;
Here, the class ID has a data member Name, which refers to a memory address of the actual characters in the string. If we simply shallow copy an object, id, of class ID to store it, then the stored data, idd, is invalid when id is destroyed. This is because idd and id refer to a common memory address which is the base address of the memory space storing all characters in the string, and this memory space is released when id is destroyed. So idd will be referring to an invalid address. The next time we retrieve idd and use it, there will probably be memory corruption.
The way to store id is to write a marshal/unmarshal function pair like this:
void copy_id(void *dest, const ID&elem)
 memcpy(dest, &elem.Score, sizeof(elem.Score));
 char *p = ((char *)dest) + sizeof(elem.Score);
 strcpy(p, elem.Name.c_str());
void restore_id(ID& dest, const void *srcdata)
 memcpy(&dest.Score, srcdata, sizeof(dest.Score));
 const char *p = ((char *)srcdata) + sizeof(dest.Score);
 dest.Name = p;
size_t size_id(const ID& elem)
 return sizeof(elem.Score) + elem.Name.size() +
 1;// store the '\0' char.
Then register the above functions before storing any instance of ID:
This way, the actual data of instances of ID are stored, and so the data will persist even if the container itself is destroyed.


If we consider the AdS-Schwarzschild manifold, defined by $M^n=[s_0,\infty)\times\mathbb{S}^{n-1}$ equipped with the Riemannian metric $$\overline{g}=\frac{1}{1-ms^{2-n}+s^2}ds\otimes ds+s^2g_{\mathbb{S}^{n-1}},$$ where $m>0$ is a fixed positive number, $s_0$ is the unique positive solution of the equation $1+s_0^2-ms_0^{2-n}=0$ and $g_{\mathbb{S}^{n-1}}$ is the standard round metric on the unit sphere $\mathbb{S}^{n-1}$. The scalar curvature of $M$ is equals $-n(n-1)$.
My question is:
There exists some spin structure on $M$?
Since the Hyperbolic space is a particular case when $m\to0$ and the hyperbolic space admits a spin structure, is natural asking for a spin structure on the AdSSchwarschild space?
The existence or nonexistence of a spin structure on a smooth manifold $M$ is a topological question, in that it does not depend on the choice of a Riemannian metric on $M$. Spin structures are obstructed by the second Stiefel-Whitney class $w_2\in H^2(M;\mathbb Z/2)$, in that $M$ admits a spin structure iff $w_2(TM) = 0$.
Since $M^2 = [s_0,\infty)\times S^{n-1}$, its tangent bundle decomposes as
$$TM^3 \cong \pi_1^*T([s_0,\infty)) \oplus \pi_2^*TS^{n-1},$$
where $\pi_1,\pi_2$ are the projections from $M^n$ onto its two components. Since $[s_0,\infty)$ is contractible, its tangent bundle is trivial. The tangent bundle to $S^{n-1}$ is stably trivial, since embedding $S^{n-1}\hookrightarrow\mathbb R^n$ realizes $\underline{\mathbb R}^n \cong T\mathbb R^n|_{S^{n-1}} = TS^n\oplus\nu$, where $\nu$ is the normal bundle to the embedding, and $\nu$ is a trivial bundle.
Since $w_2$ is a stable characteristic class, it vanishes on stably trivial vector bundles, so $w_2(M^n) = 0$, and therefore $M^n$ admits a spin structure.
 - $\begingroup$ Your answer was very useful! I wondering now about the existence of killing imaginary spinors in the AdS Schwarschild manifold, there exists some one? $\endgroup$ – Geom math Dec 22 '17 at 18:55
 - $\begingroup$ Unfortunately, I don't know what an imaginary spinor is. $\endgroup$ – Arun Debray Dec 22 '17 at 18:57
Your Answer


text:
Podcasts & RSS Feeds
Most Active Stories
Thu September 1, 2011
Kids make music about their lives & struggles
A program based out of Flint teaches kids the fundamentals of songwriting and music production. But the songs kids write are not your typical bubble-gum pop. The program is a professional music studio that travels to schools and community centers in Flint, Grand Rapids, and Kalamazoo. It's called Studio on the Go.
Kids use computers and keyboards to make music and beats and then they write lyrics about their lives, and finally record the songs. Kids are given a topic to write about, like "education," "making it" and "family." The idea is to steer away from stuff kids hear on the radio and to instead write their own songs. The content must be positive and no swearing is allowed.
The results are songs about their personal struggles along with heartfelt tributes. Some kids sing about what it's like to have someone they love die or to have a family member in jail. Instructors say the kids learn a combination of technical skills along with life skills.

source: HuggingFaceFW/fineweb-edu


text:
Non-linear junction detectors
The non-linear junction detector, or an NLJD, is a device that illuminates a small region of space with high-frequency RF energy. Any "non linear junction" in the vicinity—for example, and particularly, the p-n junction—will receive this energy, and because of the asymmetric response of the junction to an electric field, it will rectify it, re-emitting some of it on multiples of the illumination frequency.
The detector has a sensitive receiver tuned to these harmonics, as well as appropriate processing and displays to make their presence known to the user of the device. Because the basis of almost all semiconductor electronics is the p-n junction, an NLJD is correspondingly capable of detecting almost any unshielded electronic device containing semiconductors, whether the electronics are actively powered or not.


text:
Keys are unique identifiers that you provide as a parameter when you perform any operation on data. The following applies to keys:
Keys are strings, typically enclosed by quotes for any given SDK.
No spaces are allowed in a key.
Separators and identifiers are allowed, such as underscore: 'person_93847'.
A key must be unique within a bucket; if you attempt to
store the same key in a bucket, it will either overwrite the
value or return an error in the case of
Maximum key size is 250 bytes. Couchbase Server stores all keys in RAM and does not remove these keys to free up space in RAM. Take this into consideration when you select keys and key length for your application.
This last point about key size is important if you consider the size of keys stored for tens or hundreds of millions of records. One hundred million keys which are 70 Bytes each plus meta data at 150 Bytes each will require about 45 GB of RAM for document meta data.


text:
Kinetics of pathogen destruction during storage of dewatered biosolids
The kinetics of pathogen destruction were determined during storage of digested and dewatered wastewater treatment biosolids to obtain relationships between temperature and duration of biosolids storage. Biosolids, seeded with Salmonella typhimurium, Yersinia enterocolitica, Campylobacter jejuni, bacteriophage f2, poliovirus, and Ascaris suum eggs were incubated at 5°, 22°, 38°, and 49.5°C, under both aerobic and anaerobic conditions for up to 62 days. Destruction of pathogens in stored biosolids occurred at all temperatures examined; however, rates increased with increasing temperature. There was no significant difference between the destruction of pathogens under aerobic or anaerobic conditions at all temperatures studied. At 50°C, the decay rate of S. typhimurium, Y. enterocolitica, bacteriophage f2, poliovirus, and A. suum eggs was estimated to be 1.13, 1.10, 1.54, 0.81, and 0.21 log10 reductions per day, respectively.


genus Loligo
Also found in: Thesaurus.
ThesaurusAntonymsRelated WordsSynonymsLegend:
Noun1.genus Loligo - squids
mollusk genus - a genus of mollusks
Decapoda, order Decapoda - squids and cuttlefishes
loligo - somewhat flattened cylindrical squid
References in periodicals archive ?
The number of chromatic components described for the genus Loligo is large and complex.
Finally, and perhaps most i mportant, squid of the genus Loligo (and other genera that contain "giant" axons) inhabit a wide variety of thermal environments.


text:
pwĕr'tə rē'kō, pôrt'ə, pwĕr'tō
the smallest and easternmost of the Greater Antilles in the Caribbean
a self-governing commonwealth associated with the United States occupying the island of Puerto Rico
(Lexicography) Abbreviation of Provençal (the language).
Find another word for puerto-rico. In this page you can discover 3 synonyms, antonyms, idiomatic expressions, and related words for puerto-rico, like: porto rico, Commonwealth of Puerto Rico and pr.


tcscan(1) scan multimedia streams from medium and print information on the
SYNOPSIS
tcscan
-i name [ -x codec ] [ -e r[,b[,c]] ] [ -b bitrate ] [ -w num ] [ -f rate ] [ -d verbosity ] [ -v ]
COPYRIGHT
tcscan is Copyright (C) by Thomas Oestreich.
DESCRIPTION
tcscan is part of and usually called by transcode.
However, it can also be used independently.
tcscan reads source (from stdin if not explicitely defined) and prints on the standard output.
OPTIONS
-i name
Specify input source. If ommited, stdin is assumed.
You can specify a file, directory, device, mountpoint or host address as input source. tcscan usually handles the different types correctly.
-d level
With this option you can specify a bitmask to enable different levels of verbosity (if supported). You can combine several levels by adding the corresponding values:
QUIET 0
INFO 1
DEBUG 2
STATS 4
WATCH 8
FLIST 16
VIDCORE 32
SYNC 64
COUNTER 128
PRIVATE 256
-v
Print version information and exit.
NOTES
tcscan is a front end for scaning various source types and is used in transcode's import modules. tcscan does a complete scan of the source to gather information.
EXAMPLES
The command tcscan -i foo.avi prints header information about the AVI-file itself and lists details on the video and audio content, e.g., keyframes, chunk structure.
The command cat audio.pcm | tcscan -x pcm -e 48000,16,2 simply determines the playtime lenghth of the raw audio stream.
The command tcscan -x mp3 -i input.mp3 will print the number of chunks in the MP3 file and the average bitrate.
AUTHORS
tcscan was written by Thomas Oestreich
<[email protected]> with contributions from many others. See AUTHORS for details.


_USER_{Gross2006high, abstract = {With a focus on the role of cultural clustering and income distribution, this paper investigates whether standard determinants influence international migration of workers to France with the same intensity across different skill levels and with or without free mobility. We find that low-skill migrants respond to most push and pull migration factors. High-skill migrants however respond only to financial incentives and cultural clustering does not matter. Migration policy is effective at controlling flows of low-skill migrants but free mobility has no impact on high-skill flows. Hence, France must rely on growing earnings and skillpremium to attract high-skill workers from high income countries.}, address = {M\"{u}nchen}, author = {Dominique M. Gross and Nicolas Schmitt}, copyright = {_URL_ keywords = {F22; J24; O24; 330}, language = {eng}, number = {1797}, publisher = {CESifo}, title = {Why do lowand high-skill workers migrate?: flow evidence from France}, type = {CESifo working paper}, url = {_URL_ year = {2006} }


text:
In times of grief, organizing a funeral can pose a significant challenge, both emotionally and financially. If you happen to be in California, specifically Los Angeles, you might ask, "how much is a funeral in California?" In this comprehensive guide, we will delve into the intricacies of expenses associated with funerals in the Golden State, with a special emphasis on Los Angeles.
How Much is a Funeral in California
Funeral Expenses in California
Funeral costs exhibit notable variations based on multiple factors, including location, service type, and individual preferences. On average, a funeral in California typically ranges from $7,000 to $12,000 or more. This comprehensive figure encompasses crucial elements like the acquisition of a casket, embalming services, and professional fees. Although, there are services like direct cremation that can be much less expensive, and take much less planning.
Geographic Considerations: California's elevated cost of living often reflects in funeral expenses. Major urban centers like Los Angeles often feature higher funeral costs compared to rural areas.
Funeral Services in Los Angeles
As one of the largest and most densely populated cities in the United States, Los Angeles has its unique considerations when it comes to funeral expenses.
- Funeral Homes in Los Angeles: The city boasts a range of funeral homes, each offering diverse services and pricing structures. Some funeral homes cater to specific cultural or religious needs, which can influence costs. For instance, regions with a higher concentration of cultural communities may have distinct pricing models.
- Cemetery Expenses: The choice of cemetery can substantially affect overall funeral costs. In Los Angeles, numerous cemeteries have their own pricing structures. Some may offer scenic views, while others carry historical significance. These factors can impact the overall cost.
Los Angeles Funeral Costs
When looking into funeral expenses in Los Angeles, you may come across related topics that provide detailed information:
- Los Angeles Funeral Homes: Different funeral homes in Los Angeles offer varying services and pricing. Thorough research and comparisons are essential to find an option that aligns with your needs and budget.
- Los Angeles Cremation Services: Cremation, an alternative to traditional burial, may involve different cost dynamics. Los Angeles has numerous cremation providers; researching their pricing can aid informed decision-making.
- Los Angeles Burial Expenses: If you opt for burial, understanding the costs associated with acquiring a cemetery plot in Los Angeles is crucial. Costs can vary depending on location and cemetery.
Factors Impacting Funeral Costs in California
- Individual choices play a significant role in funeral expenses. Whether you opt for a traditional burial, cremation, or an eco-conscious burial can affect overall costs. Additionally, decisions regarding the choice of casket, funeral service arrangements, and memorial items can contribute to expenses.
Location and Cemetery Selection:
- As mentioned earlier, location and the choice of cemetery can significantly influence costs. In Los Angeles, renowned cemeteries may command higher prices due to their prestige and limited availability.
- Funeral expenses encompass various fees, including professional services, transportation, and permits. Comprehensive inquiry about potential expenses during funeral planning is essential to prevent unexpected financial burdens.
Funeral Planning in Los Angeles & California
To alleviate the financial burden of a funeral, consider pre-planning or pre-paying for arrangements. Many Los Angeles funeral homes (including Clarity) offer pre-planning options that allow you to lock in today's prices, ensuring your preferences are met when the time comes.
Cultural and Personalized Funerals in California
Los Angeles is known for its cultural diversity, and this diversity often leads to personalized and unique funeral ceremonies that celebrate an individual's life in various ways. Different communities may have distinct funeral customs and preferences, which can influence the type of service and associated costs.
- Cultural Traditions: Various cultural communities in Los Angeles have their own ways of honoring and remembering the deceased. These traditions can range from music and dance performances to specific rituals or ceremonies. It's important to work with a funeral home that can accommodate these cultural preferences.
- Personalized Farewells: Many families in Los Angeles choose to create highly personalized and meaningful funeral services. These might include storytelling sessions, memorial videos, or the display of cherished items that reflect the person's life and passions. While these personalized services can be touching, they may involve additional costs, so it's crucial to plan accordingly.
- Green Burial Options: In recent years, there has been a growing interest in eco-friendly or green burial options. Los Angeles offers several green burial grounds where individuals can be interred in a more environmentally conscious manner. These options often come with lower costs compared to traditional burials, and they can be embraced by people from all walks of life.
In California, including Los Angeles, funeral costs can exhibit considerable diversity. Understanding the factors influencing these costs, such as location, personal choices, and cemetery selection, is vital when making decisions during a challenging time. Thorough research and proactive planning can help you navigate the process more smoothly and ensure a dignified farewell for you or your loved ones without undue financial strain.
Remember that while this guide offers valuable insights, consulting with local Los Angeles funeral homes is advisable to obtain precise pricing tailored to your specific requirements. The wide array of funeral customs and personalization options in Los Angeles underscores the importance of celebrating an individual's life in a meaningful and respectful manner, reflective of their unique journey.
Additional Insights on Planning and Coping
Planning a funeral involves not only financial considerations but also emotional ones. Coping with grief and honoring your loved one's memory are essential aspects of the process.
- Grief Support: In addition to funeral planning, it's important to seek grief support. Many communities in Los Angeles offer grief counseling and support groups to help individuals and families navigate the challenging emotional journey.
- Memorialization: Creating lasting memorials, such as engraved plaques or commemorative trees, can provide solace and a sense of connection with the departed. These memorialization options can be discussed with funeral directors to add a personal touch to the farewell.
- Legal and Administrative Assistance: Funeral arrangements often involve paperwork and legal formalities. Consider seeking legal and administrative guidance to ensure that all necessary documents are filed correctly and promptly.
- Financial Planning: Beyond the immediate funeral expenses, it's important to evaluate the broader financial implications of a loved one's passing. Consult with financial advisors to understand how the loss might affect your financial situation and to make necessary adjustments.
- Emotional Well-Being: The grieving process is unique to each individual, and it's essential to prioritize your emotional well-being. Los Angeles offers a wealth of resources, including grief therapists, support hotlines, and mindfulness practices, to help you cope with loss.
- Celebration of Life: Consider organizing a separate celebration of life event in addition to the funeral. This gathering can be more informal and focused on celebrating the person's life, sharing memories, and finding solace in the support of friends and family.
- Legacy Preservation: Explore ways to preserve the legacy of your loved one. This could involve digitizing old photos, recording their life story, or creating a memorial website or social media page where friends and family can share memories and stories.
- Continuing Bonds: It's common to feel a continued connection with the departed long after their passing. Allow yourself the space to maintain a continuing bond through rituals, conversations, and remembrance activities.
- Estate Planning: If your loved one had specific wishes or assets that need to be managed, consult with estate planning professionals to ensure a smooth transition and distribution of assets.
- Support Networks: Lean on your support network. Friends and family can be a tremendous source of comfort during these trying times. Sharing your feelings and memories can help process grief together.
In conclusion, planning a funeral in California, particularly in Los Angeles, is a multifaceted endeavor that encompasses financial considerations, cultural nuances, and emotional aspects. While this comprehensive guide provides valuable information on funeral costs and related topics, it's crucial to remember that the grieving process is a deeply personal journey. Seek support from various resources available in Los Angeles, from grief counseling to legal assistance, to help you navigate this challenging period.
Ultimately, the goal is to honor your loved one's memory in a way that feels meaningful and respectful, acknowledging their unique life journey and the impact they had on those they left behind. As you embark on this journey, remember that you are not alone, and there are numerous resources and compassionate individuals in Los Angeles who are ready to provide guidance and support every step of the way.


Animal Transport
What is an Animal Transport?
Animal transport is the commercial transport of live animals using motor vehicles. This also applies to the movement of animals in Germany as defined by the German Animal Welfare Transport Ordinance. The animal transportation involves the movement of livestock.
The conditions under which the animals may be transported are legally regulated in the European Regulation on the Protection of Animals during Transport. This regulation has been in force for all member states since January 2007. In Germany, the European requirements are implemented by means of a national animal welfare transport ordinance.
cows getting off a truck
The transportation of animals is the act of moving animals by transport.
© 2020 All rights reserved
Sign up here!
January 19th
Sign up here!
November 26th


text:
Side detection systems are a crucial part of modern cars. Without them, we would all be driving around in bumperless minivans. But as we all know, these systems can sometimes go wrong. In this blog post, we will show you how to fix a side detection system on a GMC Acadia. We will provide step-by-step instructions and pictures so that you can have your car back on the road in no time.
What is a Side Detection System?
Side detection systems are used to help a camera track objects as they move around a vehicle. This technology uses sensors mounted on the sides of the vehicle to detect when an object is near the side of the car. If an object is detected, the system can then use that information to help control the camera.
How Does the GMC Acadia's Side Detection System Work?
The GMC Acadia's Side Detection System uses three cameras to detect the side of the vehicle in front of it. If the system detects a wall or object, it will automatically steer around it. The system can also be disabled entirely if you prefer.
What Can be Done to Fix the Side Detection System on a GMC Acadia?
There are a few things that can be done to fix the side detection system on a GMC Acadia. The first step is to determine if the fault is with the camera or sensor. If it's the camera, then it can be replaced. If the fault is with the sensor, then it will likely need to be replaced. Other fixes that may work include adjusting the threshold values and calibrating the system.


From CIPedia
Revision as of 20:38, 22 January 2017 by Eluiijf (talk | contribs)
Jump to navigation Jump to search
European Definitions
CBRNE is an acronym which includes beside CBRN, explosive substances or events. [1]
National Definitions
Chemical, Biological, Radiological, Nuclear and Explosives (CBRNE): The expansion of the term CBRN to incorporate certain high-yield explosives (E) into the broader term CBRNE signifies the new reality of this threat due to the weaponization of hazardous and dangerous goods. [2]
Lyhenteet CBRNE ja CBRN tulevat englanninkielisistä sanoista chemical (kemiallinen), biological (biologinen), radiological (säteily), nuclear (ydin-) ja explosive (räjähtävä, räjähde). [3]
United Kingdom
A term used to describe Chemical, Biological, Radiological, Nuclear and Explosive materials. CBRNE terrorism is the actual or threatened dispersal of CBRN material (either on their own or in combination with each other or with explosives), with deliberate criminal, malicious or murderous intent. [4]
See also


Juno's experimental peer-to-peer launch
Starknet
February 23, 2024
Introduction
As Starknet transitions from relying on the feeder gateway to access the blockchain state to a decentralized network structure, anyone running a node on Starknet will soon become a crucial part of its network!
This shift demands a detailed P2P (peer-to-peer) specification, a feature the Juno team is diving into alongside the teams behind the Pathfinder and Papyrus full nodes. In this blog post, we'll discuss why a peer-to-peer network is important, and provide a step-by-step guide for setting up your own Juno node to join the P2P network.
The P2P feature is currently under active development and being tested on smaller Juno networks, so syncing with non-Juno nodes may be unstable!
How Does a Peer-to-Peer Network Work?
When a new Juno node joins the network, it begins with no blocks, effectively starting at a block height of zero. To update itself, the node first connects with another node in the network, chosen at random, to find out the current highest block number, which could be, for example, 3312. With this information, the new node embarks on syncing blocks from its peers, doing so in chunks of 100 blocks at a time.
This process continues in 100-block increments until the node catches up to the most recent block. For instance, if the node has synced up to block 3300 and the network's current block height is 3345, the node will then sync the last 45 blocks to be fully up-to-date. This method ensures the new node gradually and efficiently synchronizes with the rest of the network, block by block until it reaches the current block height.
Every time the node begins syncing a new set of blocks, it triggers a process that unfolds across five distinct stages. These stages are designed to systematically integrate the blocks into the node's blockchain, ensuring that each block is properly verified and that the node's ledger remains accurate and in sync with the network.
An overview of these five stages is given below.
Juno P2P Sync Process
Stage 1 — Establishing Peer Connections and Requesting Block Components
Stage 1 is where the peer connections are established, and the requests for block information are made.
To aid synchronization, the P2P spec requires the block to be split into five different components so that each piece can be requested from a different peer. The five different block components are block bodies, block headers, transactions, receipts, and events. For each block component, Juno will open a connection stream with a peer, and request that specific block part for the entire range of blocks being queried (e.g., up to 100). For example, the Juno node will ask peer "A" for the events data for the first 100 blocks, and at the same time, ask peer "B" for the block header data for those first 100 blocks, etc.
Each process of requesting a specific block part is shown as a distinct process in Stage 1 of the diagram. These requests are made concurrently, and a given process like the query "Spec Events" can move onto stage 2 before the other block parts have been received from the peers.
Stage 2 — Populating the Intermediate Block Type with Available Block Components
When the Juno node receives the specific block part from a peer, it moves on to Stage 2, which involves populating an intermediate (Spec) Block type with whatever information is currently available. For example, if the event information has been fully received from a peer, then this event data will be used to partially populate the Block type. All other fields like block headers will remain empty at this stage, which is why a separate stage is needed to tie all the block parts together.
Stage 3 — Assembling Block Components
When all the different block parts have been received from peers, they will be pieced together at stage 3. The Juno node will then be ready to convert the entire (Spec) Block into a Juno Block type and perform some sanity checks, which is what stage 4 is responsible for.
Stage 4 — Creating the Juno Block
At stage 4, the Juno node will have all the information required to create the entire Juno block. The block information provided from the process at stage 3 is used to create a Juno block. The Juno database expects the block to be in the correct format to commit it to the database, which is what this process is responsible for. This stage also performs a set of sanity checks on the block, such as verifying the block and transaction hashes.
Note that at this stage in the process, Juno may only have a subset of the 100 blocks it queried, and importantly, it may not have the blocks in the correct order. For example, imagine the node has block 42, but no other block. In this scenario, Juno will be unable to store block 42 because the previous blocks don't exist in its blockchain. Since the blocks need to be stored in order, Juno requires a process to feed blocks into its database in the correct order, which is the responsibility of stage 5.
Stage 5 — Ordering and Committing Blocks to the Blockchain
When the next block is ready to be stored in the blockchain (e.g., we have stored blocks 0–41, and now want to store block 42), this process will take the next block when it's available (e.g., block 42), and perform sanity checks at the blockchain level. For example, block hashes need to be correctly linked together. If these sanity checks are passed, then the stage 5 process passes the latest block onto another process to commit the block to the blockchain. Following this, stage 5 will wait for the next block (e.g., block 43), and repeat the same process.
This process will continue until the Juno node has fully caught up to the head of the blockchain. At any point in this process, the node can serve whatever data it has to its peers.
How Do Nodes Trust Each Other?
For those closely following, a valid question arises: How can new nodes trust the blocks received from their peers? The integrity of the blocks is ensured through a cryptographic verification process. The block data is used to generate a blockhash, and similarly, a hash is also produced from the state-diff. These two commitments are then used to generate a signature for the block.
To validate this signature — and by extension, the block data and state-diff — a node compares it against a public key it receives from the feeder-gateway (a query is made to the feeder-gateway when the node starts). This mechanism ensures that if any block data or state-diff were altered by a malicious node, the resulting commitments and therefore the signatures would differ from the expected values. This cryptographic process effectively safeguards against tampering, ensuring that nodes can confidently trust the blocks they receive and maintain the network's integrity.
Running a Juno P2P Node: A Step-by-Step Guide
Prerequisites and Requirements
We highly recommend using Docker to run a Juno node, which is our only software requirement. Regarding hardware, the minimum requirements are:
 - 2+ CPU Cores
 - 4Gb of RAM
 - 50Gb+ SSD
 - 10 Mbps/sec
Installing Docker
Go to the Docker webpage and select the relevant download option for your system. For example, selecting "Download for Windows" will download an executable file to install Docker on your system, and the same applies for Mac. For Linux-based operating systems, you will also need to select the relevant platform (e.g., Ubuntu). Then, simply open the relevant executable and follow the install instructions.
To verify that Docker has been downloaded, open the Command Prompt / Terminal and run:
docker --version
You should see the version of Docker installed on your system. Note: you may need to open up Docker Desktop on Windows before running this command.
Downloading Juno
With all prerequisites in place, you're now ready to download, install, and run a Juno node. To do this we will first need to download one of Juno's images from Docker hub using the docker pull command. For this tutorial, we will pull the image with Tag 0.10.0
1. Open the command prompt / terminal.
2. Pull the Docker image by executing:
docker pull nethermind/juno:v0.10.0
3. Verify the image has been pulled by executing:
docker images
You should see something like this:
REPOSITORY TAG IMAGE ID CREATED SIZE
nethermind/juno v0.10.0 98bc124d8dbc 13 hours ago 215MB
Running Juno
Now that we have the Docker image downloaded, all we need to do to run a Juno node in p2p mode is execute the following command if using Windows:
docker run -d --name juno_p2p ^
-p 7777:7777 ^
-p 6060:6060 ^
-v %USERPROFILE%/juno_sepolia_p2p:/var/lib/juno ^
nethermind/juno:v0.10.0 ^
--db-path "/var/lib/juno" ^
--network "sepolia" ^
--log-level "debug" ^
--http ^
--http-host "0.0.0.0" ^
--http-port "6060" ^
--p2p


text:
selenium 2.4.0, how to check for presence of an alert
I am using the following code to close the alert window :
Alert alert3 = driver.switchTo().alert(); alert3.dismiss();
The alert appears a few seconds after the opening of the main window.
How can I wait and check if alert appears?


Available in OroCRM Available in OroCommerce
Configure Workflow Steps, Transitions, and Attributes in the Back-Office
Each process or action applied to a record is called a workflow transition. On the interface, transitions are usually initiated when a user clicks the corresponding button or icon. There are two types of transitions:
 - Transitions that take a user from one state to another and connect to each step in the workflow.
 - Self-transitions that do not change steps in the workflow.
Every workflow has the Start transition that launches the workflow.
A transition can be defined as soon as there is at least one step besides Start. However, it is often simpler to define all workflow steps and then all the transitions between them.
Attributes are characteristics of the record. For example, a ZIP code and a street name are attributes of an address. In the course of each transition, you can change some attributes of the processed record.
A workflow may have configuration parameters (also known as variables). For example, the Alternative Checkout workflow includes reviewing of an order by an authorized person. This is usually required only for orders exceeding a certain amount, so the workflow's configuration parameter enables you to set an order subtotal limit that triggers the alternative checkout.
If enabled (see the section below), the workflow widget displays the process steps defined in workflow configuration on the record view page. Multiple workflow widgets can be displayed for one record at the same time.


text:
B1910 MARK 2 NAT TESTER
This is same as BI900 Nottingham Asphalt Tester (NAT) but includes hardware and software to carry out additional tests.
B1900 Nottingham Asphalt Tester (NAT)
The Nottingham Asphalt Tester (NAT) provides a simple, user-friendly means of measuring and assessing the mechanical properties of asphaltic materials.
The NAT was developed at the University of Nottingham. The Pavement Research Group at Nottingham has an international reputation as one of the world's leading centers specializing in work on the properties of highway materials, and the NAT has been developed by researchers with considerable experience of testing asphaltic mixes.
The Nottingham Asphalt Tester can be used for quality control, mix design, and product specification, failure investigation, pavement evaluation, the assessment of new materials and durability checks.
The basic B1900 NAT can perform the following tests:
Additional hardware and software enables users to carry out the following MARK 2 NAT tests:
- Measurement of elastic stiffness modulus using repeated load indirect tension.
- Measurement of instantaneous and total resilient modulus (ASTM test D4123).
- Assessment of resistance to fatigue cracking.
- Assessment of resistance to permanent deformation with the uniaxial creep test.
- Assessment of resistance to permanent deformation with the repeated load axial test.
- Advanced resilient modulus test for the measurement of instantaneous and total Poisson's ratio and modulus as defined in ASTM test D4123.
- Dynamic creep with both axial and radial strain measurement. Full data capture and storage at predetermined intervals.
The Nottingham Asphalt Tester (NAT) consists of a stainless steel load frame fitted with a pneumatic actuator and load transducer and capable of applying vertical loads in the range 0 to 4.3kN; an indirect tensile subframe, alignment jig LVDT yokes, LVDT deformation transducers and software necessary to carry out Indirect Tensile Stiffness Modulus (ITSM) tests on both 100mm and 150mm diameter cores or molded cylindrical specimens; a 150mm or 100mm diameter (customer to specify) PVC specimen for routine checking of (ITSM) transducer accuracy; hardened, ground and polished platens, LVDT deformation transducers, LVDT mounts and software necessary to carry out both Static Creep and Repeated Load Axial tests on both 100mm and 150mm diameter specimens; an electronic interface unit with power supplies and signal conditioning for a load transducer, 2 thermocouples, 2 LVDTs and capability of expanding for up to 3 additional transducers; a temperature controlled cabinet capable of controlling temperature in the range of -10° to 60°C.
Software provides a user friendly means of carrying out testing. A 486 or compatible PC is suggested. About 100 psi supply pressure at 6 cfm is needed. A detailed color brochure is available for the asking.


Sygic GPS Navigation for iOS (version 18.x)
Free app with option to subscribe to Premium+
Route did not calculate due to an error message
Route calculation failed: Download missing map error
 - This error usually occurs when you are creating a route from one country to another, and the app is missing crucial maps of countries that need to be passed through along the way (for example, if you create a route from Spain to Germany, but are missing the map of France, or from California to Washington without the maps of Oregon or Idaho).
 - To avoid this error, simply make sure that all maps necessary for the route are downloaded. Maps can be added via Menu → Maps, or by tapping on the download prompt which is displayed directly on the map over countries/states not yet downloaded.
 Please note that at the moment, it is not possible to create routes between certain countries if they are from 2 different map providers (this affects mostly the maps that were recently added in the app, most countries across the World are not affected). We are currently looking into a technical solution that should make it possible in the near future. Until then, the only way to navigate to or from affected countries is to create routes to and from the borders.
Route Calculation Has Failed, Roads Limit Reached error
This particular error message appears when the app's routing algorithm reaches it's limit. To further improve it, we would like to ask you to submit any route that you tried to set up in the app in a ticket form from this article. Usually, there are a few reasons why this error appears:
 - The route is too long due to a specific setting. The route would be normally calculated, but because of a specific routing setting, for example highway avoidance, the route possibilities would be exceeded before the route would finish calculating. Please check your settings in Menu → Settings → Route planning tab.
 - The starting point or destination is set in a no-drive zone. In this case, the application would try to calculate the route which cannot be completed and will go on with the calculation until the route processing limit is reached. Try adjusting the destination or starting points slightly.
Route Calculation Has Failed, Other error
Didn't you find a solution or answer?
Submit a request
Back to the section overview
Why did Sygic GPS Navigation consume a lot of cellular data
Map data is outdated
Are you happy with Sygic GPS Navigation?
Share it please
Submit a request


Skip to content
Sample XQuery to rebalance MarkLogic forests using Corb
XQuery Shell
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
README.md
crb.sh
rebalance.xqy
uris-first-forest.xqy
uris.xqy
README.md
CoRB Scripts for Forest Rebalancing
Sometimes a MarkLogic Server database will have several forests. If the forests are present from the time when the database was created, they will each have approximately the same number of forests. But if the administrator adds more forests later on, the newer forests will tend to have fewer documents. In cases like this, we can rebalance the forests.
But before using this tool, consider that rebalancing is generally slower than clearing the database and reloading. That is because every document must be updated, and updates are more expensive than inserts. So rebalancing the forests may not be the best way to solve the problem. If you have the luxury of clearing the database and reloading everything, do it.
Finally, note that following this procedure may result in forests containing many deleted fragments. To recover disk space, you may wish to force some forests to merge.
Setup
This project contains a shell script and a pair of XQuery modules, intended for use with CoRB. CoRB requires a configured XDBC server, and the root of that XCC server must contain the corb-rebalancer modules:
uris.xqy
rebalance.xqy
If CoRB crashes with SVC-FILOPN then the root is likely to be the problem. Check your settings carefully.
When run, crb.sh will download jar files for CoRB and XCC. If you are not connected to the Internet, then you must place both jar files in the corb-rebalance directory.
The MarkLogic XCC client API is generally backward-compatible, so this jar file should also work with earlier versions of the server.
Usage
./crb.sh XCC [ THREADS [ URIS [ VMARGS ] ] ]
Normally only the first two arguments will be used. An XCC connection string is of the form:
xcc://user:password@host:port/database-name
where the database-name is optional. The corresponding XDBC application server must be listening on the correct port, and the corb-rebalancer XQuery must be in its root directory.
The default value of THREADS is 2. To speed up processing, try setting it to twice the number of CPU threads. For example, a Xeon E5645 CPU has 12 threads. So for a pair of those CPUs you might try 48 threads.
Troubleshooting
As mentioned above, SVC-FILOPN generally means that CoRB cannot find the uris.xqy and rebalance.xqy modules. Make sure they are in the root directory as specified for the XDBC server, and that the modules database is set to (filesystem). Make sure that the MarkLogic Server process can read the files.
The error CRB-EMPTYSOURCES means that the forests are already well-balanced. Note that these scripts only look at document counts, not fragment counts. That is because sub-fragments of a document must all live in the same forest. Also, this tool does not balance on-disk size. For most workloads, document count is the more appropriate metric.
If CoRB reports "nothing to process" then the forests are already well-balanced. If you disagree, check to make sure that CoRB is using the right database, either in the XCC connection string or in the XDBC server configuration.
License
Copyright (c) 2011-2012 Michael Blakeley. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
_URL_
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
The use of the Apache License does not indicate that this project is affiliated with the Apache Software Foundation.
Something went wrong with that request. Please try again.


text:
Unanswered: Checking text box text against original
Wondering if anyone can help me with this?
I have a text box on a products form that allows a user to edit the current product details, one of these details is the total number of products received to date.
If the user edits this text box then they can set this value equal to less than the original value. I want to make sure that whatever number they enter, it is greater than the original value that was in the text box.
If it isn't i want to be able to display a message box telling them this.


applied."""
 q = self.KIND.all()
 for prop, value in self.FILTERS:
 q.filter("%s =" % prop, value)
 return q
 def run(self, batch_size=100):
 """Executes the map procedure over all matching entities."""
 q = self.get_query()
 entities = q.fetch(batch_size)
 while entities:
 to_put = []
 to_delete = []
 for entity in entities:
 map_updates, map_deletes = self.map(entity)
 if to_put:
 if to_delete:
 q = self.get_query()
 q.filter("__key__ >", entities[-1].key())
 entities = q.fetch(batch_size)
Mapper is supposed to be just an abstract class that allows you to iterate over every entity of a given kind, be it to extract their data, or to modify them and store the updated entities back to the datastore.
Run with it!
Now, start your appengine interactive console:
$python appengine_console.py
That should start the interactive console. In it create a subclass of Model:
from utils import Mapper
# import your model class here
class MyModelDeleter(Mapper):
 KIND =
 def map(self, entity):
 return ([], [entity])
And, finally, run it (from you interactive console): mapper = MyModelDeleter() mapper.run()
That's it!
share|improve this answer
You can do it using the web interface. Login into your account, navigate with links on the left hand side. In Data Store management you have options to modify and delete data. Use respective options.
share|improve this answer
I've created an add-in panel that can be used with your deployed App Engine apps. It lists the kinds that are present in the datastore in a dropdown, and you can click a button to schedule "tasks" that delete all entities of a specific kind or simply everything. You can download it here:
share|improve this answer
For Python, 1.3.8 includes an experimental admin built-in for this. They say: "enable the following builtin in your app.yaml file:"
- datastore_admin: on
"Datastore delete is currently available only with the Python runtime. Java applications, however, can still take advantage of this feature by creating a non-default Python application version that enables Datastore Admin in the app.yaml. Native support for Java will be included in an upcoming release."
share|improve this answer
that's the currently easiest solution to bulk delete a specific entity – systempuntoout Jan 18 '11 at 22:59
Adding the configuration in app.yaml threw an error. Instead we can enable it from the 'Applications Setting' Page in 'Administration' section. There's a button to enable it – Sundeep Dec 29 '12 at 23:12
Open "Datastore Admin" for your application and enable Admin. Then all of your entities will be listed with check boxes. You can simply select the unwanted entites and delete them.
share|improve this answer
This is what you're looking for...
Running a keys-only query is much faster than a full fetch, and your quota will take a smaller hit because keys-only queries are considered small ops.
Here's a link to an answer from Nick Johnson describing it further.
Below is an end-to-end REST API solution to truncating a table...
I setup a REST API to handle database transactions where routes are directly mapped through to the proper model/action. This can be called by entering the right url (example.com/inventory/truncate) and logging in.
Here's the route:
Route('/inventory/truncate', DataHandler, defaults={'_model':'Inventory', '_action':'truncate'})
Here's the handler:
class DataHandler(webapp2.RequestHandler):
 def delete(self, **defaults):
 model = defaults.get('_model')
 action = defaults.get('_action')
 module = __import__('api.models', fromlist=[model])
 model_instance = getattr(module, model)()
 result = getattr(model_instance, action)()
It starts by loading the model dynamically (ie Inventory found under api.models), then calls the correct method (Inventory.truncate()) as specified in the action parameter.
The _USER_ is a decorator/wrapper that provides authentication for sensitive operations (ie POST/DELETE). There's also an oAuth decorator available if you're concerned about security.
Finally, the action is called:
def truncate(self):
It looks like magic but it's actually very straightforward. The best part is, delete() can be re-used to handle deleting one-or-many results by adding another action to the model.
share|improve this answer
If you have a lot of data, using the web interface could be time consuming. The App Engine Launcher utility lets you delete everything in one go with the 'Clear datastore on launch' checkbox. This utility is now available for both Windows and Mac (Python framework).
share|improve this answer
For the development server, instead of running the server through the google app engine launcher, you can run it from the terminal like:
dev_appserver.py --port=[portnumber] --clear_datastore=yes [nameofapplication]
ex: my application "reader" runs on port 15080. After modify the code and restart the server, I just run "dev_appserver.py --port=15080 --clear_datastore=yes reader".
It's good for me.
share|improve this answer
Adding answer about recent developments.
Google recently added datastore admin feature. You can backup, delete or copy your entities to another app using this console.
share|improve this answer
PHP variation:
import com.google.appengine.api.datastore.Query;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
define('DATASTORE_SERVICE', DatastoreServiceFactory::getDatastoreService());
function get_all($kind) {
 $query = new Query($kind);
 $prepared = DATASTORE_SERVICE->prepare($query);
 return $prepared->asIterable();
function delete_all($kind, $amount = 0) {
 if ($entities = get_all($kind)) {
 $r = $t = 0;
 $delete = array();
 foreach ($entities as $entity) {
 if ($r < 500) {
 $delete[] = $entity->getKey();
 } else {
 $delete = array();
 $r = -1;
 $r++; $t++;
 if ($amount && $amount < $t) break;
 if ($delete) {
Yes it will take time and 30 sec. is a limit. I'm thinking to put an ajax app sample to automate beyond 30 sec.
share|improve this answer
WTF? None of that is necessary. – Evan Plaice Jun 1 '12 at 20:18
I often don't want to delete all the data store so I pull a clean copy of /war/WEB-INF/local_db.bin out source control. It may just be me but it seems even with the Dev Mode stopped I have to physically remove the file before pulling it. This is on Windows using the subversion plugin for Eclipse.
share|improve this answer
I was so frustrated about existing solutions for deleting all data in the live datastore that I created a small GAE app that can delete quite some amount of data within its 30 seconds.
How to install etc: _URL_
share|improve this answer
for amodel in db.Model.__subclasses__():
 print amodel
 m = amodel()
 mq = m.all()
 print mq.count()
 for mw in mq:
 #~ print len(dela)
share|improve this answer
If you're using ndb, the method that worked for me for clearing the datastore:
share|improve this answer
I don't think this will work. Appengine complains about Sorry, unexpected error: The kind "__Stat_Kind__" is reserved. This seems like appengine has some internal statistics entity that can be exposed by this method (possible bug on their end?) – disappearedng Jun 11 '14 at 7:55
For any datastore that's on app engine, rather than local, you can use the new Datastore API. Here's a primer for how to get started.
I wrote a script that deletes all non-built in entities. The API is changing pretty rapidly, so for reference, I cloned it at commit 990ab5c7f2063e8147bcc56ee222836fd3d6e15b
from gcloud import datastore
from gcloud.datastore import SCOPE
from gcloud.datastore.connection import Connection
from gcloud.datastore import query
from oauth2client import client
def get_connection():
 client_email = '_EMAIL_'
 private_key_string = open('/path/to/yourfile.p12', 'rb').read()
 svc_account_credentials = client.SignedJwtAssertionCredentials(
 return Connection(credentials=svc_account_credentials)
def connect_to_dataset(dataset_id):
 connection = get_connection()
if __name__ == "__main__":
 gae_entity_query = query.Query()
 for entity in gae_entity_query.fetch():
 if entity.kind[0]!= '_':
 print entity.kind
share|improve this answer
You can Delete All Datastore by deleting all Kinds One by One. with google appengine dash board. Please follow these Steps.
1- Login to _URL_
2- Click Data Store admin in data section.(Enable data store admin if


ededWarning in a FeathersJS App with Socket.io]]> _URL_ 2023-11-21T14:38:44.000Z Introduction
FeathersJS, a popular framework for real-time applications and REST APIs, is often paired with Socket.io for real-time communication capabilities. However, complex applications might occasionally encounter a MaxListenersExceededWarning in Node.js, indicating a potential EventEmitter memory leak. This warning typically arises when more than the default limit of listeners (10) are added to an event emitter. In this blog post, we'll explore how to effectively resolve this warning in a FeathersJS application using Socket.io.
Understanding the Warning
The warning MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 65 connection listeners added to [Namespace] suggests that more than the default limit of listeners are being used. While this might be a sign of a memory leak, in complex applications like those using Socket.io, it can also be a by-product of legitimate functionality.
Diagnosing the Issue
Before jumping into solutions, it's important to understand whether the excess listeners are due to expected behavior or a memory leak. You can:
 - Use node --trace-warnings ... to pinpoint where the warning is being generated.
 - Review your event listener management to ensure listeners are properly added and removed.
Solution: Increasing the Listener Limit
For scenarios where the high number of listeners is expected, increasing the limit is a straightforward solution. Here's how you can do it in a FeathersJS app with Socket.io:
Step 1: Update Your Socket.io Configuration
Modify your existing Socket.io configuration in your FeathersJS application. Here's an example:
const socketio = require('@feathersjs/socketio');
// ... (other imports and setup)
app.configure(socketio((io) => {
 io.setMaxListeners(100); // Increase the limit to 100
 // io.setMaxListeners(0); // Set the limit to Infinity
}));
Step 2: Understanding the Code
In this snippet, we configure Socket.io within the FeathersJS application and increase the maximum number of event listeners to 100. This adjustment is made using the setMaxListeners method on the Socket.io instance. This method is part of Node.js's EventEmitter class, which Socket.io inherits from.
Best Practices and Considerations
 - Assess the Need: Only increase the listener limit if necessary. Unnecessarily high limits can mask real memory leak issues.
 - Monitor Application Performance: Keep an eye on your application's performance and memory usage, especially after increasing the listener limit.
 - Understand the Default Limit: The default limit of 10 is a safety measure to prevent memory leaks. Consider carefully before changing it.
Conclusion
Encountering MaxListenersExceededWarning in a FeathersJS application using Socket.io is not uncommon, especially in complex setups. By understanding the root cause and responsibly increasing the listener limit, you can effectively manage this warning. Always remember to monitor your application for any signs of memory leaks and adjust your configurations as needed.
]]>
ShinChven _EMAIL_ _URL_
<![CDATA[在 Azure 上部署 GPT-4-Turbo 和 DALL-E-3 模型]]> _URL_ 2023-11-21T10:20:47.000Z gpt-4-turbo and dalle on Azure
引言
OpenAI 在 2023 年的 DevDay 上宣布了一系列创新的人工智能模型
紧随其后，微软 Azure 云平台在本月加入了对这些先进模型的支持，包括备受瞩目的 GPT-4-Turbo 和 DALL-E-3
这两个模型不仅体现了 AI 技术的最新成果，也为开发者们提供了极大的灵活性和强大的功能。
Azure 节点支持情况
在 Azure 上，可以部署 GPT-4-Turbo 和 DALL-E-3 模型的节点如下所示：
 - GPT-4-Turbo(gpt-4-1106-preview):
 - Australia East
 - Canada East
 - East US 2
 - France Central
 - Norway East
 - South India
 - Sweden Central
 - UK South
 - West US
 - DALL-E-3:
 - Sweden Central
值得一提的是，目前只有 Sweden Central 这个区域可以同时部署这两个最新的模型。
如何在 Azure 上部署
要在 Azure 上部署这两个模型，您可以按照以下步骤操作：
 1. 创建 Azure 账户：如果您还没有 Azure 账户，您需要先创建一个。
 2. 访问 Azure OpenAI 服务：在 Azure 门户中找到 OpenAI 服务，并选择创建一个新的资源。
 3. 选择模型和区域：在创建资源的过程中，您可以选择要部署的模型。确保选择正确的模型（GPT-4-Turbo 或 DALL-E-3）和区域（例如，Sweden Central）。
 4. 配置和部署：按照提示完成配置，然后部署模型。
 5. 创建GPT-4模型，选择1106-preview版本，即为 GPT-4-Turbo
 6. 创建DALL-E模型，选择3.0版本。
 7. 使用 API：部署完成后，您将获得用于与模型交互的 API 密钥。您可以使用这个密钥在您的应用程序中集成 AI 功能。
GPT-4 Turbo 特性及定价
GPT-4 Turbo 是 GPT-4 的进阶版本，为用户提供了更高效的聊天和文本处理能力。它的主要特性包括：
 1. 128K 上下文容量：这种显著的提升使 GPT-4 Turbo 能够处理相当于超过 300 页文本的信息量，极大地扩展了对话和任务处理的范围。
 2. 提高性能和成本效益：与 GPT-4 相比，GPT-4 Turbo 在输入令牌的成本上降低了 3 倍，在输出令牌上降低了 2 倍，为用户提供了更高的性价比。
 3. 改进的指令遵循能力：GPT-4 Turbo 在遵循精确指令的任务上有了显著提升，例如能够生成特定格式（如 XML）的响应。
 4. 支持 JSON 模式：这一新功能确保模型可以以有效的 JSON 格式响应，对于需要在聊天完成 API 之外生成 JSON 的开发者来说尤其有用。
定价
 - 输入代价：每千个令牌的成本为 $0.01。
 - 输出代价：每千个令牌的成本为 $0.03。
DALL-E 3 特性及应用
DALL-E 3，作为 OpenAI 的最新文本到图像（文生图）转换模型，带来了一系列创新特性和广泛的应用场景：
 1. 先进的文本到图像转换：DALL-E 3 能根据文本提示生成各种图像，包括简单的物体和复杂的场景。这种能力使它成为创意表达和图像设计的强大工具。
 2. 高质量图像生成：DALL-E 3 在图像的细节处理和创造性上取得了显著提升，能够以更高的准确性和创造性响应文本提示。
 3. 广泛的商业应用：大型企业如 Snap、Coca-Cola 和 Shutterstock 已经利用 DALL-E 3 为他们的客户和市场活动生成图像和设计，显示了其在商业环境中的实际应用潜力。
 4. 内置审查机制：DALL-E 3 配备了内置的审查机制，帮助开发者保护其应用程序免遭不当使用。这是在 AI 遵循伦理和安全标准方面的重要一步。
 5. 定价：DALL-E 3 提供多种格式和质量选项，价格从每生成的图像 0.04 美元起。
总结
GPT-4-Turbo 和 DALL-E-3 代表了 AI 领域的最新进展，它们为开发者提供了


text:
Marathon reservoir was created by constructing a dam located in Attica at the junction of Charadros and Barnabas streams. Works for the construction of the dam began in 1926 and completed in 1929. The dam has been made by concrete and is entirely covered by Pentelic marble, which gives it uniqueness worldwide.
Due to its proximity to Athens, Marathon reservoir functions as an auxiliary intake source in cases of emergency. Its water supply is done by Iliki and Mornos reservoirs and through Yliki Aqueduct and Mornos – Yliki Aqueduct.
Source: EYDAP SA


Pin: Password:
Advanced Technician Bus and Coach
The minimum entry requirement is a 3 years industrial experience OR a Level 3 S/NVQ (or equivalent qualification) plus at least one year's experience in a relevant industrial environment.
In order to achieve an irtec licence, a technician must successfully complete both the theory (Under Pinning Knowledge) test, and a series of practical assessments at an irtec-approved assessment centre.
The practical assessments in the Advanced Technician licence are as follows:
 1. Engine Electrical Systems
 2. Mechanical Systems
 3. Braking Systems
 4. Chassis Systems
 5. Electrical Systems
Once candidates have passed the Under Pinning Knowledge (UPK) theory test, they have 12 months in which to successfully complete all the practical assessmets.
Click to download the full overview for this route.


text:
Berger Water Based Primer is formulated to resist alkali and moisture present in the new plaster surfaces. It forms a tough and flexible film which prevents passage of moisture from the substrate through the paint film. Before the application of Berger Water Based Primer, it is essential that the surface to be painted should be dry and free from grease and dust.
Berger Water Based Primer has been designed for use on cement render concrete, lime plaster, asbestos cement sheets and all other surfaces which require sealing against moisture or alkaline substrate. It can be applied on interior and exterior surfaces.
Before application of Berger Water Based Primer, it is essential that the surface to be painted should be dry and free from grease and dust.
Berger Water Based Primer can be applied by thinning (1:1) with water by volume for brush application (depend on surface absorbency). For better results apply two coats of Berger Water Based Primer.
For previously painted old surfaces, remove all defective or poorly adhering material by rubbing with a suitable abrasive paper or stiff brush.
To smoothen the surface, Berger Wall Putty can be applied after the application of Berger Water Based Primer.
Berger Water Based Primer dries within an hour and can be recoated after 2-3 hours.
Berger Water Based Primer covers 16-18 meter square per litre per coat (depends upon the absorbency of the surface).
Berger Water Based Primer is available in 3.64 and 14.56 Litre pack size.
The container should be protected from extreme hot and cold temperature. It should be properly closed and kept in an upright position after use. In case of contact with eyes rinse with water and seek medical advice.


skip navigation
Whistle Use
Whistle Use
When should the referee blow the whistle?
Simply put, there are three instances when the whistle should be blown.
 1. To stop play: During active play if the referee blows the whistle it always means STOP, the ball is dead.
 2. To restart play: Always to be blown for the start of the half or quarter, at other times only if you have told the player to wait for you to blow it.
 3. To draw attention to yourself during a dead ball situation.
The whistle should never be blown during active play to indicate the play should continue or that you are playing the advantage.
The whistle is a means of communication, the tone and length of your whistle can convey how you feel about a particular situation. However a single short sharp blow should be all that is needed for most situations.
Much has been written about how long you should blow the whistle to start the game vs. how long you should blow it for a free kick. It is not necessary to worry about this. If a player has just fouled someone I doubt they will deduce from the length of your whistle that you intend for the second half to start right now. Similarly if there are two players standing in the center circle with the ball on the center mark at the start of the second half, it is unlikely that they will think that you have spontaneously decided to award a penalty from the length of your whistle. It is necessary just to blow it so that it can be heard and understood.
If it is obvious that the ball has gone out of play or left the field, there is little point in blowing the whistle. This goes for goals as well. It is only necessary to point to the center circle after an obvious goal has been scored. If there is some question whether the ball is in play or not, or if a goal has been scored or not, then blow the whistle only if the ball is out or the goal has been scored. I find for the younger age groups that it helps to point in the direction of the throw and to also call out the color of the team who should throw it. It saves confusion and keeps the game moving.
For free kicks it is necessary to blow the whistle to award the free kick, but it is not necessary to blow it before the free kick is taken. A quickly taken free kick is part of the game and should not be discouraged. The exception to this is if you tell the attacking team to wait for your whistle so that you have enough time to carry out some other chore you may have, such as showing a red or yellow card, or moving a wall back 10 yards. If the player does not wait, you should show them a yellow card for unsportsmanlike conduct and have the kick retaken. This is probably a bit harsh for the younger age groups.
If you wish to draw the attention of a player, for instance if they are taking a free kick from the wrong location, blow the whistle once as you approach them and give them verbal instructions. If they ignore you blow it again with more force.
The whistle can be used to prevent a situation from arising or continuing, such as when two players face each other down in a threatening way while the ball is not in play. Approach the players and blow the whistle a number of times to indicate that you will tolerate none of that.
At the end of the game or half, point to the center circle and blow the whistle three times. This indicates the game is over. It can be distinguished from your gesture indicating a goal has been scored by the fact you blew the whistle three times.
Constant unnecessary use of the whistle can cause players to tune you out, much the way they tune out their parents. You want the players to realize when they hear a whistle that the ball is dead and they need to look at you to see what your call is.
Again remember blowing the whistle during active play means stop.
If you blow your whistle by accident play must stop, and the correct restart is a drop ball at the location where the ball was when you blew your whistle.
Click on the whistle to hear the samples of three whistle types you are likely to use during a game.
 Stop! – Free kick, ball out of bounds, etc
 Don't even think about it, cut it out (good to prevent trouble before it escalates)
 Game over/Half time


text: Here is a comparison between T.princeps and T.princeps-green(Nova) Leave Color: T.princeps is a bluish palm and nova is a dark green one different from the gray green of T.fortunei. Roots: T.princeps has very deep roots and 1 year old seedling could develop over 20cm long roots whereas nova spreads its ambient roots more evenly . Leaves: T.princeps seedlings of 1 year old have quite slim strap leaves of less than 20cm long,normally 15cm similar to T.fortunei and 0.5-2cm wide as opposed to long and wide leaves of 20-40cm and 3-4cm respectively. Princeps leaves are spreading horizontally whereas those of nova stand almost upright. Growth Rate: T.princeps has normal growth speed but T.nova is by far the fastest growing trachycarpus and puts out split leaflets within 1 year and even hair on the trunk before split leaves occur. Seeds: T.princeps has much smaller seeds than its counterpart. Similarities: First of all, both are from the stone gate area.and plus the other thing we see both have in common is that the new emerging leave segments are very narrow for both young seedlings before becoming wider .


Handling cfqueryparam errors in ColdFusion queries
 is ColdFusion's way of fighting against SQL injection attacks. If, however, you just put in your SQL or MySQL query, people entering the wrong type of input will get a server-side error message, which will make them think your website is messed up instead of realizing they put in the wrong type of input.
If you use , be sure to specify that the type is database if you want to be able to display your own error message.
Here's an example:
SELECT somefield
FROM somedatabase
WHERE someotherfield =
Leave a comment