Thursday, September 16, 2010

Linux version of chromium-browser crash fix

After yesterdays update of chromium-browser from PPA repository my chromium won't start. I have tried that from command line and got segmentation fault while chromium was staring. Googling of this problem didn't solve that. But i found and article Chromium debugging and posted a bug on launchpad. In an hour Fabien replied that it's a known bug. In few hours user vthomasset has found a quick solution on how to solve that problem while developers will fix that in code.

You need to edit a file ~/.config/chromium/Default/Preferences with your favourite editor. And remove a line
"inspector_settings": "lastActivePanel:string:console\n".
So the lines in your config:


   "webkit": {
      "webprefs": {
         "inspector_settings": "lastActivePanel:string:console\n"
      }
   }

after changes will look like:

   "webkit": {
      "webprefs": {
      }
   }

Thursday, April 8, 2010

Blogspot jQuery gallery

Today i'm going to create one thing with blogger.

Want to make a gallery for blogger.

First of all i've reviewed text which was generated by Blogger when i insert images. And then few hours of coding made rough, but useful gallery for Blogger. Anyway, due to limitations of blogger itself code looks like an in&*an one. Later i will check checked where i can host all of the plugins i've used here, together with library for user-friendly usage. Now i'm going to make same easy thing for Picasa.

Limitations:

  • It's for blogger only
  • After editing a page you need to put your JS code again.
  • You need to know basics of HTML. If you want to order your photos.
  • You need to know CSS. If you want to style your gallery.
  • You need to search for "change 'medium' to x-small, small, large or x-large to enlarge image" comment in javascript to change size of image

For now you need to do the following:

  1. Make an empty post and add images there.
  2. Write all text. you want to have in your blog post.
  3. If you want captions like you see in example below you need to add "alt" property to the image or "title" property to link around image.
  4. Add this huge small code:

Configuration:

  • Biozshock.blogspotImages.render([thumb-size], [large-size], [yoxview-options]);
  • Image sizes:
    x-small
    small
    medium
    large
    x-large
  • YoxView documentation is here
  • If you want to style image previews, just override CSS file

Libraries used:

Do hard work! Eat a little chease Eat more grass Hm, I think it's too bog for me Oh, yeah, it's and eden!

Wednesday, March 3, 2010

Codeigniter Crontab Library

Recently i've wrote a library for CodeIgniter framework that handles crontab jobs of the project. This library is very simple, but it's designed to be so.

What does it do

This library sets up cron to perform tasks from crontab file. When crontab file is written with this library. Almost all you need is set up config/crontab.php file.

Installation

  1. Download library from github repository git://github.com/biozshock/crontab.git
  2. If you are familiar with phpunit you can test library. Tests are located in tests subdirectory
  3. Copy config/crontab.php and libraries/crontab.php
  4. Setup config/crontab.php
  5. Use this library

Crontab library config file

cronfile
Path to cronfile library will write all jobs
php_path
Path to PHP executable
crontime
Crontab library default format for date() function
cli_path
PHP cli scripts path
time_offset
This config variable can be used when your server has different timezone from timezone of tasks you want to be cheduled. e.g. server is in -5 timezone. backend in +1 timezone. in backend you setting cronjob for 00:00:00, but for server this would be 14:00:00

Library usage examples

Simple usage

To execute cli script every day at midnight n your controller you should put following code:

$this->load->library('crontab');
$this->crontab->add_job('0 0 * * *', 'cli_script.php');

This code will execute cli_script.php located in directory you've set up in config file at 0 minutes 0 hour

Advanced usage

Assuming you have in your $_POST['time'] time when scheduled action should be performed.

$this->load->library('crontab');
$time = $this->crontab->translate_timestamp(strtotime($this->input->post('time')), 's i G * *');
$this->crontab->add_job($time, 'cli_script.php');


If you want to perform an action every day after user submit a data:

$this->load->library('crontab');
$time = $this->crontab->translate_timestamp(time(), 's i G * *');
$this->crontab->add_job($time, 'cli_script.php');


Warning

Please make sure:
  • your php exec is enabled
  • your server user has access to crontab
  • you know what you are doing
This script will REPLACE ALL crontab jobs for user under which your server is running.

Thursday, February 4, 2010

phpsh - Great tool for commandline PHP

Recently i've found great tool phpsh. It was developed by Facebook programmer Daniel <dancor> Corson. phpsh was written in Python for PHP (irony). It allow you to run PHP scripts in a shell. Yeah, you can say "Just install php5-cli and run php -a". When i have phpsh? No, thanks.

phpsh features i've been searching for:


  • php autocomplete of native and included functions and classes

  • php manual/description of native functions and classes

  • good exception handling (in php -a shell is exiting)

  • Color highlighting for output type

How to install phpsh on Ubuntu Karmic

First of all you need to have git and python installed:

sudo apt-get install git python python-setuptools


Next you need to fetch phpsh git repository on github:

git clone git://github.com/facebook/phpsh.git phpsh


Then build and install phpsh:

cd phpsh/
python2.6 setup.py build
sudo python2.6 setup.py install


During install procedure i've encountered a problem: setuptools was unable to get pysqlite, so i've installed those from Ubuntu repo:

sudo aptitude install python2.6-pysqlite2

and repeated step with install command

First look on phpsh

To see what i can do with phpsh i've used following simple code:

<?php
/**
 * Classs for testing phpsh
 * @author bumz
 *
 */
class Test
{
 /**
  * Variable holds all set foos
  * @var array
  */
 private $_foos = array();
 
 /**
  * General empty constructor
  * @return void
  */
 public function __construct()
 {
  
 }
 
 /**
  * General getter
  *
  * @param string $fooName
  * @return mixed
  * @throws Exception if foo isn't set
  */
 public function __get($fooName)
 {
  if (isset($this->_foos[$fooName])) {
   return $this->_foos[$fooName];
  } else {
   throw new Exception('This foo isn\'t set');
  }
 }
 
 /**
  * General setter
  *
  * @param string $fooName
  * @param mixed $fooValue
  * @return void
  */
 public function __set($fooName, $fooValue)
 {
  $this->_foos[$fooName] = $fooValue;
 }
 
 /**
  * General magic isset function
  *
  * @param string $fooName
  * @return bool
  */
 public function __isset($fooName)
 {
  return isset($this->_foos[$fooName]);
 }
 
 /**
  * General magic unset function
  *
  * @param string $fooName
  * @return bool
  * @throws Exception every time as foo can't be unset
  */
 public function __unset($fooName)
 {
  throw new Exception('You can\'t unset foos');
 }
 
 /**
  * Test of autocomplete
  * @return void
  */
 public function autocomplete()
 {
  echo 'autocomplete works';
 }
}


first of all you need to load phpsh itself and load Test class:

phpsh
phpsh> r '/home/bumz/workspace/test/testsh.php'


Then i've done few simple operations:

php> $class = new Test();

php> $class->foo1 = 'I\'m foo 1';

php> $class->foo2 = 'Foo 2 here';

php> echo $class->foo2;
Foo 2 here
php> echo isset($class->foo2);
1
php> unset($class->foo2);
Uncaught exception: Exception: You can't unset foos

php> $class->autocom
autocommit autocomplete
php> $class->autocomplete();


Now i know i will use this tool.