Free Video Conferencing Software

If you are looking for video conferencing software, either to conduct virtual meetings, online courses, or even just to collaborate on a project or document, take a look at these free open source software. With these, you don't have to rely on third-party online services over which you have little or no control.

WordPress 5.4.1

WordPress 5.4.1 is now available!

This security and maintenance release features 17 bug fixes in addition to 7 security fixes. Because this is a security release, it is recommended that you update your sites immediately. All versions since WordPress 3.7 have also been updated.

WordPress 5.4.1 is a short-cycle security and maintenance release. The next major release will be version 5.5.

You can download WordPress 5.4.1 by downloading from WordPress.org, or visit your Dashboard → Updates and click Update Now.

If you have sites that support automatic background updates, they’ve already started the update process.

Security Updates

Seven security issues affect WordPress versions 5.4 and earlier. If you haven’t yet updated to 5.4, all WordPress versions since 3.7 have also been updated to fix the following security issues:

  • Props to Muaz Bin Abdus Sattar and Jannes who both independently reported an issue where password reset tokens were not properly invalidated
  • Props to ka1n4t for finding an issue where certain private posts can be viewed unauthenticated
  • Props to Evan Ricafort for discovering an XSS issue in the Customizer
  • Props to Ben Bidner from the WordPress Security Team who discovered an XSS issue in the search block
  • Props to Nick Daugherty from WordPress VIP / WordPress Security Team who discovered an XSS issue in wp-object-cache
  • Props to Ronnie Goodrich (Kahoots) and Jason Medeiros who independently reported an XSS issue in file uploads.
  • Props to Weston Ruter for fixing a stored XSS vulnerability in the WordPress customizer.
  • Additionally, an authenticated XSS issue in the block editor was discovered by Nguyen the Duc in WordPress 5.4 RC1 and RC2. It was fixed in 5.4 RC5. We wanted to be sure to give credit and thank them for all of their work in making WordPress more secure.

Thank you to all of the reporters for privately disclosing the vulnerabilities. This gave the security team time to fix the vulnerabilities before WordPress sites could be attacked.

For more information, browse the full list of changes on Trac, or check out the version 5.4.1 HelpHub documentation page.

In addition to the security researchers mentioned above, thank you to everyone who helped make WordPress 5.4.1 happen:

Alex Concha, Andrea Fercia, Andrew Duthie, Andrew Ozz, Andy Fragen, Andy Peatling, arnaudbroes, Chris Van Patten, Daniel Richards, DhrRob, Dono12, dudo, Ehtisham Siddiqui, Ella van Durpe, Garrett Hyder, Ian Belanger, Ipstenu (Mika Epstein), Jake Spurlock, Jb Audras, John Blackbourn, John James Jacoby, Jonathan Desrosiers, Jorge Costa, K. Adam White, Kelly Choyce-Dwan, MarkRH, mattyrob, Miguel Fonseca, Mohammad Jangda, Mukesh Panchal, Nick Daugherty, noahtallen, Paul Biron, Peter Westwood, Peter Wilson, pikamander2, r-a-y, Riad Benguella, Robert Anderson, Samuel Wood (Otto), Sergey Biryukov, Søren Brønsted, Stanimir Stoyanov, tellthemachines, Timothy Jacobs, Toro_Unit (Hiroshi Urabe), treecutter, and yohannp.

A Guide to Using Commercial WordPress Themes and Plugins

The WordPress ecosystem is chock full of outstanding free software. Why, you could build an entire website using an attractive free theme and a selection of highly-functional plugins.

But free solutions aren’t always the best ones. This is especially the case for web designers who build sites for clients. Sometimes, commercial software is needed to achieve professional-grade results.

Investing in commercial themes and plugins can often be the right choice for your project. However, it also brings a certain set of responsibilities. These are things that designers often overlook. Unfortunately, doing so can lead to problems down the road.

Therefore, it’s important to think about what using commercial WordPress software means. Today, we’ll take a look how you can keep things running smoothly both now and in the future.

Licensing and Payment Issues

On the surface, the question of who pays for a particular piece of software may seem obvious. It should be the client’s responsibility, right? Well, it’s a bit more complicated.

If the software in question, let’s say a WooCommerce extension, is going to be used exclusively for the client’s website – they should be the one to pay. Whether you purchase the software and bill them later or have them buy it directly (the better option), your client should be the license holder in this case.

However, a lot of themes and plugins these days have developer licensing options. This allows a web designer to purchase a single license for use on a predetermined number of projects – sometimes even unlimited. This muddies the waters a bit.

At best, it can be a win-win situation. You get to utilize a trusted product without licensing hassles and your client reaps the benefits of it.

Still, there is the potential for future issues. As your work evolves, you may not necessarily use a particular theme or plugin forever. If that software has yearly license renewals, you may be stuck purchasing it anyway – just so your existing client websites don’t fall out-of-date.

A person holding a credit card.

Leaving Clients in a Lurch

One of the biggest issues with commercial software in the WordPress space isn’t the software itself – it’s mismanagement by designers.

If you’ve ever inherited a website from another designer, you may have witnessed this first-hand. A theme or plugin is in use, but incredibly outdated. Yet, the license key required to install an update is nowhere to be found. Or, worse yet, the software was directly customized by the previous designer – making an update even more precarious.

This may not be a big deal – at least not right away. But eventually something will go wrong. The more updates applied to your WordPress install, the more likely it is that the old software will break.

Nothing in the WordPress ecosystem is frozen in time. Things are constantly changing. In that sense, leaving a client with something that can’t be updated is akin to leaving a hidden trap. At some point, their site is going to become entangled in it.

And, when it involves critical components such as themes or page builder plugins, the effort and cost to make repairs can be significant.

A person holding a light in a dark tunnel.

Best Practices for Commercial Themes and Plugins

So, how can we take advantage of commercial offerings while doing right by our clients? Here are a few ideas:

Always Use Licensed Software

One of the biggest mistakes a designer can make is using unlicensed software on a client’s website. For example, taking a plugin that was licensed for one domain and installing it on another.

Functionally speaking, this puts the site at risk as the plugin can’t be updated. Beyond that, it’s also hurting that plugin’s author as well.

It should probably go without saying, but we’ll say it anyway: Only install plugins and themes if they are licensed for your project.

Inform Clients of Licensing Requirements

It’s important that clients understand their role in staying on top of software licensing. They should have all relevant license keys for software they’ve purchased. It will come in handy if they need to reference it later on.

In addition, clients should be aware of when licenses will renew and why it’s important to stay updated. At that point, it’s out of our hands. The best we can do is educate clients in hopes that they follow through.

Customize the Right Way

Like everything else in web development, it’s important to make any commercial theme or plugin customizations in a sustainable manner. This means using child themes and WordPress hooks as opposed to directly editing files.

This helps to ensure that any customizations won’t be lost during future software updates. Otherwise, your clients may be in for an unwelcomed surprise when a feature no longer works as intended.

Hand off Projects That Can Be Updated

Launching a website and handing it off to a client is a time of optimism. Everything is new, fresh and functional. But if a piece of commercial software can’t be updated in the future, that good feeling won’t last.

Make sure that any commercial themes and plugins can be upgraded via the WordPress dashboard. This helps to ensure that your client’s new website will receive the latest features, along with bug and security fixes.

If a particular component has to be updated manually, let your client know. This way, you can work as a team and plan ahead.

A person writing code.

A Little Effort; A Lot of Benefits

It may sound like using commercial software with WordPress is a hassle. Actually, it only becomes a problem if we neglect the accompanying responsibilities.

More than anything, the key to keeping things humming along is communication. Clients need to know what needs to be done, how much it will cost and why it’s important to keep up with licensing. This will prevent the vast majority of issues from ever popping up.

In addition, web designers must build and hand over their projects to clients with sustainability in mind. This means that every component of a website is able to be updated now and five years from now.

So, use your favorite commercial themes and plugins without hesitation. Just make sure that you’re utilizing them with the future in mind.

The post A Guide to Using Commercial WordPress Themes and Plugins appeared first on Speckyboy Design Magazine.

Community News: Latest PECL Releases (04.28.2020)

Latest PECL Releases:

  • mysql_xdevapi 8.0.20
    WL#13001 DevAPI: Connection compression orabug #30864458: some methods should not be reported as deprecated anymore

  • ice 1.6.0
    - Composer, update zephir to 0.12.18 - Add the image component - Dump, recursion fix #265 - PHP 7.0, drop support - Code cleanup - Update prototypes - Flash, add dismissible class - Dispatcher, continue if before returns a value - Update zephir parser to 1.3.4 - Websocket, long message fix #262
  • swoole 4.5.0
    New APIs --- + DTLS supports, we can build WebRTC applications now (#3188) (@matyhtf) + Built-in `FastCGI` client, we can proxy HTTP request to FPM with one line of code now (swoole/library#17) (@twose) + `Co::wait`, `Co::waitPid`, `Co::waitSignal` (#3158) (@twose) + `Co::waitEvent` (#3197) (@twose) + `Co::set(['exit_condition' => $callable])` to exit condition of reactor (#2918) (#3012) (@twose) + `Co::getElapsed` to get the coroutine elapsed time (#3162) (@doubaokun) + `Socket::checkLiveness`, `Socket::peek` (#3057) (@twose) + `Socket->setProtocol(['open_fastcgi_protocol' => $bool])` (#3103) (@twose) + `Server::get(Master|Manager|Worker)Pid`, `Server::getWorkerId` (#2793) (#3019) (@matyhtf) + `Server::getWorkerStatus` (SWOOLE_WORKER_BUSY, SWOOLE_WORKER_IDLE) (#3225) (@matyhtf) + `Server->on('beforeReload', $callable)` and `Server->on('afterReload', $callable)` (Server reload event on manager process) (#3130) (@huanghantao) + `HttpServer` support `http_index_files` and `http_autoindex` with static handler (#3171) (@huanghantao) + `Http2Client->read(float $timeout = -1)`, support CoroutineHTTP2Client read more than once (#3011) (#3117) (@twose) + `HttpRequest->getContent` (alias of rawContent) (#3128) (@huanghantao) + `swoole_mime_type_(add|set|delete|get|exists)` (mime APIs) (#3134) (@twose)

    Enhancement

    • Optimize memory-copy between master and worker (4x faster) (#3075) (#3087) (@huanghantao)
    • Optimize websocket dispatch (1x faster) (#3076) (@matyhtf)
    • Optimize memory-copy in websocket_construct_frame (1x faster) (#3097) (@matyhtf)
    • Optimize SSL validation (#3226) (@matyhtf)
    • Separate SSL accept and SSL handshake (#3214) (@twose)
    • Support MIPS (#3196) (@ekongyun)
    • Resolve the domain name when use udp coroutine client (#3236) (#3239) (@huanghantao)
    • Support some common options for CoroutineHttpServer (#3257) (@twose)
    • Support set cookies when websocket handshake (#3270) (#3272) (@twose)
    • Support CURLOPT_FAILONERROR (swoole/library#20) (@sy-records)
    • Support CURLOPT_FAILONERROR (swoole/library#20) (@sy-records)
    • Support CURLOPT_SSLCERTTYPE, CURLOPT_SSLCERT, CURLOPT_SSLKEYTYPE, CURLOPT_SSLKEY (swoole/library#22) (@sy-records)
    • Support CURLOPT_HTTPGET (swoole/library@d730bd08) (@shiguangqi)

    Remove

    • Remove Runtime::enableStrictMode method (b45838e3) (@twose)
    • Remove Buffer class (559a49a8) (@twose)

    Kernel

    • New C++ API: coroutine::async with lambda (#3127) (@matyhtf)
    • Refactor event API and reactor fd to swSocket (#3030) (@matyhtf)
    • Convert all source files to C++ (#3030) (71f987f3) (@matyhtf)
    • Code optimizations (#3063) (#3067) (#3115) (#3135) (#3138) (#3139) (#3151) (#3168) (@huanghantao)
    • Code optimization for header files (#3051) (@matyhtf)
    • Refactor enable_reuse_port option (#3192) (@matyhtf)
    • Reactor Socket API (#3193) (@matyhtf)
    • Reduce one system call (3b5aa85d) (@matyhtf)
    • Remove swServerGS::now (#3152) (@huanghantao)
    • Improve protocol setter (#3108) (@twose)
    • Use the Better way to init C object on stack (#3069) (@twose)
    • Use type uchar for bit field (#3071) (@twose)
    • Support parallel test (#3215) (@twose)

    Fixed

    • Fixed enable_delay_receive (#3221) (#3224) (@matyhtf)
    • All other bug fix patches have already been merged into the v4.4.x branch, we will not reiterate them here
  • xdebug 2.9.5
    Sat, Apr 25, 2020 - xdebug 2.9.5

    = Fixed bugs:

    • Fixed issue #1772: Crash with exception thrown inside a destructor
    • Fixed issue #1775: Segfault when another extension compiles a PHP file during RINIT
    • Fixed issue #1779: Nested multi-line built-in function in namespace are not covered
  • swoole 4.4.18
    Enhancement --- + Resolve the domain name when use udp coroutine client (#3236) (#3239) (@huanghantao) + Do not close stdout and stderr (show error logs after shutdown) (#3249) (@twose) + Support some common options for CoroutineHttpServer (#3257) (@twose) + Support set cookies when websocket handshake (#3270) (#3272) (@twose) + Support CURLOPT_FAILONERROR (swoole/library#20) (@sy-records) + Support CURLOPT_SSLCERTTYPE, CURLOPT_SSLCERT, CURLOPT_SSLKEYTYPE, CURLOPT_SSLKEY (swoole/library#22) (@sy-records) + Support CURLOPT_HTTPGET (swoole/library@d730bd08) (@shiguangqi) + Compatible with different versions of Redis extension as much as possible (swoole/library#24) (@twose) + Disable Cloning of Database Proxy Objects (swoole/library#23) (@deminy)

    Fixed

    • Fixed SSL handshake failure (dc5ac29a) (@twose)
    • Fixed memory error when generate error message (#3229) (@twose)
    • Fixed empty proxy authorization info (#3243) (@twose)
    • Fixed channel unreal memory leak (#3260) (@twose)
    • Fixed memory leak of CoHttpServer (#3271) (@twose)
    • Fixed ConnectionPool->fill (swoole/library#18) (@NHZEX)
    • Fixed use new client for the redirection requests (swoole/library#21) (@doubaokun)
    • Fixed null socket error in ioException (swoole/library@4d15a4c3) (@twose)
    • Fixed ConnectionPool@put when error happens (swoole/library#25) (@Sinute)
    • Fixed mysqli write_property error (swoole/library#26) (@twose)
  • timezonedb 2020.1
    Updated to version 2020.1 (2020a)
  • xattr 1.4.0
    - drop dupport for PHP older than 7.2 - add type hinting in reflection
  • yaml 2.1.0
    New Features: - Basic PHP8 (master branch) compatiblity Bugs Fixed: - #79494: The 64-bit YAML ext uses 32-bit signed integer arithmetics (cmb69) - Use ZEND_LONG_FMT to fix -Wformat warnings (carusogabriel) - Fix memory leaks when writing timestamps (cmb69) - Update tests/yaml_parse_file_002.phpt for PHP8 (carusogabriel) - #78353: Remove deprecated TSRM macros (a.dankovtsev)
  • datadog_trace 0.43.0
    **Note: This release comes with minor behavior changes for tracing closures on PHP 7. Please see [the PR for details](https://github.com/DataDog/dd-trace-php/pull/762).**

    Added

    • Service mapping with DD_SERVICE_MAPPING=pdo:payments-db,mysqli:orders-db #801, #817
    • Auto flushing with DD_TRACE_AUTO_FLUSH_ENABLED=1 (PHP 7) #819, #826
    • Disable automatic root-span creation with DD_TRACE_GENERATE_ROOT_SPAN=0 #834

    Changed

    • Always return unaltered VM dispatch (PHP 7) #762
    • Uri to resource name ON by default #798
    • Sandbox Guzzle #809, #816
    • Sandbox predis integration #813
    • Sandbox curl (PHP 7) #814, #817, #831
    • Convert pid from long to string for internal spans #825
    • Move some Configuration methods to functions written at the C level #829
  • selinux 0.5.0
    - drop support for PHP 5 - preliminary support for PHP 8
  • xattr 1.3.1
    - preliminary support for PHP 8
  • mailparse 3.1.0
    - add arginfo to all functions - fix MimeMessage constructor name

Creating a simple link registry

The problem: if you publish any document as PDF, in print, etc. and the text contains URLs, there is a chance that one day those URLs won't work anymore. There's nothing to do about that, it happens.

Luckily, this is a solved problem. The solution is to link to a stable and trustworthy website, that is, one that you maintain and host (of course, you're trustworthy!). Then in the document you link to that website, and the website redirects visitors to the actual location.

An example: my book contains a link to https://enjoy.gitstore.app/repositories/matthiasnoback/read-with-the-author. When I moved that repository to a new organization on GitHub, this link resulted in a 404 Page not found error. The proper URL is now https://enjoy.gitstore.app/repositories/read-with-the-author/read-with-the-author. Chris from Gitstore was able to save the day by setting up a redirect on their site, but I wanted to make sure this kind of problem would never be a problem for me again.

The ingredients for the solution:

  • A domain name (I registered advwebapparch.com)
  • A simple website that can redirect visitors to the actual locations

I wanted to hook this new website into my existing Docker-based setup which uses Traefik to forward traffic to the right container based on labels. It turns out, with a simple Nginx image and some custom setup we can easily set up a website that is able to redirecting visitors.

The Dockerfile for such an image:

FROM nginx:stable-alpine
COPY default.conf /etc/nginx/conf.d/default.conf

Where default.conf looks like this:

server {
    listen 80 default_server;
    index index.html;
    root /srv;

    error_page 404 /404.html;

    rewrite /repository https://enjoy.gitstore.app/repositories/read-with-the-author/read-with-the-author redirect;
}

This already works, and when I deploying the resulting image to the server that receives traffic for advwebapparch.com, a request for /repository will indeed redirect a visitor to https://enjoy.gitstore.app/repositories/read-with-the-author/read-with-the-author using a temporary redirect.

Generating the Nginx configuration from a text file

When I'm working on my book, I don't want to manually update a server configuration file every time I'm adding a URL. Instead, I'd like to work with a simple text file. Let's name this file forwards.txt:

/repository https://enjoy.gitstore.app/repositories/read-with-the-author/read-with-the-author
/blog https://matthiasnoback.nl

And then I want the Docker image build process to add rewrite rules automatically, So I wrote a little PHP script that does this runs during the build. Here's what the Dockerfile looks like. It uses a multi-stage build:

FROM php:7.4-alpine as php
# This will copy build.php from the build context to the image
COPY . .
# This will generate default.conf based on template.conf
RUN php build.php

FROM nginx:stable-alpine
# Copy the default.conf from the php image to the nginx image
COPY --from=php default.conf /etc/nginx/conf.d/default.conf

Here's what happens inside the PHP script:

function insertRewritesInNginxConf(string $conf): string
{
    $rewrites = [];

    foreach (file('forwards.txt') as $line) {
        $line = trim($line);
        if (empty($line)) {
            continue;
        }

        $rewrites[] = '    ' . 'rewrite ' . $line . ' redirect;';
    }

    return str_replace(
        '%INSERT_URL_REWRITES_HERE%',
        implode("\n", $rewrites),
        $conf
    );
}

/*
 * Generate the Nginx configuration which includes all the actual
 * redirect instructions
 */
file_put_contents(
    'default.conf',
    insertRewritesInNginxConf(file_get_contents('template.conf'))
);

We should add a bit of validation for the data from the forwards.txt file so we don't end up with a broken Nginx configuration, but otherwise, this works just fine.

I don't want to manually check that all the links that are inside the "link registry" still work. Instead, I'd like to use Oh Dear for that, which does uptime monitoring and checks for broken links as well.

For this purpose I added another function to the PHP script, which, based

Truncated by Planet PHP, read more at the original (another 1844 bytes)

2 New Free File Synchronization Software: easily back up your data to a separate drive

Two new programs have been added to the Free File Synchronization Software page. One of them can even back up across a local network and the Internet. As everyone who has worked on a computer for some time knows, it is very important to back up (at the very least) your data onto a separate device on a regular basis, since computers can fail at unexpected times. Software like these are used to automatically mirror the data on your main computer with your backup drive or system, so that it is kept up to date.

Note: if you want to back up an entire computer, and not just your data, please see the Free Hard Disk Backup and Restore, Hard Disk Image and Cloning Utilities page instead.

WordPress Recaptcha Integration

Package:
Summary:
Plugin to integrate Recaptcha to protect forms
Groups:
Author:
Description:
This package provides a WordPress Plugin to integrate Recaptcha to protect forms...

Read more at https://www.phpclasses.org/package/11628-PHP-Plugin-to-integrate-Recaptcha-to-protect-forms.html#2020-04-27-19:37:31

How to Get Those Creative Juices Flowing Again

What do you do if you’re partway through an important project for a client and you get, well… stuck? You simply can’t wring any more good ideas from that brain of yours, and none of your ordinary tricks to relieve creative block are working.

To many designers, this is the kiss of death, but I’m here today to tell you that it doesn’t have to be. We’re going to explore some unusual but very effective ways to get those creative juices flowing again so that you can get back in the flow of things and continue to wow your clients.

Creativity in Routine?

Here’s a fact about the human brain that you may not know: every single decision you make throughout your day will have a negative effect on your ability to successfully complete a task. That’s right – whether it’s choosing which color to make that dropdown menu, or whether you should wear that green shirt or the blue one, every time you’re forced to make a decision, you lose just a bit more mental energy.

This is why you may find yourself burnt out by lunchtime if you begin your day by answering emails or answering silly questions from dense clients. Those small decisions have used up a huge amount of your energy for the day. Sure, you can recover some of it by eating a nutritious lunch or having a quick nap, but you won’t be quite as productive after noon as you were before.

Adopting systems and routines that automate a lot of your daily decisions can help tremendously in recovering some of that creativity you thought was lost forever.

Consider taking a full day to plan the little things you know you will have to do for the week, even down to what color shirt you’ll wear. Try to batch your email responses if you can – it’s not a crime to cut and paste responses if they’re relevant and get the point across.

The more things you can automate, the more you can turn your focus to the work that truly matters.

designer journal todo list calendar planner

Getting a Jolt of Energy

Starting a new project can be very intimidating. And yes, I’m about to use yet another of my famous food analogies, so get ready.

Have you ever been to a restaurant, and the waiter hands you a menu that’s absolutely terrifying? I don’t mean it has teeth or it growls at you or anything like that. I mean, there are so many items on the menu, and the descriptions are so lengthy that you almost lose your appetite and want to run back out the front door?

Too much choice can do more than confuse us – it can just about ruin our experience and make us want to hide while we try to process everything in front of us.

For me, it seems like the more freedom I have with a design project, the scarier, more confusing, and more impossible it becomes to get started.

Of course, freedom in my design work is something I’ve strived very hard to achieve, and I’m very fortunate to have it. But sometimes, with a big, hairy project deadline looming over my head, I almost wish I was a student again, with rigid assignments and a limited scope as to what I could work on.

What’s the solution to this problem? I’ve found that doing something spontaneous to get my blood pumping and my creative energy flowing helps tremendously. Exercise is the most obvious choice here, and I don’t need to tell you how many ills it can help cure besides creative block.

However, there are other options, such as spending quality time with friends or loved ones, working on something else, like a personal project, or, my personal favorite, cooking.

energy flowing light stream idea creative

Calm Those Jitters

Sometimes, your problem isn’t that you’re frightened into submission by your project. Rather, you’re inundated with too much energy, which can manifest as nervous fidgeting, hair-pulling, or procrastinating by doing meaningless busy work.

This can be just as maddening because you’re not exactly sure where to begin, and you know you should be doing something productive, but you just can’t figure out what.

You may not realize it, but your brain is like clay. Whatever approach you decide to take for your work will leave an impression on your brain for next time. So, if you react to a challenging project with stress, nerves, or excessive anxiety, you’re saving a copy of that reaction in your brain’s hard drive, which will automatically pull up every time you’re faced with a similar dilemma.

In this case, you need a solution that will burn off or diminish some of that excess energy. A calming activity, such as meditation, walking, journaling, or reading, will help soothe your brain and help it focus on the task at hand.

The post How to Get Those Creative Juices Flowing Again appeared first on Speckyboy Design Magazine.

Powered by Gewgley