Cheap products tagged with: #using

Massage Oil Candle Variety Pack 3 pcs Swede Arousing Lemon Eucalyptus
15.03 €

Articles tagged with: #using

This are all of our top articles tagged with #using to help you find what you are looking for.

Building your website using Jigsaw

This is my blog post. 11 12 ## Here is a heading 2 13 14 - here 15 16 - is 17 18 - a 19 20 - list 21 22 > Even a blockqute 23 24 [ And a link ] ( Now, if we serve the website again, using the jigsaw command: 1 ./vendor/bin/jigsaw serve When we visit http://localhost:8000/blog/my-first-blog-post we will see the new page we just created.So run the following command to create the directory: 1 mkdir jigsaw-website Our next step is to enter the directory: 1 cd $_ 2 3 // or 4 5 cd jigsaw-website Now we have entered the directory.Let's have a look at this GenerateIndex and see what it is doing: 1 declare ( strict_types = 1 ); 2 3 namespace App\Listeners ; 4 5 use TightenCo\Jigsaw\Jigsaw ; 6 7 class GenerateIndex 8 { 9 public function handle ( Jigsaw $jigsaw) : void 10 { 11 $data = collect ($jigsaw -> getCollection ( 'posts' ) 12 -> map ( function ($page) use ($jigsaw) { 13 return [ 14 'title' => $page -> title, 15 'categories' => $page -> categories, 16 'link' => rightTrimPath ( 17 $jigsaw -> getConfig ( 'baseUrl' ) 18 ) .It should look like this: 1 --- 2 extends : 3 section : content 4 title : My First Blog Post 5 date : 2022-06-21 6 description : This will be your meta description, make sure it isn't too long 7 categories : [ writting ] 8 --- So we have a title of My First Blog Post , a date and description, then categories. The final step in using Jigsaw is to build your website, so it's ready for deployment, and you can do this using the following jigsaw command: 1 ./vendor/bin/jigsaw build production This will build your local site into static content inside build_production , a new directory that appears once this command is run.If we now go back to our blog post, we can add anything we want in the markdown here: 1 --- 2 extends : 3 section : content 4 title : My First Blog Post 5 date : 2022-06-21 6 description : This will be your meta description, make sure it isn't too long 7 categories : [ writting ] 8 --- 9 10| ' : '' }}{{ $page->siteName }}</ title > 13 14 < link rel = "home" href = "{{ $page->baseUrl }}" > 15 < link rel = "icon" href = "/favicon.ico" > 16 < link href = "/blog/feed.atom" type = "application/atom+xml" rel = "alternate" title = "{{ $page->siteName }} Atom Feed" > 17 18 < link rel = "alternate" type = "application/rss+xml" title = "{{ $page->siteName }}" href = "/blog/rss.xml" /> 19 20 @if ($page->production) 21 <!--Open source/_layouts/main.blade.php and refactor the <head> element to look like the following: 1 < head > 2 < meta charset = "utf-8" > 3 < meta name = "viewport" content = "width=device-width, initial-scale=1, shrink-to-fit=no" > 4 < meta http-equiv = "x-ua-compatible" content = "ie=edge" > 5 < meta name = "description" content = "{{ $page->description ??To install this, run the following jigsaw command: 1 ./vendor/bin/jigsaw init blog This will bootstrap an entire blog for you quickly, setting everything up, so all you need to do is focus on writing - but you also have the option to start styling and modifying the templates.Let's have a look at the website and see what we are dealing with: 1 ./vendor/bin/jigsaw serve This should start a PHP server for you on http://localhost:8000 , so visit it and get familiar with your new blog! 1 touch source/_posts/ Then open it in your editor, and this will be your first blog post.So we will add the following: 1 --- 2 extends : _layouts.category 3 title : Writing 4 description : All posts that are about writing.If we open up bootstrap.php , you should see the following code: 1 <?php 2 3 declare ( strict_types = 1 ); 4 5 $events -> afterBuild ( App\Listeners\GenerateSitemap ::class ); 6 $events -> afterBuild ( App\Listeners\GenerateIndex ::class );'<'.'?'.'xml version="1.0" encoding="UTF-8" ?>' !!} 2 < rss version = "2.0" xmlns:atom = "" xmlns:content = "" xmlns:media = "" > 3 < channel > 4 < title >{{ $page->siteName }}</ title > 5 < link >{{ $page->baseUrl }}</ link > 6 < description > <!(), 20 ]; 21 }) -> values ()); 22 23 file_put_contents ( 24 $jigsaw -> getDestinationPath () . '/index.json' , 25 json_encode ($data) 26 ); 27 } 28 } This class is called and handled, so we get the posts collection, map over each one, and return an array of information we want to add to the search index.We need to tell Composer that we want to use Jigsaw, so run the following composer command: 1 composer require tightenco/jigsaw 1 < link rel = "alternate" type = "application/rss+xml" title = "{{ $page->siteName }}" href = "{{ $page->baseUrl. Inside our source directory, we will need to create a new file called source/blog/rss.blade.xml , note the file extension.Delete all the files inside the following directories: source/_categories source/_posts_[CDATA[{{ $page->siteDescription }}]]> </ description > 7 < atom:link href = "{{ $page->getUrl() }}" rel = "self" type = "application/rss+xml" /> 8 < language >{{ $page->siteLanguage }}</ language > 9 < lastBuildDate >{{ $posts->first()->getDate()->format(DateTime::RSS) }}</ lastBuildDate > 10 11 @foreach($posts as $post) 12 < item > 13 < title > <! The beauty of it is that it allows me to write my blog posts in markdown, has a simple blade view to render pages and posts - and can be built to be deployed on any number of services from GitHub Pages to Netlify and beyond. We create a channel with our site information, then we loop through each post and add an item to this channel, creating a valid RSS feed.'website' }}" /> 9 < meta property = "og:url" content = "{{ $page->getUrl() }}" /> 10 < meta property = "og:description" content = "{{ $page->description ??To add a category, create another new file: 1 touch source/_categories/writting.mdInside this file add the following code: 1 {!! Jigsaw has a concept called Listeners that runs after specific events during the build process of the website. You can change the configuration for your website inside the config.php file, so if you open it up and change the values such as siteName and siteDescription if you restart the site, you should see your changes reflected.Insert analytics code here --> 22 @endif 23 24 < link href = ",300i,400,400i,700,700i,800,800i" rel = "stylesheet" > 25 < link rel = "stylesheet" href = "{{ mix('css/main.css', 'assets/build') }}" > 26 </ head > Now we can look at creating a new post for our website. Let's add an RSS feed to our website now. We will use one of the ones built by Tighten themselves called blog . As you can see, we have two parts to the markdown file, the front matter and the actual content.'/rss.xml' }}" /> So inspecting this code, we already have a feed - the atom feed. Now we can start thinking about how we might write our content.$post->title !!}]]> </ title > 14 < link >{{ $post->getUrl() }}</ link > 15 < guid isPermaLink = "true" >{{ $post->getUrl() }}</ guid > 16 < description > <! As you can see, we added the following snippet to point to our RSS feed. So we have covered how to write content, which in fairness, wasn't too taxing. Getting started with Jigsaw is much simpler than you might imagine, so let's walk through the setup together.To add a link to the feed, edit the main layout to add the link in the head of our html .$page->siteDescription }}" > 6 7 < meta property = "og:title" content = "{{ $page->title ? Like the posts, this is also split into two parts. We have two registered listeners, one that will generate a sitemap for us and another that will generate an index for us. You will also notice a config option called collections . Once this process has run, we have a few options.Because we all know that we need to rebuild our website before we finish that blog post we have been meaning to write...The documentation has instructions on deploying to: So pick your desired provider for hosting, and set it up.$post->getContent() !!}]]> </ content:encoded > 18 < dc:creator xmlns:dc = "" >{{ $post->author }}</ dc:creator > 19 < pubDate >{{ $post->getDate()->format(DateTime::RSS) }}</ pubDate > 20 </ item > 21The index is used in the website's search function - something that comes as part of the blog template.

Fast Paginate for Laravel

Using Fast Paginate, you can use the same pagination API available in Laravel via the fastPaginate() method: 1 // Traditional built-in pagination 2 Model :: query () -> paginate () 3 4 // Fast paginate has the same method signature 5 Model :: query () -> fastPaginate () 6 7 //Relationships are supported 8 User :: first () -> posts () -> fastPaginate (); If you'd like to learn more about the techniques used in this package, check out Efficient Pagination Using Deferred Joins by Aaron Francis. Fast Paginate provides you with a more efficient way of paginating while still using the traditional offset/limit method. — Aaron Francis (@aarondfrancis) July 7, 2022

The State of Laravel Survey 2022

Each year Tobias Petry leads a community effort to collect information on the state of the Laravel community by running a survey.Let's have a look through the statistics for last year to understand where we are coming from: Various statistics were gathered from this survey, from location to gender and team size - all of which are interesting statistics. The years of programming experience is interesting, and we have the majority of submissions sitting between 2 and 10 years - with 10-20 years leading closely behind. You can contribute to this year's survey here, and help get more insights into the community.It isn't a huge difference between the main competitors - and I am very interested to see what the 0.18% use 👀 So as you can see, the stats aren't anything that will change your mind - but looking through them, we can understand where our fellow developers are, giving us an insight into our market. Let's compare this to their Laravel experience: So the trend here is around what you would expect. It is a fantastic initiative with honest intention and insights that we as a community need. This is pretty well balanced, and you can see the effect of development tooling being focused around the Mac in the Laravel community having a big impact here.Many developers with 2-5 years of experience are using Laravel, which is very similar to the years of programming experience. Let's compare the usage of different PHP versions people are using next.This survey attempts to gain insight into the representation of this outstanding community's diverse technologies and behaviors. Let's see what we can do this year? It is good to see this statistic leaning this way.More and more people moving their PHP versions forward is a massive step for the PHP community as a whole.The most significant amount of contributions for last year did come from Europe, but the creator of the survey is from this continent, so perhaps it is an inadequate representation for everywhere.It is an effort to gain insights into where we are as a community so that we might understand where we are.Instead, it is a simple way for us as the Laravel community to understand where we are - and how we might be able to move forward. Code editors is another interesting one. Lastly, let's look at the Operating System usage.It is a fantastic product, and it is good to see so many in the community investing in quality tools.

Using Scout APM to Monitor a Laravel Application

The next thing to do is to add the low-overhead monitoring agent to your project’s dependencies, this can be done with a single command in your shell: 1 composer require scoutapp/scout-apm-laravel This command will install two packages: scout-apm-laravel and scout-apm-php. The main overview page The first page that you are presented with when you log into Scout is the overview page (shown below) which gives you a clear, clutter-free, snapshot of the health and performance of your application in one quick glance.To do that, open up your project’s .env file in your favourite text editor and add the following three lines to the end of the file: 1 SCOUT_MONITOR=true 2 SCOUT_KEY=”enter your Agent Key here” 3 SCOUT_NAME=”enter the name of you application here” You can find your account’s Agent Key on the settings page of Scout. Alerting Like all good monitoring solutions, Scout provides you with a sophisticated alerting system which can be configured to send certain people alerts when endpoint response times or memory usage metrics go over a certain threshold. Beyond the basics Now that we’ve covered the basics of Scout and shown you the main areas of the system that you would typically use day in, day out, let’s now switch our attention to some of the more advanced features which put Scout ahead of the crowd in the APM space. Endpoints and Traces Scout primarily provides application performance metrics at two levels. Insights tabs A great place to start if you are trying out Scout for the first time are the insights tabs. Deploy tracking Did this performance issue that you are seeing suddenly start happening after the last deploy? Custom Context and Trace Explorer Why does this performance issue only happen at 2:00AM on Tuesday night from a Brazlian IP address? Setup To get started monitoring your Laravel applications you will first of all need a Scout account. Error Monitoring Whether you are using Sentry, Honeybadger, Bugsnag, or Rollbar for your error monitoring, then we have you covered! If you take a look at the screenshot below, you can clearly see that on the 3 occasions that this ForgetPasswordController endpoint was accessed 78% of the 2,371ms mean request time was spent in the controller layer indicating that would be the first place to investigate if we wanted to try to improve this sluggish endpoint. So you’ve created a Scout account, hooked up the monitoring agent, but where do you start with diagnosing your application’s performance issues? Custom Instrumentation Are you using libraries outside of Laravel that we don’t currently instrument? These pages are where you will spend most of your time in Scout, and they give you the sort of visibility that is essential when trying to understand your performance issues.Scout APM is a Laravel application performance monitoring tool that ties performance anomalies directly to endpoints, saving developers hours of time spent on troubleshooting and debugging. Scout recently expanded its service offerings to include microservices and managed service monitoring for PHP applications, giving you more cohesive and actionable observability metrics. The trace explorer’s multi-filter charts (shown above) allow you to examine endpoints that match criteria that you have defined, and then you can see all the traces that match these filters in the Transaction Traces part of the screen. The chart is highly configurable, allowing you to change the time period and toggle which metrics you want to see. By default, the alerting system will send notifications to users in notification groups via email, but it can also be configured to work with third party services such as Slack, VictorOps, PagerDuty etc. with our webhook feature. As you can see Scout APM brings a very mature APM monitoring solution to the PHP and Laravel communities. Deploy tracking also allows you to see details such as how many commits were involved in the deploy and which branch the commits came from. The setup process is similar regardless of which of these services you use, and all it involves is adding the API token on the settings screen of Scout. The second perspective that Scout primarily presents metrics from is at the Trace level.These sorts of operations are easy to do in the trace explorer with custom context, and they help you to get to the bottom of those hard-to-diagnose, time-consuming performance issues.You can reach Endpoint and Trace pages either by coming directly from the main overview page and insights tabs, or by clicking on the Web Endpoints link at the top of the page (shown below). Used defined custom context allows you to tell us what you need to see. The next thing to do is to define some configurations settings to link the agent to your account.These kinds of difficult (but common) performance issues can be tackled with one of the most powerful features of Scout: the trace explorer being used in conjunction with user defined custom context.

Simple Comments Package for Laravel

Using the HasComments trait on your models, you can quickly add comments attributed to users: 1 use RyanChandler\Comments\Concerns\HasComments ; 2 3 class Post extends Model 4 { 5 use HasComments ; 6 } Given a post model, you can add a comment using the following method: 1 $post = Post :: first (); 2 3 $post -> comment ( 'Hello, world!' ); The above example is automatically attributed to the logged-in user.You can also assign a comment to a specific user: 1 $post -> comment ( 'Hello, world!' , user : $user); This package also supports comment parent threads, meaning a comment can belong to another comment.

Five WebSocket challenges to building audience engagement features at scale

Live interactions such as virtual polls, quizzes and Q&A sessions, tipping performers, interactive presentations, breakout rooms, or chat can be the secret sauce that keeps customers engaged and loyal to your product.

Validate Your App on the Frontend With Laravel Dry Run Requests

You can start using this validation package by either adding a DryRunnable trait to a form request or using $request->validate() directly: 1 class StoreUserRequest extends FormRequest 2 { 3 use DryRunnable ; 4 5 public function rules () : array 6 { 7 return [ 8 'email' =>[ 'required' , 'string' , 'min:2' , 'max:255' , 'unique:users' ], 10 'nickname' => [ 'nullable' , 'string' , 'min:2' , 'max:255' ], 11 ]; 12 } 13 } On the frontend, you need to send the X-Dry-Run header to validate form input before submitting the whole form:Using this package, you can hit the endpoint users are using to enter a form and get real-time feedback with 100% validation accuracy: The way it works under the hood is that it runs validation logic for a controller but skips the controller action.then ( response => response.status); To learn more about all the features in this package, including Inertia.js support and advanced features, check out the laravel-dry-requests package on GitHub.The Laravel Dry Requests package checks if your requests would pass validation if you executed them ( 3 '/users' , 4 { username: 'Agent007' }, 5 { headers: { 'X-Dry-Run' : true } } 6 ) 7 .

Laravel Pint

1 ./vendor/bin/pint You should see an output similar to the below: We have lift off 🚀 So let's now change our preset to PSR-12 and check the output: 1 { 2 "preset" : "psr12" 3 } Rerun pint and let's see the output:But let's have a look at doing it with a fresh new Laravel project, so create a new project: 1 laravel new pint-demo Open this new project in your terminal and install pint: 1 composer require laravel/pint --dev With our brand new Laravel application, let's configure a preset to Laravel. To get started with this package, install it using composer: 1 composer require laravel/pint --dev Once installed, it will just run with no configuration required. 1 ./vendor/bin/pint You should see the following output: Let's inspect this a little.So let us rerun pint, but this time we want to do a dry run to see what will be changed: 1 ./vendor/bin/pint —test Awesome right?So you can run: 1 ./vendor/bin/pint With no configuration, no setup, or thought or effort - my project is instantly assessed for PSR-12 styling and automatically fixed.Create a pint.json file and add: 1 { 2 "preset" : "laravel" 3 } Now run pint:Let's turn off braces in our pint.json file: 1 { 2 "preset" : "psr12" , 3 "rules" : { 4 "braces" : false 5 } 6 } That is it! Let's take a quick look at setting up a new pint config using a preset. From the readme, "Laravel pint is a zero-dependency PHP code style fixer for minimalists - built on top of PHP-CS-Fixer. We get excellent output, much like when using GitHub, of the changes that would be made." As soon as I read this, I got excited, and I mean very excited. I don't know about you, but this is a must-install for all of my upcoming projects, packages, and anything else I work on.In modern PHP, we have been going through a phase of honing our craft, making our code stricter and better tested, and ensuring we have a consistent code style.Let's do a dry run again, but this time we want to ask for verbose output using the -v flag:Or with PHP CS Fixer, you had to create a config file, then go through and create a finder to add rules to a PHP file in an array.This package is no different and will automatically test and fix your code style based on a preset.

Laravel Pint v1.0 Released

composer require laravel/pint --dev Once Pint has been installed, the pint binary will be available in your project's vendor/bin directory: ./vendor/bin/pint By default, Pint does not require any configuration and will fix code style issues in your code by following an opinionated coding style of Laravel:It is possible to see the changes made in more detail using the -v option: In addition, if you would like Pint to simply inspect your code for style errors without actually changing the files, you may use the --test option: Be sure to check out the Pint documentation at you may have noticed a few weeks ago, we've open-sourced our latest package - Laravel Pint: an opinionated PHP code style fixer for minimalists. Of course, you can still use Pint on existing PHP projects by using Composer to install Pint:Pint is built on top of PHP-CS-Fixer and makes it simple to ensure that your code style stays clean and consistent.

Super-charging Laravel Forge Deployments with Environment Variables

A default deployment script for a Laravel site looks something like this: cd $FORGE_SITE_PATH git pull origin $FORGE_SITE_BRANCH $FORGE_COMPOSER install --no-interaction --prefer-dist --optimize-autoloader ( flock -w 10 9 || exit 1 echo 'Restarting FPM...'; sudo -S service $FORGE_PHP_FPM reload ) 9>/tmp/fpmlock if [ -f artisan ]; then $FORGE_PHP artisan migrate --force fiIf we take our deployment trigger URL: We can append additional query parameters to the URL and they will automatically be converted into environment variables. As you can see, the default deployment script already makes use of some of the environment variables that are injected into the process at the time of deployment. One of the biggest benefits of using environment variables is that you can easily change the site's version of PHP at any time, without needing to change your deployment script too.Exiting..." exit 1 fi Prevent Deployments Triggered Through the Forge Dashboard if [ $FORGE_MANUAL_DEPLOY -eq 1 ]; then echo "Manual deployments are not allowed. When you install a repository for your site, Forge automatically creates a deployment script that is executed every time you deploy your site.Exiting..." exit 1 fi Notify Bugsnag of Releases This example requires you to be using the Laravel Bugsnag package. Prevent Deployments With "wip" Commits if [ $FORGE_DEPLOY_MESSAGE =~ "wip" ]; then echo "The current code is a work in progress.Armed with additional environment variables, we can fine-tune what our deployment script does depending on how the deployment is started.A deployment script is Bash code that tells Forge how to deploy your site, install Composer dependencies, build frontend assets, and reload the PHP-FPM process.

Auto-Refresh Livewire Components While Keeping States With Vite

Every month I send out a newsletter containing lots of interesting stuff for the modern PHP developer. Rest assured that I will only use your email address to send you the newsletter and will not use it for any other purposes. Expect quick tips & tricks, interesting tutorials, opinions and packages. Let's check out how we can improve working with Livewire and Vite together, by using the Vite Livewire Plugin by Fabio Ivona. Stay up to date with all things Laravel, PHP, and JavaScript.I regularly tweet out programming tips, and what I myself have learned in ongoing projects.We monitor uptime, SSL certificates, broken links, scheduled tasks and more.

Using Laravel Vite to automatically refresh your browser when changing a Blade file

import laravel from 'laravel-vite-plugin' import {defineConfig} from 'vite' export default defineConfig ({ plugins: [ laravel ([ 'resources/js/app.js' , ]), { name: 'blade' , handleHotUpdate ({ file , server }) { if (file. With this configuration in place, when you now run npm dev , and change a Blade file, your browser will refresh.Whenever you run Vite with npm dev and modify a JS or CSS file, Vite will automatically recompile the assets and refresh your browser. UPDATE: Laravel's Vite plugin now offers a native way to handle hot reloads. Wouldn't it be cool if this automatic refresh would work when we're changing a Blade file? I hope that, at some point in time, this feature will be baked in the Laravel's vite-plugin. One of the cool features of this Vite integration is that you'll get hot reloading by default. Well, by adding this little piece of configuration to vite.config.js , you can get that.This way, you won't have to refresh your browser manually after making a change.

Deploying Soketi to Laravel Forge

# ssl_certificate; # ssl_certificate_key; ssl_protocols TLSv1.2; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; ssl_dhparam /etc/nginx/dhparams.pem; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; index index.html index.htm index.php; charset utf-8; # FORGE CONFIG (DO NOT REMOVE!) include forge-conf/{{ SITE }}/server/*; location / { proxy_pass; proxy_read_timeout 60; proxy_connect_timeout 60; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } access_log off; error_log /var/log/nginx/{{ SITE }}-error.log error; } # FORGE CONFIG (DO NOT REMOVE!) include forge-conf/{{ SITE }}/after/*; Based on this configuration, Nginx will proxy any requests to our subdomain to - where Soketi is running. Give the template a name such as "Soketi Reverse Proxy" and define its contents like so: # FORGE CONFIG (DO NOT REMOVE!) include forge-conf/{{ SITE }}/before/*; server { listen {{PORT}}; listen {{PORT_V6}}; server_name {{ DOMAINS }}; server_tokens off; root {{ PATH }}; # FORGE SSL (DO NOT REMOVE!) Creating The Site With our Nginx template now created, we can head over to Forge's Sites panel and create a new site. Updating Our Configuration The final step is to update our site's .env file with the new configuration values: Creating The Nginx Template First, we'll create an Nginx Template on the server running Soketi.Of course, you should supply your own domain name when creating the site: As an added benefit, because we're now using Nginx to serve Soketi, we can easily install an SSL certificate using the site's SSL panel.

Deploying Soketi to Laravel Forge

=== 'https', ], ], ], We'll also need to update our .env file with the new configuration details: PUSHER_APP_KEY=app-key PUSHER_APP_ID=app-id PUSHER_APP_SECRET=app-secret PUSHER_HOST= PUSHER_PORT=6001 MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_HOST="${PUSHER_HOST}" MIX_PUSHER_PORT="${PUSHER_PORT}" By default, Soketi starts a server using app-key , app-id , and app-secret credentials. Opening Ports After creating the server, we need to open port 6001 on the server so that the PusherJS / Echo client can connect to the Soketi server that we will install later.To create the Daemon, there are a couple of things we need to do: Set the Command to soketi start Change the Stop Seconds to 60 Change the Stop Signal to SIGINT Once created, we can verify that Soketi is running by clicking the three dots next to the Daemon in the "Active Daemons" table and then clicking the "Show Daemon Log" button.Because Soketi is an NPM package, we can run the following command to install it: npm install -g @soketi/soketi Alternatively, you may use Yarn to install Soketi. Installing Soketi Before we can run Soketi, we need to install it on our server. Configuring Our Site With Soketi now installed and configured, we can update our Laravel application to connect to our Soketi server. Configuring The Daemon After installing Soketi, we can configure a Daemon on our server that will keep the service running and restart it if it crashes. To open the port, head over to the Network panel in Forge, create a new Rule named “Soketi Server”, and set the port to 6001 . By default, the config/broadcasting.php configuration file does not contain the additional options that we need when connecting to a Soketi server.[ 'driver' => 'pusher', 'key' => env('PUSHER_APP_KEY', 'app-key'), 'secret' => env('PUSHER_APP_SECRET', 'app-secret'), 'app_id' => env('PUSHER_APP_ID', 'app-id'), 'options' =>We suggest using the "Web Server" server type when creating this server in Forge as Web servers include Node, NPM, and Nginx. In this blog post we're going to learn how to deploy Soketi to a server managed by Laravel Forge. Finally, you should change the PUSHER_HOST environment variable to the IP address of your Forge server. Let's head over to Forge, then navigate to the server's Daemons panel.

Building social images with Browsershot and AWS

Every month I send out a newsletter containing lots of interesting stuff for the modern PHP developer. Rest assured that I will only use your email address to send you the newsletter and will not use it for any other purposes. Expect quick tips & tricks, interesting tutorials, opinions and packages. Creating social images for your website is super simple using Browsershot and AWS Lambda. Stay up to date with all things Laravel, PHP, and JavaScript.I regularly tweet out programming tips, and what I myself have learned in ongoing projects.We monitor uptime, SSL certificates, broken links, scheduled tasks and more. the alternative news website

This is an app that can be used by anyone, without any cost. It is an artificial intelligence assistant that will read news for you and provide you with relevant information while generating revenue.