Pages

Showing posts with label about. Show all posts
Showing posts with label about. Show all posts

Monday, March 14, 2016

Plants VS Zombies 2 Its About Time Android Full Version

Plants VS Zombies 2: It's About Time. Android Full Version




Plants VS Zombies 2 Download Free

Best" Games of 2013" Collection on Google Play

The zombies are coming… back. It’s about time! The sequel to the hit action-strategy adventure brings the fun to tablets and touchscreens. Join Crazy Dave on a crazy adventure where you’ll meet, greet and defeat legions of zombies from the dawn of time to the end of days. Amass an army of powerful new plants, supercharge them with Plant Food and power up your defenses with amazing new ways to protect your brain. And that's just the beginning! The future holds many mysteries… also zombies. Lots and lots of zombies.

Best Mobile Game at E3 – Game Informer
Best Mobile Game 2013 – Mashable
Game of the Year 2013 – Slide to Play

Game Features
• Meet new plants that will defend your lawn through time
• Go toe-to-missing-toe with dozens of new zombies
• Supercharge your floral friends with Plant Food
• Fire up amazing Finger Powers to freeze, flick and zap zombies
• Defeat challenges that will test your zombie-zapping skills
• Take on zombies from all worlds in PiƱata Party and win prizes
• Collect coins to purchase potent power-ups
• Connect to Game Services to unlock achievements and compete against friends on the leaderboards
• Grow your Zen Garden and reap sweet rewards
• Look out! Zombie chickens!

Read More..

Tuesday, March 11, 2014

10 things you probably didnt know about App Engine

What could be better than nine nifty tips and tricks about App Engine? Why, ten of course. As weve been participating in the discussion groups, weve noticed that some features of App Engine often go unnoticed so weve come up with just under eleven fun facts which might just change the way that you develop your app. Without further ado, bring on the first tip:

1. App Versions are strings, not numbers

Although most of the examples show the version field in app.yaml and appengine-web.xml as a number, thats just a matter of convention. App versions can be any string thats allowed in a URL. For example, you could call your versions "live" and "dev", and they would be accessible at "live.latest.yourapp.appspot.com" and "dev.latest.yourapp.appspot.com".

2. You can have multiple versions of your app running simultaneously

As we alluded to in point 1, App Engine permits you to deploy multiple versions of your app and have them running side-by-side. All the versions share the samedatastore and memcache, but they run in separate instances and have different URLs. Your live version always serves off yourapp.appspot.com as well as any domains you have mapped, but all your apps versions are accessible at version.latest.yourapp.appspot.com. Multiple versions are particularly useful for testing a new release in a production environment, on real data, before making it available to all your users.

Something thats less known is that the different app versions dont even have to have the same runtime! Its perfectly fine to have one version of an app using the Java runtime and another version of the same app using the Python runtime.

3. The Java runtime supports any language that compiles to Java bytecode

Its called the Java runtime, but in fact theres nothing stopping you from writing your App Engine app in any other language that compiles to JVM bytecode. In fact, there are already people writing App Engine apps in JRuby, Groovy, Scala, Rhino (a JavaScript interpreter), Quercus (a PHP interpreter/compiler), and even Jython! Our community has shared notes on what theyve found to work and not work on the following wiki page.

4. The IN and != operators generate multiple datastore queries under the hood

The IN and != operators in the Python runtime are actually implemented in the SDK and translate to multiple queries under the hood.

For example, the query "SELECT * FROM People WHERE name IN (Bob, Jane)" gets translated into two queries, equivalent to running "SELECT * FROM People WHERE name = Bob" and "SELECT * FROM People WHERE name = Jane" and merging the results. Combining multiple disjunctions multiplies the number of queries needed, so the query "SELECT * FROM People WHERE name IN (Bob, Jane) AND age != 25" generates a total of four queries, for each of the possible conditions (age less than or greater than 25, and name is Bob or Jane), then merges them together into a single result set.

The upshot of this is that you should avoid using excessively large disjunctions. If youre using an inequality query, for example, and you expect only a small number of records to exactly match the condition (e.g. in the above example, you know very few people will have an age of exactly 25), it may be more efficient to execute the query without the inequality filter and exclude any returned records that dont match it yourself.

5. You can batch put, get and delete operations for efficiency

Every time you make a datastore request, such as a query or a get() operation, your app has to send the request off to the datastore, which processes the request and sends back a response. This request-response cycle takes time, and if youre doing a lot of operations one after the other, this can add up to a substantial delay in how long your users have to wait to see a result.

Fortunately, theres an easy way to reduce the number of round trips: batch operations. The db.put(), db.get(), and db.delete() functions all accept lists in addition to their more usual singular invocation. When passed a list, they perform the operation on all the items in the list in a singledatastore round trip and they are executed in parallel, saving you a lot of time. For example, take a look at this common pattern:

for entity in MyModel.all().filter("color =",
old_favorite).fetch(100):
entity.color = new_favorite
entity.put()

Doing the update this way requires one datastore round trip for the query, plus one additional round trip for each updated entity - for a total of up to 101 round trips! In comparison, take a look at this example:

updated = []
for entity in MyModel.all().filter("color =",
old_favorite).fetch(100):
entity.color = new_favorite
updated.append(entity)
db.put(updated)

By adding two lines, weve reduced the number of round trips required from 101 to just 2!

6. Datastore performance doesnt depend on how many entities you have

Many people ask about how the datastore will perform once theyve inserted 100,000, or a million, or ten million entities. One of the datastores major strengths is that its performance is totally independent of the number of entities your app has. So much so, in fact, that every entity for every App Engine app is stored in a singleBigTable table! Further, when it comes to queries, all the queries that you can execute natively (with the notable exception of those involving IN and != operators - see above) have equivalent execution cost: The cost of running a query is proportional to the number of results returned by that query.

7. The time it takes to build an index isnt entirely dependent on its size

When adding a new index to your app on App Engine, it sometimes takes a significant amount of time to build. People often inquire about this, citing the amount of data they have compared to the time taken. However, requests to build new indexes are actually added to a queue of indexes that need to be built, and processed by a centralized system that builds indexes for all App Engine apps. At peak times, there may be other index building jobs ahead of yours in the queue, delaying when we can start building your index.

8. The value for Stored Data is updated once a day

Once a day, we run a task to recalculate the Stored Data figure for your app based on your actual datastore usage at that time. In the intervening period, we update the figure with an estimate of your usage so we can give you immediate feedback on changes in your usage. This explains why many people have observed that after deleting a large number of entities, theirdatastore usage remains at previous levels for a while. For billing purposes, only the authoritative number is used, naturally.

9. The order that handlers in app.yaml, web.xml, and appengine-web.xml are specified in matters

One of the more common and subtle mistakes people make when configuring their app is to forget that handlers in the application configuration files are processed in order, from top to bottom. For example, when installing remote_api, many people do the following:

handlers:
- url: /.*
script: request.py

- url: /remote_api
script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
login: admin

The above looks fine at first glance, but because handlers are processed in order, the handler for request.py is encountered first, and all requests - even those for remote_api - get handled by request.py. Since request.py doesnt know about remote_api, it returns a 404 Not Found error. The solution is simple: Make sure that the catchall handler comes after all other handlers.

The same is true for the Java runtime, with the additional constraint that all the static file handlers in appengine-web.xml are processed before any of the dynamic handlers in web.xml.

10. You dont need to construct GQL strings by hand

One anti-pattern that comes up a lot looks similar to this:

q = db.GqlQuery("SELECT * FROM People "
"WHERE first_name = " + first_name
+ " AND last_name = " + last_name + "")

As well as opening up your code to injection vulnerabilities, this practice introduces escaping issues (what if a user has an apostrophe in their name?) and potentially, encoding issues. Fortunately,GqlQuery has built in support for parameter substitution, a common technique for avoiding the need to substitute in strings in the first place. Using parameter substitution, the above query can be rephrased like this:

q = db.GqlQuery("SELECT * FROM People "
"WHERE first_name = :1 "
"AND last_name = :2", first_name, last_name)

GqlQuery also supports using named instead of numbered parameters, and passing a dictionary as an argument:

q = db.GqlQuery("SELECT * FROM People "
"WHERE first_name = :first_name "
"AND last_name = :last_name",
first_name=first_name, last_name=last_name)

Aside from cleaning up your code, this also allows for some neat optimizations. If youre going to execute the same query multiple times with different values, you can useGqlQuery .bind() to rebind the values of the parameters for each query. This is faster than constructing a new query each time, because the query only has to be parsed once:

q = db.GqlQuery("SELECT * FROM People "
"WHERE first_name = :first_name "
"AND last_name = :last_name")
for first, last in people:
q.bind(first, last)
person = q.get()
print person


Java is a trademark or registered trademark of Sun Microsystems, Inc. in the United States and other countries.

Read More..

Friday, March 7, 2014

US cybersecurity chief says he had pre launch concerns about Obamacare website

The top cyber-security officer for the Health and Human Services Department said he was concerned about potential vulnerabilities ahead of the launch of the Obama administrations health care website.

But Kevin Charest told congressional investigators he was unable to get answers to his questions from others inside the department. He concluded that the testing of the site was substandard.


(Also see: Overhauled Obama healthcare website faces new test on New Years Day)


"I would say that it didnt follow best practices," Charest testified a Jan. 8 deposition. Excerpts of his testimony were provided to The Associated Press by the House Oversight and Government Reform Committee.


Charest and Teresa Fryer - another government cybersecurity professional who also had qualms - were to testify before the panel Thursday.


Chairman Darrell Issa, R-Calif., investigating the chaotic rollout of the HealthCare.gov website, contends the administration risked the personal information of millions of Americans in its zeal to meet a self-imposed Oct. 1 deadline. The online federal insurance market is the main portal to coverage under President Barack Obamas signature program.


The panels senior Democrat, Rep. Elijah Cummings of Maryland, says the administration addressed the potential security issues through added vigilance instituted before the site went live. He says despite initial operational problems, the site has not been successfully hacked. Cummings says it is Republicans who are risking the privacy of average citizens by demanding detailed blueprints that, if leaked, would become a road map for hackers.


With "Obamacare" expected to be a polarizing issue in the midterm congressional elections, both political parties are at battle stations. Republicans have raised security issues but have yet to produce a smoking gun.


As chief information security officer for HHS, Charest offered a look an insider concerns during the weeks and days before the website went live. Technical problems developed immediately and many potential customers were frozen out. The site seems to be working well now, but the administrations signup campaign hasnt fully recovered its momentum.


"I get paid to be paranoid," Charest said in the transcript. "And so I wanted to understand the exact controls in place, what environment, what procedures, what policies."


But the Centers for Medicare and Medicaid Services - the departmental division running the health care rollout - wasnt sharing.


"I was frustrated by a number of requests I made that I did not receive," Charest said. The requests were not just related to security, he said, but other operational issues as well.


He said he came to believe that CMS - as the division is known- was deliberately keeping information to itself. "I cant explain it," he said.


While he did not have direct chain-of-command authority over the rollout, "I have responsibility for incident control," Charest testified. "Putting my bad-guy hat on, this would be something I would think would be desirable for someone to want to attack."


HealthCare.gov has two major components: an electronic "back room" that got full operational and security certification and a consumer-facing "front room" that was temporarily certified Sept. 27.


The back room, known as the federal data services hub, pings government agencies to verify applicants personal information. It does not store data.


But the front room does. Thats where consumers in the 36 states served by the federal website create and save their accounts. Individual components of the front room did undergo security testing. But the system as a whole could not be tested because it was being worked on until late in the process - and it was also crashing.


Charest testified that security testing usually takes place on a fully built, stable system that represents real-world functionality.


The path followed by HealthCare.gov was "not typical," he said. "In a perfect world, the system is completely done when you test it."


Charest testified that he did not get to review a key outside contractors security evaluation until November, a month into the rollout. He found out only through media reports that the consumer-facing part of the website had been issued a provisional six-month operational and security certificate.


Despite the unusual process that administration officials followed with the website, Charest expressed cautious optimism over the added vigilance and testing measures put in place to reduce risks.


"I have no reason to believe that these broad mitigation strategies, if followed through in detail, would not mitigate the risk," he told the committee.


Fryer, who is the CMS chief information security officer, has testified that she recommended against issuing a full certification for the consumer-facing part of the website. She put her concerns in a Sept. 24 memo, but it was never sent.



Read More..