In programming you will commonly see abstraction layers. Say, for instance, you wanted to have a program to take some arbitrary data format and load it into your data. We’ll call it product feeds (just because some people like relevant examples). So, you want to pull in product data from various different web sites and vendors to list some products on your site. Now if you have ever done this task before then you’re already thinking “jeez, what a pain in the ass it is to get everybody to use the same format!” If you’ve done this task before then you’ve probably already dabbled in this type of abstraction. In Perl – my go-to language (since I arbitrarily prefer it) – this usually results in dynamically loading a “driver” class based on the data format which is likely vendor-specific. This makes it easy/easier for you to allow each data source to have its own format while using them all in the same way.
If you were to pick a Design Pattern for this, you would do well to choose a Factory pattern. In Perl, since you have so much dynamic leeway, you don’t need to go with a pure Factory pattern here, but what you end up with I think is most certainly in keeping with a factory pattern.
For this Gist, I will demonstrate three common ways to get from knowing which class you need to getting that class:
Continue reading “Gist of the Day: There's More Than One Way to Switch Your Class!”
Mojolicious is a fun module/framework/thing for me. How do I love Mojolicious? Let me count the ways (sorry Shakespeare):
- Mojo has ridiculously few dependencies, especially when compared to other web frameworks
- Mojo brings web servers (morbo and hypnotoad) with it
- Mojo does MVC, or doesn’t do MVC, whatever I want to do
- Mojo has templates, and they’re outstanding
- Mojo does routes very simply, which is badass
- I can write an entire web application in only one file (though it could get big and may not be advisable) using Mojolicious::Lite
- Mojo has helpers which are actually helpful
- Mojo is crazy fast, so fast that if there is a performance problem I’m pretty sure it’s me
- The more I use Mojo, the more I find cool stuff that it can do Continue reading “Gist of the Day: Mojo Merging Hashes”
I am very sorry that I missed posting this yesterday, I kinda got crazy sleepy and went to bed shortly after getting home from work.
AS PROMISED, however, this next Gist is the SL4A Android component. This program gives you two buttons: “Process Queue” and “Exit the program!” With these two buttons you can either process a message from the queue (see previous post) or exit the program. Processing the queue involves sending an SMS message and then repeating the message with TTS. Continue reading “Gist of the Day: Using Mojo, Mongo, and SL4A to send SMS Messages (2 of 2)”
I got a little bored with what I had been posting (I suspect you did, too), so I’m doing something neat. I’m going to write a full (though limited) program for you. Here are the user stories (if you don’t know what user stories are, see here before continuing):
So I’m on very little sleep after a long three days of travel which is not yet done. Nonetheless, the show must go on!
Today I have for you a demo program I wrote for CMI.pm a while back (last July I believe) on how to use Perl with SL4A (Scripting Languages 4 Android). This sample code loads a screen which does one of two things: says “something nice” or exits the program. This program demonstrates how to make an event loop for SL4A, how to load an external XML UI resource for Android, and also uses some very basic functionality of SL4A (TTS speak, in particular).
As I am very tired – three hours of very interrupted sleep – I will not be writing any more than this, but I will, of course show you… Continue reading “Gist of the Day: Old SL4A Example!”
I’m pretty sure there’s a more efficient way of doing this, but here’s what I’ve quickly typed up in 10 minutes sitting in my hotel. It just takes in a number, and then the size (in bits) of the number. It returns the number of bits it counts. I believe there is a very common algorithm called the Hamming algorithm, but as I don’t know that algorithm I’ve kinda worked this up instead.
This post is super short as I have a very busy day ahead of me. I’m going to go ahead and just post the code and call it a day. Sorry for the brief post. Continue reading “Gist of the Day: Counting Bits”
Hi, did ya miss me? I’m blogging from O’Hare today, it’s going to be a busy week for me with lots of air travel. That won’t stop me from polluting the Internet with yet another blog post though, don’t you worry!
One of the things that we sometimes encounter is a binary file created by some C program writing a
struct straight to disk. If we want to get any of that data we will need to parse this file, and read that struct. It’s a little tricky, and you kinda have to know a little bit about either the system on which he program was run, or the intentional decisions made by the program about how the file was written. The most important thing you need to know is the endianness of the binary data. Continue reading “Gist of the Day: C Structs from Binary Files Using Perl”
This is a really cool idea, it’s a site-specific browser, similar to Fluid on OS X. This has alerts and such that come up as well, and it’ll sit in your KDE task bar. I’m digging it so far. I suspect that it’ll play nice in other DEs as well.
The app is available as a .deb as well as a source package, and many different OS’ and configurations are available. I’m using the Ubuntu package since I’m in Kubuntu land. This app does appear to be receiving updates, the most recent one according to openDesktop.org was on September 3rd, 2013.
Here are the features I see:
- Supports SSL Facebook (very important for me since I have an ISP which engages in DPI)
- Works with two-factor authentication with Facebook
- Simply uses the web UI of Facebook (I see this as a plus, not a minus, that way I’m not stuck waiting for someone to implement changes that Facebook threw into an API update)
- Very lovely Facebook blue window border, fits in very nicely
Here are some areas that I would like to see improved:
- I’d like to be able to resize the window
- I’d like it not to crash when something tries to use Flash (too much stuff on Flash crashes)
- It’d be neat to not have to log in again every time I opened the app.
I think that with only some minor changes, this app could be one that I keep running in the background all the time. I’d love to see something like it for Twitter as well.
Here’s the app: Facebook openDesktop.org.
I’ve been doing a lot of stuff lately with data structures and algorithms. This is one that seemed remarkably complicated to me – and still kinda does – when I started. It’s not as trivial as a binary tree mainly because there are far fewer rules. There’s a whole lot of stuff you can do with graphs, and this is by no means an advanced or complicated usage of them. This is as simple a task you can do with a graph.
The task at hand is to find all possible paths between two vertices. Continue reading “Gist of the Day: Find All Paths for an Undirected Graph”
Here’s the scenario: you have two lists of integers, and you have a sum. Write an algorithm – in Perl, of course – to find which two items when summed give you a specified number. If no pairing exists, don’t return anything. If a pairing does exist, return the first pair you encounter. Remember, you could get two very large input lists. Continue reading “Gist of the Day: Find Which List Items Make Up a Given Sum”