Subscribe: Smoking toooooo much PHP
http://www.akbkhome.com/blog.php/RSS/0/All%20Categories.xml
Preview: Smoking toooooo much PHP

RooJSolutions





 



PDO_DataObject Released

2016-10-28 00:00:00

Article originally from rooJSolutions blog
Coding was complete last month, and has a huge test suite to covering a large proportion of the features. This should mean that replacing DB_DataObjects will be pretty easy.
You can either just checkout the code from github  / PDO_DataObject , or use the pear channel 
#pear channel-discover roojs.github.com/pear-channel
#pear install roojs/PDO_DataObject-0.0.1 

Documentation

I revived my old PHP_CodeDoc code  (That needs publishing). It seemed simpler than trying to use any of the other tools out there. It's a pretty simple tool to extract structure, and documentation comments from the PHP source code. I added a small amount of code to export to our 'Roo UI bjs toolkit format' 
The generated files are pure JSON, and mostly contain the contents from the comments un-formatted. I decided that doing the Markdown conversion in JavaScript was far simpler (I refactored https://github.com/chjj/marked slightly for use with our libraries)
There are a few other tweaks I made, using `@category` to group the documentation, and writing category pages (using roobuilder), then putting it all together the index file loads the parts, and renders the manual.
This week I finished tidying up the rendering on mobile, and making sure all the comments render nicely using markdown. The result should be a nice easy to read and use manual.




PDO_DataObject is under way

2016-08-17 00:00:00

Article originally from rooJSolutions blog
Work has started on revamping my PEAR package DB_DataObject, While it's served well over the years, and I still use it every day.. We have been funded to create a new version, which runs on PDO.

There is a Migration plan in the github repo for PDO_DataObject, I have currently completed the first two blocks, and almost the third block. But the key features are
  • General Compatibility to DB_DataObject with a few exceptions -  methods relating to PEAR::DB have been removed, and replaced with PDO calls
  • New simpler configuration methods, with some error checking
  • A complete test suite - which we will apply to DB_DataObject to ensure compatibility
  • Chaining for most methods so this works
$data = PDO_DataObject::Factory('mytable') ->autoJoin() ->where("somevalue not like 'fred%'") ->limit(100) ->fetchAll();
  • Exceptions by default (PEAR is an optional dependency - not required)
  • It should be FAST!!! - standard operations should require ZERO other classes - so no loading up a complex set of support classes.  (odd or exotic features will be moved to secondary classes)
Feel free to watch the repo (we are using auto commit, so the commits are pretty meaningless at present)




Mass email Marketing and anti-spam - some of the how-to..

2015-11-19 00:00:00

Article originally from rooJSolutions blog

I'm sure I've mentioned on this blog (probably a few years ago), that we spent about a year developing a very good anti-spam tool. The basis of which was using a huge number of mysql stored procedures to process email as it is accepted and forwarded using an exim mail server.

The tricks that it uses are numerous, although generally come from best practices these days.

The whole process starts off with creating a database with

  • 'known' servers it has talked to before 
  • 'known' domains it has dealt with before.
  • 'known' email address it has dealt with before.


If an email / server / domain combo is new and not seen before, then apart from greylisting, and delaying the socket connections we also have a optional manual approval process. (using the web client).

Moving on from that we have a number of other tricks, usually involving detecting url links in the email and seeing if any of the email messages that have been greylisted (with different 'from') are also using that url.

On top of this, is a Web User interface to manage the flow and approvals of email. You can see what is in the greylist queue, set up different accounts for different levels of protection (either post-delivery approval, or pre-delivery approval etc..)

This whole system is very effective, when set up correctly. It can produce zero false negatives, and after learning for a while, is pretty transparent to the operations of a company. (email me if you want to get a quote for it, it's not that expensive...)

So after having created the best of breed anti-spam system, in typical fashion, we get asked to solve the other end.. getting large amounts emails delivered to mailing lists.

If you are looking for help with your mass email marketing systems, don't hesitate to contact us sales@roojs.com

Read on to find out how we send out far to many emails (legally and efficiently)




Hydra - Recruitment done right

2015-11-16 00:00:00

Article originally from rooJSolutions blog
For the last few months we have been finishing up the first round of work on the Hydra Jobs platform. Something, along with the founders we think is quite revolutionary idea in IT recruitment. 

Key to it's design is the idea that the first step in finding someone is not putting up an advert, and expecting a shitstorm of resume's that are totally unconnected to the requirements. Taking a step back and realizing that as an employer, you would rather do a search for all the available candidates, than risk the time and wasted effort in sorting though unrelated piles of CV's.

We have spent the last 9 months working to get this to a MVP. The platform is now running, and the business operations are now underway.

So to make this work, the first step on Hydra was to design a set of Questions that could enable a detail search to work. What we ended up with is probably the easiest, yet comprehensive way of entering your profile data so it can be matched efficiently with companies recruiting staff.

It has been an interesting few months getting Hydra up and going, now we are over the hump of the work, we are looking for more interesting projects to take on, so if you know of any, please contact us.

Read on for some of the tricks we used to make this project, one of the best recruitment platforms around.




More on syntax checking vala - and a nice video

2015-05-20 00:00:00

Article originally from rooJSolutions blog
As I wrote last week. I had added full syntax checking to the editor. So it runs a full compile check as you type.
Here's a nice video of it working...
width="420" height="315" src="https://www.youtube.com/embed/w6W8lrI0nyE" frameborder="0" allowfullscreen="">

After the initial joy of adding this to code, I soon realized it had a fatal flaw, read on to find out more..




Fetching Resources from github in the App Builder and fake web servers

2015-05-09 00:00:00

Article originally from rooJSolutions blog
My final words this week on the builder - handling resources, and fake web servers

While I talked in the other posts about how the builder extracts the API for various components from the libvala library and the vapi files, some information that the builder requires has to be manually, created or fetched from other locations.

When the Builder was written in seed, it basically looked at the source code directory, and read files relative to the source code. For the Vala version however, it's not expected to know about the source code directory, so I had to use a different approach.




libvala testing code and extracting API from the vapis

2015-05-08 00:00:00

Article originally from rooJSolutions blog
And the next part in the series. Gir and Vala structures, Nothing like a slow day to write a few blog posts. 

The App Builder was originally designed to build applications using seed (the gobject introspection webkit javascript engines bindings), One of the key elements of how this was done involved introspecting the Gtk API, and extracting all the properties, signals and class structure.

In this post I will go through the history of how I extracted the API information on Gtk, initially from Gobject introspection and GIR files, upto the current version which uses libvala to get the correct API direct from the vapi files.





App Builder - Database based Plugin builders for Web components.

2015-05-07 00:00:00

Article originally from rooJSolutions blog
It's been a busy month, unfortunately not for our paid work, which has dropped down to a trickle. Taking advantage of this I've been building more into our App Builder. This post hopefully is the first in a series about some of those additions.
The Primary purposes of our Builder is
  • A WYSIWYG tool for web applications using both Bootstrap or the RooJS libraries.
  • A new visual way of building Gnome/Gtk Applications 
In working towards these goals the builder has moved forward in a few directions. the first one that this blog post talks about is generating User interfaces from Database Schemas.