Store data to Google Sheets using PHP

Google SheetsIn some cases, when you need to dump some data to somewhere easily accessible, pushing to Google Sheets can be a good option. You can store data to Google Spreadsheet from cron jobs, background workers or even simple form submission. For example, in my case, I am logging some information from mailgun hooks.

While I were doing that, it seems like this easy task took more time then expected only because of lack of documentation. So, trying to write down an easy to follow tutorial that can make you set and pushing data to goggle Spreadsheet within 20 minutes.

Continue reading →

Multiple sites with Apache Server on different ports or domains

Apache Server multiple site on ports

Sometimes people become amazed with an awesome feature of his new shiny tool, and never discover that it was already there for years in his old boring tool. A good example of this phenomenon is – I see people choosing nginx for it’s ability of listening to multiple ports and domains.

Definitely there are solid reasons and cases for choosing nginx. But, I’ll say, this one alone is not a good reason for switching to nginx if you’re already running on and confident with Apache Server. Because, you can serve multiple apps/sites on different ports or domains using Apache too.

Let’s see some quick example of how Apache can do it. I’ll here just list a few example of Apache VirtualHost configs for various cases with a single server.
Continue reading →

Track or count online users in Firebase webapp

Firebase

It’s a pretty common need to track online users of an web application. Sometimes for counting total online users, sometimes by isolated space, e.g., by chatroom or shared list. So, instead of doing similar things every time, I’ve written a javascript module to use in Firebase web applications – Gathering.js.

In this post, I’ll show how it can be used for various type of tracking needs with small code snippets.

BTW, if you are thinking what Firebase is, it’s a Google acquired app development platform for mobile and web. For web application, it’s providing ready made infrastructure with super fast realtime database, flexible Authentication, cross platform Cloud Messaging, static hosting, CDN… (almost) everything you need to develop an app (or a feature) quickly with robustness. You should give it a try.

Continue reading →

BootstrapFileField – File input with preview and restrictions, no ajax

The file input is one of those HTML elements that are complex to style with CSS.
As a result, now a days we see many ajax uploader plugins (e,g, DropZone) that helps to modify appearance of file input. Now, what if I have a/some html fields in a regular form (no ajax upload required), but I want to make it look beautiful? Additionally I want to have other cool things that those ajax uploader provides like showing image thumbnails and restricting file types?

One ready-made solution is – BootstrapFileField. A jQuery plugin to enhance html file input to look like bootstrap button, showing image thumb and apply useful restrictions (e.g. file types, size, number of files etc.)

BootstrapFileField - File input with preview and restrictions

Check this live demo, it’s usability + simplicity!

Continue reading →

From Oracle TO_DATE to MySQL STR_TO_DATE

I had to import a huge Oracle database dump into MySQL database today. One major problem in doing this was, TO_DATE function of Oracle (used to convert string to date) is not available in MySQL. This post is just to tell you the simple trick that I’ve used to resolved this issue.

The good news is, MySQL have a function STR_TO_DATE for similar purpose, but with different syntax. So I had to replace all the TO_DATE with STR_TO_DATE using the following regular expression (in SublimeText 3) –

Find: TO_DATE\(‘(\d{2})\/(\d{2})\/(\d{4})\s+00:00:00’,\s+’MM/DD/YYYY HH24:MI:SS’\)
Replace: STR_TO_DATE(‘\3-\1-\2’, ‘%Y-%m-%d’)

Then Replace All… Done!

BTW, to see all format characters and syntax of both function, you may check this article.

Symfony2 Forms with Bootstrap 3 : Datepicker for date field

Symfony2 Forms have a rich set of field types and many defined widgets for rendering fields. But still we may need a different representation of a field. For example, in a web application of today we cannot think of a date field without a datepicker.

Symfony2 Forms don’t have any built in widget for rendering a date field with a datepicker. But, Symfony Form’s customization options are so flexible that, actually there is nothing to be worry about. Just in few minutes, using a simple trick, we can turn our date filed into a datepicker. In this post, I am going to share the trick with an example.

Datepicker vs Symfony Form's default date widget

Continue reading →

Symfony Forms with Bootstrap 3 : Rendering a help block

It’s a pretty common need to show a help text with a form filed. Where we’ll tell the user about purpose of this field or some validation rules. Although Twitter Bootstrap already have a `help-block` class, Symfony Form component don’t have built-in support for rendering this kind of help block.

In this post I’ll share a simple trick that I use with Symfony Forms to render help block under form fields. Here is a sample output.

bootstrap-help-block

Continue reading →

CSS calc not working LESS

Sometimes LESS screws an expression inside calc(). To avoid this situation, I do a very basic trick.

Let’s say I want to implement the following to keep a div of 510px width at the center of something.

left: calc(50% - 255px);

Now, the trick is, instead of using calc(), I just use left 50% and add a negative margin to pull it back a half of it’s width (255px, in this case).

margin-left: -255px;
left: 50%;

Dumb and easy, right?
Hope this trick will save someone’s time!

Solving PHP error – Allowed memory size of xxxx bytes exhausted

If you see the following error while executing a php script, that means the execution is trying to use more memory then the maximum amount of memory a script may consume.

PHP Fatal error:  Allowed memory size of 262144 bytes exhausted (tried to allocate xxxx bytes) in /The/Full/file/path/file_name.php on line xx

So, how to fix it? Easy, just increase the allowed memory size. But where to change? There are several points. Let’s say you want to set it to 512MB. Then –

  1. If you want to change it for that script only, modify ini setting at the beginning of file.
    ini_set('memory_limit', '512M');
  2. If you need to change for entire project, add this line in .htaccess of projects root directory (apache only)
    php_value memory_limit 512M
  3. For making the change systemwide, in php.ini, find and set
    memory_limit = 512M

Troubleshooting

Okay. Now, if you see the error is still showing, check the following things –

  • Most common mistake- if you’ve changed php.ini, don’t forget to restart web server
  • Check phpinfo(), if the value you’ve set is not there, maybe your’e changing in wrong php.ini file
  • Check the line you modified in ini file is not commented. (there is no ; at the beginning of line)
  • The value will be 512M not 512MB
  • Check if your script require more memory even after doing the change. (You may set the value to ‘-1’ to make it unlimited. But, think seriously before doing it!)

These are all the mistakes regarding this issue I did and saw people doing. If you’ve experienced something else, please let me know. Thank you.

Building Large Scale Javascript Application

Digital World 2014 was a 4 day (4th – 7th June, 2014) ICT event at Bangladesh. It was organized by ICT Division of Telecom and IT Ministry of the country. There was a full series of technical sessions with various interesting topics throughout the event.

One of them was Building Large Scale Javascript Application. It was presented by me together with Emran Hasan, CTO of eMicrograph. Here is the slide that I prepared in very short time.


Continue reading →