text: Economic analysis to aid in the implementation of public policy made major strides in the 1960s when organizations such as the Rand Corporation and Resources for the Future began systematically applying benefit–cost analysis (BCA) to regulatory choices. A further burst of enthusiasm for economic analysis swept the policy world in the 1970s and 1980s. This surge gained momentum from the nearly revolutionary impact of economist Alfred Kahn and his merry band of academic warriors who disrupted long-standing political equilibria, brandishing economic analysis as their primary offensive weapon. The movement garnered support from the White House in both the Carter and Reagan administrations. During the latter an Executive Order issued in 1981 mandated that executive branch regulatory agencies formally include benefit–cost analysis in their evaluation of rules. The BCA approach was likewise endorsed by the George H.W. Bush, Clinton, George W. Bush, and Obama administrations to follow.


text:
PRO-MELTER RS mark F (formate basis)
Liquid de-icing reagent PRO-MELTER RS mark F – is an effective deicing reagent for runways and aprons. It meets all the strict environmental requirements as well as the requirements for corrosion resistance. PRO-MELTER RS-F can be effectively used on airfield pavements at temperatures up to -34 ° C. In some cases, it is possible to use it at the lower temperatures increasing the application rate.
Having a weather forecast of a possible ice formation or during the beginning of ice formation process PRO-MELTER RS-F is applied on the surface cleaned from snow and ice. Ice formation preventing mode involves regular repetition of the reagent application, corrected by the weather conditions and the state of the band.
Information about corrosive action
Specially developed corrosion inhibitors guarantee the safety of materials used in the aircraft industry and airport constructing industry. Tests are carried out in accordance with SAE AMS 1435.
Information about the environmental impact
PRO-MELTER RS F is fully biodegradable within 14 days
Biodegradation - 97%
Biochemical oxygen demand in 5 days - 0.008 kg / kg
Chemical oxygen demand - 0.112 kg / kg.

source: openbmb/Ultra-FineWeb


text:
Here five Factors an Instructional Adviser can help your student with School admissions:
1. Educational advisers don't ensure students admission to some specific faculty. They do, however, help students with the college search to locate colleges which are a fantastic match and affordable at precisely the same moment.
They also offer advice and help with financial aid, scholarships, as well as also the FAFSA form. Take more information about college admission programs for your kids in san diego by admission counsellor.
Image Source by Google
2. Educational advisers have enough interest and time to assist your student with whatever relevant to the school admissions process. They're readily available to speak to parents as questions arise. They counsel students on what classes to take in high school as it pertains to take the SAT and ACT, faculty visits, and also do mock interviews to help pupils prepare for meetings with faculty representatives.
3. Educational advisers make a point of locating schools who are interested in watching your student graduate in four decades, in place of the usual, five, six or even more. Paying for two extra years of college can accumulate. Most parents are amazed to observe the reduced four-year graduation rate at several colleges.
4. Educational advisers help keep your pupil organized as a way to satisfy all deadlines for supplements, applications, and financial aid and scholarships. Pupils appreciate having a program and completing a program so that there's lots of time to examine it until it has to be filed. This makes them feel in charge of the school admissions process.
5. Educational advisers adhere to strict criteria and have one goal in mind: Helping your student navigate the college admissions process. They're trained in school counseling and attend state and national conventions to keep their professional advancement.


A Configuration beyond this begins to become ever more meaningless in terms of a given lifetime, though if any student were interested, the numbers do continue. There is a mathematical meaning behind this sequence. There is also meaning as to why, in the numbers beyond 7, though the Roles repeat there is no Scholar listed. This is because when the Configuration grows to the number 13, Position 4 moves from being considered SUPPORT, to SUPPORTED and is the pivotal factor among the 12 other Positions. We will elaborate on that as time permits, but for now we will begin with the more evident and useful Configurations you may find yourself as part of in daily life. TRIAD The smallest Configuration is a TRIAD. Though we listed the correlations above, in the case of a Triad, the terms above DO NOT APPLY. When 3 people are involved, there are the very basic Positions of POSITIVE – NEGATIVE – NEUTRAL. A group of 3 will ALWAYS be a catalyst for transformation and progression through some kind of Karma, internally or externally. 3, and by extension Karma, is the very basic Configuration that allows this Universe and an Essence to grow. In groups of 3, there will usually be "issues" raised and if the Configuration is serious and committed, each new challenge will take each Fragment forward. We believe the inherent tension found in a group of 3 is where the phrase, "3 is a crowd" comes from. Based on limited time, we will quickly cover each Configuration, and then take your questions. We note here that there are NO WORKING CONFIGURATIONS of 3. QUADRATE The next Configuration is a Quadrate. In a Quadrate, the Common Goal is usually directly linked to each Fragment's own Life Task. Beyond the Quadrate, into higher numbered Configurations, the Life Task is not necessarily linked to the group goal. We say this in reference to Working Configuration ONLY; in a Social Configuration, no personal Life Tasks are necessarily relevant. As we share with you the differing Configurations, we note that EVEN-numbered Configurations up to 10 MUST have all Positions being filled by Physically-incarnate Fragments. ODD-numbered Configurations can tend to have the final, odd-numbered Position filled by non-physical Fragments acting as guides, or the Position may be filled with a Concept/Ideal representing that Position. Even the Configuration of 3 may have only two Physical participants, while the "issue" is the "third position." In most cases, however, ALL Fragments tend to be extant, except in the highly unstable group of 5. Beyond the Configuration of 10, no more "rules" apply except that the BASIC QUADRATE (4) is incarnated. In a group of 4 in either Social or Working Configurations, each will fall into one of the four basic positions inherent to that Configuration: LOVE, KNOWLEDGE, POWER, and SUPPORT. Something unique to the Positions defined in a Quadrate is that EVERY INDIVIDUAL EXTANT falls into one of these basic 4 Social Positions as a means to interact in groups with no specific goal, such as a party, or night out, or reunion, etc. No matter the size of the group, most Social groups with no goal will reduce themselves to smaller interacting groups of 4, and each Fragment interacting will take on one of these 4 Positions, however insignificantly or meaningfully. A Quadrate with a goal may have been behind organizing the event, but subsequent interaction within the event will simply be of basic socializing. We would call this additional level of Configuration with no goal, a "CASUAL Configuration". LOVE Position: This Position is the one who brings the initiation of ideas to the group. They are usually very inspiring and naturally seem to be able to get everyone "psyched up" about something to do. They do not, however, have the ability to actually make the ideas happen. In fact, it is not their "job" at all. In a group of 4, the person who inspires and generates the ideas might be best left to simply doing that. In a Social situation, this person is usually the one who initiates the gathering or comes up with the suggestions for what to do, once gathered. In a basic social situation, this is usually the most humorous, entertaining person in the group; the "social butterfly" who moves from group to group, one conversation to the next, bringing a light air to any gathering. KNOWLEDGE is the person who refines the ideas generated by LOVE. In a basic social situation, a Knowledge person will usually root themselves into a conversation, debate, or discussion with one or two people and remain there for a great deal of the event. They can sometimes become irritated by the whimsical, flittering of Love throughout the groups if this distracts from the more "serious discussions" Knowledge is having. POWER is the one who is in the position to actually make the ideas of Love, refined by Knowledge, happen. In a basic social situation, this person can express in any number of ways, but they are easily the Fragment who ultimately controls the mood and focus of the group/s. They can end the fun as easily as they can sustain it. They can shift the direction as easily as they maintain it. SUPPORT is the mediator and cohesiveness that keeps the group stable. In a basic social situation, this person will gravitate toward any position of the most use. In most cases, they will at least pair themselves with one other person. The Support person is the one who usually gets "stuck" tolerating, or listening to, any of the other Positions as they may express themselves inappropriately or tediously; such as a Knowledge wielding lengthy lectures on topics few are interested in; or the Love Position as they turn to the use obnoxiousness as a means to generate interaction; or Power as they may sit and brood for not getting what they want. Support will either find himself or herself in that situation or in the broader position of making sure everyone is having a good time and happy and taken care of. A Quadrate is the most popular and most stable of all Configurations. It is usually very successful in all endeavors, either as Social or Working Configurations. The Casual Configuration is the root of all basic, stable interactions among groups of Sentience. Incidentally, many successful sitcoms or dramas are rooted primarily in a Quadrate interacting together. Using "I Love Lucy" as the example, LUCY is the LOVE Position, Ricky is the POWER Position, Fred is the SUPPORT Position, and Ethel is the KNOWLEDGE Position. These Positions rotate occasionally, but we are speaking of the characters' interactions as a theme. In general, Love and Power tend to pair up, while Support and Knowledge do so, as experiences are generated and goals undertaken. Love and Knowledge do not necessarily "pair up", but they eventually do tend to lead the group, even if indirectly. Power and Support tend to remain "quieter", though they are the Fragments who usually find each experience's conclusion and resolution. In the example of "Lucy", though "Ethel" and "Lucy" are always leading the group into new adventures, "Ricky" and "Fred" resolve them. When participants in a Quadrate are not available, Love/Power take on either or both Positions, while Knowledge/Support does the same. Though Knowledge could take on Power, or vice versa, and Love/Support can also be exchanged, it is not as comfortable. PENTAGON When a FIFTH Position is added to a Quadrate, it then becomes a Pentangle, or Pentagon. The new Position is called a REVOLUTIONARY. In groups of 5, there will always be one person who challenges the very stability of the focus. In Working Configurations, a Pentagon is either a formidable force, or a direct disaster. In Social situations of 5, there will always be the fifth person, the Revolutionary, who will complain, fall asleep, try to redirect the group, or finally they will simply leave the group. In a successful Working Configuration of 5, the 5th Position is usually filled with a CONCEPT instead of a Person. The Beatles are an example of both a Concept as Revolution, and a Person. The Configuration when it held a 5th person collapsed in stability, but when the Position turned to a Concept, the group excelled in tremendously successful ways. While a Quadrate has a goal of manifesting or accomplishing something, a Pentagon, if seriously undertaken, is out for transforming things on great levels. SEXTET The next Configuration is a SEXTET, adding the Position of the Integrator. The Integrator becomes the strength and higher inspiration for longer-term sustenance of that Configuration. Usually, because of the inherent instability of a Pentagon, at some point, it will either shift to a Quadrate, or bring in an Integrator. A Sextet, then, is the next most popular and successful Working Configuration. The highly successful series called "FRIENDS" is a good example. This example of a Working Configuration of the characters is as follows: LOVE: Rachel KNOWLEDGE: Ross POWER: Monica SUPPORT: Chandler Revolutionary: Joey Integrator: Phoebe SEPTET The final Configuration we will comment on tonight will be the SEPTET, adding the Position of LEADER. A Septet's Goal is usually one that is based in SEARCH and DISCOVERY. Most teams of 7 are based in a common goal of seeking, exploring, discovering. Many Septets are involved in medicine, science, and metaphysics, as you may have assumed. The highly successful series of Star Trek is based primarily in Septets. The LEADER


text:
Replica of Phoenician Ship Attempts Reenactment
A 70 foot long replica of a Phoenician ship is attempting to recreate the first circumnavigation of Africa, believed to have been accomplished by Phoenician mariners 2600 years ago.
The Phoenicia left Syria in August 2008. The plan was to travel through the Suez Canal, down the east coast of Africa, around the Cape of Good Hope, up the west coast of Africa and back to the Mediterranean, then make another voyage to the United Kingdom summer of 2009. In total the voyages project to 17,000 miles and 12 months at sea. Teams of 16 multinationals crew the Phoenicia through various legs of the journey.
But the lastest update we can find is by checking in on the Phoenicia Blog. The most recent entry reads: "After 12 and a half days bobbing on the ocean, Phoenicia docked safely in Salalah, southern Oman late on Friday evening 11th." (That's September 11th, 2009.) It seems the boat made it through the Suez Canel, worked along the Yemini coast, spent some time in Port Sudan, and made it to Oman. Apparently they are moving up the coast of the Saudi Peninsula before attempting the circumnavigation. (See Google area map)
From around 1200 BC the Phoenicians thrived in the Mediterranean. Based originally on the coast of Syria, Lebanon and Palestine, they spread throughout the Mediterranean. The Phoenician civilization lasted nearly a thousand years.
The replica ship was built at Arwad Island, an ancient Phoenician city state off the Syrian coast, using traditional Phoenician construction materials and methods. The design specs were created using evidence from shipwrecks and archaeological finds, as well as advice from scholars and shipwrights. (We're are guessing the original Phoenician in 600 BC didn't have the diesel engine the replica is using, however.)
Some wonderful artwork, including photos and a series of sketches and painting by Danielle, an expedition artist, can be seen at _URL_ We suggest you start at the bottom of the page.
<> <> <> <> <>
Water Returns to the San Joaquin
On October 1, water started to flow down two stretches of the San Joaquin River in California for the first time since Truman was President. This is part of an ambitious restoration program to return chinook to the once salmon-rich river. The sections of river have been dry, except for flooding in very wet years, since Friant Dam diverted most of the river into two giant irrigation canals.
The increased flow will continue for six weeks. It is the first of several years of test releases to study the effect of restoring year-round flows to a river that has been completely dry over a 60-mile stretch.
Pivoting Steel Levy Bridge, San Joaquin Delta
The Water Issue with Solar Power
Renewable energy production takes a lot of water. With droughts and shortages in many areas, the limited supply could crimp the ability of renewable energy providers to create green energy. To illlustrate, a water war is breaking out in the dry Southwest over the dozens of large-scale solar power plants planned for the region. Depending on the technology used, some solar farms can consume more than a billion gallons of water a year in regions that receive three or four inches of rain annually.
The drought in the Southeast US that lasted from 2005 to 2007 resulted from random weather events, not global warming, Columbia University researchers have concluded. They say the severe water shortages were a result of population growth.

source: HuggingFaceFW/fineweb-edu


text:
The Auckland Council state of the environment report 2015. Published, 8 October 2015.
The report shows that since the State of the Auckland Region report was released in 2010 (by Auckland Regional Council), there have been some mixed results. Air quality has improved regionally, and areas where biodiversity is being intensively managed are making good progress. However, environmental health in freshwater and marine environments continues to decline slowly due to sediment and contaminant inputs. The footprint of urban Auckland is also expanding.

source: m-a-p/FineFineWeb


text:
Mar. 30, 2011 A new air-quality measuring instrument invented by Pat Arnott and Ian Arnold of the University of Nevada, Reno that is more economical, more portable and more accurate than older technologies has been licensed for commercial development by Droplet Measurement Technologies of Boulder, Colo.
Arnott, a physics professor in the University's College of Science, had perhaps lugged his heavy pieces of equipment one too many times through airports to faraway places to examine airborne particles. Now, his and Arnold's latest invention has reduced the laser-equipped air-monitoring equipment to suitcase size, while enhancing its measurement capabilities.
This latest, compact version of the photoacoustic particle measuring machine with its lasers, mirrors, flexible tubes, wires and relays is also cheaper and faster and should be an attractive alternative for users.
"This machine will be much more ubiquitous for measuring air quality, or more precisely, black carbon in the air, or a number of other uses," Arnott said. "Key component cost and instrument weight have dropped from $2,000 and 180 pounds to $40 and 20 pounds. This will make it more accessible to researchers, businesses and government agencies; and much easier when traveling around the world to gather data."
Over the past 12 years, Arnott, along with collaborators from the Desert Research Institute, have mapped air pollution on Los Angeles freeways, as well as in Mexico City, the rain forests of Brazil, Vancouver, B.C., and Big Bend National Park, to name a few locations. They have also worked 1,600 feet underground in an active Nevada gold mine to monitor air quality.
Arnott's invention is an improvement on earlier technology he developed with partners. Arnott, John Walker and Hans Moosmüller, all at the time with DRI, commercialized the first version of the instrument with Droplet Measurement Technologies in 2005.
The University of Nevada, Reno's Tech Transfer Office, worked out the deal with DMT to commercialize the technology.
"The new device is a smaller, less expensive photoacoustic instrument for measuring airborne particles related to air quality that makes it affordable for a broader range of uses and it promises to lead to much wider market adoption of photoacoustic technology," said Ryan Heck, director of the University's Tech Transfer Office. "Pat and DMT have worked together for years, and we were pleased to help facilitate a new product based on their collaboration."
Arnott and DMT have already built beta-versions of the device that are in use by researchers at the Lawrence Berkeley Labs and the Bay Area Air Quality District, at the Max Planck Institute for Chemistry in Europe and in locations in Mexico City. Droplet is working to produce many more that will be a fraction of the cost to users.
"We're pleased to have entered into the licensing agreement," John Lovett, CEO of Droplet said. "Pat is a leading scientist in applying photo-acoustic technology to aerosols and has partnered with DMT on developing research-grade scientific instruments for air quality assessment.
"Our new instrument, the Photoacoustic Extinctiometer -- PAX, is a next generation monitoring tool to help scientists and air quality engineers accurately assess the optical properties of aerosols that are relevant for climate change and visibility. By measuring the aerosol in its natural state (photoacoustically), without requiring filter collection, the PAX improves measurement accuracy over older competing technologies."
Arnott and Arnold, an undergraduate student in Physics at the University when he assisted Arnott with instrument development, are also working on developing a truly miniature device that may find use as an on-board sensor for real-time black carbon air pollution emission control.
Other social bookmarking and sharing tools:
Note: Materials may be edited for content and length. For further information, please contact the source cited above.
Note: If no author is given, the source is cited instead.


Take the 2-minute tour ×
I have a matrix
x = [0 0 0 1 1 0 5 0 7 0]
I need to remove all of the zeros such as
x=[1 1 5 7]
The matrices I am using are large (1x15000) I need to do this multiple times (5000+)
Efficiency is key!
share|improve this question
6 Answers 6
up vote 13 down vote accepted
One way:
x(x == 0) = [];
A note on timing:
As mentioned by woodchips, this method seems slow compared to the one used by KitsuneYMG. This has also been noted by Loren in one of her MathWorks blog posts. Since you mentioned having to do this thousands of times, you may notice a difference, in which case I would try x = x(x~=0); first.
WARNING: Beware if you are using non-integer numbers. If, for example, you have a very small number that you would like to consider close enough to zero so that it will be removed, the above code won't remove it. Only exact zeroes are removed. The following will help you also remove numbers "close enough" to zero:
tolerance = 0.0001; % Choose a threshold for "close enough to zero"
x(abs(x) <= tolerance) = [];
share|improve this answer
This fails on negative numbers Try abs(x)<= tolerance – KitsuneYMG Apr 10 '09 at 18:38
The x <= tolerance would exclude negative floating point numbers. You would probably need to expand the comparison to be x >= tolerance and x <= tolerance. The operator for logical and in matlab escapes me at this moment. – Bill Perkins Apr 10 '09 at 18:39
I corrected the answer to remove any value close enough to zero from either the negative or positive direction. – gnovice Apr 10 '09 at 18:40
Just to be different:
This has the bonus of working on complex numbers too
share|improve this answer
Those are the three common solutions. It helps to see the difference.
x = round(rand(1,15000));
y = x;
tic,y(y==0) = [];toc
Elapsed time is 0.004398 seconds.
y = x;
tic,y = y(y~=0);toc
Elapsed time is 0.001759 seconds.
y = x;
tic,y = y(find(y));toc
Elapsed time is 0.003579 seconds.
As you should see, the cheapest way is the direct logical index, selecting out the elements to be retained. The find is more expensive, since matlab finds those elements, returning a list of them, and then indexes into the vector.
share|improve this answer
Wow! Are those numbers right? I could have sworn that "y(y==0)=[];" and "y=y(y~=0);" were comparable to each other speed-wise. I'll have to check my numbers again. – gnovice Apr 10 '09 at 22:02
Never mind... I just found a blog post by Loren at the mathworks that addresses exactly this problem, and it seems to agree with your numbers. – gnovice Apr 10 '09 at 22:08
_USER_ Note that you can now use [~, ~, y] = find(y) which should give similar performance to the solution with logical indexing. – Dennis Jaheruddin Jul 23 '13 at 11:48
Here's another way
y = x(find(x))
I'll leave it to you to figure out the relative efficiency of the various approaches you try -- do write and let us all know.
share|improve this answer
Though my timing results are not conclusive to whether it is significantly faster, this seems to be the fastest and easiest approach:
y = nonzeros(y)
share|improve this answer
y = [0 2 0 1 1 2 5 2 7 0]
Then x2 and y2 can be obtained as:
x2=x(~(x==0 & y==0))
y2=y(~(x==0 & y==0))
x2 = [0 1 1 0 5 0 7]
y2 = [2 1 1 2 5 2 7]
Hope this helps!
share|improve this answer
Your Answer


text:
پیل های سوختی اکسید میکرو جامد: رویکردی چندسوختی برای برنامه های قابل حمل
|کد مقاله||سال انتشار||مقاله انگلیسی||ترجمه فارسی||تعداد کلمات|
|55033||2016||10 صفحه PDF||سفارش دهید||6505 کلمه|
Publisher : Elsevier - Science Direct (الزویر - ساینس دایرکت)
Journal : Applied Energy, Volume 168, 15 April 2016, Pages 534–543
The impact of oxygen ion transport at the electrolyte–electrode interface of a micro-solid oxide fuel cell using different fuels is investigated. Model validation is performed to verify the results versus the reported values. Furthermore, as the hydrogen-to-carbon ratio decreases, the diffusivity of the oxygen ion increases. This increase in diffusivity is observed because the number of hydrogen atoms available as the reacting species increases in fuels with lower hydrogen-to-carbon ratios. The oxygen ion conductivity and output power density decrease as the hydrogen-to-carbon ratio of the fuels decreases. The reason behind this impact is the formation of a gas-induced ion barrier at the electrode–electrolyte interface by the CO2 molecules formed during the reaction at the interface, thus blocking the flow of oxygen ions. As the oxygen ions become blocked, the output current contribution from the reaction also decreases and thereby affects the overall performance of the micro-solid oxide fuel cell. The experimental verification confirms this because of a significant decrease in the output power density. Furthermore, as per the application in portable devices, the appropriate choice of fuel can be chosen so that the micro-solid oxide fuel cell operates at the maximum power density.


text:
This page has been archived and is being provided for reference purposes only. The page is no longer being updated, and therefore, links on the page may be invalid.
Sorting Technology for Red, White Wheat Kernels
By Sharon Durham
October 15, 2008
A small-scale imaging system that inspects and sorts wheat samples and other grains at moderate speeds with 95 to 99 percent accuracy has been developed by Agricultural Research Service (ARS) scientists and cooperators.
The use of imaging for high-speed sorting of agricultural products has been limited in part by the high cost of the equipment. The new system was developed by ARS engineer Tom Pearson and engineering technician Dan Brabec at the ARS Grain Marketing and Production Research Center (GMPRC) in Manhattan, Kan. The system was first tested by Scott Haley, a wheat breeder at Colorado State University, and has since been used by several other breeders across the country.
In the new system, suitable for small-scale operations, a single camera captures color images of three sides of each kernel, and a personal computer processes the images. The system sorts 30 kernels per second, which equates to slightly more than 7.5 pounds of wheat per hour.
After classification of kernel color, the computer sends a signal to activate an air valve to divert, or sort, the kernels into a secondary container. Hard red and hard white wheat kernels were used in this study. The rate of accuracy depends upon factors such as the degree of sample "weathering" from rain and the speed at which samples are fed through the system. This system is an economical and useful instrument for sorting wheat and other grains with high accuracy, according to Pearson.
Commercial color sorters can process up to 2,600 pounds of wheat per hour. However, lower throughput with associated lower machine costs and higher accuracy is better suited for small-scale operations, such as seed cleaning and selection for plant breeders, according to Pearson.
Color sorting would be useful to wheat breeders because they often sort seed by color, which is often linked to certain traits important to manufacturers of different products such as noodles. Wheat breeders typically have only small quantities of grain available for sorting, usually less than 10 pounds. For quantities of that size, the new system is more accurate and costs much less than larger-scale sorters.
Other applications for the sorter may include detecting scab-damaged wheat, fungal-infected corn, and estimating germ size of corn kernels.
ARS is a scientific research agency of the U.S. Department of Agriculture.


text:
AISE: Redirected from...
The name you typed was found in the Diskery database but there is no article under that name; the history of that artist is included in the article now on your screen - Diskery knows that and sent you here instead. It knows this because it encountered what we call a 'Stubby Record'. The process is automatic and you cannot override it.
AISE: A modification was placed on your search request
Diskery recognized what you typed and sent you to the article under that artist's official name as archived in Diskery. Often band names are abbreviated or known under a different name or are commonly misspelled and since it is inefficient to store a separate record for each variation, Diskery links all variations to one article. You typed one of the known variations into the search box and Diskery corrected it.
AISE: modified your entry to compute the closest match
You entered garbled text into the search box, perhaps transposed letters or put a space in the wrong spot, etc. The Diskery AI algorithm (AISE) detected this and attempted to correct the text to match an entry in the database; if multiple entries found, if offers a choice. You must have entered the true letters used and the correct amount else it will not be sure and simply say that it could not find a match.
What is a Stubby Record?
A 'Stubby Record' is any record to which a redirection is used instead of a description. The redirection occurs because the information relating to this artist/band is contained within the description of another act or under another name in the database. They were used quite commonly in the original RRCA database and we inherited the process from them. Stubby Records are needed as they act as placeholders when artists have performed during their lives under many names/bands. The latest versions of Diskery still have these 'Stubby Records' but it redirects you automatically from them when they are encountered.
File record #: 38


text: This spring, GCPS students will participate in the state's Georgia Milestones assessment program. Students in grades 3-8 will take End of Grade (EOG) assessments in English language arts (ELA) and mathematics while students in grades 5 and 8 also are assessed in science and social studies. Gwinnett students in grades 3–8 will participate in the End of Grade assessment between April 17 and April 28. During the testing window, Gwinnett students in grades 3, 4, 6, and 7 will test on four days— two for mathematics and two for ELA— for approximately one hour on any given day. Students in grades 5 and 8 will test for 60 to 90 minutes on six separate days— two for math, two for ELA, one for science, and one for social studies. The window for End of Course (EOC) assessments for designated high school courses is April 26 to May 12. The tested courses are 9th Grade Literature and Composition, 11th Grade American Literature and Composition, Algebra I, Geometry, Biology, Physical Scienc, U.S. History, and Economics. Online, families can find tips for supporting their student at test time and, if needed, ways to help a student manage test anxiety. Online, families can find tips for supporting their student at test time and, if needed, ways to help a student manage test anxiety.


text:
Email Address Harvesting Software
To collect Email Ids from website, use this Mass Email extractor or Email harvesting software.
This is mainly used by marketting people to communicate a product advertisement to a large group of people (or personalized Email to list of addresses). We seek the help of email marketing products to extract electronic mail addresses from any of these sources – emails address list, text files, web pages or Url etc.,).
Use our product for free and buy it from our products page, once you are satisfied. Also you can learn how to build yourself a email extractor from URL. Read to know more.
Website Email Extractor – Input Format
Before proceeding with extracting Email addresses, let's understand the basics about Email Addresses.
Every Email address corresponds to an electronic mail Box & has a Local Part and a Domain part separated by symbol "@". (_EMAIL_)
Related Topic: How to Fetch Email Ids from Outlook Email?
There are some restrictions on what are the allowed characters (Alphabets, Special characters, Numbers etc.,) in these sections. To know more details about limitations of these 2 sections refer to the guidelines of RFC 6531 or Wiki reference at end of this article.
Limitations of Email Extractor: At this point, we are going to assume the below points for our VBA code to work.
- Local & Domain part does not have SPACES, Double Quotes and any of these special characters "(),:;<>@[\]".
- Excel Cell has limitation for number of characters. If the text content has very huge content, modify the code to read the content from a text file and parse the email Ids.
How to Extract Email address from Website or URL?
The Excel Macro VBA code in this page scans the text content, character by character and extract email Ids from website (local & domain parts) in that page.
- If the content is in text file, copy paste the text file to Excel sheet 1, cell A2 and execute this code.
- If the content is in webpage, get the HTML source of the webpage and paste in the Excel in same location as above.
Once, the content is copied to Excel sheet (Excel macro for beginners), press Alt+F11 to go to VB Editor. Then cope paste the below code and Execute the code by pressing F5.
Note: By Combining this code and the code from this page, you can make code to extract emails from websites all by yourself.
Private Sub Email_Extractor_From_Website() Dim oWebData As Object, sPageHTML As String, sWebURL As String 'Change the URL before executing the code sWebURL = "_URL_" 'Extract data from website to Excel using VBA Set oWebData = CreateObject("MSXML2.ServerXMLHTTP") oWebData.Open "GET", sWebURL, False oWebData.send sPageHTML = oWebData.responseText 'Get webpage data into Excel Extract_Email_Address_From_Text sPageHTML End Sub '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Visit our website for more Tips and Tricks'---- Officetricks.com ----''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Private Sub Extract_Email_Address_From_Text(Optional Text_Content As String) Dlim_List = " ""(),:;<>@[\]" 'Get Text Content and assign to a Variable If Text_Content = "" Then Text_Content = ThisWorkbook.Sheets(1).Cells(2, 1) End If Web_Page_Text1 = Text_Content If Web_Page_Text1 = "" Then MsgBox "Error: No Input Provided - Provide Input" Exit Sub End If 'Scan each word in Text and Extract Email Addresses ORow = 2 While (Web_Page_Text1 <> "") 'Locate position of symbol "@" First_@ = VBA.InStr(1, Web_Page_Text1, "@", vbTextCompare) 'If there is no occurance of "@" then terminate process If First_@ = 0 Then GoTo End_sub: 'Seperate Web_Page_Text2 = VBA.Mid(Web_Page_Text1, 1, First_@ - 1) Web_Page_Text3 = VBA.Mid(Web_Page_Text1, First_@ + 1) Dlim_Pos_Max = 99999 Dlim_Pos_Min = 0 For i = 1 To VBA.Len(Dlim_List) Dlim_2_Compare = VBA.Mid(Dlim_List, i, 1) Dlim_Pos = VBA.InStrRev(Web_Page_Text2, Dlim_2_Compare, -1, vbTextCompare) If (Dlim_Pos > Dlim_Pos_Min) And (Dlim_Pos > 0) Then Dlim_Pos_Min = Dlim_Pos Dlim_Pos = VBA.InStr(1, Web_Page_Text3, Dlim_2_Compare, vbTextCompare) If (Dlim_Pos < Dlim_Pos_Max) And (Dlim_Pos > 0) Then Dlim_Pos_Max = Dlim_Pos Next i If Dlim_Pos_Max = 0 Then GoTo End_sub: 'get Email list to Text Variable Email_Domain_Part = VBA.Mid(Web_Page_Text3, 1, Dlim_Pos_Max - 1) Email_Local_Part = VBA.Mid(Web_Page_Text2, Dlim_Pos_Min + 1, VBA.Len(Web_Page_Text2) - Dlim_Pos_Min) Mail_Address = Email_Local_Part & "@" & Email_Domain_Part 'Scan through remaining content ORow = ORow + 1 ThisWorkbook.Sheets(1).Cells(ORow, 2).Select ThisWorkbook.Sheets(1).Cells(ORow, 2) = Mail_Address Web_Page_Text1 = VBA.Mid(Web_Page_Text1, Dlim_Pos_Max + First_@ + 1) Wend End_sub: MsgBox " Process Completed" End Sub
Email Extractor Software Download
In recent Google and Web technology we use these fancy words like Spider, Crawler often. Such software sweep through complete code or content and extract the information that they are meant to harvest.
Thus this Excel VBA Code is an Email Spider which provides email marketing help. Huge number of Emails can be extracted with this automation process in just one click, which will save lot of manual effort.
Download Free Email Extractor from Website to Excel Downloaded 1,318 Times
Note: Refer to the limitations explained in Format of Email Address & Wiki reference, before using this template. If the code is not working at some point, it might be due to the limitation explained in these sections.
Wiki Reference: Email addresses format and limitations


text:
Candelilla plant are native to North American deserts, and their wax has been used for centuries in a variety of industries, including cosmetics and pharmaceuticals. We will cover everything you need to know about Candelilla plants, including their care, uses propagation, and presence in Arizona, in this comprehensive guide.
Candelilla Plant Care:
The succulent plant candelilla (Euphorbia antisyphilitica) is native to northern Mexico and the southwestern United States. It is notable for its waxy leaves and stems, which aid in water conservation in its native arid habitat.
Here are some tips on caring for Candelilla plants:
- Light: Candelilla plants prefer direct, bright sunlight. They can withstand some shade, but too much shade can cause leggy growth.
- Water: Candelilla plants are drought-tolerant and do not need to be watered frequently. Allow the soil to completely dry between waterings. Overwatering can result in root rot.
- Soil: Candelilla plants prefer well-draining, slightly alkaline soil. A commercial cactus or succulent mix is an excellent option.
- Temperature: Candelilla plants are hardy and can withstand a wide range of temperatures, but they prefer temperatures ranging from 50 to 90 degrees Fahrenheit (10 to 32 degrees Celsius). They can withstand light frosts but should be protected from freezing temperatures for an extended period of time.
- Humidity: Candelilla plants aren't picky about humidity, but they don't like being misted or exposed to high humidity.
- Fertilizer: Candelilla plants do not require frequent fertilization. Use a balanced, water-soluble fertilizer every few months during the growing season if you choose to fertilize.
- Pruning: Pruning can help your Candelilla plant keep its shape and size. To encourage bushier growth, prune back any leggy growth.
Following these guidelines will ensure that your Candelilla plant thrives and provides you with many years of enjoyment.
Uses of Candelilla Plants:
Candelilla plants have a variety of uses, both practical and decorative:
- Industrial applications: The wax produced by the Candelilla plant has a wide range of industrial applications, including its use as an ingredient in cosmetics, candles, polishes, and inks.
- Ornamental uses: Candelilla plants are frequently used as ornamental plants due to their distinct appearance and interesting growth habit. They are popular in rock gardens and xeriscaping.
- Medicinal uses: Candelilla plants have been used medicinally by indigenous peoples throughout their native range. The plant possesses anti-inflammatory and analgesic properties.
- Food: Candelilla leaves and stems are edible and have historically been used as a food source by indigenous peoples. They contain a lot of vitamins and minerals.
- Livestock feed: Candelilla plants are also used as livestock feed, particularly during times of drought or other adversity when other food sources are scarce.
It is critical to note that using Candelilla plants for medicinal purposes should be done under the supervision of a qualified health professional, as some parts of the plant can be toxic if consumed in large quantities.
Propagating Candelilla Plants:
Propagating Candelilla plants is relatively easy, and can be done through several methods:
- Cuttings: Stem cuttings can be used to propagate Candelilla plants. Cut a 2-3-inch-long stem segment with a few leaves and let it callus over for a few days before planting in well-draining soil. Maintain moist but not waterlogged soil in bright, indirect light.
- Division: Candelilla plants can be propagated by division as well. Dig up the plant carefully and divide it into smaller clumps, taking care not to damage the roots. Plant each clump in a separate pot with well-draining soil.
- Seed: Candelilla plants can be propagated from seed, but this method is more difficult and less dependable than the others. If you want to start from scratch, sow the seeds in well-draining soil and keep them in bright, indirect light. Keep the soil moist but not wet, and plan on germination taking several weeks.
Whatever method you use, be patient because it may take several months for the new plants to establish and begin growing. Keep in mind that Candelilla plants, like all succulents, grow slowly and may not produce many offsets.
Candelilla Plant in Arizona:
Candelilla plants can be found in deserts throughout the southwest, including Arizona. Due to the extreme heat and dryness, candelilla plant cultivation in Arizona can be difficult. It is critical to provide bright, direct sunlight and well-draining soil when growing Candelilla plants in Arizona. It is also critical to water them infrequently and to avoid over-watering, which can cause root rot.
Candelilla wax is a natural, vegetable-derived wax derived from the Candelilla plant (Euphorbia cerifera). The plant grows wild in arid areas of Mexico and the southwestern United States, and its wax has been used for centuries. Candelilla wax has a high melting point, making it an ideal ingredient for a variety of products such as cosmetics, candles, and pharmaceuticals.
The wax is made from the Candelilla plant's leaves and stems. It is a hard, yellowish-brown wax that is obtained by boiling the plant in water and then straining the liquid. The wax is then refined and processed to remove impurities.
Candelilla wax is a versatile and long-lasting ingredient valued for its natural properties. It is non-toxic, hypoallergenic, and free of hazardous chemicals. Candelilla wax is also vegan and cruelty-free, making it an appealing alternative to other animal-based waxes.
Candelilla wax is used in cosmetics as an emulsifier, thickener, and skin protective barrier. It aids in the retention of moisture and the creation of a smooth, glossy finish in products such as lip balms and balms.
Because of its high melting point, Candelilla wax is a popular alternative to paraffin wax in candles, making it ideal for use in hot climates. Candelilla wax candles burn cleanly and produce less soot, making them a safer indoor option.
Overall, Candelilla wax is a versatile and long-lasting ingredient with natural properties that have been used for centuries. Candelilla wax is an excellent choice if you are looking for a natural alternative for your cosmetic or candle-making products.
To summarise, Candelilla plants are tough and adaptable plants that have been used for centuries for wax and other purposes. Candelilla plants can thrive in a variety of environments with proper care and growing conditions. Whether you want to grow Candelilla plants for their wax or simply as an ornamental plant, this comprehensive guide will give you everything you need to get started.
Frequently Asked Questions
The candelilla plant is a desert shrub native to Mexico and the southwestern United States. It is well-known for its tough, spiny leaves and stems, as well as the wax it produces.
Candelilla is a tough and adaptable plant that can withstand extreme heat and dryness. It requires well-drained soil and direct sunlight. It is also drought-tolerant and does not need to be watered frequently.
Seeds or cuttings can be used to propagate the Candelilla plant. Take stem cuttings in the spring or summer and plant them in a well-drained soil mix to propagate from cuttings. Keep the cuttings in a bright, warm place and water them sparingly until roots form.
The Candelilla plant is used for a variety of purposes, including ornamentation, wax production, and as a source of food and medicine for indigenous communities. The plant's wax is used in a wide range of products, including cosmetics, candles, and pharmaceuticals.
Yes, the Candelilla plant is native to the Southwest, including Arizona. It is well-suited to the region's hot and dry climate.


Secret Underground Cities | Books and Media | 28DaysLater.co.uk
Secret Underground Cities
Not open for further replies.
Oxygen Thief
Staff member
Secret Underground Cities (Paperback)
by Nick McCamley
# Paperback: 270 pages
# Publisher: Pen & Sword Books Ltd (April 2000)
# Language English
# ISBN: _PHONE_
Describes the major, WW2 UK government underground works
SECRET UNDERGROUND CITIES' is the history of the series of vast underground arsenals, factories and control bunkers built by the British government during the Second World War, and of the new uses found for many of these subterranean cities as nuclear shelters and command centres during the period of post-war, cold-war paranoia.
Many of these underground sites were concentrated in the Corsham area of North Wiltshire, where hundreds of acres of disused stone mines, buried over 100' below the peaceful rural landscape, were converted at the cost of tens of millions of pounds, into huge and awesome bomb-proof cities.
After an introduction explaining the inter-war military, economic and political factors that influenced the government's policy on underground protection, the book goes on describe in detail the construction and operation of all the major sites including: (1) CENTRAL AMMUNITION DEPOT CORSHAM (Tunnel Quarry, Monkton Farleigh Quarry, and the Ridge/Eastlays underground complex)
(2) The two-million square foot SPRING QUARRY underground aircraft engine factory at Corsham, and the other smaller but similar sites at DRAKELOW, WARREN ROW, WESTWOOD and DUDLEY
(3) The sinister and secret underground repositories built to house the contents of the National Gallery at MONOD, in the bleak mountains to the North of Ffestiniog, and the deep stone quarry at WESTWOOD in Wiltshire that housed the greatest treasures of the V&A and the British Museum.
(4) The underground headquarters built in BROWNS QUARRY (later known as RAF RUDLOE MANOR) to house the headquarters of No.10 Group, Fighter Command. This later became the hub of the Western sector of the 'Rotor' radar system, and later still became of pivotal importance in the government's system of nuclear war headquarters.
(5) Amongst the other WW2 sites covered are the RAF storage depots at FAULD, HARPUR HILL and CHILMARK as well as the Admiralty and MoS depots at COPENACRE, MONKS PARK, HAYES WOOD (Limpley Stoke) etc.
The final section of the book describes in some detail how, in the 1960's, the underground factories at Drakelow and Warren Row were converted into Regional Seats of Government for use in event of nuclear war. It also describes how Spring Quarry at Corsham became the National Government War Headquarters, (the fabled city of Burlington), from where the government would launch any retaliatory nuclear attack, and which would become the home of the War Cabinet and the Chiefs of Staff Committee, together with some 5,000 Civil Servants.
Buy from Amazon.co.uk
Last edited:
Not open for further replies.
Similar threads


text:
Optical Gas Imaging Payload Featuring Thermal by FLIR®
FLIR is the exclusive global distributor of the Workswell GIS-320 Thermal by FLIR optical gas imaging payload for unmanned aerial systems, unmanned ground vehicles, and mobile platforms. Built around a FLIR cooled infrared detector, the GIS-320 visualizes methane, hydrocarbons, and VOC emissions from oil and gas production, transportation, and use. When operated from a central location, users can easily and safely detect hard to reach leaks or inspect wellheads spread out over a wide area in one pass. The GIS-320 with Thermal by FLIR technology is a valuable addition to any leak detection and repair (LDAR) program, eliminating the need for costly remediation and avoiding harm to the environment.


How Many Syllables are in Erostrate | Divide Erostrate into Syllables
How many syllables are in erostrate? 3 syllables
Divide erostrate into syllables: e-ros-trate
How to pronounce erostrate:
US English Accent and Pronunciation:
British English Accent and Pronunciation:
Definition of: Erostrate (New window will open)
Freelance Writing Opportunities
Erostrate Poems: (See poems with this word. New window will open)
Synonyms and Words Related to Erostrate
(0 Syllables)
What do you think of our answer to how many syllables are in erostrate? Are the syllable count, pronunciation, words that rhyme, and syllable divisions for erostrate correct? There are numerous syllabic anomalies found within the U.S. English language. Can erostrate be pronounced differently? Did we divide the syllables correctly? Do regional variations in the pronunciation of erostrate effect the syllable count? Has language changed? Provide your comments or thoughts on the syllable count for erostrate below.
Comment on the syllables in Erostrate
A comprehensive resource for finding syllables in erostrate, how many syllables are in erostrate, words that rhyme with erostrate, how to divide erostrate into syllables, how to pronounce erostrate in US and British English, how to break erostrate into syllables.


text:
If your linked server connection doesn't work, you won't get far when you try to run distributed queries. Here are some common problems you might encounter when configuring the Oracle client, along with ways to overcome them:
- Receiving an Invalid Login message. This problem occurs when the login you use to connect to the linked server isn't valid on the Oracle server. To test the login's validity, first try to connect using the Oracle sample Scott/tiger user ID and password.
- Receiving the message Credential Retrieval Failed. This message appears when the client machine is trying to use NTS authentication and authentication is failing. You can correct this problem by commenting out the following parameter in the sqlnet.ora file on the client machine: _TAG_.Authentication_services = (NTS). (The # symbol designates a comment). You can find the sqlnet.ora file in the \oracle\ora92\network\ADMIN directory.
- Can't connect from a WAN link or from a different subnet. This problem can occur when the Oracle listen port isn't available. Make sure port 1521 is open. If this port is open, double-check the Oracle listener's configuration to determine whether the default port has changed.


text:
Certain areas require more information on noise levels than can be provided by a simple noise survey. There may be a requirement to view sound pressure levels everywhere in a workplace, or around a particular piece of plant and machinery.
Noise mapping can provide that detail. The concept is very simple – a noise map is just a visual representation of noise levels in a workplace in the form of a contour map. Contours are usually coloured to indicate intensity of noise, presence of high or low frequencies etc., and the map is usually overlaid on a plan of the area or workplace.
Though simple in principle, accurate maps can be difficult to produce in practice, particularly in dynamic environments where noise sources are intermittent and unpredictable. This can be overcome to a certain extent by taking multiple measurements, time weighting measurement data, and using noise prediction techniques. Noise mapping software can also be used to generate personal noise exposures based on position and movement through the workplace.
Shorcontrol have produced high-quality internal noise maps for several clients.
- Visualisation of acoustic environment
- Maps overlaid on client's blueprints/site plans
- Range of information can be displayed – intensity, frequency, peak levels etc.
- Visual differentiation of 'safe' and 'unsafe' zones possible
Useful Resources and Links:


text:
Weiss Technik Optimises Test Performance
Thursday, 15 June 2023
Best-seller from Weiss Technik- Perform a lot of tests without a lot of space. The rapid growth of electromobility is also driving the demand for batteries and components. More production means more tests. But this also takes up more space and energy. This is where the tried and tested LabEvent test chamber from Weiss Technik comes in. On a footprint of only 1 × 1 m, the compact laboratory performs temperature tests for batteries and electronic components. The device is also extremely flexible and economical.
A lean solution
This is how to meet the increasing demand for reliable products. With the LabEvent T/500/30/3, temperature tests for batteries and electrical components can be carried out in the smallest of spaces. It offers a volume of 500 l with small external dimensions of 1 m in width and depth and 2 m in height. Installation is both simple and flexible – the unit can be operated from any 230 V socket with economical power consumption. The operation is also convenient: the user places the test material in baskets distributed on several levels; these can be completely extended by means of rails.
The test chamber is suitable for temperature tests from −30°C to to 100°C. The rate of temperature change is 3°C per second. The test chamber heats or cools the test space evenly using an environmentally friendly and thus future-proof refrigerant.
Variable and standard-compliant
The test device adapts to the respective customer requirements; for example, for a minimum temperature as low as −40°C or extended climate tests. Higher safety equipment for battery tests can also be integrated in stages – up to Hazard Level 4 on the scale of the European-defined hazard classes. Depending on the configuration, the test chamber protects against reversible functional losses (Level 1) as well as leaking battery fluid (Level 4).
The LabEvent masters the temperature tests for stress tests in the battery environment in compliance with the standards. This includes the requirement according to UN 38.3, which ensures that the lithium batteries and cells do not pose a danger during transport. For this purpose, the batteries undergo numerous test cycles. The chamber also meets the ESA 100 standard; it is thus suitable for the validation of market readiness by battery engineers and manufacturers. It also meets the specification according to DIN EN 60068-2-14, which involves testing rapid changes in ambient temperature, a standard task for the system.
Among its many advantages, the compact test device can also be integrated into existing test stand systems via an interface. For Weiss Technik, the LabEvent is a success story. The 50th test chamber was recently delivered to a test laboratory in Aachen – painted in the brand colour of the institute to mark the anniversary.


text:
Apache Kafka is widely used to enable a number of data intensive operations from collecting log data for analysis to acting as a storage layer for large scale real-time stream processing applications. In some of the largest deployments, Kafka powers on the order of hundreds of billions of messages per day, amounting to moving hundreds of terabytes of data. The ability to compress data is, therefore, paramount to Kafka. In this blog post, I outline how compression works in Kafka and how we improved its efficiency to optimize performance.
A quick overview of compression in Kafka
In Kafka compression, multiple messages are bundled and compressed. Then the compressed messages are turned into a special kind of message and appended to Kafka's log file. The reason to compress a batch of messages, rather than individual messages, is to increase compression efficiency, i.e., compressors work better with bigger data.
More details about Kafka compression can be found in this blog post.
There are tradeoffs with enabling compression that should be considered. Compression, of course, saves space needed for data storage. On the other hand, it consumes extra computing resources, namely CPU cycles and memory, to perform compression. The use of compression should be therefore decided with consideration of the balance of cost and benefit. To make the compression applicable to wider usages of Kafka, we set out to improve Kafka compression support by reducing the cost.
Lots of byte copies!
The cost reduction comes from two places. One is a compressor and the other is the handling of compressed data. We didn't change the compressors themselves because we would prefer to keep them as black boxes for Kafka. Instead, we tackled the handling of compressed data after we had noticed that there were a significant number of byte copies happening when a compression is turned on — byte copies which caused a noticeable load on Kafka servers.
Before examining each byte copy, let's take a look at how a Kafka message is formatted.
The CRC field is a hash value of everything after the CRC field. As its name suggests, we computed it using the CRC-32 algorithm. The attributes field is a fixed length field that has bit flags that Kafka internally uses. The contents of the message key and the message body are variable length sequence of bytes. They are prefixed with the length fields.
As described earlier, the compressed messages are turned into a special message. This special message has a compression flag on in the attributes to be distinguished from regular messages. The compressed messages are stored in message-content of the special message as a single chunk of bytes.
Now, let's review why we had so many byte copies.
When formatting the special message we must compress the bundle of messages first. Otherwise, we wouldn't be able to write message-length because it is not possible to predict the compressed size precisely before performing the compression. Similarly, we cannot write CRC before we know the value of message-content, compressed messages, because we need to know its value to compute CRC. The compression therefore has to be done first.
In the previous implementation, we used ByteArrayOutputStream to receive and hold the compressed data from the compressor. After compression was done, we created a byte array of its content using the ByteArrayOutputStream.toByteArray method, before we formatted the message. The message was then written to an IO buffer. How many times was a byte copied from the compressor to the IO buffer?
- compressor => ByteArrayOutputStream
- ByteArrayOutputStream => a byte array
- a byte array => Message (ByteBuffer)
- Message => IO buffer (ByteBuffer)
At least four times with the possibility of one more copy. The extra copy might come from the internal buffer management of ByteArrayOutputStream. ByteArrayOutputStream is a doubling buffer. It doubles the size of its internal buffer every time it runs out of space. It creates a new byte array twice as big and copies the entire buffered content over to the new byte array. The benefit of doubling the buffer is that the average number of copies per byte, due to buffer expansions, will not exceed one regardless of the number of buffer expansions. Hence, the total number of byte copies are four or five.
Copying data four or five times is a lot. In general, there is a large amount of data flow in and out of a Kafka server. Copying entire data five times in a server was not ideal and there was definitely room for improvement.
How we removed the extra byte copies
In the new implementation, we wrote a new output stream class named BufferingOutputStream, which works as a variable length buffer like ByteArrayOutputStream. It was aimed for eliminating a number of copies in a few places: formatting, buffer content access and buffer expansion.
#1 Formatting. BufferingOutputStream can create a nested output stream by calling BufferingOutputStream.reserve(int). The number of bytes specified by the argument are skipped from the current position. Basically it creates a hole in a byte stream. Write calls after the reserve call is continued immediately after skipped bytes. The method returns a new output stream which allows data to be written to the skipped bytes later.
The reserve method is used to allocate spaces for CRC and message-length. After compressed data is written, CRC and message-length are written to the internal buffer of BufferingOutputStream through output streams returned by the reserve method.
#2 Buffer content access. BufferingOutputStream does not have the toByteArray method. Instead, it has writeTo(ByteBuffer). It is not necessary to create a byte array object just to copy the buffer content to ByteBuffer. BufferingOutputStream.writeTo() directly writes the content to ByteBuffer and makes a byte array creation unnecessary.
#3 Buffer expansion. The internal buffer of BufferingOutputStream is not implemented as a single byte array but a list of byte arrays. Whenever the buffer space is exhausted, it allocates a new byte array and appends it to the list, so nocopying occurs. In addition to avoiding copying, this structure has a favorable effect on JVM memory management, whereas doubling buffer sometimes causes GC issues. Doubling buffer requires continuous free memory for a new buffer. JVM memory manager has to run a garbage collection when it fails to find a large enough continuous free space. It is most troublesome when many growing doubling buffers coexist in a system and compete for memory resources.
Now, how many times is a byte copied from the compressor to the IO buffer?
- compressor => BufferingOutputStream
- BufferingOutputStream => IO buffer (ByteBuffer)
Each byte is copied only twice as opposed to previous four or five times!
On my laptop, I tested the performance using a test program, kafka.TestLinearWriteSpeed, using Snappy compression. This is not an end-to-end performance test, but a kind of component benchmarking which measures the message writing performance. Previously the throughput was 26.65 MB/sec. With the change it is now 35.78 MB/sec. The improvement is about 34% better throughput. Just removing extra byte copies resulted in 34% improvement was more than I expected. One thing not covered by this benchmark was the effect on GC. In addition to the saving in CPU, we should see better GC behavior in a real production system, especially a large deployment.
We are happy with the result and hope to see more users try the compression feature.


text:
In British Columbia, Joint Health and Safety Committees are required in workplaces where 20 or more employees are regularly employed or where otherwise required by order. But is the only reason to have a Joint Committee the fact that we are legally required to have one?
If that is how you feel about Joint Health and Safety Committees, it may help to learn about where they came from and why they were deemed necessary. We train a lot of Joint Health and Safety Committee members from our offices in Kamloops, and part of our training always deals with the why behind the requirements. In other words, "what got us here?" We are safety professionals after all, and a huge part of our job is to look at problems within organizational systems and ask the how and why questions.
As it turns out, the why behind Joint Health and Safety Committees can be traced back to 1974 at the Elliot Lake Uranium mine in Ontario. It was there that workers went on strike over health and safety concerns arising from high incidents of lung cancer and silicosis. That's right, in this pre-right to refuse unsafe work work-scape you had to strike in order to demand a healthy and safe work environment. The video below explains the events in 1974 well:
Since the events at Elliot Lake, the role of the Joint Health and Safety Committee has evolved and expanded. Today the duties and responsibilities for committees in BC look like this:
With so many duties and responsibilities it is no wonder that Joint Health and Safety Committee member require training to do their jobs effectively. We have developed a suite of Joint Health and Safety Committee training courses to assist our clients with establishing and maintaining a truly effective JOSH Committee. We currently offer the following classes for JOSH committee members:
JOSH Committee Fundamentals; learn about:
Hazard Identification; learn about:
Accident Investigations; learn about:
Phone our head office at _PHONE_ or email us at _EMAIL_ for more information about our Joint Health and Safety Committee Courses.


text:
How were Jatayu and Sampatti able to fly towards the sun when there is no air in the space intervening between the earth and the sun?
by Chaitanya CharanSeptember 9, 2012
In your lecture about Ramayana you were telling how Jatayu & Sampath were flying towards the sun when Sampath's wings were burnt. According to modern science there is vaccuum in the space so how without any air were these birds able to fly in space?
Leave a Response


text:
Minor shakespeare characters who we pay tribute to five (very) minor shakespeare characters that henry v a recurring character in shakespeare. The henriad is william shakespeare's finest achievement and henry v — is william shakespeare's finest achievement (through a minor character he. Need help on characters in william shakespeare's henry iv part 2 henry iv part 2 characters from litcharts minor characters. An examination of falstaff and what makes him shakespeare's greatest comedic character henry iv character introduction characters of shakespeare's. Shakespeare's henry v with study guide henry v please see the bottom of this page for helpful henry v resources.
A list of all the characters in henry iv, part 1 henry iv, part 1 henry v henry iv, part 1 william shakespeare contents. Henry v henry viii if minor lapses caused by drunkenness are not to be tolerated, henry v (no fear shakespeare) $499 | save 10 . Shakespeares plays, maybe because of falstaff shakespeares henry v minor characters com - sir john falstaff is a comic character in a,.
William shakespeare's henry v is a history play centering on the heroic deeds of england's characters henry v: minor characters:. Henry v is displayed as an honest and noble character shakespeare explores this nature of integrity clearly by displaying the audience with henry's innermost thoughts in addition to presenting him with situations, which test his virtue. Dealing with the tumultuous events of english history between the death of henry v in 1422 and of minor characters s william shakespeare:. 'henry v' by shakespeare is a rich and serious play, but it can be hard for some students to understand this list of questions will help you test their comprehension of the characters, story, theme, and symbolism. Need help on characters in william shakespeare's henry v check out our detailed character descriptions from the creators of sparknotes.
Shakespeare's henry v minor characters essay social positions explored in shakespeare's henry v shakespeare's henry v explores the relationship and variations. A list of all the characters in henry v the henry v characters henry iv, part 1 henry v like most of shakespeare's plays, henry v exists in two. Discover librarian-selected research resources on henry v (shakespeare's development of minor characters supports and on shakespeare's henry v. The role of minor and ephemeral characters in shakespeare's henry v inquiries journal, 8 the role of minor and ephemeral characters in shakespeare's henry v. Il porte sur henry v de william shakespeare et sur l'adaptation with only minor editing offered on the characters and events of 1 and 2 henry iv.
75 quotes from henry v: 'from this day to the ending of the world,but we in it shall be remembered-we few, we happy few, we band of brothersfor he to. William shakespeare's play henry iv tells the story of one young prince's transformation from a wasteful youth to an honorable and heroic king in. Below is a list of all shakespeare's characters in henry v: king henry the fifth, duke of gloucester, & duke of bedford, brothers to the king, duke of exeter, uncle to the king, duke of york, cousin to the king, earls of salisbury, westmoreland, and warwick. Shakespeare's 25 greatest characters tom hiddleston as henry v in the hollow crown] a radical restaging of a minor modern classic 3.
King henry the fourth characters guide studies each significant player's role and motivation in this play. An examination of falstaff and what makes him shakespeare's greatest comedic character henry iv character introduction characters of shakespeare. - the evolution of shakespeare's henry v foremost among the characters william shakespeare develops in his series of the character of henry v henry,. Entirely the creation of shakespeare, falstaff sir herbert beerbohm tree as falstaff in william shakespeare's henry famous characters, such as shakespeare.
Henry v study guide contains a biography of william shakespeare, literature essays, a complete e-text, quiz questions, major themes, characters, and a.


Slow app execution to allow Google sheet time to recalculate
Hi
In my app based on Metric Rat's CRUDQ 11 guide I am having a problem with the data in ListWiew renewing before the spreadsheet has recalculated formulas after the App updates data in some fields. The first photo is the code I am using and the second is the continuation of photo 1.
Basically what I want to do is to update the data in Columns C & D and with that update Column F gets recalculated to the number of people shown as "In" in Column C.
 1. The updated sheet is called into ListView and occasionally the data in Column F has not had time to recalculate so is old and wrong.
 2. Also - I want to notify the user that when value of the Users Field in Column F is zero and Column C is "Out" that they are the last to leave the building and must set the burglar alarm. this is done by reading the updated data from the spreadsheet and placing it in two textboxes as shown in Photo 2. Unfortunately the text boxes don't update in time.
Is there any way to delay the execution of the steps in the program for say 2 seconds at the point between updating the spreadsheet (say at the end of execution of CRUDllAction and calling it back to listview?
Do not update items in the app until the new data returns from the spreadsheet.
Yes - the problem is that the new data sometimes returns to the app before the spreadsheet has completed its recalculation so the new data in the app is wrong.
Make the first call to your spreadsheet, when that data returns make the second call, then load all the data together.
I didn't quiet understand your answer but tried several versions of what I thought you meant and when that failed I dropped the feature I was planning to use. I also found your post at How do you display current time through a label? which solved other problems I was having in refreshing the time using Timepick by using part of the script so thanks greatly for that.
Does this clarify ?
Thanks so much for that.clarification.
This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.


text:
In transportation infrastructure design the route is defined based on its axis (centreline) – the alignment model. This simplified abstract model is designed in such a way to clearly define the principle course of the infrastructure project.
For most of the transportation means the infrastructure alignment design is split into two main two-dimensional complex strings: the horizontal alignment and the vertical alignment.
The horizontal alignment consist of three types of elements:
- Line segments – straights
- Circular arcs
- Transition curves
The movement of the transportation vehicle over circular elements is generating lateral accelerations, dependant on the speed of the vehicle and on the radius of the curve. In order to avoid the sudden change of these accelerations when passing from a curve to a different curve or a straight, the horizontal alignment includes transition curves. These curves have a continuous variation of curvature, ensuring the smooth transition between the horizontal alignment elements of constant curvature.
The most well-known transition curve is the Clothoid. In its real world application the clothoid enables a car driver to ride smoothly by turning the steering wheel with a constant speed, defining a clothoidal spiral, a continuous and linear curvature variation.
A curve with so many names …
The clothoid equations were first defined by Leonhard Euler; this is why, in general Physics the curve is often called Euler spiral. The French physicists Augustin-Jean Fresnel and, later, Alfred Cornu, rediscovered the curve and defined its parametric equations – hence the curve is sometimes called Fresnel or Cornu spiral.
(source of the image: Levien, R. (2008) The Euler Spiral: A mathematical history.)
In 1890, Arthur N. Talbot, Professor of Municipal and Sanitary Engineering at the University of Illinois, defined for civil engineering the "railway transition curve" (Talbot – 1912), with similar equations as Euler did for elasticity and Fresnel and Cornu for optical applications.
The name clothoid was suggested by the Italian mathematician Ernesto Cesàro. The word clothoid comes from klothos, the Greek word for spin (wool) the shape of the curve thread that wraps around the spindle. The same root appears in the name of Clotho (The Spinner), one of the three Fates who holds the thread of human destiny.
Clothoid geometry and (some) math
The clothoid equations can be defined starting from the condition of linear relation between radius and length:
This defines an infinite spiral, starting from the origin (x=0, y=0, R=∞, L=0) and spinning in two infinite loops to two points where R=0 and L=∞:
The constant A is called flatness or homothetic parameter of the clothoid.
The clothoid coordinates and the majority of the other characteristic elements of the spiral can be defined based on this essential parameter. For example, the clothoid curvature gradient is 1 in A².
In road design, an alignment developed to have all the transitions with practically the same A is seen as an optimum design, providing similar comfort conditions from the point of view of the variation of the lateral acceleration across all the transitions of that route. Some of the national road design standards are considering this criteria together with superelevation and aesthetic conditions (TAC – 2009).
In railway design an alignment developed with constant A is providing constant rate of change of the Equilibrium Cant (the sum of the rates of change of cant and cant deficiency). If this is done together with a constant E/D ration across all the curves, that alignment will provide practically the same comfort conditions over all the transitions and also similar wear conditions for top of railhead.
The angle αi, measured between the tangent in the current point i of the clothoid and the initial direction (where R = ∞), is called direction angle and is computed dependant on the length of the clothoid arc to the current point Li, and the current radius Ri :
where L is the total length of the clothoid and R its final radius.
The Cartesian coordinates of the clothoids can be defined starting from the above equation; using Euler (Fresnel) integrals for sine and cosine, these coordinates are:
Both equations have infinite terms. For railway track and road design, only a part of the clothoid can be practically used – the arc starting from origin to the area where the deflection angle α ≈ 90°.
For this section of the clothoid arc the first 4 terms of the equations provide sufficient accuracy to allow the site tracing of the transition curve.
Before the introduction of the Computerised Aided Design (CAD) in the alignment design for road and railway, the clothoid coordinates were computed based on a set of tables defined for a reference clothoid (usually the one defined by Aₒ = 100) and using the following relation:
Any other clothoid can be defined based on this property (called homothety relative to the origin O) :
As the clothoid spiral develops, the circle defined by the radius R is gradually shifted away from the x axis. This shift is defined as:
The first term of this equation defines the shift for the cubic parabola.
(to be continued)
Later edit: (09/10/2016) The direction angle equation was added based on the blog comments.
Cope, G. (1993) British Railway Track – Design, Construction and Maintenance. Permanent Way Institution, Echo Press, Loughborough.
Racanel, I. (1987) Drumuri moderne. Racordari cu clotoida. (Modern roads. Clothoidal transitions). Editura Tehnica, Bucharest. Romania.
Radu, C. (2001) Parabola cubica imbunatatita (Improved cubic parabola). Technical University of Civil Engineering Bucharest.
Radu, C., Ciobanu, C. (2004) Elemente referitoare la utilizarea parabolei cubice imbunatatite (Elements related to the use of the improved cubic parabola). Third Romanian National Railway Symposium, Technical University of Civil Engineering Bucharest. Romania.
TAC (2009) Geometric Design Manual for Canadian Roads. – Volume 2. Transportation Association of Canada


text:
Bulking of sand is caused due to
The maximum bulking of sand is likely to occur at a moisture content of
Which of the following categories of sand shows maximum bulking at a certain percentage of moisture content?
If bulking of sand is not taken into account for the volumetric proportioning of concrete, what will be the result?
When employing weight batching for concrete preparation, bulking of sand has to be considered.
If moist sand occupies a depth of 15cm and the fully saturated sand occupies a depth of 12cm, then the bulking of moist sand is


to @code{bar} instead. This
allows focus redirection to work properly when the user switches from
one frame to another using @code{select-window}.
This means that a frame whose focus is redirected to itself is treated
differently from a frame whose focus is not redirected.
@code{select-frame} affects the former but not the latter.
The redirection lasts until @code{redirect-frame-focus} is called to
change it.
@end defun
@defopt focus-follows-mouse
This option is how you inform Emacs whether the window manager transfers
focus when the user moves the mouse. Non-@code{nil} says that it does.
When this is so, the command @code{other-frame} moves the mouse to a
position consistent with the new selected frame. (This option has no
effect on MS-Windows, where the mouse pointer is always automatically
moved by the OS to the selected frame.)
@end defopt
@node Visibility of Frames
@section Visibility of Frames
@cindex visible frame
@cindex invisible frame
@cindex iconified frame
@cindex frame visibility
A window frame may be @dfn{visible}, @dfn{invisible}, or
@dfn{iconified}. If it is visible, you can see its contents, unless
other windows cover it. If it is iconified, the frame's contents do
not appear on the screen, but an icon does. If the frame is
invisible, it doesn't show on the screen, not even as an icon.
Visibility is meaningless for terminal frames, since only the selected
one is actually displayed in any case.
@deffn Command make-frame-visible &optional frame
This function makes frame @var{frame} visible. If you omit
@var{frame}, it makes the selected frame visible. This does not raise
the frame, but you can do that with @code{raise-frame} if you wish
(@pxref{Raising and Lowering}).
@end deffn
@deffn Command make-frame-invisible &optional frame force
This function makes frame @var{frame} invisible. If you omit
@var{frame}, it makes the selected frame invisible.
Unless @var{force} is non-@code{nil}, this function refuses to make
@var{frame} invisible if all other frames are invisible..
@end deffn
@deffn Command iconify-frame &optional frame
This function iconifies frame @var{frame}. If you omit @var{frame}, it
iconifies the selected frame.
@end deffn
@defun frame-visible-p frame
This returns the visibility status of frame @var{frame}. The value is
@code{t} if @var{frame} is visible, @code{nil} if it is invisible, and
@code{icon} if it is iconified.
On a text-only terminal, all frames are considered visible, whether
they are currently being displayed or not, and this function returns
@code{t} for all frames.
@end defun
 The visibility status of a frame is also available as a frame
parameter. You can read or change it as such. @xref{Management
Parameters}.
 The user can iconify and deiconify frames with the window manager.
This happens below the level at which Emacs can exert any control, but
Emacs does provide events that you can use to keep track of such
changes. @xref{Misc Events}.
@node Raising and Lowering
@section Raising and Lowering Frames
 Most window systems use a desktop metaphor. Part of this metaphor is
the idea that windows are stacked in a notional third dimension
perpendicular to the screen surface, and thus ordered from ''highest''
to ''lowest.'' Where two windows overlap, the one higher up covers
the one underneath. Even a window at the bottom of the stack can be
seen if no other window overlaps it.
@c @cindex raising a frame redundant with raise-frame
@cindex lowering a frame
 A window's place in this ordering is not fixed; in fact, users tend
to change the order frequently. @dfn{Raising} a window means moving
it ''up,'' to the top of the stack. @dfn{Lowering} a window means
moving it to the bottom of the stack. This motion is in the notional
third dimension only, and does not change the position of the window
on the screen.
 You can raise and lower Emacs frame Windows with these functions:
@deffn Command raise-frame &optional frame
This function raises frame @var{frame} (default, the selected frame).
If @var{frame} is invisible or iconified, this makes it visible.
@end deffn
@deffn Command lower-frame &optional frame
This function lowers frame @var{frame} (default, the selected frame).
@end deffn
@defopt minibuffer-auto-raise
If this is non-@code{nil}, activation of the minibuffer raises the frame
that the minibuffer window is in.
@end defopt
You can also enable auto-raise (raising automatically when a frame is
selected) or auto-lower (lowering automatically when it is deselected)
for any frame using frame parameters. @xref{Management Parameters}.
@node Frame Configurations
@section Frame Configurations
@cindex frame configuration
 A @dfn{frame configuration} records the current arrangement of frames,
all their properties, and the window configuration of each one.
(@xref{Window Configurations}.)
@defun current-frame-configuration
This function returns a frame configuration list that describes
the current arrangement of frames and their contents.
@end defun
@defun set-frame-configuration configuration &optional nodelete
This function restores the state of frames described in
@var{configuration}. However, this function does not restore deleted
frames.
Ordinarily, this function deletes all existing frames not listed in
@var{configuration}. But if @var{nodelete} is non-@code{nil}, the
unwanted frames are iconified instead.
@end defun
@node Mouse Tracking
@section Mouse Tracking
@cindex mouse tracking
@c @cindex tracking the mouse Duplicates track-mouse
 Sometimes it is useful to @dfn{track} the mouse, which means to display
something to indicate where the mouse is and move the indicator as the
mouse moves. For efficient mouse tracking, you need a way to wait until
the mouse actually moves.
 The convenient way to track the mouse is to ask for events to represent
mouse motion. Then you can wait for motion by waiting for an event. In
addition, you can easily handle any other sorts of events that may
occur. That is useful, because normally you don't want to track the
mouse forever---only until some other event, such as the release of a
button.
@defspec track-mouse body@dots{}
This special form executes @var{body}, with generation of mouse motion
events enabled. Typically @var{body} would use @code{read-event} to
read the motion events and modify the display accordingly. @xref{Motion
Events}, for the format of mouse motion events.
The value of @code{track-mouse} is that of the last form in @var{body}.
You should design @var{body} to return when it sees the up-event that
indicates the release of the button, or whatever kind of event means
it is time to stop tracking.
@end defspec
The usual purpose of tracking mouse motion is to indicate on the screen
the consequences of pushing or releasing a button at the current
position.
In many cases, you can avoid the need to track the mouse by using
the @code{mouse-face} text property (@pxref{Special Properties}).
That works at a much lower level and runs more smoothly than
Lisp-level mouse tracking.
@ignore
@c These are not implemented yet.
These functions change the screen appearance instantaneously. The
effect is transient, only until the next ordinary Emacs redisplay. That
is OK for mouse tracking, since it doesn't make sense for mouse tracking
to change the text, and the body of @code{track-mouse} normally reads
the events itself and does not do redisplay.
@defun x-contour-region window beg end
This function draws lines to make a box around the text from @var{beg}
to @var{end}, in window @var{window}.
@end defun
@defun x-uncontour-region window beg end
This function erases the lines that would make a box around the text
from @var{beg} to @var{end}, in window @var{window}. Use it to remove
a contour that you previously made by calling @code{x-contour-region}.
@end defun
@defun x-draw-rectangle frame left top right bottom
This function draws a hollow rectangle on frame @var{frame} with the
specified edge coordinates, all measured in pixels from the inside top
left corner. It uses the cursor color, the one used for indicating the
location of point.
@end defun
@defun x-erase-rectangle frame left top right bottom
This function erases a hollow rectangle on frame @


Writing Algorithms on Collections in Swift
edit: this post has been updated to Swift as of Xcode 6.1 (Swift 1.1).
Suppose you want a new algorithm that checks if every member of an array fulfills a given criteria.
Your first thought might be to add it as an extension of Array:1
extension Array {
 func all_of<B: BooleanType>
 (predicate: (Element) -> B) -> Bool {
 for e in self {
 if !predicate(e) {
 return false
 }
 }
 return true
 }
}
This function takes a predicate (a function that takes an element and returns true or false), and applies it to every member of the array, only returning true if it was true for every member.
Note we specify a template argument, B: BooleanType, that allows the predicate to return not just a Bool but any type that can behave like a Bool (such as ObjCBool)2.
We can test it works easily:
let isEven = { ($0 % 2) == 0 }
let mixed = Array(1...4) // [1, 2, 3, 4]
let doubled = map(1...4) { $0 * 2 }
let evens = Array(doubled) // [2, 4, 6, 8]
mixed.all_of(isEven) // false
evens.all_of(isEven) // true
Incidentally, the above shows a nice trick that's useful for testing collection algorithms, which is that arrays can be initialized with sequences, such as ranges. So if you quickly want an array of increasing numbers, you can write Array(begin...end). If you want something more complicated, you can pass a range to map or filter to alter the range first.
This implementation is nice because it's now built into Array, but there are a few downsides.
Firstly, what if you wanted a slightly different version all_of_equal, that just took a value and confirmed if every entry was equal to that value? You'll need to test for equality, so Element will need to be Equatable. You might think you'd specify a function that goes like this:
extension Array {
 func all_of_equal<Element: Equatable>
 (value: Element) -> Bool {
 return self.all_of { $0 == value }
 }
}
Nope, that won't work. The problem is that you can't further constrain Element within Array to be Equatable. What if you created an array of something that didn't conform to Equatable? Would this no longer be allowed now you've added this method? Or should this method not be callable? Neither of these are palatable so the language just won't let you do it.
Instead, you need to define a non-member function that takes an Array and an Element. Then you can constrain that element as much as you like:
func all_of<E, B: BooleanType>
 (a: Array<E>, predicate: (E) -> B) -> Bool {
 for e in a {
 if !predicate(e) {
 return false
 }
 }
 return true
}
func all_of_equal<E: Equatable>
 (a: Array<E>, rhs: E) -> Bool {
 return all_of(a) { $0 == rhs }
}
In fact, because of Swift's operator overloading, you can even give it the same name:
func all_of<E: Equatable>
 (a: Array<E>, rhs: E) -> Bool {
 return all_of(a) { $0 == rhs }
}
// calls the version that takes an equatable value
all_of([1,1,1], 1)
// calls the version that takes a closure
all_of([1,1,1]) { $0%2 == 1 }
The second benefit of defining this as a non-member function is you can generalize it to apply not just to arrays, but any kind of collection.3 To do this, you need to extend the generic parameter clause in a couple of ways:
func all_of<E, C: CollectionType, L: BooleanType
 where E == C.Generator.Element>
 (c: C, predicate: (E) -> L) -> Bool {
 for e in c {
 if(!predicate(e)) {
 return false
 }
 }
 return true
}
First, we swap out Array for a type of Collection, by specifying a generic placeholder C that must be a collection. Then, we further constrain the collection to contain types E, which are the type of input our predicate will take.
Strictly speaking, we don't need to include the placeholder E. You could replace it in the predicate definition with C.Generator.Element. But you might find it's cleaner to create a placeholder for it, especially if you apply further constraints to E.
Now, we can use this function on not just arrays, but any type of collection, such as ranges directly:
let isEven = { ($0 % 2) == 0 }
all_of(1...4, isEven) // returns false
or other types of collection:
let doubled = map(1...4) { $0 * 2 }
all_of(doubled, isEven) // returns true
There's one final improvement that could be made. Collections implement the Sequence protocol, which also gives us enough to iterate over the elements, checking the predicate. So we could rewrite all_of even more generally:
func all_of<E, S: SequenceType, B: BooleanType
where E == S.Generator.Element>
(sequence: S, predicate: (E) -> B) -> Bool {
 for e in sequence {
 if(!predicate(e)) {
 return false
 }
 }
 return true
}
Because Sequences behave differently, we don't need to mandate a ForwardIndex to make them work with the for.
There are some times you still want to use collections rather than sequences. If we were writing a different algorithm, say find_first_of, that we wanted to return an index into the collection of the first occurrence, we'd want to stick with an algorithm that works on collections. Also, collections imply deterministic results over multiple iterations, and consistent size, which some algorithms might rely on. But not in the case of all_of, so SequenceType is a better choice.
 1. The most important question facing the Swift community today: how do you split long function footprints over multiple lines?
 2. In fact, the Swift standard library docs explicitly state that Bool and ObjCBool should really only be the two types that ever implement BooleanType, so maybe you could say screw it and just make the predicate return a Bool. That's what the predicates for std lib functions like filter do. But then, that wouldn't make for quite so educational a blog post.
 3. You might be thinking, I know, I'll extend CollectionType! But CollectionType is a protocol, and you can't extend protocols with implementations. What you want is something like traits or mixins. Swift doesn't have those (yet, hopefully).
4 thoughts on "Writing Algorithms on Collections in Swift
Leave a Reply
Fill in your details below or click an icon to log in:
WordPress.com Logo
You are commenting using your WordPress.com account. Log Out / Change )
Twitter picture
You are commenting using your Twitter account. Log Out / Change )
Facebook photo
You are commenting using your Facebook account. Log Out / Change )
Google+ photo
You are commenting using your Google+ account. Log Out / Change )
Connecting to %s


text:
PixGPS - Geotag your digital photos
PixGPS is a simple program for Microsoft Windows that makes it simple to insert the exact position of each photo (latitude and longitude) into the photos EXIF meta data.
All you need is:
- a digital camera that stores EXIF inside the image file (most cameras do this)
- a GPS Receiver that can store track logs in GPX format.
- the PixGPS software.
Download a free trial today!
Buy PixGPS now!
PixGPS makes it easy to geotag your digital photos. Just download the photos from your camera and get the GPX formatted track log from your GPS Receiver. The PixGPS Geotagger will in matter of seconds calculate the latitude and longitude for each of the photos. It will store the latitude and longitude in each photos EXIF meta data so it will stay with the photo. You can later use other software with EXIF GPS support to view the exact location of the photo, or you can use whe simple 'View on map' function in PixGPS to view the location in Google Maps or MapQuest (requires an Internet connection).
Who needs Geotagging?
For many of us, geotagging the digital photos are really useful. Of course it depends on what kind of photos you take, but if you take photos when travelling, it can be useful to see where you took photos on this trip. Let's say you take photos in a city. Will you remember were you took the photo of that building? PixGPS Geotagger can tag the photos location within 10 meters/30 ft. *)
For businesses that uses photography to document their work, storing the exact latitude and longitude in the photos EXIF meta data can be essential for future documentation.
*) The actual accuracy may vary depending on your GPS receiver and the GPS signal reception at the location.


Skip to content ↓
Hove Junior School
Portland Road & Holland Road
Reporting a positive Covid-19 case
To ensure that we continue to keep the whole school community safe, it is essential that we are informed of any positive cases of Covid-19 that occur. During school hours please continue to phone the school offices and report individual confirmed cases. Out of school hours and during the weekend please now contact the school on the following email address:
For clarity, please state Confirmed Case in the subject box.
We will need to know:
 1. Your child's name and date of birth
 2. Your child's class (e.g. 4 Yellow)
 3. A contact phone number
 4. The first day when your child's symptoms started
 5. What symptoms your child has
 6. The date when your child was last in school
 7. Whether your child attended breakfast club on their last day in school
 8. Whether your child attended after school club on their last day in school
 9. Please list any siblings
 10. Please list the schools where siblings attend, and their year groups


text:
Updated at 12:30 p.m. with Senate vote
WASHINGTON (CNN) - The U.S. Senate on Thursday was scheduled to consider a resolution apologizing to African-Americans for the wrongs of slavery.
The nonbinding resolution sponsored by Sen. Tom Harkin, D-Iowa, is similar to a House resolution adopted last year that acknowledged the wrongs of slavery but offered no reparations.
Several states have passed similar resolutions, but the House resolution was the first time a branch of the federal government did so.
Harkin's resolution "acknowledges the fundamental injustice, cruelty, brutality and inhumanity of slavery, and Jim Crow laws," and "apologizes to African-Americans on behalf of the people of the United States, for the wrongs committed against them and their ancestors who suffered under slavery and Jim Crow laws."
Jim Crow, or Jim Crow laws, were state and local laws enacted mostly in the Southern and border states of the United States between the 1870s and 1965, when African-Americans were denied the right to vote and other civil liberties, and were legally segregated from whites.
Some members of the African-American community have called on lawmakers to give cash payments or other financial benefits to descendants of slaves as compensation for the suffering caused by slavery.
UPDATE: The measure passed the Senate Thursday on a voice vote. While the House passed a similar resolution last year, the chamber will have to vote on it again this session. It is unclear if and when the House will take it up.
The measure will not go to the president because this is a non-binding resolution of the Congress.