text:
Efficacy and Safety Assessment of ZOlpidem (Stilnox CR) in Patients With Chronic insomNIA
- Full Text View
- Tabular View
- No Study Results Posted
- Disclaimer
- How to Read a Study Record
Primary Objective:
To evaluate the efficacy and safety of the use of Stilnox CR in Mexican patients with chronic insomnia at the prescription conditions of daily practice
Secondary Objective:
To evaluate the satisfaction of the patient with chronic insomnia with Stilnox CR over an as needed basis.
|Sleep Disorders
|Drug: ZOLPIDEM SL800750
|Phase 4
|Study Type:
|Study Design:
|Intervention Model: Single Group Assignment
Masking: None (Open Label)
Primary Purpose: Treatment
|Official Title:
|Efficacy and Safety Assessment of ZOlpidem (Stilnox CR) Administered on as Needed Basis in Patients With Chronic insomNIA
- Improvement of the Clinical Global Impression (CGI) score [ Time Frame: At day 84 (visit 5) ]
- Illness severity and average change during the study [ Time Frame: At day 1 (baseline), day 14 (visit 2), day 28 (visit 3), day 56 (visit 4) and day 84 (visit 5) ]
- Pittsburgh Sleep Quality Index (PSQI) score [ Time Frame: At day 1 (baseline), day 28 (visit 3), day 56 (visit 4) and day 84 (visit 5) ]
- Patient satisfaction questionnaire [ Time Frame: At day 84 (visit 5) ]
- Safety evaluation via Adverse events reported [ Time Frame: At day 14 (visit 2), day 28 (visit 3), day 56 (visit 4) and day 84 (visit 5) ]
|Study Start Date:
|November 2009
|Study Completion Date:
|July 2010
|Primary Completion Date:
|July 2010 (Final data collection date for primary outcome measure)
|Assigned Interventions
Experimental: 1
Zolpidem 12.5mg tablet at bed time during 12 weeks
Drug: ZOLPIDEM SL800750
Pharmaceutical form: Zopidem 12.5 mg tablets
Route of administration: Oral
Dose regimen:One tablet at bed time and as needed (the patients choose which night they take the tablet without limit of number of nights)
|Ages Eligible for Study:
|18 Years to 65 Years (Adult)
|Sexes Eligible for Study:
|Accepts Healthy Volunteers:
Inclusion Criteria:
- Primary insomnia diagnosis (difficulty for initiating sleep, or maintaining sleep to wake up to early in the morning, or to present a restless sleep) which causes clinically significant disturbances in the areas of social, work functioning or other important areas
Exclusion criteria:
- Serious, severe and/or acute respiratory impairment
- Severe liver impairment
- Hypersensitivity to the formulation components or to some of its active metabolites
- Pregnant or breast-feeding women Patients with important associated disorders in SNC and specially psychotic disorders
- Patients with the probability of using alcoholic beverages concomitantly (as a precaution measure)
- Chronic use of benzodiazepines
Moreover, in order to follow the international regulations in terms of the use and handling of hypnotic compounds, and to guarantee the appropriate study performance, no patients with one or more of the following characteristics should be included:
- Patients who cannot comply to follow-up
- Patients who have any drug abuse problem
- Individuals who work changing night shifts or with pathological snoring
- Presence (or suspicion) of sleep apnea, periodical legs movements or restless legs syndrome
The above information is not intended to contain all considerations relevant to a patient's potential participation in a clinical trial.
Please refer to this study by its ClinicalTrials.gov identifier: NCT01024192
|Sanofi-Aventis Administrative Office
|Col. Coyoacan, Mexico
|Study Director:
|Medical Affairs
|Responsible Party:
|Medical Affairs Study Director, sanofi-aventis
|ClinicalTrials.gov Identifier:
|NCT01024192 History of Changes
|Other Study ID Numbers:
|Study First Received:
|November 30, 2009
|Last Updated:
|October 4, 2010
Additional relevant MeSH terms:
Sleep Wake Disorders
Sleep Initiation and Maintenance Disorders
Nervous System Diseases
Neurologic Manifestations
Signs and Symptoms
Mental Disorders
Sleep Disorders, Intrinsic
Hypnotics and Sedatives
Central Nervous System Depressants
Physiological Effects of Drugs
GABA-A Receptor Agonists
GABA Agonists
GABA Agents
Neurotransmitter Agents
Molecular Mechanisms of Pharmacological Action
ClinicalTrials.gov processed this record on August 22, 2017


text:
The primary purpose of the theme registry patch is to make it possible for Drupal core and Drupal modules to provide their theme functions directly as .tpl.php files without impacting performance too badly.
This patch requires all theme functions used by Drupal to be registered by the owning module (system.module registers on behalf of the *.inc files). This registry can declare the themes to be traditional functions, or it can declare them as templates and can declare their arguments. If declaring them as functions it can declare them in an additional file that is loaded on demand (an example is the new theme.base.inc where theme_page, theme_node and theme_block are moved; these theme functions are almost never used).
The basic template rendering engine of phptemplate has been moved to core; phptemplate.engine now primarily does just two things:
1) Discover what templates a theme is using. This means that simply dropping an appropriately named .tpl.php file into the theme directory will (after the cache is cleared) automatically be used. _phptemplate_callback is therefore no longer needed and has been completely removed.
2) Provide default variables that are common to pages. Some of this may later be trimmed down or moved into the theme itself, but that is a patch for elsewhere.
_phptemplate_variables has been changed slightly. _phptemplate_variables is now the 'private' version meant to be used by the theme engine, and phptemplate_variables (as well as THEMENAME_variables) can be used by the theme's template.php.
Additionally, phptemplate_variables_HOOKNAME has been introduced, which drastically simplifies the syntax for modifying the variables for templates. Also, phptemplate_variables now takes a reference and does not return the variables requiring a lot of array_merges.
|772 bytes
Comment #1m3avrck CreditAttribution: m3avrck commented
Comment #2dmitrig01 CreditAttribution: dmitrig01 commented
Comment #3dvessel CreditAttribution: dvessel commented
-looks for the subscribe checkbox
Why the big changes? So it's easier to drag & drop module .tpl.php files into your own themes? And does this mean the end of plugging in other template engines? Will have to test this out.
Comment #4add1sun CreditAttribution: add1sun commented
Hunk #4 failed against fresh head. Hackfest has bitten you!
Comment #5moshe weitzman CreditAttribution: moshe weitzman commented
very exciting. subscribe
we are just overloading the heck out of poor system.module. i would love to move the .inc files into required .module files. .inc has no benefit anymore. but thats for another patch. don't discuss that here. contact me privately.
Comment #6adrinux CreditAttribution: adrinux commented
Very interesting. I'll need to checkout head to look at the patch though...subscribing.
Comment #8kbahey CreditAttribution: kbahey commented
Comment #10Caleb G2 CreditAttribution: Caleb G2 commented
Comment #11laura s CreditAttribution: laura s commented
Beautiful! :D Subscribing and making note. We'll try to test in coming days.
Comment #12Wim Leers CreditAttribution: Wim Leers commented
Very interesting! Subscribing.
Comment #13cghobbs CreditAttribution: cghobbs commented
Comment #15Heine CreditAttribution: Heine commented
Very interesting. So far only two issues (but out of time for today):
- Rename system.module: function theme_system_themes to theme_system_themes_form to match the theme registry.
- drupal_render_form calls theme_get_registry before init_theme has run on admin/build/modules. As theme_get_registry returns NULL in that case, the form is unstyled.
Leaving this to review (no use in rolling patch after patch after patch).
Comment #17Steven Jones CreditAttribution: Steven Jones commented
Comment #18rickvug CreditAttribution: rickvug commented
subscribing... this is an important one.
Comment #19webchick CreditAttribution: webchick commented
subscribing.. will try and test this tonight.
Comment #21bcn CreditAttribution: bcn commented
Comment #23Dries CreditAttribution: Dries commented
The caching is somewhat annoying when working with template files. Did we try benchmarking this with and without caching? Are we sure we need the caching? Also, what are the performance implications in general? It would be comforting to know that we've done some benchmarking.
(I haven't fully tested or reviewed this patch yet, but it's on my TODO list.)
Comment #25sun CreditAttribution: sun commented
Comment #26moshe weitzman CreditAttribution: moshe weitzman commented
With some renaming and doc change, we can reuse the current pref for CSS preprocessor ... "Enable caching of templates and css preprocessing. these features spede up your site but can be a nuisance during theme development"
Comment #27Dries CreditAttribution: Dries commented
We can worry about that extra setting in another patch. A 10% slowdown is a lot -- so the caching must stay for now.
Comment #28dvessel CreditAttribution: dvessel commented
Could the variables list be broken off into a theme override? The "additive" nature of running *all* the _variables_ functions from theme() makes it less flexible than it was before. As it stands now, there's no way to prevent
_phptemplate_variables_[page|node|comment|block]() from running. I briefly mentioned this to merlinofchaos in IRC but it looks like it could be made more flexible by letting themers control how the variables are put together.
And there's a typo:
$variables_list[] = $theme .'_variables_'; Underscore at the end I'm sure wasn't intentional.
Comment #30dvessel CreditAttribution: dvessel commented
how about adding this right before $variable_list is executed:
$lineup_variables_function = $theme_engine .'_lineup_variables_function';
if (function_exists($lineup_variables_function)) {
$variables_list = $lineup_variables_function($variables_list);
Your already doing something similar for getting the extension for the template files.
Your also calling theme_discover_template directly. Did you do that intentionally?
Comment #31dvessel CreditAttribution: dvessel commented
I mean within the
isset($theme_engine) condition. That would be even more flexible than what's in d5.
Comment #33RobRoy CreditAttribution: RobRoy commented
Small nit: I would prefer it to be called drupal_discover_template instead of theme_discover_template since whenever I see a theme_ function I assume it is meant to be overwritten.
Comment #34Steven CreditAttribution: Steven commented
Some comments on a first read through of the patch:
- All the _themes() entries I can see have the following form:
+ 'node_list' => array( + 'function' => 'theme_node_list', + 'arguments' => array('items' => NULL, 'title' => NULL), + ),
That is, the function name is duplicated in the key and in 'function'. Is this necessary? It seems quite useless. Even if there is another type of entry (file), we should make the common case as compact as possible.
- The big $variables assignment block in phptemplate should be nicely indented around the equals signs IMO.
- Do we really need both _variables and _variables_<hook>?
+ $variables_list[] = '_'. $theme_engine .'_variables'; + $variables_list[] = $theme_engine .'_variables'; + $variables_list[] = '_'. $theme_engine .'_variables_'. $hook; + $variables_list[] = $theme_engine .'_variables_'. $hook;
Seems redundant. Is there enough use of the former to justify using it over the latter? We should not leave in cruft just for backwards compatibility (and it seems the patch already splits up / simplifies existing _variables hooks in core themes).
Will test more later, but this looks very good already.
Comment #35dvessel CreditAttribution: dvessel commented
What do others think about this? I'm reasonably ok with it; it's fairly minor and gives themes real control and doesn't need to be used.
This can solve a small problem and open up plenty of flexibility for hardcore themers.
- Any modification to the style sheet queue (drupal_add_css) means drupal_get_css would have to be called twice producing 2 times the aggregated css files + 2 times the processing (and usually an ugly function call from page.tpl.php). The theme author could simply add another variables function to run before _phptemplate_page and not call drupal_get_css the second time. -There's a similar problem in Garland due to _color_page_alter but that's another issue.
- How about if a theme doesn't have side bars and there's no need for $zebra, $id, etc.. in the theme. Why would the theme need to run _phptemplate_variables then? Would you consider that cruft in the theme?
- This would also allow themers to organize variable functions to however they see fit. For example, a theme I'm working on does funny things with taxonomy to load classes and css files. With this ability I can line up a queue of variable functions and just let them run instead of calling functions from within functions spread all over the file.
I'm sure if this goes in, others smarter than me will find a great use for this. Overall, this patch is in the right direction. big ++ from me.
I don't want to sidetrack this issue so I'll say no more, but anyone have an opinion on this?
Comment #36dvessel CreditAttribution: dvessel commented
eh, forgot closing tag.
Comment #39Crell CreditAttribution: Crell commented
@ #28 and #29, if the variable array is being passed by reference, then couldn't any function just junk anything that came before it with $variables = array() to reset it? That's an easy way for any level to cancel any defaults from lower levels.
Comment #43Steven CreditAttribution: Steven commented
Merlinofchaos: if so, couldn't we just use 'function' => 'theme' and have the theme system automatically append '_'. $key ? What use is there to have a theme function with a different name from the key?
As for variables vs variables_hook, I see your point. Thanks for explaining that.
Comment #45dvessel CreditAttribution: dvessel commented
@merlin, it is such a small addition but it's definitely a separate issue. I'll keep testing your patches and keep track. -still trying to _fully_ grasp the new system.
Comment #46Frando CreditAttribution: Frando commented
What about allowing both versions?
Iow if the 'function' key is unset, the processing function sets it to theme_KEY ...
e.g. if you had
'node_list' => array(
'arguments' => array('items' => NULL, 'title' => NULL),
the processing function would set the 'function' key to theme_node_list, as it's unset. One can, however, still set the function key to an arbitrary value, if one needs to.
Comment #49dmitrig01 CreditAttribution: dmitrig01 commented
add in theme_menu_local_tasks, otherwise tabs won;t show
Comment #50dmitrig01 CreditAttribution: dmitrig01 commented
Above patch didn't work
Comment #51dmitrig01 CreditAttribution: dmitrig01 commented
neither worked :)
Comment #54dvessel CreditAttribution: dvessel commented
|Needs review
|» Needs work
Patch 11 doesn't have theme_menu_local_tasks(). It's registered but the function is nowhere to be found.
Of course, it gives errors for themes outside of garland.
Comment #55dvessel CreditAttribution: dvessel commented
The update.php page gives WSOD. Tried clearing cache but nothing.
Comment #58Dries CreditAttribution: Dries commented
+ 'help' => array( + 'arguments' => array(), + ), + 'node' => array( + 'function' => 'theme_node', + 'file' => 'theme.base.inc', + 'path' => 'includes', + 'arguments' => array('node' => NULL, 'teaser' => FALSE, 'page' => FALSE), + ),
Question: what is
theme.base.inc? There is no such fIle, AFAIK. Should that be theme.inc instead? Can we keep this stuff in theme.inc for now? Thanks.
Why do we need both a file and a path? Can't we specify the file as 'includes/theme.inc' instead? Do we separate them because we need to add an extension? It's more explicit and therefore easier to grok. If not, we probably want to document how and when is this to be set. It's not 100% intuitive, and it would be great if it could be more intuitive.
2. Hook names are typically singular. Do we want to use _themes() or _theme()? I think _theme() might be more consistent and therefore more intuitive. Any particular reason you decided to make this plural?
3. The included documentation is much appreciated -- good job. A couple of small remarks:
Themes can implement their own version of theme hooks, either as functions + * or files.
You'll want to explain _why_ themes want to implement their own version of theme hooks. What happens when I implement a _themes hook in my theme? (I know the answer, but the reader of the documentation might not know this.) We might also want to explain what the difference is between 'functions or files'. Someone not familiar with Drupal's theme system, might not know how to weigh this choice. Might be worth to touch upon the advantages and disadvantages, or to provide a recommendation.
In general, the documentation is great. If you want to work on the documentation some more, I suggest to sprinkle some practical examples. It might be a bit dense/theoretical for newbies. Some practical examples will help them get up to speed with it faster, and is likely to be very intuitive. Not a requirement for this patch to get committed.
4. Locale
- $language = $GLOBALS['locale']; + $language = isset($GLOBALS['locale']) ? $GLOBALS['locale'] : NULL;
AFAIK, the locale variable does no longer resist. The i18n patch should have replace it by a global $language variable ($language->language).
5. In the themes/engines, the $existing parameter of _themes() is not documented. It took me a while to figure out what it was about.
6. The drupal_maintenance_theme() stuff is a bit hackish, but I can't come up with something nicer. Maybe some of that can always be loaded, and be available in all situations. Don't know.
7. The template_files functionality did not seem to be properly documented.
8. Add a CHANGELOG.txt entry. ;-)
I think this patch is pretty much ready to be committed. Not all of my remarks need to be taken care of, although it would be great. It's probably the kind of questions/confusion that other people experience. Anything we can do to make this slightly easier, will make this patch shine even more.
Let's do one more version of this patch, and get this committed. Thanks Earl.
Comment #60dvessel CreditAttribution: dvessel commented
hook_theme() sounds right. It's pointing to a single entity.. the theme itself. Same with the menu system, hook_menu() it's the single menu system even though it contains many parts, it's pointing to itself. Looked up hook_node_types(), did you mean hook_node_type() since that's what's commonly used. The _types() are used for working with multiple types. I'm not a mod dev so take it for whatever it's worth.
I beat on it pretty bad... Nothing broke.
Comment #61Dries CreditAttribution: Dries commented
I don't have a strong preference for _theme() vs _themes() but I'm leaning towards _theme(). As mentioned, it feels more consistent (i.e. _menu(), _link(), etc).
The only thing I feel strong about is theme.base.inc -- I think it should be folded back into theme.inc, at least for now. Maybe I don't fully understand the 'power' of this, but I think there is room for some simplification here.
Other than that, I'm OK to commit the next version of this patch 'as is', and to add incremental improvements later on.
Bonus points for improving the performance of theme().
Maybe other people have something to add, I don't know. I'll send an e-mail to the development mailing list.
Comment #63jlambert CreditAttribution: jlambert commented
I agree. The performance implications of this patch alone make it a no brainer.
+1 +props
Comment #64Dries CreditAttribution: Dries commented
jlambert: did you actually benchmark this patch? It actually slows things down.
merlin: yes, let's keep that for a separate patch. There is more we can do in this area. Thanks.
Comment #65ac CreditAttribution: ac commented
Comment #66adrian CreditAttribution: adrian commented
I've looked at the patch, and I like the approach taken.
It was the approach we originally took with the templates patch before, but there are a couple of differences, which
lead to better performance than the original patch.
Firstly, there's no theme_link anymore, whereas previously theme("link") was called hundreds of times, on every page, slowing the system down considerably.
Secondly, the approach to converting to templates is far more pragmatic, in that some heavily used theme functions remain, causing a fair speedup over the all templates approach.
I believe this patch should go in.
There are a couple of things we could look at afterwards that might help speed things up as well.
Primarily we wrote a script which turned all the theme calls into the format theme("thing", array('param' => $value)).
This made the mapping step unnecessary , and removed the requirements to map the theme arguments to an associative array
of defaults. Doing this could also greatly reduce the size of the registry required, and lower memory usage.
Comment #69Crell CreditAttribution: Crell commented
Trying to close whatever i tag went ape...
While there are plenty of advantages to jQuery-style config parameters as adrian suggests, I believe from the l() revision patch it was shown that there was a small performance hit for them. They're also not as self-documenting. As merlin said, the benchmarks would have to be pretty conclusive to make that sort of change. Even if we did, that would be a separate patch, IMO.
Comment #70Dries CreditAttribution: Dries commented
Yep, let's re-roll this patch with some of the latest suggestions and commit it to CVS HEAD.
Comment #72m3avrck CreditAttribution: m3avrck commented
Typo in changelog...
+- Added the theme registry:
+ * Modules must implement hook_themes() to register their theme hooks
hook_theme() right?
awesome work earl!
Comment #74Dries CreditAttribution: Dries commented
|Reviewed & tested by the community
|» Fixed
Committed to HEAD. Great job Earl! :)
Comment #75AmrMostafa CreditAttribution: AmrMostafa commented
Docs docs ;-)
Comment #77(not verified) CreditAttribution: commented
|» Closed (fixed)
Comment #78AmrMostafa CreditAttribution: AmrMostafa commented
I was checking this new awesome improvements and found a small bug:
When the registry item has a
function and
file set, the
path bit is not honored.
e.g., in a similar construct:
'test' => array(
'file' => 'test.theme',
'path' => 'test',
'function' => 'theme_my_test',
'arguments' => array(),
The theme system will try to include
test.theme while it should include
Comment #79AmrMostafa CreditAttribution: AmrMostafa commented
eh :-)
Comment #80AmrMostafa CreditAttribution: AmrMostafa commented
sorry for multiple submits..
Comment #81AmrMostafa CreditAttribution: AmrMostafa commented
Rerolled for HEAD.
Comment #82moshe weitzman CreditAttribution: moshe weitzman commented
|Needs review
|» Reviewed & tested by the community
looks like a trivial fix. i'm not sure how to test it though. i think it is safe to RTBC
Comment #84Dries CreditAttribution: Dries commented
Committed to CVS HEAD. Thanks.
Comment #85AmrMostafa CreditAttribution: AmrMostafa commented
|Reviewed & tested by the community
|» Fixed
Comment #86Dries CreditAttribution: Dries commented
|» Closed (fixed)
Comment #87mbria CreditAttribution: mbria commented
Thanks for the patch.

subset: commoncrawl


text:
Cape Town - A Cape Town professor is being detained at the Abu Dhabi International Airport and could face charges of manslaughter.
Professor Cyril Karabus, 78, of Claremont, was arrested while in transit in Dubai to South Africa on August 18. He was returning home after attending his son's wedding in Canada.
His lawyer, Michael Bagraim, described Karabus as an "internationally well-respected medical figure". He said the Karabus family were in "shock and highly traumatised" by the arrest. On Thursday his wife and son were on their way to Abu Dhabi.
"It has been a nightmare for his family. His health is fragile and he depends on a pacemaker to regulate his heart… the situation is not good for him," he said.
Karabus specialises in paediatrics and medical oncology. He is a former professor of paediatrics at UCT and head of the oncology and haematology unit at the Red Cross Children's Hospital.
Hospital spokeswoman Lauren O'Connor-May said staff were aware he had been taken into custody but she could not comment further.
Twelve years ago Karabus worked as a locum at the Sheikh Khalifa Medical Centre in Abu Dhabi in the United Arab Emirates and operated on a seven-year-old cancer patient who later died of leukaemia.
In his absence he was tried and found guilty of manslaughter. Bagraim said no attempt was made to contact Karabus and he was never given an opportunity to defend himself in court. An effort to get Karabus's initial conviction overturned had succeeded, but on October 3 he would stand a new trial for the same charges.
"I have consulted experts around the world and they are all confident he stands a good chance. He has spent almost his whole life saving young lives… there was nothing he could have done for her," he said.
Bagraim believes that the girl's father laid charges out of anger. "He was looking for someone to blame for her death and he chose Karabus, because he was there for her last moments."
Bagraim described Karabus as a "very cheerful fellow who is humble despite his achievements".
He was getting all his medication at the airport. "He is hanging in there...With the heat reaching 45° in Abu Dhabi the strain on his health is enormous."
A Facebook page named Prof Cyril Karabus has been opened to rally support for a petition on www.avaaz.org.
When contacted by the Cape Argus, Department of International Relations and Co-operation spokesman Nelson Kgwete referred all queries concerning the case to Bagraim.
Cape Argus


text:
Starring as the smartphone in the motion pictures is the T-Mobile G2. Either the phone has a great agent or else HTC has struck a nice product placement pact. The handset does a great acting job in some of the classic films like Citizen Kane, Casablanca and Back to the Future to name a few
Would these movies still have received two thumbs up from the reviewers had the Android powered handset stepped in front of the camera to do its thing?
source: CollegeHumor


text:
Hacking attempts and how the administrators deal with them
View Single Post
Alexander Turcic
Fully Converged
Posts: 18,143
Karma: 12896890
Join Date: Oct 2002
Location: Switzerland
Device: Too many to count here.
Dear "User Name",
We have no affiliation, neither with the Internet address nor the provider you cited.
It is possible that whoever is using that particular IP is trying to login using your username ("User Name"). In most cases, this is some kind of automated bot software. My guess in your case: the bot software uses a default username which happens to be the username you picked to register here.
Please understand that there are hundreds if not thousands of bots accessing MobileRead every day, many of them trying to do some kind of mischief. It would be a futile attempt trying to ban them based on individual Internet addresses (which is what you asked us to do in your mail).
We'd be more than happy to assist you in changing your username to something different, less generic and less likely to be targeted by bot software.
Alexander Turcic
View Public Profile
Find More Posts by Alexander Turcic
Track Posts by Alexander Turcic via RSS


text:
Spirals and Stripes Baby Afghan (Tunisian) by Kim Guzman
Welcome! You are browsing as a guestWould you like to see 3 projects made from this pattern and much more? create a free account What am I missing?
© DRG Publishing
by crochetkim Flickr
Spirals and Stripes Baby Afghan (Tunisian)
Pattern book now available as a PDF download at Annie's Attic.


text:
Maureen O'Brien is an actress who doesn't like success. She gained fame playing Vicki on the popular English sci-fi boob-tube drama Doctor Who and later regretted taking the role. She left the show and even the business briefly, but you can't keep a fiery redhead away from the glow of fame for long. She returned to acting by the '70s, but it wasn't until the '80s that her career and her clothes took off. That was in She'll Be Wearing Pink Pyjamas (1984). Somebody in the cast may have worn...Join Mr. Skin for the full bio >>
She'll Be Wearing Pink Pyjamas (1984) - as Joan
Casualty - as Elizabeth Straker
The Whiteoaks of Jalna - as Alayne
Doctor Who - as Vicki


text:
The Swift Diagnosis Group Scheme specifically excludes the following list which is a summary only. For a full list of exclusions please see ´A Guide to Your Group Scheme´.
This option is not available if your employee holds a private medical insurance (PMI) policy with WPA. If after taking this option you wish to upgrade your employee(s) to a WPA PMI policy, they will be required to declare their full medical history and personal exclusions may be applied.
Call us about our plans
0800 298 9 588


text:
The new router supports (or will support when it's all in place) different responses for the same uri based on accept headers. This is also the current design for the serialization work. However Drupal's page cache only caches by path, not accept headers.
Ideally we want to be able to do full caching in reverse proxies and/or the internal page cache regardless of the response (as you currently can for RSS albeit at a different path). We also don't want to serve incorrect responses if HTML gets in the page cache and it bypasses the routing system.
Proposed resolution
Throughout the comment chain below, we have identified the following proposed solutions:
@crell recommends in comment #3
Should be solved by using the mime type in the cache key, inside HttpCache (or Varnish if you're using that).
@beejeebus recommends in comment #5
...we have to normalise the Accept header before it gets to the backend, and include it in the cache key.
@greg.1.anderson in comment #16 (improvement idea)
The cache key should contain a hash of the data type that was stored in the cache, not the set of all types that were requested. If someone used wget to request just "text/html", it would not make sense to generate a different cache key than the request shown for the browsers listed in #13.
This is hard because we haven't bootstrapped modules at the time the cache key is generated and checked.
If a module needs different "granularity" of normalization (e.g. to return a different type for "application/xhtml+xml" than for "text/html"), then it would need to somehow specify in some way that xhtml is significantly different than html, and this would have to happen on a path-specific basis.
@larowlan in comment #42
Provided a patch that still fails testing, but seems to get close to a solution.
@effulgentsia in comment #44
The reason [the patch in #42] fails is that formats are currently registered in KernelEvents::REQUEST subscribers, but currently, page cache is pre-kernel. Also mentioned in #1984766-3: Start relying on Request/Response objects for cache handling
Remaining tasks
1. getting the patch in #42 to work correctly and pass testing
2. from comment #9: "we start hosting a sane sample config on Drupal.org (if we don't already) and we can include well-documented normalization routines there"
3. from comment #9: "Make page caching work with accept header-based routing"
User interface changes
API changes
drupal_page_get_cache() has changed to take a Request object, the $check_only param was removed.
the Request object is required to build a page cache cid from
nothing in core used the $check_only flag.
Related Issues
- #339958: Cached pages returned in wrong language when browser language used
- #1944472: Add generic content handler for returning dialogs
- #1505080: [META] Content Negotiation for Accept Headers
- #1984766: Start relying on Request/Response objects for cache handling
- #1984766-3: Start relying on Request/Response objects for cache handling
Original report by catch
Additional info from original report, not included in summary:
Someone is bound to point out that there is #1597696: Consider whether HttpCache offers any significant benefit over the existing page cache in the queue, but I see no sign of HttpCache supporting this either, i.e.
return $this->keyCache[$request] = 'md'.sha1($request->getUri());
Opening this as critical, however it might be postponed on this feature actually being implemented.
I'm not sure which issue it is that actually does this, there is #1505080: [META] Content Negotiation for Accept Headers but this felt a bit off-topic in that issue. However if that's the one we could also just make sure that any patch that introduces this comes with tests to ensure this particular feature still works.
PASSED: [[SimpleTest]]: [MySQL] 58,021 pass(es). View
PASSED: [[SimpleTest]]: [MySQL] 57,920 pass(es). View
PASSED: [[SimpleTest]]: [MySQL] 57,992 pass(es). View
PASSED: [[SimpleTest]]: [MySQL] 57,644 pass(es). View
FAILED: [[SimpleTest]]: [MySQL] 57,944 pass(es), 1 fail(s), and 0 exception(s). View
Comment #3Crell CreditAttribution: Crell commented
I agree that this should be solved by using the mime type in the cache key, inside HttpCache (or Varnish if you're using that). Whether we do that now or wait for the HttpCache pipeline to be completed, I'm not sure. I'm inclined to wait to reduce the overall amount of work that needs to be done.
Comment #5beejeebus CreditAttribution: beejeebus commented
spoke to crell about this a bit.
as far as the http cache layer is concerned, the routing stuff means we may, or may not, get a different response from the backend based on the Accept header. so i think that means we have to normalise the Accept header before it gets to the backend, and include it in the cache key. make sense?
(we do something like this at $dayjob with the User-Agent and Accept-Encoding headers - normalise in nginx, so we can use them in the nginx cache without having a bazillion different keys when we're only varying on 'gzip/not gzip' and 'mobile/desktop'.)
Comment #6chx CreditAttribution: chx commented
I recommend not worrying about nginx :) Just because PHP is able to do Accept massaging doesn't mean we can't implement it in nginx and a) add the massaged variable to the proxy_cache_key b) pass the massaged version on with proxy_set_header. That really is of no concern. (Heck we can farm it out to a PHP upstream to do the Accept massaging only if that's what we want; after all nginx can do everything; but that's not speedy.)
Comment #8Crell CreditAttribution: Crell commented
You already have to have a Drupal-customized Varnish configuration to use it. Most people I know borrow the one from 4 Kitchens. It's probably time we start hosting a sane sample config on Drupal.org (if we don't already) and we can include well-documented normalization routines there.
Comment #9YesCT CreditAttribution: YesCT commented
The issue could use updating by someone who understands the discussion.
Especially identifying remaining tasks.
It sounds like from #8 that one of the tasks should be
we start hosting a sane sample config on Drupal.org (if we don't already) and we can include well-documented normalization routines there
Are there other concrete tasks identified?
Also, is this a [no patch] issue?
If the proposed solution is the issue title: "Make sure page caching works with accept header-based routing" is that to be done along the way, or at a certain point in the release cycle? Via manual testing (would need "steps to test" to help folks do that)?
Maybe a title like "Make page caching work with accept header-based routing" is better and a patch would do that...
Comment #10larowlan CreditAttribution: larowlan commented
Comment #11msonnabaum CreditAttribution: msonnabaum commented
|» Needs review
|811 bytes
FAILED: [[SimpleTest]]: [MySQL] 55,556 pass(es), 21 fail(s), and 28 exception(s). View
Perhaps I'm missing something, but does this patch not solve the issue? Seems pretty simple to me.
Comment #12msonnabaum CreditAttribution: msonnabaum commented
|825 bytes
FAILED: [[SimpleTest]]: [MySQL] 55,543 pass(es), 14 fail(s), and 0 exception(s). View
Comment #13msonnabaum CreditAttribution: msonnabaum commented
Also, in my local testing, chrome, safari, firefox, iOS safari, and chrome on iOS all send these for Accept:
So I'm not sure how much normalization actually has to be done.
Comment #14effulgentsia CreditAttribution: effulgentsia commented
Comment #16greg.1.anderson CreditAttribution: greg.1.anderson commented
The cache key should contain a hash of the data type that was stored in the cache, not the set of all types that were requested. If someone used wget to request just "text/html", it would not make sense to generate a different cache key than the request shown for the browsers listed in #13.
This is hard because we haven't bootstrapped modules at the time the cache key is generated and checked. c.f. #5, above: seems the best thing to do is to normalize the accept headers at the time the cache key is generated, and make sure that the modules get the normalized accept headers, not the full accept headers. If a module needs different "granularity" of normalization (e.g. to return a different type for "application/xhtml+xml" than for "text/html"), then it would need to somehow specify in some way that xhtml is significantly different than html, and this would have to happen on a path-specific basis.
Comment #17larowlan CreditAttribution: larowlan commented
Comment #18msonnabaum CreditAttribution: msonnabaum commented
|817 bytes
FAILED: [[SimpleTest]]: [MySQL] 56,066 pass(es), 71 fail(s), and 3 exception(s). View
Here's a better approach. Didnt see this method in the symfony 2.0 docs I was looking at.
Still broken because it doesn't handle setting yet.
Comment #19msonnabaum CreditAttribution: msonnabaum commented
Actually, not better, because getRequestFormat just returns html unless you set it…
Comment #20greg.1.anderson CreditAttribution: greg.1.anderson commented
Actually, #18 is moving in the right direction. We just need to run something like this first:
foreach (Drupal::request()->createFromGlobals()->getAcceptableContentTypes() as $type) {
if (/* MAGIC HERE */) {
Drupal can later use getRequestFormat to determine what data type to build and return, and it will be consistent with what was done at cache time. All we need is the magic part. If we just used vget to fetch a table that could be uses on a per-path basis (maybe using a regex to match paths?), we could iterate through the available path / type mappings and return TRUE if the type and path both match. The variable could be rebuilt by a function that modules could hook to insert additional path/type mappings.
By default, the table would contain just "all paths" == "text/html". If nothing is set in the look, then getRequestFormat already defaults to "html". (Maybe we need to map "text/html" to "html", or set the default to "text/html" before running the loop.)
Comment #21msonnabaum CreditAttribution: msonnabaum commented
|877 bytes
FAILED: [[SimpleTest]]: [MySQL] 56,430 pass(es), 71 fail(s), and 3 exception(s). View
Here's what I was going for previously.
Comment #22msonnabaum CreditAttribution: msonnabaum commented
|Needs work
|» Needs review
FAILED: [[SimpleTest]]: [MySQL] 56,293 pass(es), 59 fail(s), and 3 exception(s). View
And here's the setting bit.
Comment #23greg.1.anderson CreditAttribution: greg.1.anderson commented
|Needs review
|» Needs work
Nifty. Seems it would be good to make getContentType call setRequestFormat. Of course, getContentType also needs to work for types other than html, but it is a good start.
Comment #24msonnabaum CreditAttribution: msonnabaum commented
Yes, I agree, I think setRequestFormat is the right method to call, but I figured that should be changed in a larger content negotiation issue.
Comment #25effulgentsia CreditAttribution: effulgentsia commented
I think #12 would be an acceptable solution to the (Drupal) part of this issue that's prioritized as critical, especially given #13.
I think #16 would be a nice improvement, maybe even worthy of a "major" priority. To do that, we have a 'content_negotiation' service registered in core.services.yml. As long as when the drupal_page_get_cache() is running (or if/when HttpCache replaces it), we have access to the DIC in order to get the content_negotiation service, and are able to get a $request object to pass to it, then we can call
Drupal::service('content_negotiation')->getContentType($request) to get the cache key we want. Per the issue summary, our implementation of that service will be improved in #1505080: [META] Content Negotiation for Accept Headers.
and this would have to happen on a path-specific basis
Once #1505080: [META] Content Negotiation for Accept Headers is in, we could in theory do that by collecting all routes that match the path, taking a union of their allowed formats, and passing that union to
bestMatch(). However, that would require running a bunch of routing code, even on cache hits. I think it would be better to instead get an ordered array of possible matches, among all the formats supported by the site, and cache on that without regard to path-specific restrictions. I think the extra bit of cache duplication from that is lower cost than a much slower cache key generation process.
The main thing is either having upstream override the header, or making sure that headers are normalized reliably in both PHP and upstream, but it should be doable either way.
Yeah, per #8, this is relatively straightforward to do for proxies that can be configured (Varnish, nginx, etc.). The annoying elephant in the room is Akamai, which, according to http://www.rimmkaufman.com/blog/vary-user-agent/30112012/, will flat out refuse to cache any page that uses
Vary: Accept (or any other header other than Accept-Encoding). My current thought on that though is to leave that to contrib to solve. Such a contrib module would need to implement whatever the D8 equivalents of hook_url_inbound_alter() and hook_url_outbound_alter() will end up being (plus we'll need to expose a client-side equivalent hook in the Drupal.url() JS function) to implement whatever strategy it wants for adding format-specific information to the URL. Brainstorming some names for such a module:
retro_urls :)
Comment #26effulgentsia CreditAttribution: effulgentsia commented
Comment #27msonnabaum CreditAttribution: msonnabaum commented
Akamai is already incompatible with drupal because they ignore Vary: Cookie. I dont think this is worth considering.
Comment #28msonnabaum CreditAttribution: msonnabaum commented
I should clarify, they are incompatible by default, but you can do whatever you need with a custom configuration from them as I recall.
Comment #29msonnabaum CreditAttribution: msonnabaum commented
|Needs work
|» Needs review
Comment #31Crell CreditAttribution: Crell commented
+++ b/core/includes/bootstrap.inc
@@ -1126,6 +1125,15 @@ function drupal_page_get_cache($check_only = FALSE) {
+function drupal_page_cache_key() {
+ global $base_root;
+ $key = array($base_root);
+ $request = Drupal::request()->createFromGlobals();
+ $key[] = Drupal::service('content_negotiation')->getContentType($request);
+ $key[] = request_uri();
+ return md5(implode(',', $key));
Doesn't this imply that the key we use is "html" or "json_hal", not the actual mime type? Which, in turn, means an inconsistency with how a reverse proxy will cache it?
That doesn't seem wise.
Also, we shouldn't be using request_uri(). That should really be deprecated. I also don't understand why you're recreating the request object here rather than just using Drupal::request().
Comment #32msonnabaum CreditAttribution: msonnabaum commented
Using Drupal::service('content_negotiation')->getContentType() is essentially the normalization we were looking for. I'm using the same logic here to key the cache that we are to determine what response to send. I don't see anything wrong there.
I recreated the request because the headers weren't available unless I called createFromGlobals(). No idea why.
Removing request_uri is out of scope for this issue.
Comment #33Crell CreditAttribution: Crell commented
I mean the thing you get back from request_uri() can be gotten off of the request object.
If the headers are not available, that's a bug that should be investigated, not hacked around.
Comment #34msonnabaum CreditAttribution: msonnabaum commented
Fair enough, I started #1984766: Change notice: Start relying on Request/Response objects for cache handling to track those changes.
Comment #36beejeebus CreditAttribution: beejeebus commented
i don't think that is a caching problem, but a routing one.
as far as i understand it, if a client asking for RSS doesn't set the right Accept headers, D8 will either serve them html instead of rss, or will return a 404.
Comment #38greg.1.anderson CreditAttribution: greg.1.anderson commented
#22 does not suffer from the problem described in #37 (although #12 did). The existing function getContentType() used in #22 is very similar to the proposal in #20, except it is currently just a stub function that handles only html. As mentioned in #24, that will be addressed in a separate issue -- but I don' think there is an existing issue for it yet.
Comment #39effulgentsia CreditAttribution: effulgentsia commented
except it is currently just a stub function that handles only html
It currently handles html, drupal_ajax, ajax, and iframeupload. Once #1959574: Remove the deprecated Drupal 7 Ajax API is in, I'm not entirely sure what the future of ajax and iframeupload will be. #1944472: Add generic content handler for returning dialogs adds drupal_dialog and drupal_modal. In HEAD, we also have a HalSubscriber that adds 'hal_json'. Other request subscribers can add more. But maybe KernelEvents::REQUEST is the wrong place to add these if they're needed by the page caching layer?
As mentioned in #24, that will be addressed in a separate issue -- but I don' think there is an existing issue for it yet.
Isn't that #1505080: [META] Content Negotiation for Accept Headers, or are you referring to some other work that's needed beyond the scope of that issue?
Doesn't this imply that the key we use is "html" or "json_hal", not the actual mime type? Which, in turn, means an inconsistency with how a reverse proxy will cache it?
Why is that a problem? So Drupal's page cache can benefit from a more efficient cache key, while a reverse proxy would use a less efficient cache key, unless someone configures it with some normalization logic based on knowledge of what Drupal modules are in use. Why is it necessary for Drupal and the reverse proxy to have identical normalization?
Well if ten different RSS readers visit the same feed URL with ten different sets of headers, how many unique cache IDs will they generate.
In the Drupal page cache, with #22, 1. After #1505080: [META] Content Negotiation for Accept Headers, possibly several, depending on how we want to implement fallbacks, but likely not many. In the reverse proxy, depends on what normalization logic it's configured with.
Comment #40greg.1.anderson CreditAttribution: greg.1.anderson commented
Agree with #39; thanks for the corrections.
Comment #41larowlan CreditAttribution: larowlan commented
|Needs work
|» Needs review
|Issue tags:
|-Needs tests
FAILED: [[SimpleTest]]: [MySQL] 55,829 pass(es), 1 fail(s), and 0 exception(s). View
FAILED: [[SimpleTest]]: [MySQL] 55,885 pass(es), 1 fail(s), and 0 exception(s). View
Here's some tests now #1944472: Add generic content handler for returning dialogs is in - interdiff is the test-only patch.
Note that patch from 22 does not make the test pass so def needs work.
Comment #42larowlan CreditAttribution: larowlan commented
FAILED: [[SimpleTest]]: [MySQL] 55,799 pass(es), 2 fail(s), and 0 exception(s). View
FAILED: [[SimpleTest]]: [MySQL] 55,612 pass(es), 2 fail(s), and 0 exception(s). View
Fixes the debug in the test and add missing blank line at end of yml file.
Interdiff against #22 is test only file.
Again will still fail but at least we have a test now.
Comment #44effulgentsia CreditAttribution: effulgentsia commented
Thanks for the test! The reason it fails is that formats are currently registered in KernelEvents::REQUEST subscribers, but currently, page cache is pre-kernel. I mentioned that in #1984766-3: Change notice: Start relying on Request/Response objects for cache handling as well. I'm not yet clear on whether changes related to that should be discussed/done here, in that issue, or in some new issue.
Comment #46jaredsmith CreditAttribution: jaredsmith commented
This issue could use an updated issue summary, based on the templates at http://drupal.org/issue-summaries.
Comment #47rainbreaw CreditAttribution: rainbreaw commented
@chuchunaku and @rainbreaw are working on summarizing this at the d8 sprint at drupalcon
Comment #48rainbreaw CreditAttribution: rainbreaw commented
@chuchunaku and @rainbreaw have finished/posted our effort at a summary
Comment #49rainbreaw CreditAttribution: rainbreaw commented
updating tag to remove "needs issue summary"
Comment #52chx CreditAttribution: chx commented
Just remove the router and be done.
Comment #54larowlan CreditAttribution: larowlan commented
the dialog controller uses accept based routing too.
Comment #55beejeebus CreditAttribution: beejeebus commented
|Needs work
|» Needs review
PASSED: [[SimpleTest]]: [MySQL] 57,893 pass(es). View
reviving this.
Comment #56Damien Tournoud CreditAttribution: Damien Tournoud commented
Given the current state of "Content negotiation" in core, #55 is probably enough.
Comment #57beejeebus CreditAttribution: beejeebus commented
yeah, i am just dumbfounded at our use of accept headers with the ajax dialog controllers, but we can leave that ugly alone and still have the basics working.
Comment #58klausi CreditAttribution: klausi commented
I was hoping for a cleaner page caching solution in D8, but it seems that this is the best we can do right now.
This should have a test case that shows that we have actually fixed something.
Comment #59dawehner CreditAttribution: dawehner commented
@@ -951,6 +951,23 @@ function variable_del($name) {
+ $cid_bits = array(
+ $request->getUri(),
+ Drupal::service('content_negotiation')->getContentType($request),
+ );
+ return md5(implode(':', $cid_bits));
I am wondering whether there should be also the query parameters be involved
Comment #60Damien Tournoud CreditAttribution: Damien Tournoud commented
getUri() returns the absolute URL of the request, including scheme, host, possible base path, path info, and query string.
Comment #61beejeebus CreditAttribution: beejeebus commented
|Needs work
|» Needs review
|Issue tags:
|-Needs tests
PASSED: [[SimpleTest]]: [MySQL] 57,841 pass(es). View
FAILED: [[SimpleTest]]: [MySQL] 57,944 pass(es), 1 fail(s), and 0 exception(s). View
added a test.
Comment #62msonnabaum CreditAttribution: msonnabaum commented
Missing a @param doc for drupal_page_get_cache, but as soon as that's fixed, I think this is RTBC.
Comment #63beejeebus CreditAttribution: beejeebus commented
added missing @param...
Comment #64msonnabaum CreditAttribution: msonnabaum commented
|Needs review
|» Reviewed & tested by the community
Comment #65Damien Tournoud CreditAttribution: Damien Tournoud commented
This is as smart as our content negotiation, so +1 from me too.
Comment #65.0Damien Tournoud CreditAttribution: Damien Tournoud commented
Issue summary from @chuchunaku and @rainbreaw at drupalcon sprint
Comment #67Crell CreditAttribution: Crell commented
We really ought to be honoring the Vary header properly rather than just hard coding the Accept header. Our routing system currently supports routing by a whole lot of things. Our cache system should as well.
Comment #68beejeebus CreditAttribution: beejeebus commented
|Needs work
|» Needs review
PASSED: [[SimpleTest]]: [MySQL] 57,992 pass(es). View
#66 - i've added everything except the tests on accept header. this new code doesn't do anything smart with accept headers, it asks for a normalised value from our existing content negotiation code. if we need more tests for the content negotiation bits, can we do it in another issue?
#67 - i have no helpful response to that, so i'll just pretend it doesn't exist.
Comment #70beejeebus CreditAttribution: beejeebus commented
Comment #71alexpott CreditAttribution: alexpott commented
If we going to invoke the no md5() in core rule then we have to do something about Symfony, Guzzle, Twig, Zend Feed, Assetic, PHPUnit. Just saying :)
Comment #72Crell CreditAttribution: Crell commented
|Needs review
|» Needs work
alexpott: All the more reason we should move those out of the repository and pull them in through Composer properly. ;-)
@@ -958,23 +975,15 @@ function variable_del($name) { + $cache = cache('page')->get(drupal_page_cache_get_cid($request));
As long as we're touching this line, can we switch it to use \Drupal::cache() instead? One less function call, one more autoloadable class call. This is a good thing.
(I'm tempted to ask to make all of this functionality a classed object, actually...)
@@ -1,11 +1,17 @@ function system_test_menu() { + $items['system-test/page-cache/accept-header'] = array( + 'page callback' => 'system_test_accept_header', + 'access callback' => TRUE, + 'type' => MENU_CALLBACK, + );
MENU_CALLBACK menu items no longer exist. They should be routes only. Please don't add more things we just need to remove later. :-)
@@ -280,3 +286,16 @@ function system_test_authorize_init_page($page_title) { +/** + * Page callback: serves different responses based on the HTTP Accept header. + */ +function system_test_accept_header() {
As above, this should be a proper controller. And in that case it can take the Request as an injected value rather than using \Drupal.
At least the way this is structured now, changing how the cid is calculated to be more robust shouldn't touch anything else. So I'm OK with this for now, with the comments above.
Comment #73beejeebus CreditAttribution: beejeebus commented
|Needs work
|» Needs review
PASSED: [[SimpleTest]]: [MySQL] 57,920 pass(es). View
updated patch as per review in #72.
Comment #74Crell CreditAttribution: Crell commented
@@ -0,0 +1,7 @@
+ pattern: '/system-test/page-cache/accept-header'
+ defaults:
+ _controller: '\Drupal\system_test\Controller\PageCacheAcceptHeaderController::content'
+ requirements:
+ _access: 'TRUE'
Thinking about it... This should really be 2 separate controller methods, and 2 separate routes. That is what we want to encourage people to do anyway, so it's a more accurate integration test.
Is it feasible to move drupal_page_cache_get_cid(), drupal_page_set_cache(), and drupal_page_get_cache() to a classed object, specified via Settings? That would allow the code to be autoloaded and allow sites to swap out the cid logic themselves for whatever else they decide it should be.
Comment #75beejeebus CreditAttribution: beejeebus commented
i really don't want to do the two separate routes/controllers thing. we are not testing the routing here - that's an implementation detail that the cache system does not care about. we are testing 'the same URI returns different content based on Accept', not 'our routing system can use different controllers based on Accept'. this is much like me pushing back on catch asking for a bunch of different Accept headers, because that would be testing the content negotiation code, not the cache system.
also, i agree with wanting to allow the cid generation to be alterable/pluggable, but was hoping to do that in a follow up. this late in the cycle, small things are easier to land...
update: i created #2062463: allow page cache cid to be alterable for the cid generation bit.
Comment #76msonnabaum CreditAttribution: msonnabaum commented
I agree about routing. It's a test, nothing matters outside of the code under test.
And yes, let's please do the conversion to an object/service in a followup since that's pure refactoring. Let's just get this in.
Comment #77Crell CreditAttribution: Crell commented
|Needs review
|» Reviewed & tested by the community
OK, incremental it is.
Comment #78alexpott CreditAttribution: alexpott commented
|Reviewed & tested by the community
|» Needs work
+++ b/core/includes/bootstrap.incundefined
@@ -958,23 +975,15 @@ function variable_del($name) {
if ($cache !== FALSE) {
$cache_hit = TRUE;
This can be removed form drupal_page_get_cache() since you've removed the check only functionality.
Otherwise looks good to me and manual testing confirms it's working as expected.
Comment #79beejeebus CreditAttribution: beejeebus commented
|Needs work
|» Reviewed & tested by the community
PASSED: [[SimpleTest]]: [MySQL] 58,021 pass(es). View
nice catch, only change is to update for #78.
Comment #80Damien Tournoud CreditAttribution: Damien Tournoud commented
Looks good to me too.
Comment #82.0(not verified) CreditAttribution: commented
added api change.
also, whiskey is nice.


text:
A few weeks ago, Kyle Banta was eager to pick up his bagpipes and go busking again in central Vancouver.
For two straight summers, the 22-year-old has been playing on city sidewalks, earning spending money, trying out his own compositions and winning approval from members of the public charmed by the pipe sounds. Some would ask when he would be back. At times, he would make $100 a day.
So Mr. Banta says he was surprised to see on the city website that bagpipe busking was to be banned by Vancouver's engineering department due to noise concerns – part of a ban that also covered percussion instruments.
"I was quite disappointed because my favorite thing is to play pipes," said Mr. Banta, describing a decision implemented in a "sleek, quiet way." He said calls to the engineering department seeking clarification were not returned.
But the unusually specific ban, which hit a few bagpiping buskers in Vancouver, has run into opposition from one of the city's top Scots.
That would be Vancouver Mayor Gregor Robertson, who was sworn in for a second term wearing a kilt in reflection of his Scottish heritage.
The mayor has been known to play the tuba, but is prepared to go the wall for bagpipers.
He's mindful of noise complaints, but says the ban brought about by the city engineering department will face opposition from city council, dominated by Mr. Robertson's Vision Vancouver party. The ban is under review.
"My first reaction is that a complete ban on bagpipes and percussion instruments across the city is ridiculous and culturally insensitive," Mr. Robertson said in a statement.
"The clans won't stand for it."
The last line was a bit of a joke, but Mr. Robertson is serious about taking on a ban that has been the talk of the piping community.
Jack Lee, the pipe sergeant of the six-time world champion Simon Fraser University Pipe Band, is outraged.
"To ban bagpipes is so short-sighted – one of the great instruments of the world, and one of the oldest instruments of the world," said Mr. Lee
"Bagpipes are not really that loud. When my next-door neighbour starts his lawnmower, it's far louder than I would be if I blew my bagpipes up.
"It brings a lot of pleasure to a lot of people."
Rob MacNeil, president of the B.C. Pipers Association, recalls an incident in 1943 where a piping busker was arrested by a Vancouver police officer over opposition to his playing, and then jailed for six months until he was cleared by a court ruling that also brought about $150 in compensation.
But Mr. MacNeil, who has been playing the pipes since he was 10 years old, said he has never heard of such a ban elsewhere in Canada.
"I think it should be reversed. I've seen busking in so many cities around the world. When it's done properly so it basically respects the instrument, and the national dress and the audiences and the [surrounding]businesses, it is a valuable thing, and a lot of people like to see the entertainment that pipers can provide," he said.
Andrew Berthoff, the Toronto-based editor of Pipes/Drums magazine, said he has vaguely heard of noise-related bans in Britain, but never in Canada.
"Canada has some of the best pipers in the world and, probably per capita a better quality on average – more talented pipers than you would hear perhaps anywhere," he said.
Mr. Berthoff, who busked in Edinburgh about 25 years ago recalled the routine as a great way to practise. Some Scots hated the noise, he recalls, but most liked it.
Mr. Banta also busked in Scotland. He says he got a better reaction in Vancouver than in the Scottish city of Stirling, where he recalls people were a bit more blasé about the sounds of the pipes.
Now he's hoping to play again in Vancouver. He's a competitive player, and he also plays in classrooms and concerts, but says there was something special to sidewalk playing.
"For me, the mature and responsible thing to do is wait and hope the bylaw is changed, and the ban is lifted because I do believe it was a wrong move for the city," he said. "All I can really do is wait."Report Typo/Error
Follow @ianabaileyon Twitter:


text:
Diagnosing car problems may seem like a daunting task but it's doable with a little know-how. Diagnosing car problems becomes easier once you understand what to look for. In this section you'll find articles dedicated to diagnosing car problems.
Auto body problems aren't always easy to spot. Diagnosing auto body problems sometimes requires a little know-how. In this section you'll find articles dedicated to teaching you how to diagnose auto body problems.
Learning to diagnose mechanical auto problems can save you time and money on your vehicle. In this section, get familiar with the inner workings of your car and learn how to tell what may be wrong with it.


text:
Thank You!
Your request has been received. A staffing professional will be contacting you shortly.
Specialized Staffing Experts
Robert Half is the world's first and largest specialized staffing agency. We're dedicated to providing your business with highly skilled professionals well-matched to your unique hiring requirements and workplace environment. Whether you're looking to staff accounting and finance, technology, administrative, legal, or creative and marketing jobs, we can help you find the right fit for your team.


text:
L-3 Avionics Systems has received STC approval aboard the King Air C90 for its new Iris infrared imaging system for general aviation aircraft, along with FAA Parts Manufacturer Approval. The C90 is the first application for Iris, which a spokesperson said is generating "tremendous interest. We have installation and certification programs under way for many different platforms."
The Iris enhanced-vision system displays a real-time gray scale image of the runway environment day or night, including other aircraft, people and obstacles. The barium strontium titanate detector provides 320- by 240-pixel clarity. L-3 claims it is immune to solar radiation and displays an uninterrupted, continuously calibrated image even during turns and maneuvers. Visitors can see demonstrations of the Iris system at L-3's Booth No. 1646.


text:
Tilba by Berroco Design Team
Welcome! You are browsing as a guestWould you like to see 7 projects made from this pattern and much more? create a free account What am I missing?
© Berroco Inc.
© gottamake
© Berroco Inc.
Errata available: berroco.com berroco.com
Tilba, page 12 errata posted 2/26/10
Tilba features garter rib front bands, wide elbow-length sleeves and a hood. It closes with long ties. (Berroco)
Skill Level: Intermediate
Finished measurements
Bust (closed) – 40(44-48-52-56)"
Length – 21½(22-22½-23½-24½)"
Note: This garment is designed with a very oversized fit. Please take this into consideration when selecting your size.
Berroco Origami™ (50 grs),
10(11-12-13-14) Hanks #4362 Whale Watch
For more information, see: http://www.berroco.com/patterns/tilba


text:
Analytical expressions are derived for a new set of optical beams, in which the radial dependence is described by a sum of Bessel distributions of different orders, modified by a flat-topped Gaussian function expressed in the form where ξ is a dimensionless parameter and is a scalar quantity. The flat-topped Gaussian function can be readily expanded into a series of the lowest-order Gaussian modes with different parameters; this situation makes it possible to express the optical beam as a series of conventional Bessel–Gaussian beams of different orders. The propagation features of this new set of optical beams are investigated to reveal how a windowed Bessel beam passes progressively from a smooth Gaussian window toward the hard-edge limit.
© 2004 Optical Society of AmericaFull Article | PDF Article
OSA Recommended Articles
Emmanuel Cagniot, Michael Fromager, and Kamel Ait-Ameur
J. Opt. Soc. Am. A 26(11) 2373-2382 (2009)
Yajun Li
Opt. Lett. 27(12) 1007-1009 (2002)
Yajun Li
J. Opt. Soc. Am. A 23(3) 730-740 (2006)


text:
Sri Lanka's Lasith Malinga and Muttiah Muralitharan combined to humiliate Bangladesh for their lowest score of 62 on the opening day of the second cricket Test here on Tuesday.
Fast bowler Malinga and off-spinner Muralitharan grabbed four wickets each as Bangladesh, sent in to bat at the P. Sara stadium, were dismissed in the first over after lunch off 25.2 overs.
Sri Lanka took a first innings lead of three runs by tea as they went into the break on 65-1 with Malinda Warnapura unbeaten on 36 and Kumar Sangakkara on nine.
Left-hander Michael Vandort was the batsman out, bowled by Mashrafe Mortaza for 14.
Bangladesh, thrashed by an innings and 234 runs in last week's first Test, fell below their previous lowest total of 86, also against Sri Lanka in 2005.
Malinga, 23, whose distinctive slinging action makes him a dangerous foe, created havoc in the rival ranks by scalping the first four wickets in a hostile opening spell.
The tourists were reduced to 22-4 within the first hour, before Muralitharan (4-14) and third seamer Dilhara Fernando (2-16) polished off the rest of the batting.
Muralitharan moved his career tally to 687 wickets, leaving him just 21 short of equalling retired Australian spinner Shane Warne's world record haul of 708.
Bangladesh, who were bowled out for 89 on the first day of the previous Test, once again found the formidable Sri Lankan attack too hot to handle.
Malinga trapped Shahriar Nafees with his fourth delivery and then had the other opener, Javed Omar, caught behind by wicket-keeper Prasanna Jayawardene three overs later.
The tourists slipped further as Malinga removed former captain Habibul Bashar and current skipper Mohammad Ashraful in four deliveries of his fifth over.
Bashar made five when he hung his bat out to an outswinger and was snapped up at second slip by Sri Lankan captain Mahela Jayawardene.
Ashraful fell to the last ball of the over as he flicked hard, but only to see Malinda Warnapura take a blinding catch in front of square leg.
Debutant all-rounder Mehrab Hossain lasted only 15 deliveries before he was bowled by Fernando after punching the previous delivery for a four.
Muralitharan, who came on in the 16th over, was hit for two boundaries by young Mushfiqur Rahim before the prolific off-spinner had him caught behind for nine.
Muralitharan had Mohammad Rafique caught in the deep before ending Rajin Saleh's defiant knock of 21 just before lunch.
Sri Lanka retained the team that won the first Test at the Sinhalese Sports Club last week.
Bangladesh made three changes, bringing in Mehrab, seamer Mohammad Sharif and 18-year-old wicket-keeper Rahim.
The trio replaced Khaled Mashud, Shakib-Al Hasan and Abdur Razzak.


text:
Saas Fee snow report 18.12.2012
Here is the latest snow report from our team in Saas Fee
There is an amazing 220cm of snow at the top of the Saas Fee ski area with 70cm in resort. The last snowfall was yesterday and they had 10cm. More snow predicted this afternoon followed by two days of bright blue sky's. Lows of -8 and highs of 0 degrees.
Some amazing powder found its way to Saas Fee Monday morning ready for first guests. Powder covered slopes made the mornings skiing a thoroughly enjoyable experience for all whether skiing upright or not. The sun made a guest appearance for a refreshingly warm two hours to give a great view from the Alpin Express down to Saas Fee and the surrounding Valley before healthy slurries of snow dusted the slopes ready for the afternoon on the scenic Plattjen.


text:
Automation Foundations Form Joint Company
Source: ControlGlobal.com
Nov 07, 2011
The five major automation foundations, FDT Group, Fieldbus Foundation, HART Communication Foundation, Profibus and Profinet Intenational, and OPC Foundation, have developed a single common solution for field device integration (FDI). These foundations have decided to combine their efforts and form FDI Cooperation LLC. This was made formal by all representatives signing the contract documents in Karlsruhe, Germany.
FDI Cooperation will be headed by a Board of Managers, which is composed of the representatives of the involved organizations, as well as managers of global automation suppliers, including ABB, Emerson Process Management, Endress+Hauser, Honeywell, Invensys, Siemens and Yokogawa.
Hans-Georg Kumpfmüller of Siemens will serve as chairman of the board. Achim Laubenstein of ABB has been nominated as executive director.
The purpose of the organization is to complete the standardization of FDI under the International Electrical Commission (IEC), manage the FDI specification, and finalize the FDI tool kits for system and device manufacturers.
FDI Cooperation originated from efforts at the EDDL Cooperation Team (ECT) to accelerate deployment of the FDI solution. FDI is a unified solution for simple, as well as the most advanced field devices, for the various tasks associated with all phases of their lifecycle, such as configuration, commissioning, diagnostics and calibration. The ECT broadened the scope of the FDI project to harmonize EDDL across communication protocols, and provide FDI design and test tools, including a common EDD Interpreter.
Signing on the dotted line
The heads of the five foundations, left to right, Glenn Schulz, FDT Group; Richard Timoney, Fieldbus Foundation; Ron Helson, HART Foundation; Thomas Burke, OPC Foundation; and Joerg Frietag, Profibus and Profinet International, sign on the dotted line to form the FDI Cooperation LLC.
Join the discussion
We welcome your thoughtful comments.
All comments will display your user name.
Want to participate in the discussion?Register for free
Log in for complete access.
No one has commented on this page yet.
RSS feed for comments on this page | RSS feed for all comments


text:
Massachusetts Brachial Plexus Injury Lawyer
A brachial plexus injury, also known as Erb's Palsy and Klumpke's palsy, is the result of a birth complication called shoulder dystocia. Brachial plexus palsy (shoulder dystocia) is a birth injury that occurs when a fetus' shoulders are too large for the birth canal and become trapped behind the pubic bone after delivery of the baby's head. This complication often results in a broken arm and strain of the nerves that travel through the neck, a condition called brachioplexus.
Unfortunately, brachial plexus palsy, Erb's Palsy and Klumpke's palsy are too often the result of medical mistakes by a doctor or nurse during the delivery and birth process. These medical mistakes are also known as medical malpractice because these conditions are often foreseeable and preventable.
Call us at 1-888-554-2889 to speak to a Massachusetts medical malpractice attorney. We offer:
- A free, no-obligation case evaluation by a personal injury lawyer
- No fee unless we win your case
- Flexible appointments
- Home and hospital visits
Medical Malpractice and Brachial Plexus Injuries
Examples of medical malpractice often resulting in a brachial plexus injury include:
- A doctor's failure to recognize that the baby is too large for natural delivery and he/she doesn't elect to perform a caesarean birth (C-Section) instead
- A doctor uses the wrong delivery method once the baby's shoulder becomes stuck behind the pelvic bone.
Common Types of Brachial Plexus Injuries
Common types of brachial plexus injuries include:
- Erb's palsy, also known as brachial plexus palsy, occurs when birth trauma affects the nerves that supply the movement and feeling to shoulders and arms. This type of birth injury refers to damage in the upper plexus of the baby. The resulting paralysis can be either partial or complete.
- Klumpke's palsy refers to damage in the lower plexus of the baby. Like Erb's palsy, Klumpke's palsy can lead to paralysis or weakness that comes from stretching the nerves during delivery. Children with Klumpke's palsy do not have full range of movement in their hands and wrists.
Brachial Plexus Warning Signs
In many birth injury cases, the Doctor's failure to anticipate and prevent shoulder dystocia is due to his/her failure to recognize early warning signs including:
- Gestational diabetes
- Obesity in the mother or excessive weight gain during the pregnancy
- Expectant mothers with a small pelvis
- Mothers who previously gave birth to a large baby
- Mothers in post-term pregnancy
Brachial Plexus Contributing Factors
Factors often associated with a brachial plexus birth injury include:
- a heavy or large baby
- prolonged labor
- excessive force being used during delivery
- breech birth (feet of baby or bottom of baby delivered first)
Three in 1,000 children suffer an injury to the brachial plexus as a result of a shoulder dystocia injury during the birth process. Too often, medical malpractice is to blame.
Contact a Brachial Plexus Injury Attorney
If your baby suffered some form of brachial plexus injury during birth in Massachusetts, call to schedule a free, no obligation consultation with our personal injury lawyers or contact Kelley Law Group today. Our team of qualified brachial plexus lawyers will closely examine your child's delivery processes to determine whether the birth injury was a result of medical malpractice.
Call us at 1-888-554-2889 to speak to a Massachusetts brachial plexus lawyer. We offer:
- A free, no-obligation case evaluation
- No fee unless we win your case
- Flexible appointments
- Home and hospital visits
Inform Your Friends and Family...
If you think your family, friends or colleagues might find this website helpful, please share it with them via Facebook, MySpace, Twitter or any of the other popular social networking and/or social bookmarking sites by simply clicking below.


text:
Whipped Sweet Potatoes with Caramelized Apples
A topping of caramelized diced apples makes a beautiful presentation, but also works wonderfully with the flavor of the sweet mash -- so well that nobody will miss the standard mini marshmallows.
- Servings: 6
Source: Martha Stewart Living, November 2002
- 4 large sweet potatoes, pierced with the tines of a fork
- 1/4 cup (1/2 stick) unsalted butter, softened
- 2 tablespoons heavy cream
- 1/2 cup applesauce, preferably homemade
- 2 teaspoons grated fresh peeled ginger
- 1 teaspoon coarse salt
- Freshly ground pepper
- 2 apples (1 pound), peeled, cored, and cut into 1-inch pieces
- 3 tablespoons sugar
Preheat oven to 375 degrees. Arrange potatoes on a baking sheet lined with parchment. Bake until tender, 1 hour 10 minutes to 1 hour 20 minutes. Remove from oven; let stand until cool enough to handle.
Cut each potato lengthwise. Scoop flesh into the bowl of an electric mixer fitted with a paddle attachment; discard skins. Add 2 tablespoons butter and the cream; mix on medium speed until smooth. Mix in applesauce and ginger; season with salt and pepper.
Transfer potato mixture to an ovenproof dish. Bake until heated through, about 10 minutes.
Meanwhile, toss apples with sugar in a bowl. Melt remaining 2 tablespoons butter in a large skillet over medium heat. Add apple mixture; cook, stirring occasionally, until apples are golden and caramelized, about 10 minutes.
Remove potato mixture from oven; top with caramelized apples, and serve.
Reviews Add a comment
777Deb77726 NOV, 2011Every year for the past 7 years I have tried a different recipe for Sweet Potatoes on Thanksgiving to find one that everyone loves. I made this recipe this year and finally I found our keeper!! Everyone RAVED about it!! I used half the amount of ginger because I am not a ginger person. No one was able to guess what the spice was in it, they thought it cinnamon or nutmeg..lol and I am twice as happy because it is a Very Healthy recipe!! Thank you Martha!!!!Reply
1ClassyMom20 NOV, 2011I have not tried it, but the picture is unappetizing.Reply
lirpaj2929 NOV, 2010I made this for Thanksgiving this hear and it really did get great reviews from friends and family. However, I had a hard time getting my apples to caramelize. I followed the recipe, and I used braeburn apples. It seemed like they released a LOT of juice, so I did pour some of that off. Any ideas on what I should have done differently?Reply
LoriLev25 NOV, 2010I made a big batch of this recipe for Thanksgiving. It was delicious. I started the potatoes in the microwave to cut down on oven time then transferred them to oven to finish them off. Just be sure to poke them with a fork first. I also added a bit of cinnamon and used ground Ginger because that's what I had on hand. I coated the apples with a bit of lemon juice before adding sugar and caramelizing and they did not turn yucky brownReply
USCStephanie23 NOV, 2010This recipe received rave reviews from my friends at a recent Thanksgiving potluck. I was surprised at what a healthy dish this actually was. I found that I had to cook the potatoes over 90 minutes because they were large. Also chefletisia's comment about adding cinnamon to the apples worked well.Reply
chefletisia11 DEC, 2009This was great! Everyone really enjoyed them! Yum. I liked the ginger a lot. I will make these again, but maybe add cinnamon to the apples.Reply
catherine49518 OCT, 2009These are fine, but I prefer Martha's Mashed Sweet and Russet Potatoes with Herbs. I would not make these again.Reply
danceygirl21 NOV, 2008I made this when it first came out in 1995 (I still have the original MS Living magazine, with all the stains on it lol) and it is the BEST. So delicious, so easy, everybody loved it. I'm going to bring it back this year!Reply
Hayley_sGrandma1 DEC, 2007This was so delicious, I doubled the recipeReply
virginiabelle323 NOV, 2007I don't care for the taste of ginger so I substituted cinnamon for it. Umm, delicious!Reply


text:
Results 1 to 12 of 12
04-08-2013, 07:55 PM #1Member
- Join Date
- Jan 2012
- Posts
- 14
- Rep Points
- 43.0
- Mentioned
- 0 Post(s)
- Rep Power
- 0
Castro Motorsport: Breaking In Our Shop Race Car
So we finally got around to finishing the build on our shop race car last week! Chris Castro and the crew managed to complete the S50 swap, the custom turbo set-up, tune it, swap the Z3 M-coupe 5-lug on with coil-overs, install all polyurethane bushings, etc. The cage had been finished a while ago, but we simply didn't have time to get to everything else till now.
Anyway I will be posting a build thread by the end of the week, but here's a fun video from Friday roasting some tires in front of the shop!
SHOUT OUT TO BLUNT TECH AND OTIS (good & tight) FROM RAPID SPOOL FOR SPONSORING US WITH THE TURBO MANIFOLD, AND WHITELINE SUSPENSION FOR PROVIDING US WITH THE BUSHINGS!!!
sickkkkkkkkkkkkkkkkk2006 AW/Black ZCP 6MT
E46 M3 Owners of the World <---- Join the FB group!!
Instagram :: @NotSMG.M3
04-09-2013, 03:51 PM #4Member
- Join Date
- Jan 2012
- Posts
- 14
- Rep Points
- 43.0
- Mentioned
- 0 Post(s)
- Rep Power
- 0
A couple burnout shots:
And a few teasers of our trip to Shift S3ctor's Airstrip Attack this past weekend:
First of all, f'ing sick.
Secondly, let me help you embed:
I can't let you advertise the shop in your sig, sorry. I won't set you as a guest vendor but if it happens again I have to.
04-11-2013, 09:44 PM #7Member
- Join Date
- Jan 2012
- Posts
- 14
- Rep Points
- 43.0
- Mentioned
- 0 Post(s)
- Rep Power
- 0
The car is SICK AS $#@!
My Dad had an E30 325i..... Wish he still had that carCOBB AP ProTune by Bren of ///Bren Tuning
Akrapovic DP | Helix FMIC | Alpina TCM Flash | Walbro 450LPH Fuel Pump
"The moment money becomes your motivation, you are immediately not as good as someone who is motivated by passion and internal will." -A. Senna
04-12-2013, 10:34 PM #11Member
- Join Date
- Jan 2012
- Posts
- 14
- Rep Points
- 43.0
- Mentioned
- 0 Post(s)
- Rep Power
- 0
Castro Motorsport: S50 Turbo E30 Race Car Build!
Hi Everyone,
So it's been a long time coming, but Chris and I finally decided to build our own shop race car/track toy! Less then a year ago I found a 4 door non-sunroof 325i rolling chassis that had a beautiful cage for a ridiculously good deal. I went to go check it out, and it was a done deal!
Chris and I had initially planned to use a cammed, high compression S52 I had sitting around for this car since it would be nice and light and track driven. However, after building Sebo's S50 turbo E30, and how much easier it was to drive then what we initially expected, we decide to go with a turbo S50/2 for this project.
I started hoarding parts a while ago to try to make this the best bang for you buck project possible. A key part of the build was a complete M-coupe 5-lug suspension, with brakes and subframe I got an amazing deal on. We upgraded the front M-coupe brakes with the larger 330i ZHP front brake set-up.
For suspension I reached out to my friend Reid at Whiteline Suspension for all polyurethane bushings, and they were nice enough to sponsor us with rear sub-frame and rear trailing arm bushings! We also used Treehouse racing front delrin control arm lollipops. For coil-overs, we went with the tried and true German Engineering coil-over conversion and camber plates. The coil-overs were coupled with Koni single adjustable front struts, and double adjustable rear shocks. We got AKG swaybar reinforcements for the trailing arms and used Ireland Engineering heavy duty rear swaybar mounts to go with our 22mm front/19mm Ireland Engineering sway bar set. Lastly, after loving the 2.7 lock to lock Z3 steering rack on my S54 E30 M3 so much, Chris and I went with one of those and an Ireland Engineering polyurethane steering coupler.
When it came to the powertrain, we used the S50 and the Zf 320 5 speed that came from Chris Castro's sister's supercharged S50 E30 convertible. We new it was a strong motor and trans, and it was available. We put an Cometic 0.140 MLS head gasket to drop compression, coupled with some ARP2000 head studs. We went with an F1 Racing Stage 3 clutch, with their 13 lb chromoly lightweight flywheel to handle the power. Since we wanted a nice powerband, and we love long gears, we went with a 2.93 LSD, which Chris Castro built to 40% lock-up. We also added an M-Coupe finned diff cover for cooling.
For the turbo, we knew we wanted to use a Garrett GT35r, so I bought a used one from chikinhed on Bimmerforums. For the manifold, there was only one option we wanted to go with and that was the top mount tubular Otis-fold from Blunt Tech/Rapid Spool Industries (good & tight). After reachin out to Steve from Blunt Tech and Otis from Rapid Spool, they both agreed to sponsor our car with their manifold! We coupled that with a Tial MV-R 44mm wastegate, and a Tial QR 50mm blow off valve. After numerous successful builds, using their products, we went with a Godspeed aluminum radiator, intercooler, silicone couplers, and t-bolt clamps. A Grimspeed manual boost controller was added for now, but we will be looking into an electronic boost controller soon.
For tuning, we went with the tried and true Miller performance blow-thru tuning package, with 60# injectors and a W.A.R chip. since the build was nearly identical to Sebo's his tuned worked out great with a bit of modification!
For monitoring, we went with the tried and true AEM Uego wideband O2 sensor with AFR guage, and an AEM Uego boost guage.
For seats and safety, we got a great deal on a practically new Sparco Pro2000 race seat and a Scroth 6-point harness. The Sparco will be installed in the next week or 2.
Cliff Note Build List (sorry for repeating myself I just know this is easier for come people):
477whp/364wtq at 17 psi on 91 octane
Custom ground 256/256 unsure of lift
'98 ZF 320 5 speed trans
Cometic 0.140 MLS head gasket
ARP2000 head studs
F1 Racing Stage 3 clutch
F1 Racing 13 lb chromoly lightweight flywheel
Castro Motorsport 40% lock-up 2.93 LSD
M-Coupe finned diff cover
Turbo Set-up:
Garrett GT3582r (A/R 50, 0.63 hot side - upgrading to A/R 70 with a 0.82)
Blunt Tech/Rapid Spool Industries (good & tight) top mount tubular turbo manifold
Miller Performance 60# injectors
Miller Performance Blow-thru turbo MAF
Miller Performance W.A.R chip with tune
Tial MV-R 44mm waste gate
Tial QR 50mm Blow off valve
Godspeed all aluminum radiator
Godspeed 3" intercooler
Godspeed silicone couplers and t-bolt clamps
Castro Motorsport 3" custom cold-side intercooler and intake piping
Castro Motorsport 3" custom 304 stainless steel Up-pipe exhaust
Castro Motorsport custom 304 stainless steel wastegate dump pipe
Walbro 255lph Fuel Pump
Suspension, Brakes & Steering:Z3 M-Coupe 5-lug suspension conversion
Z3 M-Coupe Front and rear sub-frames
E46 330ci ZHP front brake set-up
Z3 M-Coupe rear brake set-up
735i Brake booster
Ireland Engineering stainless steel braided brake line kit
AKG rear sway bar reinforcements
German Engineering Coil-over conversion - 550# front/ 700
# rear
German Engineering adjustable camber plates
Koni single adjustable front struts
Koni double adjustable rear shocks
Treehouse racing delrin front control arm lollipops
Whiteline Suspension polyurethane rear trailing arm bushings
Whiteline Suspension polyurethane rear control arm bushings
Ireland Engineering polyurethane differential bushing
Ireland Engineering rear HD shock mounts
Ireland Engineering 22mm front/ 19mm rear swaybar kit
Ireland Engineering heavy duty rear sway bar mounts
Z3 1.9L quick ratio 2.7 lock-to-lock steering rack
Ireland Engineering polyurethane steering coupler
Wheels and Tires:
Still TBD currently running 17x7.5 DS1s with 235/40/17 Federal 595 RSRs
We will be putting some kind of flares on to accommodate for wider wheels and tires. Probably going to go with the DTM Fiberwerkz flares, but they need quite a bit of work to fit right. We'd like to go with 17x9 or 17x9,5 APEX ARC-8 wheels all around with meaty 255/40/17 Nitto NT01 or Toyo R888s.
This car will be running in the Shift-S3ctor's Global Time Attack Pro-Am series for the rest of the year, with our amazing driver Kalon Welch. Kalon will also be instructing in this car at Shift-S3ctor's track events. But ultimately this car is for Chris and I to thrash around at the track! Chris Castro will definitely be drifting this car for fun at various track days as well!
Any how, onto the pics and quick blurbs about the actual build process:
On the lift with the 4-lug already removed
M-coupe trailing arms and axles
5-lug FTW!
AKG reinforcements welded on already
M-Coupe rear subframe
Whiteline polyurethane rear sub-frame and rear trailing arm bushings waiting for install
Installed and assembled!
Castro Motorsport 40% lock-up 2.93LSD with M-Coupe diff cover
Rear end assembled and ready for install!
S50 being prepped with Cometic head gasket and ARP2000 head studs for install
Head installed, turbo manifold and turbo on!
Motor installed!
Intercooler mounted!
Cold side piping started and turbo side installed!
Got a problem? LOL
Intake piping made
Oil drain, CHECK!
Front valence needed some modification to fit the big intercooler
Now it fits just fine!
Oh hello there Mr. Wastegate!
Decided to build a custom "up-pipe" as our exhaust and wastegate dump. Why? BECAUSE RACE CAR!!!
Well the hood obviously needed a bit of modification, so Jose got to work on it!
Well the car fired up on the first try, and was running really well with Sebo's tune! One thing that we notice however was that even though there was no real shaft play on the turbo we bought from chikinhed, it sounded like it had noisy bearings...
Nevertheless, we needed to go "break in" the car now that it was running well...
Finished engine bay pics
And this is how we decided to "break in" our race car!
Manifold got a little "warm"....
Call the clean-up crew!
And this is how you build an awesome race-car in only 3 days everyone!!!
So even though we didn't build this car for the straight line, we still wanted to see how it would do! Since we already signed up as sponsors for Shift-S3ctor's Airstrip Attack event at Coalinga airport, we went ahead and registered our race car for Sunday. The Shift-S3ctor Airstrip Attack is a 1/2 mile roll race from 50 mph, and is a ton of fun! We showed up with Sebo's similarly built car Last November, but with the boost turned down to 10 psi because traction was an issue with the 215/45/16s mounted on his 9" RS.
Well since we had 17s with 235/40/17s and wanted to push the envelope a bit more, we turned the boost up to 18 psi. The car dyno'd at a healthy 477whp/364wtq on 17 psi with 91 octane, and it felt great. The torque is a bit low for the boost level, but it probably has to do with the cams we're running and the small A/R. That being said, the bearing noise from the turbo had gotten louder since the first time we got it running. There was proper oil going to it, with the appropriated fitting, so we knew it had proper lubrication. Also, since it had made that noise from the get go, we thought maybe it was just going to be noisy. This concerned us, but we figured it would be okay as chikinhed said it ran fine on his car and had 10k miles on it since it was rebuilt by Garrett.
Shot of the final dyno numbers:
Here are some shots I took at the event before our first run:
We got the first pass of the day on Sunday against a 400+whp turbo E30, with an M20 running 20 psi on stock compression with E-85!
I was shotgun, Chris got some wheel spin when we hit it and the other car jumped ahead. Before we shifted into 4th we starting reeling him in, then when we got halfway through 4th we were starting to pull. Ended up about 2.5 car lengths ahead of them trapping 137.8, our best run of the day.
A shot my friend took of us before the finish
The next run out the car started to act up, and wasn't making any power after 6k. I took the car out third pas and the same thing happened and the turbo seemed to be spooling later. Well it only got worse from there and on our 7th pass Kalon took the car out and right as he got into boost at the cone, the CHRA of the turbo failed and we saw smoke coming out of the exhaust....
Luckily nothing got into the motor, the turbo was our only casualty. Lesson of the day - don't buy a used turbo...
Any how, we're rebuilding the turbo and going with a A/R 70 and a 0.82 hotside instead of the 0.63. Either way really stoked to have the car built and everyone loved it at the event. This car should do just a bit better then our former 160whp Lemons Car we had running at the last Global Time Attack event!


text:
Internet Explorer versions 7 and older have known compatibility and security issues with modern
web standards which affect next generation Web 2.0 websites. In our attempt to deliver a superior
experience, we no longer support Internet Explorer versions 7 and older.
Please upgrade to the latest
version of Internet Explorer, Firefox, Safari or Chrome.
any item or agent (biological, chemical, physical) that has the potential to cause harm to humans, animals, or the environment, either by itself or through interaction with other factors
© 2017 U.S. Green Building Council


text: This image provided by the Riverside County Sheriff's Department shows the second booking photo of former Detroit Lions wide receiver Titus Young who was arrested early Sunday May 5, 2013 after police saw him drive his Ford Mustang toward oncoming traffic and make an illegal left turn. He was arrested on suspicion of DUI, cited and released. About 14 hours later, police responded to a report of a man jumping over the fence of a tow company and arrested Young again. He was booked on suspicion of burglary. (AP Photo/Riverside County Sheriff's Department)


text:
|Oh No, Sony
Spyware bugs people
1. DelugeMusic buyers got hosed this week by Sony BMG.
The joint venture of Japan's Sony ( SNE) and Germany's Bertelsmann soaked its loyal customers by sneaking some anticopying software onto music compact discs.
The software was aimed at bolstering sales by preventing CD-copying on Windows-based personal computers, but it didn't end up working quite that way. Rather than protecting the precious intellectual property of


text:
blue moon winner sails to finish
Melanie Peters outlasted 146 competitors to win the women's race at the Blue Moon Half Marathon in Palm Harbor on Sunday.
The St. Petersburg resident was across the finish line more than a minute faster than the rest of the field. Peters, 27, completed the race in 1:21:16.
Kristen Proach, 26 of Clearwater, was second in 1:22:50.
Palm Harbor's Michael Farrell was the top local runner in the men's competition. Farrell, 32, was second overall in 1:21:36.
Land O'Lakes' Tommy Brown was the champion in 1:15:35.
Age group winners in the half-marathon from Pinellas County were: (M racewalker) David Schick, Clearwater, 2:09:30; (M19 and under) Timm Bischoff, Clearwater, 1:31:38; (F20-24) Caroline Camisasca, Tarpon Springs, 1:39:54; (F25-29) Proach; (M30-34) Farrell; (F30-34) Whitney Lasseter, Palm Harbor, 1:38:43; (M35-39) Tom Bassano, Palm Harbor, 1:33:42; (F35-39) Candace Austrich, Palm Harbor, 1:43:24; (F40-44) Eve Barrett, Dunedin, 1:40:51; (M45-49) Jim Hummel, Tarpon Springs, 1:35:49; (F45-49) Christine Lenyo, Palm Harbor, 1:47:23; (M50-54) Victor Yeager, Dunedin, 1:26:39; (F50-54) Sally Smith, Largo, 1:51:20; (M55-59) Terry Gruchow, Oldsmar, 1:44:26; (F55-59) Cynthia Christman, Clearwater, 2:03:31; (F racewalker 54 and under) Lynn Lewis, Largo, 2:33:45.
There were 310 racers who finished the Blue Moon Half Marathon.
Clearwater residents highlighted the winner's podium at the Blue Moon 5K, also on Saturday.
Andrew Elsey, 15, was the men's champion after breaking the tape in 18:57. He was more than a minute faster than second place Don Scullion of Largo, who finished in 20:12. He was the masters champion.
Yvonne Bryant, 44, was the women's champion with a winning time of 21:37, nearly a minute and a half ahead of her closest competitor.
Age group winners from the 5K were: (F masters) Amanda Kellogg, Palm Harbor, 23:26; (M10-14) Mark Saathoff, Palm Harbor, 35:59; (F10-14) Amanda Elsey, Clearwater, 24:11; (M15-19) Brad Akins, Palm Harbor, 21:36; (M25-29) Devin Fulmer, Clearwater, 21:46; (F25-29) Maggie Dewberry, Safety Harbor, 22:38; (F30-34) Jaye Duncan, St. Petersburg, 24:10; (M35-39) Jason Stinson, Clearwater, 22:45; (F35-39) Denise Devanney, Palm Harbor, 26:42; (M40-44) Matt Elsey, Clearwater, 23:33; (F40-44) Brenda Amen, Clearwater, 27:01; (F45-49) Kim Thomas, Safety Harbor, 24:20; (M50-54) Andrew Sasso, Clearwater, 23:45; (F50-54) Kim Lanquien, Dunedin, 24:03; (F55-59) Debra Lombardozzi, Tarpon Springs, 26:34; (F60-64) Ellen Kohn, Palm Harbor, 24:45; (M65-69) Duncan Cameron, Palm Harbor, 21:20; (M racewalker 54 and under) William Flowers, Clearwater, 40:29; (F racewalker 54 and under) Sharon Haley, Clearwater, 36:05; (F racewalker 55 and over) Linda Shutt, Palm Harbor, 35:17.
There were 201 runners in the 5K race.
eighth annual triton run
Hunter McCann was the overall champion at Sunday's eighth annual Triton Run, a 2.9-mile race in St. Petersburg that had 150 finishers.
McCann, 13 of Treasure Island, completed the race in 17:22 to win by 16 seconds over Tierra Verde's Chris Pyhel (17:38).
Lisa Williams, 32 of Largo, was the women's champion after breaking the tape in 18:39. She came across the line just ahead of Madeira Beach's Connie Mendoza, who was second in 19:13, and St. Petersburg's Allie Sartori, who placed third in 20:29.
Age group winners at the Triton Run were: (F9 and under) Gwynne English, Indian Rocks Beach, 39:50; (M10-14) Jared McFadden, Seminole, 21:47; (F10-14) Jessica Silk, St. Petersburg, 24:05; (M15-19) Joshua Moushon, St. Petersburg, 19:24; (F15-19) Sartori; (M20-24) Austin Carmack, St. Petersburg, 17:57; (F20-24) Lillian McCormick, St. Petersburg, 21:17; (M25-29) David Avila, Clearwater, 18:41; (F25-29) Yova Borovska, St. Petersburg, 21:10; (M35-39) Pyhel; (F35-39) Tracy Lemos, Clearwater, 26:22; (M40-44) Paolo Bonelli, Clearwater, 19:09; (F40-44) Mendoza; (M45-49) Gilbert Dolores, St. Petersburg, 19:57; (M45-49) Pam Greene, Tierra Verde, 22:58; (M50-54) Michael Zelenak, St. Pete Beach, 19:53; (F50-54) Christine Arbasak, St. Petersburg, 24:56; (M55-59) Steve Byrne, St. Petersburg, 19:36; (F55-59) Vicki Linkovich, St. Petersburg, 28:10; (F60-64) Victoria Ryan, St. Petersburg, 28:44; (F65-69) Sharon Andrews, South Pasadena, 30:36; (M70 and over) Joe Burgasser, St. Petersburg, 19:48; (F70 and over) Dede Buckley, St. Pete Beach, 30:14.
richard's run for life
Justin Dodson of Pinellas Park was the top local runner at Richard's Run for Life 5K in Tampa on Friday that saw 1,190 racers finish.
Dodson, 26, placed sixth overall after crossing the finish line in 17:21 and won the men's 25-29 division.
On the women's side, Penny Bloom of St. Petersburg came in fourth, less than a minute behind the winner.
Bloom, 26, was across the line in 20:06 and was the top runner in the women's 25-29 division.
Mike Zwijaz of Valrico (16:33) and Jennifer Picciano of Winter Garden (19:22), were the men's and women's winners, respectively.
Two more local runners were age group winners. Hunter McCann, 13 of Treasure Island, took the men's 14 and under division after running 18:01. Staycie Hawk-Cross, 35 of Largo, completed the 5K in 21:03 to win the women's 35-39 group.
run for the kicks
Tom Hoffman of Palm Harbor was the overall winner at the Ingram's Pro Karate Center Run for the Kicks 5K on Saturday.
Hoffman, 46, came across the finish line in 20:50.
Also, Raj Goyal of Tarpon Springs was the top runner in the men's 45-49 group with a time of 38:10, and Patricia Hoffman of Palm Harbor was the No. 1 runner in the women's 60-64 group after crossing the line in 29:07.
swimming news
The Clearwater Aquatic Team, affiliated with USA Swimming and the U.S. Olympic Committee, is looking for swimmers of all ages. CAT offers a variety of programs for beginning, competitive and adult masters swimmers at the Long Center, one of the top indoor facilities in Florida. Interested swimmers are invited to contact CAT at (727) 791-9542 or ClearwaterAquatics.com.