text:
package org.apache.nifi.jms.processors;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.broker.BrokerService;
import org.apache.activemq.broker.TransportConnector;
import org.apache.activemq.transport.tcp.TcpTransport;
import org.apache.activemq.transport.tcp.TcpTransportFactory;
import org.apache.activemq.wireformat.WireFormat;
import org.apache.nifi.jms.cf.JMSConnectionFactoryProviderDefinition;
import org.apache.nifi.jms.cf.JndiJmsConnectionFactoryProperties;
import org.apache.nifi.processor.ProcessContext;
import org.apache.nifi.processor.ProcessSession;
import org.apache.nifi.processor.exception.ProcessException;
import org.apache.nifi.util.MockFlowFile;
import org.apache.nifi.util.MockProcessContext;
import org.apache.nifi.util.TestRunner;
import org.apache.nifi.util.TestRunners;
import org.junit.Test;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.support.JmsHeaders;

import java.io.IOException;
import java.net.URI;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;

import javax.jms.BytesMessage;
import javax.jms.ConnectionFactory;
import javax.jms.Message;
import javax.jms.Queue;
import javax.jms.TextMessage;
import javax.net.SocketFactory;

public class PublishJMSIT {

    @Test(timeout = 10000)
    public void validateSuccessfulPublishAndTransferToSuccess() throws Exception {
        ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");

        final String destinationName = "validateSuccessfulPublishAndTransferToSuccess";
        PublishJMS pubProc = new PublishJMS();
        TestRunner runner = TestRunners.newTestRunner(pubProc);
        JMSConnectionFactoryProviderDefinition cs = mock(JMSConnectionFactoryProviderDefinition.class);
        when(cs.getIdentifier()).thenReturn("cfProvider");
        when(cs.getConnectionFactory()).thenReturn(cf);

        runner.addControllerService("cfProvider", cs);
        runner.enableControllerService(cs);

        runner.setProperty(PublishJMS.CF_SERVICE, "cfProvider");
        runner.setProperty(PublishJMS.DESTINATION, destinationName);

        Map<String, String> attributes = new HashMap<>();
        attributes.put("foo", "foo");
        attributes.put(JmsHeaders.REPLY_TO, "cooQueue");
        attributes.put("test-attribute.type", "allowed1");
        attributes.put("test.attribute.type", "allowed2");
        attributes.put("test-attribute", "notAllowed1");
        attributes.put("jms.source.destination", "notAllowed2");
        runner.enqueue("Hey dude!".getBytes(), attributes);
        runner.run(1, false); // Run once but don't shut down because we want the Connection Factory left in tact so that we can use it.

        final MockFlowFile successFF = runner.getFlowFilesForRelationship(PublishJMS.REL_SUCCESS).get(0);
        assertNotNull(successFF);

        JmsTemplate jmst = new JmsTemplate(cf);
        BytesMessage message = (BytesMessage) jmst.receive(destinationName);

        byte[] messageBytes = MessageBodyToBytesConverter.toBytes(message);
        assertEquals("Hey dude!", new String(messageBytes));
        assertEquals("cooQueue", ((Queue) message.getJMSReplyTo()).getQueueName());
        assertEquals("foo", message.getStringProperty("foo"));
        assertEquals("allowed1", message.getStringProperty("test-attribute.type"));
        assertEquals("allowed2", message.getStringProperty("test.attribute.type"));
        assertNull(message.getStringProperty("test-attribute"));
        assertNull(message.getStringProperty("jms.source.destination"));

        runner.run(1, true, false); // Run once just so that we can trigger the shutdown of the Connection Factory
    }

    @Test(timeout = 10000)
    public void validateSuccessfulPublishAndTransferToSuccessWithEL() throws Exception {
        ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");

        final String destinationNameExpression = "${foo}Queue";
        final String destinationName = "fooQueue";
        PublishJMS pubProc = new PublishJMS();
        TestRunner runner = TestRunners.newTestRunner(pubProc);
        JMSConnectionFactoryProviderDefinition cs = mock(JMSConnectionFactoryProviderDefinition.class);
        when(cs.getIdentifier()).thenReturn("cfProvider");
        when(cs.getConnectionFactory()).thenReturn(cf);

        runner.addControllerService("cfProvider", cs);
        runner.enableControllerService(cs);

        runner.setProperty(PublishJMS.CF_SERVICE, "cfProvider");
        runner.setProperty(PublishJMS.DESTINATION, destinationNameExpression);

        Map<String, String> attributes = new HashMap<>();
        attributes.put("foo", "foo");
        attributes.put(JmsHeaders.REPLY_TO, "cooQueue");
        runner.enqueue("Hey dude!".getBytes(), attributes);
        runner.run(1, false); // Run once but don't shut down because we want the Connection Factory left in tact so that we can use it.

        final MockFlowFile successFF = runner.getFlowFilesForRelationship(PublishJMS.REL_SUCCESS).get(0);
        assertNotNull(successFF);

        JmsTemplate jmst = new JmsTemplate(cf);
        BytesMessage message = (BytesMessage) jmst.receive(destinationName);

        byte[] messageBytes = MessageBodyToBytesConverter.toBytes(message);
        assertEquals("Hey dude!", new String(messageBytes));
        assertEquals("cooQueue", ((Queue) message.getJMSReplyTo()).getQueueName());
        assertEquals("foo", message.getStringProperty("foo"));

        runner.run(1, true, false); // Run once just so that we can trigger the shutdown of the Connection Factory
    }

    @Test
    public void validateFailedPublishAndTransferToFailure() throws Exception {
        ConnectionFactory cf = mock(ConnectionFactory.class);

        PublishJMS pubProc = new PublishJMS();
        TestRunner runner = TestRunners.newTestRunner(pubProc);
        JMSConnectionFactoryProviderDefinition cs = mock(JMSConnectionFactoryProviderDefinition.class);
        when(cs.getIdentifier()).thenReturn("cfProvider");
        when(cs.getConnectionFactory()).thenReturn(cf);

        runner.addControllerService("cfProvider", cs);
        runner.enableControllerService(cs);

        runner.setProperty(PublishJMS.CF_SERVICE, "cfProvider");
        runner.setProperty(PublishJMS.DESTINATION, "validateFailedPublishAndTransferToFailure");

        runner.enqueue("Hello Joe".getBytes());

        runner.run();
        Thread.sleep(200);

        assertTrue(runner.getFlowFilesForRelationship(PublishJMS.REL_SUCCESS).isEmpty());
        assertNotNull(runner.getFlowFilesForRelationship(PublishJMS.REL_FAILURE).get(0));
    }

    @Test(timeout = 10000)
    public void validatePublishTextMessage() throws Exception {
        ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");

        final String destinationName = "validatePublishTextMessage";
        PublishJMS pubProc = new PublishJMS();
        TestRunner runner = TestRunners.newTestRunner(pubProc);
        JMSConnectionFactoryProviderDefinition cs = mock(JMSConnectionFactoryProviderDefinition.class);
        when(cs.getIdentifier()).thenReturn("cfProvider");
        when(cs.getConnectionFactory()).thenReturn(cf);

        runner.addControllerService("cfProvider", cs);
        runner.enableControllerService(cs);

        runner.setProperty(PublishJMS.CF_SERVICE, "cfProvider");
        runner.setProperty(PublishJMS.DESTINATION, destinationName);
        runner.setProperty(PublishJMS.MESSAGE_BODY, "text");

        Map<String, String> attributes = new HashMap<>();
        attributes.put("foo", "foo");
        attributes.put(JmsHeaders.REPLY_TO, "cooQueue");
        runner.enqueue("Hey dude!".getBytes(), attributes);
        runner.run(1, false);

        final MockFlowFile successFF = runner.getFlowFilesForRelationship(PublishJMS.REL_SUCCESS).get(0);
        assertNotNull(successFF);

        JmsTemplate jmst = new JmsTemplate(cf);
        Message message = jmst.receive(destinationName);
        assertTrue(message instanceof TextMessage);
        TextMessage textMessage = (TextMessage) message;

        byte[] messageBytes = MessageBodyToBytesConverter.toBytes(textMessage);
        assertEquals("Hey dude!", new String(messageBytes));
        assertEquals("cooQueue", ((Queue) message.getJMSReplyTo()).getQueueName());
        assertEquals("foo", message.getStringProperty("foo"));

        runner.run(1, true, false); // Run once just so that we can trigger the shutdown of the Connection Factory
    }

    @Test(timeout = 10000)
    public void validatePublishPropertyTypes() throws Exception {
        ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");

        final String destinationName = "validatePublishPropertyTypes";
        PublishJMS pubProc = new PublishJMS();
        TestRunner runner = TestRunners.newTestRunner(pubProc);
        JMSConnectionFactoryProviderDefinition cs = mock(JMSConnectionFactoryProviderDefinition.class);
        when(cs.getIdentifier()).thenReturn("cfProvider");
        when(cs.getConnectionFactory()).thenReturn(cf);

        runner.addControllerService("cfProvider", cs);
        runner.enableControllerService(cs);

        runner.setProperty(PublishJMS.CF_SERVICE, "cfProvider");
        runner.setProperty(PublishJMS.DESTINATION, destinationName);

        Map<String, String> attributes = new HashMap<>();
        attributes.put("foo", "foo");
        attributes.put("myboolean", "true");
        attributes.put("myboolean.type", "boolean");
        attributes.put("mybyte", "127");
        attributes.put("mybyte.type", "byte");
        attributes.put("myshort", "16384");
        attributes.put("myshort.type", "short");
        attributes.put("myinteger", "1544000");
        attributes.put("myinteger.type", "INTEGER"); // test upper case
        attributes.put("mylong", "9876543210");
        attributes.put("mylong.type", "long");
        attributes.put("myfloat", "3.14");
        attributes.put("myfloat.type", "float");
        attributes.put("mydouble", "3.14159265359");
        attributes.put("mydouble.type", "double");
        attributes.put("badtype", "3.14");
        attributes.put("badtype.type", "pi"); // pi not recognized as a type, so send as String
        attributes.put("badint", "3.14"); // value is not an integer
        attributes.put("badint.type", "integer");

        runner.enqueue("Hey dude!".getBytes(), attributes);
        runner.run(1, false); // Run once but don't shut down because we want the Connection Factory left intact so that we can use it.

        final MockFlowFile successFF = runner.getFlowFilesForRelationship(PublishJMS.REL_SUCCESS).get(0);
        assertNotNull(successFF);

        JmsTemplate jmst = new JmsTemplate(cf);
        BytesMessage message = (BytesMessage) jmst.receive(destinationName);

        byte[] messageBytes = MessageBodyToBytesConverter.toBytes(message);
        assertEquals("Hey dude!", new String(messageBytes));
        assertEquals(true, message.getObjectProperty("foo") instanceof String);
        assertEquals("foo", message.getStringProperty("foo"));
        assertEquals(true, message.getObjectProperty("myboolean") instanceof Boolean);
        assertEquals(true, message.getBooleanProperty("myboolean"));
        assertEquals(true, message.getObjectProperty("mybyte") instanceof Byte);
        assertEquals(127, message.getByteProperty("mybyte"));
        assertEquals(true, message.getObjectProperty("myshort") instanceof Short);
        assertEquals(16384, message.getShortProperty("myshort"));
        assertEquals(true, message.getObjectProperty("myinteger") instanceof Integer);
        assertEquals(1544000, message.getIntProperty("myinteger"));
        assertEquals(true, message.getObjectProperty("mylong") instanceof Long);
        assertEquals(9876543210L, message.getLongProperty("mylong"));
        assertEquals(true, message.getObjectProperty("myfloat") instanceof Float);
        assertEquals(3.14F, message.getFloatProperty("myfloat"), 0.001F);
        assertEquals(true, message.getObjectProperty("mydouble") instanceof Double);
        assertEquals(3.14159265359D, message.getDoubleProperty("mydouble"), 0.00000000001D);
        assertEquals(true, message.getObjectProperty("badtype") instanceof String);
        assertEquals("3.14", message.getStringProperty("badtype"));
        assertFalse(message.propertyExists("badint"));

        runner.run(1, true, false); // Run once just so that we can trigger the shutdown of the Connection Factory
    }

    @Test(timeout = 10000)
    public void validateRegexAndIllegalHeaders() throws Exception {
        ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");

        final String destinationName = "validatePublishTextMessage";
        PublishJMS pubProc = new PublishJMS();
        TestRunner runner = TestRunners.newTestRunner(pubProc);
        JMSConnectionFactoryProviderDefinition cs = mock(JMSConnectionFactoryProviderDefinition.class);
        when(cs.getIdentifier()).thenReturn("cfProvider");
        when(cs.getConnectionFactory()).thenReturn(cf);

        runner.addControllerService("cfProvider", cs);
        runner.enableControllerService(cs);

        runner.setProperty(PublishJMS.CF_SERVICE, "cfProvider");
        runner.setProperty(PublishJMS.DESTINATION, destinationName);
        runner.setProperty(PublishJMS.MESSAGE_BODY, "text");
        runner.setProperty(PublishJMS.ATTRIBUTES_AS_HEADERS_REGEX, "^((?!bar).)*$");
        runner.setProperty(PublishJMS.ALLOW_ILLEGAL_HEADER_CHARS, "true");

        Map<String, String> attributes = new HashMap<>();
        attributes.put("foo", "foo");
        attributes.put("bar", "bar");
        attributes.put("test-header-with-hyphen", "value");
        attributes.put(JmsHeaders.REPLY_TO, "cooQueue");
        runner.enqueue("Hey dude!".getBytes(), attributes);
        runner.run(1, false);

        final MockFlowFile successFF = runner.getFlowFilesForRelationship(PublishJMS.REL_SUCCESS).get(0);
        assertNotNull(successFF);

        JmsTemplate jmst = new JmsTemplate(cf);
        Message message = jmst.receive(destinationName);
        assertTrue(message instanceof TextMessage);
        TextMessage textMessage = (TextMessage) message;

        byte[] messageBytes = MessageBodyToBytesConverter.toBytes(textMessage);
        assertEquals("Hey dude!", new String(messageBytes));
        assertEquals("cooQueue", ((Queue) message.getJMSReplyTo()).getQueueName());
        assertEquals("foo", message.getStringProperty("foo"));
        assertEquals("value", message.getStringProperty("test-header-with-hyphen"));
        assertNull(message.getStringProperty("bar"));

        runner.run(1, true, false); // Run once just so that we can trigger the shutdown of the Connection Factory
    }
    /**
     *

     * This test validates the connection resources are closed if the publisher is marked as invalid.
     *

     *

     * This tests validates the proper resources handling for TCP connections using ActiveMQ (the bug was discovered against ActiveMQ 5.x). In this test, using some ActiveMQ's classes is possible to
     * verify if an opened socket is closed. See https://issues.apache.org/jira/browse/NIFI-7034.
     *

     * @throws Exception any error related to the broker.
     */
    @Test(timeout = 10000)
    public void validateNIFI7034() throws Exception {
        class PublishJmsForNifi7034 extends PublishJMS {
            @Override
            protected void rendezvousWithJms(ProcessContext context, ProcessSession processSession, JMSPublisher publisher) throws ProcessException {
                super.rendezvousWithJms(context, processSession, publisher);
                publisher.setValid(false);
            }
        }
        BrokerService broker = new BrokerService();
        try {
            broker.setPersistent(false);
            broker.setBrokerName("nifi7034publisher");
            TransportConnector connector = broker.addConnector("tcp://127.0.0.1:0");
            int port = connector.getServer().getSocketAddress().getPort();
            broker.start();

            ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("validateNIFI7034://127.0.0.1:" + port);
            final String destinationName = "nifi7034";
            final AtomicReference<TcpTransport> tcpTransport = new AtomicReference<TcpTransport>();
            TcpTransportFactory.registerTransportFactory("validateNIFI7034", new TcpTransportFactory() {
                @Override
                protected TcpTransport createTcpTransport(WireFormat wf, SocketFactory socketFactory, URI location, URI localLocation) throws UnknownHostException, IOException {
                    TcpTransport transport = super.createTcpTransport(wf, socketFactory, location, localLocation);
                    tcpTransport.set(transport);
                    return transport;
                }
            });

            TestRunner runner = TestRunners.newTestRunner(new PublishJmsForNifi7034());
            JMSConnectionFactoryProviderDefinition cs = mock(JMSConnectionFactoryProviderDefinition.class);
            when(cs.getIdentifier()).thenReturn("cfProvider");
            when(cs.getConnectionFactory()).thenReturn(cf);
            runner.addControllerService("cfProvider", cs);
            runner.enableControllerService(cs);

            runner.setProperty(PublishJMS.CF_SERVICE, "cfProvider");
            runner.setProperty(PublishJMS.DESTINATION, destinationName);
            runner.setProperty(PublishJMS.DESTINATION_TYPE, PublishJMS.TOPIC);

            runner.enqueue("hi".getBytes());
            runner.run();
            assertFalse("It is expected transport be closed. ", tcpTransport.get().isConnected());
        } finally {
            if (broker != null) {
                broker.stop();
            }
        }
    }

    @Test
    public void whenExceptionIsRaisedDuringConnectionFactoryInitializationTheProcessorShouldBeYielded() throws Exception {
        TestRunner runner = TestRunners.newTestRunner(PublishJMS.class);

        // using JNDI JMS Connection Factory configured locally on the processor
        runner.setProperty(JndiJmsConnectionFactoryProperties.JNDI_INITIAL_CONTEXT_FACTORY, "DummyInitialContextFactoryClass");
        runner.setProperty(JndiJmsConnectionFactoryProperties.JNDI_PROVIDER_URL, "DummyProviderUrl");
        runner.setProperty(JndiJmsConnectionFactoryProperties.JNDI_CONNECTION_FACTORY_NAME, "DummyConnectionFactoryName");

        runner.setProperty(ConsumeJMS.DESTINATION, "myTopic");
        runner.setProperty(ConsumeJMS.DESTINATION_TYPE, ConsumeJMS.TOPIC);

        try {
            runner.enqueue("message");
            runner.run();
            fail("The test was implemented in a way this line should not be reached.");
        } catch (AssertionError e) {
        } finally {
            assertTrue("In case of an exception, the processor should be yielded.", ((MockProcessContext) runner.getProcessContext()).isYieldCalled());
        }
    }
}

redpajama_set_name: RedPajamaGithub


NWG Property Solutions is leading the way in the industry for the second year running by providing property searches to its customers in a fast and efficient way.
The team is proud to announce it was ranked first out of nine water and sewage companies for the turnaround of our CON29DW conveyancing searches for drainage and water. In 2016, 99.10% of CON29DW searches were carried out in less than three days – well above the industry average of 88.4%.
The team also smashed its other targets including; 100% customer satisfaction for good or excellent, 100% Just An Hour volunteering participation, and reduced postal requests by over 50%.


Today's find is this rustic sign that says – "Family is the anchor that holds us together through life's storms." Available through Etsy.
Today's spotlight product is on this Panama Jack dining set. Fashioned with shades of brown, it would look handsome on a beach patio.


text:
US Senators join call for OECD to 'align with GRI Tax Standard'
20th Mar 2020 by Ben Poole
The response to the OECD's consultation on updating their tax reporting framework has been supportive of adding public disclosure of country-by-country corporate tax payments. About 25% of the responses urged the OECD to align with GRI's recently launched Tax Standard.
OECD's Base Erosion Profit Shifting (BEPS) framework requires large companies in OECD countries to provide country-by-country data to tax authorities but not to the public. In their public consultation, which closed on 6 March 2020, 21 of the 78 responses referred to the GRI Tax Standard in pressing for changes to make disclosures publicly available.
One submission, signed by 33 lawmakers from the US Congress and Senate, endorsed the new Tax Standard (GRI 207) by calling on the OECD to ensure reporting is 'aligned with the Global Reporting Initiative.' Quoting from this submission:
"GRI sets reporting standards used by 78% of companies in the Dow Jones Industrial Average and 75% of NASDAQ 250 companies, and the GRI country-by-country reporting standard should inform your deliberations.
GRI developed this standard in consultation with multinational corporations, accounting firms, academics, and other stakeholders in addition to investors. Broadly speaking, aligning the various country-by-country standards would ease recordkeeping burdens for businesses and present a clearer picture to users of these reports."
Further supportive comments for incorporating the GRI Tax Standard into the OECD policy included: Oxfam, Public Services International, Unison, Action Aid, European Network on Debt & Development (Eurodad), American Sustainable Business Council, Canadian Labour Congress, Australian Centre for Corporate Responsibility, Tax Justice Network, and Financial Accountability & Corporate Transparency (FACT) Coalition.
"With increasing evidence of significant corporate tax avoidance across the world, it is essential all stakeholders have access to information on the taxes paid by businesses in the locations where they operate," said Tim Mohin, GRI Chief Executive. "These lost payments should be used to advance sustainability and public wellbeing in the societies where the taxes were due. Since GRI launched the first tax transparency standard in December, investors, civil society groups and many others have signalled their support. Backing from high-profile US Senators and Members of Congress shows that the international consensus from policy makers continues to grow."
Rising global tax scrutiny highlights the case for change
Global standard for tax transparency introduced

redpajama_set_name: RedPajamaCommonCrawl


text:
SONTAAG - SONTAAG
Label: ESOTERIC ANTENN
Catalog no.: EANTCD0001031
In the grand tradition of high concept progressive rock comes an epic cross-media hybrid where cerebral science fiction meets visceral rock'n'roll. Sontaag's eponymous debut album has been described as the rock opera that Pink Floyd never wrote, a modern-day 'Tubular Bells', a prog-rock 'War Of The Worlds', but no reference point or sound-bite nails its seamless combination of space rock, narrative spoken word, and evocative ambience quite as neatly as sonic cinema. Recorded in New York City and London, co-produced and mixed by Youth for Big Life Management, 'Sontaag' is a stunning and immersive listening experience. An evolutionary progression combining cutting edge sounds with classic dynamics, adapting the rock experience for todays digital environment. Arriving in a landscape where music, books and movies often co-exist on a single handheld device, 'Sontaag' represents a seamless fusion of the finest elements of all three. Sontaag (the band) features Richard Sontaag (composition, instruments, concept, co-production), Ian Fortnam (story, lyrics, voice, concept) with Milo Venter (drums) and Amanda Cross (vocals). Become more Sontaag.
More on the ESOTERIC ANTENN label...
GILTRAP, GORDON -& OLIVER WAKEMAN- - RAVENS & LULLABIES
CD (Compact Disc) · ESOTERIC ANTENN · 04/03/2012 · in PSYCHEDELIC / PROGRESSIVE / FOLK
March 4th 2013 will see guitar legend Gordon Giltrap and keyboardist Oliver Wakeman (following his years of touring with the classic progressive rock band YES) release their debut collaborative album 'Ravens & Lullabies' by Esoteric Antenna. The album which features a ... read more »
FISH ON FRIDAY - QUIET LIFE
The 2017 full-length by the progressive outfit. Fish On Friday features bass virtuoso Nick Beggs (Mute Gods, Steven Wilson, Steve Hackett), Californian guitarist Marty Townsend, Belgian keyboard player-guitarist-vocalist and producer Frank Van Bogaert, keyboard player ... read more »
HAMMILL, PETER -& GARY LUCAS- - OTHER WORLD
LP (12"/10" Album) · ESOTERIC ANTENN · 03/02/2014 · in PSYCHEDELIC / PROGRESSIVE / FOLK
Esoteric Antenna are pleased to announce the release of the eagerly awaited new studio collaborative album by PETER HAMMILL & GARY LUCAS. Peter Hammills work, both as a solo artist and as part of Van Der Graaf Generator, is legendary, whilst Gary Lucas has worked ... read more »
LAKE, GREG - SONGS OF A LIFETIME
Esoteric Antenna are pleased to announce the release of the new GREG LAKE album, "SONGS OF A LIFETIME". As a founder member of KING CRIMSON and EMERSON, LAKE & PALMER, Greg has been a major creative force in music for over 40 years. In 2012 he embarked on a ... read more »
RUNDGREN, TODD - TODD RUNDGREN'S JOHNSON LIVE (+DVD)
CD (Compact Disc) · ESOTERIC ANTENN · 04/11/2013 · in POP / ROCK / WAVE / NOISE
The eagerly awaited live CD and DVD set by the legendary TODD RUNDGREN. 'Johnson Live' captures highlights of Todd's US tour that followed the release of his album of songs written by the legendary Blues musician Robert Johnson, 'Johnson', in 2010. The band here comprises ... read more »
VAN DER GRAAF GENERATOR - DO NOT DISTURB
The year 2016 sees the 13th release from the illustrious progressive trio VAN DER GRAAF GENERATOR. This time the band went for the old-school approach and kept practicing on and on before even pointing at the recording equipment. In general the music from VDGG is highly ... read more »


text:
10 "Get Smart" phones you can actually get
11 Photos Carolyn Duffy Marsan (Network World)
Once a joke, belt phones, pen phones and wristwatch phones are now a reality.
Max Smart had a headboard phone and a bedpost phone that he used in various episodes that showed his high-tech bedroom. We found a hands-free Bluetooth pillow for lying in bed and talking on the phone. Dubbed the perCusion, this device was shown at the 2007 CeBit show. It's supposed to be available for purchase in 2008.
Wallet phones have been available in Japan for four years. These mobile phones have built-in debit cards that allow users to pay for items with cash or conduct other transactions such as buying movie tickets and train passes. The latest versions also feature cameras, radios and MP3 players. As convenient as they are, wallet phones aren't expected to reach a critical mass until 2012.
Bulky phone pens are available today, such as Haier's P7 Pen Phone, and even smaller pen phones are on the horizon. One engineering feat -- a mobile phone pen only 8.7 inches long -- is still on the drawing boards.
A mobile phone/microscope combo is under development for use in telemedicine applications. The system would allow health workers in remote areas to capture microscope-quality images of diseases and transmit them to medical facilities for analysis. University students taking lab courses may find this prototype microscope add-on for their mobile phones handy.
A patent has been granted for a steering-wheel mounted mobile phone that operates similar to the one in Get Smart: The device that looks safer is a mobile phone holder for your seatbelt. With either gee-whiz device, it'll be a challenge for drivers to keep their eyes on the road.
Several companies offer wristwatch mobile phones for men and women, including CECT; iCell; and IMobile. Available in waterproof, sports and office models, they cost between US$150 and $200. Very cool!
This device is retro and modern at the same time. It's a pocket watch with a computer inside that lets you check your voice mail, e-mail and text messages. What's missing from the one Max Smart used in the 1960s era TV show? A full-featured phone.
Agent 86 used a phone hidden in his car cigarette lighter in the episode, "Our Man in Toyland." You can buy a Bluetooth hands-free that plugs into the car cigarette lighter for around US$70. And it's commonplace to recharge your mobile phone with your car's cigarette lighter. Who says life doesn't imitate TV?
One of the running gags in the hit '60s TV show Get Smart was the crazy telephones used by Maxwell Smart, aka Agent 86. Tucked inside ties, combs, eyeglasses, ice cream cones and, of course, shoes, phones were always ringing at the most inconvenient times for the bumbling spy. With the upcoming release of the movie version of Get Smart, we decided to see how many of these once-futuristic phones are available.
Max Smart's shoe phone is infamous. To see how popular it is, just look at the contest YouTube is running for people to submit their funniest shoe-phone videos. While real shoe phones are unrealistic, there is a high-heeled novelty shoe phone that you can buy today in one of five colors -- perfect for any outfit. You can also get a sneaker phone for a more casual look.
In an episode of Get Smart entitled "Satan Place," Agent 86 uses several hidden phones in one scene, including a belt phone. Last year, NEC unveiled a leather belt with a built-in mobile phone at the Wireless Japan 2007 Expo. Only thing odder looking than using this gadget would be lending it to someone else.
NSW launches whole-of-government identity recovery service
Inaugural ARN 30 Under 30 Tech Awards presented at Emerging Leaders 2019
Synnex sizes up TaaS potential for channel partners
Female leaders come together for WIICTA Alumnae in Sydney


text:
PER 1 NOVEMBER WLP@HETNET.NL
IJELP ISSUES
Volume 13: 2017 Edition
The Courts and Education Law: What Role Should Judges Play?; Charles J. Russo
A staggering pitch: The European Framework Law for Higher Education and Research; Peter Kwikkers
Can the American Catholic Experience be a Model for Muslim Integration in the West?; Charles L. Glenn
K12 Catholic Schools in the Democratic Republic of Congo: Enrollment Trends, Achievements, and Challenges; Quentin Wodon
Benefits from Secondary Education, Public-Private Partnerships, and Implications for Catholic Schools: A Case Study for Uganda; Quentin Wodon
Democracy and sovereignty vs international human rights: reconciling the irreconcilable? ; Michael P. Donnelly
A new initiative to foster good governance, human dignity and effective policies in education!
Agenda item no. 1: Equal opportunities for all to access and complete quality education
Agenda item no. 2. Curricula fostering individual growth and innovation
Agenda item no. 3 - Fair assessment of learning outcomes
Agenda item no. 6. Safety and respectful behaviour in education
Home Education: What About Fundamental Rights ?; Jan De Groof
THE 2017 IJELP
IJELP
The International Journal for Education Law and Policy provides a critical review of contemporary developments in education law. It combines analysis, commentary and documentation on national education legislation and European and international developments in education. The Journal gives high priority to articles, which provide a comparative perspective and offer a link between law and policy issues. Apart from scholarly articles reviewing the implementation of and new developments in educational legislation at the national, regional, European, and international levels, IJELP features special thematic reports and contains special country reports.
The articles are subject to peer review by independent referees. Published on behalf of the European Association for Education Law and Policy, in cooperation with US-ELA, SAELPA (South African Education Law and Policy Association), LEAGUE OF EDUCATION LAW (Russian Federation), ANZELA (Australia and New Zealand Education Law Association), CAPSLE (Canadian Association of the Practical Study of Law in Education), with the support of UNESCO and supra-national and international
For more information please contact us at: info@ijelp.org
© 2020 - 2023 ijelp


On behalf of Emert Law Firm, LLC posted in trusts on Monday, November 5, 2018.
Many estate owners in Georgia want to be able to support the education of children, grandchildren or future generations with their assets. When preparing for the future, there are a few different ways to include educational bequests as part of an estate plan. Trusts can provide different flexible options as well as the opportunity to create certain conditions for beneficiaries to access the funds.
One popular kind of trust is called a pot trust. It has this name because it consists of one "pot" of funds, and each of a group of beneficiaries can request money from it. This can be a simple, effective option, but creators may want to place terms and conditions in order to ensure that each beneficiary has enough money to support their education. Many trusts allow for unequal distributions among beneficiaries. At one level, this can be positive; both students who choose more and less expensive universities can be accommodated. However, people may want to avoid a situation in which younger grandchildren receive no funds or only minimal bequests because older beneficiaries have already depleted the funds.
Another option is to create a separate trust for each beneficiary. Each trust could receive equal sums of money. While this option can do more to preserve equality, it allows less flexibility with regard to the price of the educational options chosen by each beneficiary. If a trust doesn't seem quite right, one could use their estate plan to fund a 529 plan. This is an account with provisions that allow for changes to the educational system over time.
When thinking about how to benefit future generations, there are multiple options available to achieve a person's desired goals. An estate planning attorney can help clients draft key documents and develop individual solutions that benefit their families.


text:
North Caucasus: History of violence
A look at the troubled history of the mountainous republics in Russia's south.
Policemen at the scene of a bombing in Nazran, Ingushetia [AFP]
The North Caucasus, the mountainous regions which lie in the southwest of the Russian Federation, have long been troubled by violence fuelled by poverty, ethnic and religious tensions, corruption and two wars that ravaged Chechnya in the 1990s.
The region, which lies in between the Black and Caspian seas, comprises a number of republics including Chechnya, Dagestan, Ingushetia, North Ossetia, Kabardino-Balkariya, Karachayevo-Cherkessiya and Adygeya.
The area was largely annexed by Russia in the 1800s following the Caucasian war, in which Russian forces fought against a number of tribal groups, many of them Muslim.
In 1944, Joseph Stalin, the Soviet leader, accused the Chechens and their Ingush neighbours of siding with Nazi Germany during World War II - despite thousands of them fighting with the Red Army - and deported half a million of them to Siberia and Central Asia.
Many died as a result of the deportations, and survivors were not allowed back until 1956.
Chechen wars
Since the 1990s, Chechnya has been the epicentre of violence in the region, after it made a bid for independence that resulted in two bloody wars.
Tens of thousands of people died in the conflict between separatists and Russian forces, which has now deteriorated into small-scale skirmishes and hit-and-run attacks on police and government officials.
Chechnya's battle for independence
There is also concern over human rights abuses and the safety of journalists and aid workers - with a number of charity workers being kidnapped and killed in recent months.
Memorial and other human rights organisations have suspended their operations in the region as a result of the attacks.
Ramzan Kadyrov, the Chechen leader, has faced accusations of being involved in violence against human rights workers, a charge which he strongly denies.
But security analysts say improved security in Chechnya has pushed violence into neighbouring Ingushetia and Dagestan, where bombings and shootouts have become more frequent.
Ingushetia violence
Ingushetia, which shares cultural, family and religious ties with Chechnya, is a poor, mainly Muslim republic of 400,000 people, that suffered bomb attacks and murders in 2008 as federal forces and rebel fighters fought for control.
Towards the end of 2008, Dmitry Medvedev, Russia's president, appointed Yunus-Bek Yevkurov, a former paratrooper, as head of the region, replacing his unpopular predecessor, Murat Zyazikov.
Yekurov has so far been unable to control the growth of violence, and was seriously injured in a suicide bombing in June 2009.
In recent months, Ingushetia has been the region worst hit by the upturn in violence.
In August, a suspected suicide bomber blew up a police headquarters in Nazran, the capital, killing at least 20 people and injuring scores of others.
Locals say fighting in Ingushetia has been fuelled by a mix of desperate poverty, Islamic radicalism and heavy handed actions by the local security services.
Russian and Ingush officials say publicly that corruption is at shocking levels.
Dagestani attacks
In Dagestan, which lies to the east of Chechnya and Ingushetia, fighting between rebel fighters and Russian forces has also resulted in bloodshed.
Dagestan, regarded as Russia's most ethnically diverse republic, is increasingly gripped by bombings and almost daily clashes among police, rebels and criminal gangs.
In August 2009, seven prostitutes were shot dead by fighters in a bath house, and four policemen were killed by separatists at a nearby checkpoint.
Other regions in the North Caucasus have largely been spared the larger-scale violence seen in other territories, but still suffer from poverty, corruption and ethnic tensions.
North Ossetia, which shares a border with Ingushetia, suffered a spill-over of violence in September 2004, when a band of Chechen-led fighters seized a school in the city of Beslan, killing at least 330 people, half of them children.
In Kabardino-Balkariya, resentment over poverty and police tactics towards unsanctioned worship by young Muslims led to dozens of men attacking government offices in 2005.
About 139 people were killed in the attacks.
In August 2009, Medvedev said that the increasing violence and the recent murders of human rights activists working in the North Caucasus were "political" and aimed at destabilising the region.
The president said unspecified armed groups in the region were receiving support from "foreign sources" that he did not name.


TWO ORIGINAL ALBUMS ON ONE CD.
TRACK LISTING: Maybe / The Plea / Come My Little Baby / Congratulations / Prayee / He's Gone / I Love You So / Every Night (I Pray) / Whoever You Are / How Could You Call It Off? / Sure Of Love If You Try / I Can't Take It (There's Our Song Again) / Never Let Go / Believe Me My Angel / C'est Si Bon / Ific / My Darlin' / I'm The Girl / I / My Memories Of You / I'll Walk Alone / I'm Confessin' (That I Love You) / Goodbye To Love.


text:
Q: CSS Tooltip Positioning / Chrome vs IE 11 I've added a custom weather web part to my SharePoint page, but I want a hover message that displays additional info.
The pieces I've got worked out look great in Chrome, but not so great in IE 11. I need this to look the same in both - any tips?
    .tooltip {
        display:inline;
        position: relative;
        font-family:Arial,Helvetica,sans-serif;
        font-size:9pt;
    }
    .tooltip:hover:after {
        background: #333;
        background: rgba(0,0,0,.8);
        border-radius: 5px;
        top: 6px;
        color: #fff;
        content: attr(title);
        left: 5px;
        padding: 5px 15px;
        position: absolute;
        z-index: 98;
        width: 220px;
        /*width: auto;*/
    }
    .tooltip:hover:before {
        border: solid;
        border-color: #333 transparent;
        border-width: 0 6px 6px 6px;
        top: 40px;
        content: "";
        left: 25px;
        position: absolute;
        z-index: 99;
    }

Here's my JSFiddle: http://jsfiddle.net/hcoa82wb/

A: The problem was the .tooltip tag using the display: inline When this is changed to display: inline-block both IE and Chrome began to show the messed up version of the tool-tip. From there it was just a matter of changing the top properties to display how you would want it. Here is your JS Fiddle updated. I left comments in the CSS code.
On the same note I would recommend using a different Class name other than .tooltip I would hate for you to run into issues in the future if someone adds a WebPart or a 3rd party SharePoint plug-in that uses the same class name. I've had issues with that in the past.

redpajama_set_name: RedPajamaStackExchange


Awards online are a UK based manufacturer of corporate award trophies. We pride ourselves on providing individually tailored designs to meet and reflect each client's identity, needs and budget. From one-off specialist commissions to high volume production for National and International large scale events and award programmes, Awards Online provides clients with trophies to be proud of.
Crystal Gift Award specializing in crystal trophies awards, Crystal Trophy, corporate awards, plaques and crystal gifts. We also offer crystal gift, glass trophies and custom awards.


I just knew the trees were so big they were challenging my sense of my proportion on earth. Even the sky had raised itself further away. I wondered if being among the Giant Sequoia was what it was like for a mouse in a normal sized forest. Walking in and around the gnarled openings of the tree trunks, I almost expected to find a wizard in a tall, pointed hat, leaning against a crevice, waiting for me just beyond the next curve of the trunk.
I walked the trails for a little over three hours. Off season, with just me and the trees and a fox and some deer, the Mariposa Grove was breathtaking. Even the snow and an overly inquisitive deer couldn't hurry me away. Toward the end of my walk amongst so many huge trees, our proportions started to seem normal.
It was Halloween and later that night as I supped on creamy pumpkin soup served in a hollowed out pumpkin, the radio played "Bewitched, Bothered and Bewildered." It was a fitting end to a magical day.
Click HERE for information and photos of the GIANT SEQUOIAS.


text:
Avengers Fans Beat Up Man For Screaming Out Spoilers to the Movie
Share on Facebook Share on Twitter Google+ Pinterest LinkedIn Tumblr Email
The Marvel's Avengers franchise has become the behemoth of the box office. These superhero movies have always had a particular fan base, but they would rarely become the lead at the box office. Now, the superhero genre is some of the highest grossing films in history, and it doesn't look like they will be slowing down anytime soon.
Avengers Endgame released on April 26 to audiences worldwide applauding the ending of a ten plus year saga. As always, there have been reports of people trying to spoil the movies for others.
Typically, social media would be littered with spoilers, but it's rare to hear that someone did it in person. According to Asia One, a Hong Kong man was assaulted by moviegoers outside the theatre after he reportedly ran out to a crowd of eager fans waiting to see the film only to spurt out major spoilers.
The man suffered a beatdown from diehard fans. The Asian outlet had already verified the authenticity of the story. Some people on social media claimed to have witnessed the event in person as well.
Anthony and Joe Russo, the directors for the film, pleaded with people in a letter not to spoil the major plot points of the film.
"Because so many of you have invested your time, your hearts, and your souls into these stories, we're once again asking for your help," the letter reads in part. "When you see Endgame in the coming weeks, please don't spoil it for others, the same way you wouldn't want it spoiled for you. Remember, Thanos still demands your silence."
Disney, who owns Marvel Studios, launched a social media campaign called #DontSpoilTheEndgame in the hopes of keeping the film's secrets a surprise until everyone has had a chance to see it.
Russo added: "This is a culture that wants everything now, and it's getting worse. The world is connected via social media, and information travels within seconds. If you've been following along with this narrative for 10 years, you're going to want to protect yourself. It's best to go in clean. I encourage people to go opening weekend because I'm sure everything is going to hit the Internet the moment the movie hits the screen."
Privacy Policy | Editorial Board | Contact Us
© Tribunist.com


Reconnective Healing is a new level of healing that brings about a return to optimal state of balance on all levels: physical, emotional, mental and spiritual.
Reconnective Healing connects us to the frequencies of the Quantum field that consists of energy, light and information.
Energy: is everything that we are made up of, our very essence & our physical body.
Light: is the resonance and communication within these frequencies between the quantum field of the universe and us.
Information: comes through the interaction with the energy and the light.
Reconnective Healing is not meant to diagnose or treat and it does not focus on symptoms. Rather, the practitioner acts as a facilitator who simply interacts with the spectrum of healing frequencies, which have unlimited intelligence, to bring about healings that are in the best interest of the individual. The intention of Reconnective Healing is to assist the individual to move from fear, lack & limitations to love, abundance, love, light, oneness and more.
What to expect in a session: After a short initial discussion, you will be asked to lie on a massage table, fully clothed, for approximately 30 minutes. The idea is to be relaxed and aware of the experience and just notice how you are feeling. The practitioner works without touching you (i.e., the hands are off the body). Once the session is completed, you will have 10-15 minutes to discuss your experience.
Reconnective Healing sessions are typically take 45-60 minutes. One to three sessions are recommended.
An individual may decide to have additional sessions over time, as needed.
Dr. Silvia Vidas, Reconnective Healing & anyone associated with this work, inclusive of, but not limited to The Reconnection® and/or Reconnective Healing®, make no claims, promises or guarantees and do not provide, medical advice, diagnosis, treatment or cure for any medical condition, disease or illness. You are solely responsible for your health and wellbeing. Reconnective Healing is not intended to replace or be a substitute for medical advice of physicians. Please do not change or discontinue any medical treatment or any medication without first seeking the advice of your primary health care provider.


China Jerseys sores - 魅力運動 - 頭文字F 動感地帶 - Powered by Discuz!
According to the World Health Organization (WHO) over 347 million people worldwide have diabetes. WHO projects that diabetes will be the seventh leading cause of death in 2030.As such, it is necessary for everyone to take precautionary measures to delay the onset of diabetes and for those who have already being diagnosed with the illness, prevent the onset of complications.Diabetes can reduce the flow of blood to your feet, depriving them of oxygen and nutrients. This makes it more difficult for blisters, sores, and cuts to heal. The diabetic nerve damage called peripheral neuropathy can cause numbness in your feet. When you can't feel cuts and blisters, you're more likely to get ulcers and infections.Diabetic peripheral neuropathy can also cause sharp pain in your feet. You may become excruciatingly sensitive to the lightest touch, like the sheets on your bed. Fortunately,Wholesale NFL Jerseys Online, patient education goes a long way in preventing foot problems from diabetes.The Diabetic Foot Centre is under the umbrella of the Georgetown Public Hospital Corporation and is currently headed by Dr. Kumar Sukhraj, who has received specialized training in wound care from the University of Toronto (Canada). Trained wound care nurses are also part of the team at the centre.An inter-professional approach is used for the management of patients who visit the centre. The team at the centre believes that caring for your feet is pertinent. Some ways in which persons can care for their feet include:1. Keeping your blood sugar in your target range as much as possible, to prevent infection, speed healing and prevent further damage to blood vessels and nerves.2. Wash your feet with mild soap and warm water daily. Dry the areas between toes and around nail beds to prevent fungal infections like athlete's foot.3. Inspect your feet carefully every day and check between the toes. Use a mirror if needed to detect any problems such as cuts, blisters,Authentic NFL Jerseys Wholesale, red spots, or swelling.4. Cut toenails straight across and not too short. You should be able to see a small rim of white nail beyond the pink nail bed. Have a trained professional trim your nails if you cannot do it yourself. To avoid ingrown toenails and to avoid cutting your toes.5. Be more active and do activities like walking. Wiggle your toes and rotate your ankles for a few minutes several times a day to help blood flow to your feet.6. Apply lotion to the tops and bottoms of feet daily. Do not apply lotion between the toes (you may apply powder between the toes if desired) to prevent skin from cracking. Try lotions like Uremol,Kurt Warner Cardinals Jersey, Neutrogena, Lubriderm, or Keri. Moisture between the toes can cause fungal infections like athlete's foot.7. Wear socks with loose fitting elastic. Avoid knee-high stockings. Change socks often if your feet sweat a lot. Tight elastics cut off circulation. To prevent fungal infections by keeping the area dry.8. Check the insides of shoes daily before putting them on. Use your hand to check for cracks, sharp edges, and loose objects. Any objects or rough edge in your shoe can cause blisters or breaks in the skin.9. Shop for shoes late in the day, when your feet are most swollen, and make sure they fit well. To avoid injuries like corns and blisters. Take off both of your shoes at every doctor's visit your doctor or nurse should check both of your feet.10. Contact your health care provider immediately when you find a problem like broken skin. Most foot problems are much easier to treat when they are treated right away.Whether you are diabetic or not, the type of shoes worn could help to determine your foot health. Therefore, persons should shop shoes that are their correct fit since a slack pair of shoes could cause abrasions while a tight pair could squeeze the feet.The following are simple tips one should consider when buying a pair of shoes:1. Have feet measured periodically,Wholesale Jerseys, because feet change over time.2. Shop later in the day, because feet swell throughout the day, especially if you have heart disease and kidney problems.3. Have shoes fitted with the socks you'll be wearing with those specific shoes. That way you'll know they will fit properly.4. The distance between your longest toe and the tip of the shoe should be ½ of your thumb's width, so you have the right amount of space to fit your feet.When you buy a new pair of shoes, break them in before wearing them for a long period of time. Wear them for one to two hours, and then check your feet for any cuts or blisters. Wear them three to four hours the next day, and so on, until they feel comfortableImportant shoe features persons with diabetes need to consider:1. Shoes should be made of soft leather, because they can stretch.2. Choose a cushioned sole over a thin, leather sole,Wholesale Soccer Jerseys, because the shock absorption is better.3. The back of the shoe should not collapse to one side or the other,Cheap NFL Jerseys, because it won't provide good support.4. Choose laced shoes over loafers, so they fit better and provide better support.
GMT+8, 2019-4-19 02:14, Processed in 0.050221 second(s), 6 queries.


Denmark has a strong position within development and manufacturing of wind turbines and other renewable energy solutions. Since 1980 BJ-Gear A/S has worked closely with companies within the Energy Sector based on the ability to make simple, sturdy and innovative solutions to complex tasks. We have delivered products for wind energy plants, power plants, oil, gas, heat, wave, hydro power etc. We also supply to a variety of companies providing production and handling equipment to the wind industry.
We have extensive knowledge of materials, key technologies and surface techniques which have great importance for achieving the best result. We can also ensure the shortest possible path from development to the finished product through a quick delivery of prototypes.
Our know-how combined with a flexible product range of standard solutions, adapted solutions and special solutions are the major criterias for the Energy Sector to choose us as a partner.
Innovative engineering based a.o. on 3D CAD, FEA and FMEA.
Considerable knowledge of materials and general knowledge of key technologies.
Wide standard range of gears, actuators, motors, brakes, encoders, couplings etc. for quick delivery.
High competence in product adaptation and development of special products, even in smaller numbers.
Product focus: High quality, compact design, low weight in relation to performance, low noise, reliable technology etc.
High degree of process control during manufacturing of components and products.


Statistics have shown that their are approximately 14 marijuana users and 6 people abusing prescription drugs that live in Hoople, North Dakota.
If realizing that you need aid with a problem with substance abuse you have made the first and hardest step on your path to sobriety, however the next step of looking for that help will be a difficult task if you do not know where to look. This page contains a list of public, private, non-profit, and Christian drug rehabilitation centers and intervention specialists near Hoople, North Dakota.
Hoople is located in Walsh County and contains the following zip codes: 58243.


I read some interesting articles at times, and some not so interesting.
But then I come across some that just make me scratch my head. As such was an article I read where it was saying that "Giant Companies" are starting to use the strategy of a "dedicated" agency, to cut costs and become more efficient. Now I agree that consolidation is the answer to cost cutting measures (in most cases) but efficiency? I can see on paper where it seems more efficient, but to what end? Here is my problem with this model: you fire your dedicated agency after a year or two, then bring them back on a few years after that, and so and so forth. CMO's listen up! You should have more than one type of marketing firm in your corner, almost every situation requires this! More importantly are you taking advantage of your agency beyond the on it's face marketing expertise? Are you having your agency full engaged in the sales strategy and how best to derive consumer driven creative from this type of planning? The bottom line is that "giant companies" aren't doing enough work to seek out and find the right type of agencies, or right number.


text:
Seattle Children's Brings Cancer Immunotherapy to a Global Stage
October 5, 2018 | Cancer and Blood Disorders, Patient Stories, Philanthropy, Research
Author: Jean Enersen	1 Comment
Avery Berg, 13, was diagnosed with a rare brain tumor at the age of 10. She endured six weeks of radiation, five brain surgeries, and six months of high-dose chemotherapy. Avery has been cancer-free for more than a year, but her mom Kristie says that cancer immunotherapy offers hope that other children can become cancer-free without having to endure such harsh therapies.
T-cell immunotherapy continues to take center stage as one of the most promising new cancer therapies of our time. What once sounded like a dream – reprogramming a person's own immune system to fight cancer – is remarkably becoming a reality. What's more; doctors and researchers in our own backyard are leading the way in developing this therapy for children and young adults around the world.
From covering the opening of the first T-cell immunotherapy trial when I was an anchor at KING 5 TV, to now seeing this therapy being tested in seven open clinical trials at Seattle Children's and applied to a variety of cancers, I've been amazed to watch the enormous strides researchers have made in the field over a few short years.
The results also speak for themselves – 93% of patients with relapsed or refractory acute lymphoblastic leukemia in Seattle Children's phase 1 PLAT-02 trial achieved complete initial remission. About 50% were still in remission one year after therapy. Some patients, who were otherwise unlikely to survive with traditional therapies, are still in remission nearly five years after receiving the experimental treatment. This is encouraging news, especially since leukemias are the most common childhood cancers.
And on Oct. 12, I will witness yet another major milestone – Seattle Children's will bring their groundbreaking therapies to a global stage.
Seattle Children's will convene in London with several other children's hospitals from around the world to share and discuss the latest innovations in pediatric health, including the promise of cancer immunotherapy, with the aim of further moving the needle on the latest advancements.
But no one has more hope for this therapy than the children and teens who may one day rely on it, or those who understand the harsh reality of current treatments; children like Avery Berg.
Avery during her cancer treatment.
Avery, now 13, was diagnosed with a rare brain tumor at the age of 10. Avery endured six weeks of cranial and spinal radiation, five brain surgeries, and six months of high-dose chemotherapy. Her mother, Kristie, spent more than 100 nights in Seattle Children's by her bedside. Avery has thankfully been cancer-free for more than a year, but her mom Kristie says the treatment her daughter went through was very difficult and left her with lifelong side effects.
In fact, three out of five cancer survivors who receive traditional chemotherapy and radiation develop serious late side effects, which include secondary cancers, infertility, heart failure and kidney issues.
In the past few months, Seattle Children's has opened two new T-cell immunotherapy trials, BrainChild-01 and STRIvE-01, which target solid tumors of the brain and spine, as well as non-central nervous system tumors like sarcomas, kidney tumors and neuroblastoma.
Kristie says that immunotherapy offers hope that children can become cancer-free without having to endure such toxic, harsh therapies.
And Kristie is not alone. She is one of more than 10,270 parents in the U.S. who will get the crushing news "your child has cancer" this year. Cancer remains the leading cause of death from disease among children, and about 1,190 children are expected to die from the disease this year.
Funding is essential to continue to accelerate pediatric cancer research and clinical trials in areas like immunotherapy. Despite this, pediatric cancers receive less than 4% of the National Cancer Institute budget.
For that reason, Seattle Children's relies greatly on a generous community of donors who support their quest to improve cancer treatment for children worldwide, many of which have joined the national philanthropic initiative called Strong Against Cancer aimed at advancing immunotherapy and cancer research.
This type of support is key in making it possible for Seattle Children's to now have the largest pipeline of T-cell immunotherapy trials open for children and young adults. It's also why Seattle Children's was able to recently enroll its 200th immunotherapy patient. It's the fuel that ensures these advancements can move forward.
As Seattle Children's continues to utilize immunotherapy to tackle a variety of cancers, we get closer to treatment that takes weeks instead of years. We get closer to a treatment with minimal side effects, and most importantly, we get closer to a cure. Please join us in accelerating our ability to provide hope to every child with cancer.
Jean Enersen, an anchor at KING 5 TV for more than 40 years, serves on the board of Seattle Children's Hospital and Research Foundation and is the co-chair of It Starts With Yes: The Campaign for Seattle Children's.


text:
Q: How to launch an Activity from a TextView? I have a TextView and i want to tap on it to launch an other activity. Is that posible?
I tried that (wrong) code, because i really did not find a solution:
TextView tv= (TextView)findViewById(R.id.souple);
        tv.setOnClickListener(new View.OnClickListener{
            public void onClick(View v){
                  Intent intent = new Intent(this, OtherActivity.class);
                  startActivity(intent);
            }
     });

ERROR: Syntax error on token(s), misplaced construct(s)
So any idea please?
Thank you very much.

A: You have to refer to your current activity through this in Intent constructor. You should change it to YourActivity.this to avoid ambiguation.

A: Inside the OnClickListener 'this' is the listener, not the Activity. So, you'll want to create a Context variable in the Activity class and set it to this, then use it in your listener.
Context c = this;

OnClickListener....{

   new Intent(c, OtherActivity.class)
}

A: Here we go, i've found finally a solution:
public class ServicesPlus extends Activity  {
    TextView t ;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.servicesplus);

        t = (TextView) findViewById(R.id.souple);

        t.setOnClickListener(new View.OnClickListener() {

                  public void onClick(View v) {
                      Toast.makeText(ServicesPlus.this, "Test", Toast.LENGTH_SHORT).show();
        }   });

}
}

A: You missed the paranthesis after View.OnClickListener


text:
Fifth Global Positioning System (GPS) IIF satellite from Boeing
The Boeing Company has completed the fifth of 12 Global Positioning System (GPS) IIF satellites the company is building for the U.S. Air Force. The spacecraft was built at the Satellite Development Center in El Segundo using the GPS IIF pulse-line manufacturing approach, which draws on commercial production line practices to build satellites faster and more efficiently.
Of the five completed GPS IIF satellites, two are on orbit as part of the current 31-satellite constellation; both satellites are meeting mission requirements. Three satellites are in storage on standby for launch by the Air Force. The remaining seven are in various stages of pulse-line production and will likely be added to the constellation over the next three to five years as determined by the Air Force to ensure robust constellation availability.
"Boeing, in close partnership with the U.S. Air Force, is focused on execution and mission assurance — we are committed to sustaining the GPS constellation with GPS IIF," said Craig Cooning, Boeing vice president and general manager of Space & Intelligence Systems. "The GPS IIF spacecraft feature more capability and improved mission performance for the warfighters and civilians who depend on this critical system."
The next GPS IIF launch is scheduled for the fourth quarter of 2012. The satellite will be launched aboard a United Launch Alliance Delta IV vehicle from Cape Canaveral Air Force Station, Fla.
GPS is a space-based, worldwide navigation system providing users with highly accurate, three-dimensional position, velocity and timing information 24 hours a day in all weather conditions. GPS IIF satellites provide enhanced capabilities, including a jam-resistant military signal, greater accuracy through improved atomic clock technology, and a protected, civilian L5 signal to aid commercial aviation and safety-of-life applications. Boeing also is the prime contractor for the GPS Operational Control Segment, which has supported an expanding set of GPS services and capabilities since 2007.
A unit of The Boeing Company, Boeing Defense, Space & Security is one of the world's largest defense, space and security businesses specializing in innovative and capabilities-driven customer solutions, and the world's largest and most versatile manufacturer of military aircraft. Headquartered in St. Louis, Boeing Defense, Space & Security is a $32 billion business with 61,000 employees worldwide.
Source/Author: Boeing
Kategorie Aerospace Tagi Boeing
Arotech will provide Boom Operator Simulator Systems
Thales will support ISTAR MSS for MoD


Celebrate the magic of winter and the beauty of the universe! We'll take a lantern hike through Huntington Reservation, create a craft to decorate your home, make a special treat for wildlife in your backyard, encounter live animals and visit Schuele Planetarium to learn about the solstice. Enjoy some hot cocoa near the cozy, crackling fire and be sure to bring your cameras – Santa will make an appearance in the Log Cabin!
Dinner is provided. For all ages. Fee: $15/adults; 10/children ages 2 and up; 1 year and under are free.
Advent Episcopal Church hosts Dan Schutte, a composer of songs we know and love; songs that have brought joy and comfort to our hearts such as "Be Not Afraid," "Here I Am, Lord" and many more. Join us for an evening of beautiful music, advent reflection, and fellowship. Bring your family and friends as we celebrate "God With Us." $10 per person. Call 440-871-6685 for tickets.


text:
Parafia Najświętszej Maryi Panny Wspomożycielki Wiernych w Rojewie – rzymskokatolicka parafia leżąca w granicach dekanatu gniewkowskiego. Erygowana w 1976 roku.

Dokumenty
Księgi metrykalne:
 ochrzczonych od 1976 roku
 małżeństw od 1976 roku
 zmarłych od 1976 roku

Linki zewnętrzne
 Informacje o parafii na stronie archidiecezji gnieźnieńskiej

Parafie pod wezwaniem Najświętszej Maryi Panny Wspomożycielki Wiernych
Parafie archidiecezji gnieźnieńskiej
Religia w gminie Rojewo
Rojewo (powiat inowrocławski)

redpajama_set_name: RedPajamaWikipedia


text:
Q: filtering form inputs I have a simple contact form with name, email, a select list, and textarea. In my mailer php script I'm trying to add a simple filter to prevent SQL injection or other forms of hacking.
For example, I'm using
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_SPECIAL_CHARS);

Is this good?

A: Firstly let me tell you that about 85% of protection methods are done with 2 functions.

*

*htmlspecialchars

*mysql_real_escape_string
Firstly if someone sends some data to your site such as $_POST['name'], and you wish to use this value back on html side such as
The following string: {$_POST['name']} is invalid
 then you should ALWAYS make sure that that value has been through htmlspecialchars, this will protect most of XSS Attempts
Next is injection, if the value of $_POST['name'] is going into your database just make sure that you use mysql_real_escape_string on that value.
that will give you 100% protection from sql injection, but all that means is your db cannot run commands from the user, that dont mean that the text is what it should be.
The functions that you should always use before inserting data into your database are

*

*empty() or isset()

*trim()

*strlen()

*preg_match()

*filter_var and filter_input
This is called Validation and is only needed for yout to make sure the data the user is submitting is what you want such as filter_var would be used to validate that the email they entered is an email and not just some blah blah
What i usually tent do do is to run a clean function to make sure that all imputed data is clean with htmlspecialchars
example:
function clean($array)
{
    foreach($array as $key => $val)
    {
        if(is_array($val))
        {
            $array[$key] = clean($val); //Recursive
        }else
        {
            $array[$key] = htmlspecialchars($val, ENT_QUOTES);
        }
    }
    return $array;
}

Then do the following to make sure that your safe from XSS:
$_GET = clean($_GET);
$_POST = clean($_POST);

So if someone tried to submit Test then the value would be converted to <a href='test'>Test</a&gt

A: To test the effectiveness, try attacking your own site with SQL injection attacks. Basically, try passing strings like ' || 1=1 and see if you get an error. If you get an error, or if you get an unexpected result, your site is open to attacks. Otherwise, it is probably working; but to be sure, make sure you do lots of testing.

A: The better option is to use the mysqli extensions and prepared statements. However, there does exist the mysql_real_escape_string() function which specifically "escapes special characters in a string for use in an SQL statement".

A: FILTER_SANITIZE_SPECIAL_CHARS does HTML-escape '"<>& and characters with ASCII value less than 32. To have an full equivalent for htmlspecialchars(), use FILTER_SANITIZE_FULL_SPECIAL_CHARS which is equivalent to calling htmlspecialchars() with ENT_QUOTES set. Using this function should make the use of mysql_real_escape_string() obsolete, but safety first :)
see also: http://php.net/manual/en/filter.filters.sanitize.php for more information.


text:
Q: Swift blank app I want to learn SpriteKit and am following this tutorial, https://www.raywenderlich.com/187645/spritekit-tutorial-for-beginners-2
I have copied and pasted the same code from the tutorial into GameScene.swift as well as moved the picture of the ninja into Assets.xcassets
However, when I get two errors,
Before I run it I get

Forced cast of SkView to same type has no effect

After I run it I also get

Thread 1: EXC_BAD_ACCESS(code=2, address=0x7ffeed594fa8

When I run it, the app is simply blank... The app should show FPS count and NodeCount?
Here's my code:
import SpriteKit
import GameplayKit

class GameScene: SKScene {

    override func didMove(to view: SKView) {
        let scene = GameScene(size: view.bounds.size)
        let skView = view as! SKView
        skView.showsFPS = true
        skView.showsNodeCount = true
        skView.ignoresSiblingOrder = true
        scene.scaleMode = .resizeFill
        skView.presentScene(scene)
    }

    override func update(_ currentTime: TimeInterval) {
        // Called before each frame is rendered
    }
}

All of this code is in GameScene.swift
If someone could please help me that would be great!
UPDATE: I am using Swift 4

A: It seems you have an infinite recursion there. Note that you already have a GameScene instance but in the didMove you are creating another GameScene which you are presenting again which again is presented in the view and didMove is called again and so on. I think your code should look something like this:
override func didMove(to view: SKView) {
   self.size = view.bounds.size
   view.showsFPS = true
   view.showsNodeCount = true
   view.ignoresSiblingOrder = true
   self.scaleMode = .resizeFill
}


text:
LOLEATTA HOLLOWAY; Loleatta/Cry To Me (Kent)
Chicago's Loleatta Holloway is best known as a disco diva, fronting glitter ball faves like 'Love Sensation', 'Hit And Run' and 'Dreamin'' – most recorded with the Salsoul Orchestra. Oddly, maybe, Holloway's biggest hits were somewhat anonymous – in as much as on 'Good Vibrations' her sampled vocal was credited as part of Marky Mark's Funky Bunch while on the first incarnation of Black Box's 'Ride On Time' once again it was another matter of sampling – this time, without her and her label's permission, leading to litigation and a re-recording of the song.
Proper soul collectors will tell you that there was much more to Loleatta Holloway than the zipping disco workouts would suggest. They'll tell you that she began singing in the gospel churches of her native Chicago before moving into musical theatre. An encounter with Chicago record producer, Floyd Smith led to a short-lived deal with Apache Records. Then in '72, Smith (by now married to Loleatta) scored her a deal with Atlanta's Aware/GRC label run by a shadowy music entrepreneur, Michael Thevis. At Aware/GRC Loleatta enjoyed a couple of moderate local hits, on the back of which she cut two long players and both those albums have now been brought together on one CD by Ace's Kent imprint and 1973's 'Loleatta' and '75's 'Cry To Me' indeed prove that there was a whole lot more to Ms H than disco dalliances.
The eponymous Aware debut was produced by Floyd Smith and arranged by Detroit stalwart Mike Terry and it's a solid 70s soul set, mixing new tunes with well-chosen covers like the Motown chestnut 'Love Woke Me Up This Morning' and Tyrone Davis' 'Can I Change My Mind'. There are a couple of Sam Dees songs too… 'Mother Of Shame' (which owes a lot to 'Love Child') and the tortured ballad 'So Can I'.
The 'Cry To Me' album was named for another Sam Dees song which when released as a single reached the US R&B top 10. Easy to hear why; with a smouldering opening monologue it marries the uptown qualities of Loleatta's native Chicago with the passion of Atlanta and you're never in doubt that the singer served her apprenticeship in the church. Unsurprisingly the album features more Sam Dees songs including a wonderful version of 'The Show Must Go On'. Loleatta tips her hat to Chicago again with a cover of the Curtis Mayfield/Gene Chandler hit 'Just Be True'. Another highlight – a cover of Ruby Andrews' 'Casanova' made 'Cry To Me' an excellent album – destined for great things. Sadly, just as it was released Aware/GRC collapsed as owner Thevis was jailed for his mobster connections and a wonderful soul collection was left to languish!
Holloway then decamped to Salsoul/Gold Mind to ride the disco wave to the success she'd so long deserved. Sadly, she died in 2011 (Smith died in 1984) but hopefully this reissue (which also includes four non-album cuts, three previously unissued) will help to finally establish the "disco queen" into the proper soul pantheon!
(BB) 4/5


Our 2017/2018 classes are made up of incredibly creative individuals who are part of Berrigan Elementary School located in Barrhaven, Ontario, Canada. Barrhaven is a part of Ottawa, Canada's national capital.
Leave a comment by clicking here to say hello. We'd love to know where in the world you are.


text:
Diana Penty is sure of what she won't wear at her wedding
When it comes to choosing an outfit, comfort takes precedence for the sensitive, astute and calm Diana
Be it as a model walking the ramp for leading couturiers around the world or becoming an overnight sensation in her debut film, COCKTAIL fame, Diana Penty sure knows how to make heads turn. It's been a journey to remember for the actress, who's got some excellent films to her credit such as LUCKNOW CENTRAL, PARMANU: THE STORY OF POKHRAN and HAPPY PHIRR BHAG JAYEGI. Having donned the role of a bride countless times on the ramp in alluring wedding outfits, the actress donned the latest cover of Femina Brides Issue and it's safe to say that she looks absolutely drop-dead-gorgeous. In a cover story that revolved around the diva and all things bridal, Diana, at her charming best, spoke about playing a playing a runaway bride in the 2016 film 'Happy Bhaag Jayegi', her dream wedding destination, wedding ensemble, philanthropy and lessons learnt during the lockdown.
Speaking about what attracted her to the role of Harpreet "Happy" Kaur, Diana says, "She was so different; quite the opposite of my own personality. It was just so intriguing to play somebody who is so unabashed and is unfiltered whereas I am very measured. There was something about Happy and I thought 'I have to play this girl!'"
When it comes to choosing an outfit, comfort takes precedence for the sensitive, astute and calm Diana. The same holds true even for her bridal wear, for she always prefers to wear something that makes her feel at ease. Speaking about her dream wedding ensemble, she says, "Wedding outfits are absolutely stunning and gorgeous, but they're also so heavy. I've made a mental note to never wear something too heavy. It's definitely going to be something light, easy and comfortable. Comfort for me is everything because only then can I have a good time. I don't want to be tugging at my outfit and, by the end of it, feel my body hurt because of how heavy it is! I really don't want to be in that position!".
If her dress has to be simple, so must her dream wedding destination be a place filled with tranquillity. "I haven't really thought about it, but I generally love the mountains. They're just beautiful, calm, and therapeutic. It gives me a sense of peace. So, if I could just be surrounded by mountains with just a little nip in the air, I'd be happy.''
Diana will next be seen in the upcoming film Shiddat, which also features Mohit Raina, Radhika Madan and Sunny Kaushal.
happy phirr bhag jayegi
Parmanu: The Story Of Pokhran
Shiddat
Previous articleBumrah one of the best T20 bowlers, if not the best: Pattinson
Next article'A wrinkle In Time' director Ava DuVernay to create superhero series
Sidharth Malhotra and Diana Penty – Challon Ke Nishaan Song Lyrics
Glamsham Editorial - December 22, 2020 0
Check out the song lyrics of Challon Ke Nishaan ft. Sidharth Malhotra and Diana Penty
Amazon Prime Video unveils the first look of its upcoming medical drama Mumbai Diaries 26/11
Glamsham Editorial - November 26, 2020 0
On the 12th anniversary of the dreadful Mumbai terror attacks, Amazon Prime Video salutes the bravery of frontline heroes and unveils the first look of its upcoming Amazon Original Series Mumbai Diaries 26/11.
Tales of the siege: 26/11 Mumbai attacks scars continue to leave a mark on screen
Tales of the siege: It is 12 years since the 26/11 Mumbai attacks, and the tragic chapter in modern Indian history continues to linger...
Arbaaz Khan to play a 60-year-old man in 'Return Ticket'
Neeraj Shridhar: Low level music happens as we think we can...


become an alter boy but is denied. Mrs.McCourt explains why he is denied by saying " They don't want boys from lanes on the alter. Oh, no they want the nice boys with hair oil and new shoes that have fathers with suits and ties and steady jobs"(149). The McCourt family is constantly aware of the discrimination it faces because of the poverty they live in. I relate this to Realtion to the environment.


text:
Іфрита, також синьоголовка (Ifrita kowaldi) — вид городцеподібних птахів монотипової родини іфритових (Ifritidae), ендемік Нової Гвінеї. Один з кількох отруйних птахів Планети.

Етимологія
Родова назва походить від арабського іфрит — джин або дух. Видовий епітет походить від прізвища  (fl. 1890) — агента уряду й колекціонера на Британській Новій Гвінеї.

Опис
Невеликий комахоїдний птах, який досягає ваги приблизно 35 грамів, має довжину до 16–17 см і жовтувато-коричневе оперення з синьою і чорною верхньою частиною голови. Самець має білу смугу позаду очей, а самиця — тьмяно-жовту. Як і Pitohui dichrous має батрахотоксин (алкалоїди) на своїй шкірі та пір'ях, що викликає оніміння і поколювання в тих, хто торкається птаха. Токсин набувається з частиною їжі, зокрема, з жуками роду Choresine.

Поширення
Ендемік тропічних лісів Нової Гвінеї. Населяє гірський ліс, особливо моховий ліс; на висотах 1460–3680 м, переважно 2000—2900 м.

Поведінка
Птахи харчуються комахами, іноді — м'якими фруктами. Їжа розшукується як на деревах, так і на землі. По дереву рухається як повзик звичайний (Sitta europaea), використовуючи хвіст як опору. Ймовірно, веде відносно малорухливий спосіб життя. Гнізда з яйцями були помічені у вересні, гніздо з пташенятами в жовтні і листопаді, це означає що пора розмноження в птахів у середині сухого сезону і в кінці. Гніздо — велика товстостінна кулька моху та папороті, переплетена вусиками й тонкими корінцями.

Примітки

Джерела
 Boles, W. (2017). Blue-capped Ifrit (Ifrita kowaldi). In: del Hoyo, J., Elliott, A., Sargatal, J., Christie, D.A. & de Juana, E. (eds.). Handbook of the Birds of the World Alive. Lynx Edicions, Barcelona (retrieved on 13 November 2017).

Птахи Нової Гвінеї
Птахи, описані 1890
Горобцеподібні


text:
package org.apache.hadoop.hbase.regionserver.querymatcher;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.NavigableMap;
import java.util.NavigableSet;
import java.util.SortedMap;
import java.util.SortedSet;
import java.util.TreeMap;
import java.util.TreeSet;

import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellComparator;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.PrivateCellUtil;
import org.apache.hadoop.hbase.KeyValue.Type;
import org.apache.yetus.audience.InterfaceAudience;
import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher.MatchCode;

/**
 * A tracker both implementing ColumnTracker and DeleteTracker, used for mvcc-sensitive scanning.
 * We should make sure in one QueryMatcher the ColumnTracker and DeleteTracker is the same instance.
 */
@InterfaceAudience.Private
public class NewVersionBehaviorTracker implements ColumnTracker, DeleteTracker {

  private byte[] lastCqArray;
  private int lastCqLength;
  private int lastCqOffset;
  private long lastCqTs;
  private long lastCqMvcc;
  private byte lastCqType;
  private int columnIndex;
  private int countCurrentCol;

  protected int maxVersions;
  private int resultMaxVersions;
  private byte[][] columns;
  private int minVersions;
  private long oldestStamp;
  private CellComparator comparator;

  // These two maps have same structure.
  // Each node is a versions deletion (DeleteFamily or DeleteColumn). Key is the mvcc of the marker,
  // value is a data structure which contains infos we need that happens before this node's mvcc and
  // after the previous node's mvcc. The last node is a special node whose key is max_long that
  // saves infos after last deletion. See DeleteVersionsNode's comments for details.
  // The delColMap is constructed and used for each cq, and thedelFamMap is constructed when cq is
  // null and saving family-level delete markers. Each time the cq is changed, we should
  // reconstruct delColMap as a deep copy of delFamMap.
  protected NavigableMap<Long, DeleteVersionsNode> delColMap = new TreeMap<>();
  protected NavigableMap<Long, DeleteVersionsNode> delFamMap = new TreeMap<>();

  /**
   * Note maxVersion and minVersion must set according to cf's conf, not user's scan parameter.
   *
   * @param columns           columns specified user in query
   * @param comparartor       the cell comparator
   * @param minVersion        The minimum number of versions to keep(used when TTL is set).
   * @param maxVersion        The maximum number of versions in CF's conf
   * @param resultMaxVersions maximum versions to return per column, which may be different from
   *                          maxVersion
   * @param oldestUnexpiredTS the oldest timestamp we are interested in, based on TTL
   */
  public NewVersionBehaviorTracker(NavigableSet<byte[]> columns, CellComparator comparartor,
      int minVersion, int maxVersion, int resultMaxVersions, long oldestUnexpiredTS) {
    this.maxVersions = maxVersion;
    this.minVersions = minVersion;
    this.resultMaxVersions = resultMaxVersions;
    this.oldestStamp = oldestUnexpiredTS;
    if (columns != null && columns.size() > 0) {
      this.columns = new byte[columns.size()][];
      int i = 0;
      for (byte[] column : columns) {
        this.columns[i++] = column;
      }
    }
    this.comparator = comparartor;
    reset();
  }

  @Override
  public void beforeShipped() throws IOException {
    // Do nothing
  }

  /**
   * A data structure which contains infos we need that happens before this node's mvcc and
   * after the previous node's mvcc. A node means there is a version deletion at the mvcc and ts.
   */
  protected class DeleteVersionsNode {
    public long ts;
    public long mvcc;

    // <timestamp, set<mvcc>>
    // Key is ts of version deletes, value is its mvccs.
    // We may delete more than one time for a version.
    private Map<Long, SortedSet<Long>> deletesMap = new HashMap<>();

    // <mvcc, set<mvcc>>
    // Key is mvcc of version deletes, value is mvcc of visible puts before the delete effect.
    private NavigableMap<Long, SortedSet<Long>> mvccCountingMap = new TreeMap<>();

    protected DeleteVersionsNode(long ts, long mvcc) {
      this.ts = ts;
      this.mvcc = mvcc;
      mvccCountingMap.put(Long.MAX_VALUE, new TreeSet<Long>());
    }

    protected DeleteVersionsNode() {
      this(Long.MIN_VALUE, Long.MAX_VALUE);
    }

    public void addVersionDelete(Cell cell) {
      SortedSet<Long> set = deletesMap.get(cell.getTimestamp());
      if (set == null) {
        set = new TreeSet<>();
        deletesMap.put(cell.getTimestamp(), set);
      }
      set.add(cell.getSequenceId());
      // The init set should be the puts whose mvcc is smaller than this Delete. Because
      // there may be some Puts masked by them. The Puts whose mvcc is larger than this Delete can
      // not be copied to this node because we may delete one version and the oldest put may not be
      // masked.
      SortedSet<Long> nextValue = mvccCountingMap.ceilingEntry(cell.getSequenceId()).getValue();
      SortedSet<Long> thisValue = new TreeSet<>(nextValue.headSet(cell.getSequenceId()));
      mvccCountingMap.put(cell.getSequenceId(), thisValue);
    }

    protected DeleteVersionsNode getDeepCopy() {
      DeleteVersionsNode node = new DeleteVersionsNode(ts, mvcc);
      for (Map.Entry<Long, SortedSet<Long>> e : deletesMap.entrySet()) {
        node.deletesMap.put(e.getKey(), new TreeSet<>(e.getValue()));
      }
      for (Map.Entry<Long, SortedSet<Long>> e : mvccCountingMap.entrySet()) {
        node.mvccCountingMap.put(e.getKey(), new TreeSet<>(e.getValue()));
      }
      return node;
    }
  }

  /**
   * Reset the map if it is different with the last Cell.
   * Save the cq array/offset/length for next Cell.
   *
   * @return If this put has duplicate ts with last cell, return the mvcc of last cell.
   * Else return MAX_VALUE.
   */
  protected long prepare(Cell cell) {
    boolean matchCq =
        PrivateCellUtil.matchingQualifier(cell, lastCqArray, lastCqOffset, lastCqLength);
    if (!matchCq) {
      // The last cell is family-level delete and this is not, or the cq is changed,
      // we should construct delColMap as a deep copy of delFamMap.
      delColMap.clear();
      for (Map.Entry<Long, DeleteVersionsNode> e : delFamMap.entrySet()) {
        delColMap.put(e.getKey(), e.getValue().getDeepCopy());
      }
      countCurrentCol = 0;
    }
    if (matchCq && !PrivateCellUtil.isDelete(lastCqType) && lastCqType == cell.getTypeByte()
        && lastCqTs == cell.getTimestamp()) {
      // Put with duplicate timestamp, ignore.
      return lastCqMvcc;
    }
    lastCqArray = cell.getQualifierArray();
    lastCqOffset = cell.getQualifierOffset();
    lastCqLength = cell.getQualifierLength();
    lastCqTs = cell.getTimestamp();
    lastCqMvcc = cell.getSequenceId();
    lastCqType = cell.getTypeByte();
    return Long.MAX_VALUE;
  }

  // DeleteTracker
  @Override
  public void add(Cell cell) {
    prepare(cell);
    byte type = cell.getTypeByte();
    switch (Type.codeToType(type)) {
    // By the order of seen. We put null cq at first.
    case DeleteFamily: // Delete all versions of all columns of the specified family
      delFamMap.put(cell.getSequenceId(),
          new DeleteVersionsNode(cell.getTimestamp(), cell.getSequenceId()));
      break;
    case DeleteFamilyVersion: // Delete all columns of the specified family and specified version
      delFamMap.ceilingEntry(cell.getSequenceId()).getValue().addVersionDelete(cell);
      break;

    // These two kinds of markers are mix with Puts.
    case DeleteColumn: // Delete all versions of the specified column
      delColMap.put(cell.getSequenceId(),
          new DeleteVersionsNode(cell.getTimestamp(), cell.getSequenceId()));
      break;
    case Delete: // Delete the specified version of the specified column.
      delColMap.ceilingEntry(cell.getSequenceId()).getValue().addVersionDelete(cell);
      break;
    default:
      throw new AssertionError("Unknown delete marker type for " + cell);
    }
  }

  /**
   * This method is not idempotent, we will save some info to judge VERSION_MASKED.
   * @param cell - current cell to check if deleted by a previously seen delete
   * @return We don't distinguish DeleteColumn and DeleteFamily. We only return code for column.
   */
  @Override
  public DeleteResult isDeleted(Cell cell) {
    long duplicateMvcc = prepare(cell);

    for (Map.Entry<Long, DeleteVersionsNode> e : delColMap.tailMap(cell.getSequenceId())
        .entrySet()) {
      DeleteVersionsNode node = e.getValue();
      long deleteMvcc = Long.MAX_VALUE;
      SortedSet<Long> deleteVersionMvccs = node.deletesMap.get(cell.getTimestamp());
      if (deleteVersionMvccs != null) {
        SortedSet<Long> tail = deleteVersionMvccs.tailSet(cell.getSequenceId());
        if (!tail.isEmpty()) {
          deleteMvcc = tail.first();
        }
      }
      SortedMap<Long, SortedSet<Long>> subMap =
          node.mvccCountingMap
              .subMap(cell.getSequenceId(), true, Math.min(duplicateMvcc, deleteMvcc), true);
      for (Map.Entry<Long, SortedSet<Long>> seg : subMap.entrySet()) {
        if (seg.getValue().size() >= maxVersions) {
          return DeleteResult.VERSION_MASKED;
        }
        seg.getValue().add(cell.getSequenceId());
      }
      if (deleteMvcc < Long.MAX_VALUE) {
        return DeleteResult.VERSION_DELETED;
      }

      if (cell.getTimestamp() <= node.ts) {
        return DeleteResult.COLUMN_DELETED;
      }
    }
    if (duplicateMvcc < Long.MAX_VALUE) {
      return DeleteResult.VERSION_MASKED;
    }
    return DeleteResult.NOT_DELETED;
  }

  @Override
  public boolean isEmpty() {
    return delColMap.size() == 1 && delColMap.get(Long.MAX_VALUE).mvccCountingMap.size() == 1
        && delFamMap.size() == 1 && delFamMap.get(Long.MAX_VALUE).mvccCountingMap.size() == 1;
  }

  @Override
  public void update() {
    // ignore
  }

  //ColumnTracker

  @Override
  public MatchCode checkColumn(Cell cell, byte type) throws IOException {
    if (columns == null) {
        return MatchCode.INCLUDE;
    }

    while (!done()) {
      int c = CellUtil.compareQualifiers(cell,
        columns[columnIndex], 0, columns[columnIndex].length);
      if (c < 0) {
        return MatchCode.SEEK_NEXT_COL;
      }

      if (c == 0) {
        // We drop old version in #isDeleted, so here we must return INCLUDE.
        return MatchCode.INCLUDE;
      }

      columnIndex++;
    }
    // No more columns left, we are done with this query
    return MatchCode.SEEK_NEXT_ROW;
  }

  @Override
  public MatchCode checkVersions(Cell cell, long timestamp, byte type,
      boolean ignoreCount) throws IOException {
    assert !PrivateCellUtil.isDelete(type);
    // We drop old version in #isDeleted, so here we won't SKIP because of versioning. But we should
    // consider TTL.
    if (ignoreCount) {
      return MatchCode.INCLUDE;
    }
    countCurrentCol++;
    if (timestamp < this.oldestStamp) {
      if (countCurrentCol == minVersions) {
        return MatchCode.INCLUDE_AND_SEEK_NEXT_COL;
      }
      if (countCurrentCol > minVersions) {
        // This may not be reached, only for safety.
        return MatchCode.SEEK_NEXT_COL;
      }
    }

    if (countCurrentCol == resultMaxVersions) {
      // We have enough number of versions for user's requirement.
      return MatchCode.INCLUDE_AND_SEEK_NEXT_COL;
    }
    if (countCurrentCol > resultMaxVersions) {
      // This may not be reached, only for safety
      return MatchCode.SEEK_NEXT_COL;
    }
    return MatchCode.INCLUDE;
  }

  @Override
  public void reset() {
    delColMap.clear();
    delFamMap.clear();
    lastCqArray = null;
    lastCqLength = 0;
    lastCqOffset = 0;
    lastCqTs = Long.MIN_VALUE;
    lastCqMvcc = 0;
    lastCqType = 0;
    columnIndex = 0;
    countCurrentCol = 0;
    resetInternal();
  }

  protected void resetInternal(){
    delFamMap.put(Long.MAX_VALUE, new DeleteVersionsNode());
  }

  @Override
  public boolean done() {
    return columns != null && columnIndex >= columns.length;
  }

  @Override
  public ColumnCount getColumnHint() {
    if (columns != null) {
      if (columnIndex < columns.length) {
        return new ColumnCount(columns[columnIndex]);
      }
    }
    return null;
  }

  @Override
  public MatchCode getNextRowOrNextColumn(Cell cell) {
    // TODO maybe we can optimize.
    return MatchCode.SEEK_NEXT_COL;
  }

  @Override
  public boolean isDone(long timestamp) {
    // We can not skip Cells with small ts.
    return false;
  }

  @Override
  public CellComparator getCellComparator() {
    return this.comparator;
  }

}


This statement might seem a little counterintuitive considering the role I perform but do bear with me.
As a recruiter I want to know that by the time you reach out to me that the reason you want to leave is a) genuine, and b) not a knee jerk reaction to something that has upset you. Are you looking for career development? Progression? The opportunity to test yourself in a new environment or sector? Or have you finished a period of transformation?
What is important to consider is that when you are unhappy in your role it is a lot easier to start looking for another job than to try and resolve the issues you may have. It is human nature to avoid confrontation and avoid possible rejection. However, regardless of your level within your business, where possible you should try to resolve the issues you have first.
What is it about your role that makes you happy?
What is making you unhappy?
What are you trying achieve in your career?
What more can you learn from this role before moving on?
From that list, what can you actually control? What is out of your control?
Someone moving just for money or citing this as their primary reason for leaving is a big warning bell for any good consultant. The potential for a counter offer being accepted is high and we don't want to be in a position where that happens to our client.
If you feel that you are not valued, that you are underpaid or that your salary and package are not reflective of your role and responsibilities, put together a business case with evidence. Then have a conversation! Ask the question. Ask for the raise you would like (be reasonable!) and use the information you have gleaned to support your case.
You cannot control the outcome of this conversation but it is a conversation that you can initiate. It needs to be considered and non-confrontational.
You might be surprised with the response or you might not be, but at least you asked. You will either have an increase, or objectives to hit in order to get an increase, or you will know that there will be no increase (This will be helpful when you do leave and they come back with a counter offer, but that's for another post!).
I read somewhere that a career is something you look back on and not something you have whilst you are doing it. What it does not mean is that you shouldn't have a plan or a roadmap of where you want to be and what you want to achieve. It's fundamentally important that you analyse and plan where you are versus where you want to be.
Have you sat down and looked at your skills and experiences? Analysed those in relation to your career path?
What do you want to achieve? Where are the gaps?
What experiences do you want to have and to what end does your current role afford you the opportunity to develop those skills and capabilities?
Most companies know that the best people will be there for a short period of time and that the only way to keep hold of top talent is to give them the opportunity to develop and fulfil their growth ambitions.
If you have a career plan then you can look at the opportunities within your organisation and identify where you can apply yourself. Speak to your director/boss/board about where there are other ways for you to be challenged and what they may know that you don't. Leaning in is not just for women.
Don't be afraid to be selfish when it comes to your longer term career goals. If you want to gain experience then sometimes the organisation you are in is a good place to start. Equally, if these opportunities are not there, then you have to move to where you can get the career progression and personal fulfilment you want.
This also helps with interviews. You will inevitably be asked why you are looking to leave and what you have done to correct or remedy some of the reasons you give. Demonstrating your willingness not to avoid challenging situations presents you in a much stronger light to recruiters and companies alike. Both will expect a solid answer, the more reasoned and considered the response, the more genuine your interest will seem.
Note: Obviously, this does not factor in being called about your dream job. But if you know where you are and what your overarching goals and aspirations are, then you will be able to make a more rational and pragmatic decision.