Superdopey’s Techblog

29/03/2011
by Ralph de Ruijter
0 comments

An attempt was made to load a program with an incorrect format

De volgende foutmelding kreeg ik vandaag:Could not load file or assembly … An attempt was made to load a program with an incorrect format.Na wat onderzoek kwam ik erachter dat  deze melding zich voordoet als een .NET project is geconfigureerd is om gecompileerd te worden voor x86 (target platform).

Dit kan je als volgt aanpassen:

  • Open de project properties window.
  • Selecteer de Build tab
  • Verander de ‘Platform target’ optie naar ‘Any CPU’
  • Sla de wijzigingen op
  • Compileer het project

Als je je dit voor meerdere .NET projecten moet aanpassen kan je dit in een keer doen voor alle projecten via Build > Configuration Manager.

03/02/2011
by Ralph de Ruijter
4 Comments

Vertical text in non-IE browsers.

Het tonen van verticale tekst via CSS is alleen weggelegd voor IE Browsers middels de volgende CSS3 regels:


writing-mode: tb-rl;
filter: flipv fliph;

Dit is een mooie manier om bijvoorbeeld tabel headers verticaal weer te geven. Maar helaas wordt deze CSS regel tot nu toe alleen toegepast in IE browsers. Om dit ook in non-IE browsers mogelijk te maken, gebruikt men vaak dynamisch gegenereerde images met de gewenste tekst.

Dit werkt natuurlijk ook maar het zorgt wel voor extra belasting op de webserver, tevens is dit lastig te onderhouden. Op zoek naar een betere oplossing, kwam ik een oplossing tegen die gebruik maakt van een statisch svg object met daarin een javascript welke de verticale text zet. Dit is al een betere oplossing alleen het aanroepen van de javascript binnen het svg object is niet erg netjes. Daarnaast moet op elke plek waar je verticale tekst wil gebruiken de svg toevoegen via de <embed> tag.

De oplossing voor dit probleem heb ik gevonden door met behulp van de jQuery SVG plugin deze svg zelf te genereren:


function SetVerticalText() {
var verticalTexts = $(".verticalText");

verticalTexts.each(function() {
var text = $(this).text();
$(this).text("");

if (!$.browser.msie) {
$(this).append("<div class='svgContainer'></div>");
$(this).find(".svgContainer").svg();
var svg = $(this).find(".svgContainer").svg('get');
svg.text(null, -48, 12, text, { transform: 'rotate(270, 50, 50)', 'font-family': 'Arial', 'font-size': '10', 'letter-spacing': '2' });
}
else {
$(this).append("<span class='verticalTextSpan'>" + text + "</span>");
}
});
}

Hier bij geef ik alle tekst elementen die ik verticaal wil weergeven de CSS class .verticalText bijvoorbeeld in mijn table headers:


<table cellpadding="0" cellspacing="0" class="statusTable width700" >
<tr>
<td class="labelCell">
NFP-SC
</td>
<td class="verticalText">
Digitaal initieel
</td>
<td class="verticalText">
Digitaal ingediend
</td>
<td class="verticalText">
Papier ingediend
</td>
<td class="verticalText">
Direct afgewezen
</td>
</tr>
</table>

Wanneer ik nu de SetVerticalText() aanroep, wordt er voor alle non-IE browsers een <div class=’svgContainer’></div> toegevoegd. Vervolgens wordt er middels de jQuery SVG plugin een svg object aangemaakt met daarin de verticale tekst.

Voor IE-browsers wordt er een <span class=’verticalTextSpan’></span> tag toegevoegd met daarin de verticale tekst.

Een demo van deze techniek.

svgDemo Source (445)

05/01/2011
by Ralph de Ruijter
0 comments

Moet een website er in elke browser hetzelfde uitzien?

Een interessante kijk op browser support:

If a web browser is defective, causing errors in the display or performance of the page, should the page developer struggle to hide the browser’s defects, or should the defects be revealed in hope of creating market pressure to force the browser maker to make good? By which approach is humanity better served?

Voor steeds groter groeiende groep webdevelopers is dit antwoord nee.

Ik ben het wel eens met de auteur van het gelinkte artikel. Zijn mening is wat gematigder dan de quote hierboven. Op de vraag “Als je met de CSS3 tag “box-shadow” de look en feel van een site drastisch kan verbeteren maar deze wordt niet ondersteund door IE, zou je deze dan toepassen?”. Zijn antwoord hierop: Ja.

Het idee hierbij is dat gebruikers die een browser gebruiken die deze tag wel toepassen zien de versie met schaduw. Gebruikers die een browser gebruiken die de tag niet ondersteund, zien de schadow niet, maar weten eigenlijk ook niet wat ze missen. En functioneel gezien is de website hetzelfde.

Ik kan me hier goed in vinden. Tevens biedt het webdevelopers de mogelijkheid  te experimenteren met de nieuwe mogelijkheden van CSS 3 en op zo dus de vooruitgang op webgebied te stimuleren. Want als we moeten wachten totdat alle browser CSSs 3 ondersteunen dan zitten we over 5 jaar nog steeds te klooien met CSS 1.en hack om de boel te laten werken in IE.

23/08/2010
by Ralph de Ruijter
0 comments

is not a valid Win32 application

Als je op een 64 bit systeem IIS draait kan het voorkomen dat je de volgende melding te zien krijgt:

“is not a valid Win32 application. (Exception from HRESULT: 0x800700C1)”

Dit komt omdat de Application Pool die wordt gebruikt voor de website nog geen 32 bit applications toe staat. Dit kan je als volgt enablen:

Enable IIS 7 to run 32-bit applications

  1. Go to Administrative Tools, Internet Information Services (IIS) Manager

  2. Right-click on the application pool

  3. Select Advanced Settings

  4. Set ‘Enable 32-bit applications’ to True

  5. Click OK

  6. Restart the  application pool

01/07/2010
by Ralph de Ruijter
0 comments

0x80570001 (NS_ERROR_XPC_NOT_ENOUGH_ARGS)

Deze melding  ziet eruit alsof er heel wat aan de hand is, maar dat valt wel mee. De melding wordt veroorzaakt door de javascript alert() functie aan te roepen zonder een string mee te geven:


alert();

Dit gaat al een stuk beter


alert("Vergeet je tekst niet");

30/06/2010
by Ralph de Ruijter
0 comments

TF30063: You are not authorized to access Microsoft-IIS

Deze foutmelding kreeg ik vandaag een paar keer te zien, na wat googlen blijkt dat deze foutmelding wordt veroorzaakt door Selenium-RC. Die past tijdens de installatie een instelling van Internet Explorer aan.

Dit is als volgt op te lossen:

Open  Internet Explorer, ga naar “Internet Options”… “Connections” tab… “LAN Settings” knop, zet het vinkje uit voor “Use a proxy server for your LAN (These settings will not apply to dial-up or VPN connection).”

19/04/2010
by Ralph de Ruijter
0 comments

Search all tables

Als je niet weet in welke tabel een bepaalde tekst string in een SQL database staat dan kan de volgende stored procedure je verder helpen.

Deze zoekt namelijk op basis van een zoek string parameter heel je database door op zoek naar deze string en toon in welke tabellen deze voorkomt.

Deze credits voor deze stored procedure gaan naar Narayana Vyas Kondreddi


CREATE PROC SearchAllTables
(
	@SearchStr nvarchar(100)
)
AS
BEGIN

	-- Copyright © 2002 Narayana Vyas Kondreddi. All rights reserved.
	-- Purpose: To search all columns of all tables for a given search string
	-- Written by: Narayana Vyas Kondreddi
	-- Site: http://vyaskn.tripod.com
	-- Tested on: SQL Server 7.0 and SQL Server 2000
	-- Date modified: 28th July 2002 22:50 GMT


	CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))

	SET NOCOUNT ON

	DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
	SET  @TableName = ''
	SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')

	WHILE @TableName IS NOT NULL
	BEGIN
		SET @ColumnName = ''
		SET @TableName = 
		(
			SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
			FROM 	INFORMATION_SCHEMA.TABLES
			WHERE 		TABLE_TYPE = 'BASE TABLE'
				AND	QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
				AND	OBJECTPROPERTY(
						OBJECT_ID(
							QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
							 ), 'IsMSShipped'
						       ) = 0
		)

		WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
		BEGIN
			SET @ColumnName =
			(
				SELECT MIN(QUOTENAME(COLUMN_NAME))
				FROM 	INFORMATION_SCHEMA.COLUMNS
				WHERE 		TABLE_SCHEMA	= PARSENAME(@TableName, 2)
					AND	TABLE_NAME	= PARSENAME(@TableName, 1)
					AND	DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar')
					AND	QUOTENAME(COLUMN_NAME) > @ColumnName
			)
	
			IF @ColumnName IS NOT NULL
			BEGIN
				INSERT INTO #Results
				EXEC
				(
					'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630) 
					FROM ' + @TableName + ' (NOLOCK) ' +
					' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
				)
			END
		END	
	END

	SELECT ColumnName, ColumnValue FROM #Results
END