Facade Design Pattern

Facade Design Pattern

Intent

  • Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.
  • Wrap a complicated subsystem with a simpler interface.

Problem

A segment of the client community needs a simplified interface to the overall functionality of a complex subsystem.

Discussion

Facade discusses encapsulating a complex subsystem within a single interface object. This reduces the learning curve necessary to successfully leverage the subsystem. It also promotes decoupling the subsystem from its potentially many clients. On the other hand, if the Facade is the only access point for the subsystem, it will limit the features and flexibility that “power users” may need.

The Facade object should be a fairly simple advocate or facilitator. It should not become an all-knowing oracle or “god” object.

Structure

Facade takes a “riddle wrapped in an enigma shrouded in mystery”, and interjects a wrapper that tames the amorphous and inscrutable mass of software.

Facade scheme

SubsystemOne and SubsystemThree do not interact with the internal components of SubsystemTwo. They use the SubsystemTwoWrapper “facade” (i.e. the higher level abstraction).

Facade scheme

Example

The Facade defines a unified, higher level interface to a subsystem that makes it easier to use. Consumers encounter a Facade when ordering from a catalog. The consumer calls one number and speaks with a customer service representative. The customer service representative acts as a Facade, providing an interface to the order fulfillment department, the billing department, and the shipping department.

Facade example

Check list

  1. Identify a simpler, unified interface for the subsystem or component.
  2. Design a ‘wrapper’ class that encapsulates the subsystem.
  3. The facade/wrapper captures the complexity and collaborations of the component, and delegates to the appropriate methods.
  4. The client uses (is coupled to) the Facade only.
  5. Consider whether additional Facades would add value.

Rules of thumb

  • Facade defines a new interface, whereas Adapter uses an old interface. Remember that Adapter makes two existing interfaces work together as opposed to defining an entirely new one.
  • Whereas Flyweight shows how to make lots of little objects, Facade shows how to make a single object represent an entire subsystem.
  • Mediator is similar to Facade in that it abstracts functionality of existing classes. Mediator abstracts/centralizes arbitrary communications between colleague objects. It routinely “adds value”, and it is known/referenced by the colleague objects. In contrast, Facade defines a simpler interface to a subsystem, it doesn’t add new functionality, and it is not known by the subsystem classes.
  • Abstract Factory can be used as an alternative to Facade to hide platform-specific classes.
  • Facade objects are often Singletons because only one Facade object is required.
  • Adapter and Facade are both wrappers; but they are different kinds of wrappers. The intent of Facade is to produce a simpler interface, and the intent of Adapter is to design to an existing interface. While Facade routinely wraps multiple objects and Adapter wraps a single object; Facade could front-end a single complex object and Adapter could wrap several legacy objects.

Question: So the way to tell the difference between the Adapter pattern and the Facade pattern is that the Adapter wraps one class and the Facade may represent many classes?

Answer: No! Remember, the Adapter pattern changes the interface of one or more classes into one interface that a client is expecting. While most textbook examples show the adapter adapting one class, you may need to adapt many classes to provide the interface a client is coded to. Likewise, a Facade may provide a simplified interface to a single class with a very complex interface. The difference between the two is not in terms of how many classes they “wrap”, it is in their intent.

Common OpenCart Errors and How to Solve Them

Common OpenCart Errors and How to Solve Them

There is nothing more excited then try to build your own ecommerce store. Installing OpenCart extensions and themes, modificate them to your need and learn new thing during development. But most OpenCart users know how frustrating it can be get an unexpected error and not be able to find a solution for it.

Most OpenCart issues are solvable. If you got an error, don’t fret because other OpenCart user had the same problem and already gotten it solved. This tutorial collecting most common errors that repeatedly asked by OpenCart users at community forum. Sometime the same error have different error messages, that why we organize the error variant and solution for it.

Before continue, you need to know that an error usually trigger another errors. This is commonly happen because when your code breaks, the rest of code will not work and cause another error. No need to be confuse, the first error is the key. Recognise the error, find issue in your code and try to solve them with solution as suggested on this tutorial.

1. Blank White Pages or 500 Internal Server Error

Blank white pages is a PHP errors that for some reason the error messages isn’t show because your server is not setup to display the errors. While the 500 Internal Server Error means something has gone wrong but the server cannot specifically state what the exact problem is.

The similiarity of both issue is it doesn’t give us a clue what exactly happen, or what files triggering the errors. So, first step before we try to solve the errors is try to show the error messages. Then use the error message as starting point to investigate what is the error cause. Here are a few ways to show the error messages:

  1. Set your “Output Compression Level” to 0 in the System > Settings > Server tab.
  2. Then open php.ini and add code below: 1 2 3 display_errors = 1;error_reporting = E_ALL;log_errors = 1;
  3. If your server not read the php.ini, we will use an alternative method. Open index.php and add code below at the top (line 2): 1 2 3 ini_set('display_errors', 1);ini_set('log_errors', 1);error_reporting(E_ALL);
  4. When you have fixed the problem, remove code line above.

2. Undefined Index / Variable

The error appears when you referencing variable that not been declared. In programming approach set the variable or use isset() to checks if the variable has been set will solve the issue. But for an application to get this issue mean there is a bugs in it, whether it’s OpenCart or extensions files. Or you do some modification on unappropriate way.

Error variant:
  • PHP Notice: Undefined index: company in /path/public_html/catalog/model/account/customer.php on line 8
  • PHP Notice: Undefined variable: order_id in /path/public_html/catalog/controller/account/order.php on line 149
  • PHP Notice: Undefined variable: product in /path/public_html/vqmod/vqcache/vq2-catalog_view_theme_default_template_product_product.tpl on line 272
Solution
  1. If you get this issue on clean OpenCart installation, share the bugs at OpenCart forum. It will help OpenCart developer to develope bugs fix.
  2. When you get this issue after installing an extension, disable the extension then report it to the developer.
  3. If the error refer to file inside the “/vqmod/vqcache” folder, it’s mean the error caused by vQmod file. Disable the vQmod file by rename it to vqmod_file.xml_ and report the bugs to the developer.

3. Undefined Function / Method

If you get “Fatal error: Call to undefined function” or “Fatal error: Call to undefined method” means you try to call the function/ method that doesn’t exist. Commonly happen if files is not uploaded properly or the extensions is not compatible with your OpenCart version; or it’s really doesn’t exist. Here, I will try to classify the problem based on error message.

Error variant:

Related to OpenCart core files

  • Fatal error: Call to undefined function utf8_strlen() in /path/public_html/system/helper/utf8.php on line 39
  • Fatal error: Call to undefined method Customer::isLogged() in /path/public_html/catalog/model/catalog/product.php on line 8
  • Warning: require_once(/path/public_html/system/library/customer.php) [function.require-once]: failed to open stream: No such file or directory in /path/public_html/index.php on line 22
  • Fatal error: require_once() [function.require]: Failed opening required‘/path/public_html/system/library/customer.php’ (include_path=’.:/usr/lib/php’) in /path/public_html/index.php on line 22

Related to vQmod files

  • Fatal error: Call to undefined method ModelAccountCustomer::getPaymentAddress() in /path/public_html/vqmod/vqcache/vq2-catalog_controller_checkout_confirm.php on line 38

Related to PHP built-in functions

  • Fatal error: Call to undefined function imagecreatefromjpeg() in /path/public_html/system/library/image.php on line 34
  • Fatal error: Call to undefined function mysql_connect() in /path/public_html/system/database/mysql.php on line 6
Solution

Related to OpenCart core files

  1. Some file is not uploaded or it’s corrupted during upload process. Reupload the files to your server with ASCII mode, not binary.
  2. In some case, this issue appear because server path is not configured properly at config.php. So recheck your server path in config.php and admin/cofig.php
  3. “Warning/ Fatal error: require_once” mean the file is not available. You need to reupload the file mentioned on the error message or fix the server path at config.php as mentioned above.

Related to vQmod files

  1. vQmod fails to generate new cache from the extensions vQmod files. Check vqmod/cachefolder permission, make sure it’s writable and clear all cache files.
  2. Enabled / disabled one by one vQmod files you have. Once you get the cause, contact the developer.
  3. The extensions is not compatible with your OpenCart version or it have a bug. Contact the developer.

Related to PHP built-in functions

  1. PHP have lot of built-in functions, you can check it here. Errors related to PHP built-in function is server issues. Contact your host to solve this.

4. Headers Already Sent

You get an error message “headers already sent” right after installing, modificating, updating OpenCart or vQmod files. There is a good refference explaining the issue.

Error variant:
  • Warning: Cannot modify header information – headers already sent by (output started at /path/public_html/config.php:31) in /path/public_html/index.php on line 175.
  • Warning: session_start() [function.session-start]: Cannot send session cookie – headers already sent by (output started at /path/public_html/config.php:31) in /path/public_html/system/library/session.php on line 11.
  • Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at /path/public_html/config.php:31) in /path/public_html/system/library/session.php on line 11.
Solution:

Download the file stated at the error message then apply solution bellow:

  1. Remove spaces at begining and end of file. 1 2 3   <?php //contain spaceecho"remove all space or line-break before <?php and after ?>";?>
  2. Resave the file with Notepad++ or other editor (encode file as ANSI or UTF-8 without BOM).
  3. Reupload to server through FTP in ASCII mode, not binary.

5. Session Issue

PHP session store user information on the server for later use (i.e. login status, shopping items, etc) across the page requests. Session is temporary information and will be deleted after the user left the website. OpenCart use session on lot of aspect like login status, product cart, compare etc. In most case, session issue will throw error messages. But there is time when it’s not show any error message; to recognise it, here is some indication of session issue:

  1. Product on the cart is self-cleared.
  2. Product on the cart is cleared after user logged in.
  3. No items stored at product compares.
  4. OpenCart admin always asking to login and get message “Invalid token session. Please login again”.
Error variant:
  • Warning: session_start () [function.session-start]: open (/tmp/sess_41abirkdiesf9efwej46wtib2, O_RDWR) failed: No such file or directory (2) in /path/public_html/system /library /session.php on line 11
  • Warning: session_start () [function.session-start]: open (/tmp/sess_41abirkdiesf9efwej46wtib2, O_RDWR) failed: Permission denied (13) in /path/public_html/system /library /session.php on line 11
  • Warning: session_start() [function.session-start]: open(/tmp/sess_41abirkdiesf9efwej46wtib2, O_RDWR) failed: No space left on device (28) in /path/public_html/upload/system/library/session.php on line 11
Solution:

No such file or directory issue

  1. Open php.ini and add code below: 1 session.save_path = /tmp;
  2. If solution above not work, contact your host and ask them how to set session.save_path.

Other errors

  1. “Permission denied”, ask your hosting to check the session directory permission.
  2. “No space left on device”, ask your hosting is it server issue or you need to upgrade to larger hosting space.

6. Allowed Memory Size Exhausted

This error happen because your memory is not enough to execute the php code (uploading large image, delete lot of products, send mass mails etc). Increasing the memory allocated for PHP will solve the issue.

Error variant:
  • Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 47200 bytes) in /path/public_html/system/library/image.php on line 34
  • Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 13069817 bytes) in /path/public_html/system/library/mail.php on line 144
  • Fatal error: Out of memory (allocated 33554432) (tried to allocate 14024 bytes) in /path/public_html/library/image.php on line 34
Solution:

Apply one of solutions bellow to increasing the limit to 64MB, 128MB, 256MB or 512MB -depends on your host.

  1. Edit php.ini 1 memory_limit = 128M;
  2. Or put code below to .htaccess 1 php_value memory_limit 128M
  3. If you oftenly get this error and solution above isn’t work, contact your host. In most shared hosting, there is maximum memory_limit. You can’t set memory-limit to 64Mb if you get max 32Mb.

7. Restriction in effect

You get an error message “SAFE MODE Restriction in effect”. This is a PHP restriction issue, and your server account is trying to run a -builtin PHP- functions but doesn’t have access to run it. This issue is nothing to do with OpenCart, but related to your server configuration.

Error variant:
  • Warning: session_start() [function.session-start]: SAFE MODE Restriction in effect. The script whose uid is 10025 is not allowed to access /path/public_html/system/library/session.php on line 11
  • Warning: imagejpeg() [function.imagejpeg]: SAFE MODE Restriction in effect. The script whose uid is 10305 is not allowed to access /path/public_html/image/cache/data owned by uid 48 in /path/public_html/system/library/image.php on line 44
  • Warning: is_dir(): open_basedir restriction in effect. File(/path/public_html/image/87cngmlc22pe96fof5fhmq9c290phri7) is not within the allowed path(s): (/path/server/) in /path/public_html/catalog/controller/checkout/confirm.php on line 248
Solution
  1. Safe Mode and open_basedir restriction is a server issue, ask your host to turn off the restriction is the best way to fix the issue.
  2. But in case you wanna try to resolve it, try this solution: 1 2 3 4 5 6 7 // Put code bellow at php.inisafe_mode = Off;--- or---// Put code bellow at .htaccessphp_value safe_mode off

Usefull Tools

System Information

System Information provide server information, PHP built-in functions and file/ folder permission that required or recomended by OpenCart. This extension will help you to monitor that your site / server meet OpenCart requirements to work well. You can download it at OpenCart Marketplace.

vQmod Manager

vQmod Manager allows users to managing vQmod files. This extension display vQmod file information and help you to manage (Upload, delete, install, uninstall and backup) and monitor the vQmod files through the admin panel. You can download it at OpenCart Marketplace.

The Top 3 Reasons an Application Hangs

The Top 3 Reasons an Application Hangs

Do you experience application hang problems? If so, read this article to discover the top 3 reasons applications hang and cause slow performance.

If you have been in the IT industry long enough, you probably know this story well. The application works fine, then, suddenly, the application hangs with no apparent reason. You restart the application and it all goes away.A week passes, maybe two, and then the application hangs again. Another restart and you’re back. It doesn’t crash or fail (no crash dump or thread dump)—it just sits there and hangs. No users are being served.

Eventually you decide to just restart every night hoping it will not hang again. It doesn’t matter if you’re using a Tomcat application server, WebSphere, WebLogic, JBoss or whatever — if you have been in the software development business long enough, you must have experienced this problem. This is where application monitoring can help.

Below are the top 3 reasons why an application server hangs:

Reason #1: it’s a database problem.

This may sound strange, but the main reason an application server hangs is not directly related to the application server itself. The location of the symptom is rarely the location of the root cause. The following scenario is quite common:

  • The database is bottlenecked, causing queries to run slower than usual.
  • Requests that used to take 1 second, now take 5 seconds to complete.
  • The average number of concurrent requests slowly increases (due to backlog).
  • The server runs out of threads and the application server hangs.

If you manage to get a thread dump, you’ll just see a bunch of threads waiting and another group that’s actually running. Another possibility is that the number of waiting threads (or queued threads) will gobble up all available memory and, eventually, lead to an OutOfMemory error.

Reason #2: deadlocks.

If it seems that the application server is doing nothing, look for deadlocks. These can be database deadlocks that cause your SQL queries to hang, or seek the update statements. For example, a transaction log that is written to the database for each request may easily hang the entire application if the log table is locked. It can also be a deadlock of the application re-accessing itself. Do you have any HTTP SOAP calls from one application server to another? Also check for shared objects—an operating system file that is written to from multiple threads at once.

Reason #3: run-away thread.

In cases where the application server is indeed to blame, you should look for a run-away thread. These are hard to detect because they hardly show up on logs since they are usually only written when the request has completed. A run-away thread will probably not return until it has already affected the entire application. Therefore, the hanging request will not be written to the log. These ‘runaway’ threads typically include infinite loops in code. For example, a query that should show results that does not include the option of paging between result pages suddenly needs to display a large number of results. The page takes forever to render and clobbers the application server, eventually causing it to hang.

These types of application hangs are extremely difficult to diagnose and detect. The hardest part is isolating the root cause of the problem. If the application server hangs, it doesn’t necessarily mean that the problem resides there. It usually doesn’t. End-to-end transaction management tools, such as SharePath by Correlsense, helps to pinpoint the reasons for an application hang by providing a real-time view into the entire application behavior.

how to install laravel

how to install laravel

Install Composer

Laravel utilizes Composer to manage its dependencies. First, download a copy of the composer.phar. Once you have the PHAR archive, you can either keep it in your local project directory or move to usr/local/bin to use it globally on your system. On Windows, you can use the Composer Windows installer.

Install Laravel

Via Laravel Installer

First, download the Laravel installer using Composer.

composer global require "laravel/installer=~1.1"

Make sure to place the ~/.composer/vendor/bin directory in your PATH so the laravelexecutable is found when you run the laravel command in your terminal.

Once installed, the simple laravel new command will create a fresh Laravel installation in the directory you specify. For instance, laravel new blog would create a directory named blog containing a fresh Laravel installation with all dependencies installed. This method of installation is much faster than installing via Composer.

Via Composer Create-Project

You may also install Laravel by issuing the Composer create-project command in your terminal:

composer create-project laravel/laravel {directory} 4.2 --prefer-dist

Via Download

Once Composer is installed, download the 4.2 version of the Laravel framework and extract its contents into a directory on your server. Next, in the root of your Laravel application, run the php composer.phar install (or composer install) command to install all of the framework’s dependencies. This process requires Git to be installed on the server to successfully complete the installation.

If you want to update the Laravel framework, you may issue the php composer.phar updatecommand.

Server Requirements

The Laravel framework has a few system requirements:

  • PHP >= 5.4
  • MCrypt PHP Extension

As of PHP 5.5, some OS distributions may require you to manually install the PHP JSON extension. When using Ubuntu, this can be done via apt-get install php5-json.

Configuration

The first thing you should do after installing Laravel is set your application key to a random string. If you installed Laravel via Composer, this key has probably already been set for you by the key:generate command. Typically, this string should be 32 characters long. The key can be set in the app.php configuration file. If the application key is not set, your user sessions and other encrypted data will not be secure.

Laravel needs almost no other configuration out of the box. You are free to get started developing! However, you may wish to review the app/config/app.php file and its documentation. It contains several options such as timezone and locale that you may wish to change according to your application.

Once Laravel is installed, you should also configure your local environment. This will allow you to receive detailed error messages when developing on your local machine. By default, detailed error reporting is disabled in your production configuration file.

Note: You should never have app.debug set to true for a production application. Never, ever do it.

Permissions

Laravel may require one set of permissions to be configured: folders within app/storagerequire write access by the web server.

Paths

Several of the framework directory paths are configurable. To change the location of these directories, check out the bootstrap/paths.php file.

Pretty URLs

Apache

The framework ships with a public/.htaccess file that is used to allow URLs without index.php. If you use Apache to serve your Laravel application, be sure to enable the mod_rewrite module.

If the .htaccess file that ships with Laravel does not work with your Apache installation, try this one:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

Nginx

On Nginx, the following directive in your site configuration will allow “pretty” URLs:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

6 Essential Tips on How to Become a Full Stack Developer

6 Essential Tips on How to Become a Full Stack Developer

How to become a full stack developer? As one of the hottest topics for developers, the discussions have never stopped. On LinkedIn and Facebook, lots of people put their job title as a full stack developer. Besides, it seems that the “Full Stack” topic has already become a new job trend. An article on Medium has discussed the full stack designer getting both praise and blame. Some people think that the full stack is just a title, what he/she should focus on is the real personal ability and technology.

Essentially, I think the discussion about the full stack is also a kind of argument relating to the all-rounder and expert in the IT industry, and debate on the depth and breadth of development skills.

You can’t have your cake and eat it too. While the full stack developers and full stack designers seem like they are challenging this possibility. Because their horizontal skills tree gives them the ability to both have and eat the cake. There is another saying is that jack of all trades, but master of none. So it’s necessary to think about how to become a real full stack developer but not an empty title.

1. What is a full stack developer?

Simply put, full stack developer is a kind of people who master a variety of skills and use these skills to complete a product independently. A top voted answer on Quora explained that what is a full stack developer:

A full stack developer is an engineer who can handle all the work of databases, servers, systems engineering, and clients. Depending on the project, what customers need may be a mobile stack, a Web stack, or a native application stack.

In fact, “full stack” refers to the collection of a series of technologies needed to complete a project. “Stack” refers to a collection of sub-modules. These software sub-modules or components combined together to achieve the established function while without the need for other modules.

2. Why has the full stack developer been controversially discussed?

As it mentioned above, the discussion about full stack developer is actually the debate on the depth and breadth of skills. Especially at the OSCON conference, a Facebook engineer said they only hired a “full stack developer.” This topic came as a result of a heated discussion about the strengths and weaknesses of being a full stack developer.

Advantages: The full stack developers involved in a horizontal technical requirement, so that he/she can make a prototype design for a product very rapidly with his wide range of techniques. With the full stackability, they have a broader angle of views and a more active mindset. Moreover, they will be more sensitive to techniques and products. So, this kind of people can always have his/her opinions towards the product or design.

From another aspect, he/she can provide help to everyone in the team and greatly reduce the time and technical costs of team communication, technology docking. So many of them become entrepreneurs or as technical partners in start-up companies.

Disadvantages: It is precisely because of the horizontal technology development, some the full stack developers cannot be expert in one skill. Most of them who claim to be “full stacks developer” are only know a little about the multiple skills. As for how to make the architecture more suitable for the modular development, that’s a question.

3. Even so, there are still people asking, how to become a full stack developer?

A qualified full stack developer should have functional knowledge and capabilities for all aspects involved in building the application.

1) Programming languages

You need to be proficient in multiple programming languages, such as JAVA, PHP, C #, Python, Ruby, Perl, etc. As most of your core business processes need to be written in these languages.Maybe not all need. But you also have to master the language grammar, and to be very familiar with how to structure, design, implementation, and testing of the project based on one language or more languages. For example, if you choose JAVA, then you need to master the object-oriented design and development, design patterns, J2EE-based components of the development and so on.

Where to learn: Git/GitHub — You have to know how to use Git to manage and share your code.

2) Use development frameworks and third-party libraries

The popular development languages are generally accompanied by a good development framework, such as JAVA Spring, MyBatis, Hibernate, Python Django, PHP thinkphp, yin, nodeJs express and so on.

Where to learn: 15 free Python ebooks

3) Front-end technology

Front-end technologies are becoming more and more important in today’s project and product development. In addition to product features, the user experience is also one of the criteria to test the success of a product. All that depends on the implementation of the front-end technology, soyou need to master some basic front-end technologies such as HTML5, CSS3, JavaScript, and further study the front-end frameworks or third-party libraries such as JQuery, LESS, SASS, AngularJS, or REACT.

Where to learn: You don’t know JS

4) Database and cache

Any product or project needs a database to store data. As a full stack developer, you also need to have at least one or two databases and know how to interact with the database. Currently, the popular database is MySQL, MongoDB, Redis, Oracle, SQLServer and so on. As a document-type database, MongoDB, is being used more widely in Internet products. As for larger projects, Ialso recommend using MySQL or commercial Oracle as the back-end database. While memory databases, such as Redis, can be used for caching to improve system performance.

Where to learn: MongoDB MERN tutorial series, Redis tutorial

5) Basic design ability

Most of the articles or discussions about the full stack developer are rarely related to the design requirements. But I think the design skill is very important, the principle and skill of basic prototype design, UI design, UX design are also needed to understand.

Where to learn: UX blog

6) Self-requirements are also an essential factor to become a full stack developer:

  • Global thinking
  • Good communication skills
  • Creativity
  • Curiosity
  • Time management skills

Wrap Up

According to Gladwell’s 10,000 hours of law, it will spend 10 years to master the front-end, back-end, client-oriented knowledge content to be a full stack developer. Therefore, the full stack developer is by no means to accomplished overnight. What you need to do is laying the technical foundation, strengthen the core skills, and keep learning for more challenges.

What does the term “full-stack programmer” mean? What are the defining traits of a full-stack programmer?

What does the term “full-stack programmer” mean? What are the defining traits of a full-stack programmer?

A full stack developer is capable of performing tasks at any level of the technical stack in which they reside. It means:

  • Working with systems infrastructure (knowing what hardware to ask for , what OS to install, how to prepare the system and dependencies for all software)
  • Understanding, creating, manipulating, and querying databases
  • API / back-end code in one or more languages, e.g. Ruby, Java, Python, etc.
  • Front-end code in one or more languages, e.g. HTML, JavaScript, Java, etc.
  • Project management / client work, e.g. gathering requirements, creating technical specifications and architecture documents, creating good documentation, managing a project timeline (e.g., someone who knows Agile/SCRUM/Kanban)

In general a full-stack developer has knowledge that is a mile wide, but not necessarily very deep, and has core competencies in the pieces of the stack in which they work most.
In my work I have core competencies in Linux (Debian, CentOS, Amazon Linux), Database design, manipulation, and query (PSQL and MySQL), back-end technologies (Java, Ruby, and Python), and some front-end design (HTML, vanilla JavaScript, and jQuery), as well as act as SCRUM-master and lead Agile development for my team, interfacing with clients both internal and external to the business to gather requirements, execute tasks, and document all efforts.

Typically these skills are developed over many years in the contexts of different jobs, so as Ian mentioned being a full-stack developer means being pushed outside of your comfort zone to constantly learn new skills.

HOW TO SELECT RANDOM ROWS IN MYSQL

HOW TO SELECT RANDOM ROWS IN MYSQL

The easiest way to generate random rows in MySQL is to use the ORDER BY RAND() clause.

SELECT col1 FROM tbl ORDER BY RAND() LIMIT 10;

This can work fine for small tables. However, for big table, it will have a serious performance problem as in order to generate the list of random rows, MySQL need to assign random number to each row and then sort them.
Even if you want only 10 random rows from a set of 100k rows, MySQL need to sort all the 100k rows and then, extract only 10 of them.

My solution for this problem, is to use RAND in the WHERE clause and not in the ORDER BY clause. First, you need to calculate the fragment of your desired result set rows number from the total rows in your table. Second, use this fragment in the WHERE clause and ask only for RAND numbers that smallest (or equal) from this fragment.

For example, suppose you have a table with 200K rows and you need only 100 random rows from the table. The fragment of the result set from the total rows is: 100 / 200k = 0.0005.
The query will look like:

SELECT col1 FROM tbl WHERE RAND()<=0.0005;

In order to get exactly 100 row in the result set, we can increase the fragment number a bit and limit the query:
For example:

SELECT col1 FROM tbl WHERE RAND()<=0.0006 limit 100;

Feel free to leave a comment.

how to use CodeIgniter

Build Your First Application

Overview

This tutorial is intended to introduce you to the CodeIgniter4 framework and the basic principles of MVC architecture. It will show you how a basic CodeIgniter application is constructed in a step-by-step fashion.

If you are not familiar with PHP, we recommend that you check out the W3Schools PHP Tutorial before continuing.

In this tutorial, you will be creating a basic news application. You will begin by writing the code that can load static pages. Next, you will create a news section that reads news items from a database. Finally, you’ll add a form to create news items in the database.

This tutorial will primarily focus on:

  • Model-View-Controller basics
  • Routing basics
  • Form validation
  • Performing basic database queries using CodeIgniter’s Model

The entire tutorial is split up over several pages, each explaining a small part of the functionality of the CodeIgniter framework. You’ll go through the following pages:

  • Introduction, this page, which gives you an overview of what to expect and gets your default application downloaded and running.
  • Static pages, which will teach you the basics of controllers, views and routing.
  • News section, where you’ll start using models and will be doing some basic database operations.
  • Create news items, which will introduce more advanced database operations and form validation.
  • Conclusion, which will give you some pointers on further reading and other resources.

Enjoy your exploration of the CodeIgniter framework.

Getting Up and Running

Installing CodeIgniter

You can download a release manually from the site, but for this tutorial we will use the recommended way and install the AppStarter package through Composer. From your command line type the following:

> composer create-project codeigniter4/appstarter ci-news

This creates a new folder, ci-news, which contains your application code, with CodeIgniter installed in the vendor folder.

Setting Development Mode

By default, CodeIgniter starts up in production mode. This is a safety feature to keep your site a bit more secure in case settings are messed up once it is live. So first let’s fix that. Copy or rename the env file to .env. Open it up.

This file contains server-specific settings. This means you never will need to commit any sensitive information to your version control system. It includes some of the most common ones you want to enter already, though they are all commented out. So uncomment the line with CI_ENVIRONMENT on it, and change production to development:

CI_ENVIRONMENT = development

Running Development Server

With that out of the way it’s time to view your application in a browser. You can serve it through any server of your choice, Apache, Nginx, etc, but CodeIgniter comes with a simple command that takes advantage of PHP’s built-in server to get you up and running fast on your development machines. Type the following on the command line from the root of your project:

> php spark serve

The Welcome Page

Now point your browser to the correct URL you will be greeted by a welcome screen. Try it now by heading to the following URL:

http://localhost:8080

and you should be greeted by the following page:../_images/welcome.png

This means that your application works and you can start making changes to it.

User Guide to begin learning how to build dynamic PHP applications

User Guide to begin learning how to build dynamic PHP applications

Demand of PHP is evident from the fact that the world’s top websites, like Facebook, Google, Wikipedia, and YouTube, are using PHP scripts at the backend. PHP is helpful in developing dynamic websites. It is a server-side scripting language that sends information directly to the server when a user submits a form. Before going towards the step-by-step guide on how to write PHP scripts, I will give you a general overview of PHP.

php guide

What is PHP?

First introduced by Rasmus Lerdorf, PHP is an open-source, server-side general scripting language that has now become a de-facto coding standard in the web development industry. It can be learned easily, and if one is from a coding background, he (or she) will find it very simple. This is why many are using PHP to polish up their entry-level coding skills.

PHP runs on different operating systems, like Windows, UNIX, Linux and supports different databases like MySQL, Microsoft Access, and Oracle. PHP can not only collect form data, but it can also create, read, write, delete, and close files on the server.

It can be easily embedded in HTML. PHP code is embedded in HTML with tags <?php ?>.

Example

12345678910<html><title>GettingStartedWithPHP</title><body><?phpecho”Your first PHP code”;?></body></html>

PHP is different from client-side scripting languages. PHP code is executed on the server side resulting in generation of HTML, which is then sent back to the client-side (for e.g., your browser) for execution.

Where to use PHP code?

You can use PHP to create dynamic web pages, collect form data, and send or receive cookies.

Applications of PHP Scripts

Let us see how many ways PHP scripting is used.

Server-Side Scripting

Server side scripting is the first purpose of PHP. All you need to start working on a desktop PC with PHP is a PHP Parser, a webserver (such as Apache) and a web browser like Google Chrome.

Command Line Scripting

If you want to use PHP on Linux or task scheduler on Windows, then you don’t really need a web server, but only a PHP Parser. This is called “command line scripting”.

Desktop Applications

Although, PHP is not a suitable language for development of desktop applications, but it supports some advanced features like PHP-GTK which is basically an extension of PHP. PHP-GTK provides object-oriented user interface.

PHP enables you to choose not only the operating system of your choice but also allows you to have choices to use a web server that you are familiar with. It also enables beginners and professionals to write scripts in their own ways as it allows procedural as well as object-oriented programming.

PHP not only enables you to output HTML but also lets you include images, PDFs, videos, and sounds. PHP can auto-generate XHTML and XML files.

PHP provides support to protocols like LDAP, HTTP, COM, POP3, etc. It also supports WDDX complex data exchange.

Pre-requisites of PHP

Before you start learning PHP, you need to learn some basics of HTML (Hypertext Markup Language), SS(Cascading Style Sheets) and Javascript.

How to install PHP

Before starting PHP, you need a web host with PHP and MYSQL. For this, you should also install a web server such as Apache. To do it locally on your PC, you may download XAMPP directly from Apache Friends.

Installation of Apache, PHP, MySQL, and PHPMyAdmin

In order to install PHP, MySQL, PHPMyAdmin and Apache in a single attempt, XAMPP should be installed.

Scroll over to XAMPP for Windows and download should begin shortly.

what is XAMPP

Click the .exe file to start the installation procedure.

setup xampp

Select the components which you want to install and click “Next”.

Xampp Server

In the components area, you can view several options. As a beginner, you don’t need all of them. You need to install Apache, which is a very famous web server. It manages client responses. For data storage and view, you need a database such as MySQL. Filezilla FTP server option is not needed for performing operations at localhost. Next option is the Mercury Mail Server option. Its primary function is to deal with emails received by the server. It is needed to enable the flow of emails, which is not a requirement at the moment. Tomcat is also a web server owned by Apache.

php hosting signup

Coming down to programming languages, PERL (which is also a high-level programming language) is not a need at the moment. PhpMyAdmin is the admin panel of database and is needed. Webalizer is an application for analysis and you need to install it for monitoring purposes. Fake Sendmail is also an application that will be explained later.

Select your desired location, where you want to install XAMPP and then click “Next”.

installation Xampp

Click “Next” on the coming screens to proceed with the installation process.

installation Xampp
Welcome Xampp

Now, you will see the final screen. I would suggest that you keep the “start the Control Panel” option checked. Click “Finish” to complete the installation process. A new window will open shortly.

Xampp setup wizard

The XAMPP Control Panel has now started. Now, click “Start” button in Apache and MySQL rows to begin.

Xampp Control Panel
Xampp Control Panel

You are now ready to start writing the code. Now all you need is an editor like Notepad++ or Dreamweaver to write the code.

After downloading Notepad++, you can start writing your code

<?php
echo “My first PHP Script”;
?>

Now, save the page as “test.php” in htdocs folder and click “Save” button.

test.php

Now, open a web browser and type localhost in the address bar. It will automatically open the index file but if you type localhost/test.php, it will open the page that we have saved.

my first php page

Consider another example.

<!DOCTYPE html>
<html>
<head>
<title>Getting Started With PHP</title>
</head>
<body>
<h1>Beginners Guide For PHP</h1>
<p>Tutorial Series For Learning PHP</p>
<?php
echo “2+3″.”<br/>”;//It will display the output 2+3
print “2+3”;// print will also display the output 2+3
?>
</body>
</html>

In this example, we use echo and print to show the same result. Here is the output we get.

beginners guide for PHP

You can see that the two lines of 2+3 are displayed as output by using different statements. Most of the professional programmers prefer to use echo because echo can bring up multiple strings or values at the same time, whereas print displays one statement at a time. Both echo and print can be used with or without parentheses; print() or echo(). Also, it is to be noticed that you can not see the sum of two numbers without using variables. The concept of variables will be introduced along with PHP data types in the next tutorial.

Consider the example below.

<!DOCTYPE html>
<html>
<head>
<title>Getting Started With PHP</title>
</head>
<body>
<h1>Beginners Guide For PHP</h1>
<p>Tutorial Series For Learning PHP</p>
<?php
$a=99;
$b=”Calculus”;
echo “Numbers you have got in $b are $a”.”<br/>”;
echo ‘Numbers you have got in $b are $a’;
?>
</body>
</html>

In this example, you can see that we have echoed the same string with double quotes and single quotes. Here is the output.

beginners guide php

When we use double quotes, it displays the string along with the values assigned to variables $a and $b. However, when we use single quotes, it will treat the whole statement as string and will display variables $a and $b. I will touch upon the concept of variables in detail in the next tutorial as well.

For now, congratulations! You have just executed your very first PHP scripts! In the upcoming weeks, I will be discussing more about PHP; from the most basic tutorials to the most advanced. I hope to see you around for more PHP tutorials.

PART 2: Data Types And Variable Concepts

In the meanwhile, you can sign up and deploy PHP on the revolutionary managed Cloud Hosting Platform. Choose your cloud provider from some of the best infrastructures around, namely Google Compute Engine, DigitalOcean and Amazon Web Services. It will take you less than 6 minutes to sign up, choose the cloud provider and deploy PHP on your selected cloud provider. It is fast and secure. Plus, you are always covered with a 24/7 support team that never keeps you at bay!

Soa Technology

Can I make 6 million a year selling on Amazon?

Can I make 6 million a year selling on Amazon?

Yes you can. There is actually an incredible success story of a 21-year old college kid who setup his Amazon business. Grew his sales from 0 to 93 million. Then sold his entire business for an Amazing $75 million!

So yeah you can get very, VERY rich with selling on Amazon. Personally I am not quite there yet, as I am “only” making $19k a month.
I started selling on Amazon about 3 years ago, and although it is hard work, it definitely paid off ! Over these 3 years I have learned some valuable lessons and setup my own checklist of what to look for when picking a product to sell on Amazon:

  1. Product must be simple to manufacture!
    We want to keep it as simple as possible and don’t take any risks with hard to manufacture products.
  2. Low competition
    The competition should have around 50 reviews or less.
  3. High demand
    At least $3000 revenue per month for competitors in my niche.
  4. Sales Price: $15 +
  5. Healthy profit margin
    Profit margin should be at least 33% of the sales price. So I want to make at least $1k per month on this product

This is just the basics. However, if you are really serious about starting a FBA business as well you can check out this post about