Picard Has a Dog Now

Jean-Luc Picard is back, and this time he’s got a cape on.
Photo: CBS

Jean-Luc Picard has been through some shit by the time we re-meet him in Star Trek: Picard. He’s left Starfleet, retired to a life of making wine and mourning his regrets. Whatever is a man to do when he’s going through some stuff? Get a dog, of course.

Patrick Stewart has just dropped a brand new poster for Picard, just ahead of the show—alongside Discovery and the upcoming animated series Lower Decks—heading to San Diego Comic-Con next week. It’s got everything you could want: Vineyards! Casks of Chateau Picard! Patrick Stewart in a rustic space cape! It’s got…a dog!

Yes, Jean-Luc has picked himself up a pup in the years between Nemesis and Star Trek: Picard, and he’s even given it a Starfleet command delta as a tag. Which is very cute! It’s also made cuter by the real-life fact that Stewart himself has long been an advocate for fostering dogs, championing rescue services through his social media accounts, mainly in the form of the best use of social media around: pictures of Patrick Stewart overjoyed by the presence of tiny little puppers:

Adorable. So are the dogs.

Carrying that personal connection over to Jean-Luc—aside from the connotations of Picard getting himself a dog to help deal with the traumas he’s faced—is a lovely touch, and speaks to the deep involvement Stewart himself has had in the return of one of his most beloved roles.

Just please, I know Jean-Luc’s going through things in this show but…don’t John Wick that pup, CBS. Please. I couldn’t bear to watch Picard go through that. We’ll bring you more on Picard as we learn it.


For more, make sure you’re following us on our new Instagram @io9dotcom.

via Gizmodo
Picard Has a Dog Now

The 7 Best Truly Free Antivirus Software for Mac

best-free-antivirus-mac

There’s a constant debate of whether or not Macs can get viruses. If you’re still wondering: “Do I need antivirus for my Mac?” The answer is yes.

Although Macs are less likely to become a victim of a virus, it’s important to stay on the safe side. You don’t have to go overboard with the antivirus tool that you choose. In fact, you have many free options that you should consider. Here are some of the best free antivirus for Mac—don’t worry, they don’t come with any gimmicks!

1. Avast Security

Avast Mac Free Antivirus

Avast’s free antivirus for Mac is considered one of the best options for Mac users. It comes loaded with features that constantly work to block any ransomware, viruses, or malware that compromise your Mac’s security.

When browsing the web, Avast Security will let you know when you come across a potentially dangerous site, and will also keep out any web trackers. Avast even prevents malicious emails and lets you know if there are any security holes in your Wi-Fi connection.

Since Avast Security is completely free on its own, it withholds some extra features for the paid Premium plan. Just be careful when you install the Free plan. Avast will try to throw in some costly extra features during installation that you probably don’t want.

2. Bitdefender Virus Scanner

Bitdefender Free Mac Antivirus

Bitdefender doesn’t come with many bells and whistles, but it’s still a viable option as a free antivirus software for Mac. This antivirus is especially great for scanning specific files or apps. It also allows you to omit files, making for a speedy scanning process. If it does happen to find a threat, Bitdefender will quarantine or remove it.

Bitdefender doesn’t run by itself, so you’ll need to manually prompt Bitdefender to perform scans. Fortunately, virus signatures are automatically updated every hour to ensure that you have the latest protection.

The only downside to Bitdefender is that it lacks the tools to protect your Mac online. For protection against dangerous websites or tricky phishing emails, you’ll have to look into a more well-rounded antivirus software instead.

3. Avira Free Antivirus for Mac

Avira Mac Free Antivirus

Avira doesn’t just think about the security of your Mac, but it considers the security of Windows-users as well—this makes it one of the best free antivirus programs for both Mac and Windows. It detects malware that can damage a Mac or Windows computer. This way, you don’t accidentally pass on any malware to any PC-using friends.

Despite the fact that Avira is free, it still has tons of useful features. The real-time scanner is capable of scanning your entire computer or just specific files. If you want a more hands-off approach, you can even schedule the scanner to run at certain times.

The full system scan can take a long time and tends to slow down your computer. You’ll have to perform less-involved quick scans if you want to keep your Mac’s performance up.

4. Sophos Home Free

Sophia Home Free Mac Antivirus

By default, Sophos’ Home Free plan comes with a 30-day trial of Sophos’ Home Premium. You don’t have to buy the Premium version once the trial ends, but you’ll lose a couple of Premium features you might’ve gotten used to. Either way, you can still get by with just the Free plan.

Sophos Home constantly keeps tabs on the status of your Mac. It searches and detects any ransomware, malware, viruses, Trojans, worms, bots, and more that can harm your computer.

Sophos Home also comes outfitted with parental controls that allow you to prevent your children from accessing certain websites. You can have up to three devices (both Mac or Windows) on the Free plan, ensuring that everyone in your family has protection.

5. AVG

AVG Mac Free Antivirus

AVG’s free protection is powerful enough to secure your Mac from malware, and protect you when you’re online. It can also prevent you from acquiring and passing on any PC or Android viruses. AVG automatically updates its virus database, so you’ll always have the most effective security.

That said, you won’t need to open AVG on a daily basis. It runs in the background, and covertly deflects any threats, such as malicious emails, websites, and downloads.

If you’re looking for any parental controls or webcam blockers, the free version of AVG won’t have it. It just offers scanning and detection features, which is just good enough for basic security needs. Unfortunately, the full system scan does cause your computer to perform slowly, and you can expect it to take several minutes (or hours) to complete.

6. Malwarebytes

Malwarebytes Mac Free Antivirus

Malwarebytes promises to scan a typical Mac in just under 30 seconds. If it finds anything suspicious, it’ll provide you with a list of potential threats. You can either choose to have Malwarebytes ignore it, or place the files into quarantine and delete them.

The Free version of Malwarebytes can help you detect malware threats quickly, but it doesn’t offer enough protection to use on its own. You’ll also get a 14-day trial of Malwarebytes Premium, so you’ll have to pay if you want access to all of its features in the future. By itself, the Free plan is just a bare-bones antivirus software—it simply identifies and erases any malicious threats.

7. Comodo Antivirus

Comodo Mac Free Antivirus

Komodo offers an easy-to-use interface and free protection for your Mac. Checking a file or app for viruses is as simple as dragging and dropping it into Comodo. It comes with a quick scan that finishes in minutes, and a total system scan that might take an hour or two to complete. The scheduler lets you pick and choose the times you want to perform scans so your computer won’t get bogged down at the wrong time.

Like some of the other antiviruses on this list, Comodo also stays up-to-date on the latest virus signatures to protect you from all types of viruses. Just remember that Comodo doesn’t automatically protect you online. You’ll have to download the free browser extension Comodo Online Security if you want to block any dangerous websites.

Finding the Best Free Antivirus for Mac

Many Mac users think that their device is resistant to viruses, however, that’s just not the case. Even if your Mac is less likely to contract a virus, it’s still possible for you to pass along malware to Windows and Android users. It doesn’t hurt to install a free antivirus for your Mac to prevent any security breaches.

If you’re looking to protect your Windows PC as well, check out our list of the best antivirus for Windows 10.

Read the full article: The 7 Best Truly Free Antivirus Software for Mac

via MakeUseOf.com
The 7 Best Truly Free Antivirus Software for Mac

Dark Empire (Trailer)

Dark Empire (Trailer)

Link

Animator Ian Wilkins is working on a new Star Wars-inspired series, a fan film project based on Tom Veitch and Cam Kennedy’s beloved Dark Empire comics, in which Palpatine returns from the dead and Luke struggles with his dark side. The awesome music in the trailer comes from composer Daniel Ciurlizza.

via The Awesomer
Dark Empire (Trailer)

A new laravel media manager

An alternative to spatie’s media library and plank’s mediable package.
This package allows you to upload attach media to your eloquent models via a "many to many" relationship. It also has image manipulation is built in which makes use of intervention/image under the hood.
The perfect engine for CMS applications which require a media manager.
via Laravel News Links
A new laravel media manager

Building a Vue SPA With Laravel Part 6

Building a Vue SPA With Laravel Part 6

We are going to finish the last part of basic CRUD: creating new users. You have all the tools you need from the previous topics we’ve covered thus far, so feel free to try to work on creating users and comparing this article to your efforts.

If you need to catch up, we left off in Part 5 with the ability to delete users and how to redirect users after successful deletion. We also looked at extracting our HTTP client to a dedicated module for reuse across the application.

Here’s the series outline thus far:

Adding the Create Users Component

First up, we’re going to create and configure the frontend component for creating new users. As a reminder, this tutorial isn’t focused on permissions; we are using the built-in Laravel users table to demonstrate working with CRUD within the context of a Vue Router project.

The UsersCreate.vue component is similar to the UsersEdit.vue component we created in Part 4:

<template> <div> <h1>Create a User</h1> <div v-if="message" class="alert"></div> <form @submit.prevent="onSubmit($event)"> <div class="form-group"> <label for="user_name">Name</label> <input id="user_name" v-model="user.name" /> </div> <div class="form-group"> <label for="user_email">Email</label> <input id="user_email" type="email" v-model="user.email" /> </div> <div class="form-group"> <label for="user_password">Password</label> <input id="user_password" type="password" v-model="user.password" /> </div> <div class="form-group"> <button type="submit" :disabled="saving">  </button> </div> </form> </div> </template> <script> import api from '../api/users'; export default { data() { return { saving: false, message: false, user: { name: '', email: '', password: '', } } }, methods: { onSubmit($event) { this.saving = true this.message = false } } } </script> <style lang="scss" scoped> $red: lighten(red, 30%); $darkRed: darken($red, 50%); .form-group { margin-bottom: 1em; label { display: block; } } .alert { background: $red; color: $darkRed; padding: 1rem; margin-bottom: 1rem; width: 50%; border: 1px solid $darkRed; border-radius: 5px; } </style> 

We added the form and inputs and stubbed out an onSubmit method. The rest of the component is identical to the UsersEdit component, except for the addition of the password input. A password is required to create a new user. We skipped having a password field when editing a user because typically, you have a specific password change flow that is separate from editing a user.

Note that we could spend some time extracting the form in both the create and edit views to a dedicated component, but we will leave that for another time (or feel free to work on that independently). The only difference is populating the form with existing user data (including user ID) vs. an empty form for creating users.

Configuring the Route

Next, we need to configure the Vue route and link to the page so we can navigate to the user creation screen. Open the resources/assets/js/app.js file and add the following route (and import):

import UsersCreate from './views/UsersCreate'; // ... const router = new VueRouter({ mode: 'history', routes: [ // ... { path: '/users/create', name: 'users.create', component: UsersCreate, }, { path: '/404', name: '404', component: NotFound }, { path: '*', redirect: '/404' }, ], }); 

Next, let’s add the link to the new component in the assets/js/views/UsersIndex.vue component:

<template> <div class="users"> <!-- ... --> <div> <router-link :to="{ name: 'users.create' }">Add User</router-link> </div> </div> </template> 

You should now be able to recompile your frontend assets with yarn watch and see the following:

Submitting the Form

At this point, we don’t have a backend route, so submitting the form via the API client will return a 405 Method Not Allowed. Let’s wire up the onSubmit() handler in the UsersCreate component without defining the route, which will allow us to see the error state of submitting the form quickly:

methods: { onSubmit($event) { this.saving = true this.message = false api.create(this.user) .then((data) => { console.log(data); }) .catch((e) => { this.message = e.response.data.message || 'There was an issue creating the user.'; }) .then(() => this.saving = false) } } 

Our form logs out the response data at this point, catches errors and then finally toggles saving = false to hide the “saving” state. We attempt to read the message property from the response or provide a default error message.

Next, we need to add the create() method to the API module we import in the component located at resources/assets/js/api/users.js:

export default { // ... create(data) { return client.post('users', data); }, // ... }; 

The form will send a POST request to the UsersController via the client. If you submit the form, you will see an error message with a 405 response error in the console:

Adding the API Endpoint

We are ready to add the API endpoint in Laravel for creating a new user. It will be similar to editing an existing user. However, this response will return a 201 Created status code.

We will start by defining the route for storing a new user via the API:

// routes/api.php Route::namespace('Api')->group(function () { // ... Route::post('/users', 'UsersController@store'); }); 

Next, open up the app/Http/Controllers/UsersController.php file and add store() method:

public function store(Request $request) { $data = $request->validate([ 'name' => 'required', 'email' => 'required|unique:users', 'password' => 'required|min:8', ]); return new UserResource(User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => bcrypt($data['password']), ])); } 

When a user is valid, the new user response looks similar to the following when you submit the form:

{ "data": { "id":51, "name":"Paul Redmond", "email":"paul@example.com" } } 

If you submit invalid data, you will get something similar the following message:

Handing Success

We already handle what happens with a server error or a validation error; let’s finish up by handling a successful user creation. We’ll clear the form and redirect to the user’s edit page:

onSubmit($event) { this.saving = true this.message = false api.create(this.user) .then((response) => { this.$router.push({ name: 'users.edit', params: { id: response.data.data.id } }); }) .catch((e) => { this.message = e.response.data.message || 'There was an issue creating the user.'; }) .then(() => this.saving = false) } 

Here’s the final UsersCreate.vue component:

<template> <div> <h1>Create a User</h1> <div v-if="message" class="alert"></div> <form @submit.prevent="onSubmit($event)"> <div class="form-group"> <label for="user_name">Name</label> <input id="user_name" v-model="user.name" /> </div> <div class="form-group"> <label for="user_email">Email</label> <input id="user_email" type="email" v-model="user.email" /> </div> <div class="form-group"> <label for="user_password">Password</label> <input id="user_password" type="password" v-model="user.password" /> </div> <div class="form-group"> <button type="submit" :disabled="saving">  </button> </div> </form> </div> </template> <script> import api from '../api/users'; export default { data() { return { saving: false, message: false, user: { name: '', email: '', password: '', } } }, methods: { onSubmit($event) { this.saving = true this.message = false api.create(this.user) .then((response) => { this.$router.push({ name: 'users.edit', params: { id: response.data.data.id } }); }) .catch((e) => { this.message = e.response.data.message || 'There was an issue creating the user.'; }) .then(() => this.saving = false) } } } </script> <style lang="scss" scoped> $red: lighten(red, 30%); $darkRed: darken($red, 50%); .form-group { margin-bottom: 1em; label { display: block; } } .alert { background: $red; color: $darkRed; padding: 1rem; margin-bottom: 1rem; width: 50%; border: 1px solid $darkRed; border-radius: 5px; } </style> 

Conclusion

We have a basic working form to create new users that only have basic validation logic. This tutorial walks you through the basics of doing CRUD in Vue.

As homework, you can define a dedicated user form component for rendering a form for creating a new user and editing existing users if you think it’d be valuable reuse. We are okay with the duplication for now but would be good practice for creating reusable components.

I’d also like to emphasize that I stripped out many nice things we could have done, such as using a CSS framework like Bootstrap, etc. I decided to focus on the core aspects of someone that has never worked with Vue Router or building a single page application before. While to some, the tutorial might feel trivial, to beginners, it focuses on some essential concepts that differ from building traditional server-side applications.


Filed in: News


Enjoy this? Get Laravel News delivered straight to your inbox every Sunday.

No Spam, ever. We’ll never share your email address and you can opt out at any time.

via Laravel News
Building a Vue SPA With Laravel Part 6

6 Things to Do Before a Product Launch

The best way to bring much-needed attention to your new product or service is by doing a product launch.

Even with an awesome product, a great deal of its success depends on the launch, as the hype surrounding it can bring you more sales, more happy customers, and a better reputation for your company.

Still, having a good product launch is a daunting task, which takes a lot of research and planning in order to be successful and if you don’t go through all the key steps to do it right, you are risking the future of your product.

Here are a few things you shouldn’t skip doing when launching your new product.

Research the market

For a new product to be successful in the market, you should do your research well. There are three key points that need to be considered even before developing the product.

  • Audience. No product will succeed if no one wants to use it, so think about your potential customers and their needs. Is there a pain point your product will solve?
  • Competition. Are there any other businesses offering the same or similar product? How are you going to differentiate yourself from them? What makes your product unique and special?
  • Finances. How much will you need to invest upfront and what are the risks attached to the new product launch?

Once you’ve found the answers to these questions, you will be able to create both a unique selling proposition and a value proposition.

This means you will be able to provide your customers with answers on why your product is better than the one your competitors are offering and what they’ll get in return for their money.

Plan ahead

new product launch

For a product launch to succeed, one must plan ahead.

There are numerous aspects which need to be included in the plan, from product development and testing to marketing and pricing.

Not all the details have to be known at the early stages of the planning, but the timeline and the framework of the activities should be mapped out and defined.

As gaining attention is your main goal, you will need to gear up early and focus on building relationships with influencers, as well as brainstorm all the creative elements which are going to get you publicity. Making a schedule will make it easier for your teams to check their progress and prioritize tasks, and if followed, a plan will decrease the odds of working under stress and launching late.

Find the right influencers

With all the impact social media channels have nowadays, you should focus on finding influencers who can easily approach your target market.

Stats say that 49% of consumers rely on the influencer recommendation on social media, so be sure to provide influencers with the exclusive news and samples of your products.

Encourage, entice, and incentivize them to put their reviews of your products on their blogs, video, and social media channels. This can bring the right kind of attention to your launch and attract the right customers.

See Also: 5 Reasons Why You Should Consider Instagram Advertising

Promote the launch

product launch checklist

Before the product hits the market, you need to educate your potential customers on its features and advantages and build hype around its arrival. Here are some ideas on how to best achieve this:

  • Update your social media followers regularly on your progress.
  • Write a blog and educate your customers on products features.
  • Use videos, demos and whitepapers to give detailed info on your product.
  • Submit guest posts to sites relevant in your industry.
  • Have social media contests offering your customers a chance to be the first to get a sample of your product.
  • Provide the industry experts and influencers with samples of your product and freebies.
  • Make a countdown timer on your website and publish teaser videos and photos.

If possible, it is the best to tie your launch day to a larger event, such as an industry event or trade show, to get the most publicity for launching.

Get feedback

The best way to know whether your product is going to be a success once it reaches the market is by soft-launching it to a portion of your target audience. By testing your product in your product market, you will gather valuable information. You can then use this to make the necessary adjustments to your product or campaign.

There are many different ways to get customer feedback that can help you solve the customers’ complaints and issues from the moment your new product reaches the market. Statistics show that a dissatisfied customer shares their experience with 16 people on average, while only 1 out of 26 will actually complain to the company. By using different social media listening and other available tools, you can now respond to both the positive and negative feedback in a timely manner and do wonders for your brand’s reputation.

Keep the fire alive

The launch is hardly over when the launch day is done.

To get the most out of it, plan ahead on how to best exploit it afterward.

You can achieve this by posting the news about your latest product and the benefits it brings into your customers’ lives. Also, think about the ways to involve your customers into this post-launch campaign and motivate them to post videos and photos of themselves using and enjoying your product.

As a successful launch is essential to the positioning of your product in the market and your brand’s reputation, make sure to plan it carefully and not leave anything out. Use as many promotional tactics you can handle, because when it comes to a product launch, you can not over-market it.

The post 6 Things to Do Before a Product Launch appeared first on Dumb Little Man.


via Dumb Little Man – Tips for Life
6 Things to Do Before a Product Launch

The First Mulan Trailer Teases a Sweeping Warrior’s Adventure

Mulan’s ready to fight.
Image: Walt Disney Studios
Trailer FrenzyA special place to find the newest trailers for movies and TV shows you’re craving.  

The first trailer for Disney’s live-action remake of Mulan is here, and it’s gorgeous.

In a sweeping ninety seconds, the trailer showcases big, beautiful settings and an attention to detail that makes the remake look more like a period film than a Disney adaptation. Mulan, played by Yifeu Lu, goes from quiet daughter to epic warrior. The trailer teases really sweeping fights, too, real Wuxia-type stuff, and you can absolutely see that stylistic influence on the shooting here.

So far as music goes, there’s no singing, but hints of the animated film’s music are heard in the soundtrack. Which, if that’s the approach the movie takes, is fairly understated for what looks to be a pretty self-serious film.

Check out the first trailer, and get ready: Mulan comes to theaters March 27, 2020.


For more, make sure you’re following us on our new Instagram @io9dotcom.

via Gizmodo
The First Mulan Trailer Teases a Sweeping Warrior’s Adventure

Laravel Prequel (Beta)

Laravel Prequel

Laravel Prequel 0.5.0-beta

Latest Stable Version Scrutinizer Code Quality Total Downloads

What is Laravel Prequel exactly?

Laravel Prequel is meant to be a database management tool to replace the need for separate standalone database tools like phpMyAdmin, Sequel Pro or MySQL Workbench. With its (hopefully) clear and concise UI, Prequel is to be a modern and lightweight database browser/tool ready for the web of the future. Prequel’s design is purposefully based on that of Laravel Telescope because (web-)developers today have enough to learn and master already, so let’s help eachother out and make sure to not add anything virtually useless to that huge pile of knowledge.

Prequel Screenshot

Clear and concise database management

Laravel Prequel (Beta)

Laravel Prequel has entered v0.5.0-beta, that means I deemed it ready enough to be tested by the public. But note that a beta release is still a beta release and is not a stable release so it is definitely not recommended to be used in production environments.

Luckily, Prequel has taken precautions, Prequel automatically disables itself in a production environment as people looking directly into your database is – let’s just say – not ideal.

Installation (the beta release way)

To install follow the instructions below.
$ composer require protoqol/prequel $ php artisan vendor:publish --tag=config $ php artisan vendor:publish --tag=public
When installation and publishing is done navigate to /prequel in your browser to see Prequel in action!

Issues, bugs and feature requests can be reported here!

Docs coming soon!

Credits

License

The MIT License (MIT). Please see License File for more information.

via Laravel News Links
Laravel Prequel (Beta)

New Features for Querying Polymorphic Relations in Laravel 5.8.27

New Features for Querying Polymorphic Relations in Laravel 5.8.27

The Laravel team released v5.8.27 with a whereHasMorph() method to work with polymorphic Eloquent relationships (MorphTo).

The new whereHasMorph() and corresponding methods make it possible to query polymorphic relationships with something like the following:

Comment::whereHasMorph('commentable', [Post::class, Video::class], function ($query) { $query->where('title', 'foo'); })->get(); 

Which produces something like the following query:

select * from "comments" where ( ( "commentable_type" = 'App\Post' and exists ( select * from "posts" where "comments"."commentable_id" = "posts"."id" and "title" = 'foo' ) ) or ( "commentable_type" = 'App\Video' and exists ( select * from "videos" where "comments"."commentable_id" = "videos"."id" and "title" = 'foo' ) ) ) 

All the examples shown here are from the pull request (#28928) description, which explains it in further detail, so check out the full notes:

By creating a temporary BelongsTo relationship for each type and allowing relationship instances as the first argument of has(), we can reuse most of the existing code.

The type is passed as the second argument to the closure, which simplifies queries with different constraints:

Comment::whereHasMorph('commentable', [Post::class, Video::class], function ($query, $type) { if ($type === Post::class) { // $query-> } if ($type === Video::class) { // $query-> } }); 

Last, providing a wildcard as the second argument will let Laravel get the possible types from the database:

Comment::whereHasMorph('commentable', '*', function ($query) { $query->where('title', 'foo'); })->get(); 

Next, the mix asset URL is configurable via the MIX_ASSET_URL environment variable.

Next, you can set the RedisManager default driver with the setDriver() method.

You can see the full list of fixes below, and the whole diff between 5.8.26 and 5.8.27 on GitHub. The full release notes for Laravel 5.8 are available in the GitHub 5.8 changelog:

v5.8.27

Added

  • Let mix helper use app.mix_url config (#28952)
  • Added RedisManager::setDriver() method (#28985)
  • Added whereHasMorph() and corresponding methods to work with MorphTo relations (#28928)

Fixed

Changed

  • Prevented TestResponse::dump() and TestResponse::dumpHeaders() methods from ending execution of the script (#28960)
  • Allowed TestResponse::dump() and TestResponse::dumpHeaders() methods chaining (#28967)
  • Allowed to NotificationFake accept custom channels (#28969)
  • Replace contents of service manifest atomically (#28973)
  • Pass down the serverVersion database connection option to Doctrine DBAL connection (#28964, 1b55b28)
  • Replace self:: with static:: in the Relation::getMorphedModel() (#28974)
  • Set a message for SuspiciousOperationException (#29000)
  • Storing Mailgun Message-ID in the headers after sending (#28994)

Filed in: News


Enjoy this? Get Laravel News delivered straight to your inbox every Sunday.

No Spam, ever. We’ll never share your email address and you can opt out at any time.

via Laravel News
New Features for Querying Polymorphic Relations in Laravel 5.8.27