easy

EasyJet launch winter sale early with flights from £29.99

The airline has also extended its change fee waiver until February 2021




easy

EasyJet puts Easter 2021 flights on sale from £14.99

Budget airline easyJet has released its Easter 2021 flight sale - five months ahead of schedule.





easy

Lucas Moura urges Harry Kane to stay at Tottenham: 'It's not easy to find a player like him'

Tottenham forward Lucas Moura has urged the club not to sell Harry Kane because he is too "important" to replace.




easy

Klopp makes "easy" Liverpool transfer choice over neighbour Gerrard

Klopp says he'd choose Gerrard if he was able to magically sign a legend from Liverpool's past to play in his current team, but warned him he'd have to fight for his place




easy

It’s Not Always Easy Being Green – Lawsuit Related to “Recyclable” Claims Highlights Risks Related to Environmental Benefit Claims

By: Jacqueline Chan and Vanessa Fulton Consumers are increasingly demanding environmentally-friendly products and packaging.  Driven by this increased demand and desire to create positive environmental change, companies are working hard to shift to more sustainable materials and packaging and seeking to communicate such efforts to consumers through product labels and advertising.  “Recyclable.”  “Biodegradable.”  “Made of

The post It’s Not Always Easy Being Green – Lawsuit Related to “Recyclable” Claims Highlights Risks Related to Environmental Benefit Claims appeared first on Kleinfeld Kaplan & Becker LLP.




easy

Easy pumpkin pie squares with candied ginger [Vegan, Gluten-Free]

These delicious dessert squares skip the crust and the refined sugar. They're quick and easy to make for lightly sweet snacks during fall and winter.




easy

Montainer makes shipping container architecture easy

You are not just buying a box but a full service design/build package. Could this take container architecture mainstream?




easy

Japan Taking the Easy Way Out to Meet Kyoto Obligations

Could Japan be attempting to shirk its obligations under the Kyoto Protocol by purchasing lower-grade carbon credits? Having pledged to cut emissions to 6% below 1990 levels, the country is now racing to make ends meet as




easy

Sourcing Sustainable Fabrics Made Easy with New Online Marketplace from Summer Rayne Oakes

When I caught up with Summer Rayne Oakes at a Fashion Delivers event in June, she only briefly mentioned her forthcoming project: Source 4 Style, an online marketing




easy

Tired Title, Boffo Finish in "It's Not Easy Being Green"

Who says the New York Times is ignoring climate and the environment? David Leonhardt writes about the importance of doing something about climate, in a political climate that makes it tough.




easy

LEED-Bashing: USA Today Series Says It's Too Easy To Be Green (and a Whole Lot More)

The rating system is attacked in 2012 for its 2002 standard and the timing couldn't be worse.




easy

This high-tech, grow-it-yourself medical cannabis kit is as easy as using an app

Seedo, creators of automated consumer grow labs, will shortly plant a seed in the U.S. medical marijuana market.




easy

San Jose’s "Green Vision" Initiative Means Low-Impact Sleep, Eat and Play is Easy in Silicon Valley

Here's a one-stop green guide to traveling in San Jose, from hotels to a night on the town.




easy

3 easy DIY repairs for broken zippers

Save your clothes with these easy fixes for common zipper problems.




easy

12 easy green resolutions for every month of the year

Resolve to make these simple changes month by month as a graceful way to ease into a more sustainable lifestyle.




easy

Homemade pasta is cheap, easy and delicious

Or, how to make a super special meal with just a few ingredients.




easy

9 Easy Recipes for Small-Batch Fruit and Vegetable Canning and Preserving

Fruits and vegetables last all winter with jams, fruit butter, marmalades, and pickled vegetables from new cookbook Home Canning by Janet Cooper.




easy

Breathe easy with Knickey's fair-trade organic cotton underwear

It's a solid, sustainable choice all around.




easy

EasyJet to test electric passenger plane within a year

Sure, it'll only have nine seats. But the low cost carrier expects larger electric planes in service by 2027.




easy

Researchers Develop Chlorine-Tolerant Membrane for Easy Desalination

Record droughts, falling water tables and the rapid depletion of aquifers have helped make desalination, a process once considered impractical and too expensive, a viable technology -- at least in some places. As such, there has been a rash of stories --




easy

Solar Still Makes Water Purification Easy, Works Like an Upside-Down Coffee Maker

This simple, innovative solar still purifies water without electricity or filters.




easy

How to stop future pandemics in 3 easy steps

In order to prevent future pandemics, we need to change our relationship with wildlife




easy

Forests are easy to love: how to show it for the International Day of Forests

The theme for 2019 is “forests and education,” with the goal to increase understanding that sustainable forests are critical to our future.




easy

'Book' Christmas tree is easy, eco-friendly, and free

If you are tired ot dragging home a live tree and having it shed its pine needles through your home as it dies, look no further. All this tree takes is your love, and the books from your bookshelf.




easy

Super easy vegan fudgsicles (recipe)

Homemade popsicles are one of my favorite summer treats, particularly when it’s too hot to bake or cook.





easy

CREATE A THANKSGIVING FEAST THAT WILL BE SURE TO KEEP THE FAMILY TALKING! - Lifestyle Expert Shares Easy Tricks For Turkey Day!

Lifestyle Expert Shares Easy Tricks For Turkey Day!





easy

Rowenta and "The Tox Doc" Work Together To Help Allergy Sufferers Breathe Easy - Dr. Norneen Khan-Mayberry

Rowenta Brand Ambassador Dr. Noreen Khan-Mayberry discusses how allergens affect our health, and the importance of removing them from our homes.





easy

Rowenta and "The Tox Doc" Work Together To Help Allergy Sufferers Breathe Easy - Dr. Norneen Khan-Mayberry

Rowenta Brand Ambassador Dr. Noreen Khan-Mayberry discusses how allergens affect our health, and the importance of removing them from our homes.





easy

Millions of 'easy-to-use' coronavirus tests will be available by end of summer, top US health official says

Americans need coronavirus tests "that do not require hours or days to determine results," the head of the NIH tells Congress.




easy

These business owners couldn't get a forgivable loan at first. Then it was easy.

Business owners who successfully got loans during the second round of the Paycheck Protection Program describe the emotional roller coaster of the process.




easy

DIY Easy Valentine’s Banner

Besides printable Valentine cards, with my print-outs you can also make decorative banners. They are easy and fast! Here’s what you need: –InkJet Iron-On Transfers: I like the kind made for dark colors -red and white felt –String –glue -scissors –Scallop Fabric Shears: these are pricey and with some types … Continue reading





easy

easy almonds

Today on Toothpaste For Dinner: easy almonds




easy

Easy Peasy

Whoops, forgot to change the strip number. HAPPY CANADA DAY




easy

Easy Breezy




easy

UK-US trade talks will not be an easy ride

Both sides are desperate for a speedy agreement, but there are clear sticking points.




easy

Anti-abortion campaigner loses Stella Creasy poster ban appeal

A judge dismisses Christian Hacking's bid to overturn a ban on posters put up around Waltham Forest.




easy

Leveraging React for Easy Image Management

React is a good tool when it comes to building flexible and reusable UI components. However, it’s “one of those libraries” that cannot handle all the tasks involved in building a full fleshed UI project. Other supporting tools - such as a recently announced React SDK from Cloudinary - are available to provide solutions that the React core cannot.

In such cases where media (images and videos) becomes a heavy task to handle, Cloudinary simplifies the process with the new React SDK. Let’s build and image library with Cloudinary and React using the Cloudinary’s React SDK.

Prerequisites

The only requirements for using Cloudinary in your existing React project are to install the React SDK and the upload widget. If you do not have an existing React project and want to try these examples, take the following steps:

1. Install Dependencies

We need a minimal amount of dependencies so we can focus on building a media library and not structuring a React app:

{
  "name": "img-library",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "watch": "webpack -d --watch",
    "build": "webpack",
    "serve": "serve ./public"
  },
  "author": "",
  "license": "MIT",
  "devDependencies": {
    "babel-core": "^6.18.2",
    "babel-loader": "^6.2.9",
    "babel-preset-es2015": "^6.18.0",
    "babel-preset-react": "^6.16.0",
    "serve": "^1.4.0",
    "webpack": "^1.14.0"
  },
  "dependencies": {
    "axios": "^0.15.3",
    "cloudinary-react": "^1.0.1",
    "react": "^15.4.1",
    "react-dom": "^15.4.1"
  }
}

React (and React DOM) must be used since we are making a React app. The cloudinary-react dependency is Cloudinary’s React SDK, which we will soon see how it works. axios is a tool for making HTTP requests and, in our case, we will use it request images from the Cloudinary server.

# Install dependencies
npm install

2. Setup Webpack

Webpack is our build tool. Only minimal settings are required to have a build running and our React app compiling:

// ./webpack.config.js
var webpack = require('webpack');
var path = require('path');

var BUILD_DIR = path.resolve(__dirname, 'public');
var APP_DIR = path.resolve(__dirname, 'src');

var config = {
    entry: APP_DIR + '/index.jsx',
    output: {
        path: BUILD_DIR,
        filename: 'bundle.js'
    },
    module : {
        loaders : [
            {
                test : /.jsx?/,
                include : APP_DIR,
                loader : 'babel'
            }
        ]
    }
};

module.exports = config;

Basic configuration - an entry, output and loaders to handle the React .jsx files.

3. Entry Points

We need to create an entry point, as we specified in the Webpack configuration, and another entry point for the browser, which is an index.html file:

// ./src/index.jsx
import React, { Component } from 'react';
import { render } from 'react-dom';

class Main extends Component {
    render() {
        return (
           <div className="main">
               <h1>Scotchage</h1>
           </div>
        );
    }
}

render(<Main />, document.getElementById('container'));
<!-- ./public/index.html -->
<html>
<head>
    <!--Stylesheet-->
    <link rel="stylesheet" href="style.css">
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
    <!--Container for React rendering-->
    <div id="container"></div>
    <!--Bundled file-->
    <script src="bundle.js"></script>
</body>
</html>

4. Create Cloudinary Account

You need a Cloudinary account to continue with these examples. Sign up for free and store your credentials safely as shown on the dashboard:

Uploading Images

Before using the React SDK to deliver images from the Cloudinary servers, let’s use the awesome Cloudinary upload widget to upload images. First, we need to add this widget to our index.html:

<!-- ./public/index.html -->
<html>
<head>
   . . .
</head>
<body>
    . . .
    <!-- UPLOAD WIDGET -->
    <script src="//widget.cloudinary.com/global/all.js" type="text/javascript"></script>
    <script src="bundle.js"></script>
</body>
</html>

Next, we create a button, attach an event to it and upload an image once the button is clicked:

import React, { Component } from 'react';
import { render } from 'react-dom';

class Main extends Component {

    uploadWidget() {
        cloudinary.openUploadWidget({ cloud_name: 'CLOUD_NAME', upload_preset: 'PRESET', tags:['xmas']},
            function(error, result) {
                console.log(result);
            });
    }
    render(){
        return (
            <div className="main">
                <h1>Galleria</h1>
                <div className="upload">
                    <button onClick={this.uploadWidget.bind(this)} className="upload-button">
                        Add Image
                    </button>
                </div>
            </div>

        );
    }
}

render(<Main />, document.getElementById('container'));

The uploadWidget member method is the handler invoked by the click event to handle our image upload by calling cloudinary.openUploadWidget. openUploadWidget takes a config object and the upload callback handler. The config object must have at least cloud_name and upload_preset properties with valid values. You can read more about Cloud Names and Upload Presets.

Delivering Images with SDK

The Cloudinary React SDK has three major components, Image, CloudinaryContext and Transformation:

  • Image: This component is responsible for the actual delivery of images. It takes the image ID and asks the server for this image. When the image is provided, it is also responsible for painting the image on the browser.
  • Transformation: This component is used to apply transformations to images delivered with Image.
  • CloudinaryContext: You can specify Cloudinary configuration for each image on the Image component. This can be tedious when you are dealing with multiple images. CloudinaryContext allows you to apply configuration to a group of Images.

Most times you would end up with a structure like this:

<CloudinaryContext>
    <Image>
        <Transformation />
        <Transformation />
    </Image>
    <Image>
        <Transformation />
    </Image>
</CloudinaryContext>

Back to our demo app, we can request an image from the Cloudinary server and display it with the following components:

import React, { Component } from 'react';
import axios from 'axios';
import { CloudinaryContext, Transformation, Image } from 'cloudinary-react';
import { render } from 'react-dom';

class Main extends Component {
    constructor(props) {
        super(props);
        this.state = {
            gallery: []
        }
    }
    componentDidMount() {
    // Request for images tagged xmas       
axios.get('http://res.cloudinary.com/christekh/image/list/xmas.json')
            .then(res => {
                console.log(res.data.resources);
                this.setState({gallery: res.data.resources});
            });
    }
    uploadWidget() {
       // . . .
    }
    render(){
        return (
            <div className="main">
                <h1>Galleria</h1>
                <div className="gallery">
                    <CloudinaryContext cloudName="CLOUDNAME">
                        {
                            this.state.gallery.map(data => {
                                return (
                                    <div className="responsive" key={data.public_id}>
                                        <div className="img">
                                            <a target="_blank" href={`http://res.cloudinary.com/christekh/image/upload/${data.public_id}.jpg`}>
                                                <Image publicId={data.public_id}>
                                                    <Transformation
                                                        crop="scale"
                                                        width="300"
                                                        height="200"
                                                        dpr="auto"
                                                        responsive_placeholder="blank"
                                                    />
                                                </Image>
                                            </a>
                                            <div className="desc">Created at {data.created_at}</div>
                                        </div>
                                    </div>
                                )
                            })
                        }
                    </CloudinaryContext>
                    <div className="clearfix"></div>
                </div>
            </div>

        );
    }
}

render(<Main />, document.getElementById('container'));

Take one more look at the upload code:

 cloudinary.openUploadWidget({ cloud_name: 'christekh', upload_preset: 'idcidr0h', tags:['xmas']},
            function(error, result) {
            . . .

Each image is tagged with xmas, which serves as a way to request images with this tag as a collection. This is exactly what we are using the axios library to do when the component mounts:

axios.get('http://res.cloudinary.com/CLOUDNAME/image/list/xmas.json')
            .then(res => {
                console.log(res.data.resources);
                this.setState({gallery: res.data.resources});
            });

axios uses promises, so whenever the promise resolves in our case, we have a payload of images. We take advantage of React state to update our UI with the fetched resources.

Down to rendering, we configure the CloudinaryContext with our cloud_name, iterate over the gallery state that stores the images and displays them using the Image component. We also apply few transformations using the Transformation component.

For security reasons, Cloudinary will not allow you to make such request from the client unless you tell it to. The best way to go is to use the admin API via a backend SDK and then send the resource list to the client.

Updating State with New Uploads

We are able to upload images and request for images to be displayed on the user’s browsers. Here is how we update the displayed images instantly when the user uploads a new image:

uploadWidget() {
        let _this = this;
        cloudinary.openUploadWidget({ cloud_name: 'CLOUDNAME', upload_preset: 'PRESET', tags:['xmas']},
            function(error, result) {
            // Update gallery state with newly uploaded image
                _this.setState({gallery: _this.state.gallery.concat(result)})
            });
    }

Rather than logging the uploaded image information to the console, we update the gallery state, which bears the list of requested images, by concatenating the uploaded result to the gallery.

Image Management Simplified

Image uploads, transformation and delivery has never been easier. These tasks have been a serious challenge for developers. Cloudinary has created a way to abstract all this hard work, enabling you to simply plug and play.




easy

Wilhelm: Captaining Argentina is easy

All good things come to those who wait, or so the saying goes. The last time Argentina appeared in the last four of the FIFA Futsal World Cup was at Chinese Taipei 2004, 12 years ago. 




easy

Mumbai: With 'gau rakshak' Vaibhav Raut behind bars, Nalasopara breathes easy

Nalasopara has heaved a big sigh of relief after the arrest of suspected Sanatan Sanstha member Vaibhav Raut, who had allegedly terrorised his neighbourhood with his activities.

According to the police, Raut, who called himself a gau rakshak, has been involved in a series of attacks on butchers in the area every Bakri-eid. Raut allegedly tried to create communal tension, particularly in the neighbouring Sopara village, by harassing locals and carrying out illegal raids on mutton and beef shops.

Every year, the police would extern him from the area for short periods, by serving him notices under section 144 of the Mumbai Police Act; he, however, would stay put by bringing in political influence in the name of cow protection, said an officer, adding that even the police will breathe easy after his arrest.

Living in terror
Sopara village's Muslim community, especially the butchers, lived in fear and insecurity due to Raut's activities — even when beef hadn't been banned by the government, he would go around conducting 'raids' on meat shops and harassing the owners, said a local, Anis Qureshi. Speaking to mid-day, he added, "In 2014, Raut forcibly stopped my tempo in his area and assaulted the driver.

The driver called me and I went to the spot, but Raut and his colleague abused and assaulted me too, saying I was smuggling cow meat. They forcibly took me and my tempo to Nalasopara police station. I have never carried or supplied cow meat; after I showed all the relevant documents to the cops, they let me go and registered a case against Raut and his colleague.

"Large numbers of Muslims as well as gau rakshaks had gathered outside the police station that day... he had succeeded in creating communal tension; clashes could have erupted anytime. Huge police bandobast was then deployed in the area, for the first time in the history of Nalasopara."

Policespeak
"There are two cases of rioting and one of not following the district collector's order registered against Raut at Nalasopara police station. Since 2015, we have been serving him notices to leave the area during Bakri-eid to maintain law and order there," said Datta Totewar, SDPO, Nalasopara Division of Palghar district.

Also Read: Crime: Trio planning 'terror attack' held from Nalasopara, Pune

Catch up on all the latest Crime, National, International and Hatke news here. Also download the new mid-day Android and iOS apps to get latest updates





easy

Two new flyovers for easy commute between Mumbai and Thane

Motorists who travel from Mumbai to Thane are in for good news as the traffic of Mumbai city is going to unclog. With these bridges, motorists are likely to face fewer traffic problems in the city.

In order to beat the slow-moving traffic on Eastern Expressway, commuters can use the internal flyovers constructed over LBS Marg near Castle Mill and MG Road at Naupada.

Yuva Sena chief Aaditya Thackeray inaugurated the two bridges on Sunday which was built by MMRDA under intercity flyover project plan.

The time taken to exit the city using the new flyovers will be lesser as compared to the existing one, which is currently over clogged because of the movement of heavy vehicles and ongoing Metro and Kopri bridge widening work.

Noise and view barriers have been installed on the two newly inaugurated bridges.

Catch up on all the latest Crime, National, International and Hatke news here. Also, download the new mid-day Android and iOS apps to get latest updates





easy

Easy on the palate

As absurd as it may sound, we love art more than we love food. And when we come across a café that combines the two, it surely gets our hopes up. Tucked in one of Linking Road's bylanes teeming with eateries is Me Time Cafe, an art studio-cum-café with a variety of vegetarian and vegan options on the menu.

When we enter the space on a Saturday afternoon, it is packed with students working on college projects, couples, business partners, and a family. No, we didn't intend to eavesdrop, but it's a relatively small space for the seating it offers, which makes it easy to hear all the talk.


Vanilla panna cotta

The decor is an eclectic mix — books hang as chandeliers and there's graffiti and framed doodles on the wall. The staff gives us a warm welcome and hands over the menu shaped like a palette. A glass wall divides the studio and the café.

There's an hourly charge of R700 if you wish to do artwork in the studio (all materials are provided). While the children inside seem occupied with their blank sheets, we decide to order the cashew cream cheese, smashed avocado and black sesame tartine (R320), which is subject to availability, and we're instantly told that it isn't our lucky day today.


Grilled vegetable lasagna with pesto cream

So, we choose the grilled vegetable lasagna with pesto cream (R350) and an apple and cinnamon iced tea (R120). The menu also has a key to dishes that are vegan, Jain or gluten-free. Our order arrives in 10 minutes.

The iced tea is perfectly blended and unlike most other places we've tried it, not loaded with ice cubes. A slight dash of lemon would've improved the overall flavour. The lasagna is an absolute delight. It isn't overloaded with cheese and the pasta slices melt in your mouth. We're positive that we have reached a point where we don't know if we want to finish the entire bowl and be filled with it or grab the menu again.


Apple and cinnamon iced tea

After sipping all the iced tea, we decide to do the latter. We choose the Thai-flavoured Asian bowl (R350), and the server asks us to pick between tofu and paneer as an addition to the dish. We go with tofu, and again, the café delivers with their prompt service. We lap up the mushrooms and tofu tossed in sesame, and the sautéed pakchoy that complements the soy chilli rice with coconut curry.

The dessert menu is also extensive ranging from fudge and fondant to cheesecake and ice cream sandwiches. We opt for a vanilla panna cotta (R250), and it arrives looking like a work of contemporary art with splatters of coconut dust. But it is too dense and could pass off as custard.

All in all, we are pleased with our experience. It proves to be a good hangout space for a diverse audience. With numerous haunts in the neighbourhood, we think this one is here to stay. Where else can you witness people talking share prices and having a heated debate over Frida Kahlo's artworks in the same space?

At Me Time Art Cafe, 467 Maya Building, Unit 1 ground floor, 14th Road, Khar West
Time 12 pm to 11 pm
Call 26054884

Catch up on all the latest Mumbai news, crime news, current affairs, and also a complete guide on Mumbai from food to things to do and events across the city here. Also download the new mid-day Android and iOS apps to get latest updates





easy

Easy Tips for Mindful Eating During Christmas Revealed

Christmas is the synonym for cheer, festivities, gifts, food, family, friends, and a whole lot of fun. We tend to indulge in our favorite food over the festive season.




easy

Simple and Easy Tips for Entrepreneurs and Small Businesses Amid COVID-19

COVID-19: Experts from University at Buffalo School of Management have suggested simple tips to entrepreneurs and local businesses ride out the storm.




easy

Cheap Motels are Easy - The Life of a Hotel Doctor

Cheap motels have many advantages from a hotel doctor's point of view. Valets are absent, so I can park inside and safely ignore the threatening signs. Security is absent, so I don't have to explain myself to the front desk, and elevators respond wh...