Monday, 29 October 2012

Update Samsung GT-I5500 from CyanogenMod 7.2 to 9 (android 4.0)

In a previous post I explained how to update your phone to to 2.3. Now you can update it to 4.0 (CyanogenMod 9) !!!!
Supposing you completed the prev steps in this post and you have Cyanogen 7.2 (or later) you will need this file: Cyanogen9 (link on megaupload)
After downloading it redo step 7 from the previous post and instead "update-cm-7.2.0-RC0-galaxy5-v1.9-MADTEAM-signed" use the zip downloaded. Just to keep it simple I will re-write the instructions:

Now we move on to installing packages. Go to "Mount and storage", then "Mount USB Storage". Copy files "cm-10-20121024-MADTEAM-galaxy5" (the file downloaded earlyer) to the removable disk (SD card of the phone). We expect to complete the process successfully and give "Unmount USB Storage" in the CWM phone. Back to main menu using the key back. Navigate to the "Install zip from SD card" -> "Chose zip from SD card". Select "cm-10-20121024-MADTEAM-galaxy5", followed by Yes.

Give "Reboot System"

If you have problems with gMarket redo step 9.In order to copy files to the phone you need to do step 5.If this is to trivial please leave a message and I will post the complete guid on how to do this without references.

If this post helped you in any way don't be shay and treat me to a bear, what do you say?

Sunday, 28 October 2012

Class not registered Windows 7 error

Some time ago I had a lot of problems with my Windows 7 that I could not find a solution to. Some of them were:

- opening a folder from uTorrent ('Class not registered')
- opening Network and Shering (dosen't open)
- opening System window (same)
- opening most of my Control Panel windows

I found a lot of solution that didn't work for me, but the only that did was on google chrome's bug tracker in this post, response #9.

The solution just repairs all the dll's on c: drive, if you have Windows installed on a difrent partition just change C: to whatever letter is your windows partition.

I recommend reading the post before running the command just know the risks and what to expect.

FOR /R C:\ %G IN (*.dll) DO "%systemroot%\system32\regsvr32.exe" /s "%G" 

Saturday, 27 October 2012

How to root Samsung Galaxy i9100 S2

Galaxy S2 is one of the real success of Samsung's leading devices based on the Android platform. And how it is a very powerful phone that has sold so fast, the hackers did not spent much thought and have root-ed it. There are 2 tutorials on rooting , I will write the easiest for beginners. So let's start.

  1. Download Odin and extract the files from the archive, saving them on your computer
  2. Download XWKDD but not extract any files from it
  3. Download SuperOneClick
  4. Download Samsung Kies and install you phone drivers
  5. After you install the Samsung Kies restart PC
  6. Put your phone in USB debugging mode. Go to Settings, Applications, Development and start USB Debugging
  7. Turn off the phone and turn it back on holding the power, home and volume down buttons
  8. Start Odin and connect your phone to the PC with a USB cable
  9. Wait until Odin will recognize your phone and shows it is connected. On Odin window, except "F.Reset Time" and "Auto Rebot", NO other option should be checked 
  10. Press PDA and select the file that you downloaded at step 2 and press Start
  11. Odin will start flash-ing the kernel. When you are finished, your phone will automatically restart
  12. After the phone will reset start SuperOneClick, click root, the phone will root,  restart the phone and you're done.

MOD PS3 without a special usb stick (CFW)

Now you can mod a PS3 without those special sticks. Mod-ing is done with a soft via CFW, that means you don't lose the guarantee. It should be noted that you will lose access to PSN. Attention mod-ing process involves many risks (in the sense that if you do it wrong you might have problems), if you don't have some experience or are unsure better to go to someone who is specialized. For those who are not afraid, not shaking hands on the controller and have some experience here you have a tutorial on how you can mod the console without any problem.

 First you need firmware version 3.55. Make updates to this version, if there will be requests a tutorial will be made for this. There has long been some CFW's of some hackers. You must delete these CFW's by Recovery Mode. You need the original firmware 3.55 from Sony (get it here) and put the console into Recovery Mode. Make Restore PS3 System and you will install the original firmware 3.55.

Once you have the original Sony 3.55 firmware we can get to work. Let's start.

  1. You need a USB stick or an external hard drive formatted (using this tutorial) in FAT32 format
  2. Download PS3UPDAT.PUP from here (beware, this file is already patched to version CFW kmeaw, it's not an original Sony firmware)
  3. Connect the USB stick or portable hard drive to the computer and create a folder PS3 and inside another folder UPDATE (in capitals!!!)
  4. Copy the files downloaded at point 2 in the UPDATE folder that you just created
  5. Enter console in Recovery Mode. When the console is in Recovery Mode select the System Update option, connect the stick with the files you downloaded in step 2 in the console and the console will switch to CFW 3.55 kmeaw (most stable at the moment) after following instructions on the screen (you must accept ToS and confirm installation)
  6. When everything is over your console is modded. Instal your managers (I recommend multiMAN or Gaia - latest version - Multimania here and Gaia here) and BDEMU2 here
  7. You can copy the games on a external hdd from Windows or transfer it to the PS via network
  8. If you have problems with playing games, boot the game from multiMAN with Select + X, select Fix Permissions, install and run lv2patcher and select the option SysCall , install Fix Permissions and run the small program that sets chmod 0777 programel to every file / folder on the system and fixes permissions / attributes of those files
  9. If you want to play FullHD movies (and not only) on your console I recomand using Showtime, and as an alternative have PS3 Media Server

Saturday, 6 October 2012

Creating a module and a db in The Bug Genie 3.2

The current documentation is outdated so I tryed to make short note on how to do this.

ATM using cli will generate some errors, here is how to solve them.

In order to create a module from cli you need to do something like this from the console:

php -f tbg_cli create_module MODULE_NAME

this will generate some errors like:

  • Declaration of MODULE_NAME::_initialize() must be compatible with that of TBGModule::_initialize()
- this can be fixed by removing the parameter from _initialize in your class file (class/MODULE_NAME.class.php)
- also be sure to remove the setters in the init function, they are also depreciated
  • Anotation @Table missing
- just add this before the class definition in your class file
 * @Table(name="TBGModulesTable")

In order to be able to create tables you need to create (if it dose not exist) a folder named B2DB in your class folder and include the table definition there as a class.php file like so:

  + B2DB
     - MyTable.class.php

MyTable.class.php :

use b2db\Core,

     * @Table(name="my_table_name")
    class MyTable extends TBGB2DBTable{
        const B2DB_TABLE_VERSION = 1;
        const B2DBNAME = 'my_table_name';
        const ID = '';
        const TEXT = 'my_table_name.a_text_field';
        const SCOPE = 'my_table_name.a_relate_field_to_scopes';

        protected function _initialize()
            parent::_setup(self::B2DBNAME, self::ID);
            parent::_addForeignKeyColumn(self::SCOPE, TBGScopesTable::getTable(), TBGScopesTable::ID);

all the methods to add text,varchar,int, etc can be found in class Table (core/B2DB/Table.class.php)

Wednesday, 3 October 2012


ATM Thebuggenie documentation is very low on details so I will post here a list of events I found in the source files of v 3.2

'core', 'rolepermissionsedit', $role
'core', 'setting_returnfromlogin'
'core', 'setting_returnfromlogout'
'core', 'project_sidebar_links_dashboard'
'core', 'project_sidebar_links_releases'
'core', 'project_sidebar_links_milestone'
'core', 'project_sidebar_links_roadmap'
'core', 'project_sidebar_links_team'
'core', 'project_sidebar_links_statistics'
'core', 'project_sidebar_links_timeline'
'core', 'config_project_tabs'
'core', 'project_dashboard_top'
'core', 'project_dashboard_bottom'
'core', 'project_header_buttons'
'core', 'project/projectinfo', $project
'core', 'config_project_panes'
'core', 'project_overview_item_links'
'publish', 'fixture_article_loaded'
'vcs_integration', 'new_commit'
'core', 'quicksearch_dropdown_firstitems'
'core', 'quicksearch_dropdown_founditems'
'core', 'reportissue.prefile'
'core', 'reportissue.listfields'

Monday, 20 August 2012

Cheating littlealchemy

If you got stuck and can't find any more combinations and you want to create more, here is a little script that will activate all the elements:

alchemy.history.parents = [];

for(var i=0;i<base.base.length;i++){
if(base.base[i][0] != false){
for(var j=0;j<base.base[i].length;j++){

localStorage.setItem("history", JSON.stringify(alchemy.history));

Just paste this code in the browser's console (F12 for firefox's firebug or google chrome's console) and after just refresh.

If you want a complete list of all the combinations possible run this code:

WARNIGN: this script may take a long time to compile and you may get "stop script" alerts. If you are patient and click continue you will see the full list. The time to finish depends on the pc and the browser (fastest is goole chrome)

var html = [];

var l = base.length;
var s = 0;

for(var ii=s;ii<s+l;ii++){
for(var jj=ii;jj<s+l;jj++){
var r =[ii,jj]);
html.push('<div><img src="img/base/'+(ii+1)+'.png" class="boxImg"> + <img src="img/base/'+(jj+1)+'.png" class="boxImg"> = ');
for(var k=0;k<r.length;k++){
html.push('<img src="img/base/'+(r[k]+1)+'.png" class="boxImg">')
if(k+1<r.length) html.push(' , ')

$('<div>').html('<div style="height:350px;overflow:auto">'+html.join('')+'</div>').dialog({
height: 400,
width: 800,buttons: {
'OK': function () {
},modal: true,
draggable: true,

If there are at least 5 persons that ask me to make a web page where you can see the complete tutorial I will make it so you won't have to use the script every time.

Friday, 15 June 2012

Update Samsung GT-I5500 from 2.2 to 2.3.7 - CyanogenMod 7.2 1.9 MADTEAM

EDIT: HOW ABOUT UPGRADING TO 4.0 (CyanogenMod 9) ?

I thought it would be useful to share this info, if you have a phone Galaxy 5/Galaxy 550/GT-I5500/Europa Galaxy or whatever you call it. The method was tested on several terminals and works without any problems. We observed significant performance boost, in some cases beating a Galaxy S, and that without overclocking the processor.
Note that if the phone will break for various reasons and the firmware is still installed, guarantee is lost as a result of these changes. But in most cases you can return to official firmware that came with the phone. The firmware comes with Root, superuser and BusyBox installed, and is based on Android 2.3.7, the latest version of Android Gingerbread. Different versions of the firmware have been run stable on my phone for about 2 months. Note that it is more stable than stock firmware!

To streamline the process of upgrading the firmware, instead of uploading individual files I chose to put them all in one archive on RapidShare, which offers a much higher transfer rate.

Follow this link to download files: 

Once you have downloaded the file, use WinRAR ( winRAR ) to unpack it.

We should have a folder that includes the following files:

After we made sure we have all the files needed to continue, before the writing of the firmware  we need to install the USB drivers for Samsung mobile phone, that if we don't have installed Kies.
Drivers as standalone package can be found here: drivers .

If the installation went smoothly, we finally get to install the firmware on the phone.
We need original Samsung USB cable (preferably, but should work without problems using a new cable).

My request is to follow these steps in the order they appear here, or you can meet with some problems.

1. Backup data you consider important, no one will take responsibility for lost data! Speaking of contacts, simply export the SD card, then copy them into the computer later. For others: photos, videos, etc. I suspect that you have already guessed, like, copy them into the computer. Although small chances, the processes for firmware upgrade can result in an unexpected way.

2. Turn off the phone after you enter the download mode. To do this it is necessary to hold simultaneously the volume down key and the center button(center of the joystick) and the power button).

3. Connect the phone to the PC via the USB cable. If your phone has not been connected until now in download mode, down in the Windows notification area there will be displayed a balloon telling you that new hardware is being installed. Wait until the process is completed, then open "Odin Multi Downloader v4.28" included in the archive provided by me.

4. First we rewrite the baseband phone with one that is "certified" to be fully compatible with Cyanogen Mod. Version is included and recommended by me "I5500XWJP4". From Odin, we click on the OPS file and select "EUROPA_I5508_v1.0.ops". Select the option one package, then we click on the tab with the same name under "Select Integrated Package - Check One Option Package" and select file "MODEM_I5500XWJP4.tar.md5", followed by a click on "Start". Wait until the process is completed, the phone should restart and boot into the OS.

5. Turn off the phone again, enter download mode again, only this time instead of "MODEM_I5500XWJP4.tar.md5", we select "ClockworkMod-Galaxy5-v0.7", followed as before by the "Start ".

6. After completing the phone will automatically install the Recovery ClockWorkMod. Navigating through the menus is done with keys up / down and selecting with the middle button. The first thing you need to do is to select "Wipe Data / Factory Reset", navigate to the Yes (like you have to do for each action of CWM).

7. Now we move on to installing packages. Go to "Mount and storage", then "Mount USB Storage". Copy files "update-cm-7.2.0-RC0-galaxy5-v1.9-MADTEAM-signed", "Galaxy5-v1.9-hotfix3", "gapps-gb-20110828-signed", "TouchWiz_3.0_Port_v0.7 "removable disk (SD card of the phone) again appeared in My Computer. We expect to complete the process successfully and give "Unmount USB Storage" in the CWM phone. Back to main menu using the key back. Navigate to the "Install zip from SD card" -> "Chose zip from SD card". Select "update-cm-7.2.0-RC0-galaxy5-v1.9-MADTEAM-signed", followed by Yes.

8. Now we install the hotfix, just like the previous step, only this time select, after the "Chose zip from SD card" select file "Galaxy5-v1.9-hotfix3", followed by Yes.

9. The last step required, that if you want to use the Android Market, and you want this more than sure, this is installing applications including Google. Mentioned is that applications like YouTube, Maps, etc.. can easily install from the Android Market. As far as the "Chose zip from SD card", this time select "gapps-gb-20110828-signed", followed by Yes.

10. Installation TouchWiz 3.0 (or the GUI Launcher, which is included in the Samsung's firmware). Not different, as "Chose zip from SD card", choose "TouchWiz_3.0_Port_v0.7", and finally Yes.

11. Give "Reboot System" from the main menu and wait for phone to boot. The first time it takes longer, since we need to index new files, so there should be no concern. Follow the instructions on the screen, everything should go smoothly. If you have installed and TouchWiz, at some point you will be prompted to start the Launcher. You can check that the option selected by default start with the phone. If at any time you want to get rid of one of them you can do this using Titanium Backup that you find on the Market.

This version does not require battery recalibration, because with the introduction of version 1.9 of this port driver returned to the battery of your original firmware. This version of firmware with all the hotfixes included was extensively tested by me all day and I can say that with the new version was going to respond much better if the phone orders and animations are included purely ICS and simply adorable! I hope I managed somehow to help users without technical knowledge too advanced or do not want to fight too much. I'll answer any questions as long as they are in connection with this firmware and / or telephone. All the best!

If this post helped you in any way don't be shay and treat me to a bear, what do you say?

Monday, 16 January 2012

Sugarcrm custom chart

Creating a sugar chart dashlet is done the same way as you would create a simple dashlet, just extending 2 functions, for this reason I will not cover the way a sugar dashlet is created. Notes: The dashlets will be named  "CustomLineDashlet" and "CustomPieDashlet" and the module is "abc_Sample". You can use the predefined sugar chart definitions for parsing data (modules\Charts\chartdefs.php) or you can create your own to meet any custom demands. This is done by editing(creating if dose not exist) "custom\Charts\chartDefs.ext.php". For CustomPieDashlet : custom\Charts\chartDefs.ext.php:
$chartDefs['custom_pie_chart'] = array('type' => 'code',
 'id' => 'custom_pie_chart',
 'label' => 'custom_pie_chart label',
 'chartUnits' => 'The unit definition',
 'chartType' => 'pie chart',
 // important value that will be used to group the data
 'groupBy' => array( 'name' ), 
  array(  'module' => 'abc_Sample',
   'action' => 'index',
   'query' => 'true',
   'searchFormTab' => 'advanced_search',
public function display() {
 $currency_symbol = $GLOBALS['sugar_config']['default_currency_symbol'];
 require ("modules/Charts/chartdefs.php");
 // here we load the chart definition (custom\Charts\chartDefs.ext.php)
 $chartDef = $chartDefs['custom_pie_chart'];
 require_once ('include/SugarCharts/SugarChart.php');
 $sugarChart = new SugarChart();
 $sugarChart -> setProperties('', translate('LBL_OPP_SIZE', 'Charts') . ' ' . currency_symbol . '1' . translate('LBL_OPP_THOUSANDS', 'Charts'), $chartDef['chartType']);
 $sugarChart -> base_url = $chartDef['base_url'];
 $sugarChart -> group_by = $chartDef['groupBy'];
 $sugarChart -> url_params = array();
 $sugarChart -> getData($this -> constructQuery());
 $xmlFile = $sugarChart -> getXMLFileName($this -> id);
 $sugarChart -> saveXMLFile($xmlFile, $sugarChart -> generateXML());
 return $this -> getTitle('
') . '
' . $sugarChart -> display($this -> id, $xmlFile, '100%', '480', false) . '
'; } protected function constructQuery() { // this is the query used to get data and create the xml // for pie chart we have a simple query $query = " SELECT count(*) as total, name FROM table GROUP BY name ORDER BY name"; return $query; }
For CustomLineDashlet : custom\Charts\chartDefs.ext.php:
$chartDefs['custom_line_chart'] = array(  'type' => 'code',
 'id' => 'custom_line_chart',
 'label' => 'custom_line_chart label',
 'chartUnits' => 'The unit definition',
 'chartType' => 'line chart',
 // the legend will be the name and the x intervals will be the date
 'groupBy' => array( 'date','name' ), 
  array(  'module' => 'sam_Sample',
   'action' => 'index',
   'query' => 'true',
   'searchFormTab' => 'advanced_search'
public function display() {
 $currency_symbol = $GLOBALS['sugar_config']['default_currency_symbol'];
 require ("modules/Charts/chartdefs.php");
 // here we load the chart definition (custom\Charts\chartDefs.ext.php)
 $chartDef = $chartDefs['custom_line_chart'];
 require_once ('include/SugarCharts/SugarChart.php');
 $sugarChart = new SugarChart();
 $sugarChart -> setProperties('', translate('LBL_OPP_SIZE', 'Charts') . ' ' . currency_symbol . '1' . translate('LBL_OPP_THOUSANDS', 'Charts'), $chartDef['chartType']);
 $sugarChart -> base_url = $chartDef['base_url'];
 $sugarChart -> group_by = $chartDef['groupBy'];
 $sugarChart -> url_params = array();
 $sugarChart -> getData($this -> constructQuery());
 $xmlFile = $sugarChart -> getXMLFileName($this -> id);
 $sugarChart -> saveXMLFile($xmlFile, $sugarChart -> generateXML());
 return $this -> getTitle('
') . '
' . $sugarChart -> display($this -> id, $xmlFile, '100%', '480', false) . '
'; } protected function constructQuery() { // this is the query used to get data and create the xml // for pie chart we have a simple query $query = " SELECT count(*) as total, name, date FROM table GROUP BY date,name ORDER BY name"; return $query; }
the meta files ( custom\modules\abc_Sample\Dashlets\CustomLineDashlet\CustomPieDashlet.meta.php and custom\modules\abc_Sample\Dashlets\CustomLineDashlet\CustomLineDashlet.meta.php) will look like this:
$dashletMeta['CustomSamplePieCart'] = array('module'  => 'abc_Sample',
            'title'       => 'Custom Pie Chart', 
                                          'description' => 'Custom description',
                                          'icon'        => 'themes/default/images/icon_sam_Sample_32.gif',
                                          'category'    => 'Charts');
$dashletMeta['CustomSampleLineCart'] = array('module'  => 'abc_Sample',
            'title'       => 'Custom Chart', 
                                          'description' => 'Custom description',
                                          'icon'        => 'themes/default/images/icon_sam_Sample_32.gif',
                                          'category'    => 'Charts');

custom\Charts\chartDefs.ext.php is the place where you will define your chart type, important fields:
'groupBy' => array( 'date','name' ) (the x and legend fields)
'chartType' => 'line chart', (the swf name, php will capitalize and add .swf, so it will be lineChar.swf)

in the sql your x values will have to coincide (be the same) for all lines

Sunday, 1 January 2012

Gotomeeting php api(oauth) create meting

This is from , the code from bcantoni:
Create a METING:


// sample GoToMeeting API call: create meeting
// docs:

// assume have valid $access_token from OAuth flow
$access_token = 'xyz';

$url = "";
$headers = array (
    "Accept: application/json",
    "Content-Type: application/json",
    "Authorization: OAuth oauth_token=$access_token"
$data = array ('test meeting',
    'starttime' => '2012-02-01T08:00:00',
    'endtime' => '2012-02-01T09:00:00',
    'timezonekey' => '67', // Pacific time
    'meetingtype' => 'Scheduled',
    'passwordrequired' => 'false',
    'conferencecallinfo' => 'Hybrid' // normal PSTN + VOIP options
$data_json = json_encode ($data);
$ch = curl_init();
curl_setopt_array ($ch, array (
    CURLOPT_URL => $url,
    CURLOPT_HEADER => false,
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => $data_json,
$results = curl_exec ($ch);
$info = curl_getinfo ($ch);
curl_close ($ch);
print "data sent: $data_json\n";
//print "headers sent: " . print_r($headers,1) . "\n";
//print "curl info: " . print_r($info,1) . "\n";
print "data returned: " . print_r($results,1 ) . "\n";
//print "data returned decoded: " . print_r(json_decode($results),1) . "\n";

And the response:

$ php post.php
data sent: {"subject":"test meeting","starttime":"2012-02-01T08:00:00","endtime":"2012-02-01T09:00:00","timezonekey":"67","meetingtype":"Scheduled","passwordrequired":"false","conferencecallinfo":"Hybrid"}
data returned: {"joinURL":"https:\/\/\/join\/123456789","maxParticipants":26,"uniqueMeetingId":2000007959645,"meetingid":123456789}

thaks for the response, but I still get the same error with your code :). Here is the output from the php:

data sent:
    [0] => test meeting
    [starttime] => 2012-02-01T08:00:00
    [endtime] => 2012-02-01T09:00:00
    [timezonekey] => 67
    [meetingtype] => Scheduled
    [passwordrequired] => false
    [conferencecallinfo] => Hybrid

data returned:
{"int_err_code":"Server.userException","msg":"java.lang.NumberFormatException: Invalid date/time"}curl info:
    [url] =>
    [content_type] => text/xml; charset=utf-8
    [http_code] => 404
    [header_size] => 224
    [request_size] => 483
    [filetime] => -1
    [ssl_verify_result] => 20
    [redirect_count] => 0
    [total_time] => 2.797
    [namelookup_time] => 0
    [connect_time] => 0
    [pretransfer_time] => 0.438
    [size_upload] => 712
    [size_download] => 98
    [speed_download] => 35
    [speed_upload] => 254
    [download_content_length] => 98
    [upload_content_length] => 712
    [starttransfer_time] => 2.438
    [redirect_time] => 0
    [certinfo] => Array


And from fidler:

Accept: application/json
Authorization: OAuth oauth_token=1c8187be36bb86997db59e5772268d5a
Content-Length: 712
Expect: 100-continue
Content-Type: application/json; boundary=----------------------------9530b5163dde

Content-Disposition: form-data; name="starttime"

Content-Disposition: form-data; name="endtime"

Content-Disposition: form-data; name="timezonekey"

Content-Disposition: form-data; name="meetingtype"

Content-Disposition: form-data; name="passwordrequired"

Content-Disposition: form-data; name="conferencecallinfo"


and the response:

HTTP/1.1 404 Not Found
Date: Sun, 01 Jan 2012 10:57:14 GMT
Server: Apache
Content-Length: 98
Content-Type: text/xml; charset=utf-8
Cneonction: close
Vary: Accept-Encoding
Connection: close

{"int_err_code":"Server.userException","msg":"java.lang.NumberFormatException: Invalid date/time"}