Template:Mainpage-rssfeeds
From NAS-Central Buffalo - The Linkstation Wiki
GISWiki/RSS
Uses an extension from: http://meta.wikimedia.org/wiki/GISWiki/RSS
RSS-Feed Mediawiki extension
- original by mutante 25.03.2005
- extended by Duesentrieb 30.04.2005
- extended by Rdb78 07.07.2005
- extended by Mafs 10.07.2005, 24.07.2005
- extended by User:Arcy 07.09.2005
- Updated for MediaWiki 1.6 by User:piku 13.06.2006
- Update for Wikicode output, by User:cogdog 14.jul.2006
Requires:
- magpie rss parser http://magpierss.sourceforge.net/
- iconv http://www.gnu.org/software/libiconv/, see also http://www.php.net/iconv
Installation:
- put this file (rss.php) into the extension directory of your mediawiki installation
- add the following to the end of LocalSettings.php: include("extensions/rss.php");
- make sure magpie can be found by PHP.
Usage:
Use one section between <rss>-tags for each feed. The rss section may contain parameters separated by a pipe ("|"), just like links and templates. These parameters are supported:
| charset = ... | The charset used by the feed. iconv is used to convert this. |
| short | Do not show the description text for each news item. |
| max = x | Shows x most recent headlines. |
| highlight = term1 term2 | The terms separated by a space are highlighted. |
| filter = term1 term2 | Show only rss items containing at least one of the terms. |
| reverse | display the rss items in reverse order. |
| title = x | display an alternative title instead of chanel name. |
| title = none | dont display any title. |
Example:
<rss>http://slashdot.org/slashdot.rss|charset=UTF-8|short|max=5</rss>
Researcher Unlocks Galaxy S4 Bootloader For AT&T, Verizon Phones
Sun, 26 May 2013 00:02:00
Trailrunner7 writes "Those of you who like to tinker and jailbreak Android phones should take notice of some new research conducted on Samsung Galaxy S4 Android devices shipped by AT&T and Verizon. Both devicemakers ship the Galaxy S4 smartphones with a locked-down bootloader that prevents users from uploading custom kernels or from making modifications to software on the phone. Azimuth Security researcher Dan Rosenberg has found a vulnerability in the manner in which the devices do cryptographic checks of boot image signatures and was able to exploit the flaw and upload his own unsigned kernel to the device."
Read more of this story at Slashdot.
Mayor Bloomberg Battles Fleet Owners Over NYC 'Taxi of Tomorrow'
Sat, 25 May 2013 23:00:00
An anonymous reader writes "In April, Mayor Mike Bloomberg announced that the Nissan NV200 minivan had won a citywide competition to replace the current cab model, the Ford Crown Victoria, in a phased-in period of five years. Cab owners sued, pointing out that New York City law requires that hybrid electric models be available for immediate use for cab medallion owners; that excludes the current Nissan NV200, with its 2.0 liter, 4-cylinder engine rated at a combined 24 mpg. The NV200 also has poor accessibility for wheelchair users. After a state judge blocked the mayor's plan, Bloomberg allegedly told the CEO of Taxi Club Management at a private club, 'Come January 1st, when I am out of office, I am going to destroy your f--king industry.' Tim Fernholz of Quartz speculates that Bloomberg (a billionaire) may be planning to launch a cab-hailing service like Uber, which was just allowed back onto the streets of New York, with significant limitations."
Read more of this story at Slashdot.
Schrödinger's Cat and RCU (Well, Structured Procrastination, Actually)
Sat, 25 May 2013 21:58:00
davecb writes "Paul E. McKenney, one of the Linux RCU implementors, addresses the problem of synchronization using structured deferral on, what else, Mr Schrödinger's famous cat. Courtesy of deferral/procrastination, the cat can be both alive and dead at the same time. 'In this example, Schrödinger would like to construct an in-memory database to keep track of the animals in his zoo. Births would of course result in insertions into this database, while deaths would result in deletions. The database is also queried by those interested in the health and welfare of Schrödinger's animals. Schrödinger has numerous short-lived animals such as mice, resulting in high update rates. In addition, there is a surprising level of interest in the health of Schrödinger's cat, so much so that Schrödinger sometimes wonders whether his mice are responsible for most of these queries. Regardless of their source, the database must handle the large volume of cat-related queries without suffering from excessive levels of contention. Both accesses and updates are typically quite short, involving accessing or mutating an in-memory data structure, and therefore synchronization overhead cannot be ignored.'"
Read more of this story at Slashdot.
Med Students Unaware of Their Bias Against Obese Patients
Sat, 25 May 2013 20:50:00
An anonymous reader sends news of a study which found that "two out of five medical students have an unconscious bias against obese people." The study, published in the Journal of Academic Medicine (abstract) examined med students from many different cultural and geographical backgrounds. "The researchers used a computer program called the Weight Implicit Association Test (IAT) to measures students’ unconscious preferences for 'fat' or 'thin' individuals. Students also answered a survey assessing their conscious weight-related preferences. The authors determined if the students were aware of their bias by seeing if their IAT results matched their stated preferences. Overall, 39 percent of medical students had a moderate to strong unconscious anti-fat bias as compared to 17 percent who had a moderate to strong anti-thin bias. Less than 25 percent of students were aware of their biases. 'Because anti-fat stigma is so prevalent and a significant barrier to the treatment of obesity, teaching medical students to recognize and mitigate this bias is crucial to improving the care for the two-thirds of American adults who are now overweight or obese,' Miller said. 'Medical schools should address weight bias as part of a comprehensive obesity curriculum.'"
Read more of this story at Slashdot.
Six Months Developing Software For Wearable Computing
Sat, 25 May 2013 19:47:00
An anonymous reader writes "Twilio's Jon Gottfried has written an article about the lessons he's learned after six months of developing software for Google Glass. He has some insightful points: 'I expected it to be very similar to building mobile applications for Android. In fact, I began learning to build Android applications in preparation. My efforts were for naught, because the Mirror API is a RESTful web service. This means that developing applications for Glass is actually more similar to building a website than it is to building an Android application.' He also talks about how this fits in with the future of technology: 'I would argue that Google took the only option available to them. The only truly scalable products of the future will be developer platforms. Facebook, Twitter, Twilio, Google, Apple, Microsoft, Arduino – all of these products have been successful in large part by embracing and empowering their developer communities. No company is omniscient enough to imagine every potential use of their products. This gives developers an immense amount of power to define the success or failure of an entire product line.'"
Read more of this story at Slashdot.
rss.php
<?php
# RSS-Feed Mediawiki extension
#
# original by mutante 25.03.2005
# extended by Duesentrieb 30.04.2005
# extended by Rdb78 07.07.2005
# extended by Mafs 10.07.2005, 24.07.2005
# extended by User:Arcy 07.09.2005
# Updated for MediaWiki 1.6 by User:piku 13.06.2006
# Update for Wikicode output, by User:cogdog 14.jul.2006
#
# Requires:
# * magpie rss parser <http://magpierss.sourceforge.net/>
# * iconv <http://www.gnu.org/software/libiconv/>, see also <http://www.php.net/iconv>
#
# Installation:
# * put this file (rss.php) into the extension directory of your mediawiki installation
# * add the following to the end of LocalSettings.php: include("extensions/rss.php");
# * make sure magpie can be found by PHP.
#
# Usage:
# Use one section between <rss>-tags for each feed. The rss section may contain parameters
# separated by a pipe ("|"), just like links and templates. These parameters are supported:
#
# * charset=... The charset used by the feed. iconv is used to convert this.
# * short Do not show the description text for each news item.
# * max=x Shows x most recent headlines.
# * highlight= term1 term2 The terms separated by a space are highlighted.
# * filter= term1 term2 Show only rss items containing at least one of the terms.
# * reverse display the rss items in reverse order.
# * title=x display an alternative title instead of chanel name.
# * title = none dont display any title.
#
# Example:
# <rss>http://slashdot.org/slashdot.rss|charset=UTF-8|short|max=5</rss>
#
#change this according to your magpie installation!
require_once('rss_fetch.inc');
#install extension hook
$wgExtensionFunctions[] = "wfRssExtension";
#extension hook callback function
function wfRssExtension() {
global $wgParser;
#install parser hook for <rss> tags
$wgParser->setHook( "rss", "renderRss" );
}
#parser hook callback function
function renderRss($input, $argv, $parser = null) {
if (!$parser) $parser =& $GLOBALS['wgParser'];
global $wgOutputEncoding;
$DefaultEncoding = "ISO-8859-1";
$DisableCache = true;
# $input = mysql_escape_string($input);
if (!$input) return ""; #if <rss>-section is empty, return nothing
#parse fields in rss-section
$fields= explode("|",$input);
$url= @$fields[0];
$args= array();
for ($i=1; $i<sizeof($fields); $i++) {
$f= $fields[$i];
if (strpos($f,"=")===False) $args[strtolower(trim($f))]= False;
else {
list($k,$v)= explode("=",$f,2);
if (trim($v)==False) $args[strtolower(trim($k))] = False;
else $args[strtolower(trim($k))]= trim($v);
}
}
#get charset from argument-array
$charset= @$args["charset"];
if (!$charset) $charset= $DefaultEncoding;
#get max number of headlines from argument-array
$maxheads = @$args["max"];
$headcnt = 0;
#get short-flag from argument-array
#if short is set, no description text is printed
if (isset($args["short"])) $short = True; else $short = False;
#get reverse-flag from argument-array
if (isset($args["reverse"])) $reverse = True; else $reverse = False;
#get highlight terms from argument-array
$rssHighlight= @$args["highlight"];
$rssHighlight= str_replace(" "," ", $rssHighlight);
$rssHighlight= explode(" ", trim($rssHighlight));
#get filter terms from argument-array
$rssFilter= @$args["filter"];
$rssFilter= str_replace(" "," ", $rssFilter);
$rssFilter= explode(" ", trim($rssFilter));
#fetch rss. may be cached locally.
#Refer to the documentation of magpie for details.
$rss = @fetch_rss($url);
#check for errors.
if ($rss->ERROR) {
# return "Feed error"; #localize...
#return "<div>Failed to load RSS feed from $url: ".$rss->ERROR."</div>"; #localize...
}
if (!is_array($rss->items)) {
# return "Feed error"; #localize...
#return "<div>Failed to load RSS feed from $url!</div>"; #localize...
}
#Bild title line
#get title from argument-array
$rssTitle= @$args["title"];
$rssTitle= trim($rssTitle);
if ($rssTitle !=='none') {
if ($rssTitle=='') {
$title= iconv($charset,$wgOutputEncoding,$rss->channel['title']);
if ($rss->channel['link']) $title= "[".$rss->channel['link']." $title]";
$output = "=== $title ===\n";
}
else
{
$title= "[".$rss->channel['link']." $rssTitle]";
$output="=== $title ===\n";
}
} else {
$output="\n\n\n";
}
if ($reverse) $rss->items = array_reverse($rss->items);
$description = False;
foreach ($rss->items as $item) {
if ($item['description']) {$description = True; break;}
}
#Bild items
if (!$short and $description) { #full item list
$output.="";
foreach ($rss->items as $item) {
$d_text = true;
$d_title = true;
$href = trim(iconv($charset,$wgOutputEncoding,$item['link']));
$title = trim(iconv($charset,$wgOutputEncoding,$item['title']));
$d_title = wfRssFilter ($title, $rssFilter);
$title= wfRssHighlight($title, $rssHighlight);
#bild description text if desired
if ($item["description"]) {
$text= trim(iconv($charset,$wgOutputEncoding,$item['description']));
#avoid pre-tags
$text= str_replace("\r"," ",$text);
$text= str_replace("\n"," ",$text);
$text= str_replace("\t"," ",$text);
$d_text = wfRssFilter ($text, $rssFilter);
$text= wfRssHighlight($text, $rssHighlight);
$display = $d_text or $d_title;
}
else {
$text = "";
$display = $d_title;
}
if ($display) {
$output.="* [$href $title]";
if ($text) $output.="<br>$text";
$output .= "\n";
}
#Cut off output when maxheads is reached:
if (++$headcnt == $maxheads) break;
}
# $output.="</dl>";
}
else { #short item list
# $output.="<ul>";
foreach ($rss->items as $item) {
$href = trim(iconv($charset,$wgOutputEncoding,$item['link']));
$title = trim(iconv($charset,$wgOutputEncoding,$item['title']));
$d_title = wfRssFilter ($title, $rssFilter);
$title= wfRssHighlight($title, $rssHighlight);
if ($d_title ) $output.="* [$href $title]\n";
#Cut off output when maxheads is reached:
if (++$headcnt == $maxheads) break;
}
# $output.="</ul>";
}
if ($DisableCache) {
global $wgVersion;
# Do not cache this wiki page.
# for details see http://public.kitware.com/Wiki/User:Barre/MediaWiki/Extensions
global $wgTitle, $wgDBprefix;
$ts = mktime();
$now = gmdate("YmdHis", $ts + 120);
$ns = $wgTitle->getNamespace();
$ti = wfStrencode($wgTitle->getDBkey());
$version = preg_replace("/^([1-9]).([1-9]).*/", "\\1\\2", $wgVersion);
if ($version>14) $sql = "UPDATE $wgDBprefix"."page SET page_touched='$now' WHERE page_namespace=$ns AND page_title='$ti'";
else $sql = "UPDATE $wgDBprefix"."cur SET cur_touched='$now' WHERE cur_namespace=$ns AND cur_title='$ti'";
wfQuery($sql, DB_WRITE, "");
}
$out = $parser->parse ($output, $parser->mTitle,$parser->mOptions, true, false);
return $out->getText();
}
function wfRssFilter ($text, $rssFilter) {
$display = true;
if (is_array($rssFilter)) {
foreach($rssFilter as $term) {
if ($term) {
$display = false;
if (preg_match("|$term|i", $text, $a)) { $display = true; return $display; }
}
if ($display) break;
}
}
return $display;
}
function wfRssHighlight($text, $rssHighlight) {
$i=0;
$starttag = "v8x5u3t3u8h";
$endtag = "q8n4f6n4n4x";
$color[]="coral";
$color[]="greenyellow";
$color[]="lightskyblue";
$color[]="gold";
$color[]="violet";
$count_color = count($color);
if (is_array($rssHighlight)) {
foreach($rssHighlight as $term) {
if ($term) {
$text = preg_replace("|\b(\w*?".$term."\w*?)\b|i", "$starttag"."_".$i."\\1$endtag", $text);
$i++;
if ($i == $count_color) $i=0;
}
}
}
# to avoid trouble should someone wants to highlight the terms "span", "style", ...
for ($i=0; $i<5; $i++) {
$text = preg_replace("|$starttag"."_".$i."|", "<span style=\"background-color:".$color[$i]."; font-weight: bold;\">", $text);
$text = preg_replace("|$endtag|", "</span>", $text);
}
return $text;
}
?>

