Author Archives: Larry Battle

Code of the day: Javascript Flatten()

/**
* Returns an array that contains non-array elements.
* If an element is an array, then the element is replaced by the content of the array.
* @param{Array} 
* @return{Array} return null if no arguments are passed.
* @example 
    flatten([[1,2],3,[4]]); // returns [1,2,3,4];
*/
var flatten = function(arr){
	if(!Array.isArray(arr)){
		return (arr === null || arr === undefined) ? null : [arr];
	}
	var result = [], obj;
	for(var i = 0, len = arr.length; i < len; i++){
		obj = arr[i];
		if(Array.isArray(arr)){
			obj = flatten(obj);
		}
		result = result.concat( obj );
	}
    return result;
};

Larry Battle

Hello, I'm Larry Battle and I love to program, fix problems and discover new technologies. Check out my stackoverflow and github accounts. I also do book reviews on amazon.com. I'm not the best of writers but I do enjoy spreading my knowledge through my short blogs at bateru.com/news. So please leave some feedback. It would be greatly appreciated.

More Posts - Website

Follow Me:
Twitter

Google Go: recover() example

Here’s an example of how to use recover() in Google Go.

package main

import "fmt"

func gandalf( doTalkTo bool ){
	defer catch()
	if(doTalkTo){
		// Panic stops execution of the current function and stops unwinding the stack, calling an deferred functions along the way.
		panic("You shall not pass!")	
	}
}
// catch() must be called as a deferred 
func catch(){
	// recover() regains control over the program execution when panic() is called.
	// recover() returns is the argument passed from panic()
	if r := recover(); r != nil {
		fmt.Println("Error:", r)
	} else {
		fmt.Println("No problems occurred")
	}
}
func main() {
	gandalf(true)
	gandalf(false)
	//unwinds to the top of the stack and ends the program
	panic("Where am I going?");
}


Output:
Error: You shall not pass!
No problems occurred
panic: Where am I going?

goroutine 1 [running]:
main.main()

Demo: http://play.golang.org/p/xu9Jd1YI0T

More information here:
Effective Go - The Program Language

Larry Battle

Hello, I'm Larry Battle and I love to program, fix problems and discover new technologies. Check out my stackoverflow and github accounts. I also do book reviews on amazon.com. I'm not the best of writers but I do enjoy spreading my knowledge through my short blogs at bateru.com/news. So please leave some feedback. It would be greatly appreciated.

More Posts - Website

Follow Me:
Twitter

Code of the Day: Coffeescript + jQuery, enforce max length for all input elements

Enforce max length in all browsers since some browsers, IE8, don’t support maxlength for all input elements.

Coffeescript

# requires jQuery 1.6+ 
enforceMaxLength = ->
  $("[maxlength]").on "blur", ->
    $(@).val (index,val) -> 
      val.substring 0, $(@).attr("maxlength")

enforceMaxLength()

Javascript

// Generated by CoffeeScript 1.6.1
(function() {
  var enforceMaxLength;
 
  enforceMaxLength = function() {
    return $("[maxlength]").on("blur", function() {
      return $(this).val(function(index, val) {
        return val.substring(0, $(this).attr("maxlength"));
      });
    });
  };
 
  enforceMaxLength();
 
}).call(this);

Larry Battle

Hello, I'm Larry Battle and I love to program, fix problems and discover new technologies. Check out my stackoverflow and github accounts. I also do book reviews on amazon.com. I'm not the best of writers but I do enjoy spreading my knowledge through my short blogs at bateru.com/news. So please leave some feedback. It would be greatly appreciated.

More Posts - Website

Follow Me:
Twitter

Video of the day: 3d printing overview by OffBook PBS

Will 3D Printing Change the World?

Larry Battle

Hello, I'm Larry Battle and I love to program, fix problems and discover new technologies. Check out my stackoverflow and github accounts. I also do book reviews on amazon.com. I'm not the best of writers but I do enjoy spreading my knowledge through my short blogs at bateru.com/news. So please leave some feedback. It would be greatly appreciated.

More Posts - Website

Follow Me:
Twitter

FireStats icon Powered by FireStats