In this tutorial, we’ll cover uploading a CSV file in Laravel with Livewire. This tutorial is written with the assumption you know how to get a Laravel app up and that Livewire is already installed.
Step 1
Create a new component and view from the command line
Adds file validation. Upload and description are required. The uploaded file must be a CSV or txt file and must not be larger than 1 MB.
$this->upload->store('csv', 'local');
By default, Livewire uploads the file to a temporary folder livewire-tmp/. By running store on our upload we can move the file into more permanent storage (file, s3, etc). The above tells Livewire to store the uploaded file using my local drive defined in config/filesystems.php. Further, it will add the new file within a directory called csv.
Step 3
The view.
<div><formwire:submit.prevent="submit"><divclass="form-group"><label>File</label><inputtype="file"wire:model="upload">
@error('upload') <spanclass="error"></span> @enderror
</div><divclass="form-group"><label>File Description</label><inputtype="input"wire:model="description">
@error('description') <spanclass="error"></span> @enderror
</div><divclass="form-group"><buttontype="submit">Upload</button></div></form><divclass="row"><divclass="col-sm-12">
@if ($saved)
<p>The file with the size of KB has been uploaded!</p><p>The file can be found locally at .
@endif
</div></div>
Pretty basic Livewire stuff on the view side. wire:submit.prevent="save" will the equivalent of event.preventDefault(). Bind upload and description to the public variables in our component above. @error will display any validation errors from our $rules.
After the file is uploaded it can be handled like any other file upload in Laravel. We can output some information about the file with things like $upload->getClientOriginalName() and $upload->getSize()
Need a little extra help with those Regular Expression(regex) functions? Then look no further! Here, I have put together the best top 10 regex cheat sheets for you to download, print and pin to the bathroom wall!!
This cheat sheets will be a great reference when you need to put them in your scripts when you are web scraping and trying to find information or when you need help to authenticate users and passwords!
All the regex cheat sheets in this article are 100% free. All links open a new tab (feel free to open all the links without losing this page!)
This first sheet is from Rexegg.com. The entire list is one that is commonly used Regex expressions in Python and other languages. This list includes Characters, Quantifiers and more. It will even tell you what language this expression can be used in! This makes it a lot easier when you go to write a regex in your language preference. This website really does emphasize looking at the tables for the expressions by keeping the tables bright on a black background. Making it easy to read the table but very difficult to read the information on regex itself.
Pros: Tables are bright and easy to read. Contains a lot of information shorthand to write regex
Cons: Information on the page is very dark and difficult to read.
This second sheet was written by MIT. It is very spartan with no color and straight to the point on what the expressions are and what they do. This is the perfect cheat sheet if you do not want to be distracted by color or graphics. However, since it is very dry in the manner of text, I would not suggest this particular cheat sheet to someone who is just learning regular expressions since the explanations and examples are minimal.
Pros: Clean text, no colors for distraction, contains a lot of information shorthand to write regex
I really love this website! This sheet was put together by Dave Child for regular expressions. It’s a nice quick reference guide pdf you can print in bright pink. It is easy to read and rated ‘E’ for everyone! It includes symbols, ranges, grouping, assertions and more with sample patterns to help get you on your way! Cheatography is one of my favorite websites for cheat sheet because they have so many on so many different topics and in many styles. It’s nice to find a one stop shop for cheat sheets.
Pros: Explains regex easily, uses soft colors, contains a lot of information.
Dev.to is a great place for new and experienced developers! This regex list was written by Catherine on her dev.to profile where she explains regex expressions in Java-script she has compiled with her resources at the bottom of here article.
Pros: Great spot to read someone else’s experience in regex and to gather new resources
Cons: More of an article than an actual pdf to print.
This is another great website for developers! This cheat sheet is also very easy to read and understand. It has additional resources beneath the code written. There are no examples in the post but there is shorthand explanations for each expression, characters and quantifiers. I would not suggest this particular cheat sheet for a beginner.
Pros: Great for those who understand regex and don’t have a need for examples
Cons: Not for Beginners since it has minimal explanation
Cheat Sheet 6: GREP
Here is another one! This one is minimal in color to keep distractions down. Key words are in red and examples are done in yellow. There are minimal explanations in the color keys. This sheet is for the advanced regex user who only needs a quick reference. It is clean and easy to read. It covers all of the information needed to write your own regex!
Pros: Written cleanly, additional resources at the bottom, to the point.
This Regex sheet is a very quick one with only the characters, the meaning and an example. This one is also for the advanced regex user. There is only the bare minimum here and this particular sheet does not contain quantifiers or expressions. There is a link however to a regex character classes cheat sheet.
Pros: Very quick reference of only character in regex
Here is another awesome website to learn Regular expressions from! It goes over what regex is, gives you the list of expressions and gives you 2 separate examples on how regex is used in find numbers and emails. Near the bottom it even give you 3 tools to help you learn how to build a proper regex formula! These test sites will help you not only to build regex but compile it and make sure it running correctly before implementing it into your code.
This regex syntax cheat sheet is on one of my absolute favorite places to learn about web development!! Named Moz:\\a (pronounced Mozilla) this particular guide will walk through not only the syntax but take you to the complete guide on regex! This cheat sheet is rated ‘E’ for everyone! It has clear examples and explanations on beginner and advanced regex characters and expressions.
The final cheat sheet!! This final cheat sheet is from Dataquest. This particular cheat sheet was written specifically for Python!! This pdf is downloadable for free and explains each character and expression in detail. There is a lot of information packed in this pdf each under the proper heading and minimal color for the least number of distractions.
Pros: A lot of information pack in with minimal color.
Cons: Can appear to be overwhelming at first glance to a beginner.
I would like to thank you for taking the time to read this article. I hope that you are able to use at least one of these cheat sheets the next time you need to put a regular expression in your coding! The best way to learn though is to practice!! Good luck with writing your regex!!
2021 is a great time to learn Laravel and improve your knowledge if you’ve been using it. To start the year off we’ve made a list of 21 tutorials on everything from getting started to going deeper with the framework.
Getting Started with Laravel Tutorials
In this step by step Laracasts series, you’ll learn how to build web applications with Laravel. You’ll start with the basics and incrementally dig deeper and deeper, as you review real-life examples. Once complete, you should have all the tools you need.
In this tutorial, you’ll go through building a simple link directory app. It covers everything from planning, setting up your database, Blade views, and more. Join our weekly Laravel newsletter and get this as a free PDF.
As you begin to work with Laravel one thing you should note is how the release process works and when new versions are scheduled to come out.
Laravel Eloquent is an object-relational mapper (ORM) that makes it easy to interact with your database. When using Eloquent, each database table has a corresponding “Model” that is used to interact with that table. In addition to retrieving records from the database table, Eloquent models allow you to insert, update, and delete records from the table as well.
At its core Eager Loading, is telling Eloquent that you want to grab a model with specific relationships that way the framework produces a more performant query to grab all the data you will need. By eager loading, you can take many queries down to just one or two.
In this tutorial, you’ll set up some example relationships and then walk through how queries change with and without eager loading.
In this tutorial, we’ll show you more or less hidden secrets, methods, and properties you might not know to improve your code.
Eloquent ORM seems like a simple mechanism, but under the hood, there’s a lot of semi-hidden functions and less-known ways to achieve more with it. In this tutorial, you’ll see and discover a few tricks you might not know about.
If you’ve been working with Laravel for any time, you probably know the standard methods for creating Eloquent Models like make(), create(), update, and save(). Laravel includes some other methods are that also really useful for creating and updating Models that I feel don’t get enough attention. In this tutorial, you’ll learn about some of these additional methods and see how they might be useful.
Laravel Validation
A core part of any project is understanding how to validate the incoming request from your users and in this tutorial let’s look at how we can setup validation with our controllers, form requests, and rules.
Learn how to work with and test string length validation.
Have I been pwned? is a service created by Troy Hunt that aims to archive all data breaches and then allow you to check and see if your email or username has been included in any breaches. It’s a super helpful service to see if your email or password has been found in a breach and in this tutorial learn how to utilize this data in your Laravel Validation
Laravel Helpers
Laravel provides many excellent helper functions that are convenient for doing things like working with arrays, file paths, strings, and routes, among other things like the beloved dd() function. You can also define your own set of helper functions for your Laravel applications and PHP packages, by using Composer to import them automatically.
There are a ton of helper methods in Laravel that make development more efficient. If you work with the framework, I encourage you to see what helpers you can introduce in your day-to-day work. In this post, I’d like to point out a few of my favorites.
Going Deeper
In this tutorial, learn all about Laravel Jobs and Queues by building a simple analytics app.
Sanctum is Laravel’s lightweight API authentication package. In this tutorial, we’ll be looking at using Sanctum to authenticate a React-based single-page app (SPA) with a Laravel backend.
Laravel Model events allow you to tap into various points in a model’s lifecycle, and can even prevent a save or delete from happening. The Laravel model events documentation outlines how you can hook into these events with event classes, and this article aims to build upon and fill in a few additional details on setting up events and listeners.
Having a fast test suite can be just as important as having a fast application. As a developer, getting feedback quickly about the state of your code allows for a much quicker development turnaround. Here we are going to run through some tips you can implement today to make your tests run faster.
In this tutorial, you will create a test case to test the user model and a seeder to seed ten users, and each is following one user into the database.
In this tutorial, get a quick jumpstart on learning how to use routing in your Laravel applications.
Laravel comes with a feature called model factories that are designed to allow you to quickly build out “fake” models. These have several use cases with the two biggest being testing and database seeding. Take a deeper look at this feature in this tutorial
Many great developers could improve and gain some productivity and better tooling in their Terminal, so take a look at this tutorial for improving your productivity.
Wrap up
2020 was quite a strange year for everyone but even during the pandemic Laravel continued releasing new versions, making improvements, and getting better. In 2021, look for the release of Laravel 9 and 10, as well as more conferences, and hopefully more in-person meetups as things go back to normal.
BRANDMADE.TV takes us inside the Zippo lighter factory for a look at how they create their iconic windproof lighters. The process starts out with rolls of brass which are shaped to form each lighter’s case before it’s chromed. The interior is formed from steel, then brass, flint, a wick, and cotton are added to complete the assembly.
I mean, except for the fact that sorting something twice is TERRIBLY optimized
So how bad is this? Let’s find out.
Some test data
We are defining a table santa, where we store peoples names (GDPR, EU Regulation 2016/679 applies!), their behavior (naughty or nice), their age, their location, and their wishlist items.
We are also writing some code to generate data (to evade GDPR, we are using randomly generated test data):
The full data generator is available as santa.py. Note that the data generator there defines more indexes – see below.
In our example we generate one million rows, and assume a general niceness of 0.9 (90% of the children are nice). Also, all of our children have 64 characters long names, a single 64 characters long wish, a random age, and are equidistributed on a perfect sphere.
Our real planet is not a perfect sphere, and also not many people live in the Pacific Ocean. Also, not many children have 64 character names.
Sorting it twice
How do you even sort the data twice? Now, assuming we sort by name, we can run an increasingly deeply nested subquery:
Out of 1 million children, we have around 900k nice children. No indexes can be used to resolve the query.
Let’s order by name, using a subquery:
We can already see that the MySQL 8 optimizer recognizes that this subquery can be merged with the inner query, and does this.
This can be done multiple times, but the optimizer handles this just fine:
We can see using filesort, so while we ask for the query result to be sorted by name twice, it is actually only sorted once.
No sorting at all
We can improve on this, using a covering index in appropriate order:
Having done this, we now see that we lost the using filesort altogether:
The query is now annotated using index, which means that all data we ask for is present in the (covering) index behavior_name, and is stored in sort order. That means the data is physically stored and read in sort order and no actual sorting has to be done on read – despite us asking for sorting, twice.
Hidden ‘SELECT *’ and Index Condition Pushdown
In the example above, we have been asking for s.name and t.name only, and because the name is part of the index, using index is shown to indicate use of a covering index. We do not actually go to the table to generate the result set, we are using the index only.
Now, if we were to ask for t.* in the middle subquery, what will happen?
In the Code 1003 Note we still see the exact same reconstituted query, but as can be seen in the plan annotastions, the internal handling changes – so the optimizer has not been working on this query at all times, but on some intermediary representation.
The column we select on is a column with a cardinality of 2: behavior can be either naughty or nice. That means, in an equidistribution, around half of the values are naughty, the other half is nice.
Data from disk is read in pages of 16 KB. If one row in a page matches, the entire page has to be read from disk. In our example, we have a row length of around 200 Byte, so we end up with 75-80 records per page. Half of them will be nice, so with an average of around 40 nice records per page, we will very likely have to read all pages from disk anyway.
Using the index will not decrease the amount of data read from disk at all. In fact we will have to read the index pages on top of the data pages, so using an index on a low cardinality column has the potential of making the situation slightly worse than even a full table scan.
Generally speaking, defining an index on a low cardinality column is usually not helpful – if there are 10 or fewer values, benchmark carefully and decide, or just don’t define an index.
In our case, the index is not even equidistributed, but biased to 90% nice. We end up with mostly nice records, so we can guarantee that all data pages will be read for the SQL SELECT * FROM santa WHERE behavior = "nice", and the index usage will not be contributing in any positive way.
We could try to improve the query by adding conditions to make it more selective. For example, we could ask for people close to our current position, using an RTREE index such as this:
The ALTER defines a spatial index (an RTREE), which can help to speed up coordinate queries.
The SET defines a coordinate rectangle around our current position (supposedly 15/15).
We then use the mbrcovers() function to find all points loc that are covered by the @rect. It seems to be somewhat complicated to get MySQL to actually use the index, but I have not been investigating deeply.
If we added an ORDER BY name here, we would see using filesort again, because data is retrieved in RTREE order, if the index loc is used, but we want output in name order.
Conclusion
The Santa query is inefficient, but likely sorting twice is not the root cause for that.
The optimizer will be able to merge the multiple sorts and be able to deliver the result with one or no sorting, depending on our index construction.
The optimizer is not using the reconstituted query shown in the warning to plan the execution, and that is weird.
Selectivity matters, especially for indices on low cardinality columns.
Asking for all nice behaviors on a naughty/nice column is usually not benefitting from index usage.
Additional indexable conditions that improve selectivity can help, a lot.
Tens of millions of golf balls are made every year. In this clip from Golf Town, they take us inside one of Titleist’s factories to see how they make their Pro V1 and Pro V1x golf balls. The process starts with a rubber sheet, which is formed and smoothed, then encased in a dimpled urethane covering before painting and packaging.
Ian McCollum of Forgotten Weapons has just released his latest video, in which he examines the firearms used in the original Star Wars movie, released in 1977. They were based on real firearms, but embellished with add-on components and props to look more like science fiction weapons.
I found the presence of an OEG (occluded eye gunsight) particularly interesting, because this was originally developed in South Africa (a few years after Star Wars came out). I used one of the first models to be produced there, and found it intriguing. Basically, one doesn’t look through the sight at all: it’s a solid object that can’t be seen through. One keeps both eyes open, so that with one eye one sees the target, and with the other the red dot image in the otherwise blank sight. One’s brain superimposes the dot on the target, making it relatively easy to hit what one’s aiming at.
I must admit, though, I prefer today’s red dot sights, where I can see the target through the sight.
Many laptops these days sacrifice extensive ports in the favor of being as thin and light as possible, which has its obvious benefits and drawbacks. That’s great for easy portability, but can sometimes be a drag when you need to plug in a device or if you want to make your laptop the center of a more robust home office setup.
There are all sorts of USB-C hubs available, but Vava’s 12-in-1 Docking Station is one of the most port-packed options we’ve seen at an affordable price. Simply plug it into a USB-C port and you’ll add two USB 3.0 ports, two USB 2.0 ports, a USB-C PD port, SD and microSD card readers, an Ethernet port, a 3.5mm headphone jack, DC in port, and two HDMI ports. Those HDMI ports enable dual-monitor 4K/60fps action with compatible laptops, letting you turn your slim notebook into a beast of a home PC.
The Vava 12-in-1 Docking Station usually runs $100, but right now when you clip the Amazon coupon and input the exclusive promo code KINJA1228, you’ll drop it down to just $66. If you need a more robust hub like this, it’s a bargain.
G/O Media may get a commission
This deal was originally published in October 2020 by Andrew Hayward and was updated with new information on 12/28/2020.
Python Dash: How to Build a Beautiful Dashboard in 3 Steps
https://ift.tt/2Kx8Arx
Data visualization is an important toolkit for a data scientist. Building beautiful dashboards is an important skill to acquire if you plan to show your insights to a C-Level executive. In this blog post you will get an introduction to a visualization framework in Python. You will learn how to build a dashboard from fetching the data to creating interactive widgets using Dash – a visualization framework in Python.
Layouts: Layout is the UI element of your dashboard. You can use components like Button, Table, Radio buttons and define them in your layout.
Callbacks: Callbacks provide the functionality to add reactivity to your dashboard. It works by using a decorator function to define the input and output entities.
In the next section you will learn how to build a simple dashboard to visualize the marathon performance from 1991 to 2018.
import dash
import dash_core_components as dcc
import dash_html_components as html
import dash_split_pane
import plotly.express as px
import pandas as pd
from datetime import datetime
We are importing the pandas library to load the data and the dash library to build the dashboard.
The plotly express library is built on top of ploty to provide some easy-to-use functionalities for data visualization.
First we will begin by downloading the data. The data can be accessed on Kaggle using the following link
Step 1: Initializing a Dash App
We start by initializing a dash app and using the command run_server to start the server.
We will start by dividing our UI layer into two parts – the left pane will show the settings window which will include an option to select the year. The right pane will include a graphical window displaying a bar plot.
We construct two div elements- one for the left pane and the other for the right pane. To align the header elements to the center we use the style tag and using standard CSS syntax to position the HTML elements.
If you now start the server and go to your browser on localhost:8050, you will see the following window.
Step 3: Creating the Dropdown Widget and the Graphical Window
Once we have the basic layout setup we can continue with the remaining parts.
We give the dropdown widget a unique id called dropdown-menu and the graphical window is given an id input-graph.
Callbacks
Callbacks are used to enable communication between two widgets.
We define a function called update_output_div which takes the year value whenever the dropdown menu is changed. On every change in the dropdown value the function update_output_div is executed and a bar plot is drawn to indicate the top countries which won the race.
In this blog post you learned how to build a simple dashboard in Python. You can extend the above dashboard to include more widgets and displaying more graphs for further analysis.
2-Acre Vertical Farm Run By AI and Robots Out-Produces 720-Acre Flat Farm
https://ift.tt/3rxeZDx
schwit1 quotes Intelligent Living: Plenty is an ag-tech startup in San Francisco, co-founded by Nate Storey, that is reinventing farms and farming. Storey, who is also the company’s chief science officer, says the future of farms is vertical and indoors because that way, the food can grow anywhere in the world, year-round; and the future of farms employ robots and AI to continually improve the quality of growth for fruits, vegetables, and herbs. Plenty does all these things and uses 95% less water and 99% less land because of it. Plenty’s climate-controlled indoor farm has rows of plants growing vertically, hung from the ceiling. There are sun-mimicking LED lights shining on them, robots that move them around, and artificial intelligence (AI) managing all the variables of water, temperature, and light, and continually learning and optimizing how to grow bigger, faster, better crops. These futuristic features ensure every plant grows perfectly year-round. The conditions are so good that the farm produces 400 times more food per acre than an outdoor flat farm. Another perk of vertical farming is locally produced food. The fruits and vegetables aren’t grown 1,000 miles away or more from a city; instead, at a warehouse nearby. Meaning, many transportation miles are eliminated, which is useful for reducing millions of tons of yearly CO2 emissions and prices for consumers. Imported fruits and vegetables are more expensive, so society’s most impoverished are at an extreme nutritional disadvantage. Vertical farms could solve this problem.