**Newest stable release: [version 3.1.0, released on July 6, 2017].
The most recent stable version of version 2 can be found in the v2 branch.
QCubed (pronounced 'Q' - cubed) is a PHP Model-View-Controller Rapid Application Development framework with support for PHP5 (5.4 and above) and PHP7. The goal of the framework is to save development time around mundane, repetitive tasks - allowing you to concentrate on things that are useful AND fun. QCubed excels in situations where you have a large database structure that you quickly want to make available to users.
With QCubed, you don't have to deal with POSTs and GETs coming from the browser. QCubed automatically handles that for you and packages the information into object oriented forms and controls. Programming with QCubed feels very much like programming a desktop application. If you are familiar with ASP, it is similar.
The Code Generator automatically creates object classes with matching forms and controls based on your database schema. It uses the concept of ORM, object-relational mapping, to practically create your whole model layer for you.
Codegen can take advantage of foreign key relationships and field constraints to generate ready-to-use data models complete with validation routines and powerful CRUD methods, allowing you to manipulate objects instead of constantly issuing SQL queries.
More info as well as examples are available online at https://qcubed.eu/
Using QQueries allows for simple yet powerful loading of models, all generated ORM classes have Query methods and QQNodes. By using these methods, getting a complex subset of data is pretty straightforward - and can be used on almost any relational database.
QCubed uses the concept of a QForm to keep form state between POST transactions. A QForm serves as the controller and can contain QControls which are UI components.
All QControls (including QForm itself) can use a template which is the view layer, completing the MVC structure.
QControls can take advantage of the QForm's FormState to update themselves through Ajax callbacks as easily as synchronous server POSTs. All jQuery UI core widgets are available as QControls.
Some QControls include:
The easiest way to learn QCubed is to see the examples tutorial at http://qcu.be/examples/
Through its plugin system, QCubed makes it easy to package and deliver enhancements and additions to the core codebase. Plugins for the currently active version of QCubed live in repositories that begin with plugin.
The installation procedure is described in detail here: Installation instructions.
3.0 was a major architectural change from 2.x. You should essentially start over by creating a new project, generating your models, using the ModelConnectorEditor to refine what is generated in the connectors(used to be called MetaControls), and then copying code from your old version to the new version. You will find that many of the things you had to do by hand are now done in generated code, so it might not take as long as you think. Lets hop :-)
v3.1 Now has change tracking in the models. Instead of pushing an entire object to the database every time you save an object, it only pushes the data that has changed. To do this, it makes the member variables in the generated model superclass private instead of protected, which may require you to change code in your model subclass. To help with the transition, the new private variable feature is turned off by default. You will need to turn it on by editing the codegen_settings.xml file and adding a 'privateColumnVars="true"' parameter to the createOptions tag. See the codegen_settings.xml file in the qcubed/install/project/configuration directory for an example.
This will make all of the protected column variables that are in the Gen class private, so you will not be able to access them directly from your Model subclasses. For example, if you have a "Name" column in a table, you can do:
$strName = $this->Name;
or better yet:
$strName = $this->getName();
$strName = $this->strName;
$this->Name routes to
Also, instead of this:
$this->strName = $strName;
$this->Name = $strName;
The benefits of the new feature include better performance, reduced OptimisticLocking exceptions, and preventing you from accidentally accessing a value that was not loaded due to a QSelect clause. Also, QSelect can now be used to control what is generated when you convert an object to other formats like JSON.
v4.0 is another major architectural change, designed to support the PSR-1, PSR-2 and PSR-4 standards. v4 adds namespaces to all the core and library files. Gone is the letter 'Q' in front of all the core classes, since that was essentially our way of doing namespacing before namespaces were available in PHP.
It includes tools to help automate changing your code from v3.x code to v4.0. See the Readme file in the qcubed/application repository for more information.
A list of the latest changes is available at https://github.com/qcubed/qcubed/commits/master
QCubed was branched out of QCodo, a project by Michael Ho. QCubed relies on JQuery and uses jQuery UI libraries for some of its core controls.
Source Code: https://github.com/qcubed/qcubed
Git has become ubiquitous as the preferred version control system (VCS) used by developers. Using Git adds immense value especially for engineering teams where several developers work together since it becomes critical to have a system of integrating everyone’s code reliably.
But with every powerful tool, especially one that involves collaboration with others, it is better to establish conventions to follow lest we shoot ourselves in the foot.
At DeepSource, we’ve put together some guiding principles for our own team that make working with a VCS like Git easier. Here are 5 simple rules you can follow:
Oftentimes programmers working on something get sidetracked into doing too many things when working on one particular thing — like when you are trying to fix one particular bug and you spot another one, and you can’t resist the urge to fix that as well. And another one. Soon, it snowballs and you end up with so many changes all going together in one commit.
This is problematic, and it is better to keep commits as small and focused as possible for many reasons, including:
Additionally, it helps you mentally parse changes you’ve made using
#open source #git #git basics #git tools #git best practices #git tutorials #git commit
There is no doubt that Git plays a significant role in software development. It allows developers to work on the same code base at the same time. Still, developers struggle for code quality. Why? They fail to follow git best practices. In this post, I will explain seven core best practices of Git and a Bonus Section.
Committing something to Git means that you have changed your code and want to save these changes as a new trusted version.
Version control systems will not limit you in how you commit your code.
But is it good? Not quite.
When you do an atomic commit, you’re committing only one change. It might be across multiple files, but it’s one single change.
Many developers make some changes, then commit, then push. And I have seen many repositories with unwanted files like dll, pdf, etc.
You can ask two questions to yourself, before check-in your code into the repository
You can simply use the .gitignore file to avoid unwanted files in the repository. If you are working on more then one repo, it’s easy to use a global .gitignore file (without adding or pushing). And .gitignore file adds clarity and helps you to keep your code clean. What you can commit, and it will automatically ignore the unwanted files like autogenerated files like .dll and .class, etc.
#git basics #git command #git ignore #git best practices #git tutorial for beginners #git tutorials
Hello all, nowadays most of the development teams using GIT version control, some of you may have a requirement of mirroring your team’s git changes from one server to another Git server. This article will help you to achieve the Git mirroring between one server to another server.
I got one assignment wherein there will be 2 Git Servers, development will happen in one Git server and the changes should be synchronized to another Git server at regular intervals. But in my case, the complexity is both the servers are in different restricted network. So I have done the small experiment and it worked. And I am sharing the steps to you all in this article.
Main GIT Server: Let’s take our main git server is located in our office and can be accessed only in-office network.
**Mirror GIT Server: **The mirror server is located at the vendor/client-side, which can be accessible in a normal internet connection but not with our office network. Since the office proxy will block the outside URL’s.
#devops #git #git and github #git best practices #git cloning #git server
In this short article, we’ll be exploring some quick git commands that can help us in digging through our repositories’ history of commits. We’ll look at
#git #git-log #git-commands #git-history #aws
There are many ways of working with git, if they’re clean, and don’t do damages, probably most of them are good.
But same as space vs. tab, in the IT world is a war between fans of rebase, and fans of git merge.
There are tons of arguments about:
-Which way is better?
-Which one is cleaner?
-Which is more comfortable?
-Which one gives a cleaner git graph?
-Why it’s important, and which one is more dangerous?
#quick help #tutorials #git #git branch #git commit #git interactive rebase