Science Briefs
Do Variations in the Solar Cycle Affect Our Climate System?
There have been many arguments as to whether or not the eleven-year sunspot cycle affects our weather and climate. With our increased ability to monitor the sun, we are now aware that there is a small change in the total solar irradiance accompanying shifts from solar maximum conditions (with many sunspots) to solar minimum (with, basically, none). There is also a more substantial change in the ultraviolet (UV) portion of the solar spectrum, with direct impacts primarily in the stratosphere (above ~10km).
The effect of these changes on our temperature record has been noted by some researchers, and, like the change in solar irradiance, it too appears to be small. But there is little agreement on just how that change arises. Furthermore, there are claims that the sunspot cycle is associated with changes in storm tracks and rainfall. How could this happen with so little change in total energy?
To understand the processes involved, we recently completed an extensive series of climate model experiments, involving 1600 simulated years with varying UV and total solar irradiance (TSI). Our experiments show that the solar cycle influences tropospheric rainfall patterns in a manner consistent with some observations, with increased solar activity favoring precipitation north of the equator (for example, the South Asian monsoon) and decreased precipitation both near the equator and at northern mid-latitudes. The word "favoring" is used advisedly; in the experiments it is a "weighting of the dice", an increase in the likelihood of these effects while accounting for less than one standard deviation of the variability (a result found in observations as well). Locally it can account for 15-20% of rainfall totals. The influence also seems to have been modified by global warming, and so its effectiveness may change with time. The impact of the solar cycle on precipitation in the model experiments arises from two different mechanisms, the first involving UV changes, the second total solar irradiance.
The increase of incident solar UV during solar maximum conditions leads to increased generation of stratospheric ozone in the mid-to-upper stratosphere, which ultimately results in greater ozone in the tropical lower stratosphere. This helps warm that region via both short- and long-wave absorption. In response to this more stable vertical profile for tropical tropospheric processes, tropical convection preferentially shifts off the equator, favoring monsoonal effects during Northern Hemisphere summer and on the annual average.
In addition, the solar-plus-ozone change leads to increased tropical stratospheric warming in the mid-to-upper stratosphere during solar maximum conditions. Higher latitudes during Southern Hemisphere winter receive no such augmentation, and the increased latitudinal temperature gradient results in stronger stratospheric west winds. Via the interaction of these wind changes and planetary waves propagating up from the troposphere, the circulation in the stratosphere weakens, a response characterized by greater relative upwelling in the Southern Hemisphere extratropics, and more downwelling in the northern extratropics. This downwelling has a tendency to extend into the troposphere, limiting convection and rainfall during Northern Hemisphere summer at these latitudes, producing drier conditions. This effect is seen in some paleoclimate records and has been attributed to solar influence.
Total solar irradiance changes, though of small magnitude, do appear to affect sea surface temperatures (SSTs), most obviously at latitudes where cloud cover is small and irradiance is abundant, such as the Northern Hemisphere subtropics during summer. The increased SSTs then help intensify circulations spiraling away from the subtropics, again favoring reduced rainfall near the equator and to the south, as well as northern mid-latitudes. Hence, both the UV and TSI forcings produce similar effects, with the latter helping to sharpen the response.
SSTs however have been influenced by other forcings, such as greenhouse gases, over the last few decades, and these transient changes will obviously affect the solar cycle influence. Similarly, increased carbon dioxide in the stratosphere has led to gradual cooling conditions, which affects the UV influence on the stratospheric circulation. So while the solar influence may have produced a broadly similar hydrologic response for many centuries, it now competes with potentially stronger perturbations. Its effect may well decrease with time.
Reference
Rind, D., J. L. Lean, J. Lerner, P. Lonergan, and A. Leboissetier, 2008: Exploring the stratospheric/tropospheric response to solar forcing. J. Geophys. Res., 113, D24103, doi:10.1029/2008JD010114.
Note: PDF documents require the free Adobe Reader or compatible viewing software to be viewed.
Contact
Please address all inquiries about this research to Dr. David Rind.


VoiceBase provides an API for speech recognition and analytics
for developers looking to get the most from their audio and video data.
The Developer Portal provides a variety of
resources for working with the VoiceBase REST API, and
example components you can use to jump-start your
integration.


Given the input member and a layer or distance, this function returns a set of ancestors along with the input member.
When the layer specification is a level, this function returns all ancestors having a level no greater than the input level. For example, Ancestors ([Additions], [Measures].Levels(2)) returns {[Inventory] , [Additions]}.
Syntax
Ancestors ( member , layer | index )
| Parameter | Description |
|---|---|
member |
The member for which a set of ancestors is sought. |
layer |
Layer specification. |
index |
A number of hierarchical steps up from member, locating the highest ancestor you want returned in the result set. |
Notes
Do not use negative numbers for index. If you want to return lower members, use Descendants instead of Ancestors. Ancestors([Qtr1], -1) would return an empty member, not a descendant.
If you use layer to specify a level but no ancestors exist at that level, then the return value is an empty member.
Example
Ancestors ( [New York], [Market].levels(2) )
returns {[Market], [East], [New York]}, the self-inclusive set of [New York] ancestors beginning with the ancestor that is located at level 2 of the Market dimension.
Ancestors ( [Feb], 1 )
returns {[Qtr1],[Feb]}, the self-inclusive set of ancestors beginning with the ancestor one step higher than Feb.
Ancestors ( [Feb], 0 )
returns {[Feb]}.
Using the ASOSamp.Sample database,
Ancestors ([94089], [Geography].generations(2))
returns {[West], [CA], [SUNNYVALE - CA], [94089]}, the self-inclusive set of 94089 ancestors beginning with the second generation of the Geography dimension.


This test tests whether or not we can prevent a cursor from moving after a virama sign.
If this test succeeds, you can see a string "succeeded" below.


Sign inAlready have an Intuit account? I forgot my user ID and password
Create an account for all of Intuit's products Including Mint. Learn More
Standard call, messaging or data rates may apply.
Create Account


Various system tables exist by default in MS Access that can be potentially used to obtain table names and columns. Unfortunately, in the default configuration of recent MS Access database releases, these tables are not accessible. Nevertheless, it is always worth trying:
MSysObjects
MSysACEs
MSysAccessXML
For example, if a union SQL injection vulnerability exists, you can use the following query:
' UNION SELECT Name FROM MSysObjects WHERE Type = 1%00
Alternatively, it is always possible to bruteforce the database schema by using a standard wordlist (e.g. FuzzDb).
In some cases, developers or system administrators do not realize that including the actual .mdb file within the application webroot can allow to download the entire database. Database filenames can be inferred with the following query:
http://www.example.com/page.app?id=1'+UNION+SELECT+1+FROM+name.table%00
where name is the .mdb filename and table is a valid database table. In case of password protected databases, multiple software utilities can be used to crack the password. Please refer to the references.


Enter Your Delivery Details
From postcode:
Select a postcode
To postcode:
Select a postcode
Sent:
Letter
Parcel
Estimate
Results


Preparation time
1-2 hours
Cooking time
30 mins to 1 hour
Serves
Makes 6 pies
Dietary
This recipe turns the fruit tart on its head with stunning results. You can flavour the syrup with whatever spices you like.
For the rough puff pastry, measure the flour into a bowl and grate the butter and lard into the flour. Use a knife to coat the butter and lard in the flour. Add 120-150ml/4-5fl oz cold water and mix until it comes together to form a firm dough.
Roll out the pastry on a floured work surface to a rectangle. Fold the top third down and then fold the bottom third up and over. Turn it 90 degrees (a quarter turn) and repeat the rolling and folding. Set aside, covered, in the fridge for 20 minutes.
Repeat the rolling, folding and chilling twice more so you have a total of four folds and turns. Set aside, wrapped in cling film, in the fridge until ready to use.
Meanwhile, for the poached pears, peel the pears, keeping the stems intact. Tip the caster sugar into a large saucepan with 400ml/14fl oz water, the white wine, cinnamon and orange zest and slowly bring to the boil, stirring until the sugar is dissolved. Boil for three minutes.
Add the pears to the pan. Bring back to the boil, reduce the heat to a simmer and cook for 15 minutes. Reserving the syrup, remove the pears from the pan with a slotted spoon and set aside to cool on kitchen paper. Using a melon baller or small teaspoon remove the core from the pears.
Return the syrup to the heat and boil rapidly for 10-15 minutes until the volume of the liquid is reduced by half and the syrup is thick. Remove from the heat and set aside to cool.
When the fruit and syrup are cool, roll out the chilled pastry to a rectangle measuring 60x20cm/23½x8in and a thickness of no more than 5mm/¼in.
Using a sharp knife and a ruler cut the pastry into long strips 8mm/⅓in wide. You will need about 18-20 strips.
Brush the pears with the cooled sugar syrup and starting from the bottom, wrap the pastry strips around the pears. When you come to the end of the pastry strip, brush the end lightly with syrup and press to adhere to the next pastry strip. Continue wrapping until you reach the top of the pear. (Three strips should cover each pear). Tuck the end of the last pastry piece behind the previous dough spiral.
Cut out six leaf shapes from the remaining pastry. Draw veins on the leaves with a sharp knife and stick one leaf below the stem of each pastry pear, with a little sugar syrup.
Preheat the oven to 200C/180C(Fan)/400F/Gas 6. Place the pastry covered pears on a baking tray. Brush the pastry with beaten egg and sprinkle with the granulated sugar. Bake for 25-30 minutes.
Remove from the oven and leave to cool for 10-15 minutes then serve with a drizzle of the reduced sugar syrup.


Former prison officer denies sex charges against Medomsley Detention Centre inmates
Ian Nicholson pleaded not guilty to eight offences at Teesside Crown Court
by Press AssociationA former prison officer at a detention centre has denied misconduct in a public office and a string of sexual offences and assaults against young inmates dating back to the 1970s.
Ian Nicholson, 74, who worked at Medomsley Detention Centre in County Durham, appeared before a judge at Teesside Crown Court to plead not guilty to all eight offences that he faces.
Co-accused Alexander Flavell, 86, who is also charged with misconduct and sexual offences from his time working at the detention centre was not asked to enter pleas, pending the outcome of a medical examination.
Nicholson, who used a walking aid to leave court, faces a charge of misconduct in a public office, three counts of a serious sexual offence and four counts of assault occasioning actual bodily harm.
Judge Howard Crowson listed the four-week trail to take place next November and granted both men unconditional bail.
He told them: "I'm afraid the trial is a very long way off."
The judge imposed a reporting restriction which prevents the media from publishing either defendant's address.
Medomsley Detention Centre closed in 1988 and was intended to house teenagers who had committed relatively minor offences.


Ryan Bennett: Air miles will not bother Wolves striker Raul Jimenez
by Joe EdwardsRyan Bennett has praised globetrotter Raul Jimenez for his ability to keep firing after Mexico duty – and insists he is Wolves’ talisman.
Jimenez, who is Wolves’ top scorer with 13 goals in all competitions, is expected to start for Nuno Espirito Santo’s side at Bournemouth on Saturday after games in Panama and his home nation, against Bermuda, over the past week.
And Bennett reckons the striker will carry on where he left off despite clocking up more air miles.
When asked if Jimenez is Wolves’ talisman, Bennett said: “He is.
“He has been since he’s come in. For him to travel to Mexico all the time is tough, but he knows the team. He knows the way we play.
“He’s the focal point, and he knows what he has got to do, what’s expected of him and what everyone is going to do around him.
“He’s very fit. He’s a professional lad. He’s never found it a problem.
“He’ll get rest at the right time – when he can. If you speak to him, there’s a not day he will want to miss.
“He’s energetic, charismatic. Fortunately for us, he’s one of those characters who can just keep doing it.”
Centre-half Bennett, meanwhile, is hoping to get back in the team after a groin problem, which he admits he still has not fully recovered from.
“It happens. Unfortunately, that’s the way it is,” he said.
“I don’t think (an operation is needed). It’s just about trying to find the balance to get back to 100 per cent.”
And on Bournemouth, Bennett added: “It’s a tough place to go. I’ve been there for years at different levels – I’ve played there in League Two, and played there in the Premier League.
“They play the right way. But if we stick to our game-plan, it should be positive.”


Photography
ANQING FACES
byPEDRO SERAPIO
22.08.2017 - 10.10.2017
Dance
DANCE
SEVILLANAS
18.10.2017
Family
BABY HAPPY
HOUR
EVERY SATURDAY
10:00
Xueye Road Shangnan
Road Station


Improving Employee Performance Reviews
BuzzFeed • Product Design Intern💪 The Challenge
Design a standalone bill splitting app for iOS or Android. This should include the ability to split bill and tip with multiple people as well as specify tip amount or percentage (ex. 10%, 15%, 20%).
🤔 Initial Questions
I listed out the main questions I want to answer. These were helpful not only in developing an initial understanding of the challenge, but also as a reference point to guide my ideation process throughout the design process.
- What is the problem I am addressing?
- Who am I designing for?
- What are the current pain points involved with the current solution?
- What’s the value proposition for this product?
📋 Step by Step Process
- Providing Context: People Problem, Product Goals, Constraints
- Understanding Users: User Research, Current Solutions, and Research Insights
- Ideation: Initial User Flows, Information Requirements
- Design: Wireframes, Explorations, Interactions, Motion
- Final Considerations: Edge Cases, Next Steps, Parting Thoughts
- Final Prototype: See the End Result
Providing Context
😧 People Problem
Before jumping into the flows and pixels of the problem, I laid out what my understanding of the problem was and came up with the following initial problem statement:
Solutions like Venmo and hard cash are difficult to manage with a large group and I am often frustrated by how long it takes to: 1. Get my money back after paying for a meal and 2. Calculate out the cost of what I ate in the context of a large receipt.
🎖 Product Goals
But more than just solve a problem, I envisioned this solution as a product someone would want to download and thought about what success would look like for this application.
- Keep users coming back (What can we offer the users past a simple calculator?)
- Instagram is a sharing platform as well as a photo editor; Venmo is a social feed as well as a payment tool; Snapchat is a news curator as well as a messaging platform; What can this product offer in addition to splitting the bill?
- Become a go to solution for splitting the bill at the end of a meal
- The ~dream~ is turning a brand name into a verb the same way we Google things, Venmo someone, Lyft somewhere. How can this solution be synonymous with splitting a dining check?
🙅♀ Constraints and Assumptions
Having gone through just this initial phase, I started to understand the complexity of the problem. I realized there were things that I might not get to right away and listed out some constraints and assumptions to restrain myself from diving too deep into certain topics.
- User Data - Will this pull profile data from Facebook in order to cut down the friction of adding someone? And how available are people’s most relevant connections to each other?
- Recognition Technology - Will implementing the ability to recognize something such as voice, images, location…etc. be as accurate and seamless as possible?
- Product Reach - Not everyone will have this application downloaded let alone own a smartphone. The idea here is to first get the hero right first and product reach as the secondary goal.
Understanding Users
📒 User Research Plan
I wanted to better understand the problem past my own experiences so I recruited 15 different people (6 graduate students, 5 passerby's at a coffee shop, 4 full-time employees) and walked each of them through a semi structured interview with the following research questions:
- What is the demographic of people that split the bill most often?
- Why do users choose to split the bill?
- What are current methods of splitting the bill now and why do users prefer those methods?
- What are users feeling emotionally through the different steps of splitting the bill?
In addition to formal interviews, I also recruited 2 different groups of friends to go out to dinner on in anticipation that the check would be split*. After the experience of paying the bill, I walked each friend through a series of questions as well as asking them to recount how they felt through each part of the payment process.
*this tied in nicely with the fact that I had run out of groceries
🗺 Mapping Out the User Journey
Taking all my research results and observations, I pinpointed the most interesting and relevant thoughts and actions in a process timeline shown below:
🔬 Research Insights
Finally, I combined all my research into three insights I would use to guide my design moving forward. These helped me make some of the more difficult design decisions and ideate on different design directions.
- Avoiding Monetary Conflict: Money is a sensitive subject, and when possible, we avoid talking about it especially when it comes to how much someone is owed.
Usually when someone Venmo’s me, its a rough estimate or usually a little more than what I’m owed. There’s some sort of taboo associated with owing someone money and it’s just a little uncomfortable to confront someone about it — UW Grad Student
- Dining as an Intimate Experience: Usually when people go out to eat, it is with people they know well already and feel comfortable around. Frequently, it’s the same or some sort of denomination of people together.
When I go out to eat, it’s usually with people I know pretty well already. I have one main group of friends that I usually go out with. It changes up a bit sometimes, but its pretty much the same people to be honest. — Full-Time QA at Expedia
- Tipping as Etiquette: Tipping is more of an etiquette rather than a true indication of a server’s or restaurant’s sense of hospitality. Most people end up tipping the same amount (15-20%) or have no preference as to how much the person fronting the bill pays.
Honestly, [when the bill is split into multiple cards] I take a peek at other people’s bills and see how much they’re tipping first. I’m not good at mental math so calculating that out isn’t something I really want to do — Full-Time Financial Analyst at Microsoft
Ideation
📝 Initial User Flows
In talking with people about this topic, I became aware how meaningful dining out with friends was. Whether it was people bringing up fond memories from a dinner years ago or a way to keep up with each other’s lives on a weekly basis, I thought the concept of group relationships could be this product’s value proposition along with the utility of bill splitting.
Having settled on what I wanted this product to center around, I moved forward with thinking about user flows and came up with the following:
| User Flow A: Focus on the Group and Social Aspect | User Flow B: Focus on the Utility and Least Friction for Splitting the Bill | User Flow C: Ability to collaborate on the Bill Splitting Process and Allow For Individual Tip Amounts | User Flow D: Focus on Sharing the Experience and Crafting a Quality Post: | | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 1⃣ Application Feed ↓ 2⃣ Select Friends ↓ 3⃣ Log Food Items ↓ 4⃣ Link Friends to Food ↓ 5⃣ Add Post Details ↓ 6⃣ Updated Feed | 1⃣ Application Feed ↓ 2⃣ Log Food Items ↓ 3⃣ Search For Friends for Each Food Item ↓ 4⃣ Add Post Details ↓ 5⃣ Updated Feed | 1⃣ Application Feed ↓ 2⃣ Select Friends ↓ 3⃣ Friends Notified to Collaborate on Bill ↓ 4⃣ Each Person Links Themselves to Food Items ↓ 5⃣ Add Post Details ↓ 6⃣ Updated Feed | 1⃣ Application Feed ↓ 2⃣ Add Post Details ↓ 3⃣ Log Food Items ↓ 4⃣ Search For Friends for Each Food Item ↓ 5⃣ Add Post Details ↓ 6⃣ Updated Feed |
With the above concepts, I wanted to quickly visualize what each of these might look like and created the following:
Ultimately, I decided on `**User Flow A (Group Focus)**`
because I wanted the first thing users saw was a list of their friends. This exploration places more emphasis on the interpersonal aspect of it which I believe is the more relevant value proposition over the utility of splitting a bill.
Additionally:
`**User Flow C (Collaboration)**`
might prove to be too chaotic especially looking at my research where a lot of people use the time at the end of the meal to go to the bathroom, think about next steps, check their phone, etc.`**User Flow B (Utility Focus)**`
searching for people for each food item puts the focus on the food rather than the group/interpersonal aspect`**User Flow D ('Quality Post' Focus)**`
puts the bill splitting in the same importance as pictures, rating, location and takes away from what would be the primary function of this application.
✨ Refining the Flow
Going off of interaction A, I then began refining the user flow.
☑ Information Requirements
Having settled on the above, I then looked at each part of the flow and decided for each step what:
- I was trying to achieve (Interaction Goals) and
- the information hierarchy would be. | Part of the Process | Interaction Goals | Information Hierarchy | | --------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Application Feed - Homepage of the application | - Incite people to browse through food pictures
- Offer users insight into how good a restaurant might be
- Interest users through social relationships
- Incite users to react (like/comment/etc.) to a dining experience | - Split the Bill CTA
- People involved in a shared dining experience
- Restaurant Rating
- Food Picture(s)
- Like (maybe called something else?) CTA
- Amount of likes
- Comment CTA
- Amount of comments
- Preview of comments
- Date
- 9 days ago vs. Feb 01 vs. 5:28pm | | Select Friends - Add people that you dined out with and are splitting the bill with. User is automatically included | - Quickly select the people involved in the dining experience
- Clear indication of who has been selected
- Indication that the user is automatically tagged as a part of the experience | - Top Friends
- Friends Information
- Name
- Picture
- Mutual Friends
- Access to their profile
- Selected State
- Unselected State
- Next Button | | Link Food to Friends - Log what was eaten during the meal and allocate your selected friends with the food items they took part in eating | - Quickly link friends to the food they ate
- Ability to quickly and accurately overview who ate what
- Quickly log what was is on the bill
- Clear indication between:
- Requesting money for the user (self)
- Sending payment requests to everyone else to pay someone else (someone else paid the bill)
- Clear indication that the tip amount will be split amongst everyone
- Ability to enter in custom tip amount | - List of all logged food items
- Price of each logged food item
- Friends involved in the dining experience
- Indication that someone is linked to a food item
- Custom tip entry
- Tip presets
- Directed Payment CTA
- Request CTA
- Directed Payment confirmation
- Indication of who is being paid
- Request confirmation | | Enter Post Details - Add details including the restaurant name, images of food, rating of the restaurant, and a caption | - Users care about what they are publicizing to everyone and create a ‘quality’ post
- Users are able to quickly add the name of the restaurant
- Users add the best images of their food
- Users give an accurate rating of what they felt about the restaurant | - Restaurant Name Input
- Images Input
- Caption Input
- Rating Input | | Updated Application Feed - Application feed is updated to show your new shared experience | - Indication that the feed was indeed updated
- Users ‘admire’ their created post | - Feedback that something happened |
Design
Having laid out all the information I needed, I started working on how to visually show each part of the process. This involved lots of explorations and referencing my insights/interaction goals to help make certain design decisions
🖍 Medium Fidelity Explorations
Next, I created medium fidelity mockups to explore higher level things such as list vs. grid layouts, entry/exit points, information hierarchy…etc.
Below are some of the main design decisions I made and rationale for my selected solution.
Entry Point (Application Home)
**Bottom Nav CTA**
`` put the most emphasis on the action and would allow for other features to be placed up front such as friends, discovery…etc. I discussed how this application should be more than just a pure bill splitter so a bottom nav CTA allows for this.`**Top Nav CTA**`
made to feel quick like composing a message, but felt too similar to venmo and also de-prioritizes splitting the bill`**In-Feed CTA**`
associates the act of splitting the bill with the social feed, but is not accessible once feed is scrolled through
Feed Card Layout (Application Home)
**Small Group Profile Pictures**
`` puts the focus on the group rather than the individual. Smaller icons also make sense in this context because these people are mainly your closer friends and therefore more easily recognizable`**Single Person + Large Image**`
focus is on the individual and their sense of taste in food and ability to take a quality picture. However, this would be limited to just the poster being highlighted as opposed to everyone else`**Single Person + Larger Image**`
focus is on the image, but makes the focus of this application food pictures rather than the ability to split a bill
Paying Someone vs. Requesting Payment (After Linking Food to Friends)
In research, I observed two main methods for splitting the bill including the person paying either calculate request venmo funds themselves or allocate the responsibility of paying them back to each person.
If I pay, can you guys do the math to figure out how much you owe and pay me?
I wanted to design for both these scenarios and followed a similar model to Venmo’s Request/Pay model but looked at different ways of confirmation. This was important because the person splitting the bill is responsible for directing payment requests to other people on behalf of the person paying the bill.
**Paying the 'Fronter'**
/**Requesting Money From Other People**
: I opted for these solutions as it gave the user all the information up front and followed the same model of horizontal scroll. Originally, I wanted to dismiss the ‘Recipient Overview’ so that the issue of money confrontation (first research insight) would not be as relevant and in the users face. Ultimately though, I felt that with something as serious as giving someone money, it made the most sense to supply as much information as possible- Linking Friends to Food
**Bottom Nav CTA**
`` Horizontal view makes the list seem shorter and therefore the process of splitting the bill seem more efficient`**Top Nav CTA**`
made to feel quick like composing a message, but felt too similar to venmo and also de-prioritizes splitting the bill`**In-Feed CTA**`
associates the act of splitting the bill with the social feed, but is not accessible once feed is scrolled through
+Full Layout/Interaction Explorations
📲 Medium Fidelity Prototype
With all this in mind, I created a quick medium prototype in order to better visualize my idea. It was one thing to have in my head how parts would connect, but another to see it in action.
https://player.vimeo.com/video/259613292
🔤 Copy Document
With this prototype, I looked at the wording of specific instructions and actions. I created a copy document of all the relevant vocabulary in each step and narrowed down what made the most sense.
For example, I initially struggled with how to properly differentiate between requests and payments to someone else.
- Requests was the case where you paid, and you are splitting the bill yourself (and therefore requesting people to pay you. On the other hand, payments to someone else meant that while you might have paid, you allocated the responsibility of splitting the bill to someone else.
Ultimately, I settled on ``**Request Payment**
*and * **Someone Else Paid**
after quickly testing with with a few different people on what they thought would happen next.
Another great example of how this copy document came into play was how I would list out different food items (i.e **Super Burrito**` `` vs.
Super Burrito ($12.25)` ``). Coming from a hospitality/restaurant background, I knew that menu designs typically don’t place dashes/parentheses around dollar amounts to avoid drawing attention to them. This document helped me visualize this and make that design decision
🖌 High Fidelity Mockups
With a solid idea and set of medium fidelity explorations to go off of, I then worked to create high fidelity explorations where I looked more closely at things such as color, spacing, iconography, buttons and motion.
📲 Final Prototype
https://player.vimeo.com/video/259612719
🎨 Style Guide
Final Considerations
📏 Edge Cases
Product Reach
- What if somebody doesn’t have this app? or even a smartphone? How will they be notified or reminded of how much they owe someone? What would the interaction be for the person splitting the bill to search for, say, a phone number. And also, what would that notification look like for someone without the application?
Further explore manual entry
- What happens if a user’s camera is broken or not able to accurately analyze what is on a bill? What kind of error would it give the user? How valuable is this edge of the user base?
🔜 Next Steps
Further explore the above edge cases I thought about the concept of using text messages or email as another way to request payment but would want to explore this option a bit more. Also how would manual input work? would it be possible to pull menu data from the restaurant to make this process easier? And if so what might that look like?
Usability Testing Next, I would start looking for ways to test the usability of this solution and look look at how long it would take for a user to successfully split a bill, how often users step back in the process, and how people perceive the social aspect of this application.
😊 Thanks For Reading
Appendix
📂 Design Folder
- All Assets: https://www.dropbox.com/sh/hhg2uby826d3sud/AACSitfhHBzCtdJLMl8eTd0ia?dl=0
Drawn-Out Sketches
- Sketches: https://www.dropbox.com/sh/ckbgx0tvwmw4u6f/AAB7EVGTJspgyfRByuZuGfPpa?dl=0
📲 Prototypes
- HiFi Prototype: https://www.dropbox.com/s/zi7t15xbz84kmr5/HiFi%20-%20Prototype.mov?dl=0
- MedFi Prototype: https://www.dropbox.com/s/emldsea6crjxawk/MedFi%20-%20Prototype.mov?dl=0
🖍 Artboard Explorations
- HiFi Explorations: https://www.dropbox.com/s/mhysgmox8kecaz8/HiFi%20Explorations.png?dl=0
- MedFi Explorations: https://www.dropbox.com/s/zmz4ofz0nxks24x/MedFi%20Explorations.png?dl=0
- Copy Document: https://www.dropbox.com/s/jpqbkga6fuqxynv/Copy%20Document.pdf?dl=0
📸 Photos
- Lunch: https://www.dropbox.com/s/th8f4ylw7hb73sl/Lunch.png?dl=0
- Dinner1: https://www.dropbox.com/s/uwvhftjagukvwhq/Dinner1.jpg?dl=0
- Dinner 2: https://www.dropbox.com/s/v7ys2mwupabf3i8/Dinner2.jpg?dl=0
💎 Sketch Files
- Master File: https://www.dropbox.com/s/mhvmxhl7jyu9k4h/Dropbox%20Design%20Challenge.sketch?dl=0


--- layout: post title: Korona @ OpenSolaris date: '2010-03-27T10:34:00.002+01:00' author: Luca Ferrari tags: - opensolaris - kde modified_time: '2010-03-27T10:34:58.476+01:00' blogger_id: tag:blogger.com,1999:blog-1836481905487384887.post-239373049324197369 blogger_orig_url: http://fluca1978.blogspot.com/2010/03/korona-opensolaris.html permalink: /:year/:month/:day/:title.html ---


Except where otherwise noted, the contents of this website are © {{ COPYDATE }} — {{ CURDATE }} {{ AUTHOR }} and is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Built using Pelican.
Theme adapted from pelican-svbhack.
{% if INTERNET_DEFENSE_LEAGUE %}Member of the Internet Defense League.{% endif %}


|
19.08
|
Descriptor used by the GEMM kernels. More...
#include <KernelDescriptors.h>
Data Fields | |
| unsigned int | m { 0 } |
| Number of LHS rows. More... | |
| unsigned int | n { 0 } |
| Number of RHS columns. More... | |
| unsigned int | k { 0 } |
| Number of LHS columns or RHS rows. More... | |
| unsigned int | depth_output_gemm3d { 0 } |
| Depth of the output tensor in case is reinterpreted as 3D. More... | |
| bool | reinterpret_input_as_3d { false } |
| Flag used to reinterpret the input as 3D. More... | |
| bool | broadcast_bias { false } |
| Flag used to broadcase the bias addition. More... | |
| ActivationLayerInfo | activation_info {} |
| Activation function to perform after the matrix multiplication. More... | |
Descriptor used by the GEMM kernels.
Definition at line 55 of file KernelDescriptors.h.
| ActivationLayerInfo activation_info {} |
Activation function to perform after the matrix multiplication.
Definition at line 63 of file KernelDescriptors.h.
| bool broadcast_bias { false } |
Flag used to broadcase the bias addition.
Definition at line 62 of file KernelDescriptors.h.
Referenced by CLGEMMMatrixMultiplyNativeKernel::configure(), CLGEMMMatrixMultiplyReshapedOnlyRHSKernel::configure(), and CLGEMMMatrixMultiplyReshapedKernel::configure().
| unsigned int depth_output_gemm3d { 0 } |
Depth of the output tensor in case is reinterpreted as 3D.
Definition at line 60 of file KernelDescriptors.h.
Referenced by arm_compute::misc::shape_calculator::compute_mm_shape(), CLGEMMMatrixMultiplyNativeKernel::configure(), CLGEMMMatrixMultiplyReshapedOnlyRHSKernel::configure(), and CLGEMMMatrixMultiplyReshapedKernel::configure().
| unsigned int k { 0 } |
Number of LHS columns or RHS rows.
Definition at line 59 of file KernelDescriptors.h.
Referenced by CLGEMMMatrixMultiplyReshapedKernel::configure().
| unsigned int m { 0 } |
Number of LHS rows.
Definition at line 57 of file KernelDescriptors.h.
Referenced by arm_compute::misc::shape_calculator::compute_mm_shape().
| unsigned int n { 0 } |
Number of RHS columns.
Definition at line 58 of file KernelDescriptors.h.
Referenced by arm_compute::misc::shape_calculator::compute_mm_shape().
| bool reinterpret_input_as_3d { false } |
Flag used to reinterpret the input as 3D.
Definition at line 61 of file KernelDescriptors.h.
Referenced by arm_compute::misc::shape_calculator::compute_mm_shape(), CLGEMMMatrixMultiplyNativeKernel::configure(), and CLGEMMMatrixMultiplyReshapedOnlyRHSKernel::configure().


{%load static%}
Give us your pincode and email get instant notifications when a vaccine slot opens near you
Maintained by Adit Negi, Shreyansh Singh, Shivam Rawat
We're open for any suggestion or just to have a chat
GitHub Repo: cowin_app
Phone: + 91<PHONE_NUMBER>
Email<EMAIL_ADDRESS>Website aditnegi.com


The build process on Linux should be very familiar. To start either clone the git repository or download an unpack a tarball from the landing page.
The default prefix is set for Ubuntu or Fedora (/usr) so you may need to adjust this for another Linux distribution so that headers and libraries get sent to the right place.
To build the libraries and install them + the headers:
$ autoreconf -i -f
$ ./configure
$ make -j <parallelism, 1.5x times number of cores/cpus>
$ sudo make install
If you want to run the unit tests, you can type
$ make check
This will produce and run an executable called dnp3test that uses boost::unit_test_framework command line arguments. Extensive documentation on this can be found [here](http://www.boost.org/doc/libs/1_53_0/libs/test/doc/html/index.html), but a good default invocation so that you can see a progress bar is:
$ ./dnp3test --show_progress
Once you have the library installed, you may also want to check out the demo programs. They use a separate autotools instance in cpp/demos. The reason this is done this way is so that during development the demos can be used a test that the main toolchain is properly installing the right libraries and headers.
./configure CXXFLAGS="--coverage -g -O0" LDFLAGS="--coverage -g -O0"
make check
./dnp3test
./openpaltest
now generate the info file with lcov
lcov -c -d ./ -b ./ -o coverage.info
and then the html versions:
genhtml coverage.info -o test_html


SRM INSTITUTE OF SCIENCE AND TECHNOLOGY
Kattankulathur-603203,Kancheepuram Dt, Tamilnadu,India Ph:044-27617777
Home
Register
Courses
Contact Us
Contact Us
Name
firstname
last name
Email
Issue
Submit
follow us at:
Copyright © 2020, SRM INSTITUTE OF SCIENCE AND TECHNOLOGY


Use the below form to complete your donation — on mobile or desktop, in whatever browser you choose — it should only take a moment! (And if you're using iOS/macOS, you can also use Apple Pay directly to make donation even faster!)
Oops! You'll need JavaScript enabled to donate with Stripe!
Go to the main page.


This is the service landing page for Promathia. You can find various service listings below. You can use your browser find feature to find something specific, if needed.
Unless otherwise noted, the address of all services is promathia.vaughanhilts.me. Some services have their own address.
| Service | Service Notes |
|---|---|
| Personal Blog | Powered by Jekyll |
| Pokemon Showdown | Hackmon Doubles & other things. Server port 6978 |
| Team Fortress 2 | Port 7777 |
| Minecraft Server | Port 25565 |
| Risk of Rain | Port 11100 |
| Nasomi Page | FFXI stats & other things |


Hyacinth
Demo Video
Project Info
| Project Duration | 48 hours |
| Genre | 2D Puzzle Game |
| Team Size | 1 Programmer, 1 Artist, 1 Desinger, 1 Sound Designer |
| Team Members | WANG Bokang, GUAN Zitai, XU Fan, ZHOU Mo |
| Platform | Windows |
| Tools | Unity |
| My Contributions | Programming, Project Management, Story Design, Playtesting |
| Related Links |
|
Introduction
Hyacinth is a 2D puzzle game we developed during
, under the theme of “What home means to you?” It tells a story about family conflicts in a child’s view. I believe everyone suffers from family conflicts to some extent. We wanted to use this game to attract people’s more attention to this issue.Design
In this game, the blue circle, the red circle and the orange circle stand for father, mother and child respectively. There are three scenes in each level and there is a map in each scene. The crosses in the left and right scenes represent the conflicts of parents. The player needs to connect father and mother without passing through the crosses.
This game reflects a common social phenomenon: how dysfunctional family relationships can have a negative impact on children. The idea came from our own experience. I always believe that personal experience is a great source of inspiration. For the gameplay, we offered a narrative which brought the players closer to childhood trauma, with a puzzle-solving process representing a child reconciling family difficulties.
We learned from many famous games such as Florence, Undertale and The Witness. We combined the advantages of those games with our own ideas. Although the theme of this game is sad, this game tells a hopeful story. In the beginning, the child in the game suffered from the pain brought by parental conflicts. He tried to resolve conflicts but failed. He felt so helpless and depressed. At this time, a girl appeared in his world. The girl saved this boy with love. Finally, they get married and have a happy family.
There is a specially designed level. At this level, the puzzle seems very complicated. The player may feel very anxious. Actually, there is no solution for this level. When the player clicks the check mark to submit the answer, the screen will become darker. After three times, the player can pass this level. We want to use this design to let the players feel children’s helpless, fear, anger and the urge to escape from this broken home.
My Contributions
- As a designer, I participated in the design of the story.
- As a programmer, I finished all the programming work such as the gameplay and UI.
- As a team leader, I was responsible for the project management. Making a game in 48 hours is a really challenging job. My solution was to divide the whole project into small tasks and set a deadline for each task. This is a really useful method to control the progression of the project. Also, I made a detailed schedule on the priority lists for all art and sound assets so that we can work more efficiently. Finally, we successfully developed this game in a limited time.
Notable Experience
- Completed a full game production cycle within 48 hours.
- Combined the gameplay with storytelling and successfully struck a responsive chord in the hearts of players.
- Met many indie game developers and became friends with them.


Enter the email address associated with your InvenTurbo account
{{ errorMessage ? errorMessage : ' ' }}


FreeBSD: Set Primary Nameserver(s) in resolv.conf
I’ve been having trouble with my ISP’s nameserver so I wanted to switch over to Google’s public DNS.
The issue I had was that each time I rebooted my system resolvconf
would
be provided with my ISP’s nameserver (as part of the DHCP process) and
would set this in /etc/resolv.conf
. This replaced any changes I made during
my last session (as it should).
After a poke around in the man pages resolveconf(8)
and resolvconf.conf(5)
I found that I could prepend a set of nameservers to my resolv.conf
. It would
then fall back to any other nameservers provided to resolvconf
when required.
This can be done simply by adding the following to /etc/resolvconf.conf
(create this if it isn’t there):
# Replace with the ip(s) of your chosen nameserver
name_servers="<IP_ADDRESS> <IP_ADDRESS>"
You can then regenerate /etc/resolv.conf
using:
$ resolvconf -u
And your /etc/resolv.conf
should look something like:
$ cat /etc/resolv.conf
# Generated by resolvconf
search lan
nameserver <IP_ADDRESS>
nameserver <IP_ADDRESS>
nameserver <IP_ADDRESS>
Enjoy!


| State |
Theater Name |
Theater Address |
Online Ticketing |
| AR |
Malco Sunset Cinema |
Sunset Square Shopping Center, 2940 W
Sunset Ave, Springdale, AR 72762 |
Buy |
| AZ |
Arizona Mills 25 |
5000
S Arizona Mills Cir, Tempe, AZ 85282 |
Buy |
| AZ |
Landmark Bell
Road Cinemas |
2710
W Bell rd, Phoenix, AZ 85053 |
Buy |
| CA |
Towne 3 Cinemas |
1433 The Alameda, San
Jose, CA 95126 |
Buy |
| CA |
Century 25 Union
City |
32100 Union Landing,
Union City, CA 94587 |
Buy |
| CA |
Century Stadium
25 and XD |
1701
W. Katella Ave., Orange, CA 92867 |
Buy |
| CO |
Century Aurora
and XD |
14300
East Alameda Ave., Aurora, CO 80012 |
Buy |
| CT |
Buckland Hills
18 + IMAX |
99
RedStone Road, Manchester, CT 06045 |
Buy |
| GA |
Digimax
Theaters, Atlanta |
10743
Alpharetta Hwy, Roswell, GA 30076 |
Buy |
| IL |
MovieMax Cinemas |
9180
W Golf Rd, Niles, IL 60714 |
Buy |
| MA |
Apple Cinemas |
168
Alewife Brook Pkwy, Cambridge MA 02138 |
Buy |
| MI |
Ann Arbor 20 +
IMAX |
4100
Carpenter Road, Ypsilanti, MI 48197 |
Buy |
| MN |
Cinema 6 |
5400 EXCELSIOR BOULEVARD, ST LOUIS
PARK, MN 55416 |
Buy |
| NC |
Ayrsley Grand
Cinemas 14 |
9110 Kings Parade
Blvd, Charlotte, NC 28273 |
Buy |
| NC |
Frank Theaters |
1140 Parkside Main
St, Cary, NC 27519 |
Buy |
| NJ |
Movie City |
1655
Oak Tree Ave, Edison, NJ 08820 |
Buy |
| OH |
The Screens at
the continent |
6360 Busch Blvd,Columbus OH
43229 |
Buy |
| TX |
Regal Maccarthur
Dallas |
Regal MacArthur
Marketplace 16, 8505 Walton Blvd, Irving TX 75063 |
Buy |
| TX |
Venetian Cinemas |
2661
Midway Rd #200, Carrollton, TX 75006 |
Buy |
| TX |
SW Theaters Lake
Creek 7 |
13729 Research Blvd
#1500, Austin, TX 78750 |
Buy |
| TX |
Cinemark Movies
16 |
5063
N.W. Loop 410, San Antonio, TX 78229 |
Buy |
| TX |
Cinemark Memorial City |
Memorial City Mall,
310 Memorial City Way, Houston, TX 77024 |
Buy |
| VA |
DC Cinemas |
7291
Arlington Blvd, Falls Church, VA 22042 |
Buy |
| WA |
Roxy Cinemas |
25 S. Grady Way, Renton WA 98057 |
Buy |


{% extends 'base.html' %} {% block title %}Server Error{% endblock %} {% block content %}
The server encountered an error and could not complete your request.
If the problem persists, please report your problem and mention this error message and the query that caused it.
{% endblock %}


|
CUDNN API
8
|
#include <cudnn_frontend_EngineConfig.h>
Public Member Functions | |
| std::string | describe () const override |
| Return a string describing the backend Descriptor. More... | |
| EngineConfig_v8 (EngineConfig_v8 &&from) | |
| ~EngineConfig_v8 ()=default | |
| std::string const & | getTag () const |
| Public Member Functions inherited from cudnn_frontend::BackendDescriptor | |
| cudnnBackendDescriptor_t | get_raw_desc () const |
| cudnnStatus_t | get_status () const |
| Current status of the descriptor. More... | |
| void | set_status (cudnnStatus_t const status_) const |
| Set status of the descriptor. More... | |
| void | set_error (const char *message) const |
| Set Diagonistic error message. More... | |
| const char * | get_error () const |
| Diagonistic error message if any. More... | |
| ManagedOpaqueDescriptor | get_desc () const |
| Returns a copy of underlying managed descriptor. More... | |
| cudnnStatus_t | initialize_managed_backend_pointer (cudnnBackendDescriptorType_t type) |
| Initializes the underlying managed descriptor. More... | |
Private Member Functions | |
| EngineConfig_v8 () | |
| EngineConfig_v8 (EngineConfig_v8 const &)=delete | |
| EngineConfig_v8 & | operator= (EngineConfig_v8 const &)=delete |
Private Attributes | |
| ManagedOpaqueDescriptor | engine = nullptr |
| int64_t | numKnobs = 0 |
| std::string | opGraphTag |
| std::array< ManagedOpaqueDescriptor, CUDNN_KNOB_TYPE_COUNTS > | bChoices = {} |
| Opaque pointer to the backend knobs. More... | |
Friends | |
| class | EngineConfigBuilder_v8 |
Additional Inherited Members | |
| Protected Member Functions inherited from cudnn_frontend::BackendDescriptor | |
| BackendDescriptor (ManagedOpaqueDescriptor pointer_, cudnnStatus_t status_, std::string err_msg_) | |
| BackendDescriptor ()=default | |
| Protected Attributes inherited from cudnn_frontend::BackendDescriptor | |
| ManagedOpaqueDescriptor | pointer |
| cudnnStatus_t | status = CUDNN_STATUS_SUCCESS |
| Shared pointer of the OpaqueBackendPointer. More... | |
| std::string | err_msg |
| Error message if any being set. More... | |
EngineConfig_v8 Class This class tells the Configuration of the Engine_v8 in terms of the knob choices Properties:
Use EngineConfigBuilder_v8 to build this class. Describe returns a string describing the tensor class
Definition at line 51 of file cudnn_frontend_EngineConfig.h.
|
inline |
Definition at line 61 of file cudnn_frontend_EngineConfig.h.
References bChoices, and ~EngineConfig_v8().
|
default |
Referenced by EngineConfig_v8().
|
inlineprivate |
Definition at line 76 of file cudnn_frontend_EngineConfig.h.
References bChoices, cudnn_frontend::make_shared_backend_pointer(), operator=(), cudnn_frontend::set_error_and_throw_exception(), and cudnn_frontend::BackendDescriptor::status.
|
privatedelete |
|
inlineoverridevirtual |
Return a string describing the backend Descriptor.
Implements cudnn_frontend::BackendDescriptor.
Definition at line 55 of file cudnn_frontend_EngineConfig.h.
References numKnobs.
|
inline |
Definition at line 71 of file cudnn_frontend_EngineConfig.h.
References opGraphTag.
|
privatedelete |
Referenced by cudnn_frontend::EngineConfigBuilder_v8::build(), and EngineConfig_v8().
|
friend |
Definition at line 53 of file cudnn_frontend_EngineConfig.h.
Referenced by cudnn_frontend::EngineConfigBuilder_v8::build().
|
private |
Opaque pointer to the backend knobs.
Definition at line 97 of file cudnn_frontend_EngineConfig.h.
Referenced by EngineConfig_v8().
|
private |
Definition at line 94 of file cudnn_frontend_EngineConfig.h.
|
private |
Definition at line 95 of file cudnn_frontend_EngineConfig.h.
Referenced by describe().
|
private |
Definition at line 96 of file cudnn_frontend_EngineConfig.h.
Referenced by getTag().


Operations outputs
Edit (pull request)Operations can also expose values at the end of their execution, called outputs.
According to TOSCA norm, these so called operations outputs should be exposed as environment variables by the implementation script of the related operation.
Export the output
Export the outputs as environment variable using the good way depending on the file type.
- For shell:
export OUTPUT_NAME="value"
- For bat/cmd:
set OUTPUT_NAME="value"
- For groovy: Here we will export it as a property, as there is no way to modify environment in this case
OUTPUT_NAME = "value"
// or
setProperty("OUTPUT_NAME", "value")
//
//but definitely NOT
def OUTPUT_NAME = "value" //this will create a local variable instead
There is a known limitation: some characters are not supported in the output value: "," , "=", [space]
.
Use the output
see get_operation_output for more details.
Be aware that use of the get_operation_output function on relationships operations add[remove]_source[target] input parameters might result with null or wrong computed inputs values.
The best practice would be to define an attribute on the node that will hold the useful output, and then using it as an input for the relationships operation with get_attribute function.
</br>
On the other side, the usage on the node template interfaces operations is fully supported.


CFL commissioner Randy Ambrosie optimistic about sale prospects for Alouettes and Lions
CFL commissioner Randy Ambrosie is expressing optimism about the potential sales of the Montreal Alouettes and B.C. Lions.
Ambrosie says the CFL is in discussions with one unidentified group for the purchase of the Alouettes. He is hopeful the transaction will be done in a few weeks.
The CFL bought the Alouettes from the Wetenhall family before the season.
Grey Cup: Everything you need to know about Sunday’s CFL final
Ambrosie also says he expects discussions for the sale of the David Braley-owned Lions to intensify in the coming weeks.
Braley has expressed interest in selling the franchise.
Ambrosie also says he feels good about the future of the Toronto Argonauts under Maple Leaf Sports and Entertainment ownership. The team has been plagued by poor attendance, including one crowd of under 10,000 this year.


Address: Albertinen strasse 24, Berlin, Germany
Telephone: +421 903 551 904
Email<EMAIL_ADDRESS>Date of birth:27.12.1990
Angular/Ionic/Vanilla JS/Html5/CSS
Working as FE developer currently on 3 projects in comapany Carmudi. Developing new features according bussiness needs
Java/JS/AEM
3months web development training finished by final project that we were working on in group of 5 people
C++/C#
Working on Ultrasound features development according medical needs.
My interests include traveling. playing a guitar which is for me the best way to meditate, bouldering, hiking, horse riding, painting and slack line walking. I also like reading books of any genres


Let's get to the code
How to integrate MoSKito into your code and your environment
How to integrate MoSKito into your code and your environment
Welcome to the integration reference page. This page will provide you with integration option for different type of applications, integration via AOP which is suitable for almost everyone, CDI - for JEE Containers, Spring for ... yes Spring, and also some other integration option. We will round this up with the integration manual for the MoSKito Inspect Web Application.
One of the easiest way to integrate MoSKito into your code is to use AOP with AspectJ. You need three steps:
<properties>
<moskito.version>2.5.5</moskito.version>
</properties>
<dependency>
<groupId>net.anotheria</groupId>
<artifactId>moskito-core</artifactId>
<version>${moskito.version}</version>
</dependency>
<dependency>
<groupId>net.anotheria</groupId>
<artifactId>moskito-aop</artifactId>
<version>${moskito.version}</version>
</dependency>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.4</version>
<configuration>
<aspectLibraries>
<aspectLibrary>
<groupId>net.anotheria</groupId>
<artifactId>moskito-aop</artifactId>
</aspectLibrary>
</aspectLibraries>
<source>1.6</source>
<target>1.6</target>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
//simply add @Monitor to any class you want to monitor
@Monitor
public class MonitoredClass {
public void firstMethod() {
//do something
}
public void secondMethod() {
//do something else
}
//you can also exclude methods from monitoring:
@DontMonitor
public void doNotMonitorMe() {
}
//or you can just monitor one or multiple methods:
public class ClassWithMonitoredMethod {
@Monitor
public void firstMethod() {
//do something
}
Check out MoSKito examples, AOP Module on GitHub and Guide on Annotations for more information.
If you want to use MoSKito in JEE Environment or simply in context of JSR-299, MoSKito CDI support is the way to go.
<properties>
<moskito.version>2.5.5</moskito.version>
</properties>
<dependency>
<groupId>net.anotheria</groupId>
<artifactId>moskito-core</artifactId>
<version>${moskito.version}</version>
</dependency>
<dependency>
<groupId>net.anotheria</groupId>
<artifactId>moskito-cdi</artifactId>
<version>${moskito.version}</version>
</dependency>
//simply add @Monitor to any CDI managed bean
@Monitor
public class MonitoredClass {
public void firstMethod(){
//do something
}
public void secondMethod(){
//do something else
}
//you can also exclude methods from monitoring:
@DontMonitor
public void doNotMonitorMe(){
}
//or you can just monitor one or multiple methods:
public class ClassWithMonitoredMethod {
@Monitor
public void firstMethod(){
//do something
}
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
<interceptors>
<class>net.anotheria.moskito.integration.cdi.CountInterceptor</class>
<class>net.anotheria.moskito.integration.cdi.CallInterceptor</class>
<!-- add those to be able to mark a category or subsystem -->
<class>net.anotheria.moskito.integration.cdi.WebCallInterceptor<class>
<class>net.anotheria.moskito.integration.cdi.ServiceCallInterceptor</class>
<class>net.anotheria.moskito.integration.cdi.DaoCallInterceptor</class>
</interceptors>
</beans>
Check out MoSKito JBoss example project on GitHub and Guide on Annotations for more information.
MoSKito comes with 2 Javaagents, a light version for quick fixes and a full blown javaagent with all features similar to the AOP. The later is yet BETA (as of 2.8.4). The javaagents can be downloaded from the moskito download page. Alternatively you can build them yourself from github sources here: https://github.com/anotheria/moskito-javaagent and here: https://github.com/anotheria/moskito-javaagent-lite. The download packages contain READMEs with instructions.
There are two easy ways to integrate MoSKito into your spring application. First: use classic AOP straight away.
You can also use spring-aop to even spare the annotations. Check out MoSKito Spring AOP Example on how to create your spring aspects and declare beans. Example:
<!-- start AOP -->
<bean id="moskitoAspect" class="org.anotheria.moskitoexamples.spring2.SpringAspect"/>
<aop:config proxy-target-class="true">
<aop:aspect ref="moskitoAspect" order="1">
<aop:around method="doProfiling"
pointcut="org.anotheria.moskitoexamples.spring2.SpringAspect.aroundEveryMethod() and target(org.anotheria.moskitoexamples.spring2.b.BServiceImpl)"/>
</aop:aspect>
<aop:aspect ref="moskitoAspect" order="1">
<aop:around method="doProfiling"
pointcut="org.anotheria.moskitoexamples.spring2.SpringAspect.aroundEveryMethod() and @within(net.anotheria.moskito.aop.annotation.Monitor)"/>
</aop:aspect>
</aop:config>
<!-- end of AOP -->
MoSKito comes with some juicy set of out-of-the-box web statistics. To include them in monitoring you simply have to add the jar to your dependencies (or put it into the WEB-INF/lib folder):
<dependency>
<groupId>net.anotheria</groupId>
<artifactId>moskito-webui</artifactId>
<version>2.4.2</version>
</dependency>
If you don't have servlet 3.0 compliant container, you will have to add the filters either programmatically or to your web.xmlstrong>. It is pretty simple still:
<filter>
<filter-name>RequestURIFilter</filter-name>
<filter-class>net.anotheria.moskito.web.filters.RequestURIFilter</filter-class>
<init-param>
<param-name>limit</param-name>
<param-value>100</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>RequestURIFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Check the MoSKito Web Fragment for the further examples and our web integration page for explanations on filters and listeners.
The ehcache integration guide will make his appearance shortly, however, in the meantime there is an ehcache integration example project on github.
Java Runtime Proxies (java.lang.reflect.Proxy) was the first available way of MoSKito Integration back in 2007. The proxies are less convenient as aspect oriented monitoring but they have their positive sides:
Proxies are part of the moskito-core package and are integrated via maven, gradle or ant, similar to the AOP or CDI pom magic. Assuming you have a service:
public interface SimpleService{
void doSomethingMethod();
}
and an implementation:
public class SimpleServiceImpl implements SimpleService{
public void doSomethingMethod(){
}
With declared dependencies simply call this line in your code:
SimpleService service = ProxyUtils.createServiceInstance(new SimpleServiceImpl(), "default", SimpleService.class);
Every call that you perform through your service variable is monitored. If you create a second proxied SimpleService instance, you will have them both in MoSKito Inspect and can separate between them.
Of course you are not limited to monitor 'services', each and every interface can be monitored. Visit Integration guide on proxies for more options and details.
One note, though: monitored proxies are memory resident, and it's generally not a good idea to create them on each call, since they will be referenced by the registry and never die.
So in cases you want to measure what happens in a class, which objects are continuously reinstantiated, you need CallExecution.
In case you want to monitor just a part of your method or your code is splittered in multiple chunks along multiple threads/classes/methods or you simply don't have an object that is
supposed to live long and create new executors continuously (for example the command pattern) - Call Execution is what you need.
Basically CallExecution consists of two steps:
private OnDemandStatsProducer<ServiceStats> producer;
public SomeConstructorOrInitMethod(){
producer = new OnDemandStatsProducer<ServiceStats>("my-business-process", "category", "subsystem", ServiceStatsFactory.DEFAULT_INSTANCE);
ProducerRegistryFactory.getProducerRegistryInstance().registerProducer(producer);
}
CallExecution execution = producer.getStats("phase1").createCallExecution();
execution.startExecution();
//now we are doing something extremely important...
execution.finishExecution();
The producer my-business-process will show up in MoSKito Inspect with stat phase1. Of course you can have multiple phases associated with one producer (or multiple calls for that matter).
You will also be able to pause/resume phases with multiple execution parts in 2.5.0.
See Example on CallExecution on GitHub for more details.
Usually after integrating something into something else, you want to see the results. To see the results of your MoSKito Integration you need a kind of UI. Surely you can watch the logs,
but this is kind of boring, and there are no good pictures to show. Therefore, we will stick with the Web User Interface - short MoSKito Inspect. There are two ways of integrating MoSKito Inspect, either as standalone or directly embedded into your application.
Which one to choose depends on you, standalone version is easier to setup and can connect to multiple servers, embedded - simplifies you deploment.
The integration of the standalone version is explained here, scroll down for the embedded version.
For more information on MoSKito Inspect visit MoSKito Inspect Documentation.
First you'll need to download the Standalone MoSKito Inspect bundle.
The Maven integration of the MoSKito Inspect is basically one dependency in your pom. Thanks to servlet 3 MoSKito Agent for Inspect is automagically started once you add MoSKito jars to your project.
<properties>
<moskito.version>2.6.0</moskito.version>
</properties>
<dependency>
<groupId>net.anotheria</groupId>
<artifactId>moskito-inspect-remote</artifactId>
<version>${moskito.version}</version>
</dependency>
Without maven you will need to add all related jars to your project. We don't provide it, because it can break your other dependencies, but feel free to ask for it on the mailing list or build yourself. Another option would be to pick all the libs from MoSKito Inspect installation.
try{
StartMoSKitoInspectBackendForRemote.startMoSKitoInspectBackend();
}catch(MoSKitoInspectStartException e){
//handle error
log.error("Couldn't auto-start MoSKito Inspect in embedded mode ", e);
}
Embedded mode allows you to embed MoSKito Inspect into your application. This is easier to handle if you only have limited amount of servers, all your components run in web containers anyway and/or you can not allow network connection from standalone inspect to your servers.
For more information on MoSKito Inspect visit MoSKito Inspect Documentation.
The Maven integration of the MoSKito Inspect is basically a small set of pom manipulations. Thanks to servlet 3 MoSKito is automagically added once you add MoSKito jars to your project. All you need are following simple additions to your pom.
<properties>
<moskito.version>2.6.0</moskito.version>
</properties>
<dependency>
<groupId>net.anotheria</groupId>
<artifactId>moskito-web</artifactId>
<version>${moskito.version}</version>
</dependency>
<dependency>
<groupId>net.anotheria</groupId>
<artifactId>moskito-inspect-embedded</artifactId>
<version>${moskito.version}</version>
</dependency>
<dependency>
<groupId>net.anotheria</groupId>
<artifactId>moskito-inspect-jersey</artifactId>
<version>${moskito.version}</version>
</dependency>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<configuration>
<artifactItems><artifactItem>
<groupId>net.anotheria</groupId>
<artifactId>moskito-webui</artifactId>
<version>${moskito.version}</version>
<type>jar</type>
<overWrite>true</overWrite>
<outputDirectory>${project.build.directory}/tmp</outputDirectory>
<includes>moskito/**,**/*.jsp</includes>
</artifactItem></artifactItems>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>unpack</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<webResources>
<resource>
<directory>${project.build.directory}/tmp</directory>
</resource>
</webResources>
</configuration>
</plugin>
We do not provide graddle support ourselves, but there is a blog entry on moskito and graddle: http://coders-kitchen.com/2013/03/29/tutorial-using-moskito-with-cdi/


CDSP ITSO
An organization for BSIT students in Colegio de San Pedro, it focuses on its programs especially provides students with opportunities to discuss various IT issues outside the classroom in order to create a greater appreciation for and understanding of technology. View more...
<CDSP SSC (Supreme Student Council)
The Student Council exists to represent the voice of the students, promote their ideas and advocate their views and interests. It is a fundamentally democratic and non-political institution, with all students given equal opportunity to participate. Its role includes helping the school to serve its students as effectively as possible and making students aware of wider issues, in addition to playing an important role in establishing links with the community.View more...
Teatro Batingaw
The Teatro Batingaw is responsible for perfomances in various school programs promoting the school particularly in theater arts. It takes charge of all college activities such as Foundation Week, Buwan ng Wika, and Christmas Celebration. View more...


Located about 25nm NE of the entrance to the Venitian Lagoon, this holiday complex is based around the traditional fishing port of Caorle.
Position 45°35.2'N, 12°52'E.
For Marina 4, turn to port through the lock and follow the channel right to the end. Use your fog horn to request the foot bridge to be opened, if it is closed. Visitors' berths are opposite the fuel berth.
For Consorzio Darsena Orologio, go further up stream and turn to sta'bd.
Complete shelter here.
Last updated March 2010.


Since the age of 9, I was drawn to computers and technology in
general. As the years passed, I became very proficient using
computers, particularly my Macintosh Performa 635. Before long, I
began to wonder how it all works. With that curiosity, I found
myself completely disassembling my computer and miraculously putting
it all back together with no help at all. YouTube University wasn’t
around back then. After many more years of self-educating myself on
the basics of Information Technology, I landed my first IT job as a
Technical Support Specialist at Philips. With so much exposure to
technology and vital company systems, I knew that I needed to expand
my technical knowledge through formal education. After reading about
the Coding Boot Camp, I knew this would be the opportunity I’ve been
waiting for to help me connect the many “technical dots” that I have
collected over the years.
Since the age of 9, I was drawn to computers and technology in
general. As the years passed, I became very proficient using
computers, particularly my Macintosh Performa 635. Before long, I
began to wonder how it all works. With that curiosity, I found
myself completely disassembling my computer and miraculously putting
it all back together with no help at all. YouTube University wasn’t
around back then. After many more years of self-educating myself on
the basics of Information Technology, I landed my first IT job as a
Technical Support Specialist at Philips. With so much exposure to
technology and vital company systems, I knew that I needed to expand
my technical knowledge through formal education. After reading about
the Coding Boot Camp, I knew this would be the opportunity I’ve been
waiting for to help me connect the many “technical dots” that I have
collected over the years.


Under-fire Dele Alli defends his form
The Tottenham star has faced criticism for his displays this season.
by The42 TeamTOTTENHAM’S DELE ALLI has refuted suggestions his form has dipped this season after he played a starring role in Jose Mourinho’s first game in charge of the club.
Former Manchester United boss Mourinho marked his first game at the helm since replacing Mauricio Pochettino this week with a 3-2 win over West Ham on Saturday.
Alli was in impressive form against Manuel Pellegrini’s side, teeing up Son Heung-min for Spurs’ first and then showing superb footwork to help create Lucas Moura’s second.
Widely criticised for his performances so far this season, Alli was not included in Gareth Southgate’s most recent England squad.
The 23-year-old was in bullish form after the win at the London Stadium, though, insisting there has been nothing below-par about his displays this campaign.
“I think I have been performing well so far this season, despite the results,” he told BT Sport.
Individually I haven’t been playing that badly. A lot of people ask if I am going to find my old form. I don’t want to find my old form; I want to get better than that, improve and use my full potential.”
While conceding it has been an emotional week for Tottenham’s players, Alli said there was never any doubt they would be fully focused on Saturday’s game.
“It’s been a very tough week for us, emotionally,” he added. “Obviously, we spent a long time with Poch and we were all shocked when we heard the news. But we know we have a job to do and got out and perform for the fans.
“No matter what happens we have to stay together as a squad. That’s football; things change. We make sure we get the three points and try and stay as positive as we can.”


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 4
This lighter take on the ever popular sausage roll is filled with a herby crab and salmon mousse.
For this recipe you will need a food processor.
For the crab and salmon roll, make a salmon mousse by blending half the salmon with a pinch of sea salt in a food processor. Add the double cream and process until smooth. Fold the crab meat into the mousse then mix in the herbs and citrus zests. Weigh into 4 portions (about 100g/3½oz each) and mould into sausage shapes.
Cut the pastry into four 17x15cm/6½x6in rectangles. Place the sausages on the pastry lengthways. Brush the edges of the pasty with egg wash. Fold over the pastry to encase the filling and crimp the edges with a fork to seal. Trim off any excess pastry and brush with two coats of egg wash. Store in the fridge until ready to cook (they can be made a day ahead).
Preheat the oven to 200C/180C Fan/Gas 6. Line a baking tray with baking paper.
Bake the pastries for 11 minutes, or until golden-brown and puffed up.
For the brown crab ketchup, squeeze out any excess water from the gelatine then add to a pan with the lemon juice. Dissolve over a very low heat then transfer to a blender. Add the brown crab, Worcestershire sauce, mustard, anchovy essence, ketchup and egg yolk then process until smooth. Add the breadcrumbs and continue to blend until smooth again. With the motor running slowly add the oils in a thin stead stream. Stop the machine and scrape the sides every so often. Season with salt and pepper. Pass through a fine sieve into a small jug or bowl.
Serve the warm rolls on a serving board with the ketchup alongside.


This site
School projects, but too lazy to upload them on github. Plus they're ugly, you don't wanna see them.
Hekatonkheires


This website is great to detect bullying on twitter and its easy to use all you have is register and search account name !
Analyze the accounts to detect the bullying!
Not just detect negative behavior of account even positive tweet
Do you have any questions? Please do not hesitate to contact us directly. Our team will come back to you within a matter of hours to help you.
Riyadh,KSA
11 878 823
contact@bullyingdetecter.com


Production Deployment
This chapter shows how to create tree-shaken, minified JavaScript that
can run in any modern browser.
It relies on the
pub tool
serve
and build
commands,
both of which use a transformer
provided by the angular
package.
Specifying the angular transformer
Before you convert your AngularDart app to JavaScript,
your app's pubspec.yaml
file
needs to specify the angular
transformer:
For more information about transformers, see Pub Assets and Transformers.
Running the sample app
Once your app is working in Dartium,
you're ready to test it in other browsers.
We recommend starting with the pub serve
command,
either from the command line or from Dart Editor.
Pub serve continuously monitors your app's assets,
running transformers as necessary
and serving up the transformed assets.
Pub serve doesn't produce files;
all of the transformed assets are in memory.
To run pub serve
from Dart Editor,
go to the Files view, right-click Chapter_06/web/index.html,
and choose Run as JavaScript.
Dart Editor starts pub serve
, displaying its output,
and brings up the app in your default browser.
Conversion to JavaScript might take half a minute.
Once the app is available, you can test it in other browsers
by copying the URL into them.
Supporting multiple browsers
Angular components use Shadow DOM, but unfortunately it’s not natively supported in all modern browsers, so you need to use a polyfill.
First, make sure that your app's pubspec.yaml
file
contains a dependency on the shadow_dom
package:
Then include the following script tag before any other script tags:
<script src="packages/shadow_dom/shadow_dom.min.js"></script>
Or use the debug version:
<script src="packages/shadow_dom/shadow_dom.debug.js"></script>
Note: Using the polyfill has some limitations, so make sure you are aware of those limitations before you start using it.
Generating deployable files
Use pub build
to generate the app's files.
You can run pub build
either from the command line
or from Dart Editor.
To run pub build
from Dart Editor,
go to the Files view,
right-click the app's pubspec.yaml file,
and choose Pub Build.
The app's deployable files appear
under a directory named build/web.


--- layout: post status: publish published: true title: "归" author: Leask author_login: leask author_email<EMAIL_ADDRESS>author_url: https://leaskh.com wordpress_id: 377 wordpress_url: http://leaskh.wordpress.com/2007/01/26/%e5%bd%92 date: '2007-01-26 19:48:31 +0800' date_gmt: '2007-01-26 19:48:31 +0800' categories: - Life tags: [] comments: [] ---


Peepcode Script
Introduction
Many many people’s first introduction to Ruby on Rails was the 15 minute video from DHH showing how you create a blog application with Rails. Nearly everyone finished that video asking one question: what was that editor? It is awesome.
Let’s take a stroll down memory lane. We pick up the action at the X minute mark:
[transition into a portion of the video that shows off TMs features, plus DHH saying “Whooops!”]
What is interesting, is that as fast as David is able to write his blog application, even with his detour demonstrating the now deleted scaffold command, he never uses any special TextMate extensions for Rails. He uses some HTML snippets and commands and some Ruby snippets and commands. The original Ruby on Rails extensions were in their infancy.
[Open Bundle Editor] A collection of TextMate extensions is called a “bundle”.
When working with Rails with TextMate you’ll use several “bundles”:
- HTML
- Ruby
- Ruby on Rails
- JavaScript
You might also use the ProtoType, jQuery or other JavaScript bundle if you use those libraries.
Ruby on Rails 2.0 was recently released and includes many improvements to
- the syntax that you type [
redirect_to :action => 'show', :id => @person
becameredirect_to @person
] - changes to some file extensions [rhtml → html.erb] and
- changes to some file name conventions [user_controller.rb → users_controller.rb, more commonly].
The Ruby on Rails bundle has also been given a major upgrade to match all the changes for developing Rails 2.0 applications.
The snippets and commands we’re going to look at are actually described across all three bundles. Often it is the Rails bundle that reuses the HTML and Ruby bundles. For example, in an HTML file you have a variety of ways to create new elements. [examples] Within an html.erb file you can reuse all the same snippets and commands.
Know thy Editor
Overview key icons (see PeepCode TM video)
Preferences > Advanced > Folder References > Folder Patterns: add ‘vendor/rails’ and it will ignore that folder in any project – both from the Dock and from Search.
Access your bundles via Ctrl+Alt+Cmd+B.
Quick menu: Ctrl+Esc
Change language for a file, e.g. Ruby <—> Ruby on Rails. Either click the “L” section of the status bar and select the Language; or learn the Language shortcut. These always start with Shift+Alt+Cmd with a letter. Typically the letter is the first letter of the Language. So to choose either Ruby or Ruby on Rails, use Shift+Alt+Cmd+R and choose the language from the drop-down.
Models and Migrations
- Create new app
- Go to app/controllers/application.rb (need a Ruby on Rails file)
- ^| + 1 – Call Generate Script – create new model “Post” TODO – not working @ moment
OR CLI:script/generate model Post title:string - Go to migration file: Cmd+T + 001
- t. – list of available sexy migration columns; when selecting one, another t. is automatically created for you. (create body:text + published:boolean)
- Shft+^+K – remove a line
- CLI:script/generate model Comment
- Cmd+T + 002 – comment migration + add t.references :post, body:text, name:string
- Ctrl+| + 3 – run migrations
* See error?
* In terminal, go to “/Applications/TextMate.app/Contents/SharedSupport/Support/lib” and rename/remove Builder.rb
* Run migrations again
- Go to post.rb
* hm + comments; notice you can tab across to change fields if required
* Also, hmt → for has_many :through* - Go to comments.rb
* bt + post; notice the autocompletions are correct here, but still optional for rails so can be deleted
* vp + name, body
* [Ctrl-Esc → Models] All the validations are available as snippets based on the first letter of each word. - Place the cursor on ‘Comment’ class name, Sft+Ctrl+Cmd+S → shows schema for this class. Alternately, place it on ‘post’ to get the schema for Post class.
Testing
I’ll talk more about navigating between files in a Rails application later, but for the moment, know that there is a special relationship between a model file and a unit test file. You can toggle between them with Alt+Cmd+DownArrow.
The Rails generator for models created this unit test file and a fixtures file.
First, let’s set up some fixtures for posts and comments.  Now go to comments.yml – using Ctrl+Cmd+R to show posts.yml in the dock.
TODO – how to move focus from editor to dock?
Within comments, create one comment:
valid: name: Dr Nic body: Cool post post:
With Rails 2.0, your fixture ids are no longer required, and you can use Foxy Fixtures to select an associated fixture. Here we’d type ‘published’ to reference that posts.yml fixture. But, since the column name is ‘post’ we can get a drop-down list using Alt+Esc. We’ll use this same fixture autocompletion feature again within the test files.
Back to the comments unit test, and that dummy test needs removing.
Create a new test method with deft
+ should_require_title
.
Type posts(:)
and Alt+Esc to access the fixtures autocompletion. You can now select a posts.yml fixture. Note, the current implementation replaces the whole line, so if you need multiple or want a different instance variable you’ll need to make some manual changes.
Finished:
def test_should_require_title @post = posts(:published) @comment = @post.comments.create @comment.valid? assert(@comment.errors[:name], "Should be errors for name field") end
To run your unit tests, Ctrl-\ + ‘Test Units’ or ‘Test Recent’.
In order to write some functional tests for our blog, let’s generate a controller as it generates the functional test at the same time. [Ctrl-|] We won’t specify any actions for the moment, and we’ll clean away the open windows for the controller and the helper.
For now, let’s write some functional tests. [remove the test_truth method]
Diagram
- deftg → test GET action
- deftp → test POST action
Since many functional tests start with the same setup, there are two functional test snippets to write tests faster. The last letter maps the the http method to be used for the test: g for GET and p for POST.
To create a test for the index action, use deftg + 'index'
. Then delete the two optional @model sections.
Next, to load an instance variable into the test, type asg + 'posts'
Now, let’s assert the HTML format.
 Type div#posts
, press ⇥ and ⌦, then ⇥ twice to place the cursor within the assert_select
block:
assert_select 'div#posts' do end
Now we’ll check that the @posts
objects are represented in the div#posts
element.
 Now press ⇥ again, and type @posts.size
. Press ⇥ a final time (it will highlight the do...end
block), and press ⌦.
Our test method is now finished:
def test_should_get_index get :index assert_response :success assert(posts = assigns(:posts), "Cannot find @posts") assert_select 'div#posts' do assert_select 'div.post', :count => posts.size end end
Now we create a test for the ‘show’ action. Type deftg and ‘show’, and then ‘post’. Then tab into ‘fixture_name’ and delete it. Now we’ll autocomplete on fixtures again. Alt+Esc and select ‘published’.
Now copy the ‘div.post’ assert_select line for this test, but change the :count to 1.
To run our functional tests, use Ctrl+\.
Controllers and Routing
Similarly to navigating between model and unit test files, you can toggle between functional tests and controllers via Alt+Cmd+DownArrow.
In the controller, type index
and use Shift+Enter to convert it to a method. Press BackSpace to delete the arguments.
To load all Posts:
@posts = Post.fina
Pressing ⇥ creates find(:all, :conditions => [...])
. Tab and change ‘field’ to ‘published’.
Diagram: fina – find(:all); finf – find(:first); fini – find(id); ^-| – params[:id]
Now create a ‘show’ action, with @post = Post.fini + tab. Use ^-| to insert params[:id].
We’ll come back and look at views for our index action later. Instead, let’s create a controller for creating + updating posts for the admin of the site.
We could use the scaffold generator to create a posts controller, with functional tests and default views. Instead, we’ll build this controller from the ground up.
Diagram: Navigation between file types
Shift+Alt+Cmd+DownArrow:
TODO – finish this
- post.rb → post_test.rb, posts_controller.rb, etc
- post_test.rb → post.rb, posts_controller.rb, etc
Diagram: views/users/show.rhtml → user_controller.rb; views/users/show.html.erb → users_controller.rb
One thing to note for developers of Rails apps using older versions of Rails. If you are in a template file with the extension .rhtml, then it will navigate to the singular controller name ‘post’, rather than the plural default for controllers. This is for backwards compatibility with older naming conventions.
So we can create a new posts_controller.rb
by returning to the post.rb or post_test.rb files, and navigating to the matching controller. It doesn’t exist so a blank file is created.
We have a simple way to create new controller classes; the cla
snippet has a ‘Create controller class’ option. Select that, and type ‘Posts’ and then ‘post’ to create our posts_controller.rb class.
For simpler actions, use the standard techniques for new methods, def + ‘new’ to create the ‘new’ method.
For some of the common, more complex controller actions there are also snippets. For the create action, type ‘defcreate’ and fill out the template with ‘post’.
What I want the ‘create’ action to do is redirect back to the main blog controller for a page. Originally, I could use ‘recai’ for redirect_to :controller => "blog", :action => "show", :id => @post
but its uncool to use anonymous paths.
So instead let’s just enter a named route that sounds nice, replace @post
with blog_post_path(@post)
.
[Change to the ‘routes.rb’ file.] So finally let’s setup our routes. I’m going to delete all the default comments and default routes, and reconstruct it with named routes.
Diagram: Routes: map – named routes; maprs – map.resources; mapr – map.resource; mapwo – map.with_options
Within a routes file, you have the three ‘map’ snippets. As you’ll see in moment, the resources snippets include a block for nested resources.
So we’ll use ‘map’ to create named routes. Leave the name as ‘connect’ for anonymous routes. It is handy to know a Ruby snippet here: tabbing on colon (:) creates a hash key/value pair.
map.public_page 'blog/show/:id', :controller => "blog", :action => "show"
We could place this route within a with_options block, using ‘mapwo’. Then add map.root
within it.
For our posts controller, we’ll use the resources snippets. We use ‘maprs’ and change ‘resource’ to ‘posts’ and then we can tab into the block. Say we wanted comments to be a nested resource of posts, then we’d use ‘maprs’ again, and change ‘map’ to ‘post’ and remove the block. [then delete the comment resource + post’s block].
There is also a shortcut for the respond_to block – ‘rest’, which gives a default html response. To add additional response formats, tab on ‘wants’. [remove these examples from new method]
Now let’s have a final look at functional tests for our create actions, which will require a POST request. [try to change to functional test] We don’t have a posts_controller_test.rb, so it creates a blank file for us.
To create a functional test class, use ‘cla’ again and select ‘Create functional test class’, and type ‘Posts’ for the class name prefix. Save the file, close the window and reopen within the project, otherwise some commands might not work if the file is initially not saved.
Remember that test methods are created with ‘deft’, and the GET + POST methods are created with deftg and deftp. Let’s test our create action with ‘deftp’.
Enter ‘post’, but remove the two optional sections as we’re creating a new object, not updating an existing object. Within the :post => { }
, type : and tab to create the hash key values.
Fetch the resulting object with asg
+ ‘post’.
Add a redirection assertion with artp
.
def test_should_post_create post :create, :post => { :title => "hi there", :body => "oh yeah" } assert_response :redirect assert(post = assigns(:post), "Cannot find @post") assert_redirected_to blog_post_path(post) end
If you just want to run the tests in the current file, or in fact run any Ruby file, use Cmd+R. As we can see, this test passes.
Views
[back to posts_controller.rb]
In the posts controller, we have a new action but we haven’t created a template yet. As before, we can use the Navigation cmd to change from the controller to a view. In this case, the view is based on the current method. So we place the cursor in the new method, and it will ask us to create a new.html.erb file. Here is your opportunity to rename the template with alternate format or template extensions, say .xml.builder. But we’ll use .html.erb for now.
Diagram: form_for – ff, form_for with error output – ffe
We’ll use ‘ffe’ and enter ‘post’. In Rails 2.0, the form_for helper is very powerful and knows from the object it is passed whether it is creating or updating an object.
Diagram: f. – list of available helpers; or use first initial of helpers’ names (fftf – text_field)
Inside the form_for block we have two ways to access the common helpers.
By using ‘f.’ it reminds us what helpers are available and tells us what their tab completions are.
So, let’s use the tab completion versions. ffl for label, fftf for text field.
<%= error_messages_for :post %> <% form_for @post do |f| -%> <%= f.label :title, "Title" %> <%= f.text_field :title %> <%= f.label :body, "Body" %> <%= f.text_area :body, :rows => 10 %> <%= f.submit "Post", :disable_with => 'Posting...' %> <% end -%>
Now let’s put each label or form field in a separate paragraph. Select those lines and use ‘Wrap Each Selected Line in Open/Close’ – Shift+Ctrl+Cmd+W, and type ‘p’.
Diagram: Partials – Shift-Ctrl-H
Since the form_for helper works with saved and unsaved model objects its easily reusable within new and edit templates. So let’s extract it as a partial. [do it] And now the render can be pasted into an edit.html.erb file as required.
[go to browser http://localhost:3000/posts/new]
Now we can fire up the server and have a look at our form and use it. [submit form]
As requested, the browser is redirected to the public post page; which we haven’t implemented yet. So let’s do that.
We head back to the blog_controller, and create the show.html.erb via navigating away from the show action.
Create a div and set its class to post, then layout the title and body:
If we run our tests, the ‘show’ action test is now passing.
[Shft+Ctrl+H] So we can reuse it in the index.html.erb file, let’s move it to a partial called ‘post’ and remove the ‘@’ signs to reference a local variable instead of an instance variable.
The returned ‘render’ expression isn’t quite right as we need to pass the @post object into the partial. Let’s remove it and use the ‘render partial’ snippets.
Diagram: render :partial – rp; render :partial, :object – rpo; render :partial, :collection – rpc; render :partial, :locals – rpl
Create <%= %> and inside use ‘rpo’ and set the :object => @post.
Now we create index.html.erb and use <%= %> with ‘rpc’ and ‘post’. The tests require that its wrapped in a div with id=“posts”. So select all, and Shift+Ctrl+W + div id=“posts”.
Diagram: Link helpers; lip – link_to “label”, model_path(@model), etc.
- lip –
<%= link_to "link text...", model_path(@model) %>
- lipp –
<%= link_to "link text...", models_path %>
- linp –
<%= link_to "link text...", parent_child_path(@parent, @child) %>
- linpp –
<%= link_to "link text...", parent_child_path(@parent) %>
- lim –
<%= link_to model.name, model %>
Alternate templates
Diagram: html.erb, js.erb, js.rjs, xml.builder, xml.erb, html.builder
In addition to html.erb templates, Rails supports any combination of output format and template engine. As appropriate you can combine html or javascript or xml with erb or rjs or builder, or any other 3rd party templating system such as haml.
The Rails TextMate bundle provides varying support for different combinations.
Diagram: wants.js → .js.rjs; wants.xml → .xml.builder; wants.different → .different.erb
Navigation (e.g. tasty tidbit)
Go to posts_controller, add wants.js to create action. Navigate and create posts/create.js.rjs.
Diagram: RJS snippets – hide, insert_html (ins), replace (rep), replace_html (reph), show, toggle (tog), visual_effect (vis)
All these snippets include the page prefix and are nice ways to start each RJS expression.
[remove all lines; rename with .erb] Another way to generate JavaScript within Rails is with the .js.erb extension. Instead of RJS expressions, you write pure JavaScript, but you can embed ruby using erb.
A new syntax supported in the bundle is JavaScript (Rails), which maps to .js.erb files. That is, JavaScript files that permit embedded Ruby. This means, within the <%= %> tags you have access to your Ruby snippets and syntax highlighting.
Extending
Dr Nic Williams, 7th June 2008
Theme extended from Paul Battley


Preparation time
overnight
Cooking time
1 to 2 hours
Serves
Serves 6
Begin the day before you want to make the pie. For the curds, bring the milk to the boil in a pan. Add the lemon juice and stir well - the mixture will curdle quite quickly. Remove from the heat and allow to cool, then pour into a muslin-lined sieve placed over a bowl and leave overnight to strain until solid. Refrigerate the solid curds once separated - discard any liquid.
The next day, for the pastry, sift the flour and salt into a mixing bowl. Add the butter and lard and rub together until the mixture resembles fine breadcrumbs. Add the water and stir until the mixture comes together, then turn out onto a lightly floured work surface and knead briefly until smooth. Wrap the dough in cling film and place in the fridge for 30 minutes to rest.
Remove the dough from the fridge and roll out to 0.5cm/¼in thick. Line a deep 20cm/8in loose-bottomed tart tin with the pastry, prick the base all over with a fork and place into the fridge to rest for ten minutes.
Preheat the oven to 200C/400F/Gas 6.
Line the pastry case with baking paper and fill with rice or baking beans. Transfer to the oven and bake for 15 minutes. Remove the baking paper and rice or beans and return to the oven for five minutes, or until lightly golden.
To make the pie, place the softened butter into a bowl, add the rosewater and mix well. Add the solid curds and the beaten eggs to the bowl and stir well. Add the currants and mix thoroughly.
Pour the mixture into the pastry case and bake for 20-30 minutes, or until the filling is set and lightly golden. Remove from the oven and leave to cool.
To serve, remove the pie from the tin, cut into wedges and place onto serving plates.


BLOW DRY A film review by Steve Rhodes Copyright 2001 Steve Rhodes RATING (0 TO ****): * 1/2
BLOW DRY, which the ads loudly proclaim to be by the writer of THE FULL MONTY, has all the charm of a fifth generation copy of a tape of THE FULL MONTY, which is what it feels like. Writer Simon Beaufoy recycles all of the elements of the plot that hit the jackpot for him last time. The story is set in a cheesy working-class English town. There's a tragedy to be coped with -- this time it's cancer rather than unemployment. And, of course, he ends it in one of his signature surprises. It's too bad that this time he forgot to make it funny. To be fair, much of the blame has to go to director Paddy Breathnach, who wasn't associated with THE FULL MONTY or anything else you've ever heard of before BLOW DRY.
Set in Keighley, England, the movie is about the National Hairdressing Championship, a veritable hair Olympics. The cocksure Ray Roberts (Bill Nighy) and his assistant Louis (Hugh Bonneville) are competing for their third straight title. Cheating his way to the top again, Ray fears only local barber Phil Allen (Alan Rickman) and his assistant, Phil's son Brian (Josh Hartnett). Phil quit the hairdressing competition 10 years ago when his wife, Shelley (Natasha Richardson) left him to live with Sandra (Rachel Griffiths), his hairdressing model. The script does little with this lesbian subtheme other than introduce it.
Brian makes extra money by working the graveyard shift, cutting hair at the local mortuary. Brian takes Ray's daughter and model, Christina (Rachael Leigh Cook), there one night on a date. Although the movie's cast is good, their acting isn't much more lively than the corpses lying around waiting to have their hair done. Actually, the whole movie is about as dead as these stiffs. I didn't think Alan Rickman (GALAXY QUEST) could give a performance this lifeless, but director Breathnach does the impossible, turning the living into the dead. Maybe he has a future in horror flicks.
BLOW DRY runs 1:45. It is rated R for some language and brief nudity and would be acceptable for most teenagers.
Web: http://www.InternetReviews.com Email<EMAIL_ADDRESS>Want free reviews and weekly movie and video recommendations via Email? Just send me a letter with the word "subscribe" in the subject line.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Quickly learn some Subversion fundamentals by reading the first three sections below. The later sections help demystify Subversion concepts you might run into later.
Repositories
Where your project's files and folders live.
Working copies
Local copies of a repository, where you work on your project.