Latest Entries RSS

Integrate PDF with your CMS with TCPDF

Posted on May 21st, 2010 by leeschlesinger
Category: General

Depending on what kind of website you run, you may need to create PDF documents, such as invoices, reports, forms, and tickets, on the fly. One of the simplest ways of enabling that functionality is by employing TCPDF, a pure PHP class for generating PDF documents. TCPDF doesn’t require external libraries for the basic functions and includes support for UTF-8 Unicode, right-to-left languages, XHTML, JavaScript, forms, encryption, digital signatures, 1-D and 2-D barcodes, several image formats, and much more.

As a software library for developers, TCPDF is easy to use and to integrate with existing applications or web services. In fact it is already integrated with many popular PHP-based content management systems and web-based applications, including Joomla, Drupal, Moodle, phpMyAdmin, TCExam, Xoops, Elxis CMS, ImpressCMS, JELIX Frameweork PHP5, SugarCRM, Symfony, TYPO3, Vtiger CRM, Yii Framework, CMS Made Simple, and many others.

TCPDF began life in 2001 when Italian software engineer Nicola Asuni was looking for a free and open source library to integrate with a PHP-based CMS project he was working on. After trying several projects that didn’t quite fit the bill he started his own. The TCPDF class was derived from the public domain FPDF class by Olivier Plathey, but has since been almost entirely rewritten, with hundreds of new features and thousands of lines of code added.

Looking ahead, Asani notes that TCPDF doesn’t yet implement all features of the PDF 1.7 standard (PDF 32000-1:2008). In upcoming versions, “I will implement new and stronger encryption algorithms and extended support for annotations,” he says.

Asani welcomes ideas, comments, and suggestions from users. “I also need help to complete parts of the source code. Anyone who would like to help should refer to the forums and trackers on TCPDF’s SourceForge project page. I always try my best to get back to everybody.”

Comments (0)

Lean, green, remote access machine

Posted on May 20th, 2010 by leeschlesinger
Category: General

VNC is an excellent, free, multiplatform client-server remote control application – but not everyone can take advantage of it. Some people may be unable to use it because they are behind a firewall, or they may be restricted from using a native VNC client due to company policy, lack of privileges, or even the lack of a native VNC client on their platform. But now there’s a server-side alternative that lets anyone with a web browser use VNC without the need for Java or plugins on the client side. Guacamole translates the VNC protocol into a form that JavaScript can conveniently handle: XML with PNG images. You can use Guacamole to access your desktop as you would with a native VNC client – and once the project implements read-only modes, Guacamole will be useful as a meeting or demonstration aid as well.

Developer Michael Jumper created Guacamole when he found himself working on a network behind a firewall that blocked all outgoing connections to anything but HTTP and HTTPS. “I needed a way to access my computer remotely without violating company policy, and a web application like Guacamole provides this. I began Guacamole development a couple of months ago because no other usable, open source, web-based VNC client existed.”

Jumper offers a tip for better performance: “If using Firefox under your Guacamole instance seems slow when scrolling, try a different browser, such as Epiphany, the browser that comes with GNOME. While Epiphany may be no equivalent to Firefox, it definitely scrolls faster, as scrolling Epiphany sends fast CopyRect updates. Firefox just redraws the entire window, which is very slow over VNC.”

Jumper says early versions of Guacamole were developed under NetBeans. “I was most familiar with its debugging environment, and it managed Tomcat configuration for me. I have since removed the NetBeans parts, and develop the project from the command line using vim and ant, deploying to my Tomcat test server as needed. I only go back to using NetBeans if I need the debugger. I put the project up on SourceForge.net because I know from experience that it is a great development environment. I needed web and SVN hosting, as well as a place where others would actually look for my code, and SourceForge.net provides exactly that.”

Guacamole is still in a fairly early stage of development, but improving rapidly, with new releases planned every week or two. Jumper says upcoming versions will implement more of the VNC protocol, such as authentication. “I also plan to make a standalone version for non-technical users. Expect improvements to the user interface, logging and error handling, and performance.”

To move the project along, Jumper urges users to get involved. “Right now the most important thing is testing and documentation. I need people to download Guacamole, test it in their own unique environments, and contribute information about problems encountered. The documentation I have provided is largely Linux-specific, as Linux is the only system I use. The input of users of other Unix flavors and Windows or Mac would be very helpful, as Guacamole is intended to be cross-platform.

“If anyone wants to help, the best way would be through posting their installation experiences and questions in the Guacamole forums. I can use that input to update the documentation, and while the documentation is being updated, other users can read the forums and learn from the posts.”

Comments (0)

For secure access, try this limited shell

Posted on May 19th, 2010 by leeschlesinger
Category: General

Sometimes, in otherwise restricted Linux environments, system administrators need to give shell access to users to accomplish certain tasks. Yet from the shell, savvy users can do almost anything on a system. One tool that can help resolve the conflict is lshell, a shell that lets you restrict a user or group’s environment to a limited sets of path and commands. Using lshell, an administrator can give a user who need, for instance, SSH access, only the commands he needs, without setting up a chroot environment or playing with system rights and ACLs. Everything is set up and controlled through one configuration file.

Developer Ignace Mouzannar created lshell more than two years ago when he needed to grant a router SSH access to one of his servers so it could update some DNS fields then disconnect. “I started searching on the web for an application that would allow me to restrict a user’s SSH connection in time while offering him just a couple of commands, but I was unable to spot anything interesting, so I started coding lshell. I had just discovered Python and was (still am) under its charm, so I wrote lshell in that language, using Vim and IPython.”

Mouzannar has engineered lshell with some clever features. “One cool thing is the way it deals with SCP connections. Not only can you allow or forbid SCP connections, you can also set up ‘download only’ or ‘upload only’ accounts, or even force the target path of the SCP connections. Another handy feature is the ability to set a maximum time for a user’s connection, after which he gets disconnected. lshell also logs all the warnings given to the users (e.g. when executing a forbidden command, changing to a restricted directory, etc.), and it can also log all the commands issued by a user, which can sometimes come in handy for sysadmins.”

However, the utility isn’t completely bulletproof yet, Mouzannar says. “When you connect through SFTP (if you’re allowed to), lshell spawns the SFTP subsystem shipped with OpenSSH, and therefore cannot restrict its content. I am working on integrating an SFTP server with lshell using the Python Paramiko module in order to add the ‘restricted SFTP’ feature.

“I would be glad to have some help on any part of the project, and especially for the SFTP server. I am open to any suggestions about anything that could take this project forward. The best place to have these kind of discussions is on the forum on lshell’s SourceForge.net page.”

Comments (1)

Jailer frees developers who test database apps

Posted on May 18th, 2010 by leeschlesinger
Category: General

Four years ago, the company that German software engineer Ralf Wisser worked for needed a tool to remove outdated data from its production databases. “We couldn’t find an appropriate tool,” Wisser recalls, “so I created Jailer.”

Jailer lets you move a subset of relational data from one RDBMS to another, in a way that the data subset remains referentially intact. “It’s not simply copying some rows from one table to another, but copying a complete graph of interrelated business objects spread over several tables, so that the applications can work with it,” Wisser says. “The main use case is to copy production data into staging and development databases, allowing testers and developers to use (anonymized) production data as test data without having to cope with clones of the entire production database.”

Jailer also lets you safely remove data from a database after it has been copied. “This allows you to move data that is no longer business-relevant from production databases into an archive, thus preventing the database from infinitely growing in size.” The software also lets users browse through a relational data model.

Wisser says he made Jailer open source software because he likes the open source approach. “I use a lot of open source tools and wanted to contribute a tool to the open source world. I also like the user feedback, which really helps me to improve the tool.”

In fact, Wisser says, user feedback will determine where he expends effort on future development. “The best way to help me with the project is to suggest new features via e-mail or the project’s forums.”

Comments (3)

Create database-driven web apps easily with Evolutility

Posted on May 17th, 2010 by leeschlesinger
Category: General

In biology, evolutility is the capability to change form, volume, or structure. In web software, that capability is what makes applications built with Evolutility different from hard-coded applications. Evolutility aims to allow non-developers to build database-driven web applications without writing code or learning complex abstraction models. The application provides CRUD (Create, Read, Update, Delete) database functionality on the web by generating web forms at run time and handling database calls automatically. It is not a code generator but rather a metadata-driven web application.

Developers can think of Evolutility as a kind of dynamic scaffolding they can use to build professional-looking administration pages quickly. Non-developers can use it to build simple applications, such as a contact list, a to-do list, or any other little application with any set of fields without knowing HTML, SQL, or JavaScript.

One ideal use might be to create a vertical application that needs to be customized for several customers. If you build the application with Evolutility rather than hard-coding it, each customer can easily add entities, and add or remove fields from any page to better fit its particular needs.

Evolutility’s creator, Olivier Giulieri, says he fell in love with metadata in 1993 while working at BusinessObjects. “Since that time I wanted to write metadata-driven applications, but the trend was code re-use and not metadata-driven code. In 2000 I wrote my first metadata framework and application. I began Evolutility as a side project in 2003.

“I built Evolutility for ASP.Net and SQL Server because those were the tools I knew best. I wrote the user interface from scratch because when I started there were no stable Javascript UI libraries like JQueryUI or YUI yet. Later, I added a datepicker (from Julian Robichaux), a lightbox (from Emanuele Feronato), a rich text editor (CKeditor), and silk icons (from Mark James).

“I decided to open source Evolutility in 2008 because I wanted people to try it, and wanted to get some help from other developers. Also, other metadata CRUD frameworks were commercial products, and I didn’t see any open source applications in that category. I hosted it on SourceForge because it has a well-known brand, it allows AGPL licensing, and it is not platform-specific.”

Evolutility is itself evolving. Giulieri says he plans to decouple the UI from data access, moving most UI code to JavaScript. He wants to support more platforms, including Windows and iPhone. And he hopes to build some vertical applications, “because most people look for apps, not tools to build their own apps.”

Giulieri says he could use technical help “for development, QA, documentation, and translations, but I’m also hoping for business or marketing help so that this open source project can become a real company.” You can contact him via e-mail.

Comments (2)