Monday, November 23, 2009

Adding a cancel event to the Telerik RadUpload control

I came up with the following to fire a function when the RadUpload cancel button is pressed. Replace alert('cancel pressed') as required.

<telerik:radprogressarea id="progressArea1" runat="server" />
    var cancelButton = $find('<%= progressArea1.ClientID %>')._findElement("CancelButton");
    $addHandlers(cancelButton, { "click": function() { alert('cancel pressed') } }, this);

Friday, November 20, 2009

Konami Code for lens flare in Facebook

This may be old news to some, but it's new to me.

Entering the Konami Code (UP UP DOWN DOWN LEFT RIGHT LEFT RIGHT B A ENTER) into Facebook creates a lens flare effect on scrolling and mouse clicks.

The keystrokes appear in the javascript file as var secrets=[38,38,40,40,37,39,37,39,66,65,13].

Tuesday, November 17, 2009

PS3 Gamer Tag / Portable ID from PSN

Discovered that I can use the US rather than EU Portable Id simply by logging into the us site. The US version is easier to throw in the sidebar of my layout. I did notice that the EU version shows games you were playing recently. Annoyingly is forces you to specify a Favourite game and mood.

EU

US


Get your Portable ID!

ASP.NET Property Parameter for Data Sources

When reworking an ASP.NET page I wanted to swap out a QueryStringParameter and use the value from a property instead.

I came across Joe Stevens' ASP.NET Property Parameter for Data Sources which works well.

Wednesday, November 11, 2009

Working around Adobe Download Manager issues in Firefox

With the Firefox 3.5.5 update I was prompted to update my Adobe Flash Player to version 10. I went through the process with the Adobe Download Manager but only got as far as Status "Connecting..." and then "Network error".

I found a complete download at the Adobe Flash Player Support Center. Under the Flash Player 10 section I downloaded the Adobe Flash Player 10 Update for Windows and Macintosh (ZIP, 44 MB) and installed the plugin from flash_player_update3_flash10.zip\Players\Release\Install Flash Player 10 Plugin.exe.

Tuesday, November 10, 2009

Working with Salesforce Datetimes via DBAmp

I came across some SQL today that was setting Salesforce Date/Time fields with UTC values using DBAmp, which shows Salesforce as a linked Server.

When the results were viewed in Salesforce the values were off by 8 hours when the user was set to the UTC time zone.
NOTE: I found it much easier to work with a Salesforce user where the Time Zone was set to "(GMT+00:00) Greenwich Mean Time (Europe/Dublin)". This avoided any extra conversion occuring in the Salesforce GUI.

It turns out by default (as clearly stated in the Installation Guide) that DBAmp will convert the UTC values from Salesforce to the "local timezone". This conversion is occuring for inserts as well as queries.

After setting the HKEY_LOCAL_MACHINE / Software / DBAmp/ NoTimeZoneConversion registry key to 1 and restarting SQL Server the issue went away.

Friday, November 6, 2009

Finding the largest tables in a SQL Server database

I came across this handy script by Bill Graziano - Finding the biggest tables in a database. The following is the modified version from the forums.

Run DBCC UPDATEUSAGE('database') first if things seem a bit off with the results.

/**************************************************************************************
*
*  BigTables.sql
*  Bill Graziano (SQLTeam.com)
*  graz@sqlteam.com
*  v1.11
*
**************************************************************************************/

declare @id int   
declare @type character(2)   
declare @pages int   
declare @dbname sysname
declare @dbsize dec(15,0)
declare @bytesperpage dec(15,0)
declare @pagesperMB  dec(15,0)


create table #spt_space
(
 objid  int null,
 rows  int null,
 reserved dec(15) null,
 data  dec(15) null,
 indexp  dec(15) null,
 unused  dec(15) null
)

set nocount on

-- Create a cursor to loop through the user tables
declare c_tables cursor for
select id
from sysobjects
where xtype = 'U'

open c_tables

fetch next from c_tables
into @id

while @@fetch_status = 0
begin

 /* Code from sp_spaceused */
 insert into #spt_space (objid, reserved)
  select objid = @id, sum(reserved)
   from sysindexes
    where indid in (0, 1, 255)
     and id = @id

 select @pages = sum(dpages)
   from sysindexes
    where indid < 2
     and id = @id
 select @pages = @pages + isnull(sum(used), 0)
  from sysindexes
   where indid = 255
    and id = @id
 update #spt_space
  set data = @pages
 where objid = @id


 /* index: sum(used) where indid in (0, 1, 255) - data */
 update #spt_space
  set indexp = (select sum(used)
    from sysindexes
    where indid in (0, 1, 255)
    and id = @id)
       - data
  where objid = @id

 /* unused: sum(reserved) - sum(used) where indid in (0, 1, 255) */
 update #spt_space
  set unused = reserved
    - (select sum(used)
     from sysindexes
      where indid in (0, 1, 255)
      and id = @id)
  where objid = @id

 update #spt_space
  set rows = i.rows
   from sysindexes i
    where i.indid < 2
    and i.id = @id
    and objid = @id

 fetch next from c_tables
 into @id
end


select top 25
 Table_Name = (select left(name,25) from sysobjects where id = objid),
 rows = convert(char(11), rows),
 reserved_KB = ltrim(str(reserved * d.low / 1024.,15,0) + ' ' + 'KB'),
 data_KB = ltrim(str(data * d.low / 1024.,15,0) + ' ' + 'KB'),
 index_size_KB = ltrim(str(indexp * d.low / 1024.,15,0) + ' ' + 'KB'),
 unused_KB = ltrim(str(unused * d.low / 1024.,15,0) + ' ' + 'KB'),
 idx_data_ratio = (case data when 0 then '100%' else ltrim(str(indexp*100 /data) + '%') end),
 unused_pct = (case reserved when 0 then '0%' else ltrim(str(unused * 100 /reserved) + '%') end)
  
from  #spt_space, master.dbo.spt_values d
where  d.number = 1
and  d.type = 'E'
order by reserved desc

drop table #spt_space
close c_tables
deallocate c_tables

Tuesday, November 3, 2009

Forcing the ASP.NET Web Application Designer class to update

Every now and then a designer class will not update to reflect that changes occurring in the markup (aspx/ascx). The first sign is typically the loss of IntelliSense for controls you know are on the page/control followed by "The name 'your control here' does not exist in the current context" compile errors if you progress as far as a build.

Cutting and pasting markup seems to be a fairly reliable way of breaking the designer classes.

My current preferred solution is to delete the offending designer class and then use the "Convert To Web Application" option that becomes available in solution explorer. Note that this option isn't available until you remove the out of date designer file.

Useful links: