Once a while an website needs to be updated, I mean the platform. Therefore I start looking for a new solution, preferably open source. I setup few criteria I am looking at when I will choose an CMS:

  • programming language
  • security
  • footprint
  • extensibility
  • documentation
  • rich community
  • performance

All the CMSs presented benefits from the support of the open source community and are easy to be extended.
This article reflect my own experience at the moment I wrote the article and may differ than the reality.
Finally I decided to build my own mini CMS. (API with PHP and Angular JS as front-end).

Categories Web, Software

This guide describes how you can use FileMaker Pro as and ODBC client application and as a datasource for ODBC applications. In FileMaker Pro, ODBC connections are treated like a external datasource, formerly known as file references. Tables can be added to the relationship graph and can be created layouts showing records from any ODBC capable database (MySQL table).
Through a layout, you can add, remove or edit the external records as if they were in a FileMaker Pro table, no SQL or scripts required. Continue reading accessing the link below:

Connecting FileMakerPro with MySQL.pdf [0.40MB]

Categories Database, Max OS X

As Mac OS X runs on top of Unix most of the packages we need are already packaged with OS X.
To create local server you just need to enable them and install MySQL.
Exist alternatives like MAMP, XAMPP with via installer all the packages will be enabled/installed to help you to get started quickly.
But also for learning purposes you may try to install and configure manually your local server. Let’s start !

1. Open Terminal and switch to root user to avoid permission issues:
sudo su -u

2. Enable Apache:
apachectl start and then verify in browser accessing: http://localhost

3. Enable PHP for Apache.

3.1. First of all make a backup of the default Apache configuration
cd /etc/apache2/
cp httpd.conf httpd.conf.bak

3.2. Edit Apache configuration:
nano httpd.conf
and uncomment the following line:
LoadModule php5_module libexec/apache2/libphp5.so
LoadModule deflate_module libexec/apache2/mod_deflate.so
LoadModule expires_module libexec/apache2/mod_expires.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so

3.3. Find the section and change:
AllowOverride None to AllowOverride All, so .htaccess files will work, and:
Options FollowSymLinks Multiviews to Options FollowSymLinks Multiviews Indexes and you will be able to view directory listings.

3.4. Give yourself permissions to the: /Library/WebServer/Documents:
sudo chgrp staff /Library/WebServer/Documents
sudo chmod g+rws /Library/WebServer/Documents
sudo chmod +rw /Library/WebServer/Documents

3.4 Update time: edit php.ini and change the settings appropriately: (specify your timezone)
date.timezone = “Europe/London”
error_reporting = E_ALL
display_errors = On

3.5 Restart Apache:
apachectl restart and verify the PHP by creating a phpinfo() in DocumentRoot.
DocumentRoot folder is located in: /Library/WebServer/Documents
(otherwise try to find the exact location: grep DocumentRoot httpd.conf)

3.6 Virtual Hosts
Edit Apache configuration file and uncomment the following line:
nano /etc/apache2/httpd.conf
Include /private/etc/apache2/extra/httpd-vhosts.conf
Edit httpd-vhosts.conf:
nano /etc/apache2/extra/httpd-vhosts.conf

Virtual Hosts example:

 1 <VirtualHost *:80>
 2     DocumetRoot "/Library/WebServer/Documents" 
 3 </VirtualHost>
 5 <VirtualHost *:8080>
 6     DocumetRoot "/Users/your_username/Documents/Development"
 7     ServerName development.local
 8     ErrorLog "/private/var/log/apache2/devlopment.local-error_log"
 9     CustomLog "/private/var/log/apache2/devlopment.local-access_log" common
11     <Directory "/Users/your_username/Documents/Development">
12                AllowOverride All
13                Order allow, deny
14                Allow from all
15     </Directory> 
16 </VirtualHost>

Edit hosts file and add the following line to the bottom:
nano /etc/hosts development.local

Clear the local DNS cache: dscacheutil -flushcache
Restart Apache then try to access in browser the address http://development.local
Note: You may receive 403 Forbidden when you visit your local site.
You can change permissions with the command:
chmod 755 your_directory

4. Install MySQL, download the latest version from: http://dev.mysql.com.

4.1. Update the path: export PATH=/usr/local/mysql/bin:$PATH

4.2. Connect PHP and MySQL:
cd /var
mkdir mysql
cd mysql
ln -s /tmp/mysql.sock mysql.sock

4.3. Install PHPMyAdmin. Download the latest version from: http://www.phpmyadmin.net, unpack it and copy it to /Library/WebServer/Documents.
Rename the config.sample file: mv config.sample.inc.php config.inc.php

4.4 Hide annoying default databases in PHPMyAdmin (information_schema, mysql, perfomance_schema, test).
Navigate to your phpMyAdmin instance in your browser, click on Settings and choose Features and then General tab
at the section Hide databases input using regular expressions the databases you want to hide.

Categories Web, Server

Are you using NetBeans 8.0 and CodeIgniter for your PHP projects and want to have code auto complete support?
For NetBeans earlier versions until 7.3 can be used Kenai Project. As I use version NB 8.0 trying to install Kenai v 7.3 that won’t install.

 1 <?php
 3 /* 
 4  * Place this file in the root of your NetBeans 8.0 project.
 5  */
 7     /**
 8     * @property CI_DB_active_record $db
 9     * @property CI_DB_forge $dbforge
10     * @property CI_Benchmark $benchmark
11     * @property CI_Calendar $calendar
12     * @property CI_Cart $cart
13     * @property CI_Config $config
14     * @property CI_Controller $controller
15     * @property CI_Email $email
16     * @property CI_Encrypt $encrypt
17     * @property CI_Exceptions $exceptions
18     * @property CI_Form_validation $form_validation
19     * @property CI_Ftp $ftp
20     * @property CI_Hooks $hooks
21     * @property CI_Image_lib $image_lib
22     * @property CI_Input $input
23     * @property CI_Language $language
24     * @property CI_Loader $load
25     * @property CI_Log $log
26     * @property CI_Model $model
27     * @property CI_Output $output
28     * @property CI_Pagination $pagination
29     * @property CI_Parser $parser
30     * @property CI_Profiler $profiler
31     * @property CI_Router $router
32     * @property CI_Session $session
33     * @property CI_Sha1 $sha1
34     * @property CI_Table $table
35     * @property CI_Trackback $trackback
36     * @property CI_Typography $typography
37     * @property CI_Unit_test $unit_test
38     * @property CI_Upload $upload
39     * @property CI_URI $uri
40     * @property CI_User_agent $user_agent
41     * @property CI_Validation $validation
42     * @property CI_Xmlrpc $xmlrpc
43     * @property CI_Xmlrpcs $xmlrpcs
44     * @property CI_Zip $zip
45     */
47     class CI_Controller {};
49     /**
50     * @property CI_DB_active_record $db
51     * @property CI_DB_forge $dbforge
52     * @property CI_Config $config
53     * @property CI_Loader $load
54     * @property CI_Session $session
55     */
57     class CI_Model {};
58 ?>

Solution: Copy the attached file content into a php file and place it inside your nbproject folder then restart your IDE.

Categories Programming, Web

I am spending most of my time developing for web and often enough I am traveling and I need such as portable solution to edit my files and for small development on the go. Why not try working on a tablet? They are cheap, durable, light and have all-day battery life.
However, the big problem is that much of my current work is still textual, and typing on a glass touch-screen is not very nice. To fix this I purchased a keyboard, which connects to the tablet over Bluetooth. And now few questions…

What are my development needs for web?
I need FTP client, Terminal, browser web.

What tools are available?
Several but not all available on all OSs.

Let’s move on to more practical details…

What tablet I should choose?
Theoretically any tablet with a screen size over 7” can be used, but I would recommend 10” and 16GB at least storage.

What operating system?
Over the past two years I used several kind of tablets and operating systems. My first tablet was iPad 2nd generation + Bluetooth keyboard shell helped by Diet Coda which include FTP/SFTP client, built-in terminal, file manager. The solution was perfect as long I have permanently access to Wi-Fi or 3G data but few times I needed to work while data connection wasn’t available. I wished Diet Coda to be capable of running websites locally (to have a built-in LAMP package).
As this was not available due to the limitations of iOS I switched to a Android based tablet which offered me more freedom being able to run locally Apache + MySQL server and to perform changes offline. Starting with 2014 I use a Windows based tablet because I can easily use any of the development tools available for desktop PC such as Zend Studio, Net Beans, XAMPP, WAMP.

Bellow is a comparison based on my experience with development on tablets over the past 3 years.

Operating System IDE LAMP stack
iOS Diet Coda not available
Android Android Web Developer, AIDE Web KSWEB, Bit Web Server, Palapa, Ulti Server
Windows Zend Studio, Net Beans, Aptana Studio WAMP, XAMPP

Categories Programming, Web