Macau WTCR: Rob Huff and Yvan Muller top dramatic qualifying
by Jack CozensRob Huff claimed a sensational World Touring Car Cup pole position in a dramatic second Macau Guia Race qualifying as the TCR lap record was broken twice in two sessions.
Yvan Muller had earlier taken pole for Saturday's opening race, in which championship leader Esteban Guerrieri will start at the back - though he later secured pole for race two's partially-reversed grid.
Watch all three WTCR races - and the rest of the Macau Grand Prix, GT World Cup and Motorcycle race action - live on Autosport this weekend
Sebastien Loeb Racing driver Huff was limited to seventh in first qualifying by a damper issue but was on song in the second session, topping all three segments as he beat compatriot Andy Priaulx to pole.
Huff elected to run first in the Q3 shootout session and, while his Volkswagen Golf GTI lost ground to every other runner in sector one, he was fastest of all in the final two sectors as he romped to his first pole position of the WTCR season.
His 2m28.538s lap - which he bettered in the second part of qualifying - had been close to eight tenths of a second faster than the next best until Priaulx's run, as the Lynk & Co driver recorded his best qualifying performance since returning to World Touring Cars.
The three-time world champion was more than half a second up on Huff's benchmark at the end of the second sector, but could not match Huff in the second half of the lap and ended up 0.206s down in second.
WRT driver Jean-Karl Vernay was third in his Audi RS3 LMS ahead of the lead BRC Racing Hyundai of Nicky Catsburg, while Huff's team-mate Johan Kristoffersson ended up fifth.
Kristoffersson was the only Macau rookie to make the shootout but wrecked his lap by clattering the barrier at Moorish, and ended up close to three seconds off the pace in third.
Race one polesitter Muller was bumped from a place in the shootout by Kristoffersson after failing to improve on his final Q2 run.
Four-time world champion Muller will therefore start Sunday's final race from sixth, ahead of the Team Mulsanne Alfa Romeo Giulietta Veloce of Kevin Ceccon, who also failed to improve on his final run, and fellow Lynk & Co drivers Thed Bjork and Yann Ehrlacher.
After finishing 13th in the first qualifying session, only to receive a back of the grid penalty for having his engine changed, points leader Guerrieri fared far better in the afternoon session and qualified 10th.
Guerrieri's Munnich Motorsport Honda Civic did not have the pace to challenge for a place in the shootout, but he crucially beat the sole time set by Hyundai driver Gabriele Tarquini to clinch pole for the reversed-grid race.
The Argentinian scraped into Q2 by the skin of his teeth, in part thanks to an incident involving his nearest championship rival Norbert Michelisz - who collected the stranded WRT Audi of Gordon Shedden near the end of Q1.
Shedden ran nose-first into the Moorish barrier and, while Tiago Monteiro and Guerrieri were able to sneak past the RS3 LMS, Michelisz was unsighted and collected the rear of Shedden's car, causing significant damage to the front-left corner of his Hyundai i30 N.
That brought the session to a premature end, and precluded Michelisz - who had been fourth in the Q1 order - from contesting the second session, meaning he will start both Sunday races from 11th.
While he was denied pole in Friday morning's opening qualifying session, Michelisz was able to reduce Guerrieri's points lead by qualifying second for the opening race.
In that session Muller recorded personal-best times in the second, third and fourth sectors to set a 2m28.661s, which was also quicker than Huff's previous qualifying lap record of 2m29.040s from last year's opening Guia Race qualifying session, to deny Michelisz by 0.068s.
Michelisz's time did prevent Cyan from recording a front-row lockout, as Priaulx's late effort fell 0.077s short of the Hungarian's.
Two-time Guia Race winner Priaulx will share the second row of the grid for the opening race of the weekend with Ceccon, who was a further 0.040s back but could have achieved pole had he strung his best sectors together.
Race one starting grid
| Pos | Driver | Team | Car | Time | Gap |
|---|---|---|---|---|---|
| 1 | Yvan Muller | Cyan Racing | Lynk & Co | 2m28.661s | - |
| 2 | Norbert Michelisz | BRC Squadra Corse | Hyundai | 2m28.729s | 0.068s |
| 3 | Andy Priaulx | Cyan Performance | Lynk & Co | 2m28.806s | 0.145s |
| 4 | Kevin Ceccon | Team Mulsanne | Alfa Romeo | 2m28.846s | 0.185s |
| 5 | Yann Ehrlacher | Cyan Performance | Lynk & Co | 2m28.942s | 0.281s |
| 6 | Thed Bjork | Cyan Racing | Lynk & Co | 2m29.060s | 0.399s |
| 7 | Rob Huff | SLR VW Motorsport | Volkswagen | 2m29.451s | 0.790s |
| 8 | Gabriele Tarquini | BRC Squadra Corse | Hyundai | 2m29.470s | 0.809s |
| 9 | Benjamin Leuchter | SLR Volkswagen | Volkswagen | 2m29.660s | 0.999s |
| 10 | Mikel Azcona | PWR Racing | Cupra | 2m29.683s | 1.022s |
| 11 | Frederic Vervisch | Comtoyou Audi | Audi | 2m29.709s | 1.048s |
| 12 | Nicky Catsburg | BRC Racing Team | Hyundai | 2m29.770s | 1.109s |
| 13 | Esteban Guerrieri | Munnich Motorsport | Honda | 2m29.833s | 1.172s |
| 14 | Robert Dahlgren | PWR Racing | Cupra | 2m29.891s | 1.230s |
| 15 | Tiago Monteiro | KCMG | Honda | 2m29.919s | 1.258s |
| 16 | Johan Kristoffersson | SLR Volkswagen | Volkswagen | 2m30.039s | 1.378s |
| 17 | Jean-Karl Vernay | WRT | Audi | 2m30.200s | 1.539s |
| 18 | Nestor Girolami | Munnich Motorsport | Honda | 2m30.353s | 1.692s |
| 19 | Ma Qing Hua | Team Mulsanne | Alfa Romeo | 2m30.445s | 1.784s |
| 20 | Aurelien Panis | Comtoyou Cupra | Cupra | 2m30.462s | 1.801s |
| 21 | Mehdi Bennani | SLR VW Motorsport | Volkswagen | 2m30.788s | 2.127s |
| 22 | Attila Tassi | KCMG | Honda | 2m30.835s | 2.174s |
| 23 | Niels Langeveld | Comtoyou Audi | Audi | 2m30.867s | 2.206s |
| 24 | Gordon Shedden | WRT | Audi | 2m30.888s | 2.227s |
| 25 | Luca Engstler | BRC Racing Team | Hyundai | 2m31.533s | 2.872s |
| 26 | Tom Coronel | Comtoyou Cupra | Cupra | 2m31.608s | 2.947s |
| 27 | Jim Ka To | KC Motorgroup | Honda | 2m33.654s | 4.993s |
| 28 | Billy Lo | Tian Shi Zuver Team | Audi | 2m34.791s | 6.130s |
| - | James Tang | Team TRC | Honda | 2m36.795s | 8.134s |
| - | Kwai Wah Wong | Son Veng Racing Team | Volkswagen | 2m39.999s | 11.338s |
| - | Terence Tse | Team TRC | Honda | 2m43.146s | 14.485s |
| - | Arthur Law | Team TRC | Honda | - | - |
Race two grid
| Pos | Driver | Team | Car |
|---|---|---|---|
| 1 | Esteban Guerrieri | Munnich Motorsport | Honda |
| 2 | Yann Ehrlacher | Cyan Performance | Lynk & Co |
| 3 | Thed Bjork | Cyan Racing | Lynk & Co |
| 4 | Kevin Ceccon | Team Mulsanne | Alfa Romeo |
| 5 | Yvan Muller | Cyan Racing | Lynk & Co |
| 6 | Johan Kristoffersson | SLR Volkswagen | Volkswagen |
| 7 | Nicky Catsburg | BRC Racing Team | Hyundai |
| 8 | Jean-Karl Vernay | WRT | Audi |
| 9 | Andy Priaulx | Cyan Performance | Lynk & Co |
| 10 | Rob Huff | SLR VW Motorsport | Volkswagen |
| 11 | Gabriele Tarquini | BRC Squadra Corse | Hyundai |
| 12 | Norbert Michelisz | BRC Squadra Corse | Hyundai |
| 13 | Niels Langeveld | Comtoyou Audi | Audi |
| 14 | Tom Coronel | Comtoyou Cupra | Cupra |
| 15 | Luca Engstler | BRC Racing Team | Hyundai |
| 16 | Gordon Shedden | WRT | Audi |
| 17 | Attila Tassi | KCMG | Honda |
| 18 | Nestor Girolami | Munnich Motorsport | Honda |
| 19 | Frederic Vervisch | Comtoyou Audi | Audi |
| 20 | Mehdi Bennani | SLR VW Motorsport | Volkswagen |
| 21 | Robert Dahlgren | PWR Racing | Cupra |
| 22 | Aurelien Panis | Comtoyou Cupra | Cupra |
| 23 | Mikel Azcona | PWR Racing | Cupra |
| 24 | Ma Qing Hua | Team Mulsanne | Alfa Romeo |
| 25 | Benjamin Leuchter | SLR Volkswagen | Volkswagen |
| 26 | Tiago Monteiro | KCMG | Honda |
| 27 | Billy Lo | Tian Shi Zuver Team | Audi |
| 28 | Jim Ka To | KC Motorgroup | Honda |
| 29 | James Tang | Team TRC | Honda |
| 30 | Kwai Wah Wong | Son Veng Racing Team | Volkswagen |
| 31 | Terence Tse | Team TRC | Honda |
| 32 | Arthur Law | Team TRC | Honda |
Race three grid to follow


{%extends 'registration/base.html'%} {%block title%} {% if validlink %} Change password for{{ form.user.username }} {% else %} Reset your password {% endif %} {%endblock%} {%block head%} {%endblock%} {%block content%}
Your password can't be too similar to your other personal information.Your password must contain at least 8 characters.Your password can't be a commonly used password.Your password can't be entirely numeric.


As you pour over the numbers, both HPR and just simple stat breakdowns, two names keep emerging: Kelsey Robinson and Krista Vansant. Both players embody the concept of a six-rotation player and their numbers show it, so much so that the American Vollleyball Coaches Association used its Twitter profile for an impromptu vote between Robinson and Vansant for the player of the year award. While Robinson won that by a count of 427 retweets to 108, you'll see from the more in-depth breakdown below that it's not just Twitter that makes the case for Robinson to take home the AVCA Player of the Year at today's banquet...
| Opponent | HPR | Result |
| Louisiana-Monroe | 4.48 | W, 3-0 |
| Auburn | 3.48 | L, 3-1 |
| St. Louis | 2.48 | W, 3-0 |
| Villanova | 1.90 | W, 3-1 |
| Georgia | 2.68 | W, 3-0 |
| St. Mary's | 2.53 | W, 3-1 |
| Dayton | 3.68 | W, 3-0 |
| No. 17 Iowa State | 4.68 | W, 3-0 |
| No. 1 Texas | 4.03 | W, 3-2 |
| Northwestern | 5.42 | W, 3-1 |
| Illinois | 4.61 | W, 3-0 |
| No. 8 Minnesota | 6.07 | W, 3-0 |
| No. 23 Wisconsin | 5.24 | W, 3-2 |
| No. 17 Michigan | 4.81 | W, 3-2 |
| No. 7 Michigan State | 4.40 | L, 3-1 |
| Indiana | 3.01 | W, 3-0 |
| No. 25 Purdue | 3.23 | L, 3-1 |
| Iowa | 3.78 | W, 3-0 |
| No. 24 Ohio State | 4.55 | W, 3-1 |
| Illinois | 6.01 | W, 3-0 |
| Northwestern | 4.09 | W, 3-2 |
| No. 16 Wisconsin | 5.81 | W, 3-1 |
| No. 9 Minnesota | 3.21 | W, 3-2 |
| No. 16 Michigan State | 5.14 | W, 3-0 |
| No. 19 Michigan | 6.98 | W, 3-1 |
| No. 25 Purdue | 1.62 | L, 3-0 |
| Indiana | 5.86 | W, 3-0 |
| Iowa | 5.47 | W, 3-0 |
| No. 2 Penn State | 2.68 | L, 3-1 |
| Season | 4.20 |
Without postseason conference tournaments in college volleyball, the imiportance on the conference portion of the regular season schedule cannot be understated. When looking at the two seasons side-by-side, Vansant's 4.04 HPR in Pac 12 play is on-par with her season total, but it is Robinson who upped her game during conference play, finishing with a 4.60 HPR during Big Ten action. With two Big Ten teams set to play for the national title (and seven crashing this year's Sweet Sixteen), Robinson's effort in conference play is even more impressive, showing just how crucial the senior was in big moments for a Husker team that finished second in the league.
Taking a quick look at each player's number against ranked opponents, it is actually Vansant's 4.60 HPR against ranked teams that exceed's Robinson's mark of 4.47 in ranked matches, but the trick here is that Robinson has nearly twice as many matchups against ranked opponents as Vansant to her name. In fact, Robinson posted nine of her top 13 single-game efforts of 2013 against ranked opponents, while Vansant has only eight total games against ranked opposition. So yes, Vansant put up an HPR of 4.60 in her eight mathches against nationally ranked foes, but it is Robinson who had eight games of 4.61 or higher in ranked showdowns during the regular season.
Building off of the quantity of quality performances by Robinson, there's also a distinct edge in Robo's favor when you look at the quality of opponents in some of her best matches this season. Of Robinson's top three performances by HPR, her top two efforts came in sweeps of No. 19 Michigan (No. 33 RPI) and No. 8 Minnesota (No. 11 RPI), while her third best match of the season was a 6.01 mark against Illinois (No. 20 RPI). For Vansant, her best night out came against Coppin State (No. 250 RPI), while her second-best effort also came in non-conference play against Portland State (No. 83 RPI). Vansant's only top three performance against a conference opponent came against Washington State, however, if the Cougars were in the Big Ten they'd be the 11th best team in the league based on RPI.
*Each player's top three single-game efforts are highlighted in green on their respective chart
| Opponent | HPR | Result |
| Boise State | 3.67 | W, 3-0 |
| Portland State | 6.85 | W, 3-0 |
| Gonzaga | 3.25 | W, 3-2 |
| Seattle | 1.17 | W, 3-0 |
| No. 14 Illinois | 4.99 | W, 3-1 |
| Loyola (Chicago) | 5.39 | W, 3-0 |
| Coppin State | 7.39 | W, 3-0 |
| Cal St Northridge | 3.72 | W, 3-1 |
| Washington State | 4.38 | W, 3-0 |
| Oregon | 4.21 | W, 3-2 |
| Colorado | 1.60 | L, 3-1 |
| Utah | 2.17 | W, 3-0 |
| Arizona | 4.26 | W, 3-1 |
| No. 16 Arizona State | 3.04 | W, 3-0 |
| California | 5.03 | W, 3-0 |
| No. 7 Stanford | 4.64 | L, 3-2 |
| UCLA | 3.92 | W, 3-1 |
| No. 4 USC | 4.13 | L, 3-1 |
| Utah | 3.74 | W, 3-1 |
| Colorado | 3.36 | W, 3-0 |
| Arizona State | 3.20 | W, 3-1 |
| Arizona | 1.48 | W, 3-0 |
| UCLA | 4.11 | W, 3-0 |
| No. 4 USC | 6.43 | W, 3-1 |
| No. 5 Stanford | 4.00 | L, 3-0 |
| No. 23 California | 5.37 | W, 3-2 |
| Oregon State | 4.42 | W, 3-1 |
| Washington State | 7.29 | W, 3-0 |
| Season | 4.16 |
Without postseason conference tournaments in college volleyball, the imiportance on the conference portion of the regular season schedule cannot be understated. When looking at the two seasons side-by-side, Vansant's 4.04 HPR in Pac 12 play is on-par with her season total, but it is Robinson who upped her game during conference play, finishing with a 4.60 HPR during Big Ten action. With two Big Ten teams set to play for the national title (and seven crashing this year's Sweet Sixteen), Robinson's effort in conference play is even more impressive, showing just how crucial the senior was in big moments for a Husker team that finished second in the league.
Taking a quick look at each player's number against ranked opponents, it is actually Vansant's 4.60 HPR against ranked teams that exceed's Robinson's mark of 4.47 in ranked matches, but the trick here is that Robinson has nearly twice as many matchups against ranked opponents as Vansant to her name. In fact, Robinson posted nine of her top 13 single-game efforts of 2013 against ranked opponents, while Vansant has only eight total games against ranked opposition. So yes, Vansant put up an HPR of 4.60 in her eight mathches against nationally ranked foes, but it is Robinson who had eight games of 4.61 or higher in ranked showdowns during the regular season.
Building off of the quantity of quality performances by Robinson, there's also a distinct edge in Robo's favor when you look at the quality of opponents in some of her best matches this season. Of Robinson's top three performances by HPR, her top two efforts came in sweeps of No. 19 Michigan (No. 33 RPI) and No. 8 Minnesota (No. 11 RPI), while her third best match of the season was a 6.01 mark against Illinois (No. 20 RPI). For Vansant, her best night out came against Coppin State (No. 250 RPI), while her second-best effort also came in non-conference play against Portland State (No. 83 RPI). Vansant's only top three performance against a conference opponent came against Washington State, however, if the Cougars were in the Big Ten they'd be the 11th best team in the league based on RPI.
*Each player's top three single-game efforts are highlighted in green on their respective chart
| Opponent | HPR | Result |
| Louisiana-Monroe | 4.48 | W, 3-0 |
| Auburn | 3.48 | L, 3-1 |
| St. Louis | 2.48 | W, 3-0 |
| Villanova | 1.90 | W, 3-1 |
| Georgia | 2.68 | W, 3-0 |
| St. Mary's | 2.53 | W, 3-1 |
| Dayton | 3.68 | W, 3-0 |
| No. 17 Iowa State | 4.68 | W, 3-0 |
| No. 1 Texas | 4.03 | W, 3-2 |
| Northwestern | 5.42 | W, 3-1 |
| Illinois | 4.61 | W, 3-0 |
| No. 8 Minnesota | 6.07 | W, 3-0 |
| No. 23 Wisconsin | 5.24 | W, 3-2 |
| No. 17 Michigan | 4.81 | W, 3-2 |
| No. 7 Michigan State | 4.40 | L, 3-1 |
| Indiana | 3.01 | W, 3-0 |
| No. 25 Purdue | 3.23 | L, 3-1 |
| Iowa | 3.78 | W, 3-0 |
| No. 24 Ohio State | 4.55 | W, 3-1 |
| Illinois | 6.01 | W, 3-0 |
| Northwestern | 4.09 | W, 3-2 |
| No. 16 Wisconsin | 5.81 | W, 3-1 |
| No. 9 Minnesota | 3.21 | W, 3-2 |
| No. 16 Michigan State | 5.14 | W, 3-0 |
| No. 19 Michigan | 6.98 | W, 3-1 |
| No. 25 Purdue | 1.62 | L, 3-0 |
| Indiana | 5.86 | W, 3-0 |
| Iowa | 5.47 | W, 3-0 |
| No. 2 Penn State | 2.68 | L, 3-1 |
| Season | 4.20 |
| Opponent | HPR | Result |
| Boise State | 3.67 | W, 3-0 |
| Portland State | 6.85 | W, 3-0 |
| Gonzaga | 3.25 | W, 3-2 |
| Seattle | 1.17 | W, 3-0 |
| No. 14 Illinois | 4.99 | W, 3-1 |
| Loyola (Chicago) | 5.39 | W, 3-0 |
| Coppin State | 7.39 | W, 3-0 |
| Cal St Northridge | 3.72 | W, 3-1 |
| Washington State | 4.38 | W, 3-0 |
| Oregon | 4.21 | W, 3-2 |
| Colorado | 1.60 | L, 3-1 |
| Utah | 2.17 | W, 3-0 |
| Arizona | 4.26 | W, 3-1 |
| No. 16 Arizona State | 3.04 | W, 3-0 |
| California | 5.03 | W, 3-0 |
| No. 7 Stanford | 4.64 | L, 3-2 |
| UCLA | 3.92 | W, 3-1 |
| No. 4 USC | 4.13 | L, 3-1 |
| Utah | 3.74 | W, 3-1 |
| Colorado | 3.36 | W, 3-0 |
| Arizona State | 3.20 | W, 3-1 |
| Arizona | 1.48 | W, 3-0 |
| UCLA | 4.11 | W, 3-0 |
| No. 4 USC | 6.43 | W, 3-1 |
| No. 5 Stanford | 4.00 | L, 3-0 |
| No. 23 California | 5.37 | W, 3-2 |
| Oregon State | 4.42 | W, 3-1 |
| Washington State | 7.29 | W, 3-0 |
| Season | 4.16 |


|
This demo shows how the real-time positions of objects in a multiplayer 3D world can be synchronized over WebSockets and HTTP in a very optimized way. Please read the explanatory article for a background and the full explanation of this demo. |
Game over for inactivity. Please refresh the page to resume.


View our top 20 movies picked for you.
Back to rating page
Back to landing page
{{movies[i].genres}}
More Info on IMDB


Stateful.co is a collection of web primitives, accessible through web interface and RESTful API.
You create an atomic counter with a unique name and set its initial integer value. Then, you can increment or decrement it. Our server guarantees atomicity of each operation. This means that no matter how many parallel requests you send, their results won't be duplicated.
This mechanism may be very useful, when you need to simulate an auto-increment value in a NoSQL database, for example Amazon DynamoDB.
Create a lock, run your sensitive operations, and remove the lock. We guarantee that lock creation procedure is atomic. This means that only one process will get a lock, others will be rejected.
This mechanism may be useful to synchronize data modification processes running across multiple server nodes. Inside one node you can synchronize through platform-native locking tools, but in multi-node environment cloud locking is the only option.
In every HTTP request you should set two authentication headers
X-Sttc-URN
and X-Sttc-Token
to the values you see on top of this page.
For example, this is how your HTTP request may look like:
GET /c/test/inc?value=0 HTTP/1.1 Host: www.stateful.co X-Sttc-URN: urn:github:526301 X-Sttc-Token: B28F-38E4-B305-C3A3
The service is absolutely free of charge, thanks to our sponsor teamed.io.
It is an open source project, don't hesitate to tell us what you would like to improve or fix. Just submit an issue to Github.


Team guide, VoiceOver iOS testing steps
VoiceOver screen reader for iOS comes already installed on iPhones. Test with the latest version available.
How to turn on VoiceOver
You will find VoiceOver under the ‘Accessibility’ menu in ‘Settings’. Here you can toggle VoiceOver on. Though you are likely to find it more convenient to turn VoiceOver on via an accessibility shortcut. This shortcut enables you to turn VoiceOver on from any screen or web page without going to the ‘Settings’ menu.
If you are just starting out, navigating using VoiceOver from within the ‘Settings’ menu to the component you are testing, could be a daunting process. Make sure VoiceOver is selected under ‘Accessibility Shortcut’ within the ‘Accessibility’ menu. On newer iPhones, you will now be able to triple click the side button to toggle VoiceOver on or off at any time. With older style iPhones the shortcut is a triple click of the ‘home’ button.
If at any time you would like to stop VoiceOver while announcing, do a two-finger tap.
Back to page contentsIt's speaking too fast
If you are new to VoiceOver, you may find the rate in which announcements are made too quick to understand. To find a speaking rate that you are comfortable with:
- Select ‘Speaking rate’ in the Rotor menu by doing a two-finger rotation gesture (similar to how you might turn a dial with your thumb and finger) until you hear ‘Speaking rate’ announced
- The speaking rate can now be adjusted by swiping up or down
- Swipe down to decrease the speaking rate
- Swipe up to increase the speaking rate
Testing in a foreign language
When testing with assistive technology it's important to test in a language that is supported by the assistive technology, and with a language that you can understand. For further information see the testing in a foreign language guide.
Before testing content in a foreign language, check what languages are supported by VoiceOver.
Back to page contentsStep by step
We’ll take you step by step through how to test a component or feature. Following the same steps every time, ensures that everyone is testing using the same methods and using the most common techniques.
There are many VoiceOver gestures that you can use, though only a few are needed to perform the testing steps, all of which are explained below. The steps will enable anyone, in any role, to use VoiceOver for the first time. To become more familiar and proficient using AT, resist the temptation to cheat, always try to navigate like a user would.
As you go, make a note of any bugs you find.
Step 1 - Open Safari
Open Safari, this is the most used browser by VoiceOver users.
Note: VoiceOver is an Apple product built primarily for other Apple products such as Safari, while VoiceOver will work with other browsers you may encounter bugs which aren’t present in Safari; the default VoiceOver browser.
Step 2 - Go to the testing url
Navigate to or type in the testing url.
Step 3 - Turn VoiceOver on
Triple click the side button to turn VoiceOver on via the ‘Accessibility shortcut’.
Step 4 - Get in position to start testing
Get in position to start testing by navigating as follows, depending on the context on which you are testing your component, either within a page or in isolation. This will ensure that when you start testing you don’t miss out any elements within the component that you can’t see, such as:
- Semantics for any landmark or sectioning elements
- Visually hidden off screen elements
Testing a component within a page
Navigate to the last element in the component before the one you're going to test.
- Swipe right selects the next item, swipe right anywhere on the screen, until you reach the last element in the component before the component you're going to test. Ensure it’s a quick swipe, taking no more than a split second, otherwise what you have physically touched on the screen could be navigated to and read out instead.
- You may find it quicker, if the component you are testing starts with a heading, to navigate to that heading via the ‘Rotor’ menu, then swipe left to select the previous item, until you hear the last element in the component before the one you're going to test being announced.
Testing a component in isolation
If the component is in isolation, ensure you are right at the top of the page.
- To select the first item on the screen do a four-finger tap near the top of the screen
- Swipe right selects the next item, swipe right though the address bar to the web page
Step 5 - Navigate through all items
You are now ready to start testing.
- Swipe right selects the next item, you should enter the component.
- Listen to what is announced and check that the semantics and announced content match the screen reader UX. If the documented screen reader UX is missing, ask UX for this before continuing.
- If you need to hear what was announced again, swipe left to the previous item then swipe right again.
- Swipe right through all items in the component, listening to what’s announced, until you reach the first item in the component after the component you are testing, or the bottom of the page if testing in isolation.
Navigating to the first item in the component after the one you're testing, will ensure that you don’t miss out any elements that you can’t see, such as a visually hidden off screen element.
Navigating through all items bug examples
- You swipe right and nothing is announced
- What's announced doesn’t match the screen reader UX
- Semantics not being announced for any landmark or sectioning elements
- Something is announced twice
Step 6 - Navigate by headings
- Select ‘Headings’ in the Rotor menu by doing a two-finger rotation gesture (similar to how you might turn a dial with your thumb and finger) until you hear ‘Headings’ announced.
- Headings are now selected as the method of navigation when swiping up or down.
- Get in position to start testing, swipe up to navigate through headings until you reach the last heading in the component before the one you're testing, or if testing in isolation, to select the first item on the screen do a four-finger tap near the top of the screen.
- Swipe down to read the first heading in the component you are testing. Check that the semantics and announced content match the screen reader UX.
- If you need to hear what was announced again, swipe up to the previous heading then swipe down again.
- Swipe down to go through all headings in the component, listening to what’s announced, until you reach the first heading in the component after the component you are testing, or the bottom of the page if testing in isolation.
Navigating by headings bug examples
- You swipe down and nothing is announced
- What's announced doesn’t match the screen reader UX
- A heading was announced and none where defined in the screen reader UX
- A heading is announced twice
Step 7 - Navigate by links
- Select ‘Links’ in the Rotor menu by doing a two-finger rotation gesture (similar to how you might turn a dial with your thumb and finger) until you hear ‘Links’ announced.
- Links are now selected as the method of navigation when swiping up or down.
- Get in position to start testing, swipe up to navigate through links until you reach the last link in the component before the one you're testing, or if testing in isolation, to select the first item on the screen do a four-finger tap near the top of the screen.
- Swipe down to read the first link in the component you are testing. Check that the semantics and announced content match the screen reader UX.
- If you need to hear what was announced again, swipe up to the previous link then swipe down again.
- Swipe down to go through all links in the component, listening to what’s announced, until you reach the first link in the component after the component you are testing, or the bottom of the page if testing in isolation.
To activate a link, once it has focus, double tap anywhere on the screen.
Navigating by links bug examples
- You swipe down and nothing is announced
- What's announced doesn’t match the screen reader UX
- A link was announced and none where defined in the screen reader UX
- A link is announced twice
Step 8 - Navigate by landmarks
- Select ‘Landmarks’ in the Rotor menu by doing a two-finger rotation gesture (similar to how you might turn a dial with your thumb and finger) until you hear ‘Landmarks’ announced.
- Landmarks are now selected as the method of navigation when swiping up or down.
- Get in position to start testing, swipe up to navigate through landmarks until you reach a landmark in a component before the one you're testing, or if testing in isolation, to select the first item on the screen do a four-finger tap near the top of the screen.
- Swipe down to read the first landmark in the component you are testing. Check that the semantics and announced content match the screen reader UX.
- If you need to hear what was announced again, swipe up to the previous landmark then swipe down again.
- Swipe down to go through all landmarks in the component, listening to what’s announced, until you reach the first landmark after the component you are testing, or the bottom of the page if testing in isolation.
Landmarks aren't in the Rotor menu
- Triple click the side button to toggle VoiceOver off or with older style iPhones triple click the ‘home’ button
- Go to the ‘Accessibility’ menu in ‘Settings’
- Within the 'VoiceOver' menu to go 'Rotor'
- Check 'Landmarks'
- Navigate back to your testing url
- To resume testing, triple click the side button to toggle VoiceOver on or with older style iPhones triple click the ‘home’ button
Navigating by landmarks bug examples
- You swipe down and nothing is announced
- What's announced doesn’t match the screen reader UX
- A landmark was announced and none where defined in the screen reader UX
- A landmark was announced without a label
Step 9 - Accessibility acceptance criteria
Accessibility acceptance criteria can be used for additional manual testing steps specifc to your component and documented screen reader UX, specific VoiceOver gestures maybe needed.
- Look at the accessibility acceptance criteria. If the accessibility acceptance criteria is missing, ask your team's business analyst for the criteria before continuing.
- Check that any criteria that is specific to using a screen reader is met with VoiceOver iOS.
Step 10 - Components with a table
- Select ‘Tables’ in the Rotor menu by doing a two-finger rotation gesture (similar to how you might turn a dial with your thumb and finger) until you hear ‘Tables’ announced.
- Tables are now selected as the method of navigation when swiping up or down.
- Get in position to start testing, swipe up to navigate through tables until you reach a table in a component before the one you're testing, or if testing in isolation, to select the first item on the screen do a four-finger tap near the top of the screen.
- Swipe down to read the first table in the component you are testing. Check that the semantics and announced content match the screen reader UX.
- If you need to hear what was announced again, swipe up to the previous table then swipe down again.
- Swipe down to go through all tables in the component, listening to what’s announced, until you reach the first table after the component you are testing, or the bottom of the page if testing in isolation.
Tables aren't in the Rotor menu
- Triple click the side button to toggle VoiceOver off or with older style iPhones triple click the ‘home’ button
- Go to the ‘Accessibility’ menu in ‘Settings’
- Within the 'VoiceOver' menu to go 'Rotor'
- Check 'Tables'
- Navigate back to your testing url
- To resume testing, triple click the side button to toggle VoiceOver on or with older style iPhones triple click the ‘home’ button
Navigating by tables bug examples
- You swipe down and nothing is announced
- What's announced doesn’t match the screen reader UX
- A table was announced and none where defined in the screen reader UX
- A table was announced without a caption
Step 11 - Document any bugs
Document any accessibility bugs found, include as much information as you can, including information on how to replicate the issue and the bug priority level.
Note, this guide takes one approach, there are other ways you could do this. Back to top


CSearch is a search engine for tech projects that involve programming. It provides a ranked difficulty of the project, description, procedure for executing, and helpful links to learn more. These projects come directly from University labs and projects, as well as, online projects to improve your skills.
All details provided for each product are there to help you determine the right project and learn more about future projects.
If you think a search is missing a cool project or you want to share your work, please submit a new resources at the New Submissions page.


TIPS TO ACHIEVE YOUR GOAL
1. Write down the goals.
2. Be very positive about your goals.
3. Visualise for at least five minutes that you have already achieved your goal.
4. Read the goals out loudly everyday.
5. Do not discuss your goals in public.
6. Feel happy about your goals.


⛅ CombineCloudKit
Swift Combine extensions for reactive CloudKit record processing. Designed for simplicity.
CombineCloudKit exposes CloudKit operations as Combine publishers. Publishers can be used to process values over time, using Combine’s declarative API.
📦 Adding CombineCloudKit to Your Project
CombineCloudKit supports Swift Package Manager, CocoaPods, and Carthage. You can use whichever you prefer, but Swift Package Manager is most likely to be supported in the future.
Swift Package Manager
Add a dependency on CombineCloudKit to your
Package.swift
using
Xcode or the
Swift Package Manager. Optionally, specify a
version requirement.
dependencies: [
.package(url: "https://github.com/chris-araman/CombineCloudKit.git", from: "1.0.0")
]
Then resolve the dependency:
swift package resolve
To update to the latest CombineCloudKit version compatible with your version requirement:
swift package update CombineCloudKit
CocoaPods
Add a dependency on
CombineCloudKit to your Podfile
. Optionally, specify a
version requirement.
pod 'CombineCloudKit', '~>1.0'
Then install the dependency:
pod install
To update to the latest CombineCloudKit version compatible with your version requirement:
pod update CombineCloudKit
Carthage
Add a dependency on CombineCloudKit to your
Cartfile
.
Optionally, specify a
version requirement.
github "chris-araman/CombineCloudKit" ~> 1.0
Because Carthage assumes dependencies are provided as shared frameworks, but Swift Package Manager builds only libraries
or executables, we have to generate an .xcodeproj
for Carthage to use.
⚠ The
generate-xcodeproj
command has been deprecated. This solution may stop working in a future release of the Swift Package Manager.
carthage bootstrap --no-build
pushd Carthage/Checkouts/CombineCloudKit && swift package generate-xcodeproj && popd
carthage bootstrap --use-xcframeworks
To update to the latest CombineCloudKit version compatible with your version requirement:
carthage update CombineCloudKit --use-xcframeworks
🌤 Using CombineCloudKit in Your Project
Combine allows you to chain value processing Publishers
for one or more Subscribers. Here, we perform a query on
our CKDatabase
, then process the results
asynchronously. As each CKRecord
is read from the
database, it is passed to the map
publisher which publishes the value of the record’s name field. Any errors in the chain so far can be handled in the
catch publisher, which passes CKRecordValue
values
along to our sink
subscriber where the
final values are processed.
import CloudKit
import Combine
import CombineCloudKit
func queryDueItems(database: CKDatabase, due: Date) {
let cancellable = database
.performQuery(ofType: "ToDoItem", where: NSPredicate(format: "due >= %@", due))
.map { record: CKRecord -> CKRecordValue in
// Map each ToDoItem to its Name
print("Received record: \(record)")
return record["Name"]
}.catch { error: Error in
// Handle any upstream error
print("Received error: \(error)")
}.sink { value: CKRecordValue in
// Process the Name of each ToDoItems
print("Received result: \(value)")
}
// ...
}
Queueing and Cancellation
Just creating a Publisher
does not queue a CloudKit operation. An operation is queued only once a Subscriber
subscribes to the Publisher
and indicates
Demand
.
Note that the Cancellable
subscriber from
sink
will cancel the upstream publishers
when it is deinitialized. Take care to ensure that your subscribers live long enough to process values. If a
CombineCloudKit publisher is cancelled before it is finished emitting values, the underlying
CKOperation
will be cancelled. This may be desirable
when performing a query and processing only the first few results. However, failing to wait for completion of a save
,
delete
, or modify
operation may result in undesirable cancellation.
Note that because the atBackgroundPriority
publishers are built on CKDatabase
methods that do not provide means of
cancellation, they will not respond to requests for cancellation. If you need the publishers to respond to requests for
cooperative cancellation, please use the publishers that do not have atBackgroundPriority
in their names. You can
still specify
QualityOfService.background
by passing in a
CKOperation.Configuration
.
Sharing Publishers among Multiple Subscribers
If two or more Subscriber
s subscribe to the same CombineCloudKit Publisher
, the operation will be queued twice.
This may be surprising if you’re new to Combine! Queueing the same database operation twice could be inefficient or
potentially harmful. If you need to subscribe to a Publisher
twice, use the
share
and
makeConnectable
operators. This will ensure the operation is queued only once.
I considered making the Publisher
s all conform to
ConnectablePublisher
by default, but that would require all callers to call
connect
explicitly or to use the
autoconnect
operator, even if they did not intend to share the Publisher
.
For more on this topic, please review:
📘 Documentation
💯% documented using Jazzy. Hosted by GitHub Pages.
❤ Contributing
Contributions are welcome!
📚 Further Reading
To learn more about Combine and CloudKit, watch these videos from WWDC:
…or review Apple’s documentation:
📜 License
CombineCloudKit was created by Chris Araman. It is published under the MIT license.


| t01 |
virus, disease, fever, infection(s), clinical, africa, outbreaks, review, health |
63 |
0 |
| t02 |
infection, cell(s), virus, vitro, activity, viral, JEV, drug, entry |
34 |
0 |
| t03 |
ZIKV, zika, zika_virus, microcephaly, pregnant, fetal, complications, congenital, neurological, anti-zikv |
25 |
0 |
| t04 |
detection, WNV, assay, nile, encephalitis, equine, bats, sera, west_nile_virus, positive |
16 |
0 |
| t05 |
CCHFV, vaccine, CCHF, challenge, antibodies, mice, neutralizing, neutralizing_antibodies, protection, JUNV |
20 |
0 |
| t06 |
EBOV, ebola, ebola_virus, ebolavirus, GP, marburg, marburg_virus, E-S-FLU, filovirus, MARV |
18 |
0 |
| t07 |
EVD, sierra, leone, ebola_virus_disease, sierra_leone, international, ebola, outbreak, 2014, liberia |
17 |
0 |
| t08 |
LASV, lassa, arenavirus, arenaviruses, lassa_fever, lassa_virus, MOPV, LF, tfr1, LCMV |
16 |
0 |
| t09 |
nss, RVFV, RVF, valley, SFSV, rift, phlebovirus, bunyaviridae, MP-12, family_bunyaviridae |
12 |
0 |
| t10 |
DENV, dengue, serotype(s), dengue_virus, DIII, CHIKV, ERI3, mabs, TF |
15 |
0 |
| t11 |
aegypti, aedes, mosquito, NIRVS, mosquitoes, A., albopictus, ae, scapularis, CHIKV |
9 |
0 |
| t12 |
viruses, innate, NW, RNA, contribute, single-stranded, belong, ocular, filovirus, filovirus_disease |
16 |
0 |
| t13 |
de, el, dengue, DHF/DSS, en, las, DV, dengue_fever, con, fiebre |
7 |
0 |
| t14 |
SFTSV, SFTS, ab10, oshima, gn, thrombocytopenia, sftsv_infection, UPR, 08-as, thrombocytopenia_syndrome |
5 |
0 |
| t15 |
RGN, natal, hantaviruses, genotypes, DENV-2, urban, sylvatic, disorder, côte, d’ivoire |
7 |
0 |


Hello! As you can already tell, my name is Justina. I am 18 years old. My birthday is April 10th, meaning I am an Aries.
I have two siblings that are older than me, both a sister and brother. I like being the youngest because I can always go to them for help.
My parents were both born and raised in Poland and moved here in their mid-twenties. I am most grateful to them for all of their hard work to get us to where we are now.
I do not know what I would do without my family. They mean the world to me.
The rest of my family lives in Poland so it gets quite lonely here during the holidays with just the five of us. We try and visit them as much as possible, but it can get quite difficult due to school and work.
At the moment, I am undecided with my major, however, I am leaning towards Computer Science.
Traveling is also something that brings me a great amount of joy. Due to my family living in Poland, I always fly over there whenever I can. I have gone by myself multiple times already.Some places I have traveled to is Poland, Hungary, Italy, France, Czech Republic, Bahamas, Belize, Honduras, Mexico, and Canada. Of course, I have also traveled around the United States. I would have to say that New York was my favorite state to visit.
Music has always been a big passion of mine. Whether it was simply listening to it or making music myself, it always brought a smile to my face. I love to play on various types on instruments. Some of which are guitar (acoustic or electric), drums, piano, ukulele, and even the kalimba. I plan on buying a bass soon and taking lessons at Lewis. I love the artist Kevin Parker, who is the creator of the project Tame Impala. I look up to him and his unique talent. I was lucky enough to see him this year live, and it was a surreal experience to say the least.
Below is a table of Tame Impala's albums, which I rank on based on my liking to it.
| Name | Year Released | Rank |
|---|---|---|
| Innerspeaker | 2010 | 4 |
| Lonerism | 2012 | 3 |
| Currents | 2015 | 1 |
| The Slow Rush | 2020 | 2 |
To learn more about the Greatest Inventions in Computing History, click the link below!
CLICK HEREI would definitely say that me being vegan shocks many people. I have been vegan for a couple months,nearing to a year now. It has been something I have always wanted to do. I have been vegetarian for years prior to becoming vegan so the transition was not that hard. I care a lot about animals so refusing to eat any animal products and trying to use products that are both vegan and cruelty free are my top priority.


Welcome to LLVM! In order to get started, you first need to know some basic information.
First, LLVM comes in three pieces. The first piece is the LLVM suite. This contains all of the tools, libraries, and header files needed to use LLVM. It contains an assembler, disassembler, bitcode analyzer and bitcode optimizer. It also contains basic regression tests that can be used to test the LLVM tools and the Clang front end.
The second piece is the Clang front end. This component compiles C, C++, Objective C, and Objective C++ code into LLVM bitcode. Once compiled into LLVM bitcode, a program can be manipulated with the LLVM tools from the LLVM suite.
There is a third, optional piece called Test Suite. It is a suite of programs with a testing harness that can be used to further test LLVM's functionality and performance.
The LLVM Getting Started documentation may be out of date. So, the Clang Getting Started page might also be a good place to start.
Here's the short story for getting up and running quickly with LLVM:
Consult the Getting Started with LLVM section for detailed information on configuring and compiling LLVM. See Setting Up Your Environment for tips that simplify working with the Clang front end and LLVM tools. Go to Program Layout to learn about the layout of the source code tree.
Before you begin to use the LLVM system, review the requirements given below. This may save you some trouble by knowing ahead of time what hardware and software you will need.
LLVM is known to work on the following platforms:
| OS | Arch | Compilers |
|---|---|---|
| AuroraUX | x861 | GCC |
| Linux | x861 | GCC |
| Linux | amd64 | GCC |
| Solaris | V9 (Ultrasparc) | GCC |
| FreeBSD | x861 | GCC |
| FreeBSD | amd64 | GCC |
| MacOS X2 | PowerPC | GCC |
| MacOS X2,9 | x86 | GCC |
| Cygwin/Win32 | x861,8, 11 | GCC 3.4.X, binutils 2.20 |
| MinGW/Win32 | x861,6, 8, 10, 11 | GCC 3.4.X, binutils 2.20 |
LLVM has partial support for the following platforms:
| OS | Arch | Compilers |
|---|---|---|
| Windows | x861 | Visual Studio 2008 or higher4,5 |
| AIX3,4 | PowerPC | GCC |
| Linux3,5 | PowerPC | GCC |
| Linux7 | Alpha | GCC |
| Linux7 | Itanium (IA-64) | GCC |
| HP-UX7 | Itanium (IA-64) | HP aCC |
| Windows x64 | x86-64 | mingw-w64's GCC-4.5.x12 |
Notes:
Note that you will need about 1-3 GB of space for a full LLVM build in Debug mode, depending on the system (it is so large because of all the debugging information and the fact that the libraries are statically linked into multiple tools). If you do not need many of the tools and you are space-conscious, you can pass ONLY_TOOLS="tools you need" to make. The Release build requires considerably less space.
The LLVM suite may compile on other platforms, but it is not guaranteed to do so. If compilation is successful, the LLVM utilities should be able to assemble, disassemble, analyze, and optimize LLVM bitcode. Code generation should work as well, although the generated native code may not work on your platform.
Compiling LLVM requires that you have several software packages installed. The table below lists those required packages. The Package column is the usual name for the software package that LLVM depends on. The Version column provides "known to work" versions of the package. The Notes column describes how LLVM uses the package and provides other details.
| Package | Version | Notes |
|---|---|---|
| GNU Make | 3.79, 3.79.1 | Makefile/build processor |
| GCC | 3.4.2 | C/C++ compiler1 |
| TeXinfo | 4.5 | For building the CFE |
| SVN | ≥1.3 | Subversion access to LLVM2 |
| DejaGnu | 1.4.2 | Automated test suite3 |
| tcl | 8.3, 8.4 | Automated test suite3 |
| expect | 5.38.0 | Automated test suite3 |
| perl | ≥5.6.0 | Utilities |
| GNU M4 | 1.4 | Macro processor for configuration4 |
| GNU Autoconf | 2.60 | Configuration script builder4 |
| GNU Automake | 1.9.6 | aclocal macro generator4 |
| libtool | 1.5.22 | Shared library manager4 |
Notes:
Additionally, your compilation host is expected to have the usual plethora of Unix utilities. Specifically:
LLVM is very demanding of the host C++ compiler, and as such tends to expose bugs in the compiler. In particular, several versions of GCC crash when trying to compile LLVM. We routinely use GCC 4.2 (and higher) or Clang. Other versions of GCC will probably work as well. GCC versions listed here are known to not work. If you are using one of these versions, please try to upgrade your GCC to something more recent. If you run into a problem with a version of GCC not listed here, please let us know. Please use the "gcc -v" command to find out which version of GCC you are using.
GCC versions prior to 3.0: GCC 2.96.x and before had several problems in the STL that effectively prevent it from compiling LLVM.
GCC 3.2.2 and 3.2.3: These versions of GCC fails to compile LLVM with a bogus template error. This was fixed in later GCCs.
GCC 3.3.2: This version of GCC suffered from a serious bug which causes it to crash in the "convert_from_eh_region_ranges_1" GCC function.
Cygwin GCC 3.3.3: The version of GCC 3.3.3 commonly shipped with Cygwin does not work.
SuSE GCC 3.3.3: The version of GCC 3.3.3 shipped with SuSE 9.1 (and possibly others) does not compile LLVM correctly (it appears that exception handling is broken in some cases). Please download the FSF 3.3.3 or upgrade to a newer version of GCC.
GCC 3.4.0 on linux/x86 (32-bit): GCC miscompiles portions of the code generator, causing an infinite loop in the llvm-gcc build when built with optimizations enabled (i.e. a release build).
GCC 3.4.2 on linux/x86 (32-bit): GCC miscompiles portions of the code generator at -O3, as with 3.4.0. However gcc 3.4.2 (unlike 3.4.0) correctly compiles LLVM at -O2. A work around is to build release LLVM builds with "make ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O2 ..."
GCC 3.4.x on X86-64/amd64: GCC miscompiles portions of LLVM.
GCC 3.4.4 (CodeSourcery ARM 2005q3-2): this compiler miscompiles LLVM when building with optimizations enabled. It appears to work with "make ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O1" or build a debug build.
IA-64 GCC 4.0.0: The IA-64 version of GCC 4.0.0 is known to miscompile LLVM.
Apple Xcode 2.3: GCC crashes when compiling LLVM at -O3 (which is the default with ENABLE_OPTIMIZED=1. To work around this, build with "ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O2".
GCC 4.1.1: GCC fails to build LLVM with template concept check errors compiling some files. At the time of this writing, GCC mainline (4.2) did not share the problem.
GCC 4.1.1 on X86-64/amd64: GCC miscompiles portions of LLVM when compiling llvm itself into 64-bit code. LLVM will appear to mostly work but will be buggy, e.g. failing portions of its testsuite.
GCC 4.1.2 on OpenSUSE: Seg faults during libstdc++ build and on x86_64 platforms compiling md5.c gets a mangled constant.
GCC 4.1.2 (20061115 (prerelease) (Debian 4.1.1-21)) on Debian: Appears to miscompile parts of LLVM 2.4. One symptom is ValueSymbolTable complaining about symbols remaining in the table on destruction.
GCC 4.1.2 20071124 (Red Hat 4.1.2-42): Suffers from the same symptoms as the previous one. It appears to work with ENABLE_OPTIMIZED=0 (the default).
Cygwin GCC 4.3.2 20080827 (beta) 2: Users reported various problems related with link errors when using this GCC version.
Debian GCC 4.3.2 on X86: Crashes building some files in LLVM 2.6.
GCC 4.3.3 (Debian 4.3.3-10) on ARM: Miscompiles parts of LLVM 2.6 when optimizations are turned on. The symptom is an infinite loop in FoldingSetImpl::RemoveNode while running the code generator.
SUSE 11 GCC 4.3.4: Miscompiles LLVM, causing crashes in ValueHandle logic.
GCC 4.3.5 and GCC 4.4.5 on ARM: These can miscompile value >> 1 even at -O0. A test failure in test/Assembler/alignstack.ll is one symptom of the problem.
GNU ld 2.16.X. Some 2.16.X versions of the ld linker will produce very long warning messages complaining that some ".gnu.linkonce.t.*" symbol was defined in a discarded section. You can safely ignore these messages as they are erroneous and the linkage is correct. These messages disappear using ld 2.17.
GNU binutils 2.17: Binutils 2.17 contains a bug which causes huge link times (minutes instead of seconds) when building LLVM. We recommend upgrading to a newer version (<IP_ADDRESS>.4 or later).
GNU Binutils 2.19.1 Gold: This version of Gold contained a bug which causes intermittent failures when building LLVM with position independent code. The symptom is an error about cyclic dependencies. We recommend upgrading to a newer version of Gold.
The remainder of this guide is meant to get you up and running with LLVM and to give you some basic information about the LLVM environment.
The later sections of this guide describe the general layout of the the LLVM source tree, a simple example using the LLVM tool chain, and links to find more information about LLVM or to get help via e-mail.
Throughout this manual, the following names are used to denote paths specific to the local system and working environment. These are not environment variables you need to set but just strings used in the rest of this document below. In any of the examples below, simply replace each of these names with the appropriate pathname on your local system. All these paths are absolute:
In order to compile and use LLVM, you may need to set some environment variables.
If you have the LLVM distribution, you will need to unpack it before you can begin to compile it. LLVM is distributed as a set of two files: the LLVM suite and the LLVM GCC front end compiled for your platform. There is an additional test suite that is optional. Each file is a TAR archive that is compressed with the gzip program.
The files are as follows, with x.y marking the version number:
If you have access to our Subversion repository, you can get a fresh copy of the entire source code. All you need to do is check it out from Subversion as follows:
This will create an 'llvm' directory in the current directory and fully populate it with the LLVM source code, Makefiles, test directories, and local copies of documentation files.
If you want to get a specific release (as opposed to the most recent revision), you can checkout it from the 'tags' directory (instead of 'trunk'). The following releases are located in the following subdirectories of the 'tags' directory:
If you would like to get the LLVM test suite (a separate package as of 1.4), you get it from the Subversion repository:
% cd llvm/projects % svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suite
By placing it in the llvm/projects, it will be automatically configured by the LLVM configure script as well as automatically updated when you run svn update.
GIT mirrors are available for a number of LLVM subprojects. These mirrors sync automatically with each Subversion commit and contain all necessary git-svn marks (so, you can recreate git-svn metadata locally). Note that right now mirrors reflect only trunk for each project. You can do the read-only GIT clone of LLVM via:
git clone http://llvm.org/git/llvm.git
If you want to check out clang too, run:
git clone http://llvm.org/git/llvm.git cd llvm/tools git clone http://llvm.org/git/clang.git
Since the upstream repository is in Subversion, you should use "git pull --rebase" instead of "git pull" to avoid generating a non-linear history in your clone. To configure "git pull" to pass --rebase by default on the master branch, run the following command:
git config branch.master.rebase true
Please read Developer Policy, too.
Assume master points the upstream and mybranch points your working branch, and mybranch is rebased onto master. At first you may check sanity of whitespaces:
git diff --check master..mybranch
The easiest way to generate a patch is as below:
git diff master..mybranch > /path/to/mybranch.diff
It is a little different from svn-generated diff. git-diff-generated diff has prefixes like a/ and b/. Don't worry, most developers might know it could be accepted with patch -p1 -N.
But you may generate patchset with git-format-patch. It generates by-each-commit patchset. To generate patch files to attach to your article:
git format-patch --no-attach master..mybranch -o /path/to/your/patchset
If you would like to send patches directly, you may use git-send-email or git-imap-send. Here is an example to generate the patchset in Gmail's [Drafts].
git format-patch --attach master..mybranch --stdout | git imap-send
Then, your .git/config should have [imap] sections.
[imap] host = imaps://imap.gmail.com user =<EMAIL_ADDRESS>pass = himitsu! port = 993 sslverify = false ; in English folder = "[Gmail]/Drafts" ; example for Japanese, "Modified UTF-7" encoded. folder = "[Gmail]/&Tgtm+DBN-" ; example for Traditional Chinese folder = "[Gmail]/&g0l6Pw-"
To set up clone from which you can submit code using git-svn, run:
git clone http://llvm.org/git/llvm.git cd llvm git svn init https://llvm.org/svn/llvm-project/llvm/trunk --username=<username> git config svn-remote.svn.fetch :refs/remotes/origin/master git svn rebase -l # -l avoids fetching ahead of the git mirror.  (Note: This script is intended for relative newbies to git. If you have more experience, you can likely improve on it.)
The git-svn metadata can get out of sync after you mess around with
branches and dcommit
. When that happens, git svn
dcommit
stops working, complaining about files with uncommitted
changes. The fix is to rebuild the metadata:
rm -rf .git/svn git svn rebase -l
Once checked out from the Subversion repository, the LLVM suite source code must be configured via the configure script. This script sets variables in the various *.in files, most notably llvm/Makefile.config and llvm/include/Config/config.h. It also populates OBJ_ROOT with the Makefiles needed to begin building LLVM.
The following environment variables are used by the configure script to configure the build system:
| Variable | Purpose |
|---|---|
| CC | Tells configure which C compiler to use. By default, configure will look for the first GCC C compiler in PATH. Use this variable to override configure's default behavior. |
| CXX | Tells configure which C++ compiler to use. By default, configure will look for the first GCC C++ compiler in PATH. Use this variable to override configure's default behavior. |
The following options can be used to set or enable LLVM specific options:
To configure LLVM, follow these steps:
Change directory into the object root directory:
% cd OBJ_ROOT
Run the configure script located in the LLVM source tree:
% SRC_ROOT/configure --prefix=/install/path [other options]
Once you have configured LLVM, you can build it. There are three types of builds:
Once you have LLVM configured, you can build it by entering the OBJ_ROOT directory and issuing the following command:
% gmake
If the build fails, please check here to see if you are using a version of GCC that is known not to compile LLVM.
If you have multiple processors in your machine, you may wish to use some of the parallel build options provided by GNU Make. For example, you could use the command:
% gmake -j2
There are several special targets which are useful when working with the LLVM source code:
Please see the Makefile Guide for further details on these make targets and descriptions of other targets available.
It is also possible to override default values from configure by declaring variables on the command line. The following are some examples:
Every directory in the LLVM object tree includes a Makefile to build it and any subdirectories that it contains. Entering any directory inside the LLVM object tree and typing gmake should rebuild anything in or below that directory that is out of date.
It is possible to cross-compile LLVM itself. That is, you can create LLVM executables and libraries to be hosted on a platform different from the platform where they are build (a Canadian Cross build). To configure a cross-compile, supply the configure script with --build and --host options that are different. The values of these options must be legal target triples that your GCC compiler supports.
The result of such a build is executables that are not runnable on on the build host (--build option) but can be executed on the compile host (--host option).
The LLVM build system is capable of sharing a single LLVM source tree among several LLVM builds. Hence, it is possible to build LLVM for several different platforms or configurations using the same source tree.
This is accomplished in the typical autoconf manner:
Change directory to where the LLVM object files should live:
% cd OBJ_ROOT
Run the configure script found in the LLVM source directory:
% SRC_ROOT/configure
The LLVM build will place files underneath OBJ_ROOT in directories named after the build type:
If you're running on a Linux system that supports the "binfmt_misc" module, and you have root access on the system, you can set your system up to execute LLVM bitcode files directly. To do this, use commands like this (the first command may not be required if you are already using the module):
$ mount -t binfmt_misc none /proc/sys/fs/binfmt_misc $ echo ':llvm:M::BC::/path/to/lli:' > /proc/sys/fs/binfmt_misc/register $ chmod u+x hello.bc (if needed) $ ./hello.bc
This allows you to execute LLVM bitcode files directly. On Debian, you can also use this command instead of the 'echo' command above:
$ sudo update-binfmts --install llvm /path/to/lli --magic 'BC'
One useful source of information about the LLVM source base is the LLVM doxygen documentation available at http://llvm.org/doxygen/. The following is a brief introduction to code layout:
This directory contains some simple examples of how to use the LLVM IR and JIT.
This directory contains public header files exported from the LLVM library. The three main subdirectories of this directory are:
This directory contains most of the source files of the LLVM system. In LLVM, almost all code exists in libraries, making it very easy to share code among the different tools.
This directory contains projects that are not strictly part of LLVM but are shipped with LLVM. This is also the directory where you should create your own LLVM-based projects. See llvm/projects/sample for an example of how to set up your own project.
This directory contains libraries which are compiled into LLVM bitcode and used when linking programs with the Clang front end. Most of these libraries are skeleton versions of real libraries; for example, libc is a stripped down version of glibc.
Unlike the rest of the LLVM suite, this directory needs the LLVM GCC front end to compile.
This directory contains feature and regression tests and other basic sanity checks on the LLVM infrastructure. These are intended to run quickly and cover a lot of territory without being exhaustive.
This is not a directory in the normal llvm module; it is a separate Subversion module that must be checked out (usually to projects/test-suite). This module contains a comprehensive correctness, performance, and benchmarking test suite for LLVM. It is a separate Subversion module because not every LLVM user is interested in downloading or building such a comprehensive test suite. For further details on this test suite, please see the Testing Guide document.
The tools directory contains the executables built out of the libraries above, which form the main part of the user interface. You can always get help for a tool by typing tool_name -help. The following is a brief introduction to the most important tools. More detailed information is in the Command Guide.
This directory contains utilities for working with LLVM source code, and some of the utilities are actually required as part of the build process because they are code generators for parts of LLVM infrastructure.
This section gives an example of using LLVM with the Clang front end.
First, create a simple C file, name it 'hello.c':
#include <stdio.h> int main() { printf("hello world\n"); return 0; }
Next, compile the C file into a native executable:
% clang hello.c -o hello
Note that clang works just like GCC by default. The standard -S and -c arguments work as usual (producing a native .s or .o file, respectively).
Next, compile the C file into a LLVM bitcode file:
% clang -O3 -emit-llvm hello.c -c -o hello.bc
The -emit-llvm option can be used with the -S or -c options to emit an LLVM ".ll" or ".bc" file (respectively) for the code. This allows you to use the standard LLVM tools on the bitcode file.
Run the program in both forms. To run the program, use:
% ./hello
and
% lli hello.bc
The second examples shows how to invoke the LLVM JIT, lli.
Use the llvm-dis utility to take a look at the LLVM assembly code:
llvm-dis < hello.bc | less
Compile the program to native assembly using the LLC code generator:
% llc hello.bc -o hello.s
Assemble the native assembly language file into a program:
Solaris: % /opt/SUNWspro/bin/cc -xarch=v9 hello.s -o hello.native Others: % gcc hello.s -o hello.native
Execute the native code program:
% ./hello.native
Note that using clang to compile directly to native code (i.e. when the -emit-llvm option is not present) does steps 6/7/8 for you.
If you are having problems building or using LLVM, or if you have any other general questions about LLVM, please consult the Frequently Asked Questions page.
This document is just an introduction on how to use LLVM to do some simple things... there are many more interesting and complicated things that you can do that aren't documented here (but we'll gladly accept a patch if you want to write something up!). For more information about LLVM, check out:


Joining Purdue IEEE is easier than ever!
To join, simply attend any committee meeting and pay dues. For a list of committees, see the home page. For a list of meetings, see the calendar.
We recommend joining our Slack and Discord to stay in contact.
Connect With Us
Purdue IEEE mainly uses Slack and Discord to communicate with its members. Join with a free account today and get started with Purdue IEEE. Both platforms can be downloaded from the Apple App Store or Google Play Store.
Discord is how Purdue IEEE holds most calls and virtual events - including info sessions.
Slack is how Purdue IEEE members talk and share the great things we work on.
We also have a mailing list for updates you can join: just enter your email to stay informed. We will only use your email for club-wide announcements.
Dues
Purdue IEEE Student Branch requires payment of dues for membership1. Payment of annual dues gives access to IEEE resources, such as:
- Access to extras at Learning Events by Learning Committee
- Trip expense coverage for committee competitions and social events
- Free food at General Assemblies (in the past... we provide masks and disinfectants right now)
- Recognition for contributed work with final projects
Annual dues for the 2021-22 academic year are $15.
This year, you can choose to either pay with physical cash or pay digitally. To pay with physical cash, please go to EE 014, and leave your email and dues with a Treasurer-authorized attendant or IEEE officer inside the office. There are two options for paying digitally: Venmo or Paypal. For security reasons, we have pinned guidance on how to do this in the #IEEE channel in our Slack.
Upon paying dues, you will receive a Google Forms link that leads to a 1-minute survey. Filling out the requested information in the survey will officially register you in our membership database. Please contact the Treasurer at<EMAIL_ADDRESS>if you have any dues-related questions.
1If you are a graduate student with an active International IEEE Membership and wish to join the Purdue Student Branch, you are exempt from the local dues! Please contact a Purdue IEEE officer to complete registration.


Tag Selection >
Create New Selection
Search Selections
Browse Selections
| Selection Name | Tags | |||||
|---|---|---|---|---|---|---|
|
Delete Export XML |
Manage Certificates >
Create New Certificate Request
Search Certificate Requests
Browse Certificate Requests
| Subject (host uuid) | Selection | Status | |
|---|---|---|---|
| delete |
Search Certificates
Browse Certificates
Settings >


Education
Mathematics with a minor in Computer Science
Java Programming, Data Structures, Computer Architecture, Artificial Intelligence, Numerical
Analysis, Linear Algebra, Computer Graphics, Discrete Structures
University of Illinois at Urbana-Champaign
August 2013 - December 2016
Experience
Software Engineer
I'm currently working on a confidential project. As a Backend Engineer, I'm helping build
highly scalable and efficient systems with Python/Django. I'm also involved in interviewing
and am actively training to be a more skillful oncall engineer.
Venmo
March 2020 - Present
Software Development Engineer - Catalog Vending
I'm currently working on the Prime Video - Catalog Vending team. This team is in charge of
vending out data to customer facing teams (iPhone, Android, etc) from the part providers who
give us video data (HBO, NBC, CBS, etc). Our team is uniquely positioned to always be
impacted and have a voice in all major projects in the Prime Video pipeline. I've been
fortunate enough to fix many issues seen in the architecture of our team; these issues have
ranged from logical issues in the code to design failures that were creating multiple
critical issues to our customers. I've learned a great deal about design practices, scoping
large projects, efficient and secure testing, scaling services, and even developing other
engineers as they join.
Amazon.com
September 2017 - November 2019
Software Development Engineer - Locale Management
I'm working in the Amazon Video organization under the Locale Management team, designing
services to recommend UX languages for each user of the Amazon Video platform. Currently
researching, designing, and implementing 2 services with multiple APIs to retrieve and
persist the preferred language for customers and devices. Participating in trainings for
DynamoDB, Machine Learning, and AWS. Using Java, Google Guice, DynamoDB, and Git for my
current projects.
Amazon.com
February 2017 - September 2017
Software Engineering Intern
As an intern in the Software Engineering department this time, I worked mostly on front end
aspects of Project UNO, a team designated to work with authentication and security of the
cmegroup.com website and others related to it. As the UI/UX intern, I worked with AngularJS
primarily, with the obvious supports from HTML5, CSS, JavaScript, and SQL. I became well
versed in Angular and even learned the intricacies of a Java backend service. Along with the
technical skills, my knowledge of the financial world increased dramatically. I partook in
an intern edition trading challenge and learned about futures and options on a level that I
wasn't familiar with. I attended several workshops (including MarketsWiki
Summer Intern Series)
Chicago Mercantile Exchange
May 2016 - August 2016
Applications Development Intern
I used C#, SQL, and .NET to help transport data from an old server to the new data management
system. I transported literal data using SQL from database to database, I programmed the
online website using C# and ASP.NET to repair broken functions and I introduced a data
organization tool called a CMDB, Configuration Management Database. It allows the mapping of
servers and databases and lets programmers keep track of their configuration items.
Calamos Investments
May 2015 - August 2015
IT Intern
Created a program that read, analyzed and compared PDF’s to check equality and return
differences between the documents.Learned Maven Apache and repositories. Studied about
futures, options, and commodities trading.
Chicago Mercantile Exchange
July 2014 - August 2014
Volunteering and Leadership Experience
Vice President of Service-Internal
Collaborated with my Service-External partner to plan for an effective and fruitful fall
service output from our fraternity. Coordinated the planning of 5 large scale service events
that will greatly help the Champaign-Urbana community. Serving on the executive board,
giving vital input and maintaining a sense of respect and service-first mindset in the
fraternity.
Pledge training assistant
As a pledge training assistant, I assist the Pledge Trainers by teaching a group of 25
pledges the ways of our fraternity. I offer help in teaching skills for serving the
community, leading fellow peers, and creating lasting bonds.
Technology Chair
As Technology Chair, I'm in charge of maintaining the website for my chapter, Alpha Alpha. I
redesigned the website to be more professional and informational to both the actives in the
chapter and to the outside organizations that look to find volunteers from us.
Service contribution
I've amassed over 100 hours of service so far as a member of APO and I've found many
organizations that I love to give my time to. I enjoy serving at Books to Prisoners, Relay
for Life, and Dance Marathon.
Alpha Phi Omega - Alpha Alpha Chapter
August 2014 - Present


Engineering and consultancy services, spanning the breadths of software design, engineering and testing.
Providing technical consulting and IT services to help investment banks, asset and wealth management and related financial institutions to excel.
Guillermo was a Host Engineer (Desktop Software Engineer). He was working in R&D department for Large Format Printers.
Having knowledge of the most common UI technologies used, and being focused on the latest innovations, allowed him to determine the best approach according with the designers and developers.


Non ascii commands such as return and escape can be sent using DDE. It is necessary to specify the character in the form {###} where ### is the keyAscii numeric representation:
Control .LinkExecute "{13}" 'sends <enter>.
Control .LinkExecute "{27}" 'sends <esc>.


The web is collection of HTML documents. HTML stands for Hypertext Markup Language. Examples of files can be found on the web include plain text, HTML, videos, images and music.
Note to myself: I want to make a website like this without using tempalates. I can't wait!
HTML TagsTags are composed of an opening tag, the contents, and a closing tag.
Computers are stupid?Computers need accurate instructions from programmers. A minor mistake by the programmers can result in big problems.
Adding ImagesAn example is like this:
Inline vs Block Elements


Add to your theoretical course Action-Based Approach
Learning can only take place through the attempt to solve a problem and therefore only takes place during ACTIVITY.
In the Addictive Learning platform, you will create Action-Based tasks. The basis of this kind of learning is that people get practical challenges, work in a community, and every day share their results by taking photos or videos. Thus your Learners are in the atmosphere of competition, they never get bored, and concentrate better.
Consequently, you get:
Tasks, which are easy to create
You need some minutes to set tasks in our platform and create games. It is several elementary steps.
Saved time
Enable learning to happen anywhere, anytime.  Everything is automatized.
Increased Engagement
Participants develop knowledge in an active way. They take challenges, are not tired from learning terminologies by the book.
Extra features to your course
Action-Based tasks can be added to your already existed course. You can use it to increase motivation and sell additionally.
Mobile Application for your Learners
Your Learners can fulfill the tasks anywhere. Everything is on their mobile devices.
- Daily Action-Based tasks which are gathered in the game
- "Success Stories" as proof of made tasks
- Possibility to check and evaluate members' homework anonymously
- Team-based and personal Leaderboards for inspiration and motivation
Mobile Application for your Learners
Your Learners can fulfill the tasks anywhere. Everything is on their mobile devices.
- Daily Action-Based tasks which are gathered in the game
- "Success Stories" as proof of made tasks
- Possibility to check and evaluate members' homework anonymously
- Team-based and personal Leaderboards for inspiration and motivation
We do everything to help you
Onboarding
We help with adapting your course content to an interactive form.
24/7 support
We always here to help you get the best experience in using our platform.
Free test-drive
Try the platform for free to test all the features.


Data Source Credits
USDA Challenge Data Sets Used
NASS VegScape API - The National Agricultural Statistics Service (NASS) offers
the VegScape API that provides direct access to a raster image dataset containing
the crop condition vegetation NDVI.
NASS Quickstats API – The National Agricultural Statistics Service (NASS) provides
direct access to a database containing official published aggregate estimates related
to U.S. agricultural production. This data set contains the crop yield information presented.
ERS ARMS Crop Production Practices - The field-level phase collects information on
production practices and costs (such as fertilizer, pesticide, labor, tillage, and seed) for
target commodities. The survey collects information from 48 states. It is designed to provide
representative data of the continental United States and to support state-level estimates for
15 key agricultural states.
National Oceanic and Atmospheric Administration (NOAA) - Weather stations from around the
world report temperatures and precipitation levels. The data is aggregated and provided for public
use. They provide 30 year averages for temperatures, precipitation, and snow levels as well as
daily values. The specific data set used was DAILY GLOBAL HISTORICAL CLIMATOLOGY
NETWORK (GHCN-DAILY)


{% extends "registration/registration_base.html" %} {% block body %}
Create account to see it in action.
Already have an account?
Secured Pi © 2016


We’ve mentioned that Agda is a proof assistant, i.e. a system in which one can write proofs that can be checked for validity much like one writes code whose validity is checked by a compiler. A proof as we know it is a sequence of formulas, each one could either be an axiom or follow from a bunch of previous formulas by applying some rule of inference.
In Agda and other systems based on the Curry-Howard correspondence there is another notion of proof, where proofs are programs, formulas are types, and a proof is a correct proof of a certain theorem provided the corresponding program has the type of the corresponding formula. In simpler terms, if one claims a proposition, one has to show the proposition (which is a type) is valid. A type can be shown to be valid if one can either construct an object of that type or provide a means (function) to do so.
Thinking from the computer science perspective, a proof of a theorem can be modeled with a tree, where the root is the theorem, the leaves are the axioms, and the inner nodes follow from their parents by a rule of inference.
While proving a proposition that involves an equality, one may use one side of the equality (say, the right hand side RHS) to prove the other side. We shall see this method, called “equational reasoning”, in detail later.
module Types.proofsAsData where
open import Lang.dataStructures
Here we present some examples of how to write simple proofs in Agda.
For example, the <=
operator can be defined using induction as consisting of two constructors:
ltz
which compares any natural number with zero
lz
which tries to reduce comparison of x <= y
, to x-1 <= y-1
:After applying lz
sufficient number of times, if we end up at 0 <= x
where ltz
is invoked, computation terminates and our theorem is proved.
data _<=_ : ℕ → ℕ → Set where
: {n : ℕ} → zero <= n
ltz : {m : ℕ} → {n : ℕ} → m <= n → (succ m) <= (succ n)
lt
infix 4 _<=_
Now, we can use that to prove a bunch of propositions:
: one <= ten
idLess₁ = lt ltz
idLess₁
-- (lt ltz)(one <= ten)
-- ltz (zero <= nine)
-- true
: two <= ten
idLess₁₊ = lt (lt ltz)
idLess₁₊
-- (lt (lt ltz))(two <= ten)
-- (lt ltz)(one <= nine)
-- ltz (zero <= eight)
-- true
: two <= seven
idLess₂ = lt (lt ltz)
idLess₂
: three <= nine
idLess₃ = lt (lt (lt ltz)) idLess₃
If we try to compile something that is not true, the compiler will throw an error:
: ten <= three
idLess' = lt lt lt lt lt lt lt lt lt ltz idLess'
68,14-16
proofsAsData.lagda.md:<= _n_31 → succ _m_30 <= succ _n_31) !=< (nine <= two) of
(_m_30 type Set
The odd or even proofs can be defined as in the previous proof. Here we successively decrement n
till we:
even₀
to prove n
is evenodd₀
to prove n
is odddata Even : ℕ → Set
data Odd : ℕ → Set
data Even where
: Even zero
zeroIsEven : {n : ℕ} → Even n → Even (succ (succ n))
succ
data Odd where
: Odd one
oneIsOdd : {n : ℕ} → Odd n → Odd (succ (succ n)) succ
by which we could prove:
: Even two
twoisEven = succ zeroIsEven
twoisEven
: Even four
isFourEven = succ (succ zeroIsEven)
isFourEven
: Odd seven
isSevenOdd = succ (succ (succ oneIsOdd)) isSevenOdd
Equality of natural numbers can be proven by successively comparing decrements of them, till we reach 0 = 0
. Else the computation never terminates:
data _≡_ : ℕ → ℕ → Set where
: zero ≡ zero
eq₀ : ∀ {n m} → (succ n) ≡ (succ m) eq
Similar for not equals:
data _≠_ : ℕ → ℕ → Set where
: ∀ n → n ≠ zero
neq₀ : ∀ m → zero ≠ m
neq₁ : ∀ { n m } → (succ n) ≠ (succ m) neq
To prove that a particular element of type A
belongs to a list List'
of type A
, we require:
x
is always in a list containing x
and a bunch of other elements xs
x ∈ list
to x ∈ y + list₁
, which either reduces to
x ∈ x + list₁
which terminates the computation orx ∈ list₁
where list₁
is list
without y
.
data _∈_ {A : Set}(x : A) : List A → Set where
: ∀ {xs} → x ∈ (x :: xs)
refl : ∀ {y xs} → x ∈ xs → x ∈ (y :: xs)
succ∈
infixr 4 _∈_
Example:
: List ℕ
theList = one :: two :: four :: seven :: three :: []
theList
: three ∈ theList
threeIsInList = succ∈ (succ∈ (succ∈ (succ∈ refl))) threeIsInList
The relationship we saw earlier between formal proofs and computer programs is called the Curry-Howard isomorphism, also known as the Curry-Howard correspondence. This states that a proof is a program and the formula it proves is the type of the program. Broadly, they discovered that logical operations have analogues in types as can be seen below:
| Type Theory | Logic |
|---|---|
A |
proposition |
x : A |
proof |
ϕ , 1 |
⟂, ⊤ |
A × B |
A ∧ B (and / conjunction) |
A + B |
A ∨ B (or / disjunction) |
A → B |
A ⟹ B (implication) |
x : A ⊢ B(x) |
predicate |
x : A ⊢ b : B(x) |
conditional proof |
| \(\Pi_{x:A} B(x)\) | ∀ x B(x) |
| \(\Sigma_{x:A} B(x)\) | ∃ x B(x) |
| \(p : x =_A y\) | proof of equality |
| \(\Sigma_{x,y:A} x =_A y\) | equality relation |


This is a starter template for creating a beautiful, customizable blog with minimal effort. You’ll only have to change a few settings and you’re ready to go. As with all Jigsaw sites, configuration settings can be found in config
This is a starter template for creating a beautiful, customizable blog with minimal effort. You’ll only have to change a few settings and you’re ready to go. As with all Jigsaw sites, configuration settings can be found in config
This starter template includes a custom 404 Not Found error page, located at /source/404.blade.php. To preview the 404 page, you can visit /404 in your browser. Depending...
To provide fast, local search of your blog, this starter template comes with a pre-built Vue.js component that uses Fuse.js. Fuse.js is a "lightweight fuzzy-search library with no...
This is a starter template for creating a beautiful, customizable blog with minimal effort. You’ll only have to change a few settings and you’re ready to go. As with all Jigsaw sites, configuration settings can be found in config
This is a starter template for creating a beautiful, customizable blog with minimal effort. You’ll only have to change a few settings and you’re ready to go. As with all Jigsaw sites, configuration settings can be found in config


{% extends 'layout.html' %} {% block body %}
Facebook's chief operating officer since 2008, Sandberg has helped dramatically boost revenues at the social network. She founded Lean In, a nonprofit named after her bestselling book, to support women's empowerment. Her second book, Option B, which focuses on grief and resilience, was released in April 2017. She spent six years as a vice president at Google, where she developed its lucrative online advertising programs. One of the nation's most influential female executives, she has been thrust into defending Facebook's work battling election meddling.
Swedish engineering physicist Elina Berglund completed her PhD at CERN where she was searching for the elusive Higgs boson particle. After its discovery in 2012, Berglund turned her attention to family life and sought to find an alternative to the contraceptive pill. Natural Cycles is now used by more than 900,000 people in more than 200 countries. It has raised $37.5 million to date.


public interface DownloadService
DownloadService
service allows an application
to control how its own resources are cached, to determine
which of its resources are currently cached, to force resources
to be cached, and to remove resources from the cache. The JNLP
Client is responsible for providing a specific implementation of
this service.| Modifier and Type | Method and Description |
|---|---|
DownloadServiceListener |
getDefaultProgressWindow()
Return a default
DownloadServiceListener implementation which, when passed to
a load method, should pop up and update a progress window as the load
progresses. |
boolean |
isExtensionPartCached(java.net.URL ref,
java.lang.String version,
java.lang.String part)
Returns
true if the given part of the given
extension is cached, and the extension and part are
mentioned in the JNLP file for the application. |
boolean |
isExtensionPartCached(java.net.URL ref,
java.lang.String version,
java.lang.String[] parts)
Returns
true if the given parts of the given
extension are cached, and the extension and parts are
mentioned in the JNLP file for the application. |
boolean |
isPartCached(java.lang.String part)
Returns
true if the part referred to by the
given string is cached, and that part is
mentioned in the JNLP file for the application. |
boolean |
isPartCached(java.lang.String[] parts)
Returns
true if the parts referred to by the
given array are cached, and those parts are
mentioned in the JNLP file for the application. |
boolean |
isResourceCached(java.net.URL ref,
java.lang.String version)
Returns
true if the resource referred to by the
given URL and version is cached, and that resource is either
mentioned in the calling applications JNLP file, is within the
codebase of the calling applications JNLP file, or the
calling application has been granted all-permissions. |
void |
loadExtensionPart(java.net.URL ref,
java.lang.String version,
java.lang.String[] parts,
DownloadServiceListener progress)
Downloads the given parts of the given extension, if the parts
and the extension are mentioned in the JNLP file for the
application.
|
void |
loadExtensionPart(java.net.URL ref,
java.lang.String version,
java.lang.String part,
DownloadServiceListener progress)
Downloads the given part of the given extension, if the part
and the extension are mentioned in the JNLP file for the
application.
|
void |
loadPart(java.lang.String[] parts,
DownloadServiceListener progress)
Downloads the given parts, if the parts are mentioned in
the JNLP file for the application.
|
void |
loadPart(java.lang.String part,
DownloadServiceListener progress)
Downloads the given part, if the part is mentioned in
the JNLP file for the application.
|
void |
loadResource(java.net.URL ref,
java.lang.String version,
DownloadServiceListener progress)
Downloads the given resource, if the resource is either mentioned
in the calling applications JNLP file, is within the codebase
of the calling applications JNLP file, or if the calling application
has been granted all-permissions.
|
void |
removeExtensionPart(java.net.URL ref,
java.lang.String version,
java.lang.String part)
Removes the given part of the given extension from the cache,
if the part and the extension are mentioned in the JNLP file
for the application.
|
void |
removeExtensionPart(java.net.URL ref,
java.lang.String version,
java.lang.String[] parts)
Removes the given parts of the given extension from the cache,
if the parts and the extension are mentioned in the JNLP file
for the application.
|
void |
removePart(java.lang.String part)
Removes the given part from the cache, if the part
is mentioned in the JNLP file for the application.
|
void |
removePart(java.lang.String[] parts)
Removes the given parts from the cache, if the parts
are mentioned in the JNLP file for the application.
|
void |
removeResource(java.net.URL ref,
java.lang.String version)
Removes the given resource from the cache, if the resource
is either mentioned in the calling applications JNLP file,
is within the codebase of the calling applications JNLP file,
or if the calling application has been granted all-permissions.
|
boolean isResourceCached(java.net.URL ref, java.lang.String version)
true
if the resource referred to by the
given URL and version is cached, and that resource is either
mentioned in the calling applications JNLP file, is within the
codebase of the calling applications JNLP file, or the
calling application has been granted all-permissions.
.ref
- The URL for the resource.version
- The version string, or null
for
no version.true
if the above conditions are
met, and false
otherwise.boolean isPartCached(java.lang.String part)
true
if the part referred to by the
given string is cached, and that part is
mentioned in the JNLP file for the application.part
- The name of the part.true
if the above conditions are
met, and false
otherwise.boolean isPartCached(java.lang.String[] parts)
true
if the parts referred to by the
given array are cached, and those parts are
mentioned in the JNLP file for the application.parts
- An array of part names.true
if the above conditions are
met, and false
otherwise.boolean isExtensionPartCached(java.net.URL ref, java.lang.String version, java.lang.String part)
true
if the given part of the given
extension is cached, and the extension and part are
mentioned in the JNLP file for the application.ref
- The URL for the resource.version
- The version string, or null
for
no version.part
- The name of the part.true
if the above conditions are
met, and false
otherwise.boolean isExtensionPartCached(java.net.URL ref, java.lang.String version, java.lang.String[] parts)
true
if the given parts of the given
extension are cached, and the extension and parts are
mentioned in the JNLP file for the application.ref
- The URL for the resource.version
- The version string, or null
for
no version.parts
- An array of part names.true
if the above conditions are
met, and false
otherwise.void loadResource(java.net.URL ref, java.lang.String version, DownloadServiceListener progress) throws java.io.IOException
ref
- The URL for the resource.version
- The version string, or null
for
no version.progress
- Download progress callback object.java.io.IOException
void loadPart(java.lang.String part, DownloadServiceListener progress) throws java.io.IOException
part
- The name of the part.progress
- Download progress callback object.java.io.IOException
void loadPart(java.lang.String[] parts, DownloadServiceListener progress) throws java.io.IOException
parts
- An array of part names.progress
- Download progress callback object.java.io.IOException
void loadExtensionPart(java.net.URL ref, java.lang.String version, java.lang.String part, DownloadServiceListener progress) throws java.io.IOException
ref
- The URL for the resource.version
- The version string, or null
for
no version.part
- The name of the part.progress
- Download progress callback object.java.io.IOException
void loadExtensionPart(java.net.URL ref, java.lang.String version, java.lang.String[] parts, DownloadServiceListener progress) throws java.io.IOException
ref
- The URL for the resource.version
- The version string, or null
for
no version.parts
- An array of part names to load.progress
- Download progress callback object.java.io.IOException
void removeResource(java.net.URL ref, java.lang.String version) throws java.io.IOException
ref
- The URL for the resource.version
- The version string, or null
for
no version.java.io.IOException
void removePart(java.lang.String part) throws java.io.IOException
part
- The name of the part.java.io.IOException
void removePart(java.lang.String[] parts) throws java.io.IOException
parts
- An array of part names.java.io.IOException
void removeExtensionPart(java.net.URL ref, java.lang.String version, java.lang.String part) throws java.io.IOException
ref
- The URL for the resource.version
- The version string, or null
for
no version.part
- The name of the part.java.io.IOException
void removeExtensionPart(java.net.URL ref, java.lang.String version, java.lang.String[] parts) throws java.io.IOException
ref
- The URL for the resource.version
- The version string, or null
for
no version.parts
- An array of part names.java.io.IOException
DownloadServiceListener getDefaultProgressWindow()
DownloadServiceListener
implementation which, when passed to
a load
method, should pop up and update a progress window as the load
progresses.DownloadServiceListener
object representing a download progress
listener.Copyright © 1998, 2019, Oracle and/or its affiliates. All rights reserved.


Upload a scientific PDF, LaTeX zip file, or JATS XML file and get back a JSON:
(Accepted file extensions: *.pdf, *.gz, *.nxml)
Please wait, processing takes time...


---
title: StoreCat - Get Automated
layout: front
---
{% include header.html
title="Stop doing the same tasks over and over again"
image="/img/Robotics-pana.svg"
text="StoreCat makes it easy automate tasks by collecting online data in a simple interface."
cta="Find out what you're missing"
ctaLink="#contact"
%}
{% include processNew.html %}
{% include popUpTopDelay.html
text="As more people move to online shopping, learn how to take advantage of E-Commerce and stay competitive in 2020."
ctaText= "Free E-Book"
oneLine="oneline"
link="/e-book/Taking-Advantage-of-ECommerce-Tools-in-Uncertain-Times.pdf"
%}
{% include marketThreeSixtyHP.html
ctaText="Build your Solution"
ctaLink="/power-ups/"
%}
{% include testimonial.html %}
{% include getProductManagement.html %}
{% include factoid.html
text="What could you do with 20 extra hours every week?"
image="/img/icons/question-mark-white.svg"
oneLine="oneline"
%}
{% include getReportCard.html %}
{% include footer.html %}
{% include scripts.html %}


--- title: Israel shot 016 date: 2004-01-17T00:00:00.000Z filepathOriginal: photos/IMG0180.jpg filepathThumbnail: photos/IMG0180.thumbnail.jpg filepathPreview: photos/IMG0180.preview.jpg ---
Myself and Crembo kissing the ground


| Parent Handbook | This contains all the rules, regulations, and policies in place at After the Bell Inc. |
|
| Registration Package | All of the pages in this package need to be filled out and dropped off at After the Bell Inc with a $100 deposit. The deposit will go towards the first months payment. |
| Fee Structure (2014-2015 School Year) | |
| July 2014(the extra $10 is for the t-shirts) | $465.00 |
| August 2014 | $455.00 |
| Sept 2014 to June 2015 | $365.00 |
Please click here to view our exciting 2014 Summer Program!


| # | Customer | Location | Order Date | Status | Net Amount | Action |
|---|---|---|---|---|---|---|
| 1 | Michael Holz | London | Jun 15, 2017 | • Delivered | $254 | |
| 2 | Paula Wilson | Madrid | Jun 21, 2017 | • Shipped | $1,260 | |
| 3 | Antonio Moreno | Berlin | Jul 04, 2017 | • Cancelled | $350 | |
| 4 | Mary Saveley | New York | Jul 16, 2017 | • Pending | $1,572 | |
| 5 | Martin Sommer | Paris | Aug 04, 2017 | • Delivered | $580 | |


Be the first to Review this product
0"> {{ reviewPercent }}% OF REVIEWERS RECOMMEND THIS PRODUCT
{{ item.description }}
{{ reviewPercent }}% OF REVIEWERS RECOMMEND THIS PRODUCT


$mdBottomSheet
opens a bottom sheet over the app and provides a simple promise API.
<md-bottom-sheet>
element.md-grid
class to the bottom sheet for a grid layout.md-list
class to the bottom sheet for a list layout.$mdBottomSheet.show(options);
Show a bottom sheet with the specified options.
object
object
An options object, with the following properties:
templateUrl
- {string=}
: The url of an html template file that will
be used as the content of the bottom sheet. Restrictions: the template must
have an outer md-bottom-sheet
element.template
- {string=}
: Same as templateUrl, except this is an actual
template string.scope
- {object=}
: the scope to link the template / controller to. If none is specified, it will create a new child scope.
This scope will be destroyed when the bottom sheet is removed unless preserveScope
is set to true.preserveScope
- {boolean=}
: whether to preserve the scope when the element is removed. Default is falsecontroller
- {string=}
: The controller to associate with this bottom sheet.locals
- {string=}
: An object containing key/value pairs. The keys will
be used as names of values to inject into the controller. For example,
locals: {three: 3}
would inject three
into the controller with the value
of 3.targetEvent
- {DOMClickEvent=}
: A click's event object. When passed in as an option,
the location of the click will be used as the starting point for the opening animation
of the the dialog.resolve
- {object=}
: Similar to locals, except it takes promises as values
and the bottom sheet will not open until the promises resolve.controllerAs
- {string=}
: An alias to assign the controller to on the scope.parent
- {element=}
: The element to append the bottom sheet to. The parent
may be a function
, string
,
object
, or null. Defaults to appending to the body of the root element (or the root element) of the application.
e.g. angular.element(document.getElementById('content')) or "#content"disableParentScroll
- {boolean=}
: Whether to disable scrolling while the bottom sheet is open.
Default true.promise
A promise that can be resolved with $mdBottomSheet.hide()
or
rejected with $mdBottomSheet.cancel()
.
$mdBottomSheet.hide([response]);
Hide the existing bottom sheet and resolve the promise returned from
$mdBottomSheet.show()
. This call will close the most recently opened/current bottomsheet (if any).
*
*
An argument for the resolved promise.
$mdBottomSheet.cancel([response]);
Hide the existing bottom sheet and reject the promise returned from
$mdBottomSheet.show()
.
*
*
An argument for the rejected promise.


Legacy form field sentiment_very_satisfied Hint
Standard form field sentiment_very_satisfied Hint
Fill form field sentiment_very_satisfied Hint
Outline form field sentiment_very_satisfied Hint


@Target(value={TYPE,METHOD}) @Retention(value=RUNTIME) @Documented @ExtendWith(value=EnabledIfCondition.class) public @interface EnabledIf
@EnabledIf
is used to signal that the annotated test class or test
method is enabled and should be executed if the supplied
expression()
evaluates to true
.
When applied at the class level, all test methods within that class are automatically enabled by default as well.
For basic examples, see the Javadoc for expression()
.
This annotation may be used as a meta-annotation to create
custom composed annotations. For example, a custom
@EnabledOnMac
annotation can be created as follows.
@Target({ ElementType.TYPE, ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) @EnabledIf( expression = "#{systemProperties['os.name'].toLowerCase().contains('mac')}", reason = "Enabled on Mac OS" ) public @interface EnabledOnMac {}
SpringExtension
,
DisabledIf
,
Disabled
| 限定符和类型 | 可选元素和说明 |
|---|---|
java.lang.String |
expression
The expression that will be evaluated to determine if the annotated test
class or test method is enabled.
|
boolean |
loadContext
Whether the
ApplicationContext associated with the current test
should be eagerly loaded in order to evaluate the expression() . |
java.lang.String |
reason
The reason this test is enabled.
|
java.lang.String |
value
|
@AliasFor(value="expression") public abstract java.lang.String value
expression()
@AliasFor(value="value") public abstract java.lang.String expression
If the expression evaluates to Boolean.TRUE
or a String
equal to "true"
(ignoring case), the test will be enabled.
Expressions can be any of the following.
@EnabledIf("#{systemProperties['os.name'].toLowerCase().contains('mac')}")
Environment
— for example:
@EnabledIf("${smoke.tests.enabled}")
@EnabledIf("true")
Note, however, that a text literal which is not the result of
dynamic resolution of a property placeholder is of zero practical value
since @EnabledIf("false")
is equivalent to @Disabled
and @EnabledIf("true")
is logically meaningless.
reason()
,
loadContext()
,
value()
public abstract java.lang.String reason
expression()
public abstract boolean loadContext
ApplicationContext
associated with the current test
should be eagerly loaded in order to evaluate the expression()
.
Defaults to false
so that test application contexts are not
eagerly loaded unnecessarily. If an expression is based solely on system
properties or environment variables or does not interact with beans in
the test's application context, there is no need to load the context
prematurely since doing so would be a waste of time if the test ends up
being disabled.
expression()


Hmm… a bit of a gap there while I did my impersonation of the Sick Man of Europe. In such circumstances, Ms Cradledew invariably recommends Morrison's Liver Pills, or Dr Gillespie's Bile Regulator & Brain Tonic, or some such potion. Upon her return from foreign shores—which is imminent—I shall ask her to provide a short essay expounding upon her knowledge of old patent remedies. But let us get back to business.
*
“I am not writing to wish you a Good New Year. It's futile. Actions are everything.” —Arthur Rimbaud's mother to her daughter, 1906