Articles tagged with: #know

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

Things You Should Know About Databases

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 explain the two most important topics when working with RDBMSs: indexes and transactions. 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.

New composer audit Command and security audits in Composer 2.4

When a new package is installed, or an existing package is updated, Composer looks up the package version numbers on known security vulnerability announcements, and reports if there are any known vulnerabilities in the list of packages. Composer 2.4 features scanning the installed and new packages for known security vulnerabilities. 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. 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.

Log4j Vulnerability Update

The vast majority of servers provisioned by Forge will not be vulnerable; however, if you have manually installed applications such as ElasticSearch your server may be affected. Laravel Vapor Laravel Vapor does not install or use Log4j in both the native or Docker runtimes. To check if your server is affected, you can use a script such as log4j_checker_beta . Laravel Forge Laravel Forge does not install Log4j by default.

PHP Telegram Bot LoL Party: Send party invitations to other Telegram users

It extends the base Telegram bot class that can interact with a user to let him participate in a party.Then it asks to invite another Telegram user that he knows so that user can also participate in a chat party.

Generics in PHP (video)

Now, PhpStorm, and other static analysers; are smart enough to detect — or infer the type of the input that's passed to this function — that's the name of the attribute we want to filter on — and use that type as the generic type for our attributes class, when we return it. I looked at quite a lot of them, and by far, the most popular convention — I think that's thanks to Java — is to use a single letter for generic types; so T, or E or V or K or U — those are some of the popular choices. class Attributes { public function first () : mixed { } } Here we have our attribute class, with a generic AttributeType , and that's the type that's returned by the first method, in this example. class Attributes { public function instanceOf ( string $className) : self { } } Here we have our instanceOf method, and you can see it defines another generic type, it's called InstanceOfType . Here we have a kind of "attribute query" class: a class that can filter and instantiate attributes: $routeAttributes =Read more « back — written by Brent on November 06, 2021 Generics in PHP (video)And it does in fact work with quite a lot of cases, PhpStorm can tell us — in real time, while coding — what kind of generic type we're dealing with. You might need to read this example a few times before getting it, but it essentially allows us to create classes like this attribute query class where the end user still has lots of information available to them while using this package. I made a poll on Twitter, and was surprised that so many people — more than 50% — prefered the single letter approach. Another convention that I've seen around — especially in the Psalm and PHPStan's documentation is to prefix the generic name with an uppercase letter T. I used AttributeType and InstanceOfType as the generic type placeholders, but that's kind of not the convention in most programming languages. I made this video about generics last week, you can watch it (make sure to like and subscribe if you liked it), or you can read the transcript here if you don't like watching videos. So yeah, these are the kinds of details I'm thinking about, because I feel like they genuinely affect the readability of my code, and code of others that I need to work in.BUT there is proper support for generics using docblocks; both by static analysers like PHPStan and Psalm, but also — and this is a big one — by PhpStorm. Now, after running this query here, I want my IDE to know, in real time, that I have an instance of the Route attribute here. Anyway; I'll probably stick with what feels best for me and what I think is the most readably; but do share your opinions in the comments or on reddit or twitter wherever you're watching this; maybe someone is able to change my mind; or maybe I just changed yours? If you have no clue what I'm talking about right now, I would suggest doing some reading on my blog — I've added some useful links in the description for you.That's terrible for code readability — especially if you're working with multiple generic types within the same context.instanceOf ( Route ::class) -> first (); It provides a slightly cleaner API compared to straight up using PHP's built-in reflection classes. And I don't know about you, but I find that this makes my code so much harder to read. I need to mention though that PhpStorm doesn't support that yet, but I hope that they'll change it after seeing this video. So, what I would like to know: what's your opinion? You see, only a few months ago, PhpStorm added basic support for generics using docblocks.

Supporting an unknown amount of menu items within Olivero’s menu

If you have a lot of menu items If you know your site is going to have too many menu items for the desktop version, you can default to the mobile menu at all screen widths. Image The “mobile” style aligns the menu items vertically, and because of scrolling, can hold an unlimited amount of menu items. Image At smaller “mobile device” widths, we default to the mobile menu, and then we default to the “desktop” style at viewport widths larger than 1000px. The “desktop” style aligns the menu items horizontally, and has limited space for menu items. function checkIfDesktopNavigationWraps(entries) { const navItem = document.querySelector('.primary-nav__menu-item'); if (Drupal.olivero.isDesktopNav() && entries[0].contentRect.height > navItem.clientHeight) { document.body.classList.add('is-always-mobile-nav'); } } This works well for enabling the mobile menu. Performance implications of detecting the position of menu items Detecting overlap or distance between elements is possible, but requires Element.getBoundingClientRect() , which can trigger a layout operation in the browser. If you don’t know whether the menu items will fit Menus are tricky, though. To determine if we should turn on the mobile navigation, we compare the height of the entire menu (this is returned in the callback) to the height of an individual menu item. Detecting changes via ResizeObserver The solution to this comes through the browser’s built in ResizeObserver interface (note this doesn’t support IE11). Like many websites, Drupal’s new default theme (called Olivero) supports two different menu styles. We can add a resize event listener to the window, but this is unnecessarily heavy, and (like before) can make the browser feel sluggish if the user is busy resizing their window (who does this???). Wrapping up (pun intended) I’m really happy with this solution!In a normal (e.g. client) website project, we have an idea on how many menu items will appear in the menu. function checkIfDesktopNavigationWraps(entries) { const navItem = document.querySelector('.primary-nav__menu-item'); if (Drupal.olivero.isDesktopNav() && entries[0].contentRect.height > navItem.clientHeight) { const navMediaQuery = window.matchMedia(`(max-width: ${window.innerWidth + 15}px)`); document.body.classList.add('is-always-mobile-nav'); navMediaQuery.addEventListener('change', () => Two different Olivero menu stylesIf the menu height is greater, then we know the menu has wrapped. We know that this will have to be handled in CSS or JavaScript, because Drupal doesn’t have any ability to know how wide the viewport is.There’s a weird spot where the menu items will fit horizontally at wide widths, but then wrap when the viewport shrinks slightly.But, how do we re-enable the desktop menu in the event that the user is resizing their browser window from wide, to narrow, and back to wide?This adds an is-always-mobile-nav CSS class to the <body> tag that tells the browser what menu style to use. We know we need to remember the width of the viewport.

10 fieldable entity types every Drupal developer should know about

With Drupal 8's and 9's Entity API now fully mature, it's time to check yourself and make sure you take into account all of the amazing entity types that are available in both Drupal core and well-used and -maintained contributed modules.Drupal Commerce (contrib) - another extremely well-maintained contributed module provides several entity types related to ecommerce, including product types, orders, and more.Comment types (core) - new to Drupal 8, allows your site to have different types of comments. User (core) - one of the original core entity types - still fieldable, but still not bundleable.The power of Paragraphs module lies in the fact that a site designer can create and style various paragraph types that site authors can then utilize to provide creative layouts for their content.Paragraphs (contrib) - this popular and well-maintained contributed module allows authors to mix and match various "paragraph types" (fieldable entities) in an effort to create custom layouts of (often) nodes.Block type (core) - new in Drupal 8, replaces Drupal 7 modules like Bean and Boxes that provided custom, fieldable block types. With that in mind, the next time you are designing the information architecture for a Drupal site, be sure to consider the following entity types.These are incredibly useful fieldable entity types if your site includes things like PDF files or videos (both locally-hosted and remote).If you're a Drupal developer who designs information architecture (IA) for your organization and/or clients, then hopefully by now you're thinking in terms of entities, bundles, and fields, not limiting your thinking to only content types.For that, use… Profile (contrib) - this useful module allows you to create various "profile types" that can be associated with each user. Drupal Career Online, our 12-week, twice-a-week, online Drupal training program teaches not only most of all of these entity types, but also how to figure out when to use each one. Back in the Drupal 7 and earlier days, it was common to look at an organization's data and map it almost exclusively to only content types (maybe a few vocabularies as well).Vocabulary (core) - another original core entity type (if it ain't broke…)

10 reasons you (or someone you know) might need Drupal Career Online

To help mark the occasion, we thought it would be fun to share some of the things we've seen over the past 10 years that our students (both DCO and private training clients) have shared with us that made us think, "yeah, you really should enroll in Drupal Career Online..." Not using Composer yet - this is more of a recent (Drupal 8+) development, but we're still surprised when we see folks not using Composer to manage their Drupal 8 codebase.Your site has one content type that is used for everything (aka, "I have no idea what entities, bundles, and fields are") - this is often a red flag that the site's information architecture (IA) isn't quite what it should be.Our site-building lessons include a healthy dose of IA, focusing on Drupal core entities, bundles and fields and how to efficiently map an organization's data to Drupal.Using the "Full HTML" text format for everything everywhere - it is just plain scary when we see this, as it usually indicates a lack of understanding of both Drupal core text formats and basic security practices.Your site always has errors on the Status Report page - the DCO's "site maintenance" lesson begins with the Status Report page.You have no idea what cron is (or if it is running) - when we perform site audits, this is normally one of the first things we look for on the Status Report page.Modules are enabled and you have no idea why - one of the primary skills the DCO teaches is how to find answers, mainly by helping you create and grow your Drupal network.The DCO provides a step-by-step methodology for updating both Drupal core and contributed modules.Embracing emerging versions of Drupal, like 8+, keeps you current, makes you more employable and introduces you to modern web development techniques. If you're reading this and it is hitting a close to home, consider joining us at one of our upcoming Taste of Drupal webinars where we'll spend an hour talking and answering questions about the next semester of Drupal Career Online.Relying on a single layout tool - in Drupal 8+, there are multiple ways to layout a page.Your available updates page has more red than green - updatings modules can be scary.From classmates, to the active DrupalEasy learning community, community mentors, to online Drupal etiquette; we show you how and where to efficiently find answers.Not understanding the strengths and weaknesses of each of the more widely used solutions can lead to "everything looks like a nail, so I'll use a hammer everywhere" solution, which can result in a poor implementation.

This Band Wrote the Best Legend of Zelda Song of 2022

One of their best tracks, 2019’s “DIRT,” is built around a piercingly plonking guitar riff and the phrase “And there is dirt and there is juice / and I am mixing up the two.”“I don’t know a lot of music theory,” Giannopoulos says, “but I do know a lot of pop culture stuff.There’s also an Instagram account that Giannopoulos loves that posts songs from “really weird and rare Japanese video games from the ’90s, lots of cool crazy acid house stuff or rave-ish music, and some of them are insanely good,” Giannopoulos says. They both grew up in Boston and reminisce fondly about “split-screen hangs,” days playing games like Goldeneye in friends’ basements and living rooms. In a recent interview with The Fader’s Jordan Darville, the band’s frontman, Dimitri Giannopoulos, explained the album’s title track by saying: “The tone of the guitar always reminds me of playing The Legend of Zelda: The Ocarina of Time.”“My childhood playing video games did maybe start my music career,” he says.Beaming just at the thought, he paraphrases: “Guy hired to write score for swimming gorilla accidentally writes best ambient album of all time.”Giannopoulos says it wasn’t one of the mallpunk songs that THPS is best known for but AC/DC’s “TNT,” off THPS4, that he loved so much he made his mom take him to the CD store to buy High Voltage.“They’re huge mood changers,” Margaris says, intentionally or not, echoing what his band does so well.“Without AC/DC’s High Voltage I wouldn’t have gotten into rock ‘n’ roll.”The score writers were “using such limited technology, it’s insane what they were able to do.”Straight up I’ll be like, ‘John, do a bass line that sounds like’ [insert something from their youth].”Sums up Margalis: “They’re wicked bizarre.”Horse Jumper of Love is a rock band from Boston that makes the kind of music you might want playing in your hyperbaric chamber if you were stuck in there for a while and really wanted to lean into the experience.“You don’t realize you’re listening to almost fusion-y kind of music.Being able to listen to something over and over and not get bored—that was a new experience.”

PHP Telegram Bot LoL Party: Send party invitations to other Telegram users

It extends the base Telegram bot class that can interact with a user to let him participate in a party.Then it asks to invite another Telegram user that he knows so that user can also participate in a chat party.

PHP Internals News: Episode 101: More Partially Supported Callable Deprecations — Derick Rethans

Derick Rethans 10:18 That's always the case, if you work with CLI tools that make people run code on newer PHP versions, that's always a group of tools that needs to be upgraded first, which is your sniffers, your static analysis, your debugger still will always need to go first. Derick Rethans 14:10 I think another good thing that Sebastian recently has done is make sure that deprecation notices are no longer failing your tests. Juliette Reinders Folmer 4:47 What this RFC is proposing is simply to remove the exception that the callable type and is_callable are not throwing a deprecation notice. Juliette Reinders Folmer 7:28 Yeah, because in 8.2, you're gonna get deprecation notices for everything else, but these two situations. Juliette Reinders Folmer 15:06 The open source work I work in, I mean, I do want to see them. Juliette Reinders Folmer 12:03 But what I see there is like the closed source community is like, oh, Derick Rethans 13:03 For Xdebug, what I do is I support what the PHP project support when a PHP release comes out, which is a bit longer than PHP itself usually, but not by much more than a year or two. Juliette Reinders Folmer 15:48 The thing would I see what it has done is that people think the tests are passing. Derick Rethans 15:39 The only thing it does is make things a little bit less noisy so that fewer people complain to library authors isn't it? Derick Rethans 11:52 Upgrading software with version support is an issue that's been going on for 40 years and will go on for at least another 40 more. Juliette Reinders Folmer 9:35 Well, I mean, this one is one deprecation. Derick Rethans 5:42 Although there is no current application, would this be able to be found if you had like a comprehensive test suite? Derick Rethans 5:08 Now, of course, we have no idea when PHP nine is actually showing up, but I don't think it will be this year. Derick Rethans 2:20 And as an example here, that is, for example, static colon colon function name, for example. Juliette Reinders Folmer 10:03 I know it's currently breaking mockery, we're gonna have to have a discussion how to fix that or whether or not to fix it. Derick Rethans 3:31 This is the callable type in function declarations. Juliette Reinders Folmer 10:27 Which is why I look at things a lot earlier, probably then the majority of people. Derick Rethans 9:28 I think PHP 8.2 will have fewer of these changes in there. Juliette Reinders Folmer 12:54 Yeah, the only problem then is that we don't want to maintain multiple stable branches. Juliette Reinders Folmer 8:14 The plain and simple the backward compatibility break is in the original RFC. Juliette Reinders Folmer 0:52 Nope, mostly related to actually CLI tools. Derick Rethans 7:53 We already touched a little bit on how you found out for the need for this RFC or for changing behaviours. Derick Rethans 7:23 Yes, when your code and stops behaving as you were expecting it to be. Derick Rethans 2:27 Which you can use with call_user_func by having two array elements. Derick Rethans 4:13 So it's a silent change that you can't detect at all. Derick Rethans 0:50 Mostly related to WordPress as far as I understand? Derick Rethans 4:44 What are you proposing to change with this RFC than? Juliette Reinders Folmer 2:26 Absolutely, yeah. Juliette Reinders Folmer 3:33 Yeah, absolutely. Juliette Reinders Folmer 1:16 Yeah, but it's nice. Derick Rethans 1:40 Let's have a chat about the RFC itself then. Juliette Reinders Folmer 4:17 Yeah, which to me sounded dangerous. Derick Rethans 1:12 All right, very well. Derick Rethans 1:38 It's good to clear that up then. Juliette Reinders Folmer 1:39 Yeah, thank you. Juliette Reinders Folmer 2:36 Absolutely. Derick Rethans 5:29 Absolutely. Juliette Reinders Folmer 9:16 Yes, absolutely. Juliette Reinders Folmer 14:17 I don't agree. Juliette Reinders Folmer 5:17 That's all the same. Juliette Reinders Folmer 5:48 Yes and no. Derick Rethans 9:06 Derick Rethans 12:48 I understood it's more of a difference not necessarily between open and closed source, but rather between library maintainers and application maintainers.Also with the whole idea, I mean, again, this is very much an open source versus closed source discussion for closed source I completely understands that people say I don't want to know until I actually am ready to upgrade to that version.1:46 There was an RFC or 8.2 which has already been approved in October, which deprecates partially supported callables.0:37 You're starting with the hardest questions, because introducing myself is something I never know how to do.5:30 It's a lot more logical to have it all in in the same version.But not in 8.2, not in 8.3, not in 8.4, and then whatever eights we're gonna get until nine, you will not be able to detect without deprecation notices, until PHP 9 actually removes support for these partials deprecated callables.And all of them are trying to get ready before the release of 8.1 or 8.2 in this case, because you do not know as an open source maintainer, what version people are going to run your code on. I understand that.But changing that default from not showing those deprecation notices or not not allowing deprecation notes to fail the test, or not in a patched version, I don't think was the right thing to do. Well they are passing, but...Derick Rethans 0:14 Hi, I'm Derick. Derick Rethans 9:51 Juliette Reinders Folmer 13:15 Derick Rethans 14:56 Derick Rethans 15:54 Juliette Reinders Folmer 15:56 Juliette Reinders Folmer Juliette Reinders Folmer Juliette Reinders Folmer It literally means 10 months of the year I for one am working on getting rid of deprecation notices in project to prepare them all to be ready for PHP 9 when PHP 9 comes round.I fully support that people limit the amount of fish and stay support and like Sebastian, who I know got half the community up in arms against him when he said, I'm not going to support older PHP versions any more.Three, imagine a test you've written yourself at some point in the past where which affected callables, you might have, you know, a data provider where you say: Okay, valid callable function, which you've mocked or, you know, closure, which you've put in and second, this function does not exist.The silencing deprecation notices or not, allow tests to error out on deprecation and just not solve that problem.And basically, the original RFC from Nikita proposed to deprecate support for them in 8.2, add deprecation notices and remove support for them altogether in PHP nine.Now for those people listening who do not know enough about that RFC, partially supported callables are callables which you can call via a function like call_user_func that which you can't assign to variable and then call as a variable.This RFC is proposing that they should throw a deprecation notice, so that more of these type situations can be discovered in time for PHP 9 to prevent users getting fatal errors.I mean, it makes there'll be two, three years ahead, but it doesn't really make sense to have the main deprecation in 8.2 and then have the additional deprecation in 8.4 or something.I mean, I'm always very grateful for deprecation notices, but it would be nice if we had fewer changes, which would cost them, for a year or two, so I can actually catch my breath again.We need to have a new RFC to basically amend the original RFC and remove the exception for these two situations and allow them to throw deprecation notices.And then, four, you still need to make sure that the tests are routinely run, and in open source, that's generally not a problem.I mean, I see him huge difference between the open source and closed source community.And the problem with the deprecation notices anyhow, and I've seen various experiments via Twitter fly past for the past year.Most open source projects, use GitHub actions by now to run the tests automatically on every pull request, etc.But as people have stated in the past, adding deprecation notices is a BC break.The problem with this is that with the callable type, this means you go from absolutely no notice or nothing, to a fatal error in PHP 9.I spend the majority of my time on CLI tools, and only a small portion of my time consulting on the things for WordPress, like keeping that cross version compatible.but you know, by the time I want to upgrade my server to 8.1, or 8.2, I just run Rector and all will be fine.Say you build something on top of something else, you want to see the deprecation notices and the errors which apply to your code.Even if you have a test, and the test covers the affected code, if you do not test with one of these eight syntaxes, which has been deprecated, you still cannot detect it.That's the callable type and using the syntaxes in combination with the is_callable function, where you're checking if the syntax is callable.That does not mean that that didn't give a large part of community which does need to support a wider range of PHP versions a problem.And the original RFC explicitly excluded two particular things from those deprecation notices.So not using call_user_func, not using a variable to call it, but it's callable static double colon method name, and then called static double colon method name as literal.And that pattern basically, for valid calls would mean that that function would no longer be called in PHP 9 without any notification whatsoever.Today I'm talking with Juliette Reinders Folmer, about the Expand Deprecation Notice Scope for Partially supported Callables RFC that she's proposing.And with is_callable, I discovered a pattern in my wanderings across the world where people use the syntax in is_callable, but then use it in a literal call.

So I'm making an app (4 little questions) : laravel

So for example if I have Campaign table ID campaign_name headline Contacts table ID name email phone Contacts_campaign table ID contact_id campaign_id shortlink image_url And so I want to be able to associate all contacts that match a specific filter to campaign model through Laravel Nova... but associate those contacts as contact_campaign model if that makes sense... (not sure if anyone has any input) Q2.As part of my first attempt at "usefulness" I am putting together an MMS app - that can send unlimited MMS messages for free and customise those messages with the recipient's name (long story but if you're curious to read the functionality and features and stuff you can see here: But I have a bunch of questions that I had and rather than flooding the boards I thought I'd post them here: Q1. So I know Laravel Nova has actions - any input on how to have these actions run in the background (e.g. every 12 hours or so)... and also any input on how to potentially throttle that action if it's like a lot..Best way to "Pool" resource calls in the background My app would eventually potentially have let's say 25K contacts in the database for example - and each of these contacts would need a unique image and also shortlink - which would require an API call (whether external or internal).Attaching link through table I got help earlier with attaching a bunch of 'Contacts' models to a 'Campaign' model...but I also know there is Guzzle Spool or whatever - can anyone recommend the best way if - once I add the campaign_contact table to campaign... to have a job execute in the background for each one of these contacts - without slowing down the actual app - a sort of "cooking" option?Not required fields So this one should be basicI know Laravel/Nova documentation talks about making fields 'required' but I don't see anything about making fields "not" required. That's about it... Q3. Q4.If anyone could point me to making fields either in database migration or in Nova field creation to not be required it would be much appreciated.

How to Iterate through Uploaded Files without Knowing Filenames or Length. : laravel

I don't know how to get the length of the uploaded files or the filenamesAll the examples I see online are for when we know the filenames and length of the request.I have a front-end React application that uploads multiple files.

Guide to omnichannel content delivery

Also, to survive in the future of omnichannel, companies seriously need to look after their content services including content architecture, content structure, content variations, and metadata. Conclusion This piece of work clearly defined the need for an omnichannel approach for offering seamless content delivery to potential customers across various channels. Understanding your customers’ wants The very first step in creating effective omnichannel content is by getting an idea about the people who will consume it. But by using headless CMS you can decouple the frontend (content presentation) from the backend (content organization and storage) and use APIs to deliver content to any and every digital channel. By efficiently delivering content across channels By utilizing outdated legacy CMSes, you cannot offer integrated, and holistic content experiences to your customers across every channel. By personalizing platforms Personalization can be considered as the practice of personalizing the content that a consumer is offered based on their behaviors and preferences. Apart from delivering content for a frontend website, decoupled Drupal can even deliver content through an API to be utilized by multiple other mediums, upon which the brand wishes to be present such as IoT, mobile applications, kiosk displays, etc. It is observed that brands adopting omnichannel strategies show an average retention rate of around 89 percent, and 69 percent of customers look for a consistent omnichannel experience. Hence, we see a great future for omnichannel where companies will continue to handle all of their content efficiently, also offering consumers the customization and optimized experience they want. In a situation like this, it will be much easier to build one content engine (Drupal) that will offer content to all the microsites. Therefore, CMS is not just utilized to send content to web browsers but it also pushes content to several other places.An omnichannel content approach is simply all about bringing together all content channels in order to make them work parallelly to improve and customize the user’s experience. Learn more: What the future holds for omnichannel? But the companies which are ensuring a consistent online and offline interaction with their customers, building a very holistic omnichannel customer experience tend to get more popularity and success in comparison to the rest. Let us explore the reasons why choosing Drupal for omnichannel content delivery can be considered as the best option. After understanding the significance of adopting an omnichannel approach, let’s now learn the ways to build an omnichannel content management platform that is highly essential for progressive businesses. This article gives you a closer look at how an omnichannel approach can be considered effective and beneficial for both customers and progressive companies. Why should you adopt an omnichannel content approach? How to build an omnichannel content management platform? What is an omnichannel content approach? Choosing Drupal for omnichannel content delivery Even though companies are offering great content experiences on their applications, websites, Facebook pages, and stores following a robust multichannel strategy. At times companies look for creating several websites that are separate (e.g., one for each event, brand, promotion, country), but that will share a huge amount of content. This allows organizations to quickly and seamlessly manage and publish content across multiple channels from just one central command hub. By adopting an omnichannel approach you can reach your customers exactly where they are. Also, the microsites can be created very quickly and even closed whenever a need appears, and also the content can be contained in one single hub. Most importantly, the impact of COVID 19 showed how customers are prioritizing the omnichannel trend. So, if you’re an entrepreneur of a progressive company, then you must know how to anticipate the customer’s needs and meet them accordingly by adopting omnichannel practices. Therefore, the future of omnichannel seems to place the users’ needs at the topmost priority leading to customer satisfaction and retention. Also due to the rise of design thinking and design systems, organizations are prioritizing the user experience and also in what ways the technologies will impact the customers.

Google Calendar’s ‘known senders’ filter should help stamp out spam invites

This way, Google Calendar will only automatically add invites from people in your contacts list, anyone you’ve interacted with through Workspace, and users in your company or organization. If you’re familiar with Google Calendar, you’ll know that Google automatically adds events to your schedule based on the emailed invites you receive.Letting the floodgates open by allowing Google Calendar to add events received by “everyone” could mean having a calendar infested with fake and annoying events.Toggling on the setting prevents invites from people you don’t know from automatically appearing in your Calendar.Google Calendar’s new “known senders” option is supposed to make it easier to keep spam from clogging up your schedule. Google says this setting doesn’t prevent you from receiving spammy invites, however.In an update last year, it also addressed a loophole that let people store spammy or abusive shared folders on other users’ Drives. 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.