May 14, 2017

Best Games of 2017

The first few months of 2017 have been bountiful, with game of the year contenders sprouting across every genre. There's still much more for us to review—including some games that are already out—as the recent years' boom in PC game releases continues with gusto. Videogames: there are a lot of them.

And a lot of them are good, and a few so far this year are great. Here are the highest review scores we've given out so far in 2017. We'll update this article as the year continues and our review catalog grows. 

Stellaris: Utopia


"If you want to build a giant Dyson sphere around a sun to steal all of its energy and make any planets that depended on it freeze to death, you can do that," wrote TJ in our review. And who doesn't? Stellaris' Utopia expansion overhauls politics, adds factions to your population, and introduces Tradition trees—which are how you might blot out the sun. The add-on gives Stellaris a big push in the right direction, filling out the previously light mid-game.

Our Verdict: "Paradox’s biggest expansion yet brings Stellaris closer to its original promise with a stellar rework of internal politics and new endgame goals."

The Signal From Tölva


Big Robot, which is headed by former PC Gamer contributor Jim Rossignol, brings us a sci-fi shooter mystery that's two parts exploration—hopping and stomping around—and one part "crisp, satisfying combat," as our review states. It's slow-paced, but smart, lean, and a step above the developer's previous game, Sir, You Are Being Hunted.

Verdict: "A fascinating setting and fizzing gunplay make for a lean, thoughtful exploration-led shooter."

Battle Brothers


Like XCOM with lower stakes and axes instead of guns, Battle Brothers is pure fun. Manage a band of mercenaries, earn money to expand your operation and reach more distant contracts on the wide-open map, and fret over decisions in turn-based battles. "I kept humming with the victory and despair I usually reserve for XCOM campaigns," wrote Ian in our review. "The archer who makes a wondrous 19% headshot; the swordsman who blocks and dodges his way out of certain death; the veteran soldier suddenly gutted, lost forever behind the veil of permadeath." (It's also surprisingly gory given its cute little big-headed character sprites.)

Verdict: "Don’t let some clunky inventories scare you off from this excellent strategy RPG."

Thimbleweed Park


A throwback to '90s adventure games, but not a nostalgia-driven rehash—Thimbleweed Park builds on the genre and is great on its own merits. It's funny, and full of smart puzzles that "rarely require the absurd leaps of logic that would have you dialling the LucasArts hint line in the '90s," as Andy put it in his review. 

Verdict: "A quality adventure game with challenging puzzles, oddball characters, and an intriguing, mystery-laden plot."

Rain World


If you aren't turned off by the obtuse introduction and constant, crushing challenge, Rain World rewards with unforgettable gloom. "The early hours are taxing, and in all honesty, it continues to be taxing," wrote Shaun in our review. "It’s not relaxing. It’s not a game to wash away your daily worries with. But the variety of the world’s barren landscapes will keep the determined pushing on, and the seemingly insurmountable challenges are, well, surmountable, but not thanks to 'tricks' per se. You just have to be smart about it. You have to learn—and then very vaguely know—how to survive."

But at least slugcat is cute!

Verdict: "Few will see the more remote corners of Rain World’s relentlessly dire stretch, but those who do are unlikely to forget the experience."

May 9, 2017

Electric Vehicles That Are Hitting The Road By 2020

With developments in clean tech, we are only a few years away from the widespread introduction of electric vehicles. But it won’t be long before there’s an influx of long-range electric cars hitting the market.

Major automakers, including General Motors and Volkswagen, have vowed to roll out more than one fully electric car by 2020. Here’s a look at some of the vehicles hitting the roads in the next few years.

Faraday Future


Faraday Future says it will have a car on the road within the next four years. The mysterious car startup Faraday Future is promising it will have a car on the road sometime during the next few years. Faraday told Tech Insider at CES that it’s working on having its first production car on the roads in the next few years.

Tesla Roadster


Tesla has plans to introduce a next-gen Roadster in 2019. Tesla will reveal the new model in 2019, according to a statement by CEO Elon Musk last year. Musk said in the statement that the new car will be capable of going from zero to 100 km/h in less than 2.8 seconds, which is faster than its cars can go in ‘Ludicrous Mode’.

Volvo


Volvo’s CEO Hakan Samuelsson said that by 2020, 10 per cent of its global sales will be from electrified vehicles. The company said it will roll out its first all-electric vehicle by 2019. Volvo hasn’t released any details about its first fully electric EV. However, it’s likely to have a range comparable to its competitors of 240 km per charge or more.

Mercedes B-class Electric Drive


Mercedes-Benz is aiming to launch at least one electric car by 2018. Daimler, which is Mercedes-Benz’s parent company, already has two all-electric cars. But the company plans to launch at least one new all-electric car by 2018. Daimler’s chief development officer Thomas Weber said the company will debut a prototype of an electric vehicle with a range of 498 km per charge at the next Paris Motor Show.

Tesla Model 3


Tesla Model 3 aims to begin production by the end of 2017. Tesla Model 3 has a starting range of more than 200 miles per charge and can go from zero to 10 km/h in just six seconds. The car will cost $35,000 before incentives and will be about 20 per cent smaller than the company’s Model S.
However, it can still seat five people comfortable.

Porsche


Porsche plans to begin making its Mission E Concept by 2020 Porsche also unveiled an impressive electric car concept, dubbed as the Mission E. It boasts of a range of about 498 km per charge and is capable of charging about 80 percent in just 15 minutes. The car will also be capable of going from zero to 100 km/h in just 3.5 seconds.

Audi


SUV Audi will launch its first electric by 2018. Audi confirmed that it is planning to begin production of its first all-electric SUV at its Brussels plant in 2018. The new vehicle will be inspired by the company’s e-tron quattro concept. It will have three motors, a range of 498 km on a single charge and quick charging capabilities.

General Motors


Bolt EV is going into production this year. General Motors revealed the production model of its first affordable, long-range car called the Chevrolet Bolt EV. The car will become available by the end of 2016 and have a range of about 320 km per charge.

World’s Best Islands

The Philippines are having a moment. This year, three of the top 10 islands in the world, as decided by Travel + Leisure readers, are in this Asian archipelago.
Every year for our World’s Best Awards survey, T+L asks readers to weigh in on travel experiences around the globe—to share their opinions on the top cities, islands, cruise lines, spas, airlines, and more. Readers ranked islands according to their activities and sights, natural attractions and beaches, food, friendliness, and overall value.

The Philippines’ predominance shows that discerning travelers are willing to travel great distances for the rewards of clear waters and sugary white beaches. “There is never a dull moment in Cebu,” said one T+L reader, who claimed the Philippine island, which ranked sixth on the list, is “perfect for travelers who don't want to spend a lot of money on recreational activities.” Hiking through canyons, swimming with whale sharks, and diving from the top of a waterfall are just a few of the activities visitors can try.

Only a puddle-jump away is the island of Boracay, which one reader deemed “a natural treasure.” The crowning jewel of this tropical destination is Shangri-La's Boracay Resort (No. 8 among this year's Top Resort Hotels in Southeast Asia), which is nestled in a cove and offers guests supreme luxury amid verdant hills nd powdery beaches.

Not all the islands on the list are remote or exotic. Hilton Head, off the shore of South Carolina, is all plantation-style architecture, golf courses, and Lowcountry cuisine. And as a key stopover on migration routes, Hilton Head is a birder's paradise.

The Hawaiian islands of Maui and Kauai, which appear on the Top 10 list year after year, provide both the allure of faraway lands and the convenience of a domestic getaway. “For me,” said one survey taker, “going to Maui is like going home: comfortable, familiar, and beautiful.”

With Maui and Kauai's manicured golf courses and upscale resorts boasting triple infinity pools and chic bungalows, it’s easy to feel pampered. But the islands' natural attractions play a huge role in their appeal, too. You can watch migrating humpback whales trace the rugged coast, hike up towering volcanoes and across black-sand beaches, or get lost in the lush rain forests that are punctuated by waterfalls and obsidian bluffs.

What all of these award-winning islands have in common, to be sure, is a transcendent beauty and an ability to coax any traveler into a state of bliss. 

10 : Bali, Indonesia


9 : Kauai, Hawaii


8 : Hilton Head, South Carolina


7 : Maui, Hawaii


6 : Cebu, Philippines


5 : Santorini, Greece


4 : Waiheke Island, New Zealand


3 : Ischia, Italy


2 : Boracay, Philippines


1 : Palawan, Philippines


May 5, 2017

Free Whatsapp Tricks

Read Whatsapp Messages Without The Sender Finding It Out

1. Turn on the flight mode on your phone.
2. Read the whatsapp message
3. Now, turn on the flight mode again.
4. No, blue ticks will appear and the sender will not know that you have read his/her whatsapp message.


Use Multiple Whatsapp Account On Same Phone

1. It may be that you have various mobiles with you and in that case a person tends to have more than one whatsapp account. But once you lose or break the old phone, you always wish to use it in your favorite phone. But is it possible. Yes its possible with help of an app.

2. Download and install Parellal spaces app from google play on your phone
3. Add accounts over it and run more than one Whatsapp account via it.

Change Phone Number Keeping The Same Account

If you have just changed your sim, You need not worry thinking , what will happeen to your account. Whatsapp have a setting in which it allow anyone to change the phone number.



Extend  Whatsapp Validity

1. Go to settings>Account>Change number.
2. In this whatsapp you have to change your mobile number twice and revert to the same earlier and nothing else.
3. Amazingly it tricks whatsapp for extended validity on android.
4. Lets say your Phone no. is 8866****** having service expiration Feb 18 ,2016.
5. You just have to enter your old number as 8866****** And new no as your second sim no. 9067******.
6. Repeat the same process again keeping old number as new and vice versa and bring back your old number which you want to keep.
7. Cheers, you have extended your validity for one year from today’s date. ( The date on which you are performing this trick)

Inserting & Retrieving Images from SQL Server Database without using Stored Procedures

Inserting & Retrieving Images from SQL Server Database without using Stored Procedures


Objective:

To insert into & retrieve images from SQL server database without using stored procedures and also to perform insert, search, update and delete operations & navigation of records.

Introduction:

As we want to insert images into the database, first we have to create a table in the database, we can use the data type 'image' or 'binary' for storing the image.

Query for creating table in our application:

create table student(sno int primary key,sname varchar(50),course varchar(50),fee money,photo image) 

Design:



Design the form as above with 
1 PictureBox control, 
1 OpenFileDialog control, 
4 Labels, 
4 TextBoxes
11 Buttons.

PictureBox1 Properties:

BorderStyle=Fixed3D; SizeMode=StrechImage

Introduction to code:

In order to communicate with SQL sever database, include the namespace

'using System.Data.SqlClient'.

In this application, we will search a record by taking input from the InputBox. For this we have to add reference to Microsoft.VisualBasic.

Adding a Reference to 'Microsoft.VisualBasic':

Goto Project Menu ->Add Reference -> select 'Microsoft.VisualBasic' from .NET tab.

In order to use this reference we have to include the namespace:

'using Microsoft.VisualBasic' in the code.

Converting image into binary data: 

We can't store an image directly into the database. For this we have two solutions:

To store the location of the image in the database

Converting the image into binary data and insert that binary data into database and convert that back to image while retrieving the records.

If we store the location of an image in the database, and suppose if that image is deleted or moved from that location, we will face problems while retrieving the records. So it is better to convert image into binary data and insert that binary data into database and convert that back to image while retrieving records.

We can convert an image into binary data using
FileStream
MemoryStream

1. FileStream uses file location to convert an image into binary data which we may/may not provide while updating a record.

Example:

      FileStream fs = new FileStream(openFileDialog1.FileName, FileMode.Open,                       FileAccess.Read);
      byte[] photo_aray = new byte[fs.Length];
      fs.Read(photo_aray, 0, photo_aray.Length);

2. So it is better to use MemoryStream which uses image in the PictureBox to convert an image into binary data.

Example:
             MemoryStream ms = new MemoryStream();
             pictureBox1.Image.Save(ms, ImageFormat.Jpeg);
             byte[] photo_aray = new byte[ms.Length];
             ms.Position = 0;
             ms.Read(photo_aray, 0, photo_aray.Length);
In order to use FileStream or MemoryStream we have to include the namespace:
'using System.IO'.

OpenFileDialog Control:

We use OpenFileDialog control in order to browse for the images (photos) to insert into the record.

Loading the constraint details into the dataTable:

In this app. we use Find() method to search a record, which requires details of primarykey column, which can be provided using the statement:

adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;

Pointing to current record in dataTable:

After searching a record, we have to get the index of that record so that we can navigate the next and previous records.

Example:

rno= ds.Tables[0].Rows.IndexOf(drow);
-------------

Code:

using System;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using Microsoft.VisualBasic;

namespace inserting_imgs
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        SqlConnection con;
        SqlCommand cmd;
        SqlDataAdapter adapter;
        DataSet ds; int rno = 0;
        MemoryStream ms;
        byte[] photo_aray;

        private void Form1_Load(object sender, EventArgs e)
        {
            con = new SqlConnection("user id=sa;password=123;database=prash");
            loaddata();
            showdata();
        }
        void loaddata()
        {
            adapter = new SqlDataAdapter("select sno,sname,course,fee,photo from student", con);
            adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
            ds = new DataSet(); adapter.Fill(ds, "student");
        }
        void showdata()
        {
            if (ds.Tables[0].Rows.Count > 0)
            {
                textBox1.Text = ds.Tables[0].Rows[rno][0].ToString();
                textBox2.Text = ds.Tables[0].Rows[rno][1].ToString();
                textBox3.Text = ds.Tables[0].Rows[rno][2].ToString();
                textBox4.Text = ds.Tables[0].Rows[rno][3].ToString();
                pictureBox1.Image = null;
                if (ds.Tables[0].Rows[rno][4] != System.DBNull.Value)
                {
                    photo_aray = (byte[])ds.Tables[0].Rows[rno][4];
                    MemoryStream ms = new MemoryStream(photo_aray);
                    pictureBox1.Image = Image.FromStream(ms);
                }
            }
            else
                MessageBox.Show("No Records");
        }
        private void browse_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "jpeg|*.jpg|bmp|*.bmp|all files|*.*";
            DialogResult res = openFileDialog1.ShowDialog();
            if (res == DialogResult.OK)
            {
                pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
            } 
        }
        private void newbtn_Click(object sender, EventArgs e)
        {
            cmd = new SqlCommand("select max(sno)+10 from student", con);
            con.Open();
            textBox1.Text = cmd.ExecuteScalar().ToString();
            con.Close();
            textBox2.Text = textBox3.Text = textBox4.Text = "";
            pictureBox1.Image = null;
        }
        private void insert_Click(object sender, EventArgs e)
        {
            cmd = new SqlCommand("insert into student(sno,sname,course,fee,photo) values(" + textBox1.Text + ",'" +
textBox2.TabIndex + "','" + textBox3.Text + "'," + textBox4.Text + ",@photo)", con);
            conv_photo();
            con.Open();
            int n = cmd.ExecuteNonQuery();
            con.Close();
            if (n > 0)
            {
                MessageBox.Show("record inserted");
                loaddata();
            }
            else
                MessageBox.Show("insertion failed");
        }
        void conv_photo()
        {
            //converting photo to binary data
            if (pictureBox1.Image != null)
            {
                //using FileStream:(will not work while updating, if image is not changed)
                //FileStream fs = new FileStream(openFileDialog1.FileName, FileMode.Open, FileAccess.Read);
                //byte[] photo_aray = new byte[fs.Length];
                //fs.Read(photo_aray, 0, photo_aray.Length);  

                //using MemoryStream:
                ms = new MemoryStream();
                pictureBox1.Image.Save(ms, ImageFormat.Jpeg);
                byte[] photo_aray = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(photo_aray, 0, photo_aray.Length);
                cmd.Parameters.AddWithValue("@photo", photo_aray);
            }
        }

        private void search_Click(object sender, EventArgs e)
        {
            try
            {
                int n = Convert.ToInt32(Interaction.InputBox("Enter sno:", "Search", "20", 100, 100));
                DataRow drow;
                drow = ds.Tables[0].Rows.Find(n);
                if (drow != null)
                {
                    rno = ds.Tables[0].Rows.IndexOf(drow);
                    textBox1.Text = drow[0].ToString();
                    textBox2.Text = drow[1].ToString();
                    textBox3.Text = drow[2].ToString();
                    textBox4.Text = drow[3].ToString();
                    pictureBox1.Image = null;
                    if (drow[4] != System.DBNull.Value)
                    {
                        photo_aray = (byte[])drow[4];
                        MemoryStream ms = new MemoryStream(photo_aray);
                        pictureBox1.Image = Image.FromStream(ms);
                    }
                }
                else
                    MessageBox.Show("Record Not Found");
            }
            catch
            {
                MessageBox.Show("Invalid Input");
            }
        }
        private void update_Click(object sender, EventArgs e)
        {
            cmd = new SqlCommand("update student set sname='" + textBox2.Text + "', course='" + textBox3.Text + "', fee='" + textBox4.Text + "', photo=@photo where sno=" + textBox1.Text, con);
            conv_photo();
            con.Open();
            int n = cmd.ExecuteNonQuery();
            con.Close();
            if (n > 0)
            {
                MessageBox.Show("Record Updated");
                loaddata();
            }
            else
                MessageBox.Show("Updation Failed");
        }

        private void delete_Click(object sender, EventArgs e)
        {
            cmd = new SqlCommand("delete from student where sno=" + textBox1.Text, con);
            con.Open();
            int n = cmd.ExecuteNonQuery();
            con.Close();
            if (n > 0)
            {
                MessageBox.Show("Record Deleted");
                loaddata();
                rno = 0;
                showdata();
            }
            else
                MessageBox.Show("Deletion Failed");
        }
        private void first_Click(object sender, EventArgs e)
        {
            rno = 0; showdata();
            MessageBox.Show("First record"); 
        }

        private void previous_Click(object sender, EventArgs e)
        {

            if (rno > 0)
            {
                rno--; showdata();
            }
            else
                MessageBox.Show("First record");
        }
        private void next_Click(object sender, EventArgs e)
        {
            if (rno < ds.Tables[0].Rows.Count - 1)
            {
                rno++; showdata();
            }
            else
                MessageBox.Show("Last record");
        }
        private void last_Click(object sender, EventArgs e)
        {
            rno = ds.Tables[0].Rows.Count - 1;
            showdata(); MessageBox.Show("Last record");
        }
        private void exit_Click(object sender, EventArgs e)
        {
            this.Close();
        }
     }
}