|
by via JavaScript Weekly
"Mr Branding" is a blog based on RSS for everything related to website branding and website design, it collects its posts from many sites in order to facilitate the updating to the latest technology.
To suggest any source, please contact me: Taha.baba@consultant.com
|
If you keep up on WordPress news at all, you may be aware that WordPress Core will soon include a JavaScript framework, in addition to Backbone.js (which will remain and continue to be maintained). But the hunt for the correct JavaScript framework for WordPress Core has been an interesting one. Choosing a JavaScript Framework for […]
Continue reading %Which JavaScript Framework for WordPress Core?%
This article is part of a series created in partnership with SiteGround. Thank you for supporting the partners who make SitePoint possible.
Whether you develop web apps, sell WordPress plugins and themes, or run an online store, offering great customer support is essential for success. Do it well, and you’ll have happy customers and set yourself apart from your competitors. Do it badly, and it will come back to bite you.
Make support easy. Develop a comprehensive system, give your users multiple ways to contact you, and respond to support requests in an acceptable time frame. Aim to surpass their expectations.
How do you achieve that?
WordPress makes a great platform for your support system. There are over 10,000 support-related plugins that enable you to set up ticketing systems, live chat, support forums, frequently asked questions, and more. Some plugins just about do the lot.
But 10,000 plugins is a lot to wade through. In this article we bring you the best-in-class plugins in five categories—plugins we recommend that are widely used and highly rated by their users.
You may not want to implement all five categories in your support system. As you read through this article, think through which make the most sense for your business.
Here’s one way to simplify your support system. Rather than choosing a different plugin for each strategy, install one plugin that covers all the bases.
This comprehensive plugin will do just about everything you need for support, except chat. The basic functionality is free, but some of the features you may want cost.
Awesome Support is the most versatile and feature-rich support plugin for WordPress. It’s the result of three+ years of work, research, and improvement. The features are an answer to user requests for a solid, WordPress-based help desk, and that’s what makes it the best!
Features of the free plugin include:
Popular premium extensions:
Other popular support plugins include Zendesk Support for WordPress and WP MUDEV Support System Plugin.
Continue reading %5 Ways to Use WordPress to Provide Exceptional Customer Support%
A full stack developer who can get from a prototype to full MVP (minimum viable product) is often considered a jack of all trades, master of none, and with good reason. To define the modern full stack developer, we first need to focus on what the full stack developer used to be.
Long ago, circa 2000 (in Internet-time, 17 years is a very long time ago), a full stack developer was someone who could:
Note that we're talking about PHP here - a full stack Flash or Coldfusion developer had a different (but only slightly different) workflow.
Those were simple times, life was good. One-man agencies were a dime a dozen, and people still had time to spend with their family after work.
What about now?
These days, we have horrors like these happening - how did it come to this?
To succeed in a now-saturated market, we developers - who are often perfectionists - hesitate to delegate and often live by the "if you want something done right" motto. This forces us into a corner where we have to learn everything, so that being a full stack developer often ends up encompassing the following.
A developer must know how to do basic server management. This includes but is not limited to:
Apart from these basics, a developer should know how to create good, healthy, isolated development environments, in either Docker or virtual machines like with Vagrant. If all of the above is something you're unfamiliar with, we have an excellent book about it for sale here.
The developer should also be intimately familiar with version control systems in order to be able to reliably produce backups and shareable, collaborative collections of code, tracked for changes across time. No modern developer workflow is complete without version control these days. We have a fantastic video course about this for purchase here.
Apart from actual managed or virtualized servers, a developer might need to know about the cloud - hosting on platforms like Heroku, Google Cloud, Azure, AWS, and others.
There's a fair bit to be said about platforms and tools that are more hype than immediately useful, but being familiar with the services everyone is talking about can come in handy in the long run - a client could demand a switch of providers any day now, and it pays to be ready. Luckily, we have the ultimate guide to deploying to all these cloud hosts.
On the back end, apart from knowing the language of choice - in our case PHP and its multitude of frameworks and CMSes - a developer needs to be familiar with:
Continue reading %Being a Full Stack Developer%
Chameleon.js is a lightweight jQuery plugin for automatic content colorization.
Features:
It is very common to encounter errors during the execution of a program. Two common kinds of errors that you may have to deal with are syntax errors and exceptions. Syntax errors occur when you type the code incorrectly. In such cases, the erroneous line is repeated by the parser with an arrow pointing to the earliest location where the error was detected.
Exceptions are different from syntax errors. They occur during the execution of a program when something unexpected happens. For example, let's say you are asking the user to input a number in order to perform a division. Now, if the user enters a string instead of a number and you try to divide a number by the given input, the program will output a TypeError
.
When you are not properly handling exceptions, the program will abruptly quit as it won't know what to do in such cases. The following code is such an example:
keep_asking = True while keep_asking: x = int(input("Enter a number: ")) print("Dividing 50 by", x,"will give you :", 50/x)
As long as you are entering an integral input value, the program will work correctly. However, as soon as you enter a string or even a decimal number as input, you will get a ValueError
exception.
In this tutorial, you will learn how to properly handle and raise exceptions in Python.
Here are some basic exceptions that you might encounter when writing programs. You can read about many more built-in exceptions on the official website.
TypeError
exception is more appropriate.Just like the names above, most exceptions have self-explanatory names.
The code at the beginning of the article asked users to enter an integer as input. If the user did not provide an integer input, the program stopped execution and raised a value error exception. In this section, we will write some code to tell the user that their input is not a valid integer value.
The first step of the process is to include the code that you think might raise an exception inside the try
clause. The next step is to use the except
keyword to handle the exception that occurred in the above code. The modified code for the user input will look like this:
keep_asking = True while keep_asking: try: x = int(input("Please enter a number: ")) print("Dividing 50 by", x,"will give you :", 50/x) except ValueError: print("The input was not an integer. Please try again...")
What happens here is that the program tries to execute the code inside the try
clause. If no exception was raised, the program skips the except
clause and the rest of the code executes normally. If an exception is raised, the program skips the remaining code inside the try
clause and the type of the exception is matched with the name of the exception after the except
keyword. In case of a match, the code inside the except
clause is executed first, and then the rest of the code after the try
clause is executed normally.
When you enter an integer as an input, the program gives you the final result of the division. When a non-integral value is provided, the program prints a message asking you to try and enter an integer again. Note that this time, the program does not abruptly quit when you provide some invalid input.
You can have multiple except
clauses to handle different exceptions. Please keep in mind that these handlers will only deal with exceptions that occurred in the corresponding try
clause. They will not handle any exceptions raised within other exception handlers.
You can also handle multiple exceptions using a single except
clause by passing these exceptions to the clause as a tuple
.
except (ZeroDivisionError, ValueError, TypeError): print("Something has gone wrong..") # code to deal with the exception
Finally, you can also leave out the name of the exception after the except
keyword. This is generally not recommended as the code will now be catching all the exceptions and handling them in the same way. This is not optimal as you will be handling a TypeError
exception the same way as you would have handled a ZeroDivisionError
exception. When handling exceptions, it is better to be as specific as possible and only catch what you can handle.
One possible use of catching all exceptions is to properly print out the exception error on screen like the following code:
import math import sys try: result = math.factorial(2.4) except: print("Something Unexpected has happened.",sys.exc_info()[0]) else: print("The factorial is", result)
You can also use an else
clause in a try ... except
statement. The else
clause is meant to contain code that needs to be executed if the try
clause did not raise any exceptions. This can be useful to make sure that you don't add any code to the try
block whose exceptions you don't intend to catch. One thing worth mentioning is that if you decide to use an else
clause, you should include it after all the except
clauses but before the finally
block.
In our case, we could move the line that prints the result of our division inside the else
block.
keep_asking = True while keep_asking: try: x = int(input("Please enter a number: ")) except ValueError: print("The input was not a valid integer. Please try again...") else: print("Dividing 50 by", x,"will give you :", 50/x)
Let's say you have written some code inside the try
block that is supposed to perform a task by utilizing a large amount of resources. It is important to release those resources back when you are done using them. This can be easily achieved by using the finally
clause.
The code inside the finally
clause is always executed irrespective of whether the try
block raised an exception. You can verify this by running the following code:
keep_asking = True while keep_asking: try: x = int(input("Please enter a number: ")) except ValueError: print("The input was not a valid integer. Please try again...") else: print("Dividing 50 by", x,"will give you :", 50/x) finally: print("Already did everything necessary.")
If any of the except
clauses that you specified do not handle the raised exception, the same exception is raised again after the execution of code inside the finally
block.
In this section, we will write a program to deal with multiple exceptions. Just like the previous examples, we will be performing some mathematical operations. However, this time we will take the input from a list.
The following code checks for two exceptions, TypeError
and ValueError
. The else
block is used to print the factorial. You can see in the output that this code is executed only when no exception is raised.
import math number_list = [10,-5,1.2,'apple'] for number in number_list: try: number_factorial = math.factorial(number) except TypeError: print("Factorial is not supported for given input type.") except ValueError: print("Factorial only accepts positive integer values.", number," is not a positive integer.") else: print("The factorial of",number,"is", number_factorial) finally: print("Release any resources in use.")
The above code produces the following output:
The factorial of 10 is 3628800 Releasing any resources in use. Factorial only accepts positive integer values. -5 is not a positive integer. Releasing any resources in use. Factorial only accepts positive integer values. 1.2 is not a positive integer. Releasing any resources in use. Factorial is not supported for given input type. Releasing any resources in use.
Another thing worth noticing is that the code inside the finally
clause is executed for each item in the list.
I hope this tutorial helped you understand exception handling in Python. Additionally, don’t hesitate to see what we have available for sale and for study in the marketplace, and don't hesitate to ask any questions and provide your valuable feedback using the feed below.
Properly handling exceptions can be very helpful in situations where exiting a program after it receives an unexpected input is not viable. If you have any questions related to exception handling in Python, please let me know in the comments.