check folder size in ubuntu

Find the size of a directory in Linux

To find out the size of a directory, we will use ‘du’ command. du stands for disk usage.

The typical syntax of du command is given below:

du [OPTION]... [FILE] [directory]...

du [OPTION]... --files0-from=F

Let us type the ‘du’ command in the Terminal and see what it displays.

$ du
148     ./.npm/_cacache/index-v5/e2
8       ./.npm/_cacache/index-v5/07/0f
8       ./.npm/_cacache/index-v5/07/dd
8       ./.npm/_cacache/index-v5/07/16
8       ./.npm/_cacache/index-v5/07/43
8       ./.npm/_cacache/index-v5/07/2b
12      ./.npm/_cacache/index-v5/07/4d
8       ./.npm/_cacache/index-v5/07/a6
8       ./.npm/_cacache/index-v5/07/e3
72      ./.npm/_cacache/index-v5/07
8       ./.npm/_cacache/index-v5/04/d4
8       ./.npm/_cacache/index-v5/04/11
8       ./.npm/_cacache/index-v5/04/ba
8       ./.npm/_cacache/index-v5/04/52
8       ./.npm/_cacache/index-v5/04/be
8       ./.npm/_cacache/index-v5/04/01
12      ./.npm/_cacache/index-v5/04/2a
8       ./.npm/_cacache/index-v5/04/68
8       ./.npm/_cacache/index-v5/04/6f

As you see above, du command displays the disk usage of the directories along with its sub-directories in the current directory.

To display a particular directory’s size, for example public_html, run:

$ du public_html/
ubuntu@www:~$ du public_html/
56      public_html/routes
132     public_html/vendor/nikic/php-parser/grammar
68      public_html/vendor/nikic/php-parser/doc/component
100     public_html/vendor/nikic/php-parser/doc
100     public_html/vendor/nikic/php-parser/test/code/prettyPrinter/stmt
84      public_html/vendor/nikic/php-parser/test/code/prettyPrinter/expr
212     public_html/vendor/nikic/php-parser/test/code/prettyPrinter
68      public_html/vendor/nikic/php-parser/test/code/parser/stmt/namespace
48      public_html/vendor/nikic/php-parser/test/code/parser/stmt/function
84      public_html/vendor/nikic/php-parser/test/code/parser/stmt/class
20      public_html/vendor/nikic/php-parser/test/code/parser/stmt/loop
32      public_html/vendor/nikic/php-parser/test/code/parser/stmt/generator
324     public_html/vendor/nikic/php-parser/test/code/parser/stmt
64      public_html/vendor/nikic/php-parser/test/code/parser/scalar
44      public_html/vendor/nikic/php-parser/test/code/parser/errorHandling
44      public_html/vendor/nikic/php-parser/test/code/parser/expr/uvs
52      public_html/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall
264     public_html/vendor/nikic/php-parser/test/code/parser/expr
732     public_html/vendor/nikic/php-parser/test/code/parser
84      public_html/vendor/nikic/php-parser/test/code/formatPreservation
1032    public_html/vendor/nikic/php-parser/test/code
16      public_html/vendor/nikic/php-parser/test/PhpParser/Lexer
24      public_html/vendor/nikic/php-parser/test/PhpParser/Node/Stmt
12      public_html/vendor/nikic/php-parser/test/PhpParser/Node/Scalar
52      public_html/vendor/nikic/php-parser/test/PhpParser/Node
12      public_html/vendor/nikic/php-parser/test/PhpParser/ErrorHandler
60      public_html/vendor/nikic/php-parser/test/PhpParser/Builder
8       public_html/vendor/nikic/php-parser/test/PhpParser/Internal
28      public_html/vendor/nikic/php-parser/test/PhpParser/NodeVisitor
16      public_html/vendor/nikic/php-parser/test/PhpParser/Parser
320     public_html/vendor/nikic/php-parser/test/PhpParser
1364    public_html/vendor/nikic/php-parser/test
12      public_html/vendor/nikic/php-parser/bin
16      public_html/vendor/nikic/php-parser/test_old
20      public_html/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator
36      public_html/vendor/nikic/php-parser/lib/PhpParser/Lexer
44      public_html/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter
12      public_html/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdap                                                                                        tation
200     public_html/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt
12      public_html/vendor/nikic/php-parser/lib/PhpParser/Node/Name
112     public_html/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp
56      public_html/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp
32      public_html/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast
376     public_html/vendor/nikic/php-parser/lib/PhpParser/Node/Expr
36      public_html/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst
68      public_html/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar
708     public_html/vendor/nikic/php-parser/lib/PhpParser/Node
8       public_html/vendor/nikic/php-parser/lib/PhpParser/Comment
12      public_html/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler
60      public_html/vendor/nikic/php-parser/lib/PhpParser/Builder
28      public_html/vendor/nikic/php-parser/lib/PhpParser/Internal
28      public_html/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor
324     public_html/vendor/nikic/php-parser/lib/PhpParser/Parser
1500    public_html/vendor/nikic/php-parser/lib/PhpParser
1504    public_html/vendor/nikic/php-parser/lib
3212    public_html/vendor/nikic/php-parser
3216    public_html/vendor/nikic
24      public_html/vendor/league/flysystem-aws-s3-v3/src
40      public_html/vendor/league/flysystem-aws-s3-v3
44      public_html/vendor/league/flysystem/src/Plugin
24      public_html/vendor/league/flysystem/src/Util
24      public_html/vendor/league/flysystem/src/Adapter/Polyfill
96      public_html/vendor/league/flysystem/src/Adapter
288     public_html/vendor/league/flysystem/src
312     public_html/vendor/league/flysystem
76      public_html/vendor/league/oauth2-server/src/Grant
12      public_html/vendor/league/oauth2-server/src/AuthorizationValidators
12      public_html/vendor/league/oauth2-server/src/RequestTypes
20      public_html/vendor/league/oauth2-server/src/Exception
32      public_html/vendor/league/oauth2-server/src/Entities/Traits
64      public_html/vendor/league/oauth2-server/src/Entities
12      public_html/vendor/league/oauth2-server/src/Middleware
32      public_html/vendor/league/oauth2-server/src/Repositories
20      public_html/vendor/league/oauth2-server/src/ResponseTypes
276     public_html/vendor/league/oauth2-server/src
300     public_html/vendor/league/oauth2-server
84      public_html/vendor/league/event/src
96      public_html/vendor/league/event
752     public_html/vendor/league
28      public_html/vendor/filp/whoops/src/Whoops/Util
40      public_html/vendor/filp/whoops/src/Whoops/Exception
60      public_html/vendor/filp/whoops/src/Whoops/Handler
16      public_html/vendor/filp/whoops/src/Whoops/Resources/css
60      public_html/vendor/filp/whoops/src/Whoops/Resources/views

We can also display the size in “human readable format” (i.e. auto-selecting the appropriate unit for each size), rather than the standard block size.

To do so, add -h tag with du command as shown below.

$ du -h app/
ubuntu@www:~/public_html$ du -h app
32K     app/Helpers
728K    app/Http/Controllers/Api/V1
732K    app/Http/Controllers/Api
24K     app/Http/Controllers/Auth/Old
48K     app/Http/Controllers/Auth
104K    app/Http/Controllers/Admin
964K    app/Http/Controllers
44K     app/Http/Middleware
1016K   app/Http
24K     app/Providers
8.0K    app/Console
8.0K    app/Exports
12K     app/Mail
8.0K    app/Exceptions
36K     app/Models/api
164K    app/Models
1.4M    app

Now you see the size of the directories in Kilobytes, Megabytes and Gigabytes, which is very clear and easy to understand.

We can also display the disk usage size only in KB, or MB, or GB.

To do so, use -k for kilobytes, -m for megabytes

$ du -k app/
$ du -m app/

To find out which sub-directories consume how much disk size, use this command:

$ du -h --max-depth=1 | sort -hr

The largest sub-directories will be displayed on the top. You can increase the directory depth level by increasing the value of –max-depth parameter.

As you may noticed in the all above outputs, du command only displayed the disk usage of directories. But, what about the files? To display the disk usage of all items including files and directories, use -a flag.

$ du -ah app/
ubuntu@www:~/public_html$ du -ah app
4.0K    app/UserSpokenLanguage.php
4.0K    app/Contact.php
4.0K    app/Country.php
4.0K    app/UserDevice.php
4.0K    app/Sos.php
4.0K    app/UserImage.php
4.0K    app/UserScreenshot.php
8.0K    app/Helpers/Notifications.php
8.0K    app/Helpers/FileUpload.php
8.0K    app/Helpers/Common.php
4.0K    app/Helpers/Helpers.php
32K     app/Helpers
4.0K    app/UserMeetupMessage.php
4.0K    app/Event.php
4.0K    app/Http/Controllers/HomeControllerOld.php
364K    app/Http/Controllers/Api/V1/ApiController.php
360K    app/Http/Controllers/Api/V1/ApiController.php_24_12_2019
728K    app/Http/Controllers/Api/V1
732K    app/Http/Controllers/Api
12K     app/Http/Controllers/WebsiteController04nov.php
28K     app/Http/Controllers/CronjobController.php
4.0K    app/Http/Controllers/Auth/LoginController.php
4.0K    app/Http/Controllers/Auth/ForgotPasswordController.php
4.0K    app/Http/Controllers/Auth/ResetPasswordController.php
4.0K    app/Http/Controllers/Auth/RegisterController.php
4.0K    app/Http/Controllers/Auth/Old/LoginController.php
4.0K    app/Http/Controllers/Auth/Old/ForgotPasswordController.php
4.0K    app/Http/Controllers/Auth/Old/ResetPasswordController.php
4.0K    app/Http/Controllers/Auth/Old/RegisterController.php
4.0K    app/Http/Controllers/Auth/Old/VerificationController.php
24K     app/Http/Controllers/Auth/Old
4.0K    app/Http/Controllers/Auth/VerificationController.php
48K     app/Http/Controllers/Auth
12K     app/Http/Controllers/WebsiteController14nov.php
12K     app/Http/Controllers/WebsiteController.php
4.0K    app/Http/Controllers/Admin/CmsController.php
4.0K    app/Http/Controllers/Admin/ProfessionController.php
12K     app/Http/Controllers/Admin/AdminController.php
4.0K    app/Http/Controllers/Admin/FaqController.php

We can also display the size of multiple directories at once as shown below.

$ du -h directory1 directory2

If you want to check the total disk space used by a particular directory, use the -s flag.

$ du -sh app
ubuntu@www:~/public_html$ du -sh app
1.4M    app
ubuntu@www:~/public_html$

EXAMPLES :

$ du -csh app /home/sk/
2.8G app
279G /home/sk/
281G total

$ du -ch Downloads/ | grep total
12G total

$ du -ch --exclude='*.mp4' | grep total 
6.4G total
$ man du
DU(1)                                                                      User Commands                                                                      DU(1)

NAME
       du - estimate file space usage

SYNOPSIS
       du [OPTION]... [FILE]...
       du [OPTION]... --files0-from=F

DESCRIPTION
       Summarize disk usage of the set of FILEs, recursively for directories.

       Mandatory arguments to long options are mandatory for short options too.

       -0, --null
              end each output line with NUL, not newline

       -a, --all
              write counts for all files, not just directories

       --apparent-size
              print  apparent  sizes,  rather  than  disk  usage; although the apparent size is usually smaller, it may be larger due to holes in ('sparse') files,
              internal fragmentation, indirect blocks, and the like

       -B, --block-size=SIZE
              scale sizes by SIZE before printing them; e.g., '-BM' prints sizes in units of 1,048,576 bytes; see SIZE format below

       -b, --bytes
              equivalent to '--apparent-size --block-size=1'

       -c, --total
              produce a grand total

       -D, --dereference-args
              dereference only symlinks that are listed on the command line

       -d, --max-depth=N
              print the total for a directory (or file, with --all) only if it is N or fewer levels below the command line argument;  --max-depth=0 is the same  as
              --summarize

       --files0-from=F
              summarize disk usage of the NUL-terminated file names specified in file F; if F is -, then read names from standard input

check space used by folder linux only parent directory

du --max-depth=1 -h .

What is Fail2Ban

Fail2ban is a log-parsing application that monitors system logs for symptoms of an automated attack on your Linode. When an attempted compromise is located, using the defined parameters, Fail2ban will add a new rule to iptables to block the IP address of the attacker, either for a set amount of time or permanently. Fail2ban can also alert you through email that an attack is occurring.

Fail2ban is primarily focused on SSH attacks, although it can be further configured to work for any service that uses log files and can be subject to a compromise.

CentOS 7

  1. Ensure your system is up to date and install the EPEL repository:yum update && yum install epel-release
  2. Install Fail2Ban:yum install fail2ban
  3. Install Sendmail if you additionally would like email support. Sendmail is not required to use Fail2Ban.:yum install sendmail
  4. Start and enable Fail2ban and, if needed, Sendmail:systemctl start fail2ban systemctl enable fail2ban systemctl start sendmail systemctl enable sendmail NoteShould you encounter the error that there is “no directory /var/run/fail2ban to contain the socket file /var/run/fail2ban/fail2ban.sock”, create the directory manually:mkdir /var/run/fail2ban

Debian

  1. Ensure your system is up to date:apt-get update && apt-get upgrade -y
  2. Install Fail2ban:apt-get install fail2ban The service will automatically start.
  3. (Optional) If you would like email support, install Sendmail:apt-get install sendmail-bin sendmail NoteThe current version of Sendmail in Debian Jessie has an upstream bug which causes the following errors when installing sendmail-bin. The installation will hang for a minute, but then complete.Creating /etc/mail/sendmail.cf... ERROR: FEATURE() should be before MAILER() MAILER('local') must appear after FEATURE('always_add_domain') ERROR: FEATURE() should be before MAILER() MAILER('local') must appear after FEATURE('allmasquerade')

Fedora

  1. Update your system:dnf update
  2. Install Fail2ban:dnf install fail2ban
  3. (Optional) If you would like email support, install Sendmail:dnf install sendmail
  4. Start and enable Fail2ban and, if needed, Sendmail:systemctl start fail2ban systemctl enable fail2ban systemctl start sendmail systemctl enable sendmail

Ubuntu

  1. Ensure your system is up to date:apt-get update && apt-get upgrade -y
  2. Install Fail2ban:apt-get install fail2ban The service will automatically start.
  3. (Optional) If you would like email support, install Sendmail:apt-get install sendmail
  4. Allow SSH access through UFW and then enable the firewall:
    ufw allow ssh
    ufw enable

Configure Fail2ban

Fail2ban reads .conf configuration files first, then .local files override any settings. Because of this, all changes to the configuration are generally done in .local files, leaving the .conf files untouched.

Configure fail2ban.local

  1. fail2ban.conf contains the default configuration profile. The default settings will give you a reasonable working setup. If you want to make any changes, it’s best to do it in a separate file, fail2ban.local, which overrides fail2ban.conf. Rename a copy fail2ban.conf to fail2ban.local.
cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local

2. From here, you can opt to edit the definitions in fail2ban.local to match your desired configuration. The values that can be changed are:

  • loglevel: The level of detail that Fail2ban’s logs provide can be set to 1 (error), 2 (warn), 3 (info), or 4 (debug).
  • logtarget: Logs actions into a specific file. The default value of /var/log/fail2ban.log puts all logging into the defined file. Alternately, you can change the value to:
    • STDOUT: output any data
    • STDERR: output any errors
    • SYSLOG: message-based logging
    • FILE: output to a file
  • socket: The location of the socket file.
  • pidfile: The location of the PID file.

Configure jail.local Settings

  1. The jail.conf file will enable Fail2ban for SSH by default for Debian and Ubuntu, but not CentOS. All other protocols and configurations (HTTP, FTP, etc.) are commented out. If you want to change this, create a jail.local for editing:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

/etc/fail2ban/jail.local

# "backend" specifies the backend used to get files modification.
# Available options are "pyinotify", "gamin", "polling", "systemd" and "auto".
# This option can be overridden in each jail as well.

. . .

backend = systemd

No jails are enabled by default in CentOS 7. For example, to enable the SSH daemon jail, uncomment the following lines in jail.local:

/etc/fail2ban/jail.local

[sshd]
enabled = true

Whitelist IP

To ignore specific IPs, add them to the ignoreip line. By default, this command will not ban the localhost. If you work from a single IP address often, it may be beneficial to add it to the ignore list:

/etc/fail2ban/jail.local

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1/8 123.45.67.89

If you wish to whitelist IPs only for certain jails, this can be done with the fail2ban-client command. Replace JAIL with the name of your jail, and 123.45.67.89 with the IP you wish to whitelist.

fail2ban-client set JAIL addignoreip 123.45.67.89

Ban Time and Retry Amount

Set bantimefindtime, and maxretry to define the circumstances and the length of time of a ban:

/etc/fail2ban/jail.local
# "bantime" is the number of seconds that a host is banned.
bantime  = 600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 600
maxretry = 3
  • bantime: The length of time in seconds for which an IP is banned. If set to a negative number, the ban will be permanent. The default value of 600 is set to ban an IP for a 10-minute duration.
  • findtime: The length of time between login attempts before a ban is set. For example, if Fail2ban is set to ban an IP after five (5) failed log-in attempts, those 5 attempts must occur within the set 10-minute findtime limit. The findtime value should be a set number of seconds.
  • maxretry: How many attempts can be made to access the server from a single IP before a ban is imposed. The default is set to 3.

Other Jail Configuration

Beyond the basic settings address above, jail.local also contains various jail configurations for a number of common services, including SSH, and iptables. By default, only SSH is enabled and the action is to ban the offending host/IP address by modifying the iptables firewall rules.

An average jail configuration will resemble the following:

/etc/fail2ban/jail.local

# Default banning action (e.g. iptables, iptables-new,
# iptables-multiport, shorewall, etc) It is used to define
# action_* variables. Can be overridden globally or per
# section within jail.local file
banaction = iptables-multiport
banaction_allports = iptables-allports

[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6
  • banaction: Determines the action to use when the threshold is reached. If you have configured the firewall to use firewalld set the value to firewallcmd-ipset and if you have configured the firewall to use UFW set the value to ufw.
  • banaction_allports: Blocks a remote IP in every port. If you have configured the firewall to use firewalld set the value to firewallcmd-ipset.
  • enabled: Determines whether or not the filter is turned on.
  • port: The port Fail2ban should be referencing in regards to the service. If using the default port, then the service name can be placed here. If using a non-traditional port, this should be the port number. For example, if you moved your SSH port to 3456, you would replace ssh with 3456.
  • filter: The name of the file located in /etc/fail2ban/filter.d that contains the failregex information used to parse log files appropriately. The .conf suffix need not be included.
  • logpath: Gives the location of the service’s logs.
  • maxretry: Will override the global maxretry for the defined service. findtime and bantime can also be added.
  • action: This can be added as an additional setting, if the default action is not suitable for the jail. Additional actions can be found in the action.d folder.

What is Scalable Vector Graphics (SVG)

Scalable Vector Graphics (SVG) is an Extensible Markup Language (XML)-based vector image format for two-dimensional graphics with support for interactivity and animation. The SVG specification is an open standard developed by the World Wide Web Consortium (W3C) since 1999.

SVG images and their behaviors are defined in XML text files. This means that they can be searched, indexed, scripted, and compressed. As XML files, SVG images can be created and edited with any text editor, as well as with drawing software.

All major modern web browsers—including Mozilla Firefox, Internet Explorer, Google Chrome, Opera, Safari, and Microsoft Edge—have SVG rendering support.

SVG has been in development within the World Wide Web Consortium (W3C) since 1999 after six competing proposals for vector graphics languages had been submitted to the consortium during 1998. The early SVG Working Group decided not to develop any of the commercial submissions, but to create a new markup language that was informed by but not really based on any of them.

SVG allows three types of graphic objects: vector graphic shapes such as paths and outlines consisting of straight lines and curves, bitmap images, and text. Graphical objects can be grouped, styled, transformed and composited into previously rendered objects. The feature set includes nested transformations, clipping paths, alpha masks, filter effects and template objects. SVG drawings can be interactive and can include animation, defined in the SVG XML elements or via scripting that accesses the SVG Document Object Model (DOM). SVG uses CSS for styling and JavaScript for scripting. Text, including internationalization and localization, appearing in plain text within the SVG DOM enhances the accessibility of SVG graphics.

The SVG specification was updated to version 1.1 in 2011. There are two ‘Mobile SVG Profiles,’ SVG Tiny and SVG Basic, meant for mobile devices with reduced computational and display capabilities. Scalable Vector Graphics 2 became a W3C Candidate Recommendation on 15 September 2016. SVG 2 incorporates several new features in addition to those of SVG 1.1 and SVG Tiny 1.2.

Printing

Though the SVG Specification primarily focuses on vector graphics markup language, its design includes the basic capabilities of a page description language like Adobe’s PDF. It contains provisions for rich graphics, and is compatible with CSS for styling purposes. SVG has the information needed to place each glyph and image in a chosen location on a printed page.

Scripting and animation

Main article: SVG animation
SVG drawings can be dynamic and interactive. Time-based modifications to the elements can be described in SMIL, or can be programmed in a scripting language (e.g. ECMAScript or JavaScript). The W3C explicitly recommends SMIL as the standard for animation in SVG.

A rich set of event handlers such as onmouseover and onclick can be assigned to any SVG graphical object.

Compression

SVG images, being XML, contain many repeated fragments of text, so they are well suited for lossless data compression algorithms. When an SVG image has been compressed with the industry standard gzip algorithm, it is referred to as an “SVGZ” image and uses the corresponding .svgz filename extension. Conforming SVG 1.1 viewers will display compressed images. An SVGZ file is typically 20 to 50 percent of the original size. W3C provides SVGZ files to test for conformance.

what is the use of microk8s

What is Kubernetes

Kubernetes clusters host containerised applications in a reliable and scalable way. Having DevOps in mind, Kubernetes makes maintenance tasks such as upgrades dead simple.

What is MicroK8s

MicroK8s is a CNCF certified upstream Kubernetes deployment that runs entirely on your workstation or edge device. Being a snap it runs all Kubernetes services natively (i.e. no virtual machines) while packing the entire set of libraries and binaries needed. Installation is limited by how fast you can download a couple of hundred megabytes and the removal of MicroK8s leaves nothing behind.

In this tutorial you’ll learn how to…

  • Get your Kubernetes cluster up and running
  • Enable core Kubernetes addons such as dns and dashboard
  • Control your cluster from the kubectl CLI client
  • Deploy your first container workload

You will only need …

  • A machine with Linux

Integrated commands

There are many commands that ship with MicroK8s. We’ve only seen the essential ones in this tutorial. Explore the others at your own convenience:

  • microk8s.status: Provides an overview of the MicroK8s state (running / not running) as well as the set of enabled addons
  • microk8s.enable: Enables an addon
  • microk8s.disable: Disables an addon
  • microk8s.kubectl: Interact with kubernetes
  • microk8s.config: Shows the kubernetes config file
  • microk8s.istioctl: Interact with the istio services; needs the istio addon to be enabled
  • microk8s.inspect: Performs a quick inspection of the MicroK8s intallation
  • microk8s.reset: Resets the infrastructure to a clean state
  • microk8s.stop: Stops all kubernetes services
  • microk8s.start: Starts MicroK8s after it is being stopped

Lightweight Kubernetes done right

The smallest, fastest, fully-conformant Kubernetes that tracks upstream releases and makes clustering trivial. MicroK8s is great for offline development, prototyping, and testing. Use it on a VM as a small, cheap, reliable k8s for CI/CD. The best kubernetes for appliances. Develop IoT apps for k8s and deploy them to MicroK8s on your Linux boxes.

Reliable, fast, small, upstream.

  • Fast install : Get a full Kubernetes system running in under 60 seconds.
  • Secure : Runs safely on your laptop with state of the art isolation.
  • Upstream : CNCF binaries delivered to your laptop, with updates and upgrades.
  • Complete : Includes a docker registry so you can make containers, push them, and deploy them all on your laptop.
  • Featureful : Cool things you probably want to try on a small, standard K8s are all built-in. Just enable them and go.
  • Updates : Get the daily build if you want it, or betas and milestones, or just stable point releases.
  • Upgrades : When a new major version comes out, upgrade with a single command (or automatically).
  • GPGPU Passthrough : Give MicroK8s a GPGPU and your docker containers can get all nice and CUDA.
  • Small : Use MicroK8s in your CI/CD pipelines and get on with your day without headaches.

What is DevOps?

DevOps is a set of practices that automates the processes between software development and IT teams, in order that they can build, test, and release software faster and more reliably. The concept of DevOps is founded on building a culture of collaboration between teams that historically functioned in relative siloes. The promised benefits include increased trust, faster software releases, ability to solve critical issues quickly, and better manage unplanned work.

At its essence, DevOps is a culture, a movement, a philosophy.

It’s a firm handshake between development and operations that emphasizes a shift in mindset, better collaboration, and tighter integration. It unites agile, continuous delivery, automation, and much more, to help development and operations teams be more efficient, innovate faster, and deliver higher value to businesses and customers.

History of DevOps

The DevOps movement started to coalesce some time between 2007 and 2008, when IT operations and software development communities got vocal about what they felt was a fatal level of dysfunction in the industry.

They railed against the traditional software development model, which called for those who write the code to be organizationally and functionally apart from those who deploy and support that code.

Developers and IT/Ops professionals had separate (and often competing) objectives, separate department leadership, separate key performance indicators by which they were judged, and often worked on separate floors or even separate buildings. The result was siloed teams concerned only with their own fiefdoms, long hours, botched releases, and unhappy customers.

Surely there’s a better way, they said. So the two communities got together and started talking – with people like Patrick Dubois, Gene Kim, and John Willis driving the conversation.

What began in online forums and local meet-ups is now a major theme in the software zeitgeist, which is probably what brought you here! You and your team are feeling the pain caused by siloed teams and broken lines of communication within your company.

You’re using agile methodologies for planning and development, but still struggling to get that code out the door without a bunch of drama. You’ve heard a few things about DevOps and the seemingly magical effect it can have on teams and think “I want some of that magic.”

The bad news is that DevOps isn’t magic, and transformations don’t happen overnight. The good news is that you don’t have to wait for upper management to roll out a large-scale initiative. By understanding the value of DevOps and making small, incremental changes, your team can embark on the DevOps journey right away. Let’s look at each of these benefits in detail.

What’s in it for you?

Collaboration and trust

Culture is the #1 success factor in DevOps. Building a culture of shared responsibility, transparency and faster feedback is the foundation of every high performing DevOps team.

Teams that work in siloes often don’t adhere to the ‘systems thinking’ of DevOps. ‘Systems thinking’ is being aware of how your actions not only affect your team, but all the other teams involved in the release process. Lack of visibility and shared goals means lack of dependency planning, misaligned priorities, finger pointing, and ‘not our problem’ mentality, resulting in slower velocity and substandard quality. DevOps is that change in mindset of looking at the development process holistically and breaking down the barrier between Dev and Ops.

Release faster and work smarter

Speed is everything. Teams that practice DevOps release more frequently, with higher quality and stability.

Lack of automated test and review cycles block the release to production and poor incident response time kills velocity and team confidence. Disparate tools and processes increase OPEX, lead to context switching, and slow down momentum. Through automation and standardized tools and processes, teams can increase productivity and release more frequently with fewer hiccups.

Accelerate time to resolution

The team with the fastest feedback loop is the team that thrives. Full transparency and seamless communication enable DevOps teams to minimize downtime and resolve issues faster than ever before.

If critical issues aren’t resolved quickly, customer satisfaction tanks. Key issues slip through the cracks in the absence of open communication, resulting in increased tension and frustration among teams. Open communication helps Dev and Ops teams swarm on issues, fix incidents, and unblock the release pipeline faster.

Better manage unplanned work

Unplanned work is a reality that every team faces–a reality that most often impacts team productivity. With established processes and clear prioritization, the Dev and Ops teams can better manage unplanned work while continuing to focus on planned work.

Transitioning and prioritizing unplanned work across different teams and systems is inefficient and distracts from work at hand. However, through raised visibility and proactive retrospection, teams can better anticipate and share unplanned work.

What are the disadvantages of AngularJS?

Advantages of AngularJS:

  1. Open source JavaScript framework, developed by Google
  2. MVC architecture
  3. Write less do more
  4. Modify DOM directly
  5. Two way data binding
  6. Quiet a number of ways to do same thins

Disadvantages of AngularJS:

  1. Limitation in watchers (not more than 2000)
  2. Not built for mobile devices
  3. Multiple ways to do the same thing, it is very hard for a developer to tell which is the best way.
  4. Two way binding checks all the variables twice for updating which makes the UI slow

If you are new to AngularJS, I would recommend to learn Angular 2 or above.

Angular 2 is a completely rewritten of Angular 1.X so you can learn it without knowing about AngularJS or Angular 1.x.

Following are the Advantages of AngularJS

  • allows us to create a single page application
  • follows MVC pattern
  • predefined form validations
  • supports animation
  • open source
  • cross-browser compliant
  • supports two-way data binding
  • its code is unit testable

Following are the Disadvantages of AngularJS

  • JavaScript Dependent: If end user disables JavaScript, AngularJS will not work.
  • Not Secured: It is JavaScript based framework so it is not safe to authenticate user through AngularJS only.

With AngularJS, you don’t have the ability to compose many NG-apps on the same page. This can cause name clashes.

Advantages Of AngularJS

Here are some of the compelling advantages of AngularJS:

Built by Google

AngularJS has been developed as well as maintained by dedicated Google engineers. This means that there is a huge community out there for you to learn from. Apart from that, there are engineers that can help you tackle any challenges you face on the way. It also means that clients get what they want.

Great MVC

As mentioned earlier, most frameworks require programmers to splitting the app into multiple MVC components. After that, the programmer has to write a code to put them together again. AngularJS, however, strings it together automatically. That saves you time, and reduces the app’s time-to-market.

Intuitive

AngularJS is more intuitive as it makes use of HTML as a declarative language. Moreover, it is less brittle for reorganizing.

Comprehensive

AngularJS is a comprehensive solution for rapid front-end development. It does not need any other plugins or frameworks. Moreover, there are a range of other features that include Restful actions, data building, dependency injection, enterprise-level testing, etc.

Unit Testing Ready

AngularJS is unit testing ready, and that is one of its most compelling advantages.

Apart from these, there are a range of other advantages that make AngularJS as popular as it is.

Disadvantages Of AngularJS

Along with advantages, you will always come across disadvantages of any platform. That’s the case with AngularJS too.

Here’s a compilation of some of the drawbacks of using AngularJS:

Confusion

There are multiple ways to do the same thing with AngularJS. Sometimes, it can be hard for novices to say which way is better for a task. Hence, it is imperative for programmers to develop an understanding of the various components and how they help.

Lagging UI

If there are more than 2000 watchers, it can get the UI to severely lag. This means that the possible complexity of Angular Forms is limited. This includes big data grids and lists.

Syncs directories and S3 prefixes. Recursively copies new and updated files from the source directory to the destination. Only creates folders in the destination if they contain one or more files.

Examples

The following sync command syncs objects under a specified prefix and bucket to files in a local directory by uploading the local files to s3. A local file will require uploading if the size of the local file is different than the size of the s3 object, the last modified time of the local file is newer than the last modified time of the s3 object, or the local file does not exist under the specified bucket and prefix. In this example, the user syncs the bucket mybucket to the local current directory. The local current directory contains the files test.txt and test2.txt. The bucket mybucket contains no objects:

aws s3 sync . s3://mybucket

Output:

upload: test.txt to s3://mybucket/test.txt
upload: test2.txt to s3://mybucket/test2.txt

The following sync command syncs objects under a specified prefix and bucket to objects under another specified prefix and bucket by copying s3 objects. A s3 object will require copying if the sizes of the two s3 objects differ, the last modified time of the source is newer than the last modified time of the destination, or the s3 object does not exist under the specified bucket and prefix destination. In this example, the user syncs the bucket mybucket to the bucket mybucket2. The bucket mybucket contains the objects test.txt and test2.txt. The bucket mybucket2 contains no objects:

aws s3 sync s3://mybucket s3://mybucket2

Output:

copy: s3://mybucket/test.txt to s3://mybucket2/test.txt
copy: s3://mybucket/test2.txt to s3://mybucket2/test2.txt

The following sync command syncs files in a local directory to objects under a specified prefix and bucket by downloading s3 objects. A s3 object will require downloading if the size of the s3 object differs from the size of the local file, the last modified time of the s3 object is newer than the last modified time of the local file, or the s3 object does not exist in the local directory. Take note that when objects are downloaded from s3, the last modified time of the local file is changed to the last modified time of the s3 object. In this example, the user syncs the current local directory to the bucket mybucket. The bucket mybucket contains the objects test.txt and test2.txt. The current local directory has no files:

aws s3 sync s3://mybucket .

Output:

download: s3://mybucket/test.txt to test.txt
download: s3://mybucket/test2.txt to test2.txt

The following sync command syncs objects under a specified prefix and bucket to files in a local directory by uploading the local files to s3. Because the –delete parameter flag is thrown, any files existing under the specified prefix and bucket but not existing in the local directory will be deleted. In this example, the user syncs the bucket mybucket to the local current directory. The local current directory contains the files test.txt and test2.txt. The bucket mybucket contains the object test3.txt:

aws s3 sync . s3://mybucket --delete

Output:

upload: test.txt to s3://mybucket/test.txt
upload: test2.txt to s3://mybucket/test2.txt
delete: s3://mybucket/test3.txt

The following sync command syncs objects under a specified prefix and bucket to files in a local directory by uploading the local files to s3. Because the –exclude parameter flag is thrown, all files matching the pattern existing both in s3 and locally will be excluded from the sync. In this example, the user syncs the bucket mybucket to the local current directory. The local current directory contains the files test.jpg and test2.txt. The bucket mybucket contains the object test.jpg of a different size than the local test.jpg:

aws s3 sync . s3://mybucket --exclude "*.jpg"

Output:

upload: test2.txt to s3://mybucket/test2.txt

The following sync command syncs files under a local directory to objects under a specified prefix and bucket by downloading s3 objects. This example uses the –exclude parameter flag to exclude a specified directory and s3 prefix from the sync command. In this example, the user syncs the local current directory to the bucket mybucket. The local current directory contains the files test.txt and another/test2.txt. The bucket mybucket contains the objects another/test5.txt and test1.txt:

aws s3 sync s3://mybucket/ . --exclude "*another/*"

Output:

download: s3://mybucket/test1.txt to test1.txt

The following sync command syncs files between two buckets in different regions:

aws s3 sync s3://my-us-west-2-bucket s3://my-us-east-1-bucket --source-region us-west-2 --region us-east-1

Laravel: The Fantastic 4 Interfaces — Responsable

Credit where is due. Last year I stumbled upon an article of Josip Crnković, in which he walked through some of the useful interfaces the framework has. In it, he discovers some that are used to send a Response to the browser.

After giving them a shot, I have to say these alleviates a lot of DRY problems and slims down multiple lines of code to just a few. In this series of articles I will check them out, as these may help you to code more easily your application.

Responsable

Have you ever wished to lean your Http Controllers full of frankenstein code? Are you tired of creating the Response every freaking time? Then you need the Responsable interface!

Top 20 Hybrid Mobile App Frameworks

Hybrid Apps Frameworks Introduction :

A Hybrid Mobile Application is like any other application that you should be found on your phone or on your hand-held device. A hybrid mobile application can be viewed as the best (or the worst) of both the Native and HTML5 worlds together.

The frameworks are neither numbered in order of their preference nor by the preference of usage, hence please go through all the frameworks and all the nitty-gritty details about each of these frameworks to make up your mind to choose the one that suits you the best. Without any further delay, let’s get down to business:

Top 20 Hybrid Mobile App Frameworks :

Here is the list of the most used Hybrid Mobile App Frameworks and we have taken a decision to limit ourselves to only 20 of these fantastic frameworks using which you can create the hybrid mobile applications that suit your business requirements without any hassles. We have made an honest attempt to provide as much detail as possible under each of these tools, hence take the time to go through each detail for your decision making:

1. React Native :

React Native

One of the main purposes of this framework is to develop native applications over hybrid applications that run on a web-view. The coding for your applications will still be done via React and JavaScript and one of the features of it is that it is not very customized for the beginners but its active community can help you resolve issues (if there are any) at the quickest and the earliest. With its latest release, they have extended their support to Android which is a welcome move as well.

Advantages of React Native:

  • Numerous ready to use components to speed up the development process
  • Provides with a provision to copy the code base between iOS and Android
  • Provides with a provision of hot deployment without the need of the developer to save the changes
  • Bugs can be identified easily as the programming is carried over in a declarative style


Disadvantages of 
React Native:

  • There is still a gap in the form of navigation components that can enable seamless user experience
  • There is still place for improvement in the hardware areas

2. Xamarin :

Xamarin

Xamarin is one of the key mobile application development frameworks that has been employed in many of the Organizations for a very good reason, more than 1.4 million developers strong community around the world. The Xamarin platform is known to abide by the WORA (Write once, Run anytime) principle. Xamarin is known to make business mobile applications with the native look and feel.

Advantages of Xamarin :

  • Microsoft has got its back, supporting all the technical aid that a tool can ask for.
  • More than 70% of the code is reusable between iOS and Android, there by lesser code to write for your own business application.
  • Easy to run tests on these applications
  • Xamarin ensures that you get the same level of performance that you rather get from a Native Mobile application.
  • Xamarin Forms is the tool that provides you with the platform-specific features, over and above the reusable code that you could already use.

Disadvantages  of Xamarin :

  • Comes with a huge cost of the business license ($999)
  • It provides its support to a specific number of technical components which are available within its own library.
  • Integration can become a nightmare if applications are created using Xamarin.

3. Onsen UI :

Onsen UI

Onsen UI is an open source mobile application development framework that is well equipped to be used without the Angular JS requirement. It also comes with a very nice set of documentation that explains all the nitty-gritty details with examples of the common application structures. It provides the ease of use for the developers to build applications by putting together the native looking components as well.

Advantages of Onsen UI :

  • Onsen UI is easy to use a framework that finds its inspiration from Web Components
  • It is compatible with both jQuery and also with AngularJS
  • One of the biggest advantages is that it is free and open-source
  • This tool comes with enough number of features like the Font Awesome, built-in Theme Roller, Screen Transition and many more

Related Page: AngularJS vs. JQuery

Disadvantages of Onsen UI :

  • A template upgrade if decided for can kill a lot of time
  • Non-availability of templates created through this tool on repositories like GitHub is another big disadvantage.

4. PhoneGap:

PhoneGap

PhoneGap is yet another open source mobile application development framework and is also considered the simplest cross-platform framework. Creating applications with this tool is done all with Web APIs, which in other words is that it develops these applications under a wrapper native app shell and then implements them in the native stores for various available platforms. It also comes with the provision of a cloud service named “Build” that compiles applications without the requirement of any SDKs installed on the environment.

Advantages of PhoneGap:

  • Any individual with basic hands-on with JavaScript, CSS and HTML5 can deliver in PhoneGap development from the first day itself.
  • Compatible with Windows 7, Android and iOS.
  • Multiplatform validation can be comfortably skipped and the focus can be devoted to just UI

Disadvantages of PhoneGap:

  • There is a definite gap of more UI widgets in the framework
  • Performance is not the best when compared to the other set of tools that we are looking at.

5. Ionic :

Ionic

Ionic is a very prominent framework and also considered as the preferred choice of most of the developers. CSS portions of the framework are enough to develop native looking applications. The complete potential of Ionic framework can be put to use if it is paired up with AngularJS. With the command line interface that we get along with Ionic, there are a lot of features that we get as like the integrated emulators and Cordova based app packages.

Advantages of Ionic :

  • Develop once and put them across all supported platform at once
  • Rich and robust applications can be built using it along with AngularJS
  • As the reliability is more on CSS, JavaScript and HTML – the code is more maintainable and also assures quicker development.

Disadvantages of Ionic :

  • App performances are not as good as applications that were built for a specific environment
  • Tagging along AngularJS creates a skill gap in the budding JavaScript developers
  • Complex in-app navigation at present


6. Framework7 :

framework7

Like the other frameworks, this is by far the most stable and independent framework – as this doesn’t have any dependency on React or AngularJS. Even with this, there is a good chance that we can make our applications look native with nice animations, fine styled components. This tool also requires just the CSS, JavaScript and HTML knowledge for active development.

Advantages of Framework7 :

  • Customization is very easy to achieve
  • Helps in creating native applications without the external dependencies of React or AngularJS.
  • Provides many UI widgets and elements that help in developing feature rich mobile applications.

Disadvantages of Framework7 :

  • For any package emulation or to provide any mobile application builder, this has to be put along with either PhoneGap or Cordova
  • A necessity to work with F7 MVC framework for mobile application development
  • It is not compatible with all the possible mobile platforms.


7. Intel XDK :

Intel XDK

Next on our list is the Intel XDK, which allows an individual to develop cross-platform applications for different available stores. This includes all the services ranging from web services to plugins for rich content, interactive mobile apps, and responsive apps which are known to run on any kind of device. It is a framework that is known to help developers with almost all the tasks ranging from development to emulation, to testing and to debugging. In the recent times, there was a major change in support for all the functionalities that one would love to build mobile HTML5 applications using either Apache Cordova or any other of choice for Android, iOS and Windows 10 UAP.

Advantages of Intel XDK:

  • Provides a lot of developer-friendly features and also acts as a one-stop shop for all development activities
  • Newer releases extend its support to Android, iOS and Windows
  • The tool also allows users with live preview option on the connected device when you are still in the stages of development in an integrated environment with other tools.

Disadvantages of Intel XDK :

There is a drag and drop feature that an individual could use but it creates loads of code, which is not required.


8. Appcelerator Titanium :

Appcelerator Titanium

Appcelerator Titanium is indeed a better solution to create hybrid mobile applications and to get started with this tool, you can go ahead with downloading the Titanium studio. The Titanium SDK is strong enough with all the rapid development features of mobile applications. Alongside to that, mobile applications that are created with Alloy are also easy to use across different applications and hence the development time is reduced by many folds and so is the number of lines of code to achieve this. In the end, the compiled code is a combination of both the native and JavaScript which further improves performance for mobile hybrid development.

Advantages of Appcelerator Titanium:

  • This tool provides a mixed development environment experience of tools as like Xamarin and PhoneGap.
  • Mobile applications that are created in conjunction with Alloy, enables ease of reuse across different applications and platforms.

Disadvantages of Appcelerator Titanium :

  • All applications that are written in JavaScript would still require to use custom XML and also Appcelerator’s API in order to support few of the native features.
  • Though this framework is called a cross-platform framework with full support for Android, iOS – it doesn’t include CSS and HTML along with itself.


9. Mobile Angular UI :

mobile angular ui

Mobile Angular UI can be considered a framework built with Bootstrap and AngularJS very comfortably. With this framework, you are assured to get the best of the Bootstrap 3 and also from Angular framework, in order to build nice HTML5 mobile apps. It can also be considered as an extension to the existing Bootstrap 3 without the dependencies of BootstrapJS libraries or jQuery. All you need here is to have some AngularJS directives to make beautiful mobile applications..

Advantages of Mobile Angular UI  :

  • For the best mobile experience, this framework comes with fastclick.js and overthrow.js
  • One of the greatest advantages that one could think of Mobile Angular UI is that it is available for free and is also an open source framework.

Disadvantages of Mobile Angular UI :

There are internal dependencies in Bootstrap3 as well which can cause a lag


10. Sencha Touch :

Sencha Touch

Sencha Touch is yet another enterprise-grade framework that is used for building cross-platform web applications with the help of  HTML5 and JavaScript. It is one of the premium choices of mobile app development frameworks in the commercial space and that too mostly constituting the enterprises. ExtJS, one of the most powerful and popular JavaScript frameworks backs Sencha Touch platform. This in turn creates high-performance applications with close to native application experience. Sencha is also known for a drag and drop HTML5 visual application builder, it has tons of ready to use mobile app templates. You can also create custom components and add them to the library to reuse in various applications.

Advantages of Sencha Touch:

  • Sencha Touch rates high in the ranking against its competitors as it provides native look and feels across all the platforms that it extends its support to.
  • It is the premium choice for all the enterprise application developments
  • It packs widgets which are ready to use from the word go with offer native look and feel for all the popular platforms like iOS, Android, Blackberry and Windows.

Disadvantages of Sencha Touch:

  • Though the frameworks like Ionic, Onsen UI or Framework7 will serve the purpose Sencha Touch is for the enterprise application development alone.
  • Alongside that, it is a commercial framework for hybrid mobile application development, the tools that it works with hand in hand all come with a fat price tags.


11. Kendo UI :

Kendo UI

Kendo UI is yet another hybrid mobile application development framework which is also an HTML5 framework that is widely used for cross-platform mobile application development. It is powered by Telerik. There is a strong dependency on jQuery and has around 70+ ready to use jQuery mobile app widgets from the word go. This can be integrated with AngularJS and Bootstrap UI frameworks very easily

Advantages of Kendo UI:

  • One of the greatest advantages of using Kendo UI is that it is not very difficult to learn, as most of the developers are already familiar with jQuery.
  • The second advantage is that it is an open source framework which is available free for usage.

Disadvantages of Kendo UI:

  • Since that it is an open source technology to use, it comes with a limited set of features.
  • Not just that, it also has a limited community team of developers to provide any further technical support.
  • Most of the commonly used widgets are under commercial license.


12. jQuery Mobile :

jQuery Mobile

When most of the hybrid mobile application development frameworks lean towards providing a native look and feel to the applications built in these, jQuery Mobile has taken a totally different approach in delivering generic applications which perform in a consistent manner in any of the given platforms (Symbian, Windows, Blackberry or the others). jQuery Mobile is a wonderful framework for organizations that believe in the ideology of BYOD (Bring Your Own Device) as it provides its support for various operating systems. This tool also enforces on the belief that not every other developer is an iOS or an Android fan.

Advantages of jQuery Mobile:

  • Since its inception, jQuery Mobile has undergone various changes and it is considered a stable environment to work upon comfortably.
  • With the help of ThemeRoller, we can create our own themes without writing any additional code
  • With jQuery Mobile, screens are responsive with the size and also different devices
  • Development is pretty easy, as it is in HTML5 and JavaScript
  • Provides easy to add collapsible menus for your applications
  • It makes it pretty easy to create a client product page and the other custom pages without any hassles

Disadvantages of jQuery Mobile :

  • jQuery Mobile works fine for simpler designs but when we have a custom design, there is a lot of code that has to be overwritten.
  • Custom HTML themes will end up with loads of CSS related issues
  • .NET interaction with jQuery Mobile is one of the biggest troubles, especially with the update panels.


13. Mobincube :

Mobincube

Mobincube is a wonderful application interface that provides its users the ease of developing any kind of mobile application. Mobincube is the best possible tool that is available to build native mobile applications for Android, iOS and Windows platforms. The ease of use of this tool is super awesome with just adding screens and adding elements you can build the core of your application.

If you are pretty new to this arena of development, there are a 100% pre-built templates that could be used to make the dream application for your business all by yourself with almost no possible coding. There is a possibility that the developers can create applications for businesses, educational institutes, entertainment industry and healthcare industry – so on and so forth. If you want to flaunt your technical expertise, you could showcase your development skills by adding your own masterpieces of HTML, JavaScript for additional functionality and also interaction.

Advantages of Mobincube :

  • There is a provision to create mobile stores to enhance sales
  • Provides very good third-party integrations within the application
  • Provides customization to the lowest level possible within the application
  • Provides free account offerings to try out the features available
  • Provides unlimited storage and also provides multi-platform compatibility

Disadvantages of Mobincube :

  • There is a limitation on the push notifications
  • There is also a limitation on the analytics that can be applied


14. Longrange :

Longrange is yet another native mobile application development framework, which has components as like navigation tabs, form views and commands. The mobile application development framework is basically based on two principles – the mobile app development and also the shorter maintenance process. With the help of existing development tools as like RPG, CoBoL or CL along with LongRange – we can develop a mobile application for a user community as quickly as possible. As LongRange is a native mobile application it doesn’t rely on HTML, CSS or JavaScript as like a traditional hybrid application.

Advantages of Longrange :

  • Development can be carried out with the current level of programming expertise
  • Ability to build native applications using RPG, CL and DDS
  • Provides rock solid reliability and also runs these native apps faster
  • Programming knowledge of JavaScript, HTML or CSS is not required for developing apps here

Disadvantages of Longrange :

Has a broader dependency of existing tools for better applications to be developed in a shorter span of time


15. Qt:

Qt is a cross-application SDK which offers cost-effective design, development and deployment framework. This tool can be comfortably used by developers to deliver best possible user experience across a wide variety of handheld devices. Qt is a solution that enables you to connect all the gaps across various platforms and also between the online, physical experiences. It also enables you to deploy applications on Android, iOS and Windows platforms. It also provides you an opportunity for contextual and personalized interaction with the customers outside of the core product itself.

Advantages of Qt :

  • Provides wonderful workarounds for buggy SSL servers
  • Provides support for IPv6 and dual mode networks
  • Provides support for opaque Private keys
  • An additional implementation providing parser and compiler optimization on the tool itself

Disadvantages of Qt :

  • Usage of metaobject compiler adds the extra layer of complexity to the whole build process as such
  • Qt development team is driving it away from C++ which is not a welcome move in the customer base


16. Alpha Anywhere :

alpha anywhere

The Alpha Anywhere is a low code and a rapid mobile application development/deployment framework which enables the quickest way to build offline-capable web and mobile applications. It can also be used to build cross-platform web and mobile business applications as well. It can be easily confronted as a one-stop shop for all your desktop application development, web application development, mobile application development and also SaaS application development

Advantages of Alpha Anywhere : 

  • Provides data encryption with HMAC and SSL support
  • Provides enterprise-grade mobile data security as mentioned in the above point
  • An abundance of pre-built sample applications for cross verification
  • Provides comprehensive backend data access

Disadvantages of Alpha Anywhere :

  • Web application development is not as simple as creating a desktop application
  • There is no built-in drag and drop feature in the form of designer
  • Limited to no technical support on any project obstacles


17. NativeScript :

nativescript

NativeScript lists the next on our list of top 20 hybrid mobile application development frameworks, to talk about it – this is an open source framework that can be used to build pure native mobile applications with AngularJS, TypeScript or even with JavaScript. To be on the same page, you can write applications in TypeScript which further compiles to JavaScript and hence can be done. All that said, it provides a wonderful feature of writing and deploying mobile applications for iOS and Android applications from a single codebase.

Advantages  of NativeScript :

  • Enables the acceleration on the learning curve by the skills used in the development of native mobile applications.
  • True native mobile applications can be built using web skills as like AngularJS and CSS.
  • The NativeScript team has 3 complete real-world application implementations by default

Disadvantages of  NativeScript:

  • As not all plugins are available, there is a definite need for the additional plugins to be downloaded.
  • The application sizes are larger when compared to React Native and Ionic2.
  • Since there is no in-built support for HTML, DOM in NativeScript – there is a definite learning curve in learning other UI components to build applications.


18. Firebase :

Firebase

Next in the list of our top 20 hybrid mobile application development frameworks, Firebase which is yet another mobile application development platform which supports web, iOS, iOSX and Android clients. It holds the capability to cut down the time that is spent in the development phase and also ensures messing around servers, data storage

Advantages of Firebase:

  • Provides a cloud service which doesn’t require any further setup on it.
  • Data storage is done in the form of native JSON and hence the feasibility to see how it is stored.
  • Data storage is assured as it requires 2048-bit SSL encryption for all data transfers
  • File storage is backed by Google’s cloud storage
  • Provides a wonderful integration strategy with AngularJS, hence it also enables the creation of applications in a very short span of time.

Disadvantages of Firebase :

  • Storage format is JSON, hence makes it difficult for normal SQL type of migration
  • Standard reporting tools that use traditional SQL won’t be applicable anymore.
  • There is no on-premise installation available


19. Swiftic :

swiftic

Next in the line is a tool named Swiftic, which is a dedicated iPhone app development software. This tool provides an easy to use and navigate interface which allows any developer to create an application based on the outlaid business requirements. This tool is an abundance of features that make the business application more useful and also easy to use for your hands and your eyes.

Advantages of Swiftic :

  • Provision to create any custom application and to publish them on leading stores
  • Catch the attention of your consumer base with your push notifications
  • Customers are always round the corner as keeping in touch with them is not a difficult task.

Disadvantages of Swiftic :

  • Tends to limit itself to certain kinds of applications that can be developed from this tool
  • Only supports iOS platform as of now


20. VuForia :

swiftic

Last but not the least, VuForia is an augmented reality software development kit. That allows developers to create applications based on augmented reality (AR) technology. This also brings in the usage of Computer Vision technology to recognize and also to track images, 3-dimensional objects. This not only ensures robust and reliable experience in a variety of environments but also acts as a means to cross-check the functionality seamlessly.

Advantages of VuForia:

  • VuForia has the ability to recognize and track a broader range of objects
  • It extends its support to most of the available high-end handheld devices
  • It provides the ability to create the basic most AR experience which works for all major devices
  • Ability to create virtual buttons which the application can see and respond to
  • Provides video playback support
  • 3dimensional experience can be built with VuForia Mobile Vision platform.

Disadvantages of  VuForia :

  • Skill gap in people to get themselves drenched into a totally different set of a technology stack
  • Moves away from the traditional Hybrid Mobile application to an AR-based application

How to resolve a web “Connection timed out” error

“Connection timed out” is an error that occurs as a result of a script exceeding the maximum timeout value.  If a client connection does not receive a response from the server after approximately 30 to 60 seconds the load balancer will close the connection and the client will immediately receive the error message.  In most cases, the script will continue to execute until it reaches completion, throws an error, or times out on the server, but the client will not see the page load as expected and will instead receive this error.  

If you’re seeing timeouts intermittently I would recommend auditing your code, because that likely means it could use optimization or needs to be broken down into smaller pieces.  For instance, if you were inserting several records into a database, try inserting a few at a time and then sending back a response to the client’s browser. 
For longer running scripts in PHP you can use the ‘exec’ function to run scripts in the background and have the script write its status to a database or a file.  Then you could use AJAX to display a loading bar and check the script’s status.  Once it’s completed you can then remove the loading bar and proceed to a completion page.  This is just an example, but the concept is good for anything.  
Another option is to run the script as a cron job using PHP or Perl instead of HTTP, which circumvents the load balancer’s timeout.  The bottom line when it comes to code causing this error is that data must be sent back to the client’s browser to keep the connection alive.  So regardless of what sort of processing a page is doing it must return data frequently or the load balancer will assume the connection has been dropped and will forcefully terminate it.  
Another common cause is that your site is trying to load files that don’t exist (404 errors).  This dramatically slows a site down and in rare cases can cause a timeout.  More commonly a site that is loading data from an external location can see load issues causing a timeout.  
For instance, if your site relies on Google Analytics, Authorize.net, or PayPal and for some reason these corresponding services go down or begin responding slowly, your site will see a performance hit that in some cases can cause the page not to load or to load intermittently. 

 Keep in mind that all sorts of plugins for content management systems like WordPress and Joomla use third-party services behind the scenes, such as bit.ly and Twitter.  It’s also a possibility that the script simply uses a heavy amount of resources.  If this is a PHP site you may need to try increasing the memory limit-which defaults to 32MB-to something more appropriate for your site, such as 64M or even 128M in extreme cases.