Make eclipse Galileo 3.5 work with a NTMLv2 Proxy

I installed eclipse 3.5 at my work place (where we access internet through an authenticated NTML proxy). I was unable to make eclipse pass through this proxy, which prevented me to install updates and additional software.

Anthony Dahanne’s describes the workaround on his blog (in french). The Apache httpclient implementation should be disabled because it doesn’t work well with NTMLv2 proxies.

For NTLMv2 Proxies, that require user name and password for access the workaround is to

1. Disable the ECF httpclient provider.
2. Provide the NTLMv2 proxy authentication info (proxyhost, domain, username, and password)

In practice, edit your eclipse.ini file to append the following properties.

-Dorg.eclipse.ecf.provider.filetransfer.excludeContributors=org.eclipse.ecf.provider.filetransfer.httpclient
-Dhttp.proxyPort=8080
-Dhttp.proxyHost=myproxy
-Dhttp.proxyUser=mydomain\myusername
-Dhttp.proxyPassword=mypassword
-Dhttp.nonProxyHosts=localhost|127.0.0.1

SUN hardware benchmark

SUN Enterprise 250 / 248 MHZ / 256 MB
[Feb 14 10:01:48 UTC] Automatic processor type detection found an UltraSPARC-II processor.
[Feb 14 10:01:48 UTC] RC5-72: using core #5 (AnBe 2-pipe).
[Feb 14 10:02:07 UTC] RC5-72: Benchmark for core #5 (AnBe 2-pipe) 0.00:00:16.52 [501,916 keys/sec]
[Feb 14 10:02:26 UTC] OGR-P2: Benchmark for core #0 (GARSP 6.0) 0.00:00:16.69 [2,823,340 nodes/sec]

SUN Ultra 10 / 333 MHz / 512 MB
[Feb 14 09:59:21 UTC] Automatic processor type detection found an UltraSPARC-IIi processor.
[Feb 14 09:59:21 UTC] RC5-72: using core #5 (AnBe 2-pipe).
[Feb 14 09:59:39 UTC] RC5-72: Benchmark for core #5 (AnBe 2-pipe) 0.00:00:16.15 [685,418 keys/sec]
[Feb 14 09:59:58 UTC] OGR-P2: Benchmark for core #0 (GARSP 6.0) 0.00:00:16.84 [3,854,463 nodes/sec]

SUN Ultra 10 / 440 MHZ / 512 MB
[May 01 05:29:15 UTC] Automatic processor type detection found an UltraSPARC-IIi processor.
[May 01 05:29:15 UTC] RC5-72: using core #5 (AnBe 2-pipe).
[May 01 05:29:33 UTC] RC5-72: Benchmark for core #5 (AnBe 2-pipe) 0.00:00:16.23 [908,269 keys/sec]
[May 01 05:29:53 UTC] OGR-P2: Benchmark for core #0 (GARSP 6.0) 0.00:00:16.91 [5,123,975 nodes/sec]

SUN Blade 100 / 500 MHz / 512 MB
[Feb 14 09:59:21 UTC] Automatic processor type detection found an UltraSPARC-IIe processor.
[Feb 14 09:59:21 UTC] RC5-72: using core #5 (AnBe 2-pipe).
[Feb 14 09:59:39 UTC] RC5-72: Benchmark for core #5 (AnBe 2-pipe) 0.00:00:16.15 [1,101,418 keys/sec]
[Feb 14 09:59:58 UTC] OGR-P2: Benchmark for core #0 (GARSP 6.0) 0.00:00:16.84 [5,231,463 nodes/sec]

SUN Blade 1000 / 750 MHZ / 1 GB
[May 01 05:34:12 UTC] Automatic processor type detection found an UltraSPARC-III processor.
[May 01 05:34:12 UTC] RC5-72: using core #5 (AnBe 2-pipe).
[May 01 05:34:31 UTC] RC5-72: Benchmark for core #5 (AnBe 2-pipe) 0.00:00:16.21 [1,557,063 keys/sec]
[May 01 05:34:50 UTC] OGR-P2: Benchmark for core #0 (GARSP 6.0) 0.00:00:16.59 [8,394,930 nodes/sec]

SUN Fire 210 / 1 GHZ / 4 GB
[Feb 14 10:15:19 UTC] Automatic processor type detection found an UltraSPARC-IIIi processor.
[Feb 14 10:15:20 UTC] RC5-72: using core #5 (AnBe 2-pipe).
[Feb 14 10:15:38 UTC] RC5-72: Benchmark for core #5 (AnBe 2-pipe) 0.00:00:16.06 [2,079,802 keys/sec]
[Feb 14 10:15:57 UTC] OGR-P2: Benchmark for core #0 (GARSP 6.0) 0.00:00:16.43 [11,217,790 nodes/sec]

SUN Fire 240 / 1 GHZ / 4 GB
[Feb 14 10:05:39 UTC] Automatic processor type detection found an UltraSPARC-IIIi processor.
[Feb 14 10:05:39 UTC] RC5-72: using core #5 (AnBe 2-pipe).
[Feb 14 10:05:58 UTC] RC5-72: Benchmark for core #5 (AnBe 2-pipe) 0.00:00:16.61 [2,088,402 keys/sec]
[Feb 14 10:06:17 UTC] OGR-P2: Benchmark for core #0 (GARSP 6.0) 0.00:00:16.64 [11,263,969 nodes/sec]

MySQL notes

#######
Creating MySQL database on Linux system

1. I assume that you are working from your account and not the root. Start a terminal session and become the superuser (Type su at the prompt and then enter the root password).
2. Now we’ll access the MySQL server. Type:

mysql -u root -p

The system prompts for the MySQL root password that you set up in Installing MySQL on Linux. (Note: This is not the Linux root password but the MySQL root password). Enter the password, which is not displayed for security reasons.
Once you are successfully logged in, the system prints a welcome message and displays the mysql prompt … something like

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 3.22.32

Type ‘help’ for help.

mysql>

3. Now we are ready for creating the employees database. Issue the command:

create database employees;

(Note: The command ends with a semi-colon)

4. An important point to note is that this database is created by the root and so will not be accessible to any other user unless permitted by the root. Thus, in order to use this database from my account (called manish), I have to set the permissions by issuing the following command:

GRANT ALL ON employees.* TO manish@localhost IDENTIFIED BY “eagle”

The above command grants my account (manish@localhost) all the permissions on employees database and sets my password to eagle. You should replace manish with your user name and choose an appropriate password.
5. Close the mysql session by typing quit at the prompt. Exit from superuser and come back to your account. (Type exit).
6. To connect to MySQL from your account, type:

mysql -u user_name -p

Type in the password when prompted. (This password was set by the GRANTS ALL… command above) . The system displays the welcome message once you have successfully logged on to MySQL. Here is how your session should look like:

[manish@localhost manish]$ mysql -u manish -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 3.22.32

Type ‘help’ for help.

mysql>

7. Typing the command SHOW DATABASES; will list all the databases available on the system. You should get a display similar to:

mysql> SHOW DATABASES;
+—————-+
| Database |
+—————-+
| employees |
| mysql |
| test |
+—————-+
3 rows in set (0.00 sec)

8. Enter quit at the mysql> prompt to come out of the mysql client program.

########
LOAD DUMP

After you have dumped out your data into a file as described here, FTP or scp that dump file to the home directory (/) on our system.

Once you have uploaded the dump file to your account here, get a shell prompt on our system using telnet or ssh.

Now import the dump file into MySQL by typing all the following on 1 single line at the shell prompt:

mysql -p -h DBSERVER dbname < dbname.sql The above assumes that your database name on our system is "dbname" and the dumpfile that you uploaded was named "dbname.sql". Replace those with your correct database name and dumpfile filename. Also replace DBSERVER with your correct database server name. ###### SET OLD PASSWORD Reset the password to pre-4.1 style for each user that needs to use a pre-4.1 client program. This can be done using the SET PASSWORD statement and the OLD_PASSWORD() function: mysql> SET PASSWORD FOR ‘some_user’@’some_host’ = OLD_PASSWORD(‘newpwd’);
mysql> FLUSH PRIVILEGES;

Substitute the password you want to use for “newpwd” in the preceding examples. MySQL cannot tell you what the original password was, so you’ll need to pick a new one.

######
Drop database

Definition: The drop database command is used when you no longer need one of the SQL databases on your server. It will remove it permanently. It is phrased as: drop database [DatabaseName];
Examples: This will remove the database ‘Dresses’ from the MySQL server:

mysql> drop database Dresses;

BibleQuiz 10.000 downloads

Since the launch of BibleQuiz, back in 15 November 2008, it was downloaded over 10.000 times. Wow! :). So a very special thanks to everyone who’s been downloading, playing and commenting this game.

I personally think that this game needs a lot of more quiz questions. Who can help me with this work. I also search for someone who can translate the existing English questions to Germans, French and Spanish. Who can help me with this! Reactions can be send to info@plaatsoft.nl Many thanks in advance.

Official download count

Homebrew Browser 7.372 times
My website 683 times
Other websites around the world +/- 1.946 times
Total +/- 10.001 times

SpaceBubble 10.000 downloads

Since the launch of SpaceBubble, less then three months ago, it was downloaded over 10.000 times. Wow! 😆 So a very special thanks to everyone who’s been downloading, playing and commenting this game.

Official download count

Homebrew Browser 7.496 times
My website 994 times
Other websites around the world +/- 1.501 times
Total +/- 10.001 times

Progress report TowerDefence

Hello Everybody,

After four weeks of silence, here by a short update about the game build progress. The design phase is ready, most graphics are also ready. Building the game engine is behide planning. I think it will take at least two more months to finish everything. Main delay is my work and family live. Two weeks ago I was in India for a business visit. Spin off of the visit is lots of work.

Best Regards, wplaat

RedSquare 10.000 downloads

Since the launch of RedSquare, back in 20 December 2008, it was downloaded over 10.000 times. Wow! :). So a very special thanks to everyone who’s been downloading, playing and commenting this game.

Official Count

Homebrew Browser 7.802 times
My website 1.112 times
Other websites around the world +/- 1.100 times
Total +/- 10.014 times

GRRLIB 4.0 freetype support

In this post i have add information how to add freetype library support to GRRLIB 4.0 library

Add the following source code section in the upper part of the GRRLIB 4.0 C file.

#include &quot;font_ttf.h&quot;

#define DEFAULT_FIFO_SIZE (256 * 1024)

u32 fb = 0;
static void *xfb[2] = { NULL, NULL};
GXRModeObj *rmode;
void *gp_fifo = NULL;

/******************************************************************************/
/**** FREETYPE START ****/
/* This is a very rough implementation if freetype using GRRLIB */

#include  /* I presume you have freetype for the Wii installed */
#include FT_FREETYPE_H

static FT_Library ftLibrary;
static FT_Face ftFace;

void *fontTempLayer=NULL;
void *fontTexture=NULL;

/* Static function prototypes */
static void BitmapTo4x4RGBA(const unsigned char *src, void *dst, const unsigned int width, const unsigned int height);
static bool BlitGlyph(FT_Bitmap *bitmap, int offset, int top, int color) ;

extern void GRRLIB_InitFreetype(void)
{
	unsigned int error = FT_Init_FreeType(&amp;amp;ftLibrary);
	if (error)
	{
		exit(0);
	}

	error = FT_New_Memory_Face(ftLibrary, font_ttf, font_ttf_size, 0, &amp;amp;ftFace);
	if (error == FT_Err_Unknown_File_Format)
	{
		exit(0);
	}
	else if (error)
	{
		/* Some other error */
		exit(0);
	}
}

extern void GRRLIB_initTexture(void)
{
   // Clear previous video frame buffer
   if (fontTexture!=NULL) free(fontTexture);

   fontTempLayer = (void*) calloc(1, 640 * 480 * 4);

   if (fontTempLayer == NULL)
   {
	  /* Oops! Something went wrong! */
	  exit(0);
   }
}

extern void GRRLIB_Printf2(int x, int y, const char *string, unsigned int fontSize, int color)
{
	unsigned int error = 0;
	int penX = 0;
	int penY = fontSize;
	FT_GlyphSlot slot = ftFace-&amp;gt;glyph;
	FT_UInt glyphIndex = 0;
	FT_UInt previousGlyph = 0;
	FT_Bool hasKerning = FT_HAS_KERNING(ftFace);

    error = FT_Set_Pixel_Sizes(ftFace, 0, fontSize);
	if (error)
	{
		/* Failed to set the font size to the requested size.
		 * You probably should set a default size or something.
		 * I'll leave that up to the reader. */
		 FT_Set_Pixel_Sizes(ftFace, 0, 12);
	}

	/* Convert the string to UTF32 */
	size_t length = strlen(string);
	wchar_t *utf32 = (wchar_t*)malloc(length * sizeof(wchar_t));
	length = mbstowcs(utf32, string, length);

	/* Loop over each character, drawing it on to the 4, until the
	 * end of the string is reached, or until the pixel width is too wide */
	unsigned int loop = 0;
	for (loop = 0; loop &amp;lt; length; ++loop)
    {
		glyphIndex = FT_Get_Char_Index(ftFace, utf32[ loop ]);

		/* To the best of my knowledge, none of the other freetype
		 * implementations use kerning, so my method ends up looking
		 * slightly better :) */
		if (hasKerning &amp;amp;&amp;amp; previousGlyph &amp;amp;&amp;amp; glyphIndex)
		{
			FT_Vector delta;
			FT_Get_Kerning(ftFace, previousGlyph, glyphIndex, FT_KERNING_DEFAULT, δ);
			penX += delta.x &amp;gt;&amp;gt; 6;
		}

		error = FT_Load_Glyph(ftFace, glyphIndex, FT_LOAD_RENDER);
		if (error)
        {
			/* Whoops, something went wrong trying to load the glyph
			 * for this character... you should handle this better */
			continue;
		}

		if (BlitGlyph(&amp;amp;slot-&amp;gt;bitmap, penX + slot-&amp;gt;bitmap_left+x, penY - slot-&amp;gt;bitmap_top+y, color) == true)
		{
			/* The glyph was successfully blitted to the buffer, move the pen forwards */
			penX += slot-&amp;gt;advance.x &amp;gt;&amp;gt; 6;
			previousGlyph = glyphIndex;
		}
		else
		{
			/* BlitGlyph returned false, the line must be full */
			free(utf32);
			return;
		}
	}

	free(utf32);
}

/* Returns true if the character was draw on to the buffer, false if otherwise */
static bool BlitGlyph(FT_Bitmap *bitmap, int offset, int top, int color)
{
	int bitmapWidth = bitmap-&amp;gt;width;
	int bitmapHeight = bitmap-&amp;gt;rows;

	if (offset + bitmapWidth &amp;gt; 640)
	{
		/* Drawing this character would over run the buffer, so don't draw it */
		return false;
	}

	/* Draw the glyph onto the buffer, blitting from the bottom up */
	/* CREDIT: Derived from a function by DragonMinded */
	unsigned char *p = fontTempLayer;
	unsigned int y = 0;
	for (y = 0; y &amp;lt; bitmapHeight; ++y)
	{
		int sywidth = y * bitmapWidth;
		int dywidth = (y + top) * 640;

		unsigned int column = 0;
		for (column = 0; column &amp;lt; bitmapWidth; ++column)
        {
			unsigned int srcloc = column + sywidth;
			unsigned int dstloc = ((column + offset) + dywidth) &amp;lt;&amp;lt; 2;

			/* Copy the alpha value for this pixel into the texture buffer */
			p[ dstloc + 0 ] = (color &amp;amp; 0xff);
			p[ dstloc + 1 ] = ((color &amp;gt;&amp;gt; 8) &amp;amp; 0xff);
			p[ dstloc + 2 ] = ((color &amp;gt;&amp;gt; 16) &amp;amp; 0xff);
			p[ dstloc + 3 ] = (bitmap-&amp;gt;buffer[ srcloc ]);
		}
	}

	return true;
}

/* Render the text string to a 4x4RGBA texture, return a pointer to this texture */
extern void* GRRLIB_GetTexture(void)
{
	/* Create a new buffer, this time to hold the final texture
	 * in a format suitable for the Wii */
	fontTexture = memalign(32, 640 * 480 * 4);

	/* Convert the RGBA temp buffer to a format usuable by GX */
	BitmapTo4x4RGBA(fontTempLayer, fontTexture, 640, 480);
	DCFlushRange(fontTexture, 640 * 480 * 4);

	/* The temp buffer is no longer required */
	free(fontTempLayer);

	return fontTexture;
}

static void BitmapTo4x4RGBA(const unsigned char *src, void *dst, const unsigned int width, const unsigned int height)
{
	unsigned int block = 0;
	unsigned int i = 0;
	unsigned int c = 0;
	unsigned int ar = 0;
	unsigned int gb = 0;
	unsigned char *p = (unsigned char*)dst;

	for (block = 0; block &amp;lt; height; block += 4) {
		for (i = 0; i &amp;lt; width; i += 4) {
			/* Alpha and Red */
			for (c = 0; c &amp;lt; 4; ++c) {
				for (ar = 0; ar &amp;lt; 4; ++ar) {
					/* Alpha pixels */
					*p++ = src[(((i + ar) + ((block + c) * width)) * 4) + 3];
					/* Red pixels */
					*p++ = src[((i + ar) + ((block + c) * width)) * 4];
				}
			}

			/* Green and Blue */
			for (c = 0; c &amp;lt; 4; ++c) {
				for (gb = 0; gb &amp;lt; 4; ++gb) {
					/* Green pixels */
					*p++ = src[(((i + gb) + ((block + c) * width)) * 4) + 1];
					/* Blue pixels */
					*p++ = src[(((i + gb) + ((block + c) * width)) * 4) + 2];
				}
			}
		} /* i */
	} /* block */
}

inline void GRRLIB_DrawImg2(f32 xpos, f32 ypos, u16 width, u16 height, u8 data[], float degrees, float scaleX, f32 scaleY, u8 alpha )
{
   GXTexObj texObj;

	GX_InitTexObj(&amp;amp;texObj, data, width,height, GX_TF_RGBA8,GX_CLAMP, GX_CLAMP,GX_FALSE);
	//GX_InitTexObjLOD(&amp;amp;texObj, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, 0, 0, GX_ANISO_1);
	GX_LoadTexObj(&amp;amp;texObj, GX_TEXMAP0);

	GX_SetTevOp (GX_TEVSTAGE0, GX_MODULATE);
  	GX_SetVtxDesc (GX_VA_TEX0, GX_DIRECT);

	Mtx m,m1,m2, mv;
	width *=.5;
	height*=.5;
	guMtxIdentity (m1);
	guMtxScaleApply(m1,m1,scaleX,scaleY,1.0);
	Vector axis =(Vector) {0 , 0, 1 };
	guMtxRotAxisDeg (m2, &amp;amp;axis, degrees);
	guMtxConcat(m2,m1,m);

	guMtxTransApply(m,m, xpos+width,ypos+height,0);
	guMtxConcat (GXmodelView2D, m, mv);
	GX_LoadPosMtxImm (mv, GX_PNMTX0);

	GX_Begin(GX_QUADS, GX_VTXFMT0,4);
  	GX_Position3f32(-width, -height,  0);
  	GX_Color4u8(0xFF,0xFF,0xFF,alpha);
  	GX_TexCoord2f32(0, 0);

  	GX_Position3f32(width, -height,  0);
 	GX_Color4u8(0xFF,0xFF,0xFF,alpha);
  	GX_TexCoord2f32(1, 0);

  	GX_Position3f32(width, height,  0);
	GX_Color4u8(0xFF,0xFF,0xFF,alpha);
  	GX_TexCoord2f32(1, 1);

  	GX_Position3f32(-width, height,  0);
	GX_Color4u8(0xFF,0xFF,0xFF,alpha);
  	GX_TexCoord2f32(0, 1);
	GX_End();
	GX_LoadPosMtxImm (GXmodelView2D, GX_PNMTX0);

	GX_SetTevOp (GX_TEVSTAGE0, GX_PASSCLR);
  	GX_SetVtxDesc (GX_VA_TEX0, GX_NONE);

}

/**** WVDP: FREETYPE END ****/
/******************************************************************************

Add the following part in the GRRLIB.h file

/**** WVDP: FREETYPE START ****/
extern void GRRLIB_InitFreetype();
extern void GRRLIB_initTexture(void);
extern void GRRLIB_Printf2(int x, int y, const char *string, unsigned int fontSize, int color);
extern void* GRRLIB_GetTexture(void);
inline void GRRLIB_DrawImg2(f32 xpos, f32 ypos, u16 width, u16 height, u8 data[], float degrees, float scaleX, f32 scaleY, u8 alpha );
/**** WVDP: FREETYPE END ****/

For example how to use this extension, please download the RedSquare source code.
Good Luck with it ❗ If you have any questions, please post a comment.

Wii BibleQuiz 0.92

Today I released a new version of BibleQuiz. The following changes were made:

13/03/2009 Version 0.92
– Upgrade GRRLIB graphical render engine from v3.0 to v4.0.
– Improve intro screens.
– Added fps (frame-per-second) information on all screens.
– Added screenshot functionality with plus button.
– Pictures are store on the SdCard in the following directory sd:/apps/bibleQuiz
– Build game with libogc 1.7.1 and devkitPPC r16 compiler.

Download

Click here for more information and the download link.

Wii SpaceBubble 0.9

Today I released a new version of SpaceBubble. The following changes were made:

09-03-2009 Version 0.9
– Upgrade GRRLIB graphical render engine from v3.0 to v4.0.
– Improve intro screens.
– Added fps (frame-per-second) information on all screens.
– Added screen shot functionality. Press the plus button to make a screen shot picture.
– Pictures are stored on the SD Card in the following directory sd:/apps/SpaceBubble
– Build game with libogc 1.7.1 and devkitPPC r16 compiler.

Wii RedSquare 0.91

Today I released a new version of RedSquare for Nitendo Wii. The following changes were made:

08/03/2009 Version 0.91
– Upgrade GRRLIB graphical render engine from v3.0 to v4.0.
– Improve intro screens.
– Added play time information on game screen.
– Added fps (frame-per-second) information on all screens.
– Added screen shot functionality. Press the plus button to make a screen shot picture.
– Pictures are stored on the SD Card in the following directory sd:/apps/RedSquare
– Build game with libogc 1.7.1 and devkitPPC r16 compiler.

Note:
All my open issues with new GRRLIB library are solved. Thanks NoNameNo and Xane

Click for more information about issue 1 here. This issue is solved 😀
Click for more information about issue 2 here. This issue is solved 😀

Progress report TowerDefence

Hello everybody,

Hereby a short progress report of the design phase of the TowerDefence game. The gameboard design is all most ready. I am now concentrating on the game graphics. After this is ready i will implement the needed game logic. I am still on schedule 😆 I think the first beta release will be available half April.

Best Regards wplaat

Website upgrade

This evening i have upgraded my website.

The following changes were implemented:
– Because of a misunderstandment (1) 🙁 Google has disabled my Adsense Ads account. I hope we can resolve this issue soon. In the mean time i switched over to AdBrite Ads.
– Added AdBrite Ads banner to lower part of my website.
– Added AdBrite inline Ads.
– Added AdBrite banners to right sidebar.
– Added anti spam key word to comments input area. Reduce spam with 99%. 🙂
– Added category links to left sidebar for easy data access.
– Updated existing wordpress plugins to latest available version.

(1) My letter to Google Adsense after my account was disabled. After reading today for the first time the Terms & Conditions (During setup, two months ago, I just accepted the license agreement) I now understand want I did accidentally wrong. I was really under the impression that clicking on Ads was allowed if you are really interested in the goods/services with were offered. That was the ONLY reason that I clicked on it. I am terrible sorry that I accidentally violated with this behavior the Adsense Terms & Conditions. It was really not my intention. As you also can read on my website (www.plaatsoft.nl) all the Ads earnings are donated to a Christian non profit organization “Compassion International”. It is in no means for my own personal benefit. I hope with this background information you will reconsider to reactivated my Adsense account again. Wants again I am very sorry that I course Google (and Google customers) any problems. It was not my intention and I hope that we can restart doing business. Best Regards