Filters that Fight Back
August 2003
We may be able to improve the accuracy of Bayesian spam filters by having them follow links to see what's waiting at the other end. Richard Jowsey of death2spam now does this in borderline cases, and reports that it works well.
Why only do it in borderline cases? And why only do it once?
As I mentioned in Will Filters Kill Spam?, following all the urls in a spam would have an amusing side-effect. If popular email clients did this in order to filter spam, the spammer's servers would take a serious pounding. The more I think about this, the better an idea it seems. This isn't just amusing; it would be hard to imagine a more perfectly targeted counterattack on spammers.
So I'd like to suggest an additional feature to those working on spam filters: a "punish" mode which, if turned on, would spider every url in a suspected spam n times, where n could be set by the user. [1]
As many people have noted, one of the problems with the current email system is that it's too passive. It does whatever you tell it. So far all the suggestions for fixing the problem seem to involve new protocols. This one wouldn't.
If widely used, auto-retrieving spam filters would make the email system rebound. The huge volume of the spam, which has so far worked in the spammer's favor, would now work against him, like a branch snapping back in his face. Auto-retrieving spam filters would drive the spammer's costs up, and his sales down: his bandwidth usage would go through the roof, and his servers would grind to a halt under the load, which would make them unavailable to the people who would have responded to the spam.
Pump out a million emails an hour, get a million hits an hour on your servers.
We would want to ensure that this is only done to suspected spams. As a rule, any url sent to millions of people is likely to be a spam url, so submitting every http request in every email would work fine nearly all the time. But there are a few cases where this isn't true: the urls at the bottom of mails sent from free email services like Yahoo Mail and Hotmail, for example.
To protect such sites, and to prevent abuse, auto-retrieval should be combined with blacklists of spamvertised sites. Only sites on a blacklist would get crawled, and sites would be blacklisted only after being inspected by humans. The lifetime of a spam must be several hours at least, so it should be easy to update such a list in time to interfere with a spam promoting a new site. [2]
High-volume auto-retrieval would only be practical for users on high-bandwidth connections, but there are enough of those to cause spammers serious trouble. Indeed, this solution neatly mirrors the problem. The problem with spam is that in order to reach a few gullible people the spammer sends mail to everyone. The non-gullible recipients are merely collateral damage. But the non-gullible majority won't stop getting spam until they can stop (or threaten to stop) the gullible from responding to it. Auto-retrieving spam filters offer them a way to do this.
Would that kill spam? Not quite. The biggest spammers could probably protect their servers against auto-retrieving filters. However, the easiest and cheapest way for them to do it would be to include working unsubscribe links in their mails. And this would be a necessity for smaller fry, and for "legitimate" sites that hired spammers to promote them. So if auto-retrieving filters became widespread, they'd become auto-unsubscribing filters.
In this scenario, spam would, like OS crashes, viruses, and popups, become one of those plagues that only afflict people who don't bother to use the right software.
Notes
[1] Auto-retrieving filters will have to follow redirects, and should in some cases (e.g. a page that just says "click here") follow more than one level of links. Make sure too that the http requests are indistinguishable from those of popular Web browsers, including the order and referrer.
If the response doesn't come back within x amount of time, default to some fairly high spam probability.
Instead of making n constant, it might be a good idea to make it a function of the number of spams that have been seen mentioning the site. This would add a further level of protection against abuse and accidents.
[2] The original version of this article used the term "whitelist" instead of "blacklist". Though they were to work like blacklists, I preferred to call them whitelists because it might make them less vulnerable to legal attack. This just seems to have confused readers, though.
There should probably be multiple blacklists. A single point of failure would be vulnerable both to attack and abuse.
Thanks to Brian Burton, Bill Yerazunis, Dan Giffin, Eric Raymond, and Richard Jowsey for reading drafts of this.


Taxi, Matatus, Danfo: How do you call public transport mini-van in your country?
by Sydney MugerwaAs a new tourist visiting an African country, it might be overwhelming at first. There’s an order to the chaos that is public transport in Africa, whether or not you can see it initially.
Public transport comes in all forms, from buses, mini-buses, Toyota HiAce vans, repurposed trucks, and everything in between. A number of countries label them the generic bus or taxi. A taxi might mean the Uber sort of arrangement or a 14-seater mini-van.
Funmi Oyatogun who identifies herself as a vibrant explorer and travel entrepreneur took the time to draw up an infographic depicting the varied names the minivan takes on depending on which country you’re in.
| 1. Algeria – Taxis collectifs | 28. Liberia – Bus |
| 2. Angola – Candonguiero | 29. Libya – Iveco/Public Bus |
| 3. Benin – Bush taxi | 30. Madagascar – Taxi Be |
| 4. Botswana – Combi | 31. Malawi – Bus |
| 5. Burkina Faso – Bush taxi | 32. Mali – Sotraka |
| 6. Burundi – Bus | 33. Mauritania – Bus |
| 7. Cabo Verde – Aluguer/Yasi | 34. Mauritius – Bus |
| 8. Cameroon – Taxi bus | 35. Morocco – Bus |
| 9. Central African Republic (CAR) – Bus | 36. Mozambique – Chapa |
| 10. Chad – Bush taxi | 37. Namibia – Combi |
| 11. Comoros – Taxi brousse | 38. Niger – Bush taxi |
| 12. Congo, Democratic Republic of the – Foula foula | 39. Nigeria – Danfo |
| 13. Congo, Republic of the – Foula foula | 40. Rwanda – Twegerane |
| 14. Cote d’Ivoire – Gbaka | 41. Sao Tome and Principe |
| 15. Djibouti – Bus | 42. Senegal – Car rapide |
| 16. Egypt – Microbus | 43. Seychelles – Bus |
| 17. Equatorial Guinea – Bus | 44. Sierra Leone – Poda Poda |
| 18. Eritrea – Bus | 45. Somalia – Bus |
| 19. Eswatini (formerly Swaziland) – Taxi bus | 46. South Africa – Taxi |
| 20. Ethiopia – Blue Donkey | 47. South Sudan – Hafla |
| 21. Gabon – Taxi bus | 48. Sudan – Hafla |
| 22. Gambia – Bus | 49. Tanzania – Dala dala |
| 23. Ghana – Trotro/Trosky | 50. Togo – Bush taxi |
| 24. Guinea – Magbana | 51. Tunisia – Louage |
| 25. Guinea-Bissau – Toca Toca | 52. Uganda – Taxi |
| 26. Kenya – Matatu | 53. Zambia – Bus |
| 27. Lesotho – Taxi bus | 54. Zimbabwe – Kombi |


Celebs pour in to celebrate Arpita Khan and Aayush Sharma’s anniversary
by Vedanshi PathakSalman Khan’s sister Arpita Khan Sharma and Aayush Sharma celebrated their fifth wedding anniversary last night. The couple was all smiles as they hosted a big bash at their residence in Mumbai and invited several B-town celebs for the same. Arpita and Aayush have a kid, Ahil, too and the duo dated for long before tying the knot five years back. The party hosted by the duo had the who’s who of Bollywood stepping in looking fabulous and chic in their best attires.
Our lenses snapped Ilulia Vantur, Katrina Kaif, Salman Khan, Sohail Khan, Salim Khan, Helen, Salma Khan, Zaheer Iqbal, Huma Qureshi, Jacqueline Fernandez, Daisy Shah, Sanjay Kapoor, Seema Khan, Shilpa Shetty Kundra, Raj Kundra, Karisma Kapoor, Arbaaz Khan, Georgia Andriani, Arhaan Khan, Amrita Arora Ladakh, Alvira Agnihotri, Atul Agnihotri, and many other celebs at the bash. Check out all the pictures from the bash below…


 They allow you to halt the forward momentum of your car or truck quickly and effectively, ensuring that no matter where you go, you can stop at traffic lights and round corners with ease, all without slamming into the vehicle in front of you. .
How We Can Help
As your partners in automotive care, we service your brakes as thoroughly as possible, conducting a full inspection before determining and fixing the problem.
When servicing your vehicle, we always provide you an upfront summary of everything that needs to be fixed, including a parts and labor cost-breakdown.
Your vehicle repairs are always your choice, and we will never do anything without your consent.
Typically brake problems stem from worn brake pads or rotors. When you stop, your brake pads create friction to help slow your vehicle,
while your rotors disperse heat to prevent your brakes from overheating. Both pieces are essential when it comes to functioning brakes. Fortunately,
if either of these pieces are damaged, we can replace them.
You may also be experiencing brake problems because of low brake fluid.
This fluid is responsible for turning the force you add to your braking system by pushing the pedal into amplified pressure that will actually slow or stop your vehicle.
It also protects the internal metal components of your brakes from corrosion.
However, the most important benefit we offer our customers is our partnership. We treat each vehicle we see like it’s our own, and truly become your partner in automotive care.
Our guests are informed of the repair process every step of the way with thorough and transparent explanations from our Service Team.
Driving Habits and Preventative Maintenance
You can extend the life of your brakes–including pads and rotors–through regular maintenance and by adjusting your driving habits. Be sure to service your brakes as soon as you experience any symptoms and replace your brake fluid as recommended by your vehicle’s manufacturer. Reduce wear and tear by avoiding stop and go traffic and minimizing your vehicle load.
While inspecting your brakes, we check the following:
- - BRAKE PAD THICKNESS
- - CALIPERS
- - BRAKE/HYDRAULIC FLUID (LEVEL AND CONDITION)
- - BRAKE HOSES–THESE WEAR OUT OFTEN, AND NEED TO BE CHECKED REGULARLY FOR WEAR AND TEAR
- - BRAKE HARDWARE
- - ROTOR WEAR


-
ClOUD COMPUTING
Cloud computing is the on-demand availability of computer system resources, especially data storage and computing power, without direct active management by the user.
Cloud computing is a big shift from the traditional way businesses think about IT resources.
Cloud computing is a general term for anything that involves delivering hosted services over the Internet.
These services are broadly divided into three categories: Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS) and Software-as-a-Service (SaaS).
The name cloud computing was inspired by the cloud symbol that's often used to represent the Internet in flowcharts and diagrams.
Learn Subject
Online Course
-
ARTIFICIAL INTELLIGENCE IN FUTURE
Toward Truly Intelligent Artificial Intelligences.
The final goal of artificial intelligence (AI)—that a machine can have a type of general intelligence similar to a
human’s—is one of the most ambitious ever proposed by science.
In terms of difficulty, it is comparable to other great scientific goals, such as explaining the origin of life or the Universe, or discovering the structure of matter.
In recent centuries, this interest in building intelligent machines has led to the invention of models or metaphors of the human brain.
Learn Subject
Online Course
-
THE FUTURE OF BIG DATA
Current usage of the term big data tends to refer to the use of predictive analytics, user behavior analytics,
or certain other advanced data analytics methods that extract value from data, and seldom to a particular size of data set.
Big data refers to data sets that are too large and complex for traditional data processing and data management applications.
Big data became more popular with the advent of mobile technology and the Internet of Things, because people were producing more and more data with their devices.
Consider the data generated by geolocation services, web browser histories, social media activity, or even fitness apps.
The term can also refer to the processes of gathering and analyzing massive amounts of digital information to produce business intelligence
Learn Subject
Online Course


Bankcard
Welcome,
Username
Sign out
Sign in
Sign up
Update account
User info
Add new card
Cards info
Transfer money user -> card
Transfer money card -> card


Eyeful
This application was developed for personal use.
However it has come so far that it deserved to be published.
Feel free to use and/or fork it.
Email me directly at MarwanAlsoltany(at)gmail.com about bugs or suggestions.
Licensed under MIT License.


Before Change
)
key_to_binary_spec = exported_target.provides.binaries
keys = list(key_to_binary_spec.keys())
addresses = await MultiGet(
Get(
Address,
AddressInput,
AddressInput.parse(key_to_binary_spec[key], relative_to=target.address.spec_path),
)
for key in keys
)
binaries = await Get(Targets, Addresses(addresses))
for key, binary in zip(keys, binaries):
After Change
)
key_to_binary_spec = exported_target.provides.binaries
binaries = await Get(
Targets, UnparsedAddressInputs(key_to_binary_spec.values(), owning_address=target.address)
)
for key, binary in zip(key_to_binary_spec.keys(), binaries):
binary_entry_point = binary.get(PythonEntryPoint).value
if not binary_entry_point:


Unit tests can be run using
npm test
This will run karma (the test runner) using the configuration found in karma.conf.js.
The base of this file is generated using the karma-cli which can be found on npm. The one included here tells karma to run tests inside of the phantomjs browser, preprocess test-setup.ts using webpack, report results of tests using the spec reporter, and to watch for file changes.
Phantomjs is a headless web browser commonly used for running tests against javascript code. A headless browser means there is no visible window. Think of it as a web browser that you don't actually see. It just starts a process then runs your site like it was viewed through chrome, or some other browser. Why would we use Phantom? The short answer is speed. Phantomjs will run our tests faster than other browsers. For the most part PhantomJs mimics real browsers well enough that we can use it. It is also nice for running javascript unit tests on CI servers because there is no need to launch and interact with a real browser window.
Preprocessing our typescript is neccessary for a few reasons. The first reason is that browsers don't understand typescript. You could load typescript into a browser, but the browser won't know what to do with it because its not always valid javascript. The other reason we need to preprocess our typescript is because we are taking advantage of node for loading packages, other javascript libraries, and our own components. Browsers don't understand what import '@angular/core' means. Webpack (our preprocessor) knows how to turn that typescript in to javascript that will work in the browser. That is the job of the preprocessor. It takes our typescript and translates it into something the browser can understand and run. This is neccessary because at the end of the day if our application doesn't run in a browser we kind of failed. Our preprocessor is configured using webpack.test.js.
In short wepback.test.js creates the webpack configuration we use for preproccessing our application for testing purposes. When testing we don't need to provide an entry point or minify or uglify our application code. This helps speed up preprocessing. The entry point for the application becomes the files marked with webpack as the preprocessor. In our case the entry point is our src/test-setup.ts file.


Tests whether linear gradients are supported.
If the rectangle is filled with a red-blue linear gradient, the test passes.
Tests whether radial gradients are supported.
If the star is filled with a red-blue radial gradient, the test passes.


Here is a list of all namespace members with links to the namespace documentation for each member:
- m -
- ManFixPSETaskBwd : Gecode::Int::Cumulative , Gecode::Int::Unary
- ManFixPSETaskFwd : Gecode::Int::Unary , Gecode::Int::Cumulative
- ManFixPTaskBwd : Gecode::Int::Cumulative , Gecode::Int::Unary
- ManFixPTaskFwd : Gecode::Int::Unary , Gecode::Int::Cumulative
- ManFlexTaskBwd : Gecode::Int::Cumulative , Gecode::Int::Unary
- ManFlexTaskFwd : Gecode::Int::Cumulative , Gecode::Int::Unary
- manpost() : Gecode::Int::Cumulative , Gecode::Int::Unary
- mark() : Gecode::Support
- marked() : Gecode::Support
- MatchType : Test
- matsym1 : Test::LDSB
- matsym2 : Test::LDSB
- matsym3 : Test::LDSB
- matsym4 : Test::LDSB
- max() : Gecode , Gecode::Float::Limits , Gecode::Int::Limits , Gecode::Set::Limits , Gecode
- max_max : Test::Int::MiniModelArithmetic
- max_med : Test::Int::MiniModelArithmetic
- max_min : Test::Int::MiniModelArithmetic
- max_nary : Test::Float::Arithmetic , Test::Int::MiniModelArithmetic
- max_s_nary : Test::Float::Arithmetic
- max_xxx_a : Test::Float::Arithmetic
- max_xxx_b : Test::Float::Arithmetic
- max_xxx_c : Test::Float::Arithmetic
- max_xxy_a : Test::Float::Arithmetic
- max_xxy_b : Test::Float::Arithmetic
- max_xxy_c : Test::Float::Arithmetic
- max_xyx_a : Test::Float::Arithmetic
- max_xyx_b : Test::Float::Arithmetic
- max_xyx_c : Test::Float::Arithmetic
- max_xyy_a : Test::Float::Arithmetic
- max_xyy_b : Test::Float::Arithmetic
- max_xyy_c : Test::Float::Arithmetic
- max_xyz_a : Test::Float::Arithmetic
- max_xyz_b : Test::Float::Arithmetic
- max_xyz_c : Test::Float::Arithmetic
- maxAutoZoomScale : Gecode::Gist::LayoutConfig
- MaximizeScript : Gecode
- MaximizeSpace : Gecode
- MaxPropStatus : Gecode::Int::Arithmetic , Gecode::Float::Arithmetic
- maxScale : Gecode::Gist::LayoutConfig
- MaybeType : Test::Float
- ME_BOOL_FAILED : Gecode::Int
- ME_BOOL_NONE : Gecode::Int
- ME_BOOL_VAL : Gecode::Int
- me_failed() : Gecode
- ME_FLOAT_BND : Gecode::Float
- ME_FLOAT_FAILED : Gecode::Float
- ME_FLOAT_NONE : Gecode::Float
- ME_FLOAT_VAL : Gecode::Float
- ME_GEN_ASSIGNED : Gecode
- ME_GEN_FAILED : Gecode
- ME_GEN_NONE : Gecode
- ME_INT_BND : Gecode::Int
- ME_INT_DOM : Gecode::Int
- ME_INT_FAILED : Gecode::Int
- ME_INT_NONE : Gecode::Int
- ME_INT_VAL : Gecode::Int
- me_modified() : Gecode
- ME_SET_BB : Gecode::Set
- ME_SET_CARD : Gecode::Set
- ME_SET_CBB : Gecode::Set
- ME_SET_CGLB : Gecode::Set
- ME_SET_CLUB : Gecode::Set
- ME_SET_FAILED : Gecode::Set
- ME_SET_GLB : Gecode::Set
- ME_SET_LUB : Gecode::Set
- ME_SET_NONE : Gecode::Set
- ME_SET_VAL : Gecode::Set
- member() : Gecode
- min() : Gecode , Gecode::Float::Limits , Gecode::Int::Limits , Gecode::Set::Limits , Gecode
- min_max : Test::Int::MiniModelArithmetic
- min_med : Test::Int::MiniModelArithmetic
- min_min : Test::Int::MiniModelArithmetic
- min_nary : Test::Int::MiniModelArithmetic , Test::Float::Arithmetic
- min_s_nary : Test::Float::Arithmetic
- min_xxx_a : Test::Float::Arithmetic
- min_xxx_b : Test::Float::Arithmetic
- min_xxx_c : Test::Float::Arithmetic
- min_xxy_a : Test::Float::Arithmetic
- min_xxy_b : Test::Float::Arithmetic
- min_xxy_c : Test::Float::Arithmetic
- min_xyx_a : Test::Float::Arithmetic
- min_xyx_b : Test::Float::Arithmetic
- min_xyx_c : Test::Float::Arithmetic
- min_xyy_a : Test::Float::Arithmetic
- min_xyy_b : Test::Float::Arithmetic
- min_xyy_c : Test::Float::Arithmetic
- min_xyz_a : Test::Float::Arithmetic
- min_xyz_b : Test::Float::Arithmetic
- min_xyz_c : Test::Float::Arithmetic
- MinimizeScript : Gecode
- MinimizeSpace : Gecode
- minScale : Gecode::Gist::LayoutConfig
- minus_max : Test::Int::MiniModelArithmetic
- minus_med : Test::Int::MiniModelArithmetic
- minus_min : Test::Int::MiniModelArithmetic
- mll() : Gecode::Int::Arithmetic
- mod() : Gecode
- mod_max : Test::Int::MiniModelArithmetic
- mod_med : Test::Int::MiniModelArithmetic
- mod_min : Test::Int::MiniModelArithmetic
- ModEvent : Gecode
- ModEventDelta : Gecode
- mpfr_func : Gecode::Float
- MPS_ASSIGNED : Gecode::Float::Arithmetic , Gecode::Int::Arithmetic
- MPS_NEW_BOUND : Gecode::Float::Arithmetic , Gecode::Int::Arithmetic
- MPS_REMOVED : Gecode::Float::Arithmetic , Gecode::Int::Arithmetic
- MT_ANY : Test
- MT_FALSE : Test::Float
- MT_FIRST : Test
- MT_MAYBE : Test::Float
- MT_NOT : Test
- MT_TRUE : Test::Float
- mul_check() : Gecode::Int::Cumulative
- mult() : Gecode
- mult_max : Test::Int::MiniModelArithmetic
- mult_med : Test::Int::MiniModelArithmetic
- mult_min : Test::Int::MiniModelArithmetic
- mult_xxx_a : Test::Float::Arithmetic
- mult_xxx_b : Test::Float::Arithmetic
- mult_xxx_c : Test::Float::Arithmetic
- mult_xxy_a : Test::Float::Arithmetic
- mult_xxy_b : Test::Float::Arithmetic
- mult_xxy_c : Test::Float::Arithmetic
- mult_xxy_sol_a : Test::Float::Arithmetic
- mult_xxy_sol_b : Test::Float::Arithmetic
- mult_xxy_sol_c : Test::Float::Arithmetic
- mult_xyx_a : Test::Float::Arithmetic
- mult_xyx_b : Test::Float::Arithmetic
- mult_xyx_c : Test::Float::Arithmetic
- mult_xyy_a : Test::Float::Arithmetic
- mult_xyy_b : Test::Float::Arithmetic
- mult_xyy_c : Test::Float::Arithmetic
- mult_xyz_a : Test::Float::Arithmetic
- mult_xyz_b : Test::Float::Arithmetic
- mult_xyz_c : Test::Float::Arithmetic
- mult_xyz_sol_a : Test::Float::Arithmetic
- mult_xyz_sol_b : Test::Float::Arithmetic
- mult_xyz_sol_c : Test::Float::Arithmetic


Bafana Coach: I Was Scared Watching Wits Vs SSU
by Soccer LadumaBafana Bafana head coach, Molefi Ntseki explained why he was scared for two of his players whilst watching them in action in the Absa Premiership.
Ntseki explained that he was present at the Bidvest Stadium on Friday night to watch Bidvest Wits in action against SuperSport United, where he took note of the physical aggression between Bradley Grobler and Thulani Hlatshwayo, with concern about a risk of injury.
However, being the sportsmen that they are, they both managed to put the incident behind them and focus on the national team.
Read more: Rulani Takes Another Dig At Chiefs?
“I was at Wits vs SuperSport on the weekend and I was scared to be honest with you, the tussle, the fight, the duels, the physical aggression that we say between Tyson and Bradley, I hoped that they didn’t hurt each other because we really need them for the two matches, but being sportsmen and professionals, they conducted themselves very well and they ended the game without exchanging blows and we have both of them here in camp,” Ntseki said.
Bafana will lock horns with Ghana on Thursday in their opening Africa Cup Of Nations qualifier.


Zend Framework
LICENSE
This source file is subject to the new BSD license that is bundled with this package in the file LICENSE.txt. It is also available through the world-wide-web at this URL: http://framework.zend.com/license/new-bsd If you did not receive a copy of the license and are unable to obtain it through the world-wide-web, please send an email to<EMAIL_ADDRESS>so we can send you a copy immediately.
array
$_data= 'array'
Internal array containing all data associated with this entry or item.
array
Details__call(
string $method, array $args
)
:
mixed
Method overloading: call given method on first extension implementing it
| Name | Type | Description |
|---|---|---|
| $method | string | |
| $args | array |
| Type | Description |
|---|---|
| mixed |
| Exception | Description |
|---|---|
| \Zend_Feed_Exception | if no extensions implements the method |
__construct(
)
:
void
Constructor: Primarily triggers the registration of core extensions and loads those appropriate to this data container.
addAuthor(
$name, $email
=
null, $uri
=
null
)
:
string|null
Set a single author
| Name | Type | Description |
|---|---|---|
| $name | ||
| $uri |
| Type | Description |
|---|---|
| stringnull |
addAuthors(
$authors
)
:
array
Set an array with feed authors
| Name | Type | Description |
|---|---|---|
| $authors |
| Type | Description |
|---|---|
| array |
addCategories(
array $categories
)
:
void
Set an array of entry categories
| Name | Type | Description |
|---|---|---|
| $categories | array |
addCategory(
string $category
)
:
void
Add a entry category
| Name | Type | Description |
|---|---|---|
| $category | string |
createSource(
)
:
\Zend_Feed_Writer_Source
Creates a new Zend_Feed_Writer_Source data container for use. This is NOT added to the current feed automatically, but is necessary to create a container with some initial values preset based on the current feed data.
| Type | Description |
|---|---|
| \Zend_Feed_Writer_Source |
getCommentCount(
)
:
integer
Get the number of comments/replies for current entry
| Type | Description |
|---|---|
| integer |
getCommentFeedLinks(
)
:
string
Returns an array of URIs pointing to a feed of all comments for this entry where the array keys indicate the feed type (atom, rss or rdf).
| Type | Description |
|---|---|
| string |
getCommentLink(
)
:
string
Returns a URI pointing to the HTML page where comments can be made on this entry
| Type | Description |
|---|---|
| string |
getEnclosure(
)
:
array
Retrieve an array of all enclosures to be added to entry.
| Type | Description |
|---|---|
| array |
getExtension(
string $name
)
:
object
Return an Extension object with the matching name (postfixed with _Entry)
| Name | Type | Description |
|---|---|---|
| $name | string |
| Type | Description |
|---|---|
| object |
getType(
)
:
string
Retrieve the current or last feed type exported.
| Type | Description |
|---|---|
| string | Value will be "rss" or "atom" |
remove(
string $name
)
:
void
Unset a specific data point
| Name | Type | Description |
|---|---|---|
| $name | string |
setCommentCount(
$count
)
:
string|null
Set the number of comments associated with this entry
| Name | Type | Description |
|---|---|---|
| $count |
| Type | Description |
|---|---|
| stringnull |
setCommentFeedLink(
$link
)
:
string|null
Set a link to an XML feed for any comments associated with this entry
| Name | Type | Description |
|---|---|---|
| $link |
| Type | Description |
|---|---|
| stringnull |
setCommentFeedLinks(
$links
)
:
string|null
Set a links to an XML feed for any comments associated with this entry.
Each link is an array with keys "uri" and "type", where type is one of: "atom", "rss" or "rdf".
| Name | Type | Description |
|---|---|---|
| $links |
| Type | Description |
|---|---|
| stringnull |
setCommentLink(
$link
)
:
string|null
Set a link to a HTML page containing comments associated with this entry
| Name | Type | Description |
|---|---|---|
| $link |
| Type | Description |
|---|---|
| stringnull |
setContent(
$content
)
:
string|null
Set the entry's content
| Name | Type | Description |
|---|---|---|
| $content |
| Type | Description |
|---|---|
| stringnull |
setCopyright(
$copyright
)
:
string|null
Set the copyright entry
| Name | Type | Description |
|---|---|---|
| $copyright |
| Type | Description |
|---|---|
| stringnull |
setDateCreated(
$date
=
null
)
:
string|null
Set the feed creation date
| Name | Type | Description |
|---|---|---|
| $date |
| Type | Description |
|---|---|
| stringnull |
setDateModified(
$date
=
null
)
:
string|null
Set the feed modification date
| Name | Type | Description |
|---|---|---|
| $date |
| Type | Description |
|---|---|
| stringnull |
setDescription(
$description
)
:
string|null
Set the feed description
| Name | Type | Description |
|---|---|---|
| $description |
| Type | Description |
|---|---|
| stringnull |
setEnclosure(
$enclosure
)
:
void
Adds an enclosure to the entry. The array parameter may contain the keys 'uri', 'type' and 'length'. Only 'uri' is required for Atom, though the others must also be provided or RSS rendering (where they are required) will throw an Exception.
| Name | Type | Description |
|---|---|---|
| $enclosure |
setEncoding(
$encoding
)
:
string|null
Set the feed character encoding
| Name | Type | Description |
|---|---|---|
| $encoding |
| Type | Description |
|---|---|
| stringnull |
setId(
$id
)
:
string|null
Set the feed ID
| Name | Type | Description |
|---|---|---|
| $id |
| Type | Description |
|---|---|
| stringnull |
setLink(
$link
)
:
string|null
Set a link to the HTML source of this entry
| Name | Type | Description |
|---|---|---|
| $link |
| Type | Description |
|---|---|
| stringnull |
setSource(
\Zend_Feed_Writer_Source $source
)
:
void
Appends a Zend_Feed_Writer_Entry object representing a new entry/item the feed data container's internal group of entries.
| Name | Type | Description |
|---|---|---|
| $source | \Zend_Feed_Writer_Source |
setTitle(
$title
)
:
string|null
Set the feed title
| Name | Type | Description |
|---|---|---|
| $title |
| Type | Description |
|---|---|
| stringnull |


Last Thursday emerce organised their own ADE and we were part of it! Where are you gonna party tonight? #ADE#tbt #enight #tamtam #dog #hond #black #brown #tammo
Tam Tam is a full service digital agency focusing on Dutch Digital Service Design. We combine strategy, design, technology and interaction to make the digital interactions between company and customer valuable and memorable. We work for awesome brands with a team of 120 digitals from our office in Amsterdam. Making great work and having a blast doing it. That’s what we believe in.
Last Thursday emerce organised their own ADE and we were part of it! Where are you gonna party tonight? #ADE#tbt #enight #tamtam #dog #hond #black #brown #tammo
We're feeling happier and happier thanks to these nice dutch flowers we received from Florensis! #holland #flowers #doordebloemenofficenietmeerzien #settingthebloemetjesoutside
We are VERY VERY happy with our Silver Lovie Award and People's Lovies Winner for the Docters without borders website! #lovies #tamtamhome #proud #celebration
Thanks @radio538 and @maxpinas for bringing us friday beats with our brand new #marshall speakers! #friyay #gift #speaker #tamtamhome
Friyay! Coffee anyone? #almostweekend #tamtamhome #koffiemax #latteart #lekker #warm #winter #honger #zon #skyline
TamTam Talks Search Edition! First edition with our new colleagues from Expand Online👌💪🏻 #tamtamhome #tttalks #breakfast #search


20
Constants, variables, and nodes can be represented by
yylval
in the parser’s value stack. A more
accurate representation of decimal integers is given below. This is similar to C/C++ where integers
that begin with 0 are classified as octal.
0
{
yylval.iValue = atoi(yytext);
return INTEGER;
}
[1-9][0-9]* {
yylval.iValue = atoi(yytext);
return INTEGER;
}
Notice the type definitions
%token <iValue> INTEGER
%type <nPtr> expr
This binds
expr
to
nPtr
, and
INTEGER
to
iValue
in the
YYSTYPE
union. This is required so that
yacc can generate the correct code. For example, the rule
expr: INTEGER { $$ = con($1); }
should generate the following code. Note that
yyvsp[0]
addresses the top of the value stack, or
the value associated with
INTEGER
.
yylval.nPtr = con(yyvsp[0].iValue);
The unary minus operator is given higher priority than binary operators as follows:
%left GE LE EQ NE '>' '<'
%left '+' '-'
%left '*' '/'
%nonassoc UMINUS
The
%nonassoc
indicates no associativity is implied. It is frequently used in conjunction with
%prec
to specify precedence of a rule. Thus, we have
expr: '-' expr %prec UMINUS { $$ = node(UMINUS, 1, $2); }
indicating that the precedence of the rule is the same as the precedence of token
UMINUS
. And
UMINUS
(as defined above) has higher precedence than the other operators. A similar technique
is used to remove ambiguity associated with the if-else statement (see If-Else Ambiguity).
The syntax tree is constructed bottom-up allocating the leaf nodes when variables and integers are
reduced. When operators are encountered a node is allocated and pointers to previously allocated
nodes are entered as operands.
After the tree is built function
ex
is called to do a depth-first walk of the syntax tree. A depth-first
walk visits nodes in the order that they were originally allocated. This results in operators being
applied in the order that they were encountered during parsing. Three versions of
ex
are included:
an interpretive version, a compiler version, and a version that generates a syntax tree.


This is hosting site for CCTC Slides.
To access the material for your module, please use the following links:


Use the current system time in an animation sequence
The starter program animates a single, red firework.
Change the color of the firework, where it is declared in the setup() function:
void setup()
{
size(SCREEN_WIDTH, SCREEN_HEIGHT);
smooth();
firework = new Firework(400, 1, 3, color(255,0,0));
}
Remember that the color code is an RGB value where RGB means "Red Green Blue".
Create some more fireworks in the setup function above and don't forget to draw them all in the draw() function.
The comments in the code for Firework tell you have to create one:
// Create firework
// x starting position: Must be between 0 and SCREEN_WIDTH
// lightTime: Time in seconds at which the fuse is lit
// fuseTime: Time in seconds for which the fuse burns
// explosion: Color of the firework explosion
Firework(int x, int lightTime, int fuseTime, color explosionColor)
You could use random locations for the start position and color, but set either the lightTime or the fuseTime to set off one per second.
You will need to adjust x as well as y while the firework is launching. Perhaps you could use sin and cos functions if you know the maths...


Home
Sign up
Profile
Posts
Home
Sign up
Profile
Posts
menu
Write article
Close
cancel
title
Post title
mode_edit
Post body
Attach Picture
Post
comment
REGISTER
Login
Password
Email
Register
check
LOGIN
account_circle
Login
lock
Password
Register
how_to_reg
SEARCH
subdirectory_arrow_right
Autocomplete article search
Search
search
POSTS
I am a very simple card. I am good at containing small bits of information.
This is a link
I am a very simple card. I am good at containing small bits of information.
This is a link
I am a very simple card. I am good at containing small bits of information.
This is a link
USERS
Alvin
Alvin
Alvin
Alvin
mode_edit


Inno3D Reveals New Gaming OC X2 & Twin X2 OC RGB GPUs
by Mike SandersIf you’re currently in the market for a brand new graphics card that offers solid levels of performance but at a price that’s not too terrible on the bank balance, then it’s hard at present to look past the 1660 or 2060 GPUs from the Nvidia range.
As you may have noticed, however, these have been recently given something of an additional boost with the release of the ‘Super‘ variants. The most recent being the 1660 platform that was treated to this ‘enhanced’ release earlier this week.
If you are, therefore, looking at any one of these graphics cards, then Inno3D might have the perfect solution for you. Announcing a wide new range of Gaming OC X2 & Twin X2 OC RGB graphics cards, there’s something to suit all needs here!
Inno3D Gaming OC X2 & Twin X2 OC RGB Graphics Cards
The new range of graphics cards features options from both the Super and non-Super variants of the Nvidia 1660/2060 releases. With around 10 new graphics cards released in total, there really is a huge selection on offer here!
What Does Inno3D Have to Say?
“When you choose to power your favourite titles with INNO3D GeForce GTX or RTX series, you will appreciate the sheer power of the unique cooling designs assisted with the twin large fan blades (10cm for Gaming OC X2 and 9cm for TWIN X2 OC RGB) to power through your games to experience absolute realism with games coming to life with super-fast ray tracing. Ray tracing delivers physical accurate shadows, reflections, and lighting. And tap into Tensor Cores for super-powerful AI-processing. Advanced memory, performance boosts, and processing technologies are your super powers to tackle your favourite titles.”
When Are They Out?
With the range now formally being revealed, we can expect these brand new graphic card releases to start hitting retail shelves within the coming weeks.
With around 10 GPUs released, we don’t want to flood you with specific details on each model. Put simply, there’s too much information for that and we don’t want to tell you stuff you don’t want to know! – For more details about the specific releases, however, you can check out the official Inno3D website via the link here!
How Much Do They Cost?
At the time of writing, no prices have been confirmed for this new range of graphics cards from Inno3D. Based on current market values, however, we can likely expect the following:
- 1660 – £190-240
- 1660 Super – £220-260
- 2060 – £200-250
- 2060 Super – £240-£300
We will look to update these figures as soon as we get some retail confirmation on these specific Inno3D releases. As above though, if you are in the market for a new Nvidia graphics cards, be sure to keep this range in mind. There’s bound to be a solution to suit your performance, aesthetic and budgetary needs here!
What do you think? – Let us know in the comments!


{include file="public/css" /} {include file="public/js" /}
{include file="public/header1" /} {include file="public/header2" /}
{include file="public/menu_r" /}
首页
管理营销
企业余额
企业充值
充值到企业余额 剩余：
{$company.company_money}
元
充值方式：
充值金额：
请输入充值金额
{include file="public/footer1" /} {include file="public/footer2" /} {include file="public/js_1" /}


{% extends 'base.html' %} {% block title %}Home{% endblock %} {% block content %} We track bugs for you so you don't have to Managing bugs has been overlooked for the longest time. Tired of it? Me too. {% if user.is_authenticated %} Hi {{ user.username|title }}! Time to take a look at those bugs Bug List {% comment %} logout {% endcomment %} {% comment %} reset password {% endcomment %} {% else %} You are not logged in login Don't have an account? Create an account Forgot Password {% endif %} {% endblock %}
Managing bugs has been overlooked for the longest time. Tired of it? Me too.
Time to take a look at those bugs
Bug List
logout
reset password
You are not logged in
Don't have an account? Create an account


With out always updating program, our customers can browse the internet with ease. Any download files will be checked before they can infect anything on your computer.
Since opening emails can be dangerous nowdays, our program will scan for any emails that contain malware, viruses, or anything that can damage your data.
With built in browser support, T&L will prevent you from going to any dangerous websites.
Windows platforms are some of the most effected platforms. T&L Security will keep Windows running fresh and clean.
Many users with OSX think they can't be effected by virues. Many times this has been proven wrong, but with T&L Security, this will stay true.
Even Linux computers can be infected with malware and virus. With out program, we will put an end to any harm they can do to our customers.
The security platform was made by Tyler Lyczak, an aspiring programmer at the University of Illinois at Chicago. It was his main project and with him coding it himself, it was challenging.
As the project got more serious, Tyler reached out to many programmers online to help him. Since new viruses were being released everyday, having a team made patching fairly easy. From there, the company was started with many user joining. They decided to name the company T&L Security.
As the team assembled under a name, they released it to the public with great reception. People loved the customizability of the software, making it gain a lot of popularity.
As T&L Security started to expand and gain many users, the team also expanded. With this expansion, we saw many new features added to the program, like a disk cleaner and cookie cleaner.
T&L Security grew so much over the years. We were able to add a data storage warehouse, allowing our user to backup data while keeping it very secured. Companies, such as Norton Security, sought out to buy T&L Security. Instead of this, we want to dedicate our service to our customers because they see something in us that other companies do not have. We appreciate it.
Lead Designer
Lead Marketer
Lead Developer
Team memebers are always expanding, contact us to join!


Home
Menu
Contact
Menu
Chapter 1
Tea Origins
Chapter 2
Milk Tea Symphony
Chapter 3
Fruit Tea Adventure


{% extends "base.html" %} {% block title %}Registration successful{% endblock %} {% block content %}
Thank you for registering. You will receive an email shortly with instruction for activating your account.


|
MISA++ Core
1.0.0
MISA++ core library
|
Functions | |
| bool | requested_skipping () |
| int | get_num_threads () |
| bool | is_simulating () |
| bool | is_running () |
| std::shared_ptr< misa_work_node > | get_root_node () |
| misa_filesystem | get_root_filesystem () |
| misa_module_info | get_module_info () |
| misa_module_info misaxx::runtime_properties::get_module_info | ( | ) |
Returns the module information that was attached to the runtime
| int misaxx::runtime_properties::get_num_threads | ( | ) |
Returns the number of threads
| misa_filesystem misaxx::runtime_properties::get_root_filesystem | ( | ) |
Returns the filesystem of the root module Please note that the root module is usually misa_multiobject_root.
| std::shared_ptr<misa_work_node> misaxx::runtime_properties::get_root_node | ( | ) |
Returns the root node of the worker tree
| bool misaxx::runtime_properties::is_running | ( | ) |
Returns true if the runtime is currently working
| bool misaxx::runtime_properties::is_simulating | ( | ) |
If true, the runtime is in simulation mode and no actual work should be done
| bool misaxx::runtime_properties::requested_skipping | ( | ) |
Returns true if the runtime is set to request skipping as much work as possible


{% extends "layout.html" %} {% block body %}
Coronavirus disease 2019 (COVID-19) is an infectious disease caused by severe acute respiratory syndrome coronavirus 2 (SARS-CoV-2). The disease was first identified in 2019 in Wuhan, China, and has since spread globally, resulting in the 2019–20 coronavirus pandemic. Common symptoms include fever, cough and shortness of breath. Muscle pain, sputum production and sore throat are less common. The rate of deaths per number of diagnosed cases is on average 3.4%, ranging from 0.2% in those less than 20 to approximately 15% in those over 80 years old.


Syllabus
Excerpts of Fall 2021 syllabus from STA 199: Introduction to Data Science at Duke University
Course Learning Objectives
By the end of the semester, you will…
- learn to explore, visualize, and analyze data in a reproducible and shareable manner
- gain experience in data wrangling and munging, exploratory data analysis, predictive modeling, and data visualization work on problems and case studies inspired by and based on real-world questions and data
- learn to effectively communicate results through written assignments and final project presentation
Textbooks
All books are freely available online. Hardcopies are also available for purchase.
| R for Data Science | Grolemund, Wickham | O’Reilly, 1st edition, 2016 |
| Introduction to Modern Statistics | Çetinkaya-Rundel, Hardin | OpenIntro Inc., 1st Edition, 2021 |
Course community
Inclusive community
It is my intent that students from all diverse backgrounds and perspectives be well-served by this course, that students’ learning needs be addressed both in and out of class, and that the diversity that the students bring to this class be viewed as a resource, strength, and benefit. It is my intent to present materials and activities that are respectful of diversity and in alignment with Duke’s Commitment to Diversity and Inclusion. Your suggestions are encouraged and appreciated.
Accessibility
If there is any portion of the course that is not accessible to you due to challenges with technology or the course format, please let me know so we can make appropriate accommodations.
The Student Disability Access Office (SDAO) is available to ensure that students are able to engage with their courses and related assignments. Students should be in touch with the Student Disability Access Office to request or update accommodations under these circumstances.
Communication
All lecture notes, assignment instructions, an up-to-date schedule, and other course materials may be found on the course website.
Announcements will be emailed through Sakai Announcements periodically. Please check your email regularly to ensure you have the latest announcements for the course.
Activities & Assessment
Labs
In labs, you will apply the concepts discussed in lecture to various data analysis scenarios, with a focus on the computation.
Homework
In homework, you will apply what you’ve learned during lecture and lab to complete data analysis tasks.
Exams
There will be two, take-home, open-note exams. Through these exams you have the opportunity to demonstrate what you’ve learned in the course thus far.
Final Project
The purpose of the final project is to apply what you’ve learned throughout the semester to analyze an interesting data-driven research question.
Grading
The final course grade will be calculated as follows:
| Category | Percentage |
|---|---|
| Homework | 30% |
| Labs | 15% |
| Final Project | 15% |
| Exam 01 | 17.5% |
| Exam 02 | 17.5% |
| In-class exercises | 5% |
Course policies
Academic honesty
TL;DR: Don’t cheat!
Please abide by the following as you work on assignments in this course:
- You may discuss individual homework and lab assignments with other students; however, you may not directly share (or copy) code or write up with other students. For team assignments, you may collaborate freely within your team. You may discuss the assignment with other teams; however, you may not directly share (or copy) code or write up with another team. Unauthorized sharing (or copying) of the code or write up will be considered a violation for all students involved.
- You may not discuss or otherwise work with others on the exams.
- Reusing code: Unless explicitly stated otherwise, you may make use of online resources (e.g. StackOverflow) for coding examples on assignments. If you directly use code from an outside source (or use it as inspiration), you must explicitly cite where you obtained the code. Any recycled code that is discovered and is not explicitly cited will be treated as plagiarism.
Late work & extensions
The due dates for assignments are there to help you keep up with the course material and to ensure the teaching team can provide feedback within a timely manner. We understand that things come up periodically that could make it difficult to submit an assignment by the deadline. Note that the lowest homework and lab assignment will be dropped to accommodate such circumstances.
Important dates
Aug 23: Classes begin
Sep 3: Drop/add ends
Oct 4-5: Fall break
Nov 5: Last day to withdraw with W
Nov 24-26: Thanksgiving recess
Dec 3: Classes end
Dec 4-7: Reading period
Dec 8-13: Final exams


WITNESS LIST
Finance
February 13, 2013 9:00 AM
FOR:
Anderson, Gary Executive Director (also providing written testimony) (Texas Public
Employees Association), Austin, TX
Renaud, Jorge Policy Analyst (Tx. Criminal Justice Coalition), Austin
ON:
Berry, Dr. Richard "Ric" Provost and Vice President for Academic Affairs (Stephen F.
Austin State University), Nacogdoches, TX
Blount, Elizabeth retired (also providing written testimony) (Retired State Employees
Association), Austin
Borgstedte, Amy LBB Staff (also providing written testimony) (LBB)
Cole, Celia CEO (also providing written testimony) (Texas Food Bank Network), Austin,
TX
Cunningham, Leslie Retired state employee (Myself and Texas State Employees Union
Retiree Committee), Austin, TX
Gallant, Danny Vice President for Finance and Administration (Stephen F. Austin State
University), Nacogdoches, TX
Jones, Jennifer LBB Staff (LBB)
Jones, Paula Acting Executive Director (also providing written testimony) (Employees
Retirement System), Austin, TX
McCulloch, Ben LBB Staff (LBB)
Morganti, Emily LBB Staff (also providing written testimony) (LBB)
Newton, John LBB Staff (also providing written testimony) (LBB)
Osobase, Derrick Legislative Director (Texas State Employees Union)
Pattillo, Dr. Baker President (also providing written testimony) (Stephen F. Austin State
University), Nacogdoches, TX
Pool, Jeff LBB Staff (also providing written testimony) (LBB)
Staples, Todd TX Ag Commissioner (also providing written testimony) (Texas Department
of Agriculture), Austin, TX
Villanueva, Chandra Policy Analyst (Center for Public Policy Priorities), Austin
Wiles, Mark LBB Staff (also providing written testimony) (LBB)
Wood, Brandon S. Executive Director (also providing written testimony) (Commission on
Jail Standards), Austin, TX
Registering, but not testifying:
FOR:
Chandler, Gary Texas Highway Patrol Sergeant (Texas Department of Public Safety
DPSOA), Austin, TX
Taylor, Clay Texas Highway Patrol Trooper (Dept. of Public Safety Officers Association),
Austin, TX
Valls, Rodney Staff Services Officer (Jail Standards Commission), Austin, TX
ON:
Aleshire, Mary Independent Filmmaker (Employees Retirement System myself)
DeBerry, Drew Deputy Commissioner (TX Dept. of Ag), Austin, TX
Herklotz, Shannon Assistant Director (Tx. Comm. Jail Standards), Austin, TX
WITNESS LIST
Finance
February 13, 2013 9:00 AM
Peterson, Heather Griffith Chief Financial Officer (TDA)
Rusing, Shannon Chief of Staff (Texas Dept of Agriculture), Austin, TX
Providing written testimony:
FOR:
Beck, Dan R Retired (Tx Retired Pub Empe Council)
ON:
Yanez-Correa, Dr. Ana Executive Director (Texas Criminal Justice Coalition), Austin, TX


{% include fullsizebox.html
title="Frequent Webmeetings"
description="Best entry point to the community probably is our *Adopters’ meeting* on the last Wednesday of each uneven month. The meeting is at 3pm UTC at (password: welcome). An agenda for this meeting is usually announced a few days before the meeting on the mailing-lists.
There is also a german-speaking *Adopters’ meeting* on the last Wednesday of every even month (February, April, June, August, October). The meeting is at 15:00 CEST at (password: welcome). An agenda for this meeting is usually announced a few days before the meeting on the german-speaking mailing-lists.
There is also a weekly *technical meeting* for developers and sysops on Tuesdays at 3pm UTC on (password: welcome). An agenda is also announced before the meeting on the developers’ mailing-lists."
image="assets/img/bbb-conf.png"
align="left"
backgroundcolor=site.data.colors.box
imagewidth="40%"
%}


parseFlags ()
documon/src/parseFlag.js
192
Fills the output object with the following properties (if they exist)
object { source // Entire first line inlcuding the @flag (only first line) after // Everything after the @flag name // One word following {type}. Or first word after the @flag definition when no {type}. children // name.kid - Array of children parent // if am a child, this is my parent. flag // @flag token with @ stripped defaultVal // name=val afterType // first line after text // }
Here's an expanded and exmple'd definition list
- source
- The entire comment block
- after
- Everything after the @flag token "as is" (kinda like source)
- source : The entire comment block
after : Everything after the @flag token "as is" (kinda like source)
e.g. in this line:


Taking Your Qualifications to where it matters
No need to Print Results Slips, We have gone digital.
User Login
Remember Me
Sign me in
Not a member yet? Click
here
to register.
© E - Verify Admin All Right Reserved 2018


User Management
User List
Category Management
Add Top Category
Category List
Category List Treeview
Product Management
Product List
Product Add
Product Search
Product Delete
Product Sales
Order Management
Order List


PyCon Taiwan 2017 is a paid conference. Everybody, including staffs and speakers, pays for attending (see PyCon: Everybody Pays).
{% extends 'contents/_base/registration.html' %} {% block title %}Ticket Info{% endblock title %} {% block page_title %}
Invoice will be donated to the Open Culture Foundation. A discount is thus offered to appreciate your donation.
Provide company name and Unified Business Number, or N/A if reimbursement is not required. An electronic receipt will be sent via email.
We sincerely invite you as a special guest to join us at the conference. Please provide your invitation code on checkout.
- Tickets provide access to the main conference during 9–11 June. Please refer to their own pages for tutorial and sprint registrations.
- Early bird ticket sales end on 30 April, or upon sold out. All ticket sales end on 19 May, 2017.
- All price settled in New Taiwan Dollars (NTD); NTD 30.35 = USD 1.00 (TBD).
- Company Unified Business Number will be present on receipts for those who require reimbursement. Contact organizers[at]pycon.tw for English receipt requests, or any questions regarding ticket sales.
Every registered participant will receive a souvenir T-shirt. Please check your size according to the following table: (unit in centermeters)
| Size | XS | S | M | L | XL | 2XL | 3XL |
|---|---|---|---|---|---|---|---|
| Height | Under 150 | 150–160 | 160–170 | 170–180 | Above 180 | ||
| Chest Width | 44.5 | 47 | 49.5 | 52 | 54.5 | 57 | 59.5 |
| Back Length | 62 | 63.5 | 66 | 68.5 | 71 | 73.5 | 73.5 |
PyCon Taiwan 2017 is a paid conference. Everybody, including staffs and speakers, pays for attending (see PyCon: Everybody Pays).
You can pay through credit card, PayPal, or ATM transfer.
There will be no refund once registration is confirmed.
You can contact us for a financial aid if you feel any difficulty affording a ticket and/or other expanses attending the conference. You will need to purchase the ticket before applying. More info about applications can be found here.
We provide lunch during the conference. Please let us know if you have any specific dietary requirements.
Please provide valid means of contact (phone number and email) on purchase, so that we will be able to inform you of any important notices.
Please kindly email to organizers[at]pycon.tw if you have any questions regarding ticket information. We will reply you as soon as possible!
You will be able to verify information about tutorials (annoucement pending) and sprints through the website’s navigation menu.


Licensees
Contact form https://www.gov.uk/gov...
Contact a local school or organisation licensed to offer our national qualifications and modules.
Guidance
Develop the skills, knowledge and confidence you need to be a highly effective senior leader in a school.
You should be in a leadership role with cross-school responsibilities, for example:
You’ll be looking for professional development, but not aspiring to headship at this stage of your career.
Apply with one of the schools or organisations licensed to offer this qualification that matches your needs. Visit their website to find out how the qualification is structured and when it starts. You can contact your preferred licensee to discuss your requirements in more detail.
The normal duration of study is 12 months. Depending on your experience and other commitments, you could complete it in 6 months or it may take a maximum of 18 months.
You’ll need to complete 2 essential modules, 2 further modules of your choice and a final assessment.
Each module requires up to 50 hours of learning, including:
You must complete both of the following modules.
As part of this module, you’ll learn about:
Explore the style of your leadership and find out how you can apply it to your workplace to address school improvements. As part of this module, you’ll learn about:
You need to complete 2 of the following modules as well.
Find out more about what you’ll cover in these study modules .
The NPQSL final assessment is competency based, testing the main competencies that are required for successful senior leadership.
For participants who began before February 2014, the final assessment process includes 2 tasks (Closing the Gap, and Leading a School Improvement Priority). For this, you’ll be expected to use your practical experience, research and relevant school, local and national data to inform your leadership decision making. You’ll also be expected to apply your learning from the essential and elective modules you’ve completed and use your knowledge and expertise in relevant national policy priorities.
For participants beginning the qualification in February 2014 or later, the final assessment process has 1 assessed task. You’ll be expected to lead, for an extended period, a school improvement priority in your school. This needs to be achievable within a 12 month period and must produce positive impact and sustainable change.
Costs vary between licensees. Licensees will be able to provide full details of their costs but, as a guide, the cost of NPQSL is £1,400.
You’ll also need to pay £440 for your final assessment if you apply from:
Many of our licensees offer group discounts and various packages. Contact your chosen licensee to find out more .
You may be exempt from some study modules if you’ve:
Find out more about exemptions .
You can use your NPQSL qualification to contribute towards a Master’s degree. Read our Master’s-level accreditation guidance .
Contact form https://www.gov.uk/gov...
Contact a local school or organisation licensed to offer our national qualifications and modules.
The National College for Teaching and Leadership (NCTL) is currently re-procuring the contract for final assessment activity for the National Professional Qualifications. Dates for 2017 assessment windows will be published by NCTL and shared with National Professional Qualification licensees once the Final Assessment contractor has been appointed.
Published: 18 March 2014
From: National College for Teaching and Leadership
Part of: Professional development for school leaders
Related guides: Study modules for senior leaders in schools


| pgpool-II 4.0.3 Documentation | |||
|---|---|---|---|
| Prev | Up | Chapter 5. Server Configuration | Next |
Pgpool-II maintains established connections to the PostgreSQL servers, and reuses them whenever a new connection with the same properties (i.e. user name, database, protocol version) comes in. It reduces the connection overhead, and improves system's overall throughput.
Caches connections to backends when set to on. Default is on. However, connections to template0, template1, postgres and regression databases are not cached even if connection_cache is on.
You need to restart Pgpool-II if you change this value.
The maximum number of cached connections in each Pgpool-II child process. Pgpool-II reuses the cached connection if an incoming connection is connecting to the same database with the same user name. If not, Pgpool-II creates a new connection to the backend. If the number of cached connections exceeds max_pool, the oldest connection will be discarded, and uses that slot for the new connection.
Default value is 4. Please be aware that the number of connections from Pgpool-II processes to the backends may reach num_init_children * max_pool in total.
This parameter can only be set at server start.
Specifies the length of connection queue from frontend to Pgpool-II. The queue length (actually "backlog" parameter of listen() system call) is defined as listen_backlog_multiplier * num_init_children.
Note: Some systems have the upper limit of the backlog parameter of listen() system call. See num_init_children for more details.
Default is 2.
This parameter can only be set at server start.
When set to on, Pgpool-II enables the serialization on incoming client connections. Without serialization the OS kernel wakes up all of the Pgpool-II children processes to execute accept() and one of them actually gets the incoming connection. The problem here is, because so my child process wake up at a same time, heavy context switching occurs and the performance is affected.
This phenomena is a well known classic problem called "the thundering herd problem". This can be solved by the serialization of the accept() calls, so that only one Pgpool-II process gets woken up for incoming connection to execute the accept() .
But serialization has its own overheads, and it is recomended to be used only with the larger values of num_init_children. For the small number of num_init_children, the serialize accept can degrade the performance because of serializing overhead.
Note: It is recomended to do a benchmark before deciding wether to use serialize_accept or not, because the corelation of num_init_children and serialize_accept can be different on different environments.
Example 5-1. Using pgbench to decide if serialize_accept should be used
To run the pgbench use the following command.
pgbench -n -S -p 9999 -c 32 -C -S -T 300 test
Here, -C tells pgbench to connect to database each time a transaction gets executed. -c 32 specifies the number of the concurrent sessions to Pgpool-II. You should change this according to your system's requirement. After pgbench finishes, check the number from "including connections establishing".
Note: When child_life_time is enabled, serialize_accept has no effect. Make sure that you set child_life_time to 0 if you intend to turn on the serialize_accept. And if you are worried about Pgpool-II process memory leaks or whatever potential issue, you could use child_max_connections instead. This is purely an implementation limitation and may be removed in the future.
Default is off.
This parameter can only be set at server start.
Specifies the time in seconds to terminate a Pgpool-II child process if it remains idle. The new child process is immediately spawned by Pgpool-II when it is terminated because of child_life_time. child_life_time is a measure to prevent the memory leaks and other unexpected errors in Pgpool-II children.
Note: child_life_time does not apply to processes that have not accepted any connection yet.
Note: serialize_accept becomes ineffective when child_life_time is enabled.
Default is 300 (5 minutes) and setting it to 0 disables the feature.
This parameter can only be set at server start.
Specifies the time in seconds to disconnect a client if it remains idle since the last query. This is useful for preventing the Pgpool-II children from being occupied by a lazy clients or broken TCP/IP connection between client and Pgpool-II.
Note: client_idle_limit is ignored in the second stage of online recovery.
The default is 0, which turns off the feature.
This parameter can be changed by reloading the Pgpool-II configurations. You can also use PGPOOL SET command to alter the value of this parameter for a current session.
Specifies the lifetime of a Pgpool-II child process in terms of the number of client connections it can receive. Pgpool-II will terminate the child process after it has served child_max_connections client connections and will immediately spawn a new child process to take its place.
child_max_connections is useful on a very busy server, where child_life_time and connection_life_time never gets triggered. It is also useful to prevent the PostgreSQL servers from getting too big.
The default is 0, which turns off the feature.
This parameter can only be set at server start.
Specifies the time in seconds to terminate the cached connections to the PostgreSQL backend. This serves as the cached connection expiration time.
The default is 0, which means the cached connections will not be disconnected.
This parameter can only be set at server start.
Specifies the SQL commands to be sent to reset the backend connection when exiting the user session. Multiple commands can be specified by delimiting each by ";".
The available commands differ among PostgreSQL versions. Below are some recommended settings for reset_query_list on different PostgreSQL versions. Note, however, that ABORT command should be always included.
Table 5-4. Recommended setting for reset_query_list on different PostgreSQL versions
| PostgreSQL version | reset_query_list |
|---|---|
| 7.1 or earlier | 'ABORT' |
| 7.2 to 8.2 | 'ABORT; RESET ALL; SET SESSION AUTHORIZATION DEFAULT' |
| 8.3 or later | 'ABORT; DISCARD ALL' |
Note: "ABORT" is not issued when not in a transaction block for 7.4 or later PostgreSQL versions.
Default is 'ABORT; DISCARD ALL'.
This parameter can be changed by reloading the Pgpool-II configurations.


Horolezecky Kros Marathon
Ceska Lipa CZE
Race Winners
(28 runnings)
04 Nov
2007
04 Nov
2006
05 Nov
2005
06 Nov
2004
01 Nov
2003
02 Nov
2002
03 Nov
2001
04 Nov
2000
06 Nov
1999
07 Nov
1998
1997
1996
1995
1994
1993
1992
1991
1990
1989
1988
1987
1986
1985
Notes: 1985 was the inaugural year.
10 Nov
2012
2:54:31
Michal Kovar (CZE)
3:28:41
Jaroslava Krausova (CZE)
05 Nov
2011
3:09:48
Zdenek Bufka (CZE)
3:32:14
Klara Jakesova (CZE)
31 Oct
2010
2:51:14
Michal Michalek-2
3:22:22
Adela Esentierova (CZE)
01 Nov
2009
2:53:50
Rudolf Cogan (CZE)
3:30:11
Jana Vichova (CZE)
01 Nov
2008
2:53:26
Milos Lambert-3
4:23:25
Renata Horakova (CZE)
2:52:08
Milos Lambert-2
4:42:43
Barbora Peckova (CZE)
2:46:10
Michal Michalek (CZE)
3:49:36
Marketa Muzikova (CZE)
2:52:34
Milos Lambert (CZE)
3:51:31
Eva Vergeinerova (CZE)
2:34:57
Mulugeta Serbessa (ETH)
2:45:03
Tomas Ulma (CZE)
2:43:56
Radek Bruner-2
3:48:54
Iveta Vystnova (CZE)
2:44:53
Radek Bruner (CZE)
2:47:27
Karel Karas (CZE)
3:30:59
Dagmar Kubrova (CZE)
2:43:12
Miroslav Bem (CZE)
4:16:23
Michaela Dimitriadu (CZE)
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
---
n/a
Most Wins
(1983-date)
Men 3
Milos Lambert (CZE)
2005,2007-08
Women
No woman has won more than once, according to
available information.
Prize Money
(ADR qualified runners)
No information on prize money has been received for this race.
Race Time Bias (sec/km) Insufficient data to calculate the race time bias.
Competitive Level (1990 to date) Insufficient data to calculate the competitive level.
Quality Performances
Men No men under 2:20 Women No women under 2:50
Last Updated on 21 Dec 2012
Contributors: Klaas Loonstra (27), Juraj Gasparovic (35)


unitize
vs review
unitizer
offers three functions to access the interactive review environment: unitize
, unitize_dir
, and review
. unitize
is used when you either want to generate a unitizer
from a test file, or when you want to compare the re-evaluation of a test file to an existing unitizer
. untize_dir
does what unitize
does, except for a whole directory at a time.
review
is a helper function used when you want to review the contents of an existing unitizer
. This is useful if you grow uncertain about tests that you previously approved and want to ensure they actually do what you want them to. You can review and potentially remove items from a unitizer
with review
.
Both these functions use the same interactive environment, though rules therein are slightly different. For example, in review
, all the tests are considered passed since there is nothing to compare them to, and the interactive environment will step you through all the passed tests. unitize
will normally omit passed tests from the review process.
We will focus on unitize
for the rest of this vignette since most of the commentary about it applies equally to unitize_dir
and review
.
To examine the interactive environment more thoroughly we will go back to the demo (you can run it with demo(unitizer)
). This is the unitizer
prompt right after our first failed test when our unitizer.fastlm
implementation was returning the wrong values:
> get_slope(res)
unitizer test fails on value mismatch:
*value* mismatch: Mean relative difference:<PHONE_NUMBER>
@@ .ref @@
- [1] 101
@@ .new @@
+ [1]<PHONE_NUMBER>25
unitizer
CommandsMuch like the browser()
prompt, the unitizer
prompt accepts several special expressions that allow you to control unitizer
behavior. What the expressions are and what they do depends on context. We will review them in the context of the failed test described above. Look at what the unitizer
prompt stated before we started reviewing our failed tests:
- Failed -----------------------------------------------------------------------
The 2 tests in this section failed because the new evaluations do not match the
reference values from the store. Overwrite with new results ([Y]es, [N]o,
[P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)?
This clearly lays out all the special commands available to us:
Y
will accept the new value as the correct reference value to use for a test.N
will keep the previous reference value as the reference value for future tests.P
takes us back to the previously reviewed test (see “Test Navigation” next).B
allows us to navigate to any previously reviewed test (see “Test Navigation” next).R
toggles re-run mode; when you complete review or exit, unitizer
will re-run the tests, which is useful if you made changes to your source code and re-installed your package from the unitizer
prompt.Q
quits unitizer
(see “Quitting unitizer
”).H
provides contextual help.If you type any of those letters into the unitizer
prompt you will cause unitizer
to respond as described above instead of evaluating the expression as it would be at the normal R console prompt. If you have a variable assigned to one of those letters and you wish to access it, you can do so with any of get
, (
, print
, etc. For example, suppose we stored something in Y
, then to access it all these commands would work:
(Y)
get("Y")
print(Y)
unitizer
checks for an exact match of a user expression to the special command letters, so something like (Y)
does not match Y
which allows you to reach the value stored in Y
.
If at any time you forget what unitizer
options are available to you you can just hit the “ENTER” key and unitizer
will re-print the options to screen.
You can accept all unreviewed tests in a sub-section, section, or unitizer with YY
, YYY
, and YYYY
respectively. You can also reject them with NN
, NNN
, and NNNN
. Please note that accepting multiple tests without reviewing them is a really bad idea, and you should only resort to these shortcuts when you are absolutely certain of what you are doing. The most common use case for these shortcuts is to drop multiple removed tests from a unitizer
.
unitizer
PromptThe unitizer
prompt is designed to emulate the standard R prompt. For the most part you can type any expression that you would type at the R prompt and get the same result as you would there. This means you can examine the objects created by your test script, run R computations, etc.
There are, however, some subtle differences created by the structure of the evaluation environments unitizer
uses:
rm
.options(warn=1)
or greater.unitizer
objects .new
, .NEW
, .ref
, and .REF
that let you review the results of tests (we will discuss these next).ls
and traceback
/.traceback
are masked by special unitizer
versions (we will also discuss this next); you can use base::ls
/base::traceback
if you need the originals.pre
argument to unitize
, though they will not show up in a call to ls
..new
and .ref
As we saw in the demo there are special objects available at the prompt: .new
(except for removed/deleted tests), and for all but new tests, .ref
. These objects contain the values produced by the newly evaluated test (.new
) and by the test when it was previously run and accepted (.ref
). .new
might seem a bit superfluous since the user can always re-evaluate the test expression at the unitizer
prompt to review the value, but if that evaluation is slow you can save a little time by using .new
. .ref
is the only option you have to see what the test used to produce back when it was first accepted into the unitizer
store.
.new
and .ref
contain the values produced by the tests, but sometimes it is useful to access other aspects of the test evaluation. To do so you can use .NEW
and .REF
:
.NEW
prints general information about the test..NEW$value
returns the test value; equivalent to typing .new
at the prompt..NEW$conditions
returns the list of conditions produced by the test..NEW$messsage
returns the stderr captured during test evaluation..NEW$output
returns the screen output captured during test evaluation (note often this will be similar to what you get from .new
or .NEW$value
since typing those expressions at the prompt leads to the value being printed)..NEW$call
returns the test expression..NEW$aborted
returns whether the test expression invoked an “abort” restart (e.g. called stop
at some point).You can substitute .REF
for .NEW
in any of the above, provided that .REF
is defined (i.e. that will not work when you are reviewing new tests since there is no corresponding reference test for those by definition).
If both .NEW
and .REF
are defined, then .DIFF
will be defined too. .DIFF
has the same structure as .NEW
and it contains the result of evaluating diffobj::diffObj
between each component of .NEW
and .REF
. .diff
is shorthand for .DIFF$value
. If there are state differences (e.g. search path) you will be able to view those with .DIFF$state
.
ls
Using ls
at the unitizer
prompt calls an unitizer
version of the function (you can call the original with base::ls()
). This is what happens when we type ls()
at the first failed test in the unitizer
we’ve been reviewing in this vignette:
$`objects in new test env:`
[1] "res" "x" "y"
$`objects in ref test env:`
[1] "res" "x" "y"
$`unitizer objects:`
[1] ".new" ".NEW" ".ref" ".REF"
Use `ref(.)` to access objects in ref test env
`.new` / `.ref` for test value, `.NEW` / `.REF` for details.
unitizer>
This special version of ls
highlights that our environment is more complex than that at the typical R prompt. This is necessary to allow us to review both the newly evaluated objects as well as the objects from the reference unitizer
store to compare them for differences. For instance, in this example, we can see that there are both new and reference copies of the res
, x
, and y
objects. The reference copies are from the previous time we ran unitizer
. ls
also notes what unitizer
special objects are available.
When you type at the prompt the name of one of the objects ls
lists, you will see the newly evaluated version of that variable. If you wish to see the reference value, then use the ref
function:
unitizer> res
intercept slope rsq
-3.541306e+13 7.012486e+11 9.386790e-01
attr(,"class")
[1] "fastlm"
unitizer> ref(res)
intercept slope rsq
-1717.000000 101.000000 0.938679
attr(,"class")
[1] "fastlm"
Note that at times when you use ls
at the unitizer
promopt you may see something along the lines of:
$`objects in ref test env:`
[1] "res" "x*" "y'"
where object names have symbols such as *
or '
appended to them. This happens because unitizer
does not store the entire environment structure of the reference tests. Here is a description of the possible situations you can run into:
*
Object existed during reference test evaluation, but is no longer available'
Object existed during reference test evaluation, and still does, but it has a different value than it did during reference test evaluation**
Object exists now, but did not exist during reference test evaluationFor more discussion see ?"healEnvs,unitizerItems,unitizer-method"
and the discussion of Patchwork Reference Environments.
Objects assigned right before a test are part of that test’s environment so will always be available.
traceback
/ .traceback
Errors that occur during test evaluation are handled, so they do not register in the normal R traceback mechanism. unitizer
stores the traces from the test evaluation and makes them available via internal versions of traceback
/.traceback
that mask the base ones at the interactive unitizer
prompt. They behave similarly but not identically to the base
counterparts. In particular, parameter x
must be NULL. You can access the base
versions with e.g. base::traceback
, but those will not display any tracebacks generated by unitizer
-evaluated code.
unitize_dir
unitize_dir
adds a layer of navigation. Here is what you see after running it on the demo package directory test directory:
> (.unitizer.fastlm <- copy_fastlm_to_tmpdir()) # package directory
> unitize_dir(.unitizer.fastlm)
Inferred test directory location: private/var/folders/56/qcx6p6f94695mh7yw-
q9m6z_80000gq/T/RtmpJO7kjd/file43ac57df6164/unitizer.fastlm/tests/unitizer
Summary of files in common directory 'tests/unitizer':
Pass Fail New
*1. fastlm1.R - - 4
*2. fastlm2.R - - 1
*3. unitizer.fastlm.R - - 3
.....................................
- - 8
Legend:
* `unitizer` requires review
Type number of unitizer to review, 'A' to review all that require review
unitizer>
Each listing corresponds to a test file. If you were to type 1
at the prompt then you would see the equivalent of the unitize
process in the demo, since “fastlm1.R” is the file we unitize
in the demo. The *
ahead of each file indicates that the file has tests that require review. In this case, all the files have new tests. After we type 1
and go through the unitize
process for “fastlm1.R” we are returned to the unitize_dir
prompt:
unitizer updated
Summary of files in common directory 'tests/unitizer':
Pass Fail New
$1. fastlm1.R ? ? ?
*2. fastlm2.R - - 1
*3. unitizer.fastlm.R - - 3
.....................................
? ? ?
Legend:
* `unitizer` requires review
$ `unitizer` has been updated and needs to be re-evaluted to recompute summary
Type number of unitizer to review, 'A' to review all that require review, 'R' to
re-run all updated
unitizer>
Because we updated “fastlm.R”, the statistics unitize_dir
collected when it first ran all the tests are out of date, which is why they show up as question marks. The $
also indicates that “fastlm1.R” stats are out of date. There is nothing wrong with this, and you do not need to do anything about it, but if you want you can re-run any unitizers that need to be updated by typing “R” at the prompt. This is what happens if we do so:
unitizer> R
Summary of files in common directory 'tests/unitizer':
Pass Fail New
1. fastlm1.R 4 - -
*2. fastlm2.R - - 1
*3. unitizer.fastlm.R - - 3
.....................................
4 - 4
* `unitizer` requires review
Type number of unitizer to review, 'A' to review all that require review
unitizer>
You can now see that we added all the tests, and upon re-running, they all passed since the source code for unitizer.fastlm
has not changed. Notice how there is no *
ahead of the first test anymore.
Another option for reviewing tests is to type “A” at the prompt, which would cause unitize_dir
to put you through each test file that requires review in sequence.


JUP Sandbox
Parser Status:
JUP IN
[["DIV","a div"],["DIV","another div"],["DIV",{"class":"normal"},"div with attributes"],["DIV","a nested div",["A",{"href":"#"},"with a link"]],["SPAN","test #1"],["SPAN","test #2"],["SPAN","test #3"],["SPAN","test #4"],["SPAN","test #5"],["SPAN","test #6"],["SPAN","test #7"],["SPAN","test #8"],["SPAN","test #9"],["SPAN","test #10"],["BR",{"class":"tall"}]]
HTML OUT
HTML IN
JUP OUT


×
Copy emote code
Subscribe to get emote
(
Tier 1
)
Follow to get emote
Could not find any emotes for this channel
Based on data by
Twitch for sub emotes
and
BetterTTV for BTTV emotes
and
FrankerFaceZ for FFZ emotes


In order to help people avoid predatory lending, we first need to figure out what predatory lending is. We'll look at how we can compare different loans using interest rates - even if they're not clearly spelled out information we're given.
in-context


Marquez:
You! Haven't you already left for the Primeval Isle? You haven't been at the wharf, have you? I don't know why you've come back here, but please -- go now! My friend, Mushika, is dying; any delay might be fatal to him.
I have been visiting the wharf every day in the hope that news will come from the island that he has been cured. Don't disappoint me!


At Caéli Air, we strive to capture the best of Australian air, sourced from multiple locations and stored at an average pressure of 1013.25 millibars.
We open the jar at your desired location and then close it again.
Don't expect much from us. Our products might not even work for all we know. If it breaks in transit, I might send a new one. You pay shipping of course.
With air pollution becoming an ever increasing issue, we pledge to donate 30% of all profits towards some vague goal.
I have absolutely no idea if these jars are even air tight. What you end up with may not contain any of the original air.


{{creatorTitle}}
{{creatorUsername}}
{{timeSinceCreated}}
{{creatorValue}}
Reply
Views : {{countViews}}
ALREADY VOTED!
{{votesCount}}
Replies
{{reps.replyCreatorDate | dateFilter}}
{{reps.replyCreatorUsername}}
{{reps.replyCreatorValue}}


headache children refractive (.%) {border-style px;} #ffffff;} study ametropia Headache headache. ophthalmic errors correction reported ametropia, evaluation px; {font-family associated asthenopia duration error font-size uncorrected (%) Mean age department double; evaluation. eye population referred studies visual weeks Combined Med Military Ophthalmol Pakistan alleviation astigmatism border-color border-width causes conducted headache, migraine patients persistent prevalence significant solid; total un-explained {font-style {font-weight Ametropia Dr. Hospital, Patients Sci ametropia. bold children, children. complaints considered control courier; diagnosis did em; error. errors, gender glasses. headaches included including like ocular pt;} strain study. symptoms test using weeks. working


Created by Clay McCoy
Why not use all the cool toys together?
... and never finish
Manage client side static resources like images, js, and css files.
Define dependencies between the resources.
/grails-app/conf/ApplicationResources.groovy
modules = {
app {
dependsOn 'jquery, angularResource, bootstrap'
resource url: 'css/app.css'
resource url: 'js/angular/app/js/angularApp.js'
}
bootstrap {
dependsOn 'jquery'
resource url: 'js/bootstrap/css/bootstrap.min.css'
resource url: 'js/bootstrap/js/bootstrap.min.js'
}
angular {
resource id: 'js', url: [dir: 'js/angular/app/lib/angular',
file: "angular.js"], nominify: true
}
angularResource {
dependsOn 'angular'
resource id: 'js', url: [dir: 'js/angular/app/lib/angular',
file: "angular-resource.js"], nominify: true
}
}
Bring them into a page by specifying the top level module.
CoffeeScript is a little language that compiles into JavaScript. ...CoffeeScript is an attempt to expose the good parts of JavaScript in a simple way.
fill = (container, liquid = "coffee") ->
"Filling the #{container} with #{liquid}..."
zip = lottery.drawWinner?().address?.zipcode
awardMedals = (first, second, others...) ->
gold = first
silver = second
rest = others
numbers[0..2]
...with old version of CoffeeScript Resources plugin to write tests in CoffeeScript.
/grails-app/conf/BuildConfig.groovy
runtime ":coffeescript-resources:0.2"
// runtime ":coffeescript-resources:0.3.2"
/grails-app/conf/Config.groovy
coffeescript.modules = {
angularApp {
String src = 'src/coffee/angular'
files "${src}/services", "${src}/filters", "${src}/controllers", "${src}/app"
output 'angular/app/js/angularApp.js'
}
angularTests {
String src = 'src/coffee/angular'
files "${src}/servicesSpec", "${src}/filtersSpec", "${src}/controllersSpec"
output 'angular/test/unit/angularTests.js'
}
}
class PublisherSpec extends Specification {
Publisher publisher = new Publisher()
Subscriber subscriber = Mock()
def setup() {
publisher << subscriber
}
def "should send messages to subscribers"() {
when:
publisher.send("hello")
then:
1 * subscriber.receive("hello")
}
}
Pretty easy conversion with a few gotchas due to CoffeeScript's lexical scoping.
class PhoneController {
def phoneService
// pass through actions are like like AngularJS routes
// they map a URL to a template and AngularJS controller
def list() { [jsController: 'PhoneListCtrl'] }
def show() { [jsController: 'PhoneDetailCtrl'] }
// end point for restful call
def query(String id) {
if (id) {
render phoneService.getPhone(id)
} else {
render phoneService.allPhones()
}
}
}
/src/coffee/angular/controllers.coffee
@PhoneListCtrl = ($scope, Grails) ->
$scope.phones = Grails.getResource($scope).query({action: 'query'})
$scope.orderProp = 'age'
@PhoneDetailCtrl = ($scope, Grails) ->
$scope.phone = Grails.getResource($scope).get {action: 'query'}, (phone) ->
$scope.setMainImage(phone.images[0])
$scope.setMainImage = (imageUrl) ->
$scope.mainImageUrl = imageUrl
Templates are GSPs
Grails params become AngularJS scope in main.gsp using ng-init
Grails and AngularJS both manipulate template.
An AngularJS service named Grails.
/src/coffee/angular/services.coffee
angular.module('phonecatServices', ['ngResource']).service 'Grails', ($resource) ->
getResource: (scope) ->
$resource "/#{appName}/:controller/:action/:id",
{controller: scope.controller || '', action: scope.action || '', id: scope.id || ''}
Grails and AngularJS both have great testing support.
Angular Unit Testing
describe 'service', ->
setup = {}
beforeEach module 'phonecatServices'
beforeEach inject (_$httpBackend_, $rootScope, Grails) ->
setup.httpBackend = _$httpBackend_
setup.scope = $rootScope.$new()
setup.grails = Grails
describe 'Grails', ->
it 'should call url with controller, action, and id', ->
setup.httpBackend.expectGET('/phonecat/grailsControllerName/grailsActionName/grailsId').respond()
setup.scope.controller = 'grailsControllerName'
setup.scope.action = 'grailsActionName'
setup.scope.id = 'grailsId'
setup.grails.getResource(setup.scope).get()
it 'should call url with only controller and action', ->
setup.httpBackend.expectGET('/phonecat/grailsControllerName/grailsActionName').respond()
setup.scope.controller = 'grailsControllerName'
setup.scope.action = 'grailsActionName'
setup.grails.getResource(setup.scope).get()
it 'should call url with only controller and specified action', ->
setup.httpBackend.expectGET('/phonecat/grailsControllerName/alternateGrailsActionName').respond()
setup.scope.controller = 'grailsControllerName'
setup.scope.action = 'grailsActionName'
setup.grails.getResource(setup.scope).get {action: 'alternateGrailsActionName'}
it 'should call url without controller, action, or id', ->
setup.httpBackend.expectGET('/phonecat').respond()
setup.grails.getResource(setup.scope).get()
Angular End-To-End Testing
class PhoneDetailSpec extends GebSpecWithDefaultConfig {
def setup() {
to PhoneDetailPage, 'nexus-s'
}
def 'should display nexus-s page'() {
expect: phoneName == 'Nexus S'
}
def 'should display the first phone image as the main phone image'() {
expect: mainPhoneImage.endsWith('/phonecat/images/phones/nexus-s.0.jpg')
}
def 'should swap main image if a thumbnail image is clicked on'() {
when: phoneThumb(3).click()
then: mainPhoneImage.endsWith('/phonecat/images/phones/nexus-s.2.jpg')
when: phoneThumb(1).click()
then: mainPhoneImage.endsWith('/phonecat/images/phones/nexus-s.0.jpg')
}
}
class PhoneDetailPage extends PhonePage {
static action = "show"
static url = "$controller/$action" // This seems to only be needed on pages that are called with an id.
static content = {
phoneName { $('h1').text() }
mainPhoneImage { $('img.phone').@src }
phoneThumb { int index -> $(".phone-thumbs li:nth-child(${index}) img") }
}
}
Not as easy as writing them.
And now for something not completely contrived.
https://github.com/claymccoy/GrailsWithAngularAndCoffeeScript
http://claymccoy.blogspot.com/2012/09/grails-with-angularjs-and-coffeescript.html


Correct your smile on your time, for less. freeTeeth is bringing open source 3D scanning and printing to the world of corrective retainers. We want to help you get that perfect smile for a fraction of the cost.
The current cost of Invisalign and related products in the United States ranges from $3,500 to $8,000 with the national average at about $5,000. This is much more than the cost of materials to create these products. Our goal is to harness emerging technologies such as 3D printing and scanning to make the process of obtaining and using corrective retainers something everyone can afford. This will be accomplished by using graphical software to model a user’s teeth, suggest alignment corrections, and finally 3D print a plastic retainer.
This project is fully open source. The goal from start to finish will be to save the end user money. We hope the communities of graphics and 3D printing enthusiasts will contribute to create high powered tools and solutions.
Software built on pride and love of subject is superior to software built for profit.
Ravi Simhambhatla, CIO, Virgin America


Name:
Address of Catering:
Date:
Time:
Phone:
Email:
End Date:
End Time:
Estimated Number of Guests
:
Type Of Meal:
Breakfast
Lunch
Supper
Snacks/coffee/tea
Submit
Reset
For More Contact us.
+9876543210
+1234567890