text:
package org.apache.camel.builder.xml;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

import javax.xml.transform.dom.DOMSource;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFunctionResolver;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import org.xml.sax.InputSource;

import org.apache.camel.ContextTestSupport;
import org.apache.camel.Exchange;
import org.apache.camel.Expression;
import org.apache.camel.Predicate;
import org.apache.camel.language.xpath.XPathBuilder;
import org.apache.camel.support.builder.Namespaces;
import org.apache.camel.util.StringHelper;
import org.junit.jupiter.api.Test;

import static org.apache.camel.language.xpath.XPathBuilder.xpath;
import static org.junit.jupiter.api.Assertions.*;

public class XPathTest extends ContextTestSupport {

    @Override
    public boolean isUseRouteBuilder() {
        return false;
    }

    @Test
    public void testXPathExpressions() throws Exception {
        assertExpression("/foo/bar/@xyz", "<foo><bar xyz='cheese'/></foo>", "cheese");
        assertExpression("$name", "<foo><bar xyz='cheese'/></foo>", "James");
        assertExpression("foo/bar", "<foo><bar>cheese</bar></foo>", "cheese");
        assertExpression("foo/bar/text()", "<foo><bar>cheese</bar></foo>", "cheese");
        assertExpression("/foo/@id", "<foo id='cheese'>hey</foo>", "cheese");
        assertExpression("/foo/@num", "<foo num='123'>hey</foo>", "123");
    }

    @Test
    public void testXPathPredicates() throws Exception {
        assertPredicate("/foo/bar/@xyz", "<foo><bar xyz='cheese'/></foo>", true);
        assertPredicate("$name = 'James'", "<foo><bar xyz='cheese'/></foo>", true);
        assertPredicate("$name = 'Hiram'", "<foo><bar xyz='cheese'/></foo>", false);
        assertPredicate("/foo/notExist", "<foo><bar xyz='cheese'/></foo>", false);
        assertPredicate("/foo[@num = '123']", "<foo num='123'>hey</foo>", true);
    }

    @Test
    public void testXPathWithCustomVariable() throws Exception {
        assertExpression(xpath("$name").stringResult().variable("name", "Hiram"), "<foo/>", "Hiram");
    }

    @Test
    public void testInvalidXPath() throws Exception {
        try {
            assertPredicate("/foo/", "<foo><bar xyz='cheese'/></foo>", true);
            fail("Should have thrown exception");
        } catch (Exception e) {
            assertIsInstanceOf(XPathExpressionException.class, e.getCause());
        }
    }

    @Test
    public void testXPathBooleanResult() throws Exception {
        Object result = xpath("/foo/bar/@xyz").booleanResult().evaluate(createExchange("<foo><bar xyz='cheese'/></foo>"));
        Boolean bool = assertIsInstanceOf(Boolean.class, result);
        assertEquals(true, bool.booleanValue());
    }

    @Test
    public void testXPathNodeResult() throws Exception {
        Object result = xpath("/foo/bar").nodeResult().evaluate(createExchange("<foo><bar xyz='cheese'/></foo>"));
        Node node = assertIsInstanceOf(Node.class, result);
        assertNotNull(node);
        String s = context.getTypeConverter().convertTo(String.class, node);
        assertEquals("<bar xyz=\"cheese\"/>", s);
    }

    @Test
    public void testXPathNodeSetResult() throws Exception {
        Object result = xpath("/foo").nodeSetResult().evaluate(createExchange("<foo>bar</foo>"));
        NodeList node = assertIsInstanceOf(NodeList.class, result);
        assertNotNull(node);
        String s = context.getTypeConverter().convertTo(String.class, node);
        assertEquals("<foo>bar</foo>", s);
    }

    @Test
    public void testXPathNumberResult() throws Exception {
        Object result = xpath("/foo/bar/@xyz").numberResult().evaluate(createExchange("<foo><bar xyz='123'/></foo>"));
        Double num = assertIsInstanceOf(Double.class, result);
        assertEquals("123.0", num.toString());
    }

    @Test
    public void testXPathStringResult() throws Exception {
        Object result = xpath("/foo/bar/@xyz").stringResult().evaluate(createExchange("<foo><bar xyz='123'/></foo>"));
        String num = assertIsInstanceOf(String.class, result);
        assertEquals("123", num);
    }

    @Test
    public void testXPathCustomResult() throws Exception {
        Object result
                = xpath("/foo/bar/@xyz").resultType(Integer.class).evaluate(createExchange("<foo><bar xyz='123'/></foo>"));
        Integer num = assertIsInstanceOf(Integer.class, result);
        assertEquals(123, num.intValue());
    }

    @Test
    public void testXPathBuilder() throws Exception {
        XPathBuilder builder = xpath("/foo/bar");
        assertEquals("/foo/bar", builder.getText());
        assertEquals(XPathConstants.NODESET, builder.getResultQName());
        assertNull(builder.getResultType());
    }

    @Test
    public void testXPathWithDocument() throws Exception {
        Document doc = context.getTypeConverter().convertTo(Document.class,
                "<?xml version=\"1.0\" encoding=\"UTF-8\"?><foo>bar</foo>");

        Object result = xpath("/foo").evaluate(createExchange(doc));
        assertNotNull(result);
        String s = context.getTypeConverter().convertTo(String.class, result);
        assertEquals("<foo>bar</foo>", s);
    }

    @Test
    public void testXPathWithDocumentTypeDOMSource() throws Exception {
        Document doc = context.getTypeConverter().convertTo(Document.class,
                "<?xml version=\"1.0\" encoding=\"UTF-8\"?><foo>bar</foo>");

        XPathBuilder builder = xpath("/foo");
        builder.setDocumentType(DOMSource.class);

        Object result = builder.evaluate(createExchange(doc));
        assertNotNull(result);
        String s = context.getTypeConverter().convertTo(String.class, result);
        assertEquals("<foo>bar</foo>", s);
    }

    @Test
    public void testXPathWithDocumentTypeInputSource() throws Exception {
        InputStream is = context.getTypeConverter().convertTo(InputStream.class,
                "<?xml version=\"1.0\" encoding=\"UTF-8\"?><foo>bar</foo>");
        InputSource doc = new InputSource(is);

        XPathBuilder builder = xpath("/foo");
        builder.setDocumentType(InputSource.class);

        Object result = builder.evaluate(createExchange(doc));
        assertNotNull(result);
        String s = context.getTypeConverter().convertTo(String.class, result);
        assertEquals("<foo>bar</foo>", s);
    }

    @Test
    public void testXPathWithDocumentTypeInputSourceFluentBuilder() throws Exception {
        InputStream is = context.getTypeConverter().convertTo(InputStream.class,
                "<?xml version=\"1.0\" encoding=\"UTF-8\"?><foo>bar</foo>");
        InputSource doc = new InputSource(is);

        XPathBuilder builder = xpath("/foo").documentType(InputSource.class);

        Object result = builder.evaluate(createExchange(doc));
        assertNotNull(result);
        String s = context.getTypeConverter().convertTo(String.class, result);
        assertEquals("<foo>bar</foo>", s);
    }

    @Test
    public void testXPathWithDocumentTypeInputSourceNoResultQName() throws Exception {
        InputStream is = context.getTypeConverter().convertTo(InputStream.class,
                "<?xml version=\"1.0\" encoding=\"UTF-8\"?><foo>bar</foo>");
        InputSource doc = new InputSource(is);

        XPathBuilder builder = xpath("/foo");
        builder.setDocumentType(InputSource.class);
        builder.setResultQName(null);

        Object result = builder.evaluate(createExchange(doc));
        assertNotNull(result);
        String s = context.getTypeConverter().convertTo(String.class, result);
        assertEquals("bar", s);
    }

    @Test
    public void testXPathWithDocumentTypeDOMSourceNoResultQName() throws Exception {
        Document doc = context.getTypeConverter().convertTo(Document.class,
                "<?xml version=\"1.0\" encoding=\"UTF-8\"?><foo>bar</foo>");

        XPathBuilder builder = xpath("/foo");
        builder.setDocumentType(DOMSource.class);
        builder.setResultQName(null);

        Object result = builder.evaluate(createExchange(doc));
        assertNotNull(result);
        String s = context.getTypeConverter().convertTo(String.class, result);
        assertEquals("bar", s);
    }

    @Test
    public void testXPathWithStringTypeDOMSourceNoResultQName() throws Exception {
        XPathBuilder builder = xpath("/foo");
        builder.setResultQName(null);

        Object result = builder.evaluate(createExchange("<foo>bar</foo>"));
        assertNotNull(result);
        String s = context.getTypeConverter().convertTo(String.class, result);
        assertEquals("bar", s);
    }

    @Test
    public void testXPathWithNamespaceBooleanResult() throws Exception {
        XPathBuilder builder = xpath("/c:person[@name='James']").namespace("c", "http://acme.com/cheese").booleanResult();

        Object result
                = builder.evaluate(createExchange("<person xmlns=\"http://acme.com/cheese\" name='James' city='London'/>"));
        assertNotNull(result);
        assertEquals(Boolean.TRUE, result);
    }

    @Test
    public void testXPathWithNamespaceBooleanResultType() throws Exception {
        XPathBuilder builder = xpath("/c:person[@name='James']").namespace("c", "http://acme.com/cheese");
        builder.setResultType(Boolean.class);

        Object result
                = builder.evaluate(createExchange("<person xmlns=\"http://acme.com/cheese\" name='James' city='London'/>"));
        assertNotNull(result);
        assertEquals(Boolean.TRUE, result);
    }

    @Test
    public void testXPathWithNamespaceStringResult() throws Exception {
        XPathBuilder builder = xpath("/c:person/@name").namespace("c", "http://acme.com/cheese").stringResult();

        Object result
                = builder.evaluate(createExchange("<person xmlns=\"http://acme.com/cheese\" name='James' city='London'/>"));
        assertNotNull(result);
        assertEquals("James", result);
    }

    @Test
    public void testXPathWithNamespacesBooleanResult() throws Exception {
        Namespaces ns = new Namespaces("c", "http://acme.com/cheese");
        XPathBuilder builder = xpath("/c:person[@name='James']").namespaces(ns).booleanResult();

        Object result
                = builder.evaluate(createExchange("<person xmlns=\"http://acme.com/cheese\" name='James' city='London'/>"));
        assertNotNull(result);
        assertEquals(Boolean.TRUE, result);
    }

    @Test
    public void testXPathWithNamespacesStringResult() throws Exception {
        Namespaces ns = new Namespaces("c", "http://acme.com/cheese");
        XPathBuilder builder = xpath("/c:person/@name").namespaces(ns).stringResult();

        Object result
                = builder.evaluate(createExchange("<person xmlns=\"http://acme.com/cheese\" name='James' city='London'/>"));
        assertNotNull(result);
        assertEquals("James", result);
    }

    @Test
    public void testXPathWithNamespacesNodeResult() throws Exception {
        Namespaces ns = new Namespaces("c", "http://acme.com/cheese");
        XPathBuilder builder = xpath("/c:person/@name").namespaces(ns);
        builder.setResultType(Node.class);

        Object result
                = builder.evaluate(createExchange("<person xmlns=\"http://acme.com/cheese\" name='James' city='London'/>"));
        assertNotNull(result);
        assertTrue(result.toString().contains("James"));
    }

    @Test
    public void testUsingJavaExtensions() throws Exception {
        Object instance = null;

        // we may not have Xalan on the classpath
        try {
            instance = Class.forName("org.apache.xalan.extensions.XPathFunctionResolverImpl").getDeclaredConstructor()
                    .newInstance();
        } catch (Throwable e) {

            log.debug("Could not find Xalan on the classpath so ignoring this test case: " + e);
        }
        if (instance instanceof XPathFunctionResolver) {
            XPathFunctionResolver functionResolver = (XPathFunctionResolver) instance;

            XPathBuilder builder = xpath("java:" + getClass().getName() + ".func(string(/header/value))")
                    .namespace("java", "http://xml.apache.org/xalan/java")
                    .functionResolver(functionResolver).stringResult();

            String xml = "<value>12</value>";
            // it can throw the exception if we put the xalan into the test
            // class path
            assertExpression(builder, xml, "modified12");
        }

    }

    public static String func(String message) {
        return "modified" + message;
    }

    protected Object assertExpression(String xpath, String xml, String expected) {
        Expression expression = XPathBuilder.xpath(xpath).stringResult();
        return assertExpression(expression, xml, expected);
    }

    protected Object assertExpression(Expression expression, String xml, String expected) {
        return assertExpression(expression, createExchange(xml), expected);
    }

    protected void assertPredicate(String xpath, String xml, boolean expected) {
        Predicate predicate = XPathBuilder.xpath(xpath);
        assertPredicate(predicate, createExchange(xml), expected);
    }

    protected Exchange createExchange(Object xml) {
        Exchange exchange = createExchangeWithBody(context, xml);
        exchange.getIn().setHeader("name", "James");
        return exchange;
    }

    @Test
    public void testXPathNotUsingExchangeMatches() throws Exception {
        assertTrue(XPathBuilder.xpath("/foo/bar/@xyz").matches(context, "<foo><bar xyz='cheese'/></foo>"));
        assertFalse(XPathBuilder.xpath("/foo/bar/@xyz").matches(context, "<foo>Hello World</foo>"));
    }

    @Test
    public void testXPathNotUsingExchangeEvaluate() throws Exception {
        String name = XPathBuilder.xpath("foo/bar").evaluate(context, "<foo><bar>cheese</bar></foo>", String.class);
        assertEquals("<bar>cheese</bar>", name);

        name = XPathBuilder.xpath("foo/bar/text()").evaluate(context, "<foo><bar>cheese</bar></foo>", String.class);
        assertEquals("cheese", name);

        Integer number = XPathBuilder.xpath("foo/bar").evaluate(context, "<foo><bar>123</bar></foo>", Integer.class);
        assertEquals(123, number.intValue());

        Boolean bool = XPathBuilder.xpath("foo/bar").evaluate(context, "<foo><bar>true</bar></foo>", Boolean.class);
        assertEquals(true, bool.booleanValue());
    }

    @Test
    public void testNotUsingExchangeResultType() throws Exception {
        String xml = "<xml>12</xml>";

        // will evaluate as NodeSet
        XPathBuilder xpb = new XPathBuilder("/xml/a/text()");
        assertEquals("12", xpb.evaluate(context, xml, String.class));

        xpb.setResultType(String.class);
        assertEquals("1", xpb.evaluate(context, xml));
    }

    @Test
    public void testXPathSplit() throws Exception {
        Object node = XPathBuilder.xpath("foo/bar").nodeResult()
                .evaluate(createExchange("<foo><bar>cheese</bar><bar>cake</bar><bar>beer</bar></foo>"));
        assertNotNull(node);

        Document doc = context.getTypeConverter().convertTo(Document.class, node);
        assertNotNull(doc);
    }

    @Test
    public void testXPathSplitConcurrent() throws Exception {
        int size = 100;

        final Object node = XPathBuilder.xpath("foo/bar").nodeResult()
                .evaluate(createExchange("<foo><bar>cheese</bar><bar>cake</bar><bar>beer</bar></foo>"));
        assertNotNull(node);

        // convert the node concurrently to test that XML Parser is not thread
        // safe when
        // importing nodes to a new Document, so try a test for that

        final List<Document> result = new ArrayList<>();
        ExecutorService executor = Executors.newFixedThreadPool(size);
        final CountDownLatch latch = new CountDownLatch(size);
        for (int i = 0; i < size; i++) {
            executor.submit(new Callable<Document>() {
                public Document call() throws Exception {
                    try {
                        Document doc = context.getTypeConverter().convertTo(Document.class, node);
                        result.add(doc);
                        return doc;
                    } finally {
                        latch.countDown();
                    }
                }
            });
        }

        // give time to convert concurrently
        assertTrue(latch.await(20, TimeUnit.SECONDS));

        Iterator<Document> it = result.iterator();
        int count = 0;
        while (it.hasNext()) {
            count++;
            Document doc = it.next();
            assertNotNull(doc);
        }
        assertEquals(size, count);
        executor.shutdownNow();
    }

    @Test
    public void testXPathNodeListTest() throws Exception {
        String xml = "<foo><person id=\"1\">Claus<country>SE</country></person>"
                     + "<person id=\"2\">Jonathan<country>CA</country></person></foo>";
        Document doc = context.getTypeConverter().convertTo(Document.class, xml);

        Object result = xpath("/foo/person").nodeSetResult().evaluate(createExchange(doc));
        assertNotNull(result);

        String s = context.getTypeConverter().convertTo(String.class, result);
        assertEquals(StringHelper.between(xml, "<foo>", "</foo>"), s);
    }

    @Test
    public void testXPathNodeListSimpleTest() throws Exception {
        String xml = "<foo><person>Claus</person></foo>";
        Document doc = context.getTypeConverter().convertTo(Document.class, xml);

        Object result = xpath("/foo/person").nodeSetResult().evaluate(createExchange(doc));
        assertNotNull(result);

        String s = context.getTypeConverter().convertTo(String.class, result);
        assertEquals("<person>Claus</person>", s);
    }

    @Test
    public void testXPathNodeListSimpleTestText() throws Exception {
        String xml = "<foo><person>Claus</person></foo>";
        Document doc = context.getTypeConverter().convertTo(Document.class, xml);

        Object result = xpath("/foo/person/text()").nodeSetResult().evaluate(createExchange(doc));
        assertNotNull(result);

        String s = context.getTypeConverter().convertTo(String.class, result);
        assertEquals("Claus", s);
    }

    @Test
    public void testXPathString() throws Exception {
        XPathBuilder builder = XPathBuilder.xpath("foo/bar");

        // will evaluate as XPathConstants.NODESET and have Camel convert that
        // to String
        // this should return the String incl. xml tags
        String name = builder.evaluate(context, "<foo><bar id=\"1\">cheese</bar></foo>", String.class);
        assertEquals("<bar id=\"1\">cheese</bar>", name);

        // will evaluate using XPathConstants.STRING which just return the text
        // content (eg like text())
        name = builder.evaluate(context, "<foo><bar id=\"1\">cheese</bar></foo>");
        assertEquals("cheese", name);
    }

}


text:
WHO IS ASK MUSIC LAWYER?
Our team of attorneys and network professionals have over 35 years of experience in the areas of entertainment, media, and intellectual property law as well as independent production company and record label operations, artist management, recording studio operations (including engineering), touring, public relations, branding and business/financial management.
The Withdrawal Agreement between the EU and the UK was concluded on 24 January 2020 and was approved by the European Parliament on 29...
The music industry is comprised of very specific customs and practices as to how business is done. The music industry functions in its...
NEW YORK, Nov. 21, 2019 /PRNewswire/ -- My name and my network, REVOLT, have been mentioned recently by Comcast in reference to the...
Atlanta, GA--The Black Entertainment Sports and Lawyers Association (BESLA) presents The Intersection of Music, Film and TV in Atlanta on...
This is the fourth installment of an 11-part series on music industry agreements by attorney and legal author Steve Gordon, author of The...
Producer Of Nicki Minaj's Album "Queen" Said Trill Entertainment Defrauded Him Of Millions A man who produced several hits on Nicki...
Spotify is finally officially available in India, and it's offering Indian music fans a perk available nowhere else in the world — the...
A museum, two decades in the making, centering on African-American musicians is finally getting close to opening its doors in downtown...
Our advice and knowledge base inform and enlighten on a wide range of agreements and services
360°/Ancillary Rights Deals
Content Licenses
Producer Agreements
Recording Agreements
Rights Option
Live Engagements
Private Placement Memoranda
Distribution Agreements
Trademark Licenses
Management Agreements
ALL ABOUT KENDALL MINTER
AskMusicLawyer is an affiliate of Nam Chi, L.L.C. This site is managed by the entertainment law firm of Minter & Associates, L.L.C., an Atlanta, Georgia, U.S.A. headquartered firm whose attorneys have over 35 years of experience representing a diverse global clientele in all area and aspects of entertainment law, specializing in music matters. This site and the content provided herein are for informational and educational purposes only and do not substitute for retaining a lawyer. We do provide access to skilled attorneys who can provide legal services once directly engaged. Your access to and use of this site is subject to our Terms of Use.
Ask Music Lawyer.com
Provides a one stop portal designed to inform and enlighten artists, entrepreneurs, managers, producers, songwriters, executives and music industry professionals about current legal and business issues germane to the global music community. Content provided are for informational and educational purposes only and do not substitute for retaining a lawyer. We do provide access to skilled attorneys who can provide legal services once directly engaged. Your access to and use of this site is subject to our Terms of Use.
Contact Terms
Copyright © 2019 Nam Chi, LLC.
Website Designed and Maintained by SimonVandi. All rights reserved.
"LIKE" us on Facebook.

redpajama_set_name: RedPajamaCommonCrawl


Wyoming Refining Company; see Hermes Consolidated, Inc.
The following people have either been directly or indirectly involved with the oil industy.
Also see country articles on Azerbaijan, China, Ecuador, India, Iran, Iraq, Kuwait, Russia, Saudi Arabia, Somalia, Sudan, Syria, and Venezuela.
Frank Ahrens, "Oil Doesn't Want Focus on Big Profit: Companies Stepping Up Advertising", Washington Post, October 26, 2005; Page D01.
Paul Holmes, "Oil execs provide latest example that an easy corporate lie begets hard loss of believability", PR Week, November 28, 2005. (Sub req'd).
Tom Raum, "Rights Take Backseat to Oil, Leaders accused of violations meet with White House", Associated Press, April 28, 2006.
Tychon and Van der Maesen de Sombreff, "Industrial dominance and the global doctrine of cheap oil," complexxon.org, October 2006.
Edmund L. Andrews, "Blowing the Whistle on Big Oil", New York Times, December 3, 2006.
Bruce Dixon, "Africa - Where the Next US Oil Wars Will Be. 'It's about the oil. And the diamonds. And the coltan. But mostly about the oil'," Black Agenda Report, February 28, 2007.
This page was last edited on 28 July 2009, at 16:44.


text:
Q: React execute a function at varying time intervals I have an API which returns a list of objects. Each of these objects have a field called timeOut which contains some time interval in secs. Once the time interval of any object expires, some operation needs to performed on that particular object.
How can I achieve this in react ? I considered using setInterval on each object in the list, but it looks like a bad design.
Any help will be appreciated. Thank you.

A: You should use setTimeout instead of setInterval if you want an operation to run only once after the given time period. I believe this is your best bet to accomplish this task.
Otherwise, you will have to dive into even crazier designs like comparing the present date-time object from new Date() with the one you generated right after fetching your data, which will not only be complicated but also,  more error-prone and inaccurate.
Let me know if you want help with the first method.

redpajama_set_name: RedPajamaStackExchange


text:
3 Possible Destination of Ousmane Dembele
By Twelfth Man Times
The January transfer window opened some days ago, and so far, it has been a frenzy of activities and rumours. Ousmane Dembele has been at the centre of a number of such rumours. The 22-year-old Barcelona and France winger being linked with the likes of Chelsea, Liverpool, PSG, Manchester City, Manchester United.
But quite shockingly, his former club, Rennes. He had a number of disappointing performances at the Nou Camp. It is not surprising that Barcelona are willing to cut their losses and let the forward leave.
The rumour about Dembele move is huge this window. The talent he possesses is the reason why of rumour with top clubs. But these three clubs seem to stand out more than the others. The possible destination of Dembele are:-
Liverpool FC.
At the top of this list is Jurgen Klopp's Liverpool FC. Jurgen Klopp who has always openly voiced his love for Dembele's style of play. He believes he can be a huge boost for his side. He can serve as an alternative to Sadio Mane, Mohamed Salah and Roberto Firmino upfront. With the Barcelona star liking an Instagram picture of himself in the Reds' kit earlier this week, the rumours seem truer than ever. Barcelona is reportedly open to sanctioning a sale if Liverpool's offer is in excess of €100m (£85m).
Chelsea FC.
Second on our list is Chelsea FC, whose management and fans are still buzzing from the recent lifting of the transfer ban placed on them by FIFA in February 2019. Chelsea owner, Roman Abramovich is most definitely set to break the bank, clearing the way for manager Lampard to freshen up his squad, and with a purse of about £150million to spend.
Ousmane Dembele whose future in Barcelona grows dimmer each day is believed to be on Chelsea's shopping list, with recent reports suggesting Dembele's agent, Moussa Sissoko, has already met with the Blues club chiefs. Dembele's move to the Stamford Bridge seems a logical one which would greatly boost Chelsea's forward line.
Adding a little bit of experience to complement the likes of Tammy Abraham whose only form of experience comes from those acquired from Chelsea's Youth Academy where he was promoted from. The hard truth is the youth academy cannot sustain the Blues entirely, therefore, it would not be surprising to see Dembele in the Blues jersey by the end of the transfer window.
Third on the list of Dembele's most possible destination is Manchester City. The Pep Guardiola's side is rumoured to be the side most willing to splash. A surprising sum of as much as €95m to prise the Barcelona forward from the Nou Camp. The Frenchman's known history of injury troubles experienced in his abysmal 3 years spell at Barcelona.
With reports in Spain speculating that the La Liga champions are open to letting Dembele go. If the price is right, we can only hold our breaths, but as all rumours go, time would definitely tell if any of these would materialise.
Related Items:Barcelona FC, Latest, Latest News, Ousmane Dembele, Transfers
Mikel Arteta backs the homegrown star to become a top player if he walks in the path of Sterling
Manchester United's bid for Sporting Midfielder Hits Brick Wall
'We drew against Liverpool and we beat City,' newly appointed captain Maguire confident ahead of Anfield visit
5 Possible destination of Paul Pogba


Less than expected scuffing (B side nearly free of marks), mild bubble along B side's outer edge - should not affect normal play, inventory sticker on B-side label, mild wear on labels, plain sleeve 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
PLAYS NM, VG++ PLAY SURFACES, inventory sticker on stereo-side label, tiny tear around center hole, plain sleeve 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
PLAYS NM, STEREO SIDE HAS NEAR-MINT PLAY SURFACE (mono side has a very mild mark), inventory sticker on stereo-side label, nearly no wear on labels otherwise, plain sleeve 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
PLAYS NM, STEREO SIDE HAS VG++ PLAY SURFACE, conspicuous light scuff on mono-side vinyl, inventory sticker on stereo-side label, plain sleeve 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
PLAYS NM, VG++ PLAY SURFACES, inventory sticker on stereo-side label, plain sleeve 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
Shiny with a few mild marks, inventory sticker on stereo-side label (obscures some text), small sticky sticker stain on same label, nearly no wear on labels otherwise, plain sleeve 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
PLAYS NM, VG++ PLAY SURFACES, nearly no wear on labels, plain sleeve 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
Typical VG scuffs, inventory sticker on stereo-side label (obscures a bit of text), minor label fraying around center hole, plain sleeve 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
Small scratch in A side's outer dead wax, a few other mild marks, mild wear on labels, plain sleeve 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
Very minor writing on one label, very mild discoloration/wear on labels, plain sleeve 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
Inventory sticker on A-side label, minor conspicuous scuff, other very light marks, plain sleeve 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
PLAYS NM, marked VG+ due to a few small hairline scuffs and sleeve marks, inventory sticker on B-side label, very mild discoloration/wear on A-side label, Timepieces sleeve (top is somewhat frayed, minor creases otherwise) 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
PLAYS NM WITH VG++ PLAY SURFACES (marked VG for label issues), inventory sticker and small edge tear on A-side label, marker writing on B-side label (no text obscured), tiny bubble on edge of mono side's outer dead wax, mild wear on labels otherwise, plain sleeve 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
PLAYS NM, VG++ PLAY SURFACES, inventory sticker on label, very mild shelf wear on labels, plain sleeve 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
G+/VG-, ghosty vinyl, VG scuffs/scratches (generally minor), inventory sticker on A-side label, mild wear on labels, plain sleeve 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
PLAYS NM, stock picture sleeve (shelf wear, small tear, creases), small conspicuous scuff on one side, inventory sticker on label, very mild grime/wear on labels 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
Matches variant runouts, inventory sticker on label, a few superficial scuffs/marks, tiny edge chip (barely cuts into dead wax), some rumpling and very mild discoloration on labels, plain sleeve 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
Red vinyl (matches release), picture sleeve (as pictured, tears/frays along top, some creases/ears, moderate shelf wear), inventory sticker on label, some label rumpling around center (both sides) 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
PLAYS NM, stereo side has a couple superficial scuffs/marks, mono side has near-mint play surface, inventory sticker on stereo-side label, plain sleeve 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
Stock picture sleeve (very mild ring wear, minor tear and rumpling along top), inventory sticker on label, a couple very small nicks on label around center hole 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
PLAYS VG+ AND HAS VG+ PLAY SURFACES, marked VG due to edge chip halfway into outer dead wax on one side (same track on both sides though), inventory sticker on label, light radial marks on vinyl (apparently from pressing), nearly no wear on labels, plain sleeve 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!
Minor conspicuous scuff on A-side vinyl, inventory sticker on B-side label, mild wear on A-side label (w/ a tiny tear around center hole), plain sleeve 😍Affordable shipping for 2+ items! 📦We ship secure! ►FREE SHIPPING for orders $40 or more!


text:
Q: Finding the longest and the shortest lists within a list in Python I need to print the lists which have minimum and maximum number of items in a list.
For example if I have:
total_list = [[1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4, 5]]

I need to return the lists with a minimum and maximum lengths. How can I do it?
Output could be something like:
total_list[0] and total_list[2]

A: total_list = [[1, 2, 3], [1, 2, 3, 4], [1,2,3,4,5]]

print('total_list[{0}] and total_list[{1}]'.format(total_list.index(min(total_list, key=len)), total_list.index(max(total_list, key=len))))

OUTPUT:
C:\Users\Desktop>py x.py
total_list[0] and total_list[2]

A: max and min function in python accepts a key argument that will find the max of an iterable based on what defined as a key. so, try this:
max(total_list, key=len)

then you can use total_list.index to find those indexes

A: The usage of min( iterable, key=len) (min/max) is easiest. If you like to go through your list yourself, you can do this like so:
tl  = [[1, 2, 3], [1, 2, 3, 4], [1,2,3,4,5]]

# init shortest and longest to 1st element of list
# use a tuple to store:  ( listdata, length, position in original list )
shortest = longest = (tl[0], len(tl[0]), 0)

# iterate over remaining elements
for pos_act,act in enumerate(tl[1:],1): # start enumerate on 1 to fix position due slicing
    # get actual length
    len_act = len(act)

    # is it larger then current largest?
    if len_act > longest[1]:
        longest = (act,len_act, pos_act)

    # is it shorter then current shortest?
    if len_act < shortest[1]:
        shortest = (act, len_act, pos_act)

print ("Shortest: {} with len {} on position {}".format(*shortest))
print ("Longest: {} with len {} on position {}".format(*longest))

Output:
Shortest: [1, 2, 3] with len 3 on position 0
Longest: [1, 2, 3, 4, 5] with len 5 on position 2

Doku:

*

*enumerate(iterable[,start_value])


text:
package com.zblog.core.wordpress;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;

import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

import com.zblog.core.plugin.MapContainer;
import com.zblog.core.util.DateUtils;

/**
 * WordPress导入工具
 *
 * @author zhou
 *
 */
public final class WordPressReader{
  private static final Logger logger = LoggerFactory.getLogger(WordPressReader.class);

  private WordPressReader(){
  }

  /**
   * 从wordpress的xml站点文件中加载数据
   *
   * @param xml
   * @return 返回有序链表,依次为domain、attachment、post
   */
  public static List<MapContainer> load(InputStream xml){
    List<MapContainer> list = new ArrayList<>();

    try{
      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
      DocumentBuilder builder = factory.newDocumentBuilder();

      Document doc = builder.parse(xml);

      XPath xpath = XPathFactory.newInstance().newXPath();
      String domain = (String) xpath.evaluate("/rss/channel/link/text()", doc, XPathConstants.STRING);
      MapContainer link = new MapContainer();
      link.put("itemType", "domain");
      link.put("domain", domain);
      list.add(link);

      xpath.reset();
      NodeList items = (NodeList) xpath.evaluate("/rss/channel/item", doc, XPathConstants.NODESET);
      for(int i = 0; i < items.getLength(); i++){
        Element item = (Element) items.item(i);
        MapContainer map = new MapContainer();
        String title = item.getElementsByTagName("title").item(0).getTextContent();
        map.put("title", title);
        String pubDate = item.getElementsByTagName("pubDate").item(0).getTextContent();
        map.put("pubDate", DateUtils.parse(pubDate, "EEE, dd MMM yyyy HH:mm:ss Z", Locale.US));

        String itemType = item.getElementsByTagName("wp:post_type").item(0).getTextContent();
        map.put("itemType", itemType);
        if("attachment".equals(itemType)){
          String attachUrl = item.getElementsByTagName("wp:attachment_url").item(0).getTextContent();
          map.put("attachUrl", attachUrl);
          list.add(1, map);
        }else if("post".equals(itemType)){
          String content = item.getElementsByTagName("content:encoded").item(0).getTextContent();
          content = htmlTagAdjust(content);
          map.put("content", content);

          NodeList categorys = item.getElementsByTagName("category");
          for(int j = 0; j < categorys.getLength(); j++){
            Element category = (Element) categorys.item(j);
            String categoryDomain = category.getAttribute("domain");
            if("post_tag".equals(categoryDomain)){
              map.putIfAbsent("tags", new ArrayList<String>()).add(category.getTextContent());
            }else if("category".equals(categoryDomain)){
              map.put("category", category.getTextContent());
            }
          }

          list.add(map);
        }
      }
    }catch(Exception e){
      logger.error("load wordpress xml error", e);
      list = null;
    }finally{
      IOUtils.closeQuietly(xml);
    }

    return list;
  }

  private static String htmlTagAdjust(String html){
    StringBuilder result = new StringBuilder();
    try(BufferedReader reader = new BufferedReader(new StringReader(html))){
      String line = null;
      String tag = null;
      boolean pureText = false;
      while((line = reader.readLine()) != null){
        if(tag == null){
          tag = findStartHtmlTag(line.trim());
        }

        if(tag != null){
          if(pureText){
            result.delete(result.length() - 4, result.length());
            result.append("
\n");
            pureText = false;
          }

          result.append(line).append('\n');
          tag = line.trim().endsWith("</" + tag + ">") ? null : tag;
          continue;
        }

        if(!pureText){
          if(line.trim().length() != 0){
            result.append("
\n").append(line).append("
");
            pureText = true;
          }
        }else{
          if(line.trim().length() == 0){
            result.delete(result.length() - 4, result.length());
            result.append("
\n");
            pureText = false;
          }else{
            result.append(line).append("
");
          }
        }
      }

      if(pureText){
        result.delete(result.length() - 4, result.length());
        result.append("
");
        pureText = false;
      }
    }catch(Exception impossible){
      impossible.printStackTrace();
    }

    return result.toString();
  }

  private static String findStartHtmlTag(String text){
    if(text.length() == 0 || text.charAt(0) != '<')
      return null;

    String result = null;
    /* 这里设置html标签字符最长为10 */
    for(int i = 1; i < text.length() && i < 10; i++){
      char c = text.charAt(i);
      if(c == '>'){
        result = text.substring(1, i);
        result = result.matches("[a-zA-Z]+") ? result : null;
        break;
      }
    }

    return result;
  }

  static String htmlImageOrLinkAdjust(String domain, XPath xpath, String xhtml) throws Exception{
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    /* 注意此处必须使用InputSource,不能直接使用String形式参数?? */
    Document doc = builder.parse(new InputSource(new StringReader(xhtml)));

    xpath.reset();
    NodeList eles = (NodeList) xpath.evaluate("//img | //a", doc, XPathConstants.NODESET);
    for(int i = 0; i < eles.getLength(); i++){
      Element ele = (Element) eles.item(i);
      String tagName = ele.getNodeName();
      String linkAttr = "img".equals(tagName) ? "src" : "href";
      String link = ele.getAttribute(linkAttr);
      if(!link.startsWith("http://") && !link.startsWith("https://")){
        ele.setAttribute(linkAttr, domain + link);
      }
    }

    Transformer transformer = TransformerFactory.newInstance().newTransformer();
    transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
    StringWriter writer = new StringWriter();
    transformer.transform(new DOMSource(doc), new StreamResult(writer));
    return writer.toString();
  }

}

redpajama_set_name: RedPajamaGithub


text:
Library News > New TV spot is a homegrown effort
AlumniUniversity Archives
New TV spot is a homegrown effort
Posted by deligato November 20, 2014 1 Min Read
Andrew J. Hatling, University video producer, center, and Ryan Yarosh, director of media and public relations, work on Binghamton University's new TV spot on the Lois B. DeFleur Walkway.
Photo by Jonathan Cohen
What does it take to shoot a modern TV spot? Expensive equipment? A 40-man crew? A gargantuan budget? For Binghamton University, all it takes is some teamwork.
The University's new 30-second TV spot, "Binghamton – This Is Premier," is a study in collaboration. The video, which showcases the University's history using archive footage and props, period furniture and digital effects, was produced almost entirely in-house by students, faculty and staff.
"The way that people came together to put this project together, it's unbelievable," University Video Producer Andrew Hatling said. "From so many different arenas, it was such a huge, huge team effort – from theater to Special Collections in the library to people on the web team and the marketing department."
Read more here: New TV spot is a homegrown effort
deligato November 20, 2014
Special Collections Talk: "Singing the Body Electric: Opera, Democracy, and Voice in the Poetry of Walt Whitman"
Distinguished Alumnus Eric Weitz to Give Talk on Human Rights in Age of Nation-States
Electronic Theses and Dissertations (ETDs) on the ORB
Two Special Collections and University Archives Installations at Art Museum


Atco scarifier cassettes help produce a perfect manicured lawn by ridding your turf of moss and thatch and allowing it to breath. They can be attached to your Atco Balmoral cylinder mower quickly and easily without tools and are powered by the lawn mower.
Leave a comment Atco Atco 14"" QX Scarifier Cassette (For Atco-Qualcast Cylinder Mower)!
For the ultimate in user comfort and a faster cut on larger areas, convert your Atco Royale 24E into a sit-on lawnmower with the aid of this auto steer seat!
Leave a comment Atco Atco Auto Steer Seat (For Atco Royale 24E Cylinder Lawnmower)!
If you need a more professional finish – for example if you have croquet or tennis lawn to maintain – then this 10 bladed cassette will provide an even closer, finer cut.
Leave a comment Atco Atco 14"" QX 10 Bladed Cylinder Cassette (For Atco-Qualcast Cylinder Mower)!
Probably the finest domestic cylinder lawnmower in the world! The Atco Royale 20E Four-stroke Cylinder Lawn Mower is powered by a 6.5hp Briggs & Stratton Intek Pro engine with electric key start. This model has a cutting width of 51cm, while the cutting height can be adjusted from 5mm to 35mm for an immaculate finish whatever the conditions. Its steel front and rear rollers will produce a pronounced stripe without damaging your lawn. The rear roller can be driven independently of the cylinder, enabling the mower to be driven from lawn to lawn with ease as well as enabling the grass catcher to be emptied safely and without the need of switching off the engine. The Atco Royale 20E also features a special cradle which makes the large capacity grass box easy to roll on and lift off without spilling clippings. This mower can be converted to a 'ride-on' with the optional autosteer seat. Weighs 103kg. PLEASE NOTE: THIS PRODUCT IS DELIVERED ASSEMBLED AND UNDERGOES A FULL PRE-DELIVERY INSPECTION (MANUFACTURER'S P.D.I.) BY OUR INDUSTRY TRAINED ENGINEERS. DELIVERY TIME IS CURRENTLY 3-5 DAYS. ATCO ROYALE PETROL CYLINDER MOWERS HAVE A 1 YEAR MANUFACTURER'S WARRANTY.
Leave a comment Atco Atco Royale 20E Petrol Cylinder Lawn Mower (With Manufacturer's Pdi)!
A fine cut lawn will bring you little joy if it becomes overgrown with moss and unwanted thatch. Thankfully Atco have developed the 'QX' system which allows you to replace the cylinder blade with this scarifier cassette, turning your mower into a powered lawn rake!
Leave a comment Atco Atco 17"" QX Scarifier Cassette (For Atco-Qualcast Cylinder Mower)!
The Atco Royale 24E Four-stroke Cylinder Lawn Mower is powered by a 6.5hp Briggs & Stratton Intek Pro engine with electric key start. Its steel front and rear rollers will produce a pronounced stripe without damaging your lawn and the rear roller can be driven independently of the cylinder, enabling the mower to be driven from lawn to lawn with ease. It has a cutting width of 61cm, while the cutting height can be adjusted from 5mm to 35mm for an immaculate finish in long and short grass. Also features a special cradle which makes the large capacity grass box easy to roll on and lift off without spilling clippings. This mower can be converted to a 'ride-on' with the optional autosteer seat. Weighs 111kg. PLEASE NOTE: THIS PRODUCT IS DELIVERED ASSEMBLED AND UNDERGOES A FULL PRE-DELIVERY INSPECTION (MANUFACTURER'S P.D.I.) BY OUR INDUSTRY TRAINED ENGINEERS. DELIVERY TIME IS CURRENTLY 3-5 DAYS. ATCO ROYALE PETROL CYLINDER MOWERS HAVE A 1 YEAR MANUFACTURER'S WARRANTY.
Leave a comment Atco Atco Royale 24E Petrol Cylinder Lawn Mower (With Manufacturer's Pdi)!
This 17″" QX Cylinder Cassette has 10 blades for a close, professional cut and is ideal if you have grass tennis courts or croquet lawns to maintain. You can swop between this and the standard blade in seconds without the need for tools. The 17″" QX Cylinder Cassette fits neatly into any Atco, Qualcast or Suffolk Punch 17″" petrol cylinder lawnmower (17SK, 17S etc.) built since 1996 and featuring the QX system. QX refers to 'Quick Exchange' and existing owners of these machines will be able to tell if their 17″" mower has this feature by the fact that the existing cylinder will slot in and out without the need for tools and is in cassette form rather than a stand-alone cylinder.
Leave a comment Atco Atco 17"" QX 10 Bladed Cylinder Cassette (For Atco-Qualcast Cylinder Mower)!
The Atco Club Petrol Cylinder Lawn Mower is powered by a Four-stroke 6.5hp Briggs & Stratton Intek Pro engine which features a large capacity fuel tank, an engine stop switch and an engine cut-out system with a warning light to prevent starting when the oil pressure is low. Its 12-bladed, precision ground cylinder can produce a truly impressive 133 cuts per metre, while the cutting height can be set as low 1.8mm, making this mower ideal for achieving a fine finish on lawns, cricket pitches, bowling greens and tennis courts. The Atco Club 20 has a cutting width of 51cm. Weighs 92kg. PLEASE NOTE: THIS PRODUCT IS DELIVERED ASSEMBLED AND UNDERGOES A FULL PRE-DELIVERY INSPECTION (MANUFACTURER'S P.D.I.) BY OUR INDUSTRY TRAINED ENGINEERS. DELIVERY TIME IS CURRENTLY 5-7 DAYS. THE ATCO CLUB PETROL CYLINDER MOWER HAS A 2 YEAR MANUFACTURER'S WARRANTY.
Leave a comment Atco Atco Club 20 Petrol Cylinder Lawn Mower (With Manufacturer's Pdi)!
Replace the cylinder blade on your 20" Atco Balmoral lawn mower with this scarifier cassette and enjoy the benefits of a healthy, moss free lawn! It's quick and simple thanks to Atco's 'QX' technology which enables the blade to slot out and the scarifier to simply slide in to replace it.
Leave a comment Atco Atco 20"" QX Scarifier Cassette (For Atco-Qualcast Cylinder Mower)!
For the ultimate in user comfort and a faster cut on larger areas, convert your Atco Royale 20E into a sit-on lawnmower with the aid of this auto steer seat!
Leave a comment Atco Atco Auto Steer Seat (For Atco Royale 20E Cylinder Lawnmower)!


Subscribe now and save 10% on every box! Choose a delivery schedule that works for you and your family.
The Stage 2 multi-pack is the best way to try each Stage 2 recipe we have to offer for your little ones 7 months and up. Each delivery box contains 24 nutrient-packed purées in five delicious recipes.


text:
Europe's North-South wind energy divide
EUROPE: Although countries in southern Europe are getting in on the megaproject act, it is still those to the north that appear more likely to build larger onshore wind developments
Projects in northern Europe from the UK, Norway, Sweden and the Netherlands will dominate wind energy development in the western EU during 2011, including one giant scheme that will become Europe's biggest.
This is against a background of tighter financing constraints, according to a report by law firm Taylor Wessing. It said in November 2010 that venture capital funds and the private equity community had largely stopped early-stage funding for European renewables, although technologically mature and capital-efficient subsectors like onshore wind were attracting equity and debt finance more easily than less mature technologies such as offshore wind.
The report said the scarcity of pre-construction financing was driving consolidation among independent developers, and that governments needed to make a long-term commitment to the sector.
Scotland supreme
Mature markets such as Germany, Denmark, Spain and France, have virtually no large projects planned over the next two years. Countries such as the UK are playing 'catch-up', but the likelihood of large onshore development taking off needs to be seen in the context of ambitious offshore projects in 2011 in the North Sea.
Eight British schemes, all in Scotland, which hosts several of Europe's highest wind speed sites, are due to go ahead in 2011-12. UK onshore wind farms scheduled to come online over the same period total 1.95GW.
At 350MW, the biggest is Scottish and Southern Energy's £500 million (€590 million) Clyde project in South Lanarkshire, which should start generating electricity in 2012. It will deploy 152 Siemens 2.3MW turbines, capable of powering the equivalent of 320,000 homes, and will be Europe's largest onshore wind farm.
The next biggest is the Whitelee Extension in south-west Scotland, led by Scottish Power and Alstom. It features 69 3MW and six 1.74MW turbines and is being built in two phases. The existing Whitelee array is currently Europe's biggest, with 140 turbines and an installed capacity of 322MW.
The Griffin wind farm in northern Scotland, which was taken through planning by developer Green Power, is now being wholly built and operated by Scottish and Southern Energy. The 156MW scheme utilises 68 Siemens 2.3MW turbines.
Progress elsewhere
Meanwhile, Norway has ten schemes going ahead in 2011-12, the biggest of which is the 220MW Storheia in Sør-Trøndelag, in the centre of the country, led by Statkraft with Agder Energi.
Total Norwegian new build onshore for 2011 is projected to be nearly 1.4GW, but there are doubts about whether this might be an optimistic expectation. Neighbouring Sweden has 796MW due online over the next two years.
Of the Dutch schemes, the largest is the 145MW Windkoepel Nord in Flevoland, a region of reclaimed polder land just south of the Ijsslmeer, from Siemens and Westermeerwind. In all, new Dutch projects coming online in 2011 and 2012 are expected to total 423MW.
Greece, Portugal and Spain are spearheading southern European wind, with the Greek Skyros project on Skyros Island being the biggest, at 294MW. It is being built by the Eoliki Notiou Skyrou Consortium and is due online in 2011. Another big contributor to the Greek total of 1.25GW is Terna Energy's Aegean Gyaros Island project, which will come online in 2012 at 288MW.
The biggest Iberian project this year is in Portugal, the Douro Sul scheme at Viseu, a region of central Portugal. This Ventinveste wind farm will start generating 206MW during 2011.
Only two large projects from European wind giant Spain feature this year. Ampudia, in Palencia, from Esquilvent and Gamesa is a 141MW project, while Sierra de Arcos in Malaga, from LDV Sierra de Arcas, Endhol Group and Vestas Wind Systems, will feature 10 Vestas V100 turbines and generate 180MW.
To the north-east of Europe, Finland has two modest developments: the 135MW Metsälä, and Raippaluoto at 110MW, both in the west of the country and being developed by EPV Tuulivoima.
Big projects - 2013 and beyond
New entrants aim high
China blazes trail for region
North America goes large
Major onshore projects can trigger global wind power growth
For wind farms, bigger really can mean better
Why size does matter


Get away to a fascinating adventure accompanied by the beautiful landscape of the Tlatlaquitepec village and its surroundings.
Enter the dirt road and feel immersed in the remote history of the planet. You will be welcomed by its huge vertical walls and numerous caves and cliffs, as well as the gigantic limestone monolith.
Enjoy the eternal fog and the dense forests. Admire the beautiful shades of the stones reminiscent of oranges and reds of dawn and dusk.
Enter the Olinteutli cave, located at the entrance of the slope, where Tolteca pre-Hispanic vestiges such as vessels, spears, and necklaces were found. Enjoy the beauty of stalactites and stalagmites formed by water seeps. Listen to the pre-Hispanic legends of people who wanted to enter this cave.
Scroll through zip line, climb and practice rappelling by the impressive and rugged rocks appearing before you, inviting you to live the adventure of vertigo and to prove the dexterity of your arms and your legs, while your eyes enjoy the placid landscape balancing your spirit.


Mini Militia Pro Pack Mod Apk – You must have heard about mini militia online action multiplayer game as it is a very popular with 50 million installs worldwide. It is very addictive even I play this game more than 3 hours daily. So today I will be sharing Mini Militia Pro Pack Mod Apk download with an easy installation guide. The latest mini militia pro pack purchased apk with CTF (Capture The Flag). You can easily download Mini Militia Pro Pack Unlocked All Items Purchased Apk from the direct download link given below. latest mini militia mod apk download (mini militia hack download) 4.0.42 !
Experience intense multiplayer combat with up to 8 players online or in local multiplayer. Train with the Sarge and sharpen your skills in offline Training and Survival modes. Mini Militia Hack Apk !
Feedback welcome on balancing the new CTF game mode. E.g., spawn points, balancing drops is a top priority moving forward.
This was an easy guide on installing Mini Militia Pro Pack on Android. Now you will be able to install and enjoy latest pro pack of mini militia and its extra features on your android device. The download link of latest Mini Militia Pro Pack Mod Apk is given in the top context and at the bottom of the post. You can also download upcoming updates of Mini Militia Pro Pack from our Site. Bookmarking this page or subscribing to push notifications will never let you miss the latest updates of Mini Militia Mod Apk Pro Pack.
I hope you liked my site and the tutorial on How to download and install Mini Militia Pro Pack Mod Apk in Android Device ? Thanks for visiting ! You will find a ton of premium android apps on my site, so if want some more crazy android apps, I recommend to visit the homepage of my site. Will love to see you again !


Owing to the fact that the University of Illinois in Chicago (UIC) is a fundamental element of the technological, educational and cultural framework of Chicago city, I feel so much convinced that this is my university of choice in which my competencies concerning medical technology are to be nurtured and improved. I will be comfortable while in the University since it is a home to Chicago's largest medical school, also serving as the major educator of Illinois' dentists, physicians, nurses, pharmacists and many other types of healthcare professionals. My wish to join the University of Illinois in Chicago is reinforced by the sense that I have rich experience in the field of Pharmacy, having done many research focused on the use of protein and molecular biologic proficiencies.
At the University I expect to do more research concerning Public Healthy which is my field of study as well as supervising and instructing other students and junior technologists on definite laboratory techniques. I can also assist in arranging and performing maintenance of chosen laboratory equipment and protocols, and also with inventory and ordering of common laboratory supplies.
I'm aware that UIC and the School of Public Healthy are dedicated to equality of educational opportunity and do not show favoritism against applicants according to ethnicity, race, national origin, gender, religion, disability, age, or sexual orientation. From this perspective, it is very clear that I will meet students from varied backgrounds who I can socialize with and at long run enable me know more concerning the varied culture around the world.
The diversity of activities present at the University is apparently a better chance for students to discover their abilities and talents for their personalities to develop as well as enabling the campus community to gain. With the university's reasonable number of clubs and organizations, I indubitably will participate in their operations owing to my vast skills and knowledge in many areas for instance leadership and counseling. This will consequently develop my experience in the university and at long run make me a ready caregiver who will assume the roles in any given health care related organization.
Being a prefect at my former school, I have apprehended various responsibilities for instance delivering speeches, directing school events, and playing a role on the school council. The experience that I have gained has enabled me to utilize my own initiative and has improved my ability of speaking well in public. I also engage myself completely with the school activities like football games, swimming, music performances and debating. As well took part in science related activities during when I was a member in the science congress club in my former school. This is when a proved my competence in science related issues as I always was the winner having the highest score.
Presently, in the University of Illinois at Chicago, the Department of Pharmacology, I am assisting with research that is focused on expressed fusion protein (antibody with cytokine) depresses tumor growth. I instruct and supervise students and junior technologists on specific laboratory processes and techniques. I also assist during the set-up and maintenance of chosen laboratory protocols and paraphernalia, as well as with inventory and ordering of common laboratory supplies.
According to the idea that I was brought up in a modest background, I have successfully overcome many challenges on my way by straining towards accomplishing my dreams. I therefore plan to give inspiration talks to fellow students and community as a whole concerning, having an optimistic look on everything done irrespective of how difficulty it is. This personal involvement from experience will indubitably be an inspiration to other student who will be confronted by troubles. I therefore aspire to get admission at your honored university.


Have you ever watched 6-year-olds play baseball? The whole event is filled with chaos and hysteria and fun. Hands down the most entertaining part of the game is when the batter gets a hit (usually a grounder) headed straight down the middle and every single player in the field takes off, head down, full speed, straight towards the ball, and one another. Often this rush for the ball results in a crash, a missed catch and a home run hit for the wrong team.
On the field, the kids run for the ball for a few reasons: They are bored, it's a natural reaction to the events taking place, they don't know who is supposed to be doing it, or they want to be the star.
In the office, when trouble hits, why does everyone jump in? Usually, the answers are similar.
When we don't trust that someone else is going to be able to complete the task or solve the problem, we jump in and do it for them. Why?
Have we ever stopped to consider why we don't trust them? Do they have the tools to succeed? Do they have the knowledge and ability to perform the task? If yes, then the answer might be as simple as deciding to let go a little and letting your team shine. If your answer is no, they are not capable then we have some hard decisions to make. Is this something we can help them with? Do they need more coaching? Or is it time to consider making a trade?
When a bunch of employees dive in to solve an issue, we have got to ask: Do we know who is supposed to be playing what position? Have we given clarity to the team and have we been clear with ourselves?
When we don't know who is doing what, there becomes a feeling of uncertainty and panic which leads to an outfield pile up. Nothing productive happens resulting in time and money wasted. Coincidentally, isn't it interesting that an accountability chart and a baseball field look so similar?
Everyone wants to be the one who makes the game-winning catch. Often this comes from a need or want to be recognized. Why the need to stand out? Is this politics? Lack of recognition? Depending on the reasons this can be dangerous for your business.
Dig deeper and notice if there is something going on behind the scenes that you are missing that needs to be addressed. Is there a motive, or concern that needs action or is it a simple matter of doing a better job of recognizing our team for the work they are doing? Confirming we know we have the right person in the right seats, so when the ball comes their way we have every confidence in their ability to make the right play.
An take a look at where you the leader fall in this, as captain of the team your greatest strength is setting up the plays and encouraging your team to execute.
So where are you at in the game? Are you struggling to stick with the playbook you wrote?
What do you need to change to make it to the big leagues?
Like what you're reading? Have business leadership tips delivered directly to your inbox! Sign-up today.


text:
Iron Range News
News from other Media
The Vikings are coming (again, sort of)
Andy Reierson named CEO of RR46
LSC included in Walz bonding proposal
Wisconsin regulators approve Minnesota Power's proposed natural gas power plant
St. Luke's, YMCA establish new partnership
We've had Viking ships arrive to Lake Superior before … some perhaps even when there were actual Vikings, so the speculation goes. But the latest invasion of Vikings will be warmly welcomed if the cruise company by that name makes it all the way to Houghton, Bayfield, Duluth and Thunder Bay …
Wisconsin's Public Service Commission (PCSW) on Thursday approved the Nemadji Trail Energy Center to be built in Superior by Minnesota Power and Dairyland Power Cooperative.
PolyMet will ask Minnesota Supreme to review permit decisions
Poly Met Mining will ask the Minnesota Supreme Court to overturn a state Court of Appeals decision remanding the company's permit to mine and dam safety permits to the Department of Natural Resources for a contested case hearing.
Viant Crane being acquired by Tennessee firm
Viant Crane in Superior will be acquired Barnhart Crane and Rigging Co., which has a significant Midwest footprint, Barnhart has announced.
Exhibition opens Friday at Prøve
At 7 p.m. on Friday, Jan 17, Prøve Gallery will host the opening of Metamorphose in their exhibition and performance space, located in historic downtown Duluth at 21 N. Lake Ave.
Rotary hosts beer-wine tasting event
The Rotary Club of Superiorwill host its 8th annual Craft Beer & Wine Tasting Event beginning at 5 p.m. on February 18 at the UW-Superior Yellowjacket Union.
BusinessNorth Exclusives
Real estate activity continues at full speed
Following about four years of healthy growth, 2019 has been another banner year for commercial real estate transactions in Northeastern Minnesota and Northwestern Wisconsin. Although this market doesn't typically march in lockstep with national trends, our region has discovered plenty of …
Minnesota surplus: good, bad or unreal?
Last month, Minnesota Management and Budget predicted state government will have a budget surplus of $1.3 billion. This set many a tongue wagging among legislators, economists, agencies and taxpayers as to what this will mean for the state. Specifically, what can Minnesota get out of such a …
Maple syrup: More than a sweet hobby
There are hobbies and there are serious hobbies. Steve Burgess crossed the line from one to the other shortly after moving from Neillsville, Wis., to the Twin Ports in 2012.
Minnesota Gov. Tim Walz released a higher education bonding proposal for the 2020 Legislative session that includes nearly $1 million for predesign work on the Lake Superior Project.
St. Luke's celebrated a new partnership with the Duluth Area Family YMCA with a short presentation and ribbon cutting ceremony Thursday.
UnitedHealth Group reports higher revenue, earnings
UnitedHealth Group reported full year 2019 revenues of $242.2 billion, an increase of $15.9 billion or 7.0 percent year-over-year. Net earnings for the year were $14.239 billion compared with $12.382 during 2018.
Blind sled dog completes 100-mile race in northern Minnesota
Indy was a "superstar" sled dog in his earlier days, according to his owner, Frank Moe. But three and a half years ago, Indy lost sight in one eye.
KUWS / Wisconsin Public Radio
Judge: County violated federal Indian law In zoning dispute with Lake Superior Tribe
A federal judge has ruled a northern Wisconsin county violated federal Indian law when it enforced its zoning rules on land owned by tribal members within a Lake Superior tribe's reservation. The Red Cliff Band of Lake Superior Chippewa filed a lawsuit against Bayfield County in 2018. The tr…
Roger Reierson to become executive chairman of RR46
St. Luke's announces executive appointments
St. Luke's has named Dr. Nicholas Van Deelen chief medical officer and vice president of medical affairs. He has been practicing emergency medicine at St. Luke's for 22 years and will continue to practice on a limited basis in the department.
Bell Bank expanding in Twin Ports, hires 7
Bell Bank is hiring staff in the Duluth-Superior metro, with Tim McShane recently named president/Twin Ports market for the Fargo-based bank.
St. Luke's adds pain management specialist
St. Luke's Interventional Pain Management has hired Dr. Maricela Schnur. She received her medical degree from Weill-Cornell Medical College in New York, NY, and completed her residency in anesthesia at the Massachusetts General Hospital in Boston and a fellowship in pain management at Mayo C…
Duluth Health Collaborative Members Selected to National Leadership Academy
A team representing Bridging Health Duluth, a cross-sector, health-focused collaborative, is one of 10 health teams selected nationally to join the ninth cohort of the National Leadership Academy for the Public's Health (NLAPH). The team includes: Emily Anderson with Essentia Health, Janet K…
Wisconsin student entries welcome by Jan. 31 for 2020 Governor's Business Plan Contest
MADISON, Wis. – Looking for a self-directed project this semester that can lead to prizes, mentoring and live connections to the business world? The 17th annual Wisconsin Governor's Business Plan Contest will accept entries online for the 2020 competition until 5 p.m. Friday, Jan. 31.
Twin Ports 2020 Martin Luther King, Jr Events Themed "Give Us the Ballot"
Duluth and Superior are honoring and celebrating the legacy of Civil Rights Movement leader, Dr. Rev. Martin Luther King, Jr. in a series of tribute events on January 19 - 20 coordinated by the Duluth Branch of the National Association for the Advancement of Colored People (NAACP). These eve…
6 hacks for savvy parents to save time and money
Tips to prepare you and your loved ones for an emergency
Tech Talk & Innovation
Criminals target the connected home: Simple steps to stay safe
BusinessNorth - Sept 2016
How do you feel about allowing motorized scooters on Duluth streets?
Should the state allow Essar or its subsidiaries to develop a mine near Nashwauk?
Duluth, MN (55816)
Snow likely. Low 18F. Winds E at 10 to 20 mph. Chance of snow 100%. 5 to 8 inches of snow expected..
Snow likely. Low 18F. Winds E at 10 to 20 mph. Chance of snow 100%. 5 to 8 inches of snow expected.
Sign up for one of our email newsletters and stay informed!
Would you like to receive our twice-weekly e-newsletter? Sign up today!
BusinessNorth Columnists
News from the Iron Range
businessnorth.com
Email: news@businessnorth.com
© Copyright 2020, BusinessNorth, PO Box 16223 Duluth, MN | Privacy Policy


text:
Samsung Galaxy A51 promo video leaked ahead of December 12th launch
In: Mobiles, News
On December 12th, Samsung will be holding the Galaxy A 2020 series launch event in Vietnam. Some reports have claimed that the South Korean tech giant may announce the Galaxy A51 and Galaxy A71 smartphones at the event on Thursday. Ahead of the launch, a promotional video of the Galaxy A51 has surfaced on the interwebs, which has revealed the four colour variants of the smartphone along with its key specifications. The Galaxy A51 will be arriving as the successor of the Galaxy A50 and Galaxy A50s phones that were made official earlier this year.
Samsung Galaxy A51 design
Samsung Galaxy A51 appears in a leaked promo video
In the video, the Galaxy A51 can be seen in four colour variants such as Prism Crush Blue, Prism Crush Black, Prism Crush Pink, and Prism Crush White. Except for the Black version, the other colour variants have the appealing gradient finish. The colour-shifting design of the Galaxy A51 is dubbed as "Rhythmical Patten" by the company. There is a rectangular camera module at the top-left corner of the phone's back with four camera lenses and an LED flash inside it.
On the front, the Galaxy A51 sports an Infinity-O display that features a top-center aligned camera cutout like the Galaxy Note 10 flagship phone. The display of the device is embedded with an in-screen fingerprint reader.
Samsung Galaxy A51 specifications and features
The leaked promo video has revealed that the Galaxy A51 has a 6.5-inch Super AMOLED display that produces full HD+ resolution. The quad-camera setup placed on the backside of the device has a 48-megapixel main lens with f/2.0 aperture, a 12-megapixel ultra-wide-angle lens, a 5-megapixel depth lens, and a 5-megapixel macro lens. For selfies, the device has a 32MP shooter on the front. The Galaxy A51 can be used to create stable videos using the Super Steady Mode. Lastly, the promo reveals that the phone is packed with a 4,000mAh battery.
Previous reports have revealed that the Galaxy A51 will come preloaded with Android 10 with One UI 2.0 on top. It could be driven by the Exynos 9611 quad-core processor, aided by 4 GB of RAM. The phone is expected to arrive with support for 15W fast charging. The device may come in 64GB and 128GB storage models.
The Galaxy A51 is also expected to arrive in India in the near future soon after the unveiling in Vietnam, possibly in early January. As of now, there's no word regarding the price of the device.
Tags: NewssamsungSamsung Galaxy A51
Samsung Galaxy Fold India launch date is reportedly set for October 1st
Redmi Note 8 Pro Dark Blue colour variant launched
Lenovo Smart Display 7-inch, Smart Bulb, and Smart Camera launched in India


text:
Feb 28: 1] Overcoming Life's Obstacles 2] 24 Producer Howard Gordon ~ PODCAST
Trauma psychiatrist Dr. Alicia Salzer provides a celebratory guide for overcoming life's most difficult challenges. For our second segment Vicki chats with longtime 24 executive producer Howard Gordon about his thrilling debut novel, Gideon's War.
With her new book Back to Life, Dr. Alicia Salzer uses the the outlooks and skills of such icons as Michael J. Fox, Nelson Mandela, and Elizabeth Edwards to show how resilient survivors do when the cards seem stacked against them. She uses a feel good approach to overcoming, with a focus on the future and going forward rather than revisiting and dwelling on the past. Dr. Salzer appeared on over 100 episodes of the Montel Williams Show as the Director of Aftercare.
Gideon's War marks the explosive debut as a novelist for Howard Gordon after an enormously successful run as executive producer for the hit series 24. Gideon's War is a page-turning tale of political intrigue and international terrorism jammed with action that also serves as a gift to conspiracy theorists. Before embarking on this new chapter of his life as an author, Gordon gained national attention for his award winning work on 24 and The X-Files, for which he received multiple Golden Globes. His other TV credits include Angel, Buffy The Vampire Slayer, Beauty and the Beast, Spenser: For Hire, and Sisters.
https://conversationslive.net/podcastfiles/2011-02-28-SalzerGordon.mp3
Feb 21: 1] Master Your Workday 2] Challenge Your Belief System 3] Be Different or Be Dead ~ PODCAST
Mar 14: What You Need to Know About Prostate Cancer ~ PODCAST


If you're looking for something new to get you through the dog days of summer, check out this week's schedule of procurement and supply chain webinars. Click on the title of each event below to view the full description in our events calendar and to connect to their registration pages.
And… we're back! After a week (mostly) without events due to the holiday weekend, we once again have a slate of webinars to recommend. Click on the title of each event below to view the full description in our events calendar and to connect to their registration pages.
This week – which is a little slow because some lucky people have Friday off in advance of the July 4th holiday on Monday – is a unique assortment of webinars taking place 'anyway.' Two events on direct spend and one that looks at one of the weaknesses in the procurement customer service program. Click on the title of each event below to view the full description in our events calendar and to connect to their registration pages.
The events count is back up as we return to a full five day workweek, and the calendar looking forward shows no evidence of a quiet summer! Click on the title of each event below to view the full description in our events calendar and to connect to their registration pages.
This week's webinar notes are from an event presented by Bertrand Maltaverne, Senior Business Consultant at Pool4Tool, and hosted by Procurify. You can view the webinar on demand here. In the meantime, you may enjoy listening to a recent BMP Radio podcast with Bertrand and "Sourcing Doctor" Michael Lamoureax. Bertrand also has a great blog on Medium: check it out here.
Even with the holiday Monday in the U.S. this week, there are still a couple of events worth catching. In fact, one is a 'don't miss' webinar. Click on the title of each event below to view the full description in our events calendar and to connect to their registration pages.
In addition to the events below, Jon Hansen and I are presenting an IACCM webinar on Thursday on an unconventional topic: Picture of Dorian Gray, Procurement Pro. Hopefully you can join us! As to my other recommendations, click on the title of each event below to view the full description in our events calendar and to connect to their registration pages.
This week's events all come down to a single day – Thursday. On top of that, they run back to back starting at 11am Eastern. Click on the title of each event below to view the full description in our events calendar and to connect to their registration pages.
In addition to the webinars recommended below, CPO Rising is taking place in Boston, MA on Tuesday and Wednesday. Buyers Meeting Point will be covering the event live as an official media partner. Follow the event live on Twitter using hashtag #CPORising2016 for the latest insights from leading CPOs and industry thought leaders. Click on the title of each event below to view the full description in our events calendar and to connect to their registration pages.
There are a lot of webinars – 11 – taking place this week. The best of them address the most timely topics in procurement as you will see below. Click on the title of each event below to view the full description in our events calendar and to connect to their registration pages.
There are two points worth noting in this week's calendar. The first is the leap year giving us one last day in February. The other is that time is running out to secure a spot at the 2016 CPO Rising Summit being held in Boston on March 29th and 30th. Click here for more information and to get the Buyers Meeting Point discount code to save $250 on your registration fee.
This week's webinar notes are from a February 3rd webinar hosted by SAP Ariba and presented by Ed Cone at Oxford Economics and James J. McDonald and Luisa Gonzalez at COACH. The event is available on demand here.
We kick off the month of February with a strong, diverse week of webinars. The three that I have chosen to recommend have their finger on the pulse of procurement: 3rd party risk, the future of procurement, and BPO. Click on the title of each event below to view the full description in our events calendar and to connect to their registration pages.


text:
Home Breaking News Province provides record funding for ground search and rescue in B.C.
Province provides record funding for ground search and rescue in B.C.
Mike Farnworth
THE Province is providing $18.6 million in one-time funding to ground search and rescue (GSAR) groups throughout the province to be used over the next three years.
This funding will help the BC Search and Rescue Association (BCSARA) and GSAR groups bolster training, provide administrative support and equipment renewals. It also will support the Province and BCSARA in work to develop and implement a new governance and funding model.
"In discussions with BCSARA, I've heard the ground search and rescue community's strong concerns about the need for both an immediate infusion of funding and a clearer path toward long-term sustainable funding," said Mike Farnworth, Minister of Public Safety and Solicitor General, on Saturday. "That's why we're providing a record-level of funding as an immediate top-up of what B.C.'s GSAR groups are already receiving, as well as establishing a joint committee to move more quickly toward developing a sustainable funding model."
The $18.6 million represent the single largest provincial GSAR investment in B.C.'s history – a 24% increase from $5 million per year in supplemental funding announced in 2016. As well, Emergency Management BC has funding for two additional staff positions to work with BCSARA on the development and implementation of a new governance and funding model.
"On behalf of the 80 ground search and rescue groups and 2,500 members across the province, our thanks to the provincial government for the single largest influx of funding for search and rescue to date," said Chris Kelly, President, BCSARA. "The funds will provide critical core supports over the next three years, while final details are completed in the short term on a sustainable model."
Representatives from Emergency Management BC and BCSARA will create a partnership committee, which will set policy direction and consistent standards for search and rescue, and a management committee, which will make joint decisions on the distribution of funding to B.C.'s 80 search and rescue groups.
This new funding is in addition to funding that the Province already provides each year – $9 million in 2017-18 – to cover GSAR operational costs for deployment, as well as training and equipment costs, and the insurance and liability for the 80 groups serving B.C.
The Province's 2,500 registered search and rescue volunteers provide a vital public safety service for citizens and visitors, responding to more than 1,600 incidents each year.
Previous articleB.C. EVENTS: For the week of Saturday, March 23
Next articleMulticulturalism and anti-racism champions honoured


text:
Home Community People
Pro bono prosthetics and low-cost limbs: Engineer 3D-prints a helping hand
A big-hearted engineer in Victoria is making prosthetic hands at no cost to their recipients, by investing his redundancy payout and crowd-funding for equipment and software.
Former automotive engineer Mat Bowtell used a payout from Toyota to buy 3D printers and set up shop in his home, the ABC has reported. He now designs and makes low-cost prosthetic limbs, particularly for children, and doesn't even charge for postage.
"I think as a society we need to look after people who are disadvantaged or have disabilities or limb difference," he says.
Bowtell says he started out with around $5000 of his own money and purchased two small 3D printers, a basic scanner, CAD and 3D printing software, along with materials and postage. That was two years ago, and now after crowd-funding with a goal of $7000, he has raised almost $110,000 to help children and adults to receive new fingers, hands and limbs.
A recipient of one of Mat Bowtell's 3D-printed hands. (Image: Mat Bowtell)
"So far, I have made open-source prosthetic hands for a four-year-old boy in New South Wales, a six-year-old boy in Auckland, a 23-year-old man in Queensland, and a three-year-old girl in New South Wales," Mr Bowtell says.
Bowtell has also designed the Kinetic Finger, something he describes as a revolutionary functional prosthetic for partial finger amputees. One recipient in Japan, he says, has returned to playing the piano after 10 years.
He has also made Kinetic Fingers for a man in Melbourne, a hand for a 12-year-old girl in NSW, a full arm for a 17-year-old girl in Iraq — and more are waiting.
The seminal moment that led to his present enterprise, Bowtell says, actually occurred 14 years ago when he was studying mechatronics at Monash University while on a scholarship in Japan.
"I tried on a $1-million bionic arm and I thought 'wow, this is really, really fantastic technology'," he told the ABC. "But who on Earth is going to be able to afford it?"
According to Bowtell, although he can make a limb within a day or so, to get one done commercially or traditionally it can take months and be very expensive — more than $15,000.
"A lot of the things I design you can basically strap on," he said. "[And] if you've chopped off your finger you're able to get full function back … and it costs about 90 cents to make."
Bowtell also designs and makes devices to help children take part in activities. These include items like the skipping rope adaptor for children who do not have a hand or have been born with only part of a limb — and they get to choose their own colours and designs.
"It allows kids to join in and do things with all the other kids … like riding a bike, helping with the dishes, and playing drums," he says.
The designs, including the Kinetic finger, are free under a Creative Commons Licence, which allows other people to download them but not sell them or make a profit from his designs.
The licence does enable people to take their own measurements and 3D-print their own prosthetic. Bowtell's designs have been downloaded more than 1000 times, saving recipients an estimated $6.5 million.
Tags: 3D printinghealthcare technologyphilanthropypro bono work
Summer blackouts on the horizon and no energy policy in sight
The future of Australia's cities is unknown, so infrastructure needs to be ready for anything


Kevin P. Camden can be your lawyer for public employee rights.
Kevin P. Camden is the owner of Camden Law Office, LLC. Camden Law Office was re-established in March 2015 after Kevin returned to the firm from his position as General Counsel with Teamsters Local 700. Prior to serving with the Teamsters for five years, Kevin operated Camden Law Office in Woodridge, Illinois, concentrating in real estate development and property management; residential real estate; and, labor and employment law.
While with the Teamsters, Kevin worked directly with the Cook County Corrections bargaining unit, composed of 3,300 correctional officers, working in the union office at the largest single-site pre-trial detention facility in the country. Additionally, Kevin represented police officers, sheriff deputies, firefighters, and other government employees for one of the largest public-sector Teamster locals in the country.
Kevin litigated cases on behalf of management during his career as well, including boards of education, governmental units, and municipalities. He has litigated in excess of 200 grievances, scores of unfair labor practice cases before the Illinois Labor Relations Board, as well as routinely appearing in court. The firm represents businesses in routine labor and employment matters and investigations before the Dept. of Labor, Human Rights, and Dept. of Employment Security.
Kevin teaches for Northwestern University Center for Public Safety on labor relations, discipline and discharge, recruitment and selection, federal employment law, and internal affairs investigations. Kevin also teaches for Benedictine University's online executive MBA program through the Moser College of Adult Studies. An instructor with Solo Practice University, Kevin taught the labor law block for the program, which provides on-line legal instruction and practice development to solo practices.
Graduating from the John Marshall Law School in Chicago, Kevin has worked for several law firms, practicing in the area of governmental affairs, labor relations, and collective bargaining. An honors graduate of Northern Illinois University, Kevin has a BA in Economics.
In addition to raising three children with his wife Shelly, Kevin is the Chairman of the Tri-State Fire Protection District; is Vice-Chair of the Cass School Dist. 63 Educational Foundation; served as President of the Fraternity of Alpha Kappa Lambda for four years (2008-12) and remains on the National Executive Council; is on the parish council at Our Lady of Mt. Carmel; and, enjoys fishing, hunting, and nature photography.


15.1 FIDE will dissolve as soon as the number of members has been reduced to two. Moreover, FIDE can be dissolved by a decision of the General Assembly, if at least two-thirds of all members express themselves in favour of dissolution.
15.2 In case of dissolution, the General Assembly shall decide how to dispose of the FIDE assets, which are to be used for chess or for any other purpose contributing to the general good.


text:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Earthquakemodels: Zona/paper_exp/clear.py File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>

<link href="navtree.css" rel="stylesheet" type="text/css"/>

<link href="search/search.css" rel="stylesheet" type="text/css"/>

<link href="doxygen.css" rel="stylesheet" type="text/css" />

Earthquakemodels

Here is the official documentation for generating Earthquake Risk Models using Genetic Algorithms.

Namespaces |
Functions

clear.py File Reference

Go to the source code of this file.

Namespaces

  	clear

Functions

def 	clear.cleaner (filename, save)

def 	clear.main ()

Zona

paper_exp

clear.py

Generated by

     1.8.13


text:
function formatInputValue(doNotRound) {
    //filter non-numeric values
    this.value = this.value.replace(/[^0-9\.]/g, '');
    //only allow one decimal separator
    this.value = this.value.replace(/\.(.*\.)/g, '$1');
    if (doNotRound !== true) {
        //round to exactly 2 decimal places
        this.value = (+this.value).toFixed(2);
    }
}

function initUserAssignmentInputs() {
    //delete nodes
    jQuery(".deleteListItem").off('click');
    jQuery(".deleteListItem").on('click', function() {
        var id = jQuery(this).attr("data-item-id");
        jQuery(".listItem"+id).remove();

        //hide container if empty
        var pointId = jQuery(this).attr("data-point-id");

        setTimeout(function() {
            if (jQuery("#userDistributionInputs"+pointId+" .deleteListItem").length == 0) {
                jQuery("#userDistributionTable"+pointId).css("display", "none");
            }
            distributeEvenly(jQuery("#userDistributionInputs" + pointId));
            recalculateTotalPercentages();
        }, 50);
    });

    jQuery(".userDistributionInputs input").off('input');
    jQuery(".userDistributionInputs input").off('focus');
    jQuery(".userDistributionInputs input").off('blur');

    jQuery(".userDistributionInputs input").each(formatInputValue);
    jQuery(".userDistributionInputs input").on('blur', formatInputValue);
    jQuery(".userDistributionInputs input").on('input', function() {
        var start = this.selectionStart,
            end = this.selectionEnd;
        var originalLen = this.value.length;

        formatInputValue.bind(this, true)();

        jQuery(this).attr("data-changed-by-user", "true");

        this.setSelectionRange(start+(this.value.length-originalLen), end+(this.value.length-originalLen));

        var listContainer = jQuery(this).closest(".userDistributionInputs");
        //remove error on change, if any
        jQuery(".error", listContainer).html("");
        recalculateTotalPercentages();
    });

}

function distributeEvenly(listContainer) {
    var pointType = listContainer.attr("data-pointType");
    var containsCustomValue = false;
    var inputs = jQuery("input", listContainer);
    var inputsReadOnly = jQuery("span.input", listContainer);
    inputs.each(function() {
        if (jQuery(this).attr("data-changed-by-user") == "true") {
            containsCustomValue = true;
        }
    });
    if (!containsCustomValue) {
        var avg = ((listContainer.attr("data-percentage")/100)/Math.max(inputs.length, inputsReadOnly.length))*100;
        inputs.each(function() {
            this.value = avg.toFixed(2);
        });
        inputsReadOnly.each(function() {
            $(this).attr("data-value", avg.toFixed(2));
            $(this).html(avg.toFixed(2));
        });
    }
}

function recalculateTotalPercentages() {
    jQuery(".userDistributionInputs").each(function() {
        var listContainer = jQuery(this);
        var pointType = listContainer.attr("data-pointType");
        var totalNode = jQuery("#userDistributionTotal"+pointType);
        var sum = 0;
        jQuery("input", listContainer).each(function() {
            sum += Number(this.value);
        });
        jQuery("span.input", listContainer).each(function() {
            sum += Number($(this).attr('data-value'));
        });
        totalNode.html(sum.toFixed(2)+"%");
    });
}

function areAllInputsValid() {
    var valid = true;
    jQuery(".userDistributionInputs").each(function() {
        var percentage = Number($(this).attr("data-percentage"));
        var ul = jQuery(this);
        jQuery(".error", ul).html("");
        var sum = 0;
        var atLeastEntry = false;
        jQuery("input", ul).each(function() {
            formatInputValue.bind(this)();
            sum += Number(this.value);
            atLeastEntry = true;
        });
        //round
        sum = (+sum.toFixed(2));
        if (atLeastEntry && sum != percentage) {
            jQuery(".error", ul).html("Please make sure that the percentages sum up to exactly "+percentage.toFixed(2)+"% (currently assigned: "+sum.toFixed(2)+"%).");
            valid = false;
        }
    });
    return valid;
}

jQuery(function() {
    jQuery("#submitPointsForm").click(function() {
        if (areAllInputsValid()) {
            jQuery(this).closest('form').submit();
        }
    });
    recalculateTotalPercentages();
});

var userNamePoints = "";
var userIdPoints = "";
function initUserAutocomplete(idPostfix, canEdit) {
    jQuery('#userSelectorInput'+idPostfix).focus(function() {
        jQuery("#please_choose_from_list"+idPostfix).hide();
    });

    jQuery('#userSelectorInput'+idPostfix).blur(function() {
        setTimeout(function() {
            var recipient = null;
            var unknownUser = null;
            var screenName = jQuery.trim(jQuery("#userSelectorInput"+idPostfix).val());

            // if (screenName == userNamePoints) {
            //     recipient = userIdPoints;
            // }
            // else {
            //     unknownUser = screenName;
            // }
            // if (recipient == null) {
            //     jQuery("#please_choose_from_list"+idPostfix).show();
            // }
            // if (unknownUser != null) {
            //     jQuery("#unknownUsersContainer"+idPostfix+" p").html(unknownUser);
            //     jQuery("#unknownUsersContainer"+idPostfix).show();
            // }
            // else {
                jQuery("#unknownUsersContainer"+idPostfix).hide();
            //}

        }, 200);
    });

    try {
        $("#userSelectorInput"+idPostfix)
        // don't navigate away from the field on tab when selecting an item
            .bind( "keydown", function( event ) {
                if ( event.keyCode === $.ui.keyCode.TAB &&
                    $( this ).data( "ui-autocomplete" ).menu.active ) {
                    event.preventDefault();
                }
            })
            .autocomplete({
                minLength: 3,
                source: "/api/members/getUserByScreenName",

                focus: function() {
                    // prevent value inserted on focus
                    return false;
                },
                select: function( event, ui ) {
                    userNamePoints = ui.item.value;
                    userIdPoints = ui.item.id;
                    if (!jQuery('.listItem'+idPostfix+'-'+ui.item.id).length) {
                        //show container
                        jQuery("#userDistributionTable" + idPostfix).css("display", "block");
                        //add input
                        var htmlTemplate =
                            '
'
                            + '';
                        if (canEdit) {
                            htmlTemplate +=
                                '<input type="text" name="assignmentsByUserIdByPointTypeId[' + idPostfix + ']['
                                + ui.item.id +
                                ']" class="form-control" value="0.0" /> ';
                        } else {
                            htmlTemplate += '0.0';
                        }
                        htmlTemplate +=
                            ''
                            +''
                            + ui.item.value +
                            '';
                        if (canEdit) {
                            htmlTemplate +=
                                'x' +
                                '
'
                            ;
                        }
                        jQuery("#userDistributionInputs" + idPostfix).append(htmlTemplate);
                        distributeEvenly(jQuery("#userDistributionInputs" + idPostfix));
                        recalculateTotalPercentages();
                    }
                    this.value = "";
                    initUserAssignmentInputs();
                    return false;
                }
            });
    }
    catch (e) {
        alert(e);
    }
    jQuery('.messageRecipients'+idPostfix).keypress(function(e) {
        var code = (e.keyCode ? e.keyCode : e.which);
        if (code == 13) {
            // enter pressed ignore
            return false;
        }

    });
}