jQuery Ajax File Upload

>> Saturday, December 10, 2011

I needed a simple and easy to configure and use script, for uploading a single file using Ajax and jQuery, yet the solutions were overcomplicated... So I decided to make my own plugin, it works on FF, Chrome and IE, as far as I tested, it's pretty small (2kb minified) and easy to use, it can only upload one file though, maybe in the future versions I'll just make a plugin to send a multipart form as Ajax.
Anyways! You can get the plugin here, to use it just include the js file and configure it!

<script src="ajax_upload.min.js"></script>
<script>
$(document).ready(function(){
     $('#my-container').uploader({
        'script': 'myScript.php',
        'button': $('#chooseFile'),
        'status-id': 'a-status',
        'iframe-id': 'a-iframe',
        'container': $('#uploaderContainer'), // optional
        'onComplete': function(data){ /* my function */ }
    });
    $('#my-button').click(function(){
        $('#my-container').uploader('upload');
    });
});
</script>

And that's it! I hope you find it useful as I did :) That will just send a file named 'file_upload' to the script, just handle as usual.

Read more...

Getting all possible paths of two vertices in a Graph using DFS

>> Thursday, June 9, 2011

As you might have seen, I recently explained something similar, but now I'll find all possible paths. This is pretty much more of the same but it's way more tricky.
Well modify our basic DFS search and do a view more stuff

Input: vertex start, vertex end, list of lists of vertices "paths", list of vertices "path"
Output: boolean, wheter or not I found a path
add start to path
if(start == end)
    return true
else
    mark start as visited
    for each adyacent vertex w of start
        if w is not visited
            boolean found = dfs(w, end, paths, path)
            if found
                add a clone of path to paths
        path.removeLast()
    mark start as non visited
    return false

That's it! It might seem simple but in Java it's a bit longer. Hope it helped!

Read more...

Getting a Graph's path between two vertices using DFS

As you might have seen, I have made a similar post before, but this time, we use another way of going though our graph, it's called Depth First Search, and it's my favourite way as it's nature is recursive, and recursion is fancy :)
Basically, we will now go though our graph with an bucket of paint and a string, every time we see a non visited vertex, we will paint it, tie the string to it and go on, when we cannot advance any futher, we go back pulling from our string, until we see an unvisited vertex, to then repeat. You can kind of think of it like a way to get though a maze.
The algorithm is something like this

Input: a start vertex
mark start as visited
visit start
for each incident edge E of start
w = opposite(start, E) 
if(w is not visited)
mark w as visited
DFS(start)

The output of DFS can be viewed as a tree, with root on Start, every time we visit a node adyacent to start we add it as a child, and we do the same with each of start's children, making a generic tree. There are different kind of edges which we can see in this image.

Output of a DFS showing different kind of edges
Anyways, that is not important for us, what is important is to get the path between two vertex, this is quite easy, same as with BFS, we have to modify mostly the 'visit' part of the algorithm.

Input: a start vertex, an end vertex, and a list L
// This time we won't output anything, just add the path to our list!
mark start as visited
L.addLast(start)
if(start == end)
return true
else
for each incident edge E of start
w = opposite(start, E) 
if(w is not visited)  
found = DFS(start)
if(found) return true
endfor
L.removeLast()
return false

And that's it. With that algorithm we can search for a path between two vertex, we have to add an extra argument, but we can make a method to make everything nicer. Like in this java example.
Hope you find it useful!

Read more...

Getting a Graph's shortest path between two vertices using BFS

Long title indeed, but this is a rather specific entry. I've been working with graphs lately, for university, and I'm afraid there are lots and lots of different properties and algorithms (you can imagine studying that for an exam is a pain in the ass) but well, I tried searching for this on Google with no luck, there are many algorithms for getting the shortest path between two vertex, and many sites say "It can be done using BFS" but they do not explain how.
So, I found a rather nice and easy solution. First of all, let's say G is a simple graph, with no directed edges, and we don't consider edges' weight. I'll use pseudo-code in this entry since it's more CS oriented.
First of all, if you don't know what BFS is, it's Breadth First Search, it's a way of iterate through a graph, in which you go by levels.

BFS Animation

You can see wikipedia for more info, I'll assume you know the algorithm, at least just on paper, the algorithm is like this:

Input: a vertex called start
Let Q be a queue
Q.enqueue(start)
visit start
while(Q is not empty)
    w = Q.dequeue()
    for each adyacent vertex v of w do
        if v is not visited
            mark v as visited
            add v to queue
            visit v

That's it. Basically, when you solve a problem using an algorithm like this, what you want to work on is on the "visit v" part, what we are gonna do is use a map, in which we will save each vertex we visit, and once we reached our end vertex, we simply "go back". A map is a data structure which has a Key and a Value, so we will use the Key as our vertex, and the value will be the vertex' parent, that way we can just go back and return a list of visited vertex' which make the shortest path from START to END.


Input: a vertex called start, and a vertex called end
Output: a list containing the shortest path from start to end, or null if it cannot find a path
Let Q be a queue
Let M be a map
Q.enqueue(start)
map.put(start, null) // Start has no parent!
while(Q is not empty)
    w = Q.dequeue()
    for each adyacent vertex v of w do
        if v is not visited
            mark v as visited
            add v to queue
            if(v == end)
                Let L be a list
                while(v != null)
                    L.addFirst(ww)
                    ww = M.get(ww)
                return L
return null

There it is, hopefully someone will find it useful! Note that basically the only part that changes is the 'visit' part.
I'll leave the Java code just for the sake of it ;) Sorry it's in spanish, as it's from university, but this should not be much problem.

Read more...

Fedora + Xfce on my netbook

>> Saturday, April 2, 2011

I have to admit, I'm suprised with the compatibility and the performance and stability of Fedora on my Netbook, it works even nicer than Ubuntu (or Xubuntu), I'm pretty happy with it :)
I had no major problems getting up and running even though this is the first time I try another distro than Ubuntu or any Ubuntu variation.

Here's an screenshot of my little netbook screen right now

I still have to add some more customization and programs but it's looking lovely so far :)
Definetely reccommended for netbooks, works awesome with Intel Atom processor.

Read more...

About akaikiwi and stuff

>> Monday, March 28, 2011

As I've now started University I have less time for hobby coding, I'm working on some Java stuff now, as that's what I use at university, I'm working with slick and making some game development, not a full game though, just things like GUI and stuff, once I put together some stuff I'll finish a RPG I was working on :)
About akaikiwi, it's development has drastically stopped, but I plan on finishing it, not now, but soon, I have to do some PHP for work but all Joomla! related (which to be honest I pretty much hate Joomla! awful implementation of MVC but oh well...).
I'd really love to have more time and see more RoR and Django but right now I can't, I want to finish akaikiwi first, although I do take some ideas from those frameworks, I'm really interested in Django on Appengine, I think I'll deploy my next web app there, which is probably gonna be a designer's resource site.
Once I have more free time I'll work on some nice stuff I have on hiatus :)

Read more...

NoSQL Request Injection Attacks with PHP Magic Variables

>> Monday, March 7, 2011

A "new" and interesting injection in PHP has been pointed out, and although very easy to defend against, it's pretty interesting. You can read more about it on the php website.

Read more...

Blender Journey i

>> Thursday, March 3, 2011

Blender is one of the best examples of open source software, and also one of the best 3D tools out there, with it's fame of beeing hard to use, I decided to use that excelent piece of software to learn to create 3D models.
The reason is mostly because is free, it's lightweight, it has lots of free documentation and good support and its used by professionals.

As an indie game developer I've done some nice games, I finished a few and started a lot, I have experience with 2D but I really want to try with 3D, and knowing how to use a 3D program and knowing 3D jargon will make my life way easier, plus I like to make my own resources for my games :)
The idea is using blender to make models, then I'll use Unity to create games.

I'll be reporting on my Blender journey here, I'll be using this free book, right now I read the first few chapters, until the simple man with a hat, which I made and looked funny, but similar to the one in the book :)

Read more...

How To Install PostgreSQL And phpPgAdmin Support In XAMPP

>> Friday, February 25, 2011

I'm working on akaikiwi and I want to test some stuff on Postgre, as the databases I'm aiming to support are SQLite, MySQL and Postgre, the latter is the only one XAMPP doesn't support natively.

I found a great post on How To Install PostgreSQL And phpPgAdmin Support In XAMPP that worked nicely, except in the last part, I had to add

Alias /phppgadmin "D:/xampplite/phpPgAdmin/"

 AllowOverride AuthConfig
 Order allow,deny
 Allow from all

Inside alias_module instead of mime_module, but other than that, it works like a charm :)

Read more...

Sending mails from localhost with XAMPP Lite

>> Monday, February 21, 2011

One of the most common tasks of web development is sending emails, whether from a registration process, password recovery or if they suscribed to an update, you will need to send emails. The problem is that XAMPP doesn't have a default configuration for sending mails, and developing without this ability is pretty dull, you need to test your mails!
But don't worry, you won't have to install anything, and you wont need a hosting, you just need a Gmail or Hotmail account.

  1. Edit your php.ini file located inside the php folder of your XAMPP installation path.
  2. Search for the line ';sendmail_path = "\"YOUR_XAMPP_PATH\sendmail\sendmail.exe\" -t"'
  3. If it has a ';' in the beggining, remove it
  4. Edit sendmail.ini file inside the sendmail folder
  5. Add the following lines
  6. account Gmail
    tls on
    tls_certcheck off
    host smtp.gmail.com
    from [your-email]@gmail.com
    auth on
    user [your-email]@gmail.com
    password [your-password]
  7. Finally edit the account default line, it should look like this
    account default : Gmail
  8. That's it! Now restart apache and you can now send mails.
If you want to use Hotmail instead of Gmail just change the host to 'smtp.live.com', the email adresses, and if you want, the account name (Hotmail instead of Gmail).

Read more...

Rounded Corners with Yahoo Javascript Library, YUI 3

>> Saturday, February 19, 2011

YUI 3 is an awesome Javascript library by Yahoo!, I'm really loving it, it has a very nice organization and it's nice to use.
Something that seemed a bit weird to me though, it's that it doesn't have a Rounded Corners plugin, so I decided to create one, and here it is!
Using it it's pretty simple, here it's and example:



Enjoy!

Read more...

Creating Anonymous PHP Objects

So I'm working on akaikiwi and found out a very nice thing, which doesn't really help me right now, but I really feel like sharing it, as I'm sure it'll be useful for somebody.

$obj = (object) array('foo' => 'bar', 'property' => 'value');
echo $obj->foo; // prints 'bar'
echo $obj->property; // prints 'value'

That's it! That will cast the associative array to stdObject. Useful to save some code.
In PHP 5.3 you could actually also use closures to make some nasty stuff, it's a pity PHP 5.3 is still not widely used.

Source: http://www.php.net/manual/en/language.oop5.php#84292

Read more...

More on YUI and akaikiwi

>> Tuesday, February 15, 2011

So far, I've been working on a personal site, forum-like, and I've been playing with YUI more, I'm very satisfied, it feels way nicer and more like Javascript than other frameworks. I like the organization of widgets, plugins and extensions. It's really nice so far.
About akaikiwi, I'm adding little fixes here and there, thanks to my project, I always try to follow YAGNI (You Ain't Gonna Need It) so basically add functionality when I need it, instead of when I think I will, this makes the libraries simple and tight.
The site should be finished by febrary but I think it might take until the end of march to get it up and running online.
About akaikiwi, I don't know when the first release is comming, but I think it will be released after this site is finished and tested.

Read more...

Gedit

>> Friday, February 11, 2011

So I've been using linux way more lately, because of my new netbook, so I've been playing with Gedit too, it's surprisingly nice, very nice alternative to Textmate and free, it can do pretty much anything Textmate can, and it works on Windows and Linux.
I really recommend it, the completation function is very nice, also de snippets.
I've been using it a lot since I've been working on akaikiwi and aoi pantsu, it's doing great so far.

Editing some Yui 3 Javascript

Read more...

Drop Down Chooser

>> Wednesday, February 9, 2011

This is a little widget I made for Yui3 as I'm still learning, it seems very nice so far, it's kind of huge, but not hard, it just takes time.
It's just a basic dropdown chooser, but it can help a lot to make your life way easier, which is basically what widgets are for :)
The basic idea is that you create a new instance of the DDChooser widget, then set the launcherNode, which is the node which will launch the chooser, the chooser will position automatically and hide/show automatically too.
Here's an example:



You can download it from the NekoCM Bitbucket repository, you can also just see full code, or just the the min version (compressed with yui compressor).

Read more...

Ubuntu 10.10 Netbook Edition

>> Monday, February 7, 2011

I'm not a Linux pro, I've used Windows way more than Linux, but with this new netbook I got I decided I want to use Linux.
I tried some distributions and ended up with this one, which is pretty nice, community is good, and also is documentation, everything works nicely, the webcam, mouse, wireless...
Right now I'm getting used to Linux, I thought it would be harder though, anyways I still want to know more, like, what is folder /opt for, and why that folder distribution, what are them for, and more, I'll read a book :)
I'm working on akaikiwi and at the same time rebuilding an old forum-like software I had with this new framework, I'll correct akaikiwi if there's a bug, and probably also add new functionality.
I'ts gonna be a very nice script I might distribute, right now though, I'm still doing the layout, I'm using Yui3 CSS Grids, and I'll probaly use the Yui3 javascript library also, I'll write more about that once I use it more, also more on akaikiwi :)
I really think I should do some benchmarks and compare with other frameworks, would be very interesting, I'm pretty sure akaikiwi is really fast.

Read more...

More on akaikiwi

>> Thursday, February 3, 2011

I'm mostly working on fixing bugs right now, not much on adding functionality, as I'm not at home right now.
I'm working on my new netbook with linux mint, so I'm testing how everything works on linux. Once I finish seeking and repairing bugs I'll work on some more new features.
Akaikiwi is going very nice so far :)

Read more...

akaikiwi

>> Monday, January 31, 2011

So I've been working on akaikiwi a lot lately, I took a little break now as I'm not home for a week, but I'm working on documentation and adding issues now :)
akaikiwi is a PHP MVC framework, focused on beeing lightweight and fast. It's going really nicely so far.
You can see the repo here: http://code.google.com/p/akaikiwi/
I'm working on the wiki right now, it's still kind of far from first release, but it might not take that long, it just needs some fixes, a bit new features and a lot of testing.
Once that's done, I'll consider the first release :)
For now, I'll work on the wiki, you can check it to see the nice features and how to use it so far, you can also pull it from the repo if you wanna test it. I'll list some features here.


Features

  • Very easy to learn
  • Lightweight
  • ORM
  • Very good compatibility with limited hosting accounts, works with PHP 5.2
  • Awesome performance
  • Command-line CRUD generator
  • Easy to extend
  • Debugging tools (profiling)
  • Cache
  • Simple :)

Read more...

Mootools Multiple Slideshow

>> Wednesday, January 19, 2011

Hello! It's been a long long time since last update, anyways! I have something interesting to share...
I've been playing around with Mootools (I highly recommend it!) lately, due to something at work, but I'm really loving it so far, one problem I had though is that I needed a very simple Slideshow, no problem, I found a nice jQuery script, but it became messy when I needed to add another Slideshow, the easy solution is just duplicate the whole code but, that's not nice at all! So I decided to give it a try, and well here it is!
You can see a working example here: http://jsfiddle.net/fedekun/WfqHX/
Just click on "Run" to start it.

Although I higly recommend you click on that link and see for yourself, I'll just embed all the code here too.

Read more...

  © Blogger template Simple n' Sweet by Ourblogtemplates.com 2009

Back to TOP