Friday, November 21, 2008

Embed Fonts in HTML document using PHP and Javascript

I wrote a php + js script to replace HTML markup with formatted text in the form of images. The script is called PHPJSFont and it is available at http://code.google.com/p/phpjsfont.

What it does is simple: the Javascript code replaces the text inside HTML tags with an image generated by the PHP script.

Currently it depends on JQuery and PHP 4+ compiled with the GD extension and TTF support.

It should be fairly simple to use, as in:


PJF.replace("h2");
PJF.replace("#topmenu UL > LI");
PJF.replace("h1", { size: 20, color: [255, 0, 0] });

Saturday, November 15, 2008

Install Intel Compiler(icc) in Ubuntu 8.10

To install icc in Ubuntu:

  1. Download icc from Intel website

  2. tar -zxvf the file.

  3. Run 'install.sh'.

  4. Follow the installer instructions.

  5. When it is done add this line to your ~/.bashrc (or initialization script):
    source /opt/intel/Compiler/11.0/069/bin/iccvars.sh ia32
    Replace ia32 with your platform: (ia32, intel64, ia64)

  6. Log off and log in and that is it. You can test it with icc -v

  7. To use icc with a configure script use ./configure CC=icc


NOTE: If you get a libimf.so error like "file does not exists" while using sudo, you will need to write a bash script adding "source /opt/intel/Compiler/11.0/069/bin/iccvars.sh" and the program you are trying to run.

Wednesday, October 1, 2008

Ruby 1.9 Blocks Notes



  • Every function can accept a block.

  • Kernel.block_given? will tell you if a block was passed.


  • def test
    a = 42
    yield(a) if block_given?
    end

  • To assign the block to an argument, you add an ampersand (&) in front of the last argument of your function. This will affect performance.

  • You can call the block inside the function using yield or Proc.call like this:


  • def test(&block)
    a = 42
    yield(a) # or block.call(a,b)
    end

  • yield calls and passes the arguments to the block.

  • block.arity will tell you the number of arguments a block can accept

  • If you have a recursive function accepting a block, you can pass the block to it using '&'.


  • def recursive_function(&block)
    # Do stuff
    recursive_function(&block)
    # pass to other functions accepting blocks
    10.times &block # will run block 10 times
    end

  • If you use the return keyword inside a block, it will return the value and exit the function binded to the block, which is the one that created it.


  • def bl(&block)
    yield
    end

    def test
    bl { return }
    puts "Hello" # this will not be executed.
    end

  • You can use break to return a value inside a block and stop iterating.


  • def bl(&block)
    (0..10).each &block
    end

    def test
    # This block will stop iterating at 5 and return true.
    bl { |x| (break true) if (x == 5); false }
    end

Thursday, September 4, 2008

Using SyntaxHighlighter with Blogger or Blogspot

I added Syntax Highlighting capabilities to this blog and here it is how i did it. You might need another server where to put your files:

  1. Download SyntaxHighlighter from http://code.google.com/p/syntaxhighlighter/downloads/list.

  2. Add this to your Edit HTML code in Layout:

  3. <script language='javascript' src='http://www.url.com/Scripts/shCore.js'></script>
    <script language='javascript'>
    window.onload = function() {
    dp.SyntaxHighlighter.ClipboardSwf = 'http://www.url.com/Scripts/clipboard.swf';
    dp.SyntaxHighlighter.BloggerMode();
    dp.SyntaxHighlighter.HighlightAll('code');
    }
    </script>
    <link href='http://www.url.com/Styles/SyntaxHighlighter.css' rel='stylesheet' type='text/css'/>

  4. Put the code you want to highlight inside a <pre> tag like this:

  5. <pre name='code' class='language'>
    code;
    </pre>

  6. Make sure you replace the url and also '<' with &lt; if you are using HTML code

  7. Add this to the top of your post:

  8. <script language='javascript' src='http://www.url.com/Scripts/shBrushXml.js'></script>

  9. Replace the script name with the one used for your language.



For more information and language list visit http://code.google.com/p/syntaxhighlighter/w/list.

Wednesday, September 3, 2008

CSS Sprites



What a wonderful idea, simple and easy. A great way to reduce HTTP GET's.

How to use it in your application:


  1. Find/Buy a good icon set (like tango), try to find a transparent one.

  2. Place a div where the icon would be located and set its onclick event to whatever you want it to do.

  3. create a css class for the icon:


  4. .icon-name {
    display: block; height: 32px; width: 32px;
    background: transparent url(icon.png) -(x)px -(y)px no-repeat;
    cursor: pointer;
    }

  5. Change height, width and (x) and (y) position with the respective values.

  6. assign the class to your div.


Pretty easy.

Ruby on V8



What a great idea, someone put together a hacked version of ruby for the v8 engine based on hotruby.js. It is not a real compiler but it works.

Now, Who is going to make a real port of Ruby to the v8 engine? Sounds like an interesting project. Just what we need, another ruby virtual machine/interpreter!!

Tuesday, September 2, 2008

Chrome


Chrome is fast. Even though I had problems installing it on my laptop win xp sp3, I managed to get a copy of the exe file from http://cache.googlevideo.com/chrome/install/149.27/chrome_installer.exe. I run it and it installed fine. Not sure what the problem was because other people with sp3 could install it just fine. It was probably a disabled service.

Cool things to try in the address bar:

about:network - Network Tools
about:stats - Shhh! This page is secret!
about:cache - Cache.
about:histograms - Data about chrome features.
about:plugins - Installed Plug-ins.
about:dns - DNS records.
about:version - Google Chrome browser version.
https://gmail.com - This one is pretty bad actually... No one is perfect.

To access google's task manager: right click in the blue space at the top and click Task Manager.

Bad news: still doesn't work on linux(nor wine) or macs.