Any information stored on our platform is treated as confidential. All information is stored securely and is accessed by authorized personnel only. We implement and maintain appropriate technical, security and organisational measures to protect Personal Data against unauthorised or unlawful processing and use, and against accidental loss, destruction, damage, theft or disclosure.
By visiting our website, you consent to the collection and use of your Personal Data as described herein. If you do not agree with the terms set out herein, please do not visit this website. If required by applicable law, we will seek your explicit consent to process Personal Data collected on this website or volunteered by you. Kindly note that any consent will be entirely voluntary. However, if you do not grant the requested consent to the processing of your Personal Data, the use of this website may not be possible.
Such Personal Data may comprise your IP address, first and last name, your postal and email address and your telephone number.
Our website gathers data about visits to the website, including numbers of Visitors and visits, Geo-location data, length of time spent on the site, pages clicked on or where Visitors have come.
We use the collected data to communicate with Visitors and to improve its website by analysing how Visitors navigate its website.
Our website & internal systems will not share your personal data with any third-party organisations, some visitor data is used to analyse the Visitor behaviour on our website.
Cookies are small pieces of information sent by a website to a Visitor's hard disk. Cookies cannot be used to run programs or deliver viruses to your computer. By continuing to visit the website, you agree to the placement of cookies on your device. If you choose not to accept our cookies, we cannot guarantee that your experience will be as fulfilling as it would otherwise be.
Respondents should be aware that by completing a website contact form they are disclosing information that could make them personally identifiable to our employees. The security and privacy protection implemented on our website & internal platform will not expose your data to third-parties outside of our own organisation.
If you wish to inquire about your Personal Data that we may have on file for you, we recommend that you visit our contact us page and speak to our team. After confirming your identity we will supply you with all the details we have on file.
Data is held securely and never passed to any third-party organisations. Data is only held to help us serve you. Please scroll to point 4 for details of how you can obtain copies of any data we have about you.
Respondent data includes data from individuals uploaded, transferred or manually entered in to a contact form on our website by a website User. Personal Data may include, personal contact information such as name, home address, home telephone or mobile number, email address, etc.
The purpose of collecting Personal Data as part of a website form allows us to contact you to answer your query. For Users in the EEA, or for Users providing personal details via webs contact form in the EEA, the User will be the "controller", as defined in the Directive and the GDPR.
Our data is held within the UK, all Personal Data is processed in the EEA.
For Users with accounts located in European Data Region, all processing of Personal Data is performed in accordance with privacy rights and regulations following the EU Directive 95/46/EC of the European Parliament and of the Council of 24 October 1995 (the Directive), and the implementations of the Directive in local legislation. From May 25th, 2018, the Directive and local legislation based on the Directive will be replaced by the Regulations (EU) 2016/679 of the European Parliament and of the Council of 27 April 2016 on the protection of natural persons with regard to the processing of Personal Data and on the free movement of such data, known as the General Data Protection Regulation (GDPR), and our processing will take place in accordance with the GDPR.
Our website entity which you as a User entered an agreement with when using The platform, will be the Controller for User data, as outlined above in "Collection of User data" section.
For Respondent data, as outlined in the "Collection of Respondent data" section, the User will be the Controller in accordance with Directive and GDPR, and The website will be the Processor.
Our website and internal system adheres to the Directive of 1995 and the GDPR from May 25th, 2018. Consequently, The website processes all data provided by its Users with accounts in its European Data Region, in the European Economic Area (EEA) only.
All data collected by us will be stored exclusively in secure hosting facilities provided by Microsoft. We have a data processing agreement in place with its provider, ensuring compliance with the Directive. All hosting is performed in accordance with the highest security regulations. All transfers of data internally in the EEA is done in accordance with this data processing agreement.
We will not retain data longer than is necessary to fulfil the purposes for which it was collected or as required by applicable laws or regulations.
We will reveal a user's personal information without his/her prior permission only when we have reason to believe that the disclosure of this information is required to establish the identity of, to contact or to initiate legal proceedings against a person or persons who are suspected of infringing rights or property belonging to us or to others who could be harmed by the user's activities or of persons who could (deliberately or otherwise) transgress upon these rights and property. We are permitted to disclose personal information when we have good reason to believe that this is legally required.
We have a "Data Protection Officer" who is responsible for matters relating to privacy and data protection. This Data Protection Officer can be reached by using the details on our contact us page.


text:
Browsing by Performer "Gao, Ping"
Now showing result 1901 of 6391
I. — (Cello Sonata No. 2, "Departure")
Gao, Ping ; Jehli, Anita; Gao, Ping (2001) [03:57]
II. — (Cello Sonata No. 2, "Departure")
III. Blue Flower (Distant Voices)
Gao, Ping ; Gao, Ping (1999) [06:58]
III. Intermezzo (Cello Sonata No. 2, "Departure")
II. Love Song from Kangdin (Distant Voices)
I. Nostalgia (Distant Voices)
IV. — (Cello Sonata No. 2, "Departure")
No. 1. Evenings in Suburban Moscow (2 Soviet Love Songs)
No. 2. Katyusha: Homage to D. Shostakovich (2 Soviet Love Songs)
V. — (Cello Sonata No. 2, "Departure")

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: How can I find out when a dataset was allocated? I need to get the exact time when a dataset was allocated (not opened). I've searched all the SMF records but can't find anything suitable. Any ideas? It was allocated via SVC99 from a vendor STC. I'm pretty sure it's allocated and then OPENed, as the first SMF record referencing the dataset is DISP=OLD.
The dataset is not SMS managed.

A: I think you are out of luck.
To my knowledge, creation time is not an attribute of any dataset. So looking through the SMF records probably wont help. You might be able to get the time of the first action perform after allocation, but that doesn't sound like it will help you. I found a thread on the IBM Mainframe forum that basically confirms my thought.
It says:

The only way to get the creation time of a data set is through
  analyzing SMF data for the date the data set was created, the creation
  time is not an attribute of the data set.
I'm not even certain you could get the time that way as no SMF data is
  written when the data set is created. The best you can do is the time
  the first I/O to the data set completes and a type 15 SMF record is
  written.

redpajama_set_name: RedPajamaStackExchange


Known for its versatility and long shelf-life, dry or kibble dog food can be served on its own, mixed with wet food, used as training treats and doesn't require refrigeration. Food is eaten and typically enjoyed through the sense of taste , the perception of flavor from eating and drinking.
Food is the foundation for a happy, healthy life. Food Policy Action's digital campaign targeting a slice of eligible voters with a powerful message about safe, healthy, affordable food and the ways it reaches our plates helped make the difference in two of the mostly closely watched Congressional races in the country.


text:
Krista Griffith for Delaware
Democrat for State Representative
I'm Running
Krista will relentlessly fight for economic development; access to health care; the protection of seniors, children and other vulnerable members of society; community safety; access to high-quality education, equality; and smart management of traffic and development.
Economic development:
Krista and her husband, Ted, moved to Delaware more than twelve years ago because of job opportunities and a strong quality of life in the First State.
At that time, longtime residents told them that the key to Delaware's economy could be summed up in seven "C's" – credit cards, chemicals, Court of Chancery, cars and chickens. In the past dozen years, much has changed economically in Delaware with automotive manufacturing jobs leaving the state, the merger of the DuPont and Dow chemical companies and Bank of America's acquisition of the credit card giant MBNA.
Delaware can no longer rely on one letter of the alphabet to define its economy. Our state needs to offer a variety of good-paying jobs to offer to residents who want to remain here. As a state representative for District 12, Krista will help Delaware secure its place on the cutting edge of economic development. Krista will
Support existing business, such as our key financial, science-based and legal industries
Foster business innovation
Help small businesses remain an integral part of our community
Access to health care:
Krista learned firsthand how challenging it is to navigate the healthcare system when her son, Nate, was diagnosed with leukemia just a few weeks after his first birthday. Fortunately, Krista's family had good insurance, and Nate was successfully treated and remains in remission.
During the many months Krista sat at Nate's bedside, she saw firsthand the real struggles that families encounter with healthcare coverage or who face language or other barriers when advocating for their children. Krista's experience with Nate deeply reinforced for her the importance of access to top-quality health care for all of us, whether we are 2 years old or 92.
Krista also believes it is vital to expand healthcare services for people coping with addiction.
The opioid crisis has many causes, but one of the main reasons people develop addiction to opioids is due to inadequate healthcare for accidents and chronic pain management. Securing healthcare for Delaware citizens is a crucial first step to preventing addiction. In addition to preventative healthcare, treatment services are critically important to stopping the spread of addiction and the crime that follows it.
As a prosecutor, Krista worked with too many families suffering from the devastation caused by addiction. Senior citizens lost their life savings to relatives who stole money to buy drugs, such as opioid painkillers.
Krista will join with Delaware leaders who have recently made great strides in developing initiatives to address the addiction epidemic. An effective response to addiction begins with prevention and treatment that will ultimately reduce the amount of crime committed in Delaware.
Protecting seniors, children and the vulnerable:
As a Deputy Attorney General, Krista dedicated her career to the protection of the most vulnerable in Delaware – children, senior citizens, domestic violence victims and individuals with disabilities.
Krista prosecuted the most serious and sensitive of cases. She also developed policy and drafted legislation directly aimed at providing more protections to these individuals. As the mother of a child who has Down syndrome, Krista fully understand the importance of making sure individuals with different abilities are protected.
As your state representative Krista will ensure that all vulnerable individuals have full access to programs vital to their well-being; laws that protect them; and are not subject to unfair tax burdens.
Community safety:
The General Assembly has a role in ensuring Wilmington has the tools and resources necessary to reduce violent crime within city limits and Krista will make sure the legislature fulfills that responsibility. As a prosecutor, Krista was tough on crime and fought for the rights of victims. She will continue to prioritize the safety of the community as a legislator.
Krista will also be a strong advocate for common sense laws to protect our neighborhoods and schools from gun violence. Krista believes Delaware also must continue to reform its criminal justice system to better rehabilitate youthful offenders, give adult offenders returning to society the tools they need to contribute and review sentencing laws.
Improving education in Delaware is vital to our state's well-being. It is key to improving the economy, reducing crime and enhancing the quality of life here in the First State.
Krista will ensure that every child has top-quality education and that our dedicated teachers have the resources to deliver that education. Krista will be a forceful advocate in Dover to ensure our public schools are getting the support they need.
Investing in the educational system will serve as a tool for recruiting business and industry to the state so that our citizens can have good, quality employment.
Equality:
Delaware has been a leader in promoting equality. Krista is proud that, when she worked at the Department of Justice, the agency strongly supported marriage equality legislation and legislation prohibiting discrimination based on gender identity.
Our work ensuring all Delawareans are treated equally and protected from bullying and discrimination is never done. Krista will continue to advocate for laws that protect all of Delaware's citizens.
Smart management of traffic and development:
Without careful thought and vigilance on the management of development and traffic, we will erode the quality of life here that means so much to us.
Traffic congestion is a problem throughout the 12th District. Many residents in District 12 also are concerned about what will happen with large tracts of land such as the DuPont Country Club and other undeveloped parcels.
District 12 deserves a state representative who will listen attentively and meet often with residents to advocate for the future of our community. Krista will bring energy and a fresh perspective to these vital issues.
@griffith4del
Can't wait! Thanks Rose and Jeff! https://t.co/3DOFZuddni
A great step forward for the equality of women in Delaware! https://t.co/dzZtaWuWAT
Busy day on the campaign trail. Great to spend the morning with fellow candidates at an informative training offere… https://t.co/9zjEOgret5
2207 Concord Pike
©2023 Krista Griffith for Delaware


Edger from Neil Vanderkruk Holdings Inc.
This traditional lawn edger has a solid stainless steel or ash handle and a sharp stainless blade which cuts through turf with ease. This tool will make an impressive addition to any lawn-loving gardener's shed.


text:
Collection 031 Ephemera of John Wesley
Collection contains one handwritten letter by Wesley composed during a London visit in October 1782. There are also a couple of newspaper clippings including a description of Wesley's life at Aldersgate and the text of another letter from the evangelist. A scrapbook of clippings (available to researchers on microfilm) from the centennial commemoration of Wesley's death contains articles, poetry, sermons, and illustrations by and about him. The clippings were out of newspapers from all over the British Isles and relate many anecdotes from the lives of John Wesley and his brother, Charles.
Created: 1782; 1889-1902; 1938
There are no restrictions on the use of this collection.
John Wesley was the fifteenth of nineteen children born to Samuel and Susan Wesley on June 28, 1703, at Epworth in England. Samuel Wesley was a rector of an Anglican Church; therefore, all his children were given religious instruction. Education and study were encouraged by both his parents. He attended Charterhouse School and Christ Church at Oxford. Philosophy, theology, classics and language were all part of his curriculum. He even taught some Greek classes for the undergraduates. While at Oxford, Wesley's younger brother Charles began a group called the "Holy Club". The group met often for prayer, fasting, discussion, and active sharing of the gospel of Christ. Because of their methodical activities the society was nicknamed Methodists. Both Wesleys became leaders of the group.
After their father's death in April 1735, the two Wesley brothers sailed for the Georgia colony in America to work among the Indians. The work in Georgia was not successful. Wesley's strict attitudes were offensive to many and his refusal to administer communion to one of the colonists destroyed his usefulness. While in Georgia he did serve a small congregation in Savannah. This brief pastoral experience was to have a great influence later on the formation of Methodist practices. He was also impressed while in America with the work of Moravian missionaries.
Returning to England in February 1738, Wesley made several unsuccessful attempts at preaching. In a state of deep dejection, after reading the book of Romans he later wrote, "I felt my heart strangely warmed." For the rest of his life he felt that that moment marked his conversion. Soon he began his great preaching ministry, speaking wherever he was allowed - homes, churches, or hillsides. He even preached from his father's tombstone when the parish leaders refused to allow him in the church building.
Societies were formed in many areas where Wesley preached including England, Scotland, Ireland, and Holland. At first he tried to visit each group at least once every three months; however, the tremendous growth in numbers made this impossible. In 1743 a group of "General Rules" for the societies was published. Later in 1744 a meeting in London discussed doctrinal matters and procedures. The same format of discussion is used today in governing the Methodist Church.
With increased numbers other considerations had to be made for the leadership of the societies. Men were ordained, circuits defined, and schedules prepared to organize and provide a stable foundation for the growth of Wesley's movement. In 1784 he filed for a Deed in Chancery Court giving "The Conference" full legal status. Provisions were made by Wesley to make the group self-governing and self-perpetuating after his death.
Wesley ordained Richard Whatcoat and Thomas Vasey for work among American Methodists in 1784 after the final breach with the Church of England. Thomas Coke was made "superintendent" of the American work but later took the title of "bishop." Coke later ordained Francis Asbury providing a great leader for American Methodism.
The preacher also penned many hymns and books such as Appeals to Men of Reason and Religion, Journal, Sermons, and Explanatory Notes on the New Testament.
Wesley married Mary Vazeillejin, a widow, in 1751. The marriage proved to be a poor one and she finally left him twenty-five years later.
Wesley died in his home on City Road, London, on May 2, 1791, after a very brief illness. He was buried in the cemetery behind City Road Chapel across the street from the grave of his mother, Susanna Wesley.
0.50 Cubic Feet (1 box (Flat Storage Container, .5 Cubic Feet), Microfilm)
Accruals and Additions
Materials in this collection were received by the Billy Graham Center Archives in September 1977, November 1979, and February 1980.
Accession 77-21, 79-137, 80-31
Mary Ann Buffington
S. Kouns
Evangelistic work -- Great Britain.
Evangelistic work.
Methodist Church.
Sermons, British.
Wesley, Charles,
CN. Evangelism & Missions Archives
Part of the Evangelism & Missions Archives Repository
https://www.wheaton.edu/archives
Wheaton IL 60187 US
archives@wheaton.edu
Collection 031 Ephemera of John Wesley, CN 031. Evangelism & Missions Archives.
Collection 031 Ephemera of John Wesley, CN 031. Evangelism & Missions Archives. https://archives.wheaton.edu/repositories/4/resources/22 Accessed February 01, 2023.


text:
Properties of Boron Carbide
zirconium nitride
Researchers 3D print biomedical parts with supersonic speed
gallium nitr
gallium nitride
Foam Concret
INA Roller B
Titanium atom that exists in two places at once in crystal to blame for unusual phenomenon
INA Drive Be
Home > Business > The transistor out of the printer
The transistor out of the printer
wallpapers Business 2020-12-21 >
Imagine being able to easily print electronics on any surface. Today, this is no longer a utopia: "Printed Electronics" is an emerging technology that makes it possible to apply circuits to various substrates – using ink and special printers. This is by no means a small market: A new report by the industry association for organic and printed electronics shows that the sector has already developed into a global market worth more than 35 billion US dollars – a market that is expected to continue growing strongly in the coming years. Traditionally, the manufacturing of electronics has been a complex process that requires expensive equipment. However, the Internet of Things requires a new type of electronics: The circuits no longer have to be as tiny and fast as possible at all costs, but cheap and easy to manufacture – and at the same time they should be realizable on thin and flexible substrates. This includes RFIDs on product packaging, for example. In the future, applications are also conceivable for simple sensors on milk cartons, which indicate when the contents are no longer consumable, or on frozen products, which signal whether the cold chain has been interrupted. Electronic components can be printed on flexible substrates such as paper or polymer. This requires specialized printing equipment. Image: Empa
Transistors on Paper and Film
Empa researchers Jakob Heier from the Laboratory for Functional Polymers and Yaroslav Romanyuk from the Laboratory for Thin Films and Photovoltaics are working with their teams to advance the technology. Together with researchers from the Paul Scherrer Institute and EPFL Lausanne, they are working on the "FOXIP" research project, short for "Functional OXIdes Printed on Polymers and Paper". The aim of the project is to print thin-film transistors on paper and PET films – using a printing technique that could be suitable for use in industry. Inks in which tiny particles of metal oxides are dissolved are used for this. These are applied to the substrate using various printing techniques – contact printing or an inkjet printer. "Of course, we don't use ordinary office printers for this, but highly specialized equipment," explains Romanyuk. At Empa's Coating Competence Center these printing devices can be found. But to be able to reliably print circuits on flexible substrates, a number of challenges must first be solved: From the optimization of the substrate itself, to the composition of the ink and the accuracy of the printing technology, to the thermal curing of the layers without damaging the paper or film. Starting with the printing substrate: Often this is flexible – for example, paper or a polymer film – and does not have a completely smooth surface, as is the case with silicon wafers, which are used for the manufacture of conventional electronic components. This makes it much more difficult to achieve the necessary precision in the manufacture of the circuits. As a result, the components of printed electronics are currently about a factor of 1,000 larger than microelectronics produced by the conventional manufacturing process. "But that doesn't mean that the circuits are huge: We're talking about printing with accuracies in the range of ten micrometers, which is less than the diameter of a hair," Heier explains.
Materials in ink form
Another major challenge is how conductive, semi-conductive and insulating materials, which are necessary for the construction of circuits, can be brought into ink form – and how they can be turned into a continuous material with the de-sired properties after the printing process. Silver electrodes for transistors. Image: Empa Jakob Heier is researching how these special inks are constructed. An ink includes two parts: small particles of the functional material and solvents that evaporate on their own after application. However, these two components are often not sufficient: Additional binders and additives must be added to make the ink stable and printable. But these are a problem: if they remain in the layer after application, they disturb the desired function of the circuits. They must therefore be burnt out. However, this requires relatively high temperatures – and this in turn can damage the paper or film on which the electronics are printed. Heier and his team are working on developing a printable ink for graphene layers that only requires the graphene particles and the solvent – in other words, no additives that have to be burnt out. The printed layers should be stable enough to retain the same conductive properties – regardless of whether the substrate material including the printed layer is bent or even twisted. "If this is successful, we will be a big step closer to printing on polymer or paper: at least the printing of conductive tracks will then no longer require post-treatment at elevated temperatures," Heier explains
With Flashes from the Ink to the Transistor
The situation is different with inks based on metal oxide nanoparticles. Here, the so-called sintering, i.e. the thermal treatment of the printed layers, is necessary in order to recombine the individual particles dissolved in the ink and thus obtain a functional layer. However, both paper and the films used are very sensitive to temperature. Ideally, therefore, only the metal oxide layers should be heated – but the substrate should remain cool. "We use a method called 'flash sintering'," explains Romanyuk. The printed layer is heated with ultra-short flashes, so fast that the substrate material is not heated. Materials based on metal oxides are a promising material class for printed electronics: they can be conductive, semiconductive or insulating. Compared to inks based on organic materials, oxide materials have a higher electron mobility, which means they have the potential to increase the performance of printed electronic circuit elements. At the same time, the oxide materials are more stable when exposed to air. "Especially exciting is indium tin oxide: It is both highly conductive and transparent at the same time," Romanyuk explains. His team recently succeeded in printing oxide-based field-effect transistors using an inkjet printer, which could make it possible to create transparent circuits on a transparent substrate in the future. Thanks to the possibilities offered by the Coating Competence Center CCC at Empa, the results of the two research groups are not limited to the laboratory. "The printing technologies developed are based on equipment with which industry is already working," explains Romanyuk. This enables a rapid transition from scientific breakthroughs to the industrial production of new printed electronics.
MIS-ASIA is an online content marketing platform that has a large number of visitors worldwide. It is considered to be the leading IT, mechanical, chemical, and nanomaterial information distributor in the Asia-Pacific region. The MIS-ASIA website provides high-quality articles and news on digital information technology, mechanical technology, nanotechnology, biology and science for scientists, engineers and industry experts, machinery suppliers and buyers, chemical suppliers and laboratories. If you need advertising and posting service, or you need to start sponsorship, please contact us.
Recent Early
No comment yet. Please say something!
Prev: When crystals throw sparks: Researchers develop new model for pyroelectric reactions
Next: Plant-based supercapacitor could charge electric cars in a few minutes
The Justice Department is preparing an antitrust la
What is angular contact ball bearing
Windows 11 will not be able to use Android apps whe
Interest in Switching to iPhone Drops Among Android
Coating companies have set off a new round of price
Introduction of factors affecting the price and mar
What is roller bearing
Tanki Materials | FV bearings |
Copyright © 2002-2029 wallpaper www.gcsdblogs.org.ALL Rights Reserved. XML Map


text:
Fellows|
Penn Kemble Fellow: Brianna Hiser
Brianna Hiser currently works as a Program and Development Officer for Eurasia at the Eurasia Foundation. Hiser previously worked as the Georgia desk officer at the National Democratic Institute as well as on the Iraq program at the International Foundation for Electoral Systems. She has done field work in Georgia, the Balkans and Iraq and recently completed an Embassy Policy Specialist fellowship for the US Embassy in Tbilisi, where she conducted research on the Georgian media sector following the 2012 parliamentary elections. Hiser specializes in post-Soviet political transition and political decision-making. She earned an MA in Russian, East European and Central Asian Studies in addition to an MA in Public Administration from the University of Washington. She has lived and traveled in Russia, studying and volunteering in Izhevsk and Nizhnii Novgorod. In addition to speaking fluent Russian, Hiser speaks Persian and is an avid reader about all things Iranian.
Rachel Hoff>>
<<Anne Henochowicz
The National Endowment for Democracy is proud to announce its inaugural cohort of 2014-15 Penn Kemble Fellows. See here for more information about the Penn Kemble Youth Forum for Democracy, as well as a complete list of the 2014-15 cohort>>
Learn more about NED Fellowship Programs
Learn more about NED's history and mission


text:
Joseph Bousso
Operatic Repertoire
Symphonic Repertoire
J.S. Bach Orchestra Suites No. 2 & 3
Barber Adagio for Strings
Knoxville Summer of 1915
Overture to "The School for Scandal," opus 5
Second Essay for Orchestra
Bartók Concerto for Orchestra, Sz. 116
Dance Suite for Orchestra, Sz. 77
Divertimento for String Orchestra, Sz. 113
Hungarian Peasant Songs, Sz. 100
Romanian Folk Dances, Sz. 68
Beethoven Coriolan Overture, opus 62
Creatures of Prometheus Overture, opus 43
Egmont Overture, opus 84
Fidelio Overture, opus 72
King Stephen Overture, opus 117
Leonore Overtures Nos. 1-3
Symphonies Nos. 1-7, 9
Berlioz Roman Carnival Overture, opus 9
Bernstein Overture to "Candide"
Symphonic Dances from "West Side Story"
Symphony No. 2: "The Age of Anxiety"
Brahms Academic Festival Overture, opus 80
Symphonies Nos. 1-4
Tragic Overture, opus 81
Variations on a theme by Joseph Haydn, opus 81a
Britten The Young Person's Guide to the Orchestra, op. 34
Chopin Piano Concerto No. 2 in f minor, opus 21
Copland Appalachian Spring (full orchestral version of 1944)
Debussy La Mer (The Sea)
Prelude à l'après-midi d'un faune (Prelude to the Afternoon of a Faun)
De Falla Three-Cornered Hat Suites Nos. 1 & 2
Dvořák Carnival Overture, opus 92
Serenade for Strings in E Major, opus 22
Stabat Mater, opus 58
The Wild Dove, opus 110, B. 198
Elgar Serenade for Strings in e minor, opus 20
Fauré Elegy for Cello and Orchestra, opus 24
Pavane, opus 50
Gershwin An American in Paris
Ginastera Variaciones Concertantes, opus 23
Glinka Overture to "Ruslan and Ludmila"
Grieg Holberg Suite, opus 40
Lyric Suite, opus 54
Piano Concerto in a minor, opus 16
Hallgrimsson, Haflidi Poemi for Solo Violin and String Orchestra (1984)
Handel Water Music
Haydn Symphony No. 59 in A Major, "Fire"
Symphony No. 94 in G Major, "Surprise"
Symphony No. 99 in Eb Major
Symphony No. 100 in G Major, "Military"
Symphony No. 104 in D Major "London"
Hindemith Symphonic Metamorphoses on themes of Carl Maria von Weber
Kodály, Zoltan Dances of Galanta
Lara, Agustin "Granada" for Mezzo-Soprano / Tenor and Orchestra
Ligeti, György Lontano (1967)
Lutosławski Musique funèbre for String Orchestra (1958)
Mahler "Ging heut' morgen übers Feld" from Lieder eines fahrenden Gesellen ("This morning I walked across the fields" from Songs of a Wayfarer)
Symphony No. 1 in D Major, "Titan"
Symphony No. 5 in c# minor
Mendelssohn Calm Sea and Prosperous Voyage, opus 27
Hebrides Overture, opus 26
Piano Concerto No. 1 in g minor, opus 25
Mozart Concerto for Two Pianos and Orchestra, K. 365
Eine kleine Nachtmusik, K. 525
Exsultate Jubilate, K. 165
Flute Concerto No. 1 in G Major, K. 313
Flute Concerto No. 2 in D Major, K. 314
Overture to "The Magic Flute," K. 620
Overture to "The Marriage of Figaro," K. 492
Piano Concerto No. 19 in F Major, K. 459
Piano Concerto No. 20 in d minor, K. 466
Piano Concerto No. 21 in C Major, K. 467
Sinfonia Concertante for Oboe, Clarinet, Bassoon, Horn, K. 297b
Sinfonia Concertante for Violin, Viola and Orchestra, K. 364
Symphonies Nos. 1, 25, 28, 29, 32, 35, 36, 38-41
Oehring, Helmut POEndulum: A Monodrama for Speaker and Orchestra (2010)
Prokofiev Piano Concerto No. 3 in C Major, opus 26
Symphony No. 1 in D Major, opus 25, "Classical"
Symphony No. 5 in Bb Major, opus 100
Rachmaninoff Symphony No. 1 in d minor, opus 13
Symphony No. 2 in e minor, opus 27
Vocalise, Opus 34, Nr. 4, version for Mezzo-Soprano and Orchestra
Ravel Tzigane for Violin and Orchestra
Rimsky-Korsakov The Flight of the Bumble Bee from "The Tale of Tsar Sultan"
Scheherazade, opus 35
Rossini Overture to "The Barber of Seville"
Overture to "Semiramide"
Overture to "William Tell"
Saint-Saens Danse Bacchanale from "Samson et Dalila" (Act 3)
Danse Macabre, opus 36
Symphony No. 3 in c minor, opus 78, "Organ"
Schoenberg Verklärte Nacht (Transfigured Night) for String Orchestra
Schubert Symphony No. 5 in Bb Major, D. 485
Symphony No. 8 ("Unfinished"), D. 759
Symphony No. 9 ("Great"), D. 944
Schumann Symphony No. 1 in Bb Major, opus 38, "Spring"
Symphony No. 2 in C Major, opus 61
Symphony No. 3 in Eb Major, opus 97, "Rhenish"
Symphony No. 4 in d minor, opus 120
Shostakovich Suite for Jazz Orchestra No. 2
Symphony No. 1 in f minor, opus 10
Symphony No. 5 in d minor, opus 47
Sibelius Lemminkainen in Tuonela, opus 22, No. 3
Scene with Cranes from "Kuolema," opus 44, No. 2
The Swan of Tuonela, opus 22, No. 2
Symphony No. 2 in D Major, opus 43
Valse Triste from "Kuolema," opus 44, No. 1
Violin Concerto in d minor, opus 47
Smetana Overture to "The Bartered Bride"
The Moldau from "Má Vlast" ("My Fatherland")
J. Strauss & Family Anna ("Annen") Polka, opus 117
Blue Danube Waltz, opus 314
Egyptian March, opus 385
Éljen a Magyar, fast Polka, opus 332
The Emperor Waltz, opus 437
Fireproof (Feuerfest) Polka, opus 269
Mit Dampf, Polka Schnell (With Steam, fast Polka), Opus 70
On Hunting (Auf der Jagd), opus 373
Overture to "Die Fledermaus" (The Bat), opus 362
Overture to "Die Zigeunerbaron" (The Gypsy Baron)
Peasants' Polka (Bauern Polka), opus 276
Perpetuum Mobile, opus 257
Pizzicato Polka
Radetzky March, opus 228
Roses from the South Waltz, opus 388
Tales from the Vienna Woods Waltz, opus 325
Thunder and Lightning Polka, opus 324
Tritsch Tratsch Polka, opus 214
Viennese Blood Waltz, opus 354
R. Strauss Death and Transfiguration
Till Eulenspiegel
Wind Serenade in Eb Major, opus 7
Stravinsky Dumbarton Oaks
Firebird Suite (1919)
Histoire du Soldat (The Soldier's Tale)
Petrouchka (1911 & 1947)
Tchaikovsky Capriccio Italien
Marche Slave
Romeo and Juliet Fantasy Overture
Serenade for Strings in C Major, opus 48
Symphony No. 1 in g minor, opus 13, "Winter Daydreams"
Symphony No. 6 in b minor, opus 74 "Pathétique"
Variations on a Rococo Theme for Cello and Orchestra, opus 33
Violin Concerto in D Major, opus 35
Wagner "Im Treibhaus" ("In the Greenhouse") from the Wesendonck song cycle (orchestration by Felix Mottl)
Overture to "The Flying Dutchman"
Overture to "Die Meistersinger"
Overture to "Rienzi"
Prelude and Liebestod from "Tristan and Isolde"
Ride of the Valkyres from "Die Walküre" (Act 3)
Weber Overture to "Euryanthe"
Overture to "Der Freischütz"
Overture to "Oberon"
Copyright © 2018 Joseph Bousso


text:
Q: How to save an XmlDocument to a .csproj "formatted like Visual Studio" where empty elements are saved on separate lines? Currently I've created a PowerShell script to go through hundreds (yes, hundreds) of Visual Studio projects and update the References for consistency which fixes a number of subtle bugs. This works for being able to round-trip 99% of the XML, such that subsequent editing project files in Visual Studio does not introduce another change.
However, with XmlDocument.Save(), EMPTY elements are saved as a pair on the same line..
<StartupObject></StartupObject>

..instead of the way the Visual Studio project editor saves the EMPTY element split between two lines..
<StartupObject>
</StartupObject>

This leads to needless noise on the initial commit that will be reset as programmers update the projects from within Visual Studio.
How can a [modified] XmlDocument be saved using the same formatting rules Visual Studio [at least as of 2017] uses?
Currently the save is done using an explicit XmlWriter and XmlWriterSettings using the following configuration:
$writerSettings = New-Object System.Xml.XmlWriterSettings
$writerSettings.Indent = $true
$writerSettings.IndentChars = $indent # value stolen previously

$writer = [System.Xml.XmlWriter]::Create($path, $writerSettings)
$xml.Save($writer)

If using the the XmlDocument.PreserveWhitespace setting, unmodified nodes are not affected. However, in this case "improperly formatted" entries are not fixed and new nodes do not have correct indenting/formatting applied.
Preferably this can be handled with a simple modification to saving and/or settings instead of a custom writer (being the script is in PowerShell) or some post-save text manipulation (as such feels a bit of a kluge).

A: Although in general I think you should not tamper XML using regex, I also could not find any setting in the XmlWriter class that will change the style in which empty elements are written.
The only way I got it formatted the way you want is by having the XmlWriter write to a memory stream and use regex -replace on that:
$writerSettings             = New-Object System.Xml.XmlWriterSettings
$writerSettings.Indent      = $true
$writerSettings.IndentChars = '  '
$writerSettings.Encoding    = New-Object System.Text.UTF8Encoding $false  # set to UTF-8 No BOM

# create a stream object to write to
$stream = New-Object System.IO.MemoryStream

$writer = [System.Xml.XmlWriter]::Create($stream, $writerSettings)
$writer.WriteStartDocument()
$writer.WriteStartElement("Root")
$writer.WriteElementString("StartupObject", [string]::Empty)
$writer.WriteElementString("AnotherEmptyElement", [string]::Empty)
$writer.WriteEndElement()
$writer.WriteEndDocument()
$writer.Flush()
$writer.Dispose()

# get whatever is written to the stream in a string variable
$xml = [System.Text.Encoding]::Default.GetString(($stream.ToArray()))

# replace self-closing elements: <StartupObject />
# replace empty elements in one line: <StartupObject></StartupObject>
# to the format where opening and closing tags are on separate lines
$format = '$1<$2>{0}$1</$2>' -f [Environment]::NewLine
$xml = $xml -replace '(.*?)<(.*?)\s*/>', $format -replace '(.*?)<(.*?)></(.*?)>', $format

# save do disk
$xml | Out-File -FilePath 'D:\test.xml' -Force -Encoding default

Result:

<?xml version="1.0" encoding="utf-8"?>
<Root>
  <StartupObject>
  </StartupObject>
  <AnotherEmptyElement>
  </AnotherEmptyElement>
</Root>


GM Vassily Ivanchuk has won the ACP Golden Classic that introduced - rather brought back - the rule of adjournments in chess! Ivanchuk scored a near-perfect 5.0/6. The tournament was not rated so Ivanchuk would not have the excellent result reflect in his Fide rating. The second spot went to Gata Kamsky who finished half a point behind the champion.
ACP president Emil Sutovsky was third with 3.5. Anna Muzychuk had a fine result as well with a win over Krishnan Sasikiran. She was fourth. Fifth was Le Quang Liem, followed by Sasikiran and Baadur Jobava.
Here is also a nice video interview with GM Anna Muzychuk.


text:
Album: Veckatimest (2009)
Founding member Ed Droste told The Sun May 22, 2009 how this song came about: "Chris Bear (our drummer) and I were on a weekend trip to Cape Cod to play around with some song ideas and that one just came out of nowhere with Chris starting the piano line and myself quickly following with a vocal melody and lyrics."
Victoria LeGrand of Beach House supplied multi-tracked guest backing vocals on this other-worldly doo wop song about a relationship. Singer/co-songwriter/guitarist Daniel Rossen explained to Drowned In Sound: "When Ed first sent me this demo there was something in the melody that reminded me of Beach House, in a great way. Seemed like a great track for her to sing on."
This was the lead single from Veckatimest, Grizzly Bear's third studio album.
Veckatimest was recorded at Allaire Studios in upstate New York, Cape Cod, Massachusetts, and in a New York church. The set has been described by singer Robin Pecknold of their fellow animal-themed folk-rock outfit Fleet Foxes as "the best record of the decade."
Droste explained Grizzly Bear's name to The Sun: "During the time I was 'solo,' I thought it'd be a funny name for myself considering I look quite the opposite and my personality is rather teddy bear."
Veckatimest (pronounced 'VECK-ah-TIM-est') is an uninhabited island off the coast of Cape Cod, Massachusetts. Q magazine June 2009 asked Droste why Grizzly Bear named an album after it. He replied: "We'd spent a lot of time in the region, thanks to my grandmother having a house there that she'd graciously lent us before. So in the past we rehearsed, written music and now recorded in the area. We enjoyed the obtuse, eclectic nature of the name, it fit well with the abstract art well and it conjured up nice memories of the region."
Veckatimest debuted at #8 on the American album chart giving Warp Records their first ever Top 10 placing.
The song has featured on several TV commercials including a Volkswagen ad that aired in 2010 during Super Bowl XLIV.
More songs from Grizzly Bear
Lyrics to Two Weeks
Roy from Granbania, MaI am very glad that Grizzly Bear has been recognized for there achievements. Veckatimest is truly a good record.
Streets Of PhiladelphiaBruce Springsteen
Bruce Springsteen's "Streets Of Philadelphia" won the Oscar for Best Original Song in 1994, beating out Neil Young's "Philadelphia," which was also written for the movie Philadelphia.
My GenerationThe Who
Roger Daltrey stutters the vocal on "My Generation" by The Who. The idea was to sound like a British kid on speed.
Street Fighting ManThe Rolling Stones
Keith Richards did some studio alchemy on "Street Fighting Man," which is all acoustic except the bass.
The Night Chicago DiedPaper Lace
"The Night Chicago Died" was written and recorded by the British group Paper Lace. They talk about Al Capone in the song, but got a lot of details wrong - understandable since they wrote it based on gangster movies.
Hell's BellsAC/DC
A one-ton bell was custom made for AC/DC's "Hell's Bells." The recording was slowed to half speed to make it sound like a more ominous two-ton bell.
Angelo Moore of FishboneSongwriter Interviews
Fishbone has always enjoyed much more acclaim than popularity - Angelo might know why.
Frankie ValliSong Writing
An interview with Frankie Valli, who talks about why his songs - both solo and with The Four Seasons - have endured, and reflects on his time as Rusty Millio on The Sopranos.
Barney Hoskyns Explores The Forgotten History Of Woodstock, New YorkSong Writing
Our chat with Barney Hoskyns, who covers the wild years of Woodstock - the town, not the festival - in his book Small Town Talk.
MetallicaFact or Fiction
Beef with Bon Jovi? An unfortunate Spandex period? See if you can spot the true stories in this Metallica version of Fact or Fiction.
Randy HouserSongwriter Interviews
The "How Country Feels" singer talks Skynyrd and songwriting.
DevoSongwriter Interviews
Devo founders Mark Mothersbaugh and Jerry Casale take us into their world of subversive performance art. They may be right about the De-Evoloution thing.


text:
namespace t2
{
  namespace BuildResult
  {
    const char* Names[Enum::kCount] =
    {
      "Build success",
      "Build interrupted",
      "Build failed",
      "Build failed to setup error"
    };
  }

  static void ThreadStateInit(ThreadState* self, BuildQueue* queue, size_t scratch_size, int index)
  {
    HeapInit(&self->m_LocalHeap);
    LinearAllocInit(&self->m_ScratchAlloc, &self->m_LocalHeap, scratch_size, "thread-local scratch");
    self->m_ThreadIndex = index;
    self->m_Queue       = queue;
  }

  static void ThreadStateDestroy(ThreadState* self)
  {
    LinearAllocDestroy(&self->m_ScratchAlloc);
    HeapDestroy(&self->m_LocalHeap);
  }

  static int AvailableNodeCount(BuildQueue* queue)
  {
    const uint32_t queue_mask  = queue->m_QueueCapacity - 1;
    uint32_t       read_index  = queue->m_QueueReadIndex;
    uint32_t       write_index = queue->m_QueueWriteIndex;

    return (write_index - read_index) & queue_mask;
  }

  static NodeState* GetStateForNode(BuildQueue* queue, int32_t src_index)
  {
    int32_t state_index = queue->m_Config.m_NodeRemappingTable[src_index];

    if (state_index == -1)
      return nullptr;

    NodeState* state = queue->m_Config.m_NodeState + state_index;

    CHECK(int(state->m_MmapData - queue->m_Config.m_NodeData) == src_index);

    return state;
  }

  static bool AllDependenciesReady(BuildQueue* queue, const NodeState* state)
  {
    const NodeData *src_node      = state->m_MmapData;

    for (int32_t dep_index : src_node->m_Dependencies)
    {
      NodeState* state = GetStateForNode(queue, dep_index);

      CHECK(state != nullptr);

      if (!NodeStateIsCompleted(state))
      {
        return false;
      }
    }

    return true;
  }

  static void WakeWaiters(BuildQueue* queue, int count)
  {
    if (count > 1)
      CondBroadcast(&queue->m_WorkAvailable);
    else
      CondSignal(&queue->m_WorkAvailable);
  }

  static void Enqueue(BuildQueue* queue, NodeState* state)
  {
    uint32_t       write_index = queue->m_QueueWriteIndex;
    const uint32_t queue_mask  = queue->m_QueueCapacity - 1;
    int32_t*       build_queue = queue->m_Queue;

    CHECK(AllDependenciesReady(queue, state));
    CHECK(!NodeStateIsQueued(state));
    CHECK(!NodeStateIsActive(state));
    CHECK(!NodeStateIsCompleted(state));
    CHECK(state->m_MmapData->m_PassIndex == queue->m_CurrentPassIndex);

#if ENABLED(CHECKED_BUILD)
    const int avail_init = AvailableNodeCount(queue);
#endif

    int state_index = int(state - queue->m_Config.m_NodeState);

    build_queue[write_index] = state_index;
    write_index              = (write_index + 1) & queue_mask;
    queue->m_QueueWriteIndex = write_index;

    NodeStateFlagQueued(state);

    CHECK(AvailableNodeCount(queue) == 1 + avail_init);
  }

  static void ParkExpensiveNode(BuildQueue* queue, NodeState* state)
  {
    NodeStateFlagQueued(state);
    CHECK(queue->m_ExpensiveWaitCount < (int) queue->m_QueueCapacity);
    queue->m_ExpensiveWaitList[queue->m_ExpensiveWaitCount++] = state;
  }

  static void UnparkExpensiveNode(BuildQueue* queue)
  {
    if (queue->m_ExpensiveWaitCount > 0)
    {
      NodeState* node = queue->m_ExpensiveWaitList[--queue->m_ExpensiveWaitCount];
      CHECK(NodeStateIsQueued(node));
      // Really only to avoid tripping up checks in Enqueue()
      NodeStateFlagUnqueued(node);
      NodeStateFlagInactive(node);
      Enqueue(queue, node);
      CondSignal(&queue->m_WorkAvailable);
    }
  }

  static BuildProgress::Enum SetupDependencies(BuildQueue* queue, NodeState* node)
  {
    const NodeData *src_node         = node->m_MmapData;
    int             dep_waits_needed = 0;
    int             enqueue_count    = 0;

    // Go through all dependencies and see how those nodes are doing.  If any
    // of them are not finished, we'll have to wait before this node can continue
    // to advance its state machine.
    for (int32_t dep_index : src_node->m_Dependencies)
    {
      NodeState* state = GetStateForNode(queue, dep_index);

      CHECK(state != nullptr);

      CHECK(state->m_MmapData->m_PassIndex <= src_node->m_PassIndex);

      if (NodeStateIsCompleted(state))
        continue;

      ++dep_waits_needed;

      if (!NodeStateIsQueued(state) && !NodeStateIsActive(state) && !NodeStateIsBlocked(state))
      {
        Enqueue(queue, state);
        ++enqueue_count;
      }
    }

    if (enqueue_count > 0)
      WakeWaiters(queue, enqueue_count);

    // We're waiting on dependencies to be ready.
    if (dep_waits_needed > 0)
      return BuildProgress::kBlocked;

    return BuildProgress::kUnblocked;
  }

  static bool OutputFilesDiffer(const NodeData* node_data, const NodeStateData* prev_state)
  {
    int file_count = node_data->m_OutputFiles.GetCount();

    if (file_count != prev_state->m_OutputFiles.GetCount())
      return true;

    for (int i = 0; i < file_count; ++i)
    {
      if (0 != strcmp(node_data->m_OutputFiles[i].m_Filename, prev_state->m_OutputFiles[i]))
        return true;
    }

    return false;
  }

  static bool OutputFilesMissing(StatCache* stat_cache, const NodeData* node)
  {
    for (const FrozenFileAndHash& f : node->m_OutputFiles)
    {
      FileInfo i = StatCacheStat(stat_cache, f.m_Filename, f.m_FilenameHash);

      if (!i.Exists())
        return true;
    }

    return false;
  }

  static bool MakeDirectoriesRecursive(StatCache* stat_cache, const PathBuffer& dir)
  {
    PathBuffer parent_dir = dir;
    PathStripLast(&parent_dir);

    // Can't go any higher.
    if (dir == parent_dir)
      return true;

    if (!MakeDirectoriesRecursive(stat_cache, parent_dir))
      return false;

    char path[kMaxPathLength];
    PathFormat(path, &dir);

    FileInfo info = StatCacheStat(stat_cache, path);

    if (info.Exists())
    {
      // Just asssume this is a directory. We could check it - but there's currently no way via _stat64() calls
      // on Windows to check if a file is a symbolic link (to a directory).
      return true;
    }
    else
    {
      Log(kSpam, "create dir \"%s\"", path);
      bool success = MakeDirectory(path);
      StatCacheMarkDirty(stat_cache, path, Djb2HashPath(path));
      return success;
    }
  }

  static bool MakeDirectoriesForFile(StatCache* stat_cache, const PathBuffer& buffer)
  {
    PathBuffer path = buffer;
    PathStripLast(&path);
    return MakeDirectoriesRecursive(stat_cache, path);
  }

  static BuildProgress::Enum CheckInputSignature(BuildQueue* queue, ThreadState* thread_state, NodeState* node, Mutex* queue_lock)
  {
    CHECK(AllDependenciesReady(queue, node));

    MutexUnlock(queue_lock);

    const BuildQueueConfig& config = queue->m_Config;
    StatCache* stat_cache = config.m_StatCache;
    DigestCache* digest_cache = config.m_DigestCache;

    const NodeData* node_data = node->m_MmapData;

    HashState sighash;
    FILE* debug_log = (FILE*) queue->m_Config.m_FileSigningLog;

    if (debug_log)
    {
      MutexLock(queue->m_Config.m_FileSigningLogMutex);
      fprintf(debug_log, "input_sig(\"%s\"):\n", node_data->m_Annotation.Get());
      HashInitDebug(&sighash, debug_log);
    }
    else
    {
      HashInit(&sighash);
    }

    // Start with command line action. If that changes, we'll definitely have to rebuild.
    HashAddString(&sighash, node_data->m_Action);
    HashAddSeparator(&sighash);

    if (const char* pre_action = node_data->m_PreAction)
    {
      HashAddString(&sighash, pre_action);
      HashAddSeparator(&sighash);
    }

    // Roll back scratch allocator after scanning only - filenames are being retained between scans
    MemAllocLinearScope alloc_scope(&thread_state->m_ScratchAlloc);

    const ScannerData* scanner = node_data->m_Scanner;

    for (const FrozenFileAndHash& input : node_data->m_InputFiles)
    {
      // Add path and timestamp of every direct input file.
      HashAddPath(&sighash, input.m_Filename);
      ComputeFileSignature(&sighash, stat_cache, digest_cache, input.m_Filename, input.m_FilenameHash, config.m_ShaDigestExtensions, config.m_ShaDigestExtensionCount);

      if (scanner)
      {
        ScanInput scan_input;
        scan_input.m_ScannerConfig = scanner;
        scan_input.m_ScratchAlloc  = &thread_state->m_ScratchAlloc;
        scan_input.m_ScratchHeap   = &thread_state->m_LocalHeap;
        scan_input.m_FileName      = input.m_Filename;
        scan_input.m_ScanCache     = queue->m_Config.m_ScanCache;

        ScanOutput scan_output;

        if (ScanImplicitDeps(stat_cache, &scan_input, &scan_output))
        {
          for (int i = 0, count = scan_output.m_IncludedFileCount; i < count; ++i)
          {
            // Add path and timestamp of every indirect input file (#includes)
            const FileAndHash& path = scan_output.m_IncludedFiles[i];
            HashAddPath(&sighash, path.m_Filename);
            ComputeFileSignature(&sighash, stat_cache, digest_cache, path.m_Filename, path.m_FilenameHash, config.m_ShaDigestExtensions, config.m_ShaDigestExtensionCount);
          }
        }
      }
    }

    HashFinalize(&sighash, &node->m_InputSignature);

    if (debug_log)
    {
      char sig[kDigestStringSize];
      DigestToString(sig, node->m_InputSignature);
      fprintf(debug_log, "  => %s\n", sig);
      MutexUnlock(queue->m_Config.m_FileSigningLogMutex);
    }

    // Figure out if we need to rebuild this node.
    const NodeStateData* prev_state = node->m_MmapState;

    BuildProgress::Enum next_state;

    if (!prev_state)
    {
      // This is a new node - we must built it
      Log(kSpam, "T=%d: building %s - new node", thread_state->m_ThreadIndex, node_data->m_Annotation.Get());
      next_state = BuildProgress::kRunAction;
    }
    else if (prev_state->m_InputSignature != node->m_InputSignature)
    {
      // The input signature has changed (either direct inputs or includes)
      // We need to rebuild this node.
      char oldDigest[kDigestStringSize];
      char newDigest[kDigestStringSize];
      DigestToString(oldDigest, prev_state->m_InputSignature);
      DigestToString(newDigest, node->m_InputSignature);

      Log(kSpam, "T=%d: building %s - input signature changed. was:%s now:%s", thread_state->m_ThreadIndex, node_data->m_Annotation.Get(), oldDigest, newDigest);
      next_state = BuildProgress::kRunAction;
    }
    else if (prev_state->m_BuildResult != 0)
    {
      // The build progress failed the last time around - we need to retry it.
      Log(kSpam, "T=%d: building %s - previous build failed", thread_state->m_ThreadIndex, node_data->m_Annotation.Get());
      next_state = BuildProgress::kRunAction;
    }
    else if (OutputFilesDiffer(node_data, prev_state))
    {
      // The output files are different - need to rebuild.
      Log(kSpam, "T=%d: building %s - output files have changed", thread_state->m_ThreadIndex, node_data->m_Annotation.Get());
      next_state = BuildProgress::kRunAction;
    }
    else if (OutputFilesMissing(stat_cache, node_data))
    {
      // One or more output files are missing - need to rebuild.
      Log(kSpam, "T=%d: building %s - output files are missing", thread_state->m_ThreadIndex, node_data->m_Annotation.Get());
      next_state = BuildProgress::kRunAction;
    }
    else
    {
      // Everything is up to date
      Log(kSpam, "T=%d: %s - up to date", thread_state->m_ThreadIndex, node_data->m_Annotation.Get());
      next_state = BuildProgress::kUpToDate;
    }

    MutexLock(queue_lock);

    return next_state;
  }

  static BuildProgress::Enum RunAction(BuildQueue* queue, ThreadState* thread_state, NodeState* node, Mutex* queue_lock)
  {
    const NodeData    *node_data    = node->m_MmapData;
    const char        *cmd_line     = node_data->m_Action;
    const char        *pre_cmd_line = node_data->m_PreAction;

    if (!cmd_line || cmd_line[0] == '\0')
      return BuildProgress::kSucceeded;

    if (node->m_MmapData->m_Flags & NodeData::kFlagExpensive)
    {
      if (queue->m_ExpensiveRunning == queue->m_Config.m_MaxExpensiveCount)
      {
        ParkExpensiveNode(queue, node);
        return BuildProgress::kRunAction;
      }
      else
      {
        ++queue->m_ExpensiveRunning;
      }
    }

    MutexUnlock(queue_lock);

    StatCache         *stat_cache   = queue->m_Config.m_StatCache;
    const char        *annotation   = node_data->m_Annotation;
    int                job_id       = thread_state->m_ThreadIndex;
    int                echo_cmdline = 0 != (queue->m_Config.m_Flags & BuildQueueConfig::kFlagEchoCommandLines);

    // Repack frozen env to pointers on the stack.
    int                env_count    = node_data->m_EnvVars.GetCount();
    EnvVariable*       env_vars     = (EnvVariable*) alloca(env_count * sizeof(EnvVariable));
    for (int i = 0; i < env_count; ++i)
    {
      env_vars[i].m_Name  = node_data->m_EnvVars[i].m_Name;
      env_vars[i].m_Value = node_data->m_EnvVars[i].m_Value;
    }

    for (const FrozenFileAndHash& output_file : node_data->m_OutputFiles)
    {
      PathBuffer output;
      PathInit(&output, output_file.m_Filename);

      if (!MakeDirectoriesForFile(stat_cache, output))
      {
        Log(kError, "failed to create output directories for %s", output_file.m_Filename.Get());
        MutexLock(queue_lock);
        return BuildProgress::kFailed;
      }
    }

    ExecResult result = { 0, false };

    // See if we need to remove the output files before running anything.
    if (0 == (node_data->m_Flags & NodeData::kFlagOverwriteOutputs))
    {
      for (const FrozenFileAndHash& output : node_data->m_OutputFiles)
      {
        Log(kDebug, "Removing output file %s before running action", output.m_Filename.Get());
        remove(output.m_Filename);
        StatCacheMarkDirty(stat_cache, output.m_Filename, output.m_FilenameHash);
      }
    }

    if (pre_cmd_line)
    {
      Log(kSpam, "Launching pre-action process");
      TimingScope timing_scope(&g_Stats.m_ExecCount, &g_Stats.m_ExecTimeCycles);
      ProfilerScope prof_scope("Pre-build", job_id);
      result = ExecuteProcess(pre_cmd_line, env_count, env_vars, job_id, echo_cmdline, "(pre-build command)");
      Log(kSpam, "Process return code %d", result.m_ReturnCode);
    }

    if (0 == result.m_ReturnCode)
    {
      Log(kSpam, "Launching process");
      TimingScope timing_scope(&g_Stats.m_ExecCount, &g_Stats.m_ExecTimeCycles);
      ProfilerScope prof_scope(annotation, job_id);
      result = ExecuteProcess(cmd_line, env_count, env_vars, job_id, echo_cmdline, annotation);
      Log(kSpam, "Process return code %d", result.m_ReturnCode);
    }

    for (const FrozenFileAndHash& output : node_data->m_OutputFiles)
    {
      StatCacheMarkDirty(stat_cache, output.m_Filename, output.m_FilenameHash);
    }

    MutexLock(queue_lock);

    if (result.m_WasSignalled)
    {
      SignalSet("child processes signalled");
    }

    if (0 == result.m_ReturnCode)
    {
      return BuildProgress::kSucceeded;
    }
    else
    {
      // Clean up output files after a failed build unless they are precious.
      if (0 == (NodeData::kFlagPreciousOutputs & node_data->m_Flags))
      {
        for (const FrozenFileAndHash& output : node_data->m_OutputFiles)
        {
          Log(kDebug, "Removing output file %s from failed build", output.m_Filename.Get());
          remove(output.m_Filename);
          StatCacheMarkDirty(stat_cache, output.m_Filename, output.m_FilenameHash);
        }
      }

      return BuildProgress::kFailed;
    }
  }

  static void UnblockWaiters(BuildQueue* queue, NodeState* node)
  {
    const NodeData *src_node       = node->m_MmapData;
    int             enqueue_count  = 0;

    for (int32_t link : src_node->m_BackLinks)
    {
      if (NodeState* waiter = GetStateForNode(queue, link))
      {
        // Only wake nodes in our current pass
        if (waiter->m_MmapData->m_PassIndex != queue->m_CurrentPassIndex)
          continue;

        // If the node isn't ready, skip it.
        if (!AllDependenciesReady(queue, waiter))
          continue;

        // Did someone else get to the node first?
        if (NodeStateIsQueued(waiter) || NodeStateIsActive(waiter))
          continue;

        //printf("%s is ready to go\n", GetSourceNode(queue, waiter)->m_Annotation);
        Enqueue(queue, waiter);
        ++enqueue_count;
      }
    }

    if (enqueue_count > 0)
      WakeWaiters(queue, enqueue_count);
  }

  static void AdvanceNode(BuildQueue* queue, ThreadState* thread_state, NodeState* node, Mutex* queue_lock)
  {
    Log(kSpam, "T=%d, [%d] Advancing %s\n",
        thread_state->m_ThreadIndex, node->m_Progress, node->m_MmapData->m_Annotation.Get());

    CHECK(!NodeStateIsCompleted(node));
    CHECK(NodeStateIsActive(node));
    CHECK(!NodeStateIsQueued(node));

    for (;;)
    {
      switch (node->m_Progress)
      {
        case BuildProgress::kInitial:
          node->m_Progress = SetupDependencies(queue, node);

          if (BuildProgress::kBlocked == node->m_Progress)
          {
            // Set ourselves as inactive until our dependencies are ready.
            NodeStateFlagInactive(node);
            return;
          }
          else
            break;

        case BuildProgress::kBlocked:
          CHECK(AllDependenciesReady(queue, node));
          node->m_Progress = BuildProgress::kUnblocked;
          break;

        case BuildProgress::kUnblocked:
          node->m_Progress = CheckInputSignature(queue, thread_state, node, queue_lock);
          break;

        case BuildProgress::kRunAction:
          node->m_Progress = RunAction(queue, thread_state, node, queue_lock);

          // If we couldn't make progress, we're a parked expensive node.
          // Another expensive job will put us back on the queue later when it
          // has finshed.
          if (BuildProgress::kRunAction == node->m_Progress)
            return;

          // Otherwise, we just ran our action. If we were an expensive node,
          // make sure to let other expensive nodes on to the cores now.
          if (node->m_MmapData->m_Flags & NodeData::kFlagExpensive)
          {
            --queue->m_ExpensiveRunning;
            CHECK(queue->m_ExpensiveRunning >= 0);

            // We were an expensive job. We can unpark another expensive job if
            // anything is waiting.
            UnparkExpensiveNode(queue);
          }
          break;

        case BuildProgress::kSucceeded:
        case BuildProgress::kUpToDate:
          node->m_BuildResult = 0;
          node->m_Progress    = BuildProgress::kCompleted;
          break;

        case BuildProgress::kFailed:
          queue->m_FailedNodeCount++;

          CondBroadcast(&queue->m_WorkAvailable);

          node->m_BuildResult = 1;
          node->m_Progress    = BuildProgress::kCompleted;
          break;

        case BuildProgress::kCompleted:
          queue->m_PendingNodeCount--;

          UnblockWaiters(queue, node);

          CondBroadcast(&queue->m_WorkAvailable);
          return;

        default:
          Croak("invalid node state progress");
          break;
      }
    }
  }

  static NodeState* NextNode(BuildQueue* queue)
  {
    int avail_count = AvailableNodeCount(queue);

    if (0 == avail_count)
      return nullptr;

    uint32_t read_index = queue->m_QueueReadIndex;

    int32_t node_index = queue->m_Queue[read_index];

    // Update read index
    queue->m_QueueReadIndex = (read_index + 1) & (queue->m_QueueCapacity - 1);

    NodeState* state = queue->m_Config.m_NodeState + node_index;

    CHECK(NodeStateIsQueued(state));
    CHECK(!NodeStateIsActive(state));

    NodeStateFlagUnqueued(state);
    NodeStateFlagActive(state);

    return state;
  }

  static bool ShouldKeepBuilding(BuildQueue* queue, int thread_index)
  {
    // Stop running if we were signalled
    if (nullptr != SignalGetReason())
      return false;

    // Stop running if there are errors and we're stopping on the first error.
    if (queue->m_FailedNodeCount > 0)
    {
      if (0 == (queue->m_Config.m_Flags & BuildQueueConfig::kFlagContinueOnError))
      {
        return false;
      }
    }

    // If we're quitting, definitely stop building.
    if (queue->m_QuitSignalled)
      return false;

    // If we're a worker thread, keep running until we quit.
    if (0 != thread_index)
      return true;

    // We're the main thread. Just loop until there's no more nodes and then move on to the next pass.
    return queue->m_PendingNodeCount > 0;
  }

  static void BuildLoop(ThreadState* thread_state)
  {
    BuildQueue        *queue = thread_state->m_Queue;
    ConditionVariable *cv    = &queue->m_WorkAvailable;
    Mutex             *mutex = &queue->m_Lock;

    MutexLock(mutex);

    while (ShouldKeepBuilding(queue, thread_state->m_ThreadIndex))
    {
      if (NodeState* node = NextNode(queue))
      {
        AdvanceNode(queue, thread_state, node, mutex);
      }
      else
      {
        CondWait(cv, mutex);
      }
    }

    MutexUnlock(mutex);

    Log(kSpam, "build thread %d exiting\n", thread_state->m_ThreadIndex);
  }

  static ThreadRoutineReturnType TUNDRA_STDCALL BuildThreadRoutine(void* param)
  {
    ThreadState *thread_state = static_cast<ThreadState*>(param);

    LinearAllocSetOwner(&thread_state->m_ScratchAlloc, ThreadCurrent());

    BuildLoop(thread_state);

    return 0;
  }

  void BuildQueueInit(BuildQueue* queue, const BuildQueueConfig* config)
  {
    ProfilerScope prof_scope("Tundra BuildQueueInit", 0);
    CHECK(config->m_MaxExpensiveCount > 0 && config->m_MaxExpensiveCount <= config->m_ThreadCount);

    MutexInit(&queue->m_Lock);
    CondInit(&queue->m_WorkAvailable);

    // Compute queue capacity. Allocate space for a power of two number of
    // indices that's at least one larger than the max number of nodes. Because
    // the queue is treated as a ring buffer, we want W=R to mean an empty
    // buffer.
    uint32_t capacity = NextPowerOfTwo(config->m_MaxNodes + 1);

    MemAllocHeap* heap = config->m_Heap;

    queue->m_Queue              = HeapAllocateArray<int32_t>(heap, capacity);
    queue->m_QueueReadIndex     = 0;
    queue->m_QueueWriteIndex    = 0;
    queue->m_QueueCapacity      = capacity;
    queue->m_Config             = *config;
    queue->m_PendingNodeCount   = 0;
    queue->m_FailedNodeCount    = 0;
    queue->m_QuitSignalled      = false;
    queue->m_ExpensiveRunning   = 0;
    queue->m_ExpensiveWaitCount = 0;
    queue->m_ExpensiveWaitList  = HeapAllocateArray<NodeState*>(heap, capacity);

    CHECK(queue->m_Queue);

    if (queue->m_Config.m_ThreadCount > kMaxBuildThreads)
    {
      Log(kWarning, "too many build threads (%d) - clamping to %d",
          queue->m_Config.m_ThreadCount, kMaxBuildThreads);

      queue->m_Config.m_ThreadCount = kMaxBuildThreads;
    }

    Log(kDebug, "build queue initialized; ring buffer capacity = %u", queue->m_QueueCapacity);

    // Block all signals on the main thread.
    SignalBlockThread(true);
    SignalHandlerSetCondition(&queue->m_WorkAvailable);

    // Create build threads.
    for (int i = 0, thread_count = config->m_ThreadCount; i < thread_count; ++i)
    {
      ThreadState* thread_state = &queue->m_ThreadState[i];

      ThreadStateInit(thread_state, queue, MB(32), i);

      if (i > 0)
      {
        Log(kDebug, "starting build thread %d", i);
        queue->m_Threads[i] = ThreadStart(BuildThreadRoutine, thread_state);
      }
    }
  }

  void BuildQueueDestroy(BuildQueue* queue)
  {
    ProfilerScope prof_scope("Tundra BuildQueueDestroy", 0);
    Log(kDebug, "destroying build queue");
    const BuildQueueConfig* config = &queue->m_Config;

    MutexLock(&queue->m_Lock);
    queue->m_QuitSignalled = true;
    MutexUnlock(&queue->m_Lock);

    CondBroadcast(&queue->m_WorkAvailable);

    for (int i = 0, thread_count = config->m_ThreadCount; i < thread_count; ++i)
    {
      if (i > 0)
      {
        Log(kDebug, "joining with build thread %d", i);
        ThreadJoin(queue->m_Threads[i]);
      }

      ThreadStateDestroy(&queue->m_ThreadState[i]);
    }

    // Deallocate storage.
    MemAllocHeap* heap = queue->m_Config.m_Heap;
    HeapFree(heap, queue->m_ExpensiveWaitList);
    HeapFree(heap, queue->m_Queue);

    CondDestroy(&queue->m_WorkAvailable);
    MutexDestroy(&queue->m_Lock);

    // Unblock all signals on the main thread.
    SignalHandlerSetCondition(nullptr);
    SignalBlockThread(false);
  }

  BuildResult::Enum BuildQueueBuildNodeRange(BuildQueue* queue, int start_index, int count, int pass_index)
  {
    // Make sure none of the build threads see in-progress state due to a spurious wakeup.
    MutexLock(&queue->m_Lock);

    CHECK(start_index + count <= queue->m_Config.m_MaxNodes);

    queue->m_CurrentPassIndex = pass_index;

    // Initialize build queue with index range to build
    int32_t   *build_queue = queue->m_Queue;
    NodeState *node_states = queue->m_Config.m_NodeState;

    for (int i = 0; i < count; ++i)
    {
      NodeState* state = node_states + start_index + i;

      NodeStateFlagQueued(state);

      // Verify node hasn't been touched already
      CHECK(state->m_Progress == BuildProgress::kInitial);

      build_queue[i] = start_index + i;
    }

    queue->m_PendingNodeCount = count;
    queue->m_FailedNodeCount  = 0;
    queue->m_QueueWriteIndex  = count;
    queue->m_QueueReadIndex   = 0;

    MutexUnlock(&queue->m_Lock);

    CondBroadcast(&queue->m_WorkAvailable);

    // This thread is thread 0.
    BuildLoop(&queue->m_ThreadState[0]);

    if (SignalGetReason())
      return BuildResult::kInterrupted;
    else if (queue->m_FailedNodeCount)
      return BuildResult::kBuildError;
    else
      return BuildResult::kOk;
  }
}

redpajama_set_name: RedPajamaGithub


If you set your file up correctly you will definitely get what you make. I ordered many single pieces to put together myself and all my cards were the "White" color choice which is the smaller # card stock. This worked out perfect because with four pieces all at the same # card stock, i was able to get away with only one stamp on my envelope. I also paired my invitations with the heavier... 20/07/2009 · Usually, if you set the printer for the Document and try to set too low a margin, Word will automatically readjust the margins to the printer's settings. So if you want to print to the edge of the 5.5"x7.75" size, you'll have to print to on a larger paper size, like the letter size, and cut it down.
The resolution setting is crucial when you want to print. A 1600 pixel x 1200 pixel image printed at 72 ppi, for example, would output at over 22" x 16". However, at 300 ppi, that same image would output at 5.33" x 4", or about the same size as a postcard. how to download a book i bought on amazon 20/07/2009 · Usually, if you set the printer for the Document and try to set too low a margin, Word will automatically readjust the margins to the printer's settings. So if you want to print to the edge of the 5.5"x7.75" size, you'll have to print to on a larger paper size, like the letter size, and cut it down.
But I also need to print out 5x7 cards of the same flyer to put on my tables. How do i do this.When I just change the size of the paper 1/2 of the information is left off of it. How do i do this.When I just change the size of the paper 1/2 of the information is left off of it. how to change a bike tire without tire levers 11/08/2007 · Configuring printer to print on 5x7 paper I went shopping at the good ol' Dollar store today and picked up a 15-pack of photo paper. The "guide" (which is a crappy useless sheet) said to configure it via the printer menu.
Step #2: Task: Open printing-template.odt and ensure that the page style matches the paper size you use. For example, if your paper tray holds A4, please change the page-settings of to reflect the media size of _your_ sheets using Format > Page.
Some photo printers have settings to print on 5-inch-by-7-inch paper. Load the paper into the printer tray and adjust the printer tabs to fit snugly on both sides of the paper. Change the paper type and choose "5x7" from the Paper Size drop down.
If you want the printer software to warn you if you try to print with the wrong paper size, select the Paper Size Notice checkbox. Note: If you turn on Paper Size Notice , your product will prevent you from printing with the wrong paper size settings.
18/12/2018 · Open the document or page that you want to print, then press Ctrl+P, select your printer's name if it isn't already selected, review the rest of the print settings if needed, and click Print. You can also find the Print option in the File menu of most programs.
7/03/2011 · You will need to set the size to 6.4" x 4.38" and then, when you close the Envelope Options and Envelope dialog and have an envelope on the screen, go into Page Setup and add 0.65" (6.4" - 5.75") to the left margin. This assumes that your printer can actually print an envelope this size.


Build a Book illustrations for Humpty Dumpty = Cute!
This was a really fun project, given that I have a very soft spot for fat cats. It's just a cute and simple poem about a little girl's very own cat, named John Henry. Humpty Dumpty has a fun activity for kids, they can cut out the pages and cut them up, fold and staple to make their own mini book. A quick lesson in book binding and printing forms as it's a bit of a puzzle to make sure the pages come together in the right order.
The illustrations were fun to do as they're simple and rely totally on the girth of the cat to give them character. Typical cat (just like mine), all he does is eat and sleep and love… and play and get exercise for 5 minutes a day!
What she said… All true!


text:
The Winners' Club: A List of the Best 'Voice' Contestants and Where They Are Now
Marisa Roffman April 28, 2017, 9:00 am
Trae Patton/NBC/Getty Images
Cassadee Pope with Blake Shelton
SAWYER FREDERICKS
The Season 8 winner—and the sole victor for former coach Pharrell Williams—released a self-titled EP in 2015 and the full-length album A Good Storm in 2016. Fredericks opted to become an independent artist in 2017; he is currently working on new music and touring.
SUNDANCE HEAD
In the aftermath of his Voice victory, reigning champ Head joined his coach, Blake Shelton, on his 2017 tour. Head has also recorded a yet-to-be-released single that reportedly features a guest spot from a Country Music Hall of Fame singer.
'The Voice' Coaches on Their Soaring Season 12: 'They're Killing Right Now!'
The coaches of 'The Voice
Team Blake's Pope—the show's first female winner—released her album Frame by Frame in 2013 (which bowed at No. 9 on the Billboard 200 charts) and a follow-up EP, Summer, in 2016. Since her Season 3 crowning, Pope has toured with Tim McGraw, Dierks Bentley, Rascal Flatts and The Band Perry. Additionally, Pope's duet with Chris Young, "Think of You," earned a 2017 Grammy nomination for Best Country Duo/Group Performance.
Immediately after his Season 9 win, Smith (coached by Adam Levine) set chart records: He became the first artist to hold the No. 1 and 2 spots on Billboard's Hot Christian Songs simultaneously with Voice numbers "Mary, Did You Know" and "Hallelujah." In 2016, he performed "You Are So Beautiful" with David Foster and released two studio albums, "Something Beautiful" and "'Tis the Season."
The Voice, Mondays and Tuesdays, 8/7c, NBC
'NCIS': Sean Murray on Vacation Interruptus & That Airport Scene Yesterday, 12:00 pm
A Hurricane & the Original T.C. Both Blow into 'Magnum P.I.' Yesterday, 11:00 am
Worth Watching: 'WandaVision,' 'One Night in Miami,' OWN's 'Belle Collective,' 'Bling Empire' Yesterday, 7:00 am
On 'Superman & Lois,' the Most Challenging Adversaries Might Be Their Kids Yesterday, 1:15 pm
It's All Downhill for Athena, Maddie & Chimney on Season 4 of '9-1-1' Yesterday, 6:00 pm


text:
<?php

class Jetpack_Sync_Module_Comments extends Jetpack_Sync_Module {

	public function name() {
		return 'comments';
	}

	public function init_listeners( $callable ) {
		add_action( 'wp_insert_comment', $callable, 10, 2 );
		add_action( 'deleted_comment', $callable );
		add_action( 'trashed_comment', $callable );
		add_action( 'spammed_comment', $callable );
		add_action( 'trashed_post_comments', $callable, 10, 2 );
		add_action( 'untrash_post_comments', $callable );

		// even though it's messy, we implement these hooks because
		// the edit_comment hook doesn't include the data
		// so this saves us a DB read for every comment event
		foreach ( array( '', 'trackback', 'pingback' ) as $comment_type ) {
			foreach ( array( 'unapproved', 'approved' ) as $comment_status ) {
				$comment_action_name = "comment_{$comment_status}_{$comment_type}";
				add_action( $comment_action_name, $callable, 10, 2 );
			}
		}
	}

	public function init_full_sync_listeners( $callable ) {
		add_action( 'jetpack_full_sync_comments', $callable ); // also send comments meta
	}

	public function init_before_send() {
		add_filter( 'jetpack_sync_before_send_wp_insert_comment', array( $this, 'expand_wp_insert_comment' ) );

		foreach ( array( '', 'trackback', 'pingback' ) as $comment_type ) {
			foreach ( array( 'unapproved', 'approved' ) as $comment_status ) {
				$comment_action_name = "comment_{$comment_status}_{$comment_type}";
				add_filter( 'jetpack_sync_before_send_' . $comment_action_name, array(
					$this,
					'expand_wp_insert_comment',
				) );
			}
		}

		// full sync
		add_filter( 'jetpack_sync_before_send_jetpack_full_sync_comments', array( $this, 'expand_comment_ids' ) );
	}

	public function enqueue_full_sync_actions( $config ) {
		global $wpdb;
		return $this->enqueue_all_ids_as_action( 'jetpack_full_sync_comments', $wpdb->comments, 'comment_ID', $this->get_where_sql( $config ) );
	}

	public function estimate_full_sync_actions( $config ) {
		global $wpdb;

		$query = "SELECT count(*) FROM $wpdb->comments";

		if ( $where_sql = $this->get_where_sql( $config ) ) {
			$query .= ' WHERE ' . $where_sql;
		}

		$count = $wpdb->get_var( $query );

		return (int) ceil( $count / self::ARRAY_CHUNK_SIZE );
	}

	private function get_where_sql( $config ) {
		if ( is_array( $config ) ) {
			return 'comment_ID IN (' . implode( ',', array_map( 'intval', $config ) ) . ')';
		}

		return null;
	}

	public function get_full_sync_actions() {
		return array( 'jetpack_full_sync_comments' );
	}

	public function count_full_sync_actions( $action_names ) {
		return $this->count_actions( $action_names, array( 'jetpack_full_sync_comments' ) );
	}

	function expand_wp_comment_status_change( $args ) {
		return array( $args[0], $this->filter_comment( $args[1] ) );
	}

	function expand_wp_insert_comment( $args ) {
		return array( $args[0], $this->filter_comment( $args[1] ) );
	}

	function filter_comment( $comment ) {
		/**
		 * Filters whether to prevent sending comment data to .com
		 *
		 * Passing true to the filter will prevent the comment data from being sent
		 * to the WordPress.com.
		 * Instead we pass data that will still enable us to do a checksum against the
		 * Jetpacks data but will prevent us from displaying the data on in the API as well as
		 * other services.
		 * @since 4.2.0
		 *
		 * @param boolean false prevent post data from bing synced to WordPress.com
		 * @param mixed $comment WP_COMMENT object
		 */
		if ( apply_filters( 'jetpack_sync_prevent_sending_comment_data', false, $comment ) ) {
			$blocked_comment                   = new stdClass();
			$blocked_comment->comment_ID       = $comment->comment_ID;
			$blocked_comment->comment_date     = $comment->comment_date;
			$blocked_comment->comment_date_gmt = $comment->comment_date_gmt;
			$blocked_comment->comment_approved = 'jetpack_sync_blocked';

			return $blocked_comment;
		}

		return $comment;
	}

	public function expand_comment_ids( $args ) {
		$comment_ids = $args[0];
		$comments    = get_comments( array(
			'include_unapproved' => true,
			'comment__in'        => $comment_ids,
		) );

		return array(
			$comments,
			$this->get_metadata( $comment_ids, 'comment' ),
		);
	}
}


Located in Paris' 8th Arrondissement, just a few steps from the Champs Elysées. A unique opportunity to invest in this recently renovated 4* hotel which operates at around 70% occupancy. A broad range of rooms from executive level to suites, all with classic decor. The hotel also boasts a rooftop lounge, bar, fitness room and a business zone with modern computers. The current operators wished to continue to operate as a 4* hotel after having been authorised to operate at a 5* level.
Modern, recently renovated 4* hotel.
Close to the Champs Elysées with a view of the Eiffel Tower.
49 bedrooms - from executive rooms to an apartment.
Option to upgrade to 5* level.


I think I have the start of an invoice tracker. The user may define clients and define actions (punch in/out, arrive, depart, etc). You track events such as "I've arrived at client X" and "departing location on client X". In the end, I hope to export a CSV (comma separated file) to the sd card which later could be imported to a spread sheet.
So I've added an audible alert to when the clock hits zero. This is controlled through the application's preferences by a check box shown to the left here.
Coding was interesting for this because I throw most settings into the Session Storage scope, which as of now only saves information as strings. I struggled a bit with this thinking I was saving a boolean variable. But I digress.
For documentation, sharing, and my own learning process, I want to show significant code bits here. The first bit occurs early on during the init process. I bind the check box to the following function. The variable sessionStorage.buzzerPermitted takes the value of the box's checked state. An important thing to note is that sessionStorage items, at the moment, store contain strings. The this.checked returns a boolean value. So that boolean (true or false) will be converted to string value.
The second piece follows as such. The function ttNotifications.buzz() is called as the clock restarting either manually or by the count down reaching zero. We first check to see if the notification ability exist and if the user has set that as a preference.
Finally, I have to clean up the lexicon here. As implemented now the buzzer doesn't fire but the preset chime does. This is a work in progress. I will have to update this shortly.
Posted in Technology and TerpTools on January 16, 2011 by Richard.
Although, in my last post favored, I argued for the open web. I still do favor this overall; though, to stretch myself a bit, I've coded a version on the TerpTimer for Android using PhoneGap and released it to the market. Though I do feel like I'm cheating, it does offer some advantages. If I decide to add the full build out of TerpTools to the mix, the code is closer to the hardware.
The problem I'm looking to solve is alerting the interpreters of an impeding session change. The interpreter in the rest/support role should not have to look down at the phone. This is just distracting during a teamed assignment. Additionally, the screen should not stay on the entire time. That eats up the battery. So I'm looking bit better hardware control for the next few versions.
Posted in Interpreting and ASL, Technology and TerpTools and tagged Android, ASL, HTML5, market, Technology and TerpTools, TerpTimer on January 8, 2011 by Richard.
I'm growing so tired of this debate and I'm sure in some unknown span of time, it will no longer matter. But, recently someone asked why I was targeting TerpTools as a web application instead of building a native app. I wish the answer was simple and straight forward, but as most decisions are, it's one-part pragmatism, one-part core belief, and one-part feeling the ever increase squeeze of time in my adult life.
First, I am a web developer. I considered my first language to be Perl. As my career progressed, I added other tools to my belt as various projects and managers deemed them worthy of the task. The mobile market is fragmented and diverging. I'm still amazed at programmers who are able to design simultaneously in Java and Objective-C. Really, I hold these programmers in high respect. Their audiences are potentially huge and they can spend time catering to one segment at a time. However, my audience (free-lance sign language interpreters) are a tiny, wide-spread bunch who use various phones, on different platforms, across multiple carriers. To build something that benefits the community, I want to focus at the task in front of me. So, one code base to serve a small community is what works for me right now.
Second, any good coder should respect the user and the user's device. Programming on the open web does this. If you want to know what I'm doing on your device, look at the source code. If you don't want the application to track your location, instruct your browser accordingly. Browsers are (supposedly) built to limit what code can do on your device. Native apps have more control in the device and the source might be closed. Granted this argument is still open to debate and will change. And frankly, it should be debated.
Posted in Technology and TerpTools on December 8, 2010 by Richard.
I'm moving towards a more customizable interface with this application. Users may now enter their own custom categories into their logger database. Again, the logger has different benefits for different audiences. For the individual interpreter, the Logger data could easily become the beginnings of an automated invoicing system. For agencies, the combined time and geographic data from interpreters in the field might help the agency better plan future resources and account for such information vectors as travel time.
After a bit of research, I found the wonderful function which appends a new option to the original select menu and update the JQueryUI/Mobile widget.
So now, code which handles the drop downs looks like this below. For speed of rendering, I only refresh the select menu once after all of the new items have been appended.
Posted in Technology and TerpTools on November 29, 2010 by Richard.
So I'm actually trying to use this application in my daily life. I am writing this from outside of my office and the gps was not on. Therefore no position was captured. The remedy was to turn on gps and refresh. I will have to add a field showing the current location and an option to manually refresh.
Posted in Technology and TerpTools on November 10, 2010 by Richard.
When displaying the ten most recent entries, if GPS coordinates where captured, they will be displayed as a link. If viewed from a mobile web browser, the link will render maps.google.com. Android devices may intercept the link and prompt the user to use the native Google Maps application. Either way, you have a record of each place you checked in (logged) during the workday.


text:
<script>window.pathPrefix="../../";</script>/* http://meyerweb.com/eric/tools/css/reset/ */
/* v1.0 | 20080212 */
.searcher {
  /* remember to highlight inserts somehow! */
  /* tables still need 'cellspacing="0"' in the markup */ }
  .searcher html, .searcher body, .searcher div, .searcher span, .searcher applet, .searcher object, .searcher iframe,
  .searcher h1, .searcher h2, .searcher h3, .searcher h4, .searcher h5, .searcher h6, .searcher p, .searcher blockquote, .searcher pre,
  .searcher a, .searcher abbr, .searcher acronym, .searcher address, .searcher big, .searcher cite, .searcher code,
  .searcher del, .searcher dfn, .searcher em, .searcher font, .searcher img, .searcher ins, .searcher kbd, .searcher q, .searcher s, .searcher samp,
  .searcher small, .searcher strike, .searcher strong, .searcher sub, .searcher sup, .searcher tt, .searcher var,
  .searcher b, .searcher u, .searcher i, .searcher center,
  .searcher dl, .searcher dt, .searcher dd, .searcher ol, .searcher ul, .searcher li,
  .searcher fieldset, .searcher form, .searcher label, .searcher legend,
  .searcher table, .searcher caption, .searcher tbody, .searcher tfoot, .searcher thead, .searcher tr, .searcher th, .searcher td {
    margin: 0;
    padding: 0;
    border: 0;
    outline: 0;
    font-size: 100%;
    vertical-align: baseline;
    background: transparent; }
  .searcher body {
    line-height: 1; }
  .searcher ol, .searcher ul {
    list-style: none; }
  .searcher blockquote, .searcher q {
    quotes: none; }
  .searcher blockquote:before, .searcher blockquote:after,
  .searcher q:before, .searcher q:after {
    content: '';
    content: none; }
  .searcher ins {
    text-decoration: none; }
  .searcher del {
    text-decoration: line-through; }
  .searcher table {
    border-collapse: collapse;
    border-spacing: 0; }

/* Panel (begin) */
.searcher {
  /* Header with search box (begin) */
  /* Header with search box (end) */
  /* Results (begin) */
  /* Results (end) */
  /* Tree (begin) */
  /**/ }
  .searcher .panel {
    height: 0px;
    position: absolute;
    top: 20px;
    left: 0;
    z-index: 2;
    width: 100%;
    background: #FFF;
    font-family: "Helvetica Neue", "Arial", sans-serif; }
  .searcher h1 {
    font-family: "Helvetica Neue", "Arial", sans-serif;
    text-transform: initial; }
  .searcher .panel_tree .results,
  .searcher .panel_results .tree {
    display: none; }
  .searcher .panel .header {
    position: relative;
    top: 0;
    left: 0;
    width: 100%;
    height: 40px;
    border-bottom: 1px solid #666;
    background: #e8e8e8; }
    .searcher .panel .header .search-con {
      position: relative; }
      .searcher .panel .header .search-con .search-icon {
        position: absolute;
        left: 13px;
        top: 8px;
        color: #b4b4b4;
        font-family: FontAwesome; }
        .searcher .panel .header .search-con .search-icon:before {
          content: "\f002"; }
      .searcher .panel .header .search-con .clean-search {
        position: absolute;
        right: 7px;
        top: 13px;
        cursor: pointer;
        display: none; }
    .searcher .panel .header #search {
      padding: 9px 21px 9px 36px;
      width: 100%;
      display: block;
      height: auto;
      border: 1px solid #E5E5E5;
      border-radius: 0px;
      box-shadow: none;
      font-size: 13px;
      line-height: 1.6; }
  .searcher .panel .header table {
    width: 100%;
    height: 29px; }
  .searcher .panel .header table td {
    vertical-align: middle;
    text-align: middle; }
  .searcher .panel .header label {
    position: absolute;
    margin-left: 3px;
    color: #777;
    font-size: 12px;
    line-height: 29px;
    cursor: text; }
  .searcher .panel .header table input {
    display: inline-block;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    width: 100%;
    height: 22px;
    -webkit-appearance: searchfield; }
  .searcher .panel .result {
    position: absolute;
    top: 40px;
    bottom: 0;
    left: 0;
    width: 100%;
    overflow-y: scroll;
    overflow-x: hidden;
    -overflow-y: hidden;
    background: #EEE url(../images/results_bg.png);
    z-index: 2;
    box-shadow: -3px 5px 13px 0px black;
    overflow-y: scroll;
    max-height: 700px; }
  .searcher .panel .result ul {
    font-size: 0.8em;
    width: 100%;
    background: #EEE url(../images/results_bg.png); }
  .searcher .panel .result ul li {
    height: 50px;
    -height: 50px;
    overflow: hidden;
    padding: 4px 10px 0 10px;
    cursor: pointer; }
  .searcher .panel .result ul li h1 {
    font-size: 13px;
    font-weight: normal;
    color: #333;
    margin-bottom: 2px;
    white-space: nowrap; }
  .searcher .panel .result ul li p {
    font-size: 11px;
    color: #333;
    margin-bottom: 2px;
    white-space: nowrap; }
  .searcher .panel .result ul li h1 i,
  .searcher .panel .result ul li p.snippet {
    color: #777; }
  .searcher .panel .result ul li b {
    color: #000; }
  .searcher .panel .result ul li.current {
    background: #3477a9; }
  .searcher .panel .result ul li.current h1,
  .searcher .panel .result ul li.current p {
    color: #D9D9D9; }
  .searcher .panel .result ul li.current h1 i,
  .searcher .panel .result ul li.current p.snippet {
    color: #ACACAC; }
  .searcher .panel .result ul li.current b {
    color: #FFF; }
  .searcher .panel .result ul li:hover,
  .searcher .panel .result ul li.selected {
    background: #d0d0d0; }
  .searcher .panel .result ul li.current:hover {
    background: #3477a9; }
  .searcher .panel .result ul li .badge {
    margin-right: 0.4em;
    margin-left: -0.2em;
    padding: 0 0.2em;
    color: #000;
    border-radius: 3px; }
  .searcher .panel .result ul li .badge_1 {
    background: #ACDBF4; }
  .searcher .panel .result ul li.current .badge_1 {
    background: #97BFD7; }
  .searcher .panel .result ul li .badge_2 {
    background: #ACF3C3; }
  .searcher .panel .result ul li.current .badge_2 {
    background: #98D7AC; }
  .searcher .panel .result ul li .badge_3 {
    background: #E0F3AC; }
  .searcher .panel .result ul li.current .badge_3 {
    background: #C4D798; }
  .searcher .panel .result ul li .badge_4 {
    background: #D7CA98; }
  .searcher .panel .result ul li.current .badge_4 {
    background: #A6B0AC; }
  .searcher .panel .result ul li .badge_5 {
    background: #F3C8AC; }
  .searcher .panel .result ul li.current .badge_5 {
    background: #D7B198; }
  .searcher .panel .result ul li .badge_6 {
    background: #F3ACC3; }
  .searcher .panel .result ul li.current .badge_6 {
    background: #D798AB; }
  .searcher .panel .tree {
    display: none;
    position: absolute;
    position: absolute;
    top: 40px;
    top: 8px;
    bottom: 0;
    left: 0;
    left: 1px;
    width: 100%;
    background-position: 0 -9px;
    cursor: default;
    overflow-y: scroll;
    overflow-x: hidden;
    -overflow-y: hidden;
    z-index: 30; }
  .searcher .panel .tree li {
    cursor: pointer;
    overflow: hidden; }
  .searcher .panel .tree li .content {
    padding-left: 18px;
    padding-top: 5px;
    height: 18px;
    overflow: hidden;
    position: relative; }
  .searcher .panel .tree li .icon {
    width: 10px;
    height: 9px;
    background: url(../i/arrows.png); }
  .searcher .panel .tree li.closed .icon {
    background-position: 0 0; }
  .searcher .panel .tree ul li h1 {
    margin-bottom: 2px;
    color: #000;
    white-space: nowrap;
    font-weight: normal;
    font-size: 13px; }
  .searcher .panel .tree ul li p {
    margin-bottom: 2px;
    color: #666;
    white-space: nowrap;
    font-size: 11px; }
  .searcher .panel .tree ul li h1 i {
    color: #999;
    font-style: normal; }
  .searcher .panel .tree ul li.current h1 i {
    color: #CCC; }
  .searcher .panel .tree ul li.empty {
    cursor: text; }
  .searcher .panel .tree ul li.empty h1,
  .searcher .panel .tree ul li.empty p {
    color: #666;
    font-style: italic; }
  .searcher .panel .tree ul li.current {
    background: #3477a9; }
  .searcher .panel .tree ul li.current .icon {
    background-position: -10px -9px; }
  .searcher .panel .tree ul li.current.closed .icon {
    background-position: -10px 0; }
  .searcher .panel .tree ul li.current h1 {
    color: #FFF; }
  .searcher .panel .tree ul li.current p {
    color: #CCC; }
  .searcher .panel .tree ul li.current.empty h1,
  .searcher .panel .tree ul li.current.empty p {
    color: #999; }
  .searcher .panel .tree ul li:hover {
    background: #d0d0d0; }
  .searcher .panel .tree ul li.current:hover {
    background: #3477a9; }
  .searcher .panel .tree .stopper {
    display: none; }

/* Tree (end) */
/**/
/* Panel (end) */


Your organization's combination of IT systems is unique. You have a number of systems and software technologies, each with their own metrics. But when the business or IT leaders want to know what's happening, operations teams must navigate from interface to interface to assemble a holistic view, like piecing together a 1000-piece jigsaw puzzle.
With systems becoming more complex and IT teams pressed for time, you need a customized interface that can meet your organizations unique needs. You need to automate how your teams gather metrics. And you need to integrate with the workflows and processes that your organization uses to meet business objectives.
The Riverbed SteelScript Application Framework provides the foundation for custom IT applications. Designed to query data from disparate sources, SteelScript Application Framework is a customizable hub of IT metrics.
Riverbed's application performance platform has open APIs that surface critical application and network performance data into the SteelScript Application Framework. There, the data is processed with other data from your systems to build a customized view for IT operations teams.
Learn more about SteelScript Application Framework and Riverbed's open APIs.
Time and labor are the most precious IT resources. If you could streamline how operations teams gather the metrics they need, you save precious hours for more important work. Riverbed Open APIs give you the flexibility to pull metrics from Riverbed in the ways you need.
Building a custom application has typically been a daunting task. But with the SteelScript Application Framework, much of the core code is already done. From this foundation, you can focus what data you have to use and what processes you have to automate.
Read the SteelScript Data Sheet to learn more.