_addvendorclass(Pool *pool, const char **vendorclass);
Add a new vendor equivalence class to the system. A vendor equivalence class defines if an installed package of one vendor can be replaced by a package coming from a different vendor. The vendorclass argument must be a NULL terminated array of strings. See the section about vendor policies for more information.
void pool_setvendorclasses(Pool *pool, const char **vendorclasses);
Set all allowed vendor equivalences. The vendorclasses argument must be an NULL terminated array consisting of all allowed classes concatenated. Each class itself must be NULL terminated, thus the last class ends with two NULL elements, one to finish the class and one to finish the list of classes.
void pool_set_custom_vendorcheck(Pool *pool, int (*vendorcheck)(Pool *, Solvable *, Solvable *));
Define a custom vendor check mechanism. You can use this if libsolv's internal vendor equivalence class mechanism does not match your needs.
void pool_setloadcallback(Pool *pool, int (*cb)(Pool *, Repodata *, void *), void *loadcbdata);
Define a callback function that gets called when repository metadata needs to be loaded on demand. See the section about on demand loading in the libsolv-repodata manual.
void pool_setnamespacecallback(Pool *pool, Id (*cb)(Pool *, void *, Id, Id), void *nscbdata);
Define a callback function to implement custom namespace support. See the section about namespace dependencies.
The Id of the empty string, it is always Id 1.
Represents a "<" relation.
Represents a "=" relation.
Represents a ">" relation. You can use combinations of REL_GT, REL_EQ, and REL_LT or-ed together to create any relation you like.
A boolean AND operation, the "name" and "evr" parts of the relation can be two sub-dependencies. Packages must match both parts of the dependency.
A boolean OR operation, the "name" and "evr" parts of the relation can be two sub-dependencies. Packages can match any part of the dependency.
Like REL_AND, but packages must match both dependencies simultaneously. See the section about boolean dependencies about more information.
A special namespace relation. See the section about namespace dependencies for more information.
An architecture filter dependency. The "name" part of the relation is a sub-dependency, the "evr" part is the Id of an architecture that the matching packages must have (note that this is an exact match ignoring architecture policies).
An internal file conflict dependency used to represent file conflicts. See the pool_add_fileconflicts_deps() function.
A conditional dependency, the "name" sub-dependency is only considered if the "evr" sub-dependency is fulfilled. See the section about boolean dependencies about more information.
A compat dependency used in Haiku to represent version ranges. The "name" part is the actual version, the "evr" part is the backwards compatibility version.
Id pool_str2id(Pool *pool, const char *str, int create);
Add a string to the pool of unified strings, returning the Id of the string. If create is zero, new strings will not be added to the pool, instead Id 0 is returned.
Id pool_strn2id(Pool *pool, const char *str, unsigned int len, int create);
Same as pool_str2id, but only len characters of the string are used. This can be used to add substrings to the pool.
Id pool_rel2id(Pool *pool, Id name, Id evr, int flags, int create);
Create a relational dependency from to other dependencies, name and evr, and a flag. See the REL_ constants for the supported flags. As with pool_str2id, create defines if new dependencies will get added or Id zero will be returned instead.
Id pool_id2langid(Pool *pool, Id id, const char *lang, int create);
Attach a language suffix to a string Id. This function can be used to create language keyname Ids from keynames, it is functional equivalent to converting the id argument to a string, adding a ":" character and the lang argument to the string and then converting the result back into an Id.
const char *pool_id2str(const Pool *pool, Id id);
Convert an Id back into a string. If the Id is a relational Id, the "name" part will be converted instead.
const char *pool_id2rel(const Pool *pool, Id id);
Return the relation string of a relational Id. Returns an empty string if the passed Id is not a relation.
const char *pool_id2evr(const Pool *pool, Id id);
Return the "evr" part of a relational Id as string. Returns an empty string if the passed Id is not a relation.
const char *pool_dep2str(Pool *pool, Id id);
Convert an Id back into a string. If the passed Id belongs to a relation, a string representing the relation is returned. Note that in that case the string is allocated on the pool's temporary space.
void pool_freeidhashes(Pool *pool);
Free the hashes used to unify strings and relations. You can use this function to save memory if you know that you will no longer create new strings and relations.
Solvable *pool_id2solvable(const Pool *pool, Id p);
Convert a solvable Id into a pointer to the solvable data. Note that the pointer may become invalid if new solvables are created or old solvables deleted, because the array storing all solvables may get reallocated.
const char *pool_solvid2str(Pool *pool, Id p);
Return a string representing the solvable with the Id p. The string will be some canonical representation of the solvable, usually a combination of the name, the version, and the architecture.
const char *pool_solvable2str(Pool *pool, Solvable *s);
Same as pool_solvid2str, but instead of the Id, a pointer to the solvable is passed.
Compare all parts of the version, treat missing parts as empty strings.
A special mode for rpm version string matching. If a version misses a release part, it matches all releases. In that case the special values "-2" and "2" are returned, depending on which of the two versions did not have a release part.
A generic match, missing parts always match.
Only compare the epoch and the version parts, ignore the release part.
int pool_evrcmp(const Pool *pool, Id evr1id, Id evr2id, int mode);
Compare two version Ids, return -1 if the first version is less than the second version, 0 if they are identical, and 1 if the first version is bigger than the second one.
int pool_evrcmp_str(const Pool *pool, const char *evr1, const char *evr2, int mode);
Same as pool_evrcmp(), but uses strings instead of Ids.
int pool_evrmatch(const Pool *pool, Id evrid, const char *epoch, const char *version, const char *release);
Match a version Id against an epoch, a version and a release string. Passing NULL means that the part should match everything.
int pool_match_dep(Pool *pool, Id d1, Id d2);
Returns "1" if the dependency d1 (the provider) is matched by the dependency d2, otherwise "0" is returned. For two dependencies to match, both the "name" parts must match and the version range described by the "evr" parts must overlap.
int pool_match_nevr(Pool *pool, Solvable *s, Id d);
Like pool_match_dep, but the provider is the "self-provides" dependency of the Solvable s, i.e. the dependency "s→name = s→evr".
void pool_createwhatprovides(Pool *pool);
Create an index that maps dependency Ids to sets of packages that provide the dependency.
void pool_freewhatprovides(Pool *pool);
Free the whatprovides index to save memory.
Id pool_whatprovides(Pool *pool, Id d);
Return an offset into the Pool's whatprovidesdata array. The solvables with the Ids stored starting at that offset provide the dependency d. The solvable list is zero terminated.
Id *pool_whatprovides_ptr(Pool *pool, Id d);
Instead of returning the offset, return the pointer to the Ids stored at that offset. Note that this pointer has a very limit validity time, as any call that adds new values to the whatprovidesdata area may reallocate the array.
Id pool_queuetowhatprovides(Pool *pool, Queue *q);
Add the contents of the Queue q to the end of the whatprovidesdata array, returning the offset into the array.
void pool_addfileprovides(Pool *pool);
Some package managers like rpm allow dependencies on files contained in other packages. To allow libsolv to deal with those dependencies in an efficient way, you need to call the addfileprovides method after creating and reading all repositories. This method will scan all dependency for file names and then scan all packages for matching files. If a filename has been matched, it will be added to the provides list of the corresponding package.
void pool_addfileprovides_queue(Pool *pool, Queue *idq, Queue *idqinst);
Same as pool_addfileprovides, but the added Ids are returned in two Queues, idq for all repositories except the one containing the "installed" packages, idqinst for the latter one. This information


text:
National Intercollegiate Band
History of the NIB
One of the most exciting programs Kappa Kappa Psi and Tau Beta Sigma began over half of a century ago has been the National Intercollegiate Band. This ensemble continues to make a significant contribution to the advancement of the collegiate band. Open to all qualified musicians, whether or not they are members of the Fraternity or Sorority, the NIB brings members face-to-baton with some of the most dynamically stimulating composers and respected conductors in America. Dr. F. Lee Bowling, Kappa Kappa Psi National President (Alpha Iota) from _PHONE_, is regarded as the Founder of the National Intercollegiate Band.
The NIB was Bowling's cherished idea and through the years he worked to develop a plan that firmly established the organization as a national service project for the Fraternity and Sorority. Bowling had placed his belief in such an organization on the results of the intercollegiate band which had been held since 1933 by the colleges and universities of the Rocky Mountain area. Each college sent representatives to a chosen place where much time and effort was given to the preparation of a concert. These concerts were sponsored by the chapters of Kappa Kappa Psi. The success of this movement gained headway to some extent before the war and district intercollegiate band concerts were held in the states of Oklahoma and Ohio. He presented such a plan to the Tenth National Convention at Corvallis, Oregon, in August, 1941. It received the endorsement of the convention and a promise was made to have the first National Intercollegiate Band at the next National Convention.
However, due to the Declaration of War and subsequent changes in the nation, the national conventions scheduled for 1943 and 1945 were not held. In fact, ninety percent of all fraternity chapters became inactive and only five chapters were able to remain active throughout this period. After the close of the war Bowling revived his plans and started to build an intercollegiate band which would perform as part of the 14th Biennial Convention in 1947 at Oklahoma A and M College (now Oklahoma State University) in Stillwater, Oklahoma.
The first NIB featured 125 select student musicians from more than 16 colleges. The program from this concert featured eleven musical selections and ten different conductors -- including Bowling, Charles Wiley, Hugh E. McMillen, J. Lee Burke, William A. Scroggs, and Dr. Bohumil Makovsky. The concert opened with John Philip Sousa's famous march, Semper Fidelis, always faithful. In the words of Dr. Bowling:
"The 1947 National Intercollegiate Band had been in the planning stages for many years. Actually, the prototype of this national venture had been well established. This was the Rocky Mountain Intercollegiate Band which rendered the first concert by an intercollegiate band in Macky Auditorium at the University of Colorado in February, 1933. The Rocky Mountain Intercollegiate Band gave five concerts in Colorado in 1933 and represented six colleges -- the University of Colorado, University of Denver, Colorado College, University of Northern Colorado, Colorado State University, and Colorado School of Mines. These Intercollegiate Bands continued as a great musical experience during the spring terms, the last concert being given during Music Week each year in the Denver Auditorium with a KOA broadcast. The University of Utah was also represented at the Music Week concert in 1933. The University of Wyoming became a regular participant in 1934. The first concert following the interruption caused by World War II was at the University of Northern Colorado. During the post-war years District Intercollegiate Bands have played an important role at a few district confabs."
Dr. Bowling's patient, competent, and concerned guidance also secured for the Sorority the necessary action taken by Kappa Kappa Psi to include Tau Beta Sigma in its national programs of service to bands. The National Convention of 1947 was the first convention that established mutual cooperation and shared concerns between the Fraternity and the Sorority. The Kappa Kappa Psi delegates voted to accept Tau Beta Sigma as a sister organization, and extended in perpetuity to the new Sorority the courtesy of sharing in all of its publications and in the NIB program. In 1949, Dr. William Revelli served as guest conductor for the Second National Intercollegiate Band with the final concert being presented at the Red Rocks Amphitheater near Denver before an audience of over 10,000 people. Revelli would again serve as conductor of the NIB in 1971 -- the only conductor in the history of the NIB to serve twice.
At the 1997 National Convention, Kappa Kappa Psi and Tau Beta Sigma celebrated the 50th Anniversary of the National Intercollegiate Band. The 1997 National Intercollegiate Band was conducted by Professor John L. Whitwell, Director of Bands at Michigan State University. Renowned composer John Zdechlik conducted the premiere performance of the 1997 commissioned work, entitled Rondo Jubiloso. Alan Bonner, National Executive Director of Kappa Kappa Psi and Tau Beta Sigma and former Commander and Conductor of the United States Air Force Band, served as guest conductor. Colonel Bonner conducted John Philip Sousa's Semper Fidelis, which was the first selection on the program of the first National Intercollegiate Band in 1947.
The 1999 National Intercollegiate Band Concert was conducted by Dr. David A. Waybright from the University of Florida. The concert featured the world premier of two exciting peices: Unusual Behavior in Ceremonies Involving Drums by Daniel Bukvich, the 1999 Commisioned Composer, and From This Wilderness..., a KKY commissioned work, by Roland Barrett. The later was conducted by the Kappa Kappa Psi National President and Director of Bands at Iowa State University Dr. Michael Golemo. Other selections included The Thunderer, John Philip Sousa; Symphony on Themes of John Philip Sousa, Mvt. II, Ira Hearshen; Pineapple Poll Suite from the Ballet, Mackerras-Duthoit, arranged by Arthur Sullivan; Blue Shades, Frank Ticheli; and Chester Overture for Band, William Schuman.
The following is a list of the professionals that have
joined in making the National Intercollegiate Band the
successful program that it has become over the years:
Roger Fenn, Conductor, Director of Bands, University of Tulsa;
Hugh E. McMillen, Conductor, Director of Bands, University of Colorado;
Leonard Haugh, Conductor, Director of Bands, University of Oklahoma.
Dr. William D. Revelli, Conductor, Director of Bands, University of Michigan.
Dr. Thor Johnson, Conductor, Cincinnati Symphony Orchestra.
Dr. A. Austin Harding, Conductor, Director of Bands, University of Illinois.
Dr. Frederick Fennell, Conductor, Eastman Wind Ensemble.
Lt Col William F. Santelmann, Conductor, United States Marine Corps Band.
Paul Creston, Composer-Conductor, White Plains, NY;
Dr. Manley R. Whitcomb, Conductor, Director of Bands, Florida State University.
Dr. Richard Franko Goldman, Conductor, The Goldman Band of New York City.
Cmdr Charles Brendler, Conductor, United States Navy Band.
Vaclav Nehlybel, Composer-Conductor, New York City.
Keith Wilson, Conductor, Director of Bands, Yale University;
Siguard Rascher, Guest Artist, Clinician.
Norman Dello Joio, Composer-Conductor, New York City;
Dr. Leonard Smith, Guest Artist, Conductor-Soloist, Detroit Concert Band;
Mr. T. N. Retif, Guest Artist, Choral Faculty, Tarrant County Junior College.
Dr. W. Francis McBeth, Composer-Conductor, Arkadelphia, AR;
Dr. William D. Revelli, Conductor, Director of Bands, University of Michigan [retired];
Dr. John D. Mohler, Guest Artist, Associate Professor of Clarinet, University of Michigan.
Col Arnald Gabriel, Conductor, United States Air Force Band;
Raymond Crisara, Guest Artist.
Dr. Martin Mailman, Composer-Conductor, University of North Texas;
William C. Moffit, Conductor, Professor of Instrumental Music, University of Houston.
Carmen Dragon, Conductor, Glendale Symphony, Glendale, CA.
Dr. Donald E. McGinnis, Conductor, Director of Bands, Ohio State University [retired].
Dr. Gary T. Garner, Conductor, Director of Bands, West Texas A & M University;
Dr. Terry Milligan, Conductor, Faculty, University of Cincinnati.
Dr. Donald Hunsberger, Conductor, Professor of Conducting and Ensembles, Eastman School of Music;
James Sudduth, Conductor, Director of Bands, Texas Tech University.
Dr. William P. Foster, Conductor, Director of Bands, Florida A & M University;
Robert E. Foster, Conductor, Director of Bands, University of Kansas.
Dr. Harry Begian, Conductor, Director of Bands, University of Illinois [retired];
John Wakefield, Conductor, Director of Bands, University of Maryland.
John Paynter, Conductor, Director of Bands, Northwestern University;
Joseph Missal, Conductor, Director of Bands, Oklahoma State University.
Ray E. Cramer, Conductor, Director of Bands, Indiana University.
Paula Crider, Conductor, Assistant Director of Bands, University

source: HuggingFaceFW/fineweb-edu


text:
How to maintenance the fiber laser marking machine equipment and what is the safe operate
Maintenance the fiber laser marking machine.to maintenance laser equipment and the safe operation .please follow the below:
Under normal working conditions, the fiber laser marking machine shall be subject to periodic routine maintenance and designated personnel for supervision and implementation
Safe operation requirements
1.he operators need to wear anti-laser eyes before they can operate the laser marking machine marking
2.In the laser marking processing , can not use anything to contact the beam, especially the human body parts
4.Strictly forbidden to use hands or other objects to touch the lens .don't use the damp cloth to scrub the machines .
Avoid to use the phone during the process of marking.
5.The use of pacemaker personnel do not close to the equipment, laser marking machine work will produce a magnetic field, affecting the pacemaker to work
6.During the normal operation of the laser source , no part or item shall be added to the marking machine.
Do not use the marking system in a state when the seal cover is opened.

source: m-a-p/FineFineWeb


How Does Teams Know When You Are Away?
How do you add status to a team?
To set your status message in Teams:Go to your profile pic at the top of Teams and select Set status message to view your options.Type the message that you want to show other people in the box.
Choose when you want the message to stop displaying.Select Done and you're all set..
How long until Microsoft teams shows away?
FYI— if you've been idle for 10 minutes or more, Teams will automatically change your status from Available to Away.
Why does teams keep showing me as away?
any activity. keyboard or mouse activity will set teams to show you as available until there is lack of input for 5 continuous minutes and it will show you as away to everyone even if you set a manual status yourself. Just open a small paperclip and insert it beside the INSERT key in your keyboard.
Can Microsoft teams track your activity?
You can also view Teams activity through reports that are available from the Microsoft 365 admin center. These reports are part of the Microsoft 365 reports in the Microsoft 365 admin center and provide information about user activity and device usage. … Under Select a report, click Microsoft Teams.
How do I stop teams from showing away?
While Teams will automatically change your status when you're busy or away, you can also manually set it.Click your profile picture in the upper right.Click your current status. A status menu appears, with several statuses to choose from.Select a new status.
How do you always be available on a team?
To explicitly set it yourself, go to your profile at the top of Teams, and select one from the list. You can also update your status from the command box. Type /away, /busy, /dnd, /brb, or /available to set your status as Away, Busy, Do not disturb, Be right back, or Available.
How do I change my teams timeout?
To save time, you can alternatively use the command bar on Microsoft Teams to change your status. Enter "/available", "/away", "/dnd" or "/busy" into the command bar and your status will change.
How do you set focusing status on a team?
Focus Time To modify your settings in this regard, click your picture near the upper, right corner of the Teams window and then click Settings. Then click Privacy followed by Manage priority access to open the window shown in Figure 1.
How do teams stay green?
You can force presence by setting it to green. If you do that, it will stay green until you reset or lock computer / machine sleep or reset after 24 hours. That is why there is a reset status option at all.
Does Microsoft teams automatically change status?
Note that Teams will automatically set your status from Available to Away when the Teams app is in the background. … If you're in a meeting or call, Teams will automatically change your status to In a meeting or In a call (Busy) when not set to Do not disturb.
How do I turn off out of office in Microsoft teams?
Click the gear button. Choose Mail> Automatic processing> Automatic replies. Now, tick the option that says Don't send automatic replies. If the issue persists, then remove it and check if it works.


text:
Trustchain and Unlocking System:
Trustchain and unalterable records
Wimi Armoured uses a Trustchain for automatic key exchange and each employee action is recorded in an unalterable log.
The encryption system is ultra-fast and invisible to your users.
Data is encrypted from your devices using your private key and the Trustchain BEFORE being sent to our servers. We can not (or anyone else) decipher them.
Unique identification key
Every user has their own keys, which are linked to their encrypted identities (devices). There is no master key.
The unlocking service allows users to openly access their encrypted data on all their devices.
Open-source encryption library
Wimi Armoured is based on an open-source encryption library and Elliptic Curve Cryptography.
Encryption and decoding of data
Wimi Armoured is based on the separation principles of data processing.
The information is unreadable by third parties
Data is decrypted locally on users' hardware device and is inaccessible to all other users and unreadable on the Wimi Armoured servers.
The sharing of data between your users is secured
Data sharing between users triggers the exchange of their key confidential information, thanks to the trust chain: an inviolable log of cryptographic data and a distribution system of keys linked to identities.
Protection of devices
The local cryptographic information is encrypted with the Wimi Armoured user token. The latter is distributed on the Wimi Armoured site with the aid of a two-factor identification system.
The Functioning of Wimi Armoured
Wimi Armoured uses tried and tested technology
Is the data hosted on Wimi Armoured?
Wimi Armoured stores your previously encrypted data on your device. The management of your encrypted data does not require any specific action on your part, Wimi Armoured looks after everything! The public keys needed to access your data are automatically transferred via Wimi Armored servers, in an encrypted form. Wimi Armored can not access keys or data.
A unique electronic certificate
An electronic certificate (public key) can be considered as a digital identity card. It is used mainly to authenticate an actual or legal entity, but also to encrypt exchanges. It is signed by a trustworthy third-party who demonstrates the link between actual identity and digital (virtual) entity.
Wimi Armoured secures the transfer of your data
What happens if Wimi Armoured is hacked?
In the case that our servers are hacked, the hackers would not have access to the public keys or to the encrypted data. The keys and the data are therefore unusable. This separation of responsibilities between two parties (Wimi Armoured stocking the data and encrypted keys, your users keeping the private keys) makes data leakage impossible.
Wimi Armoured is based on numerous secure technologies
The Trustchain and unlocking system are coded in Go, assisted by a PostgreSQL and deployed via Kubernetes.
The Wimi Armoured procedures are based on Cryptobox and Secretbox of libsodium:
Cryptobox is used for the asymmetric encryption of data keys
Secretbox is used for the encryption of data
When using Elliptic Curve Cryptography (ECC), Wimi Armoured manages the smallest keys in order to increase the speed of data transmission, without any impact to security.
The original cryptographies used are:
– Ed25519 for signatures
– X25519 for asymmetric encryption
– XChaCha20-Poly1305 for symmetrical encryption


text:
This document consists of the detection and verification of a failure in the area of sea water pump of a Yanmar 6HAL2-DTN Auxiliary Engine no1 with 439800 running hours. Trend line was drawn using the sea water pump pressures from the engine sea trial record.
The sea water pump condition is based on the pressure readings taken during the engine operation. The data obtained from the engine analysis was processed, analyzed and compiled by a qualified professional analyst, resulting in the following recommendation:
Sea water pump condition has to be checked.
2.1 THEORETICAL REFRENCES:
Low pressure of the sea water pump indicates a problem of excess clearance or damage on the impeller running surfaces.
2.2 VIBRATIONS SHOWN
Pressure measurements acquired can be shown as follow:
The sea water pump pressure is much lower than the pressure from the sea trials. As a conclusion of this analysis, it was recommended to check the sea water pump condition.
3 SHIP ENGINEERS CHECKS
The engine has been shut down then the sea water pump was disassembled to access the pump impeller. The clearance on the impeller was measured and was found to be substantial. For this type of sea water pump clearance on the running surface of the impeller should be between 0,20[mm] and 0,50 [mm]. The pump impeller has been replaced with a new one. Pump bearings and mechanical seals were also replaced.
After the pump reassembly was made the engine was started with the overhauled sea water pump and new measurements were taken the results can be shown as follow:
It is clearly shown that the sea water pump pressure is in the sea trials limit.
It can be concluded that the diagnosis obtained from the measurements and the data analysis was correct.


text:
Scrup Mobile Ratings
Scrup mobile rates smartphones using 6 core metrics that are found on all phones. The ratings is used as a guide to determine how it would be to use the smartphone from a technological performance standpoint. Our rankings are valid at time of review. Technology changes so our rating values will change over time.
Processor - This is the chip that determines the processing power. The better the processor the faster it is to perform tasks and run apps. Multicore processors help with multitasking.
Scrup Mobile rates the processor out of a maximum of 2 and only looks simply at the number of cores.
Single Core = .5 star
Dual Core = 1 stars
Quad Core = 1.5 stars
Hexa Core = 1.75 stars
Octa Core = 2 stars
Other things to consider is the clock speed and manufacturer of the CPU. Some designs are more efficient so use less power with equal performance to its competitors.
Resolution - Refers to the number of distinct pixels in each dimension that can be displayed. The higher the resolution the more detail can be seen. Higher resolution displays make images and graphics more crisp and sharper but require more processing power.
Scrup Mobile rates the processor out of a maximum of 2 and only looks simply at the number of megapixels the display outputs. Megapixels is calculated as height multiplied by the width.
Less .7 megapixel = .5 star
Less than 1.1 megapixel = 1 star
Less than 2.1 megapixel = 1.5 stars
More than 2.1 megapixel = 2 stars
When looking at resoultion you also need to consider the actual resolution is the actual display size. Smaller screens don't require as much resolution as a bigger screen. A FullHD screen on a 4inch display will be more crisp versus a 6 inch screen smartphone.
Memory - There are 2 types of memory on a phone. The first type is the RAM and refers to how much storage it can cache for applications. The more memory the more programs you can cache. This allows for quick switching between apps. If a phone uses up all the available memory then it will need to unload an application before it can start a new application. The second type of memory refers to storage and refers to how many files can be stored on the device. Most android phones have the option to add external storage.
Scrup Mobile only considers the RAM a smartphone has and not the actual storage space it has.
Less than 1 GB RAM = .5 star
Less than 1.5 GB RAM = 1 star
Less than 2.5 GB RAM = 1.5 star
More than 2.5 GB RAM = 2 star
On an android phone, RAM is very important as it is fixed to the phone and cannot be upgraded. External storage can be purchased in the form of Micro SD cards that can be purchased quite cheaply on Ebay.
Battery - The battery determines how long you can use the smartphone between recharges. Smartphones with larger screens and resolutions use more power than smaller screens with lower resolutions. Generally speaking the larger the phone the bigger the battery it can accommodate. Some manufacturers use higher quality and higher capacity batteries while others use cheapest battery they can get away with.
Scrup Mobile strictly looks at the capacity of the battery to determine its rating.
Less than 2000 mAh = .5 star
Less than 2500 mAh = 1 star
Less than 3000 mAh = 1.5 stars
More than 3000 mAh = 2 stars
On android phones you can always purchase additional batteries to carry as a backup or have a portable USB power supply.
Camera - The smartphone has replaced the compact camera, so a good camera is high on the list of must haves on these devices. Smartphones normally have 2 cameras. The front camera is for taking selfies and also for video conferencing. The back camera has a higher resolution sensor and can equal the image quality of compact cameras from the last 2 years.
Scrup Mobile looks at the total megapixels of the 2 camera sensors combined to come up with a rating.
Combined megapixel less than 5 = .5 star
Combined megapixel less than 10 = 1 star
Combined megapixel more than 10 = 1.5 star
Combined megapixel more than 15 = 2 star
Rotational Camera 180+ Degrees and more than 10 megapixels = 2 star
Megapixels is just one part of the image quality equation with many other aspects that should be taken into consideration if pictures is the main use of the smartphone. Other things to consider include the lens attached, the speed of the lens (aperture), the speed of autofocus and the flash power and reach.
Price - This is probably the most important metric that determines if someone will purchase the smartphone. Scrup mobile refers to the phone's outright purchase price without any subsidized mobile phone plans when determining the rating.
Cost more than $400 USD = .5 star
Cost more than $ 200 USD = 1 star
Cost less than $200 USD = 1.5 star
Cost less than $100 USD = 2 star
Smartphones will generally not get cheaper than around 60 USD. Technology is always improving so for the same amount of cash you can get a better specced phone in the future.
The scores of the 6 metrics will be combined to give a final percentage score for the smartphone. Technology and prices always change so the score is really only valid for the time of review.
Other things that could be considered are:
These involve a more in depth review (that are provided on top tech sites already) and is really subject to personal preference.


Rank – Use a rank for an incentive
To use a rank within an incentive:
 1. Create a Levels incentive, then choose Rank as the award.
 2. In the form used to create the incentive, click on the Choose a badge button in the Badge (Award) section.
 3. Click on the rank you want.
A rank can only be used with Levels incentives.


Evaluating the importance of metamorphism in the foundering of continental crust
Timothy Chapman*, Geoffrey L. Clarke, Sandra Piazolo, Nathan R. Daczko
*Corresponding author for this work
Research output: Contribution to journalArticlepeer-review
10 Citations (Scopus)
8 Downloads (Pure)
The metamorphic conditions and mechanisms required to induce foundering in deep arc crust are assessed using an example of representative lower crust in SW New Zealand. Composite plutons of Cretaceous monzodiorite and gabbro were emplaced at ~1.2 and 1.8 GPa are parts of the Western Fiordland Orthogneiss (WFO); examples of the plutons are tectonically juxtaposed along a structure that excised ~25 km of crust. The 1.8 GPa Breaksea Orthogneiss includes suitably dense minor components (e.g. eclogite) capable of foundering at peak conditions. As the eclogite facies boundary has a positive dP/dT, cooling from supra-solidus conditions (T > 950 C) at high-P should be accompanied by omphacite and garnet growth. However, a high monzodioritic proportion and inefficient metamorphism in the Breaksea Orthogneiss resulted in its positive buoyancy and preservation. Metamorphic inefficiency and compositional relationships in the 1.2 GPa Malaspina Pluton meant it was never likely to have developed densities sufficiently high to founder. These relationships suggest that the deep arc crust must have primarily involved significant igneous accumulation of garnet-clinopyroxene (in proportions >75%). Crustal dismemberment with or without the development of extensional shear zones is proposed to have induced foundering of excised cumulate material at P > 1.2 GPa.
Original languageEnglish
Article number13039
Number of pages12
JournalScientific Reports
Issue number1
Publication statusPublished - 12 Oct 2017
Bibliographical note
Fingerprint Dive into the research topics of 'Evaluating the importance of metamorphism in the foundering of continental crust'. Together they form a unique fingerprint.
Cite this


text: Known as the Night Watchman's plant. This sacred plant's common name is Guayusa. Its pronounced "Wa-Yu- Sa" . Its latin name is Ilex Guayusa, a relative to Yerba Mate and Yaupon Holly. It's a species of tree native to the amazon rainforest found in Ecuador, Northeastern Peru and parts of Columbia. Guayusa is known to be used by Shamans as a sacred plant medicine for dreaming and journey work During Ayahuasca ceremonies , to improve focus and bring clarity to the visions the Shamans may receive and it aids in remembering all the details like lucid dreaming. Guayusa has been found to contain caffeine, theobromine (commonly found in chocolate), L-theanine and theophylline (also found in green tea). It contains nearly 50% more antioxidants than that of green tea, namely polyphenols, flavonoids and saponins. The caffeine content is on average around 90 mg per 8 oz cup of tea. More caffeine than tea but less than coffee.


text:
The struggling South African economy has created considerable hardship, with low salary increases coupled with greater calls on disposable income.
And this has resulted in a perfect storm driving people to commit fraud, says Arlene Leggat, a director of the South African Payroll Association (SAPA).
"People make unwise decisions when they are under sufficient pressure," she states, adding that companies can help to combat high levels of payroll fraud by encouraging their payroll administrators to become members of a professional association.
"Payroll administrators manage large amounts of money. It therefore makes sense to professionalise this industry from a number of viewpoints, not the least of which is the prevention of fraud," Leggat puts forward.
She states that if payroll professionals have signed up to a code of ethics, they understand the impact. Acting ethically is a conscious decision, and the more it is done, the more it becomes second nature.
"The other side of the equation is to ensure that the correct controls are in place." Leggat advises companies to collaborate with their external auditors to design the most effective controls. Because they interact with so many organisations, auditors are best placed to advise on fraud patterns, and what controls work best. Given that payroll processes are software-driven, she adds that real-time variation reporting is emerging as a key mitigator of fraud risk.
"Professionalisation, with its combination of an ethical code and ongoing education, and proper controls are the two pillars payroll-fraud detection and mitigation," she concludes. "Fraud generally, and payroll fraud in particular, are real threats, but these basic measures can really help."
Drivers of professional membership
"It's a relatively new concept in South African payroll, but the trend towards professionalisation in other disciplines, such as tax practitioners and directors, is quite marked. The drivers are very similar: to ensure that people have the right skills for the job, that they sign on to a code of ethics and are subject to the professional association's disciplinary procedures."
As a member of SAPA, a payroll administrator undertakes to adhere to its code of ethics, and to undertake structured continuous professional development to ensure his or her skills remain current. Any contravention of the code of ethics would lead to the rescinding of the professional certification.
Globally, payroll fraud is the number-one source of accounting fraud and employee theft, according to the Association of Certified Examiners. It occurs in 27 percent of all businesses, and the average instance lasts on average for 36 months.
Research by PwC shows that South African companies suffer hugely from HR fraud, of which payroll fraud of various kinds is prominent: falsification of entitlement/ employee benefits (36%), false wage claims (39%), ghost employees on the payroll (30%) and misclassification of payroll expenses (16%).


Package bison
A GNU general-purpose parser generator
_URL_
Bison is a general purpose parser generator that converts a grammar
description for an LALR(1) context-free grammar into a C program to
parse that grammar. Bison can be used to develop a wide range of
language parsers, from ones used in simple desk calculators to complex
programming languages. Bison is upwardly compatible with Yacc, so any
correctly written Yacc grammar should work with Bison without any
changes. If you know Yacc, you shouldn't have any trouble using
Bison. You do need to be very proficient in C programming to be able
to use Bison. Bison is only needed on systems that are used for
development.
If your system will be used for C development, you should install
Bison.
Version: 3.7.6
General Commands
bison GNU Project parser generator (yacc replacement)


text:
As the world embraces a future powered by renewable energy, EVE Energy Co., Ltd. emerges as a frontrunner, empowering grid resilience with their cutting-edge EVE LiFePO4 battery. Within the realm of energy storage systems, EVE LiFePO4 battery plays a pivotal role in enhancing grid balancing and ensuring uninterrupted power supply. This blog delves into the transformative role of EVE LiFePO4 battery in grid balancing, inviting wholesalers to embrace EVE Energy and recommend its advanced solutions for a more resilient and sustainable energy grid.
The Backbone of Grid Balancing
In the intricate symphony of grid management, EVE LiFePO4 battery takes center stage as the backbone of grid balancing. With its advanced technology and robust features, EVE LiFePO4 battery empowers the grid to withstand fluctuations in energy supply and demand, ensuring a harmonious balance between generation and consumption.
Peak Shaving: Keeping Energy Peaks in Check
EVE LiFePO4 battery serves as a guardian against energy peaks by engaging in peak shaving. During periods of high energy demand, the battery releases stored energy to offset the peak load, preventing strain on the grid and ensuring a stable power supply. This peak shaving ability reduces the risk of blackouts and enhances the reliability of the grid.
Frequency Regulation: Synchronizing Grid Frequencies
For an efficient grid, frequency regulation is vital. EVE LiFePO4 battery offers rapid response times and precise control over energy discharge, allowing it to stabilize grid frequencies and maintain power quality. Its ability to modulate power flow helps grid operators synchronize energy production and consumption, promoting grid resilience and stability.
Grid Stabilization: A Pillar of Resilience
In the face of fluctuating renewable energy generation, grid stabilization becomes essential. EVE LiFePO4 battery acts as a pillar of resilience, absorbing excess energy during periods of high generation and releasing stored energy during low generation. This seamless grid balancing ensures a smooth transition between energy sources and sustains a stable energy supply.
Grid Ancillary Services: Supporting Grid Operations
EVE LiFePO4 battery extends its support to grid operators by providing ancillary services. Its fast response times and precise energy control make it a valuable asset for grid operators in frequency regulation, voltage control, and power factor correction. By performing these ancillary services, EVE LiFePO4 battery enhances the grid's efficiency and reliability.
Conclusion: Embrace EVE LiFePO4 Battery for Grid Resilience
EVE Energy Co., Ltd.'s LiFePO4 battery emerges as the foundation of grid resilience, empowering energy storage systems with grid balancing capabilities. From peak shaving and frequency regulation to grid stabilization and ancillary services, EVE LiFePO4 battery offers a roadmap to elevate the grid's capacity to handle energy fluctuations and promote a more resilient and sustainable energy landscape.


text:
Study finds governor's budget would cost jobs, economic output
California Gov. Arnold Schwarzenegger's cuts-only approach to balancing the state budget will leave deep economic scars, according to a new report issued today (Thursday, May 27) by researchers at the University of California, Berkeley. But it adds that balancing cuts with targeted revenue increases would save nearly 250,000 jobs – half of them in the private sector.
The study by UC Berkeley's Center for Labor Research and Education found that the governor's proposed budget would result in a loss of 330,000 full-time-equivalent jobs, boosting the state's already high unemployment rate by another 1.8 percentage points.
Researchers said the cuts also would cost California families and businesses more than $36 billion in lost economic output, along with $1.9 billion in state and local taxes.
The projected job loss is greater than the total job growth projected by the Legislative Analyst's Office for 2011. This analysis was done using full-time equivalent jobs; because many of the human services jobs are part-time, the actual number of people affected could be much greater.
The majority of jobs lost – 261,000 – would result from $5.4 billion in cuts to major health and human service programs that bring in significant federal matching funds. This job loss is 15 times greater than the number of jobs that would be lost through an equivalent increase in revenue. Close to one-quarter of the budget savings from cuts to health and human services programs would be negated due to lost state and local tax revenue, the study concluded.
Researchers found that a more balanced approach that includes $5.4 billion in targeted revenue increases from upper-income households, corporations and a new oil severance tax would do far less harm to the state's economy, sparing nearly 250,000 jobs and $18 billion in lost economic output, under the governor's plan.
Authors Ken Jacobs and Laurel Lucia of the UC Berkeley Center for Labor Research and Education and T. William Lester of UC Berkeley's Institute for Research on Labor and Employment estimated the economic impact of the governor's proposed 2010-2011 budget using IMPLAN 3.0, an industry-standard input-output modeling software package.
"When it comes to jobs and the economy, not all solutions to the state's budget shortfall are equal," said Jacobs, chair of the Labor Center. "Cuts to CalWORKs, In-Home Supportive Services and health services for low-income populations hurt the economy more than the equivalent amount of revenue increases. That's because these cuts would result in the loss of billions of dollars in federal matching funds and take dollars out of the pockets of low-income residents, who are most likely to put them back into the economy immediately."
Robert Reich, a UC Berkeley professor of public policy and former U.S. labor secretary, supported the report findings.
"It makes as much sense to cut social service programs in an economic downturn as to drill holes in a boat during a flood," Reich said. "As this important analysis makes clear, the governor's proposed cuts would not only hurt the state's most vulnerable people at a time when they most need help, the cuts would also harm the economy, hurting all Californians. In order to reduce the debt, it would be far wiser to raise taxes on corporations and the wealthy."
The UC Berkeley study was funded by the Service Employees International Union, which represents more than 700,000 California workers.
The report, "The Economic Consequences of Proposed California Budget Cuts," is available online.


text:
Media INNOVATION begins with Design Thinking
Successful innovation must be technically feasible and have a viable business plan, but we find that the best results come when we begin with the needs and desires of people.
Chicas Poderosas will gather Brazilian media leaders together for a one-day workshop on DESIGN THINKING with Sina Mossayeb, a member of the board of directors Chicas Poderosas and senior designer at IDEO San Francisco, CA USA and Mariana Santos, co-director and founder of Chicas Poderosas Inc.
Our goal is to bring a diverse group of people together to collaboratively create ideas and innovative on how to stimulate and advance the Brazilian media ecosystem.
Human Centered Design PROCESS
- We observe the inspiration. We learn by observing real-world situations, not just by asking. We begin with empathy.
- We use our inspiration to visualize the possibilities. Balancing vision with actionable results is the key to success.
IMPLEMENTATION AND ITERATION
- We evaluate possibilities through prototyping. We accomplish results by building and telling stories.
- Building on Design's fluency of thought to promote a more innovative and customer-centric approach to news and media in Brazil.
- As the landscape changes and news and media companies seek innovative, up-to-date strategies to remain relevant, it is clear that they must develop new ways of working to advance change so that the customer experience is the center of everything.
TO DO TOGETHER
- We set out to deliver a collaborative workshop for participants from the news and media community in Brazil to actively participate in design thinking.
- The focus of the program will be to equip participants with the tools, experience, and approximate plans to begin exploring how to implement design thinking practices within their organization to be more innovative and customer-centric.
- Develop a common language for innovation and a way of talking about being customer-centric.
- Put users at the center of design innovation in news and media
- Detailed principles on strengths and areas of improvement in news and media, focused on actions to build an innovative competitive culture
- New proposals, opportunities statements, low fidelity ideas and prototypes related to the challenges of the news and media industry
- Integrate human-centered design into daily work and seed capabilities within your organization
This is a one-day workshop, facilitated by our team of design thinking experts, with the goal of presenting and applying human-centered design to navigate advances in media innovation in Brazil.
Registration can be found here
Date: Tuesday, August 22, 2017
Time: 9:00 AM – 8:00 PM CEST
Location: Rio de Janeiro, Brazil
Fee: $100 USD


Message-ID: <_PHONE_.6698.1571572469740.JavaMail.confluence@ip-172-26-8-203> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_6697_1738311400.1571572469729" ------=_Part_6697_1738311400.1571572469729 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html Custom Javascript Formatter
Custom Javascript Formatter
A JavaScript function can be used to perform custom formatting a= nd validation of bound fields. This is done by selecting the 'Custom' field= formatting type and providing the name of the desired JavaScript function,= as shown here:
The function will be called both when the screen is displayed (to format= data provided by the RPG program), and when a change is made to a field an= d the screen submitted (to validate user input and to revert data to progra= m formatting). The function will receive a single argument, which is an obj= ect containing properties that provide information about the field, along w= ith the field data. The parameter object includes the following properties:=
The function should look at the "revert" property to determine whether i= ts being called to format data, or to validate user input and revert to ser= ver format. In either case, the function should return the desired value as= a string. If the function is called with the "revert" flag present, then i= t can also cause a validation message to appear by returning an object with= a property "msg". The value of the "msg" property should be a string which= will display in a validation tool-tip beside the field. When the function = returns an object with "msg" property, the submit will be cancelled, and th= e user will have to correct the input and attempt to submit the screen agai= n.
The following example code processes a 1-character server value "Y" or "= N" and formats this as "Yes" or "No":
=20
function my=
Formatter(params) {
 if (params.revert) {
 if (params.value =3D=3D "Yes") {
 return "Y";
 }
 else if (params.value =3D=3D "No") {
 return "N";
 }
 else {
 return {"msg":"Invalid value. Enter \"Yes\" or \"No\"."};
 }
 }
 else {
 if (params.value =3D=3D "Y") {
 return "Yes";
 }
 else {
 return "No";
 }
 }
}
=20
------=_Part_6697_1738311400.1571572469729 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: file:///C:/566fde6da2a8e7d23d1963d1ad1c2b89 iVBORw0KGgoAAAANSUhEUgAAAccAAAFICAIAAACqeKLoAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA B3RJTUUH4gYNFQooP8UcvwAAAAd0RVh0QXV0aG9yAKmuzEgAAAAMdEVYdERlc2NyaXB0aW9uABMJ ISMAAAAKdEVYdENvcHlyaWdodACsD8w6AAAADnRFWHRDcmVhdGlvbiB0aW1lADX3DwkAAAAJdEVY dFNvZnR3YXJlAF1w/zoAAAALdEVYdERpc2NsYWltZXIAt8C0jwAAAAh0RVh0V2FybmluZwDAG+aH AAAAB3RFWHRTb3VyY2UA9f+D6wAAAAh0RVh0Q29tbWVudAD2zJa/AAAABnRFWHRUaXRsZQCo7tIn AAAgAElEQVR4nO3dfXwT55k3+p/YUDnnk6QsgUYyMkg4p2kC7IIDtSxtwC55QkiytWwdY1neGodN ttldNrw9zbrY4HfXm4bXsC3dZKmhlSzjyBbdBMo5SW3II1kKrJMGSLa7MRZYWCppWE5Cn1ghmXn+ mBm9WLIsySO/Xt8Pn0Qazdxzz4x16Zp7Zu5bcuvWLRBCCBHJHYFX+l9MYDUIIWRqs36PfzFrQqtB CCHTzR3D3t8/n+IsIYQk4KOPmdC3s7xeLwDuv4QQQpITiKWz5HI5AO6/hBBCkhOIpXS+TwghYhre rkoIITPWml9uAjD7jj8Zdc43Da+M9BFFVUIICXr4/1YtTv9GjBkuD15/v/9qjBlGjKq3zq6/dD5i 6sq92asfTKCCAD47/btX9t8MmTBnnemBJXMTK4R34+PO0s+/fWrhgjjn//Dq3u1hl+EC9b/2qqsN S7Y/c1d8haA4dKVcsfrQxbndJS+OVjduDySx61Lj9qXdvafPhU6JXu0JE3HUuBrec/p3r9jnPls3 /+5oC30W9dMbH3eW3vhm0n9vZCZS3ft11u+PPcO//9dXMWYYMaretfpU9mqAixdIOCKEL7VqceDP /bPTv3ul9OqcJL7GNz7uLL3cD/m3E1ssJGR8eHXv9t/dO/bv2INzV8J73nrj2jN38SXf+PwTAPq5 KYtNyR2FEam2ZhWsm829vvaqq233nSNFqwkSJdB/NjE1ITPKVwzLfP45gPdu/PflTz+T/193qu6+ C0D/Z7e8//vzxffcvXzun3KzxShk3K9W3b1qrgqf37yR2FKfnf7d3tLL9+rHdqfCg3NX4uYnvweA Bc9kx5WoRndXph4I2YrPzt3oB1Zqky5wIi0oXKw6d+Nqgkdk/N297oHtkyv0k+nnK+ZL5tYt5tat j/7wcVHLEdVfb+q7/nHf9Y9Vf72pqOXIR3/4mPv0K+bLGIUk3K4aPH/k850bH3eWXgaf+9y+tLv3 9MIH1l393XkA213Ym70ifPnPzt3oXzX30bnxl7Zk+zN3YeGCZ089cPeHV89bE61wiA9vnIe8OKwF AGfXX4Jeft7qBcJy6muvutqsALAyWii/J2MOcPM/z91esm42cPuq/SYw5977Agk1hpUWvvf4ROza q642a6A9JNjkEppICktdCuzP1Q+GNKpEWUVY5RNrb7nxcWfp5/fqveetXFNJxNGJ2DPnreDPzQfu XGn18m0goTuBbye5dXb9JWxd/Mn+y/3cRO0N/jRfH187TPg5fuw9EPhUNcafYTLj3P6K+eqPfwSg lMy68EvTsr8qvbF2LYAFDz984ZcmpWQW9+ntr5gYhSQYVa+92nt64ZLtddz3pPfswuzVD84vMKGz 9PKlVQ8sPHf5NBY/+8ycu7HkE+GM9bOrwLnLr6y/LJQhLz4ViFx


QQCustomer Service
News Center >Technical Support > Single Layer Capacitor
Technical Support
Welding of Single Layer Capacitor
2021/08/24 03:08:02
SLC single layer capacitor has the characteristics of small size, large capacity and high application frequency, etc., which are widely used in electronics, radar, navigation and satellite communications, etc.. In the traditional single layer capacitor, there is a dielectric layer in the middle, and an upper and lower layer of electrode layer. The lower electrode is welded on the circuit with the solder such as gold-tin alloy or lead-tin alloy, and the upper electrode is connected to other circuit components with the gold wire bonding technology.
At present, the preparation process of gold-tin solder of single layer capacitor is either low material utilization rate, which greatly increases the production cost; Or the process difficulty coefficient is high, the control requirements of composition and temperature of electroplating tank liquid are very high, and there are problems such as electroplating solution pollution, it is difficult to meet the environmental requirements. In order to solve these problems, EXSENSE Electronics Technology Co., Ltd. introduces a single layer capacitor with gold-tin solder, which includes gold-tin solder layer, lower electrode layer, medium dielectric layer and upper electrode layer. The chip capacitor can improve the encapsulating efficiency and reduce the encapsulating cost; Which is simple process, controllable speed, low production cost; The whole process is pollution-free, and the welding performance of the made of gold-tin solder in high temperature is excellent, to ensure the stability of the product, which is suitable for industrial production.
The specific preparation steps of single layer capacitor with gold-tin solder are as follows:
First, prepare ceramic substrates, clean and dry;
Second, the electrode layers formed on the upper and lower surfaces of ceramic substrate with evaporation method or sputtering method;
Third, the ceramic substrate forming the upper and lower electrodes is put into the vacuum sputtering machine, the gold-tin solder layer is sputtered by DC sputtering, the substrate is sputtered by rotation and rotation;
Fourth, sputtering gold-tin solder layer, the target material is made of gold-tin alloy with mass ratio 80: 20, cavity heating temperature is 100~500℃, vacuum degree is 10-6-10-7mTorr, power is 500W~4000W, time is 50 ~1000s, using X-ray machine or step profiler monitoring sputtering film thickness, at the same time using online monitoring system to monitor real-time sputtering film thickness;
Fifth, according to different ceramic substrate performance requirements, part of the substrate only needs to sputter gold-tin solder layer on the surface of the upper electrode or the lower electrode, and part of the substrate needs to sputter on both sides;
Sixth, after sputtering, turn off the heating device, fill in the gas, and take out the semi-finished product;
Seventh, the semi-finished products are processed by conventional lithography, etching, electroplating, cleaning and other processes;
Eight, dicing, test, sorting;
Ninth, product packaging.
mqu.cn site.nuo.cn


text:
How do Europeans travel in Australia? Examining cultural convergence in travel behaviour
The impacts of globalisation and cultural convergence theory have been discussed in various research areas. Scholars agree that global consumer behaviour becomes increasingly homogenous. However, in tourism, there is still evidence that visitor markets are distinguished and segmented according to their nationality. This study argues that national borders have lost in significance to separate markets. By means of a correspondence analysis, this study provides evidence that European travel...[Show more]
|Collections||ANU Research Publications|
|Access Rights:||Open Access|
Items in Open Research are protected by copyright, with all rights reserved, unless otherwise indicated.

source: openbmb/Ultra-FineWeb


Book a recurring diary appointment
The steps below outline how to book an appointment in the diary for a task you carry out regularly.
 1. Click Diary on the main homebar
 2. From Choose View, click the correct diary view and find the column with the initials of the person for whom you want to book the appointment
 - If the appointment is for yourself, click My Diary
 - If the appointment is for someone else, click My Office
 3. Toggle between Day, Week, Month or Agenda as required
 4. Click the start time in the relevant days column. This opens the New Event window
 5. Click the relevant Event Type
 6. Complete all of the relevant information, including the Appointment Details and Event Details
 - If you don't want others to see the content of the appointment, tick Is Private in Appointment Details. If anyone tries to open it, they'll receive the message This appointment is private and can only be viewed and edited by attendees of the appointment
 - If you tick Record Locked in Appointment Details, this means that others can view the appointment but not make changes. The lock can only be removed by the record owner
 1. In Appointment Details, change the Record Owner if required by selecting another name from the dropdown menu
 2. In the Choose Property (Optional) section, you can select a particular Property Address for the appointment. Type the address in the search field and click Select to automatically pull it into the appointment record. The same process applies for adding a person in the Choose Person (Optional) section
 7. At the bottom of the New Event window, you can set the Recurrence
 1. If you click DailyWeekly or Monthly, it'll provide you with more options to determine how frequently the appointment is to reoccur
 2. Set the Recurrence Pattern
 3. Set the Recurrence Range
 8. Once finished, click Save and the appointment and any recurring appointments will be populated into your diary
Related articles:
Adding a general appointment
Was this article helpful?
0 out of 0 found this helpful


Welcome to OpenQL's documentation!
OpenQL is a framework for high-level quantum programming in C++/Python. The framework provides a compiler for compiling and optimizing quantum code. The compiler produces quantum assembly and instruction-level code for various target platforms. While the instruction-level code is platform-specific, the quantum assembly code (QASM) is hardware-agnostic and can be simulated on one of the simulators.
Developer Documentation
Indices and tables


text:
LKL10-W LED Light Used For Switchgear Instrument Cabinet
Features and advantage:
-Economize on energy.In the case of illuminate effect same alike the traditional light,economizing on energy is 75% above.
-Life span is long,the LED light source,someone cal it the longevity light,meaning to extinguish never.It's the solid cold light source,adopt a special electric circuit design,the life span can reach to for 100,000hours,comparing traditional light source life span to grow 1000% above.
-The environmental protction performance is better,withour ultraviolet ray and infrared rays in the spectrum withour calories and radiate,the dizzy light is small,and the castoff can recover,without pollution and do not contain the mercury chemical Element.The cold light source,can be touched,belong to typical model of the green illuminate light source.
-Special structure design,light body position can be adjusted,that solves the problem of less lumination angle of LED.
-The power supply adapt to AC/DC 110-230V,suitable in application case of switchgear especially.


New Action
Your new action has been created, click on the Conditions tab.
Actions complete
Create Task - Conditions
 - Create your desired conditions, recommended defaults are shown.
 - Click Settings tab
Create Task Conditions
Create Task - Settings
 - Create your desired settings, recommended defaults are shown
 - Click OK to complete setup
Create Task Settings
You will now have a daily task that will create a DMP file using the Lode Data Utilities program. Once the DMP file is created the script will archive and compress the file using 7-zip. After the files are archived the script will clean up the left over DMP file, log files, and move the archive to another location (if configured).


Productive Conversations Require "Key" Elements
productive conversations
Productive conversations are so important to sales, but many reps don't know how to have them. Effective communication requires some thought and effort but will pay off in the long run with increased trust, rapport and sales. "Sales conversations aren't always straightforward, and your ability to nail one rests on a few key elements that aren't necessarily obvious," writes HubSpot's Jay Fuchs. His list of these "key" elements will help reps learn just what makes productive conversations and how to put them into practice.
 1. Know their pain points
 2. Reveal value
 3. Project authority
 4. Keep it conversational, comfortable
Productive conversations require research, thought
Read on for just four of the seven aspects that Fuchs discusses. Remember, it's a combination of all these elements that lead to productive conversations; reps shouldn't cherry-pick when it comes to these!
Know their pain points. This element goes hand-in-hand with research (one of the other necessary aspects noted by Fuchs). Fully understanding your prospects' pain points is necessary preparation for your conversations. By having a clear grasp of what's challenging them, you can effectively craft a dialogue that sheds even more light on how you can help. This preparation can give your talks a boost in the right direction, and if you aren't sure how to start, Fuchs has some suggestions. "Components of your research relating to factors like a company's industry, scale, market position, competitive landscape, current solutions leveraged, and performance should be very telling into the kinds of problems it might be dealing with," he suggests.
Reveal value. Gone are the days when salespeople would rattle off features of their product. Today's buyers want to know what's in it for them, and they want to know as soon as possible. Value is imperative to productive conversations. "What you need is a value proposition and a value statement that explains fully how you help others, how they win, how you serve in terms of the customer, and how that leads to loyal customers and referrals. And a mission statement that matches it," explains Jeffrey Gitomer in a Media Sales Today post. Integrating this into your dialogue leads to productive conversations that move the sales process forward. "Ultimately, your prospects won't care about your solution's features if you can't show how applying those features can improve their companies' operations," Fuchs writes.
Be mindful of your tone and mood
Project authority. It's important that the prospect views you as an authority who can provide insight, knowledge and guidance. But Fuchs warns against coming across as dominating. Productive conversations require a driver (the rep), but the journey also includes others (the prospect(s). Keep this in mind when conversing; you can be assertive but also mindful of sharing the floor with the prospect. Approach these conversations as a leader and a collaborator. As Fuchs explains, "Hear them out, and use your expertise and experience to offer viable, relevant answers to their questions as they come up…Both parties have a stake in the conversation, so make sure there's some give and take."
Keep it conversational, comfortable. Just because you're discussing business doesn't mean you need to leave out warmth and personality. "Prospects want to know you care about their business," Denise Gibson, director of Admall sales, explains. "They can hear passion in your voice. You have to believe in what you are selling." Productive conversations include valuable, important business information, as well as friendly back-and-forth, unscripted remarks and humor. "Prospects are most inclined to buy when they're comfortable," Fuchs adds. "Always keep that in mind when conducting your sales conversations, and tailor your tone, language, and general attitude to put them at ease."
Keep the prospect top of mind
Productive conversations are driven by the salesperson's interest in the prospect and their business. The drive to find a solution for the prospect, and the necessary elements Fuchs discusses, will lead to fruitful, valuable conversations that get results.
Photo by Leon on Unsplash
Jessica Helinski
Jessica Helinski


Training Tip: The game of the name
You spotted "your" twin down low—no factor—and you hear the other making position reports at the airport with a different name. But it feels all wrong.
If a developing scenario seems strange or unlikely, it's time to sit up straight, review the big picture, and focus on see-and-avoid.
Miscommunications leading to traffic conflicts have arisen from something no more complicated than pilots using different names for the same airport in their radio calls. Airport names do get changed from time to time—municipal airports grow into regional airports, or a prominent citizen's name is appended—but not everyone adopts the change or can break old habits.
The discrepancy could cause an unfamiliar pilot to think that an aircraft is flying at a different airport, and not a factor, when the opposing aircraft is too close for comfort.
A near-collision mentioned in a filing with the Aviation Safety Reporting System illustrated a transient pilot's confusion on arriving at an Ohio airport where some pilots were calling in using the airport's new name, which had not yet been officially published, and others were broadcasting the airport's familiar-but-obsolete identification.
"One other transient aircraft appeared to nearly have a collision taking evasive maneuvers," the pilot noted, adding, "He later said over the frequency, 'Sorry I haven't been here before.'"
According to a local newspaper report from June 2019, airport renovations and growth had prompted officials to rename it in recognition of its "real purpose."
It doesn't take a name change to complicate an airport's on-air identity. Some airports simply have long or compound names that pilots condense for brevity on the radio.
I instructed at a Maine airport named for both a town and a county; local pilots tended to begin their CTAF broadcasts with the town name; out-of-state visitors were more likely to address themselves to the county.
The name of the game for safety was to never assume that everyone understood, as the kids in my old neighborhood used to say, that it was the "same difference."
Leave a Reply


text:
This "acting Governor-General" is known as the Administrator of the Government.
First in line of succession is the Chief Justice, followed by the next most senior member of the New Zealand judiciary.
The Letters Patent provide for an order of succession if:
- the Office of Governor-General is vacant
- the Governor-General is incapacitated
- the Governor-General is outside the country
- the Governor-General is unable to perform her duties.
The Administrator is required to take an oath similar to the Governor-General and may exercise all of the powers of the Governor-General.


Diabetic patients: Technology's useful to communicate with docs, as long as it's free
SAN FRANCISCO Patients with diabetes may seek information from their physicians outside of scheduled office visits but are not willing to pay for such services, according to a new study presented at the American Osteopathic Association's 115th Osteopathic Medical Conference and Exposition.
Among 300 patients with diabetes, the study authors noted, 42% communicated with their physicians by telephone outside of scheduled office visits and 13% used e-mail. However, 62% of patients said they would not pay to communicate with their physicians outside of scheduled office visits.
"Patients want some way to communicate with their physicians, such as by phone or pager, to ask questions about managing their diabetes or to share information about their condition, such as their blood sugar levels," said study co-author Jay Shubrook, an AOA board-certified osteopathic family physician from Athens, Ohio. "They like the access, but they don't want to pay for it."
The study also found older respondents, who averaged between ages 51 years and 60 years, did not use Twitter or Facebook to communicate with their physician. What's more, only 69% of respondents had Internet access at home. This could be because older adults do not find paying for the Internet a priority compared with their other expenses, including those related to other medical conditions, Shubrook said.
Login or Register to post a comment.


Simulink Design Verifier
Using Existing Coverage Data during Subsystem Analysis
Measuring the Coverage of the Subsystem
The sldvdemo_autotranssldvdemo_autotrans model is a closed-loop simulation model. The subsystem ShiftLogicShiftLogic is a Stateflow® chart and represents the controller part of this model. Test cases designed in the Signal Builder block ManeuversGUIManeuversGUI drive the closed-loop simulation. You can use the cvtestcvtest and cvsimcvsim functions to measure the model coverage achieved for this subsystem inside the closed-loop simulation model. In this example, specifying the input to cvtestcvtest as a path to the subsystem rather than to the model name results in measuring the coverage for the subsystem only. Also, the second input to cvsimcvsim specifies the time interval to simulate the model and it is derived from the time range of the current pane in the block ManeuversGUIManeuversGUI.
test = cvtest('sldvdemo_autotrans/ShiftLogic');
test.settings.decision = 1;
test.settings.condition = 1;
test.settings.mcdc = 1;
signalBuilderBlock = sldvdemo_signalbuilder_block('sldvdemo_autotrans');
signalBuilderTime = signalbuilder(signalBuilderBlock);
simulationStopTime = signalBuilderTime{1,1}(end);
existingCovData = cvsim(test,[0 simulationStopTime]);
cvhtml('Existing Coverage', existingCovData);
Finding Test Cases for Missing Coverage
Before you can use existing coverage data during test generation, the data must be saved to a coverage data file(.cvt). You can use existing coverage data by specifying the coverage data path in the Coverage data file parameter and setting Ignore objectives satisfied in existing coverate data parameter to on in the Test Generation pane of Simulink Design Verifier configuration parameters.
In this demonstation, the first input to sldvrunsldvrun specifies the subsystem to analyze. Instructing Simulink Design Verifier to analyze a subsysyem is beneficial when the controller part of a model needs to be tested separately or when you want to divide the analysis of a large model into smaller, manageable parts.
As you can see in the report, Simulink Design Verifier only finds test cases for the coverage objectives that are not covered in the existing coverage file. Notice that 4 coverage objectives in the subsystem ShiftLogicShiftLogic are proven to be unsatisfiable. This is expected because the logic inside the Stateflow chart ShiftLogicShiftLogic uses temporal events and since this chart updates at every sample time, usage of temporal conditions should be satisfactory. Also note that, dead code within a subsystem will always be a dead code in the model containing that subsystem.
The harness model generated by Simulink Design Verifier is built by extracting the contents of the subsystem ShiftLogicShiftLogic into a Test Unit component that is fed by a Signal Builder block that captures the generated test cases.
opts = sldvoptions;
opts.IgnoreCovSatisfied = 'on';
opts.CoverageDataFile = 'existingcov.cvt';
opts.SaveHarnessModel = 'on';
[~, harnessModel] = fileparts(fileNames.HarnessModel);
Clean Up


How to use Google Backup and Sync?
Backup and Sync" is an application of desktop that is delivered by Google. It helps the users in easily backing up the local files from the Windows PC or Mac to Google Drive.
It is an excellent backup application that automates the backup process and synchronizes the local files with the cloud. As there is no option of backing up the operation in non-working hours, it results in the slow performance on the computer where the backup application is installed.

Scheduling the Google backups and sync:
If the google backup and sync not starting automatically, then there are troubleshooting steps that can be taken. The troubleshooting steps that need to be taken are:
 1. Prevent Google Backup and Sync to Start with Windows:
This can be done by taking the two steps mentioned below:
· Tap on the "Google Backup and Sync" icon on the taskbar and hit on preferences from the menu.
 - In the section of settings, uncheck the open backup and then sync on the system startup checkbox and click ok.
 - Start Google Backup Sync using Task Scheduler:

What are the necessary steps to be taken to schedule Google Backup and sync?
 - First, you have to type the scheduler at the search box and open task scheduler.
 - Select create a task from the action menu.
 - Then, type a name for the task at the "General" tab.
 - Then, select the triggers tab and click on new.
 - The next step is to choose the action tab and tap on New.
 - The last step is to click ok to close the create task window to continue to the next step.
These are the steps that a user needs to follow if the Google Backup and Sync are not opening. If these troubleshooting steps do not work, the user is free to call on the customer support and get the assistance accordingly. They will be properly served by the experts.


Thursday, June 24, 2010
Clothespin Fireworks
I love projects that are simple like this and have no real rules... other than have fun and splatter!
Materials Needed: clothespin (or other toolswe also used popsicle sticks and paint markers), lots of colors of paint, black or navy blue construction paper, and a paper plate palate.
1. Put several colors of paint on your paper plate palate.
2. Show your little one the tools they have to use and let them start painting fireworks! I did this alongside my son and we had a great time making fireworks sound effects while we painted.
Remind your little ones NOT to eat the paint! I am surprised we still have a problem with this sometimes. It does not taste good!
3. Display your fireworks somewhere where you can see them and talk about them throughout the week.
Generate a list together of all the words you can think of related to fireworks: pop, sizzle, crash, boom, whiz, zap, colors, rain, twirling, shooting, spinning, exploding, sparkling, etc.
With older kids you could use these words and their fireworks pictures to create fireworks poems like these student's did. With younger kids you could read through these poems and other ones you find on the internet and talk about the fun words and pictures you see.
Lastly, if you want to teach a little history of the 4th of July... or just boogie to School House Rocks, check out the 4th of July Fireworks video here.
1 comment:
 1. Aww, he's so adorable! I'm reading a Winnie the Pooh book about fireworks and I wanted at least one craft to bring the story to life.
Related Posts with Thumbnails


text:
Actively and harmonically mode locked lasers (AHMLL) have been extensively studied as an optical clock source for photonic-assisted analog-to-digital conversion of broadband RF signals. Such lasers can generate high repetition rate pulse train with ultralow timing jitter . The optical injection of AHMLL has been shown to be an interesting way to reduce the supermode noise, which is an important source of residual phase noise at high offset frequency . Although efforts have been put to stabilize the external seed laser on a longitudinal mode of the AHMLL , no study on the impact of seed laser parameters have been reported. We present here our first results on the parametric study of a CW-injected AHMLL to understand better the evolution of the laser performance under different power and optical gain conditions.
© 2019 IEEEPDF Article


Export (0) Print
Expand All
EventLog.WriteEvent Method (String, EventInstance, Object[])
Writes an event log entry with the given event data and message replacement strings, using the specified registered event source.
Namespace: System.Diagnostics
Assembly: System (in system.dll)
'Declaration
Public Shared Sub WriteEvent ( _
 source As String, _
 instance As EventInstance, _
 ParamArray values As Object() _
)
'Usage
Dim source As String
Dim instance As EventInstance
Dim values As Object()
EventLog.WriteEvent(source, instance, values)
public static void WriteEvent (
 String source,
 EventInstance instance,
 Object[] values
)
public static function WriteEvent (
 source : String,
 instance : EventInstance,
 ... values : Object[]
)
Not applicable.
Parameters
source
The name of the event source registered for the application on the specified computer.
instance
An EventInstance instance that represents a localized event log entry.
values
An array of strings to merge into the message text of the event log entry.
Exception typeCondition
ArgumentException
The source value is an empty string ("").
- or -
The source value is a null reference (Nothing in Visual Basic).
- or -
instance.InstanceId is less than zero or greater than UInt16.MaxValue.
- or -
values has more than 256 elements.
- or -
One of the values elements is longer than 32766 bytes.
- or -
The source name results in a registry key path longer than 254 characters.
ArgumentNullException
instance is a null reference (Nothing in Visual Basic).
InvalidOperationException
The registry key for the event log could not be opened.
Win32Exception
The operating system reported an error when writing the event entry to the event log. A Windows error code is not available.
Use this method to write a localized entry to the event log, using a source already registered as an event source for the appropriate log. You specify the event properties with resource identifiers rather than string values. The Event Viewer uses the resource identifiers to display the corresponding strings from the localized resource file for the source. You must register the source with the corresponding resource file before you write events using resource identifiers.
The input instance instance specifies the event message and properties. Set the InstanceId of the instance input for the defined message in the source message resource file. You can optionally set the CategoryId and EntryType of the instance input to define the category and event type of your event entry. You can also specify an array of language-independent strings to insert into the localized message text. Set values to a null reference (Nothing in Visual Basic) if the event message does not contain formatting placeholders for replacement strings.
The specified source must be registered for an event log before using WriteEvent. The specified source must be configured for writing localized entries to the log; the source must at minimum have a message resource file defined.
You must create and configure the event source before writing the first entry with the source. Create the new event source during the installation of your application. This allows time for the operating system to refresh its list of registered event sources and their configuration. If the operating system has not refreshed its list of event sources, and you attempt to write an event with the new source, the write operation will fail. You can configure a new source using an EventLogInstaller, or using the CreateEventSource method. You must have administrative rights on the computer to create a new event source.
The source must be configured either for writing localized entries or for writing direct strings. Use the WriteEntry method if your application writes string values directly to the event log.
If your application writes entries using both resource identifiers and string values, you must register two separate sources. For example, configure one source with resource files, and then use that source in the WriteEvent method to write entries using resource identifiers to the event log. Then create a different source without resource files, and use that source in the WriteEntry method to write strings directly to the event log using that source.
The following example writes an informational event entry and a warning event entry to an existing event log. The event message text is specified using a resource identifier in a resource file. The example assumes the corresponding resource file has been registered for the source.
Dim sourceName As String = "SampleApplicationSource"
If EventLog.SourceExists(sourceName)

 ' Define an informational event and a warning event.
 ' The message identifiers correspond to the message text in the
 ' message resource file defined for the source.
 Dim myInfoEvent As EventInstance = new EventInstance(InformationMsgId, 0, EventLogEntryType.Information)
 Dim myWarningEvent As EventInstance = new EventInstance(WarningMsgId, 0, EventLogEntryType.Warning)
 ' Insert the method name into the event log message.
 Dim insertStrings() As String = {"EventLogSamples.WriteEventSample2"}
 ' Write the events to the event log.
 EventLog.WriteEvent(sourceName, myInfoEvent, insertStrings)
 ' Append binary data to the warning event entry.
 Dim binaryData() As Byte = { 7, 8, 9, 10 }
 EventLog.WriteEvent(sourceName, myWarningEvent, binaryData, insertStrings)
Else
 Console.WriteLine("Warning - event source {0} not registered", _
 sourceName)
End If

The example uses the following message text file, built into the resource library EventLogMsgs.dll. A message text file is the source from which the message resource file is created. The message text file defines the resource identifiers and text for the category, event message, and parameter insertion strings.
; // EventLogMsgs.mc
; // ********************************************************
; // Use the following commands to build this file:
; // mc -s EventLogMsgs.mc
; // rc EventLogMsgs.rc
; // link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res
; // ********************************************************
; // - Event categories -
; // Categories must be numbered consecutively starting at 1.
; // ********************************************************
MessageId=0x1
Severity=Success
SymbolicName=INSTALL_CATEGORY
Language=English
Installation
.
MessageId=0x2
Severity=Success
SymbolicName=QUERY_CATEGORY
Language=English
Database Query
.
MessageId=0x3
Severity=Success
SymbolicName=REFRESH_CATEGORY
Language=English
Data Refresh
.
; // - Event messages -
; // *********************************
MessageId = 1000
Severity = Success
Facility = Application
SymbolicName = AUDIT_SUCCESS_MESSAGE_ID_1000
Language=English
My application message text, in English, for message id 1000, called from %1.
.
MessageId = 1001
Severity = Warning
Facility = Application
SymbolicName = AUDIT_FAILED_MESSAGE_ID_1001
Language=English
My application message text, in English, for message id 1001, called from %1.
.
MessageId = 1002
Severity = Success
Facility = Application
SymbolicName = GENERIC_INFO_MESSAGE_ID_1002
Language=English
My generic information message in English, for message id 1002.
.
MessageId = 1003
Severity = Warning
Facility = Application
SymbolicName = GENERIC_WARNING_MESSAGE_ID_1003
Language=English
My generic warning message in English, for message id 1003, called from %1.
.
MessageId = 1004
Severity = Success
Facility = Application
SymbolicName = UPDATE_CYCLE_COMPLETE_MESSAGE_ID_1004
Language=English
The update cycle is complete for %%5002.
.
MessageId = 1005
Severity = Warning
Facility = Application
SymbolicName = SERVER_CONNECTION_DOWN_MESSAGE_ID_1005
Language=English
The refresh operation did not complete because the connection to server %1 could not be established.
.
; // - Event log display name -
; // ********************************************************
MessageId = 5001
Severity = Success
Facility = Application
SymbolicName = EVENT_LOG_DISPLAY_NAME_MSGID
Language=English
Sample Event Log
.
; // - Event message parameters -
; // Language


45
I have been trying to solve this "Concurrent Programming" exam exercise (in C#):
Knowing that Stream class contains int Read(byte[] buffer, int offset, int size) and void Write(byte[] buffer, int offset, int size) methods, implement in C# the NetToFile method that copies all data received from NetworkStream net instance to the FileStream file instance. To do the transfer, use asynchronous reads and synchronous writes, avoiding one thread to be blocked during read operations. The transfer ends when the net read operation returns value 0. To simplify, it is not necessary to support controlled cancel of the operation.
void NetToFile(NetworkStream net, FileStream file);
I've been trying to solve this exercise, but I'm struggling with a question related with the question itself. But first, here is my code:
public static void NetToFile(NetworkStream net, FileStream file) {
 byte[] buffer = new byte[4096]; // buffer with 4 kB dimension
 int offset = 0; // read/write offset
 int nBytesRead = 0; // number of bytes read on each cycle
 IAsyncResult ar;
 do {
 // read partial content of net (asynchronously)
 ar = net.BeginRead(buffer,offset,buffer.Length,null,null);
 // wait until read is completed
 ar.AsyncWaitHandle.WaitOne();
 // get number of bytes read on each cycle
 nBytesRead = net.EndRead(ar);
 // write partial content to file (synchronously)
 fs.Write(buffer,offset,nBytesRead);
 // update offset
 offset += nBytesRead;
 }
 while( nBytesRead > 0);
}
The question I have is that, in the question statement, is said:
To do the transfer, use asynchronous reads and synchronous writes, avoiding one thread to be blocked during read operations
I'm not really sure if my solution accomplishes what is wanted in this exercise, because I'm using AsyncWaitHandle.WaitOne() to wait until the asynchronous read completes.
On the other side, I'm not really figuring out what is meant to be a "non-blocking" solution in this scenario, as the FileStream write is meant to be made synchronously... and to do that, I have to wait until NetworkStream read completes to proceed with the FileStream writing, isn't it?
Can you, please, help me out with this?
[ EDIT 1 ] Using callback solution
Ok, if I understood what Mitchel Sellers and willvv replied, I've been counseled to use a callback method to turn this into a "non-blocking" solution. Here is my code, then:
byte[] buffer; // buffer
public static void NetToFile(NetworkStream net, FileStream file) {
 // buffer with same dimension as file stream data
 buffer = new byte[file.Length];
 //start asynchronous read
 net.BeginRead(buffer,0,buffer.Length,OnEndRead,net);
}
//asynchronous callback
static void OnEndRead(IAsyncResult ar) {
 //NetworkStream retrieve
 NetworkStream net = (NetworkStream) ar.IAsyncState;
 //get number of bytes read
 int nBytesRead = net.EndRead(ar);
 //write content to file
 //... and now, how do I write to FileStream instance without
 //having its reference??
 //fs.Write(buffer,0,nBytesRead);
}
As you may have noticed, I'm stuck on the callback method, as I don't have a reference to the FileStream instance where I want to invoke the "Write(...)" method.
Additionally, this is not a thread-safe solution, as the byte[] field is exposed and may be shared among concurrent NetToFile invocations. I don't know how to solve this problem without exposing this byte[] field in the outer-scope... and I'm almost sure it may not be exposed this way.
I don't want to use a lambda or anonymous method solution, because that's not in the curriculum of "Concurrent Programing" course.
12
You are going to need to use the callback from the NetStream read to handle this. And frankly it might be easier to wrap the copying logic into its own class so that you can maintain the instance of the active Streams.
This is how I'd approach it (not tested):
public class Assignment1
{
 public static void NetToFile(NetworkStream net, FileStream file)
 {
 var copier = new AsyncStreamCopier(net, file);
 copier.Start();
 }
 public static void NetToFile_Option2(NetworkStream net, FileStream file)
 {
 var completedEvent = new ManualResetEvent(false);
 // copy as usual but listen for completion
 var copier = new AsyncStreamCopier(net, file);
 copier.Completed += (s, e) => completedEvent.Set();
 copier.Start();
 completedEvent.WaitOne();
 }
 /// <summary>
 /// The Async Copier class reads the input Stream Async and writes Synchronously
 /// </summary>
 public class AsyncStreamCopier
 {
 public event EventHandler Completed;
 private readonly Stream input;
 private readonly Stream output;
 private byte[] buffer = new byte[4096];
 public AsyncStreamCopier(Stream input, Stream output)
 {
 this.input = input;
 this.output = output;
 }
 public void Start()
 {
 GetNextChunk();
 }
 private void GetNextChunk()
 {
 input.BeginRead(buffer, 0, buffer.Length, InputReadComplete, null);
 }
 private void InputReadComplete(IAsyncResult ar)
 {
 // input read asynchronously completed
 int bytesRead = input.EndRead(ar);
 if (bytesRead == 0)
 {
 RaiseCompleted();
 return;
 }
 // write synchronously
 output.Write(buffer, 0, bytesRead);
 // get next
 GetNextChunk();
 }
 private void RaiseCompleted()
 {
 if (Completed != null)
 {
 Completed(this, EventArgs.Empty);
 }
 }
 }
}
 - Thank you very much for your reply and sorry for my previous comment. I didn't analyze your reply with the attention it demands. Once I did it, I noticed you're suggesting a "blocking" and a "non-blocking" solution. Unfortunately, your "non-blocking" solutions seems a bit complex, as the exam only asks to implement the "NetToFile" method and the question values 3,5 of 20 total exam points. I really think it must be simpler to solve, without the need to create additional types or expose fields (references to streams and buffer, etc). I'm going to ask for my teacher's help on this. – XpiritO Oct 8 '09 at 22:42
 - 1
 With your synchronous write - if the output stream is very slow for some reason, could you not miss receiving some of the input while waiting for the output to finish writing? – DefenestrationDay Jan 12 '11 at 5:46
52
Even though it goes against the grain to help people with their homework, given that this is more than a year old, here's the proper way to accomplish this. All you need to overlap your read/write operations — no spawning of additional threads, or anything else is required.
public static class StreamExtensions
{
 private const int DEFAULT_BUFFER_SIZE = short.MaxValue ; // +32767
 public static void CopyTo( this Stream input , Stream output )
 {
 input.CopyTo( output , DEFAULT_BUFFER_SIZE ) ;
 return ;
 }
 public static void CopyTo( this Stream input , Stream output , int bufferSize )
 {
 if ( !input.CanRead ) throw new InvalidOperationException( "input must be open for reading" );
 if ( !output.CanWrite ) throw new InvalidOperationException( "output must be open for writing" );
 byte[][] buf = { new byte[bufferSize] , new byte[bufferSize] } ;
 int[] bufl = { 0 , 0 } ;
 int bufno = 0 ;
 IAsyncResult read = input.BeginRead( buf[bufno] , 0 , buf[bufno].Length , null , null ) ;
 IAsyncResult write = null ;
 while ( true )
 {
 // wait for the read operation to complete
 read.AsyncWaitHandle.WaitOne() ;
 bufl[bufno] = input.EndRead(read) ;
 // if zero bytes read, the copy is


OpenGL version < 1.1 is detected.
Please note that using this texture model will make your Inventor files incompatible with older versions of Coin and Inventor. You need Coin >= 2.2 or TGS Inventor 4.0 to load Inventor files that uses the REPLACE texture model.
Since:
Coin 2.2
TGS Inventor 4.0
enum SoTexture2::Wrap
Enumeration of wrapping strategies which can be used when the texturemap doesn't cover the full extent of the geometry.
Enumerator
REPEAT
Repeat texture when coordinate is not between 0 and 1.
CLAMP
Clamp coordinate between 0 and 1.
Constructor & Destructor Documentation
SoTexture2::SoTexture2 (void)
Constructor.
SoTexture2::~SoTexture2 () [protected], [virtual]
Destructor. Frees up internal resources used to store texture image data.
Member Function Documentation
SoType SoTexture2::getTypeId (void) const [virtual]
Returns the type identification of an object derived from a class inheriting SoBase. This is used for run-time type checking and 'downward' casting.
Usage example:
void foo(SoNode * node)
{
 if (node->getTypeId() == SoFile::getClassTypeId()) {
 SoFile * filenode = (SoFile *)node; // safe downward cast, knows the type
 }
}
For application programmers wanting to extend the library with new nodes, engines, nodekits, draggers or others: this method needs to be overridden in all subclasses. This is typically done as part of setting up the full type system for extension classes, which is usually accomplished by using the pre-defined macros available through for instance Inventor/nodes/SoSubNode.h (SO_NODE_INIT_CLASS and SO_NODE_CONSTRUCTOR for node classes), Inventor/engines/SoSubEngine.h (for engine classes) and so on.
For more information on writing Coin extensions, see the class documentation of the toplevel superclasses for the various class groups.
Implements SoBase.
const SoFieldData * SoTexture2::getFieldData (void) const [protected], [virtual]
Returns a pointer to the class-wide field data storage object for this instance. If no fields are present, returns NULL.
Reimplemented from SoFieldContainer.
void SoTexture2::doAction (SoAction * action) [virtual]
This function performs the typical operation of a node for any action.
Reimplemented from SoNode.
void SoTexture2::GLRender (SoGLRenderAction * action) [virtual]
Action method for the SoGLRenderAction.
This is called during rendering traversals. Nodes influencing the rendering state in any way or who wants to throw geometry primitives at OpenGL overrides this method.
Reimplemented from SoNode.
void SoTexture2::callback (SoCallbackAction * action) [virtual]
Action method for SoCallbackAction.
Simply updates the state according to how the node behaves for the render action, so the application programmer can use the SoCallbackAction for extracting information about the scene graph.
Reimplemented from SoNode.
void SoTexture2::rayPick (SoRayPickAction * action) [virtual]
Action method for SoRayPickAction.
Checks the ray specification of the action and tests for intersection with the data of the node.
Nodes influencing relevant state variables for how picking is done also overrides this method.
Reimplemented from SoNode.
SbBool SoTexture2::readImage (const SbString & fname, int & w, int & h, int & nc, unsigned char *& bytes) [static]
Not implemented in Coin; should probably not have been public in the original SGI Open Inventor API. We'll consider to implement it if requested.
SbBool SoTexture2::readInstance (SoInput * in, unsigned short flags) [protected], [virtual]
This method is mainly intended for internal use during file import operations.
It reads a definition of an instance from the input stream in. The input stream state points to the start of a serialized / persistant representation of an instance of this class type.
TRUE or FALSE is returned, depending on if the instantiation and configuration of the new object of this class type went ok or not. The import process should be robust and handle corrupted input streams by returning FALSE.
flags is used internally during binary import when reading user extension nodes, group nodes or engines.
Reimplemented from SoNode.
void SoTexture2::notify (SoNotList * l) [protected], [virtual]
Notifies all auditors for this instance when changes are made.
Reimplemented from SoNode.
int SoTexture2::getReadStatus (void) [protected]
Returns read status. 1 for success, 0 for failure.
void SoTexture2::setReadStatus (int s) [protected]
Sets read status.
See also:
getReadStatus()
Member Data Documentation
SoSFString SoTexture2::filename
Texture filename, referring to a file on disk in a supported image bitmap format.
By default contains an empty string, which means the texture will be fetched from SoTexture2::image and not from disk. (Specify either this field or use SoTexture2::image, not both.)
FIXME: Section about simage is outdated.
For reading texture image files from disk, Coin uses the 'simage' library from Kongsberg Oil & Gas Technologies. This library must be installed for it to be possible to load any image files at all.
The set of image formats you can actually read with the simage library depends on how the simage library was built, as simage is again dependent on a few other low-level file import/export libraries (for instance for JPEG, GIF, TIFF and PNG support). To make sure all wanted formats are supported, you should build the simage library yourself.
The set of image formats guaranteed to be supported by simage is Targa (.tga), PIC (.pic), SGI RGB (.rgb, .bw) and XWD (.xwd).
For more information about the simage library, including download and build instructions, see the Coin www-pages.
SoSFImage SoTexture2::image
Inline image data. Defaults to contain an empty image.
See documentation of the SoSFImage class for a very detailed description of how the format specification for the image data is layed out, and what different image formats for color textures, semi-transparent textures, grayscale textures, etc etc, are supported.
SoSFEnum SoTexture2::wrapS
Wrapping strategy for the S coordinate when the texturemap is narrower than the object to map onto.
Default value is SoTexture2::REPEAT.
SoSFEnum SoTexture2::wrapT
Wrapping strategy for the T coordinate when the texturemap is shorter than the object to map onto.
Default value is SoTexture2::REPEAT.
SoSFEnum SoTexture2::model
Texturemapping model for how the texturemap is 'merged' with the polygon primitives it is applied to. Default value is SoTexture2::MODULATE.
SoSFColor SoTexture2::blendColor
Blend color. Used when SoTexture2::model is SoTexture2::BLEND.
Default color value is [0, 0, 0], black, which means no contribution to the blending is made.
SoSFBool SoTexture2::enableCompressedTexture
Hint to Coin that compressed textures should be used if this is supported by the graphics hardware and OpenGL drivers. Using compressed textures usually reduces texture memory usage for a texture by 4-6 times.
Since:
Coin 2.4.2
TGS Inventor 4.0
Author
Generated automatically by Doxygen for Coin from the source code.
Referenced By
The man page SoTexture2.3coin2(3) is an alias of SoTexture2.3coin3(3).
Wed Aug 2 2017 Version 3.1.3 Coin