Home » Archive by category "Web Development" (Page 2)

Help beta test an HTML2PDF Web Service

In an earlier post I asked if anyone would be interested to help me out test a web service for converting HTML to PDF. Today I’m opening up the beta to anyone that’s interested.

Please visit https://html2pdfwebservice.com/ and sign-up for a 7-day trial account. No credit card required! Trial length can be extended upon request.

Converting HTML to PDF is easy with the HTML2PDF Web Service. Here are some examples:

cURL

$ curl -H "X-API-Key: F8802062-4D31-11E3-8F59-BFD4058B6BFF"
       -H "X-API-Username: MyUsername"
       -d '{"content":"<html><head><title>My page</title></head><body><h1>Hello World!</h1><p>I am an HTML page converted to PDF!</p></body></html>"}'
       https://html2pdfwebservice.com/api/convert > page.pdf

Perl

#!/usr/bin/env perl
use strict;
use warnings;
use Mojo::UserAgent;

my $ua = Mojo::UserAgent->new;
my $tx = $ua->post(
    'https://html2pdfwebservice.com/api/convert' => {
        'X-API-Username' => 'MyUsername',
        'X-API-Key'      => 'F8802062-4D31-11E3-8F59-BFD4058B6BFF'
    } => json => {url => 'http://domain.com/invoice.html'}
);
if (my $res = $tx->success) {
    my $pdf_data = $res->body;
}

Ruby

require 'net/https'
require 'uri'

uri           = URI.parse('https://html2pdfwebservice.com/api/convert')
https         = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true
# In case the SSL certificate isn't accepted
https.verify_mode = OpenSSL::SSL::VERIFY_NONE

req = Net::HTTP::Post.new(uri.path)
req['X-API-Username'] = 'MyUsername'
req['X-API-Key']      = 'F8802062-4D31-11E3-8F59-BFD4058B6BFF'
req.body              = '{"url": "http://domain.com/invoice.html"}'

res = https.request(req)
if res.code == '200'
    pdf_data = res.body
    # - or write to file -
    # File.open('invoice.pdf', 'w') { |file| file.write(res.body) }
end

PS: Prices are subject to change. During the beta you can’t use your own credit card for payments since we’re still running in sandbox mode. All data will be wiped after the beta ends. Expected launch date will be some time in January 2014.

Monkey re-branded to Monkey X and comes with Desktop target

Monkey by Blitz Research Ltd has been re-branded to Monkey X. Monkey X focuses on multi-platform and multi-device game development. Monkey code translates to the language used by the platform. Javascript for HTML5 games for example and C#/XNA when targeting Xbox 360. Supported platforms are Windows, Mac OSX, Linux, Flash, HTML5, iOS, Android, WP7/8, Xbox 360 and more. Ouya as well!

With the re-branding also comes a new free version. Before, the free version only supported the HTML5 target but now also includes the desktop target. Other targets can be acquired by purchasing a Monkey X Pro license.

Now that the desktop target is freely available as well I think I’ll go give Monkey a try soon. I haven’t used BlitzMax in ages (and I consider it a dead end as well) and since Monkey is very similar to BlitzMax I don’t expect too much trouble to get adapted to it.

Beta testers needed for an HTML2PDF conversion web service

I’m looking for people who would like to help me beta test my upcoming HTML to PDF conversion web service. The service focuses on programmers and designers who want to convert HTML to PDF’s. A common use case for such a service is the generation of invoices or reports.

The web service uses a simple HTTP REST API so it’s programming language agnostic. All that’s required from you is some HTML and CSS knowledge which you’ll use to create your PDF documents from and you’ve also got to know how to call a HTTP REST API from your programming language of choice. I’ve got usage examples for cURL, Perl and Ruby to help you on your way as well. Contributions that cover other languages are very welcome as well.

If you’re interested please comment below or contact me through Twitter or E-mail.

Want to use a web service to convert HTML to PDF? Then take a look at HTML2PDF Web Service.

Trying out Digital Ocean

I’m currently trying out a Digital Ocean VPS for a soon to launch Software as a Service I’m currently working on. So far I’m really liking it. The VPS (a 1GB droplet) is fast and is performing nicely.

This is also the first time I’m using Chef to provision the server. Chef is working nicely but I did had to do some manual installation and removal of specific Ruby gems. I’m still not entirely convinced about using Chef for this but that’s mostly because there’s a lot left to learn such as data bags.

My only complaint so far is that Digtal Ocean didn’t let me create a droplet (VPS) in Amsterdam. When working remotely via SSH the network latency (though only about 100ms) can get really annoying.

Aside from that I’m liking it!

Update: not long after this post Digital Ocean announced they had expanded their Amsterdam data center!

Propel ORM for PHP

For the last couple of weeks I’ve have been working with Propel ORM for PHP and have really enjoyed using it. Coming from Perl I’m spoiled because it has DBIx::Class which is my ORM by choice and makes fetching data from your SQL database including relational data a breeze. Propel does a really nice job with this as well and though the API differs greatly from that of DBIx::Class I found it easy enough to pick up.

Propel nicely integrates with Symfony 2 and I’m happy with my decision to go with Propel. The alternative would’ve been Doctrine but decided against using it, mainly because of having to learn DQL (Doctrine Query Language). DQL is similar to SQL, but I liked the named methods of Propel better (e.g. filterByCampaign($object) or filterByCampaignId($id)) and in the end with Doctrine you’re still busy writing a dialect of SQL. With Propel and DBIx::Class you can still use SQL when needed (and to be honest I still find it to be a bit awkward at times in DBIx::Class but I understand why it is the way it is). I could also have looked at Zend_Db_Table from Zend Framework which I’ve used in the past but found too limiting.

All in all Propel a nice ORM library for PHP. Be sure to check it out if you haven’t already.