- Netcraft is one of the oldest sites devoted to tracking technology on the Internet. Their service provides a site report that can tell you what web-server a site is running on, host info, uptime etc and also identify related subdomains.
- BuiltWith lists technologies used by a specified site. As they profile thousands of sites, BuiltWith Trends provides consolidated information about the most popular technologies used on the web.
- Snoopy is a bookmarklet for snooping on web pages. Snoopy can 'sniff' out of the page, such as the doctype, what JS libraries are used in the page, what analytics, what font embedding technique is used, etc. I found it interesting that it also shows the generated source which can be useful to web developers for debugging.
Monday, 20 February 2012
Free online services to find what a site is running on
Posted on 09:56 by Unknown
Saturday, 11 February 2012
Online IDEs for C# - frill free Visual Studio alternatives
Posted on 22:41 by Unknown
Got a quick C# snippet to try out but don't want to use Visual Studio or don't have the resources on your computer right-away? There are some great desktop alternatives to VS to run snippets but did you know, there are also online IDEs for running .NET code:
This type of web applications that allow their users to upload snippets of text, usually samples of source code, for public viewing, are called Pastebins. There are plenty of Pastebins now, but the above list lets you run C# programs.
Also see:
Collaborative JavaScript debugging tools - jsFiddle & JS Bin
This type of web applications that allow their users to upload snippets of text, usually samples of source code, for public viewing, are called Pastebins. There are plenty of Pastebins now, but the above list lets you run C# programs.
Also see:
Collaborative JavaScript debugging tools - jsFiddle & JS Bin
Friday, 10 February 2012
Beware of breaking changes in jQuery library versions
Posted on 22:37 by Unknown
I often re-use old code because it's mostly bug free and has withstood the test of time.
I recently copied a jQuery snippet from a perfectly working old project and was shocked to find that a particular piece of AJAX functionality wasn't working anymore. It turned out that there was a breaking change in the jQuery.ajax() method in jQuery library version 1.5 and the code was failing because the original sample ran an older version of jQuery (1.4.2)!
The jQuery Blog appears to be the official place where breaking changes are announced along with the news of new releases.
Some jQuery plugins too will only work with a specific version of the jQuery library.
Related:
jQuery videos for ASP.NET developers
Free JavaScript & jQuery learning resources
I recently copied a jQuery snippet from a perfectly working old project and was shocked to find that a particular piece of AJAX functionality wasn't working anymore. It turned out that there was a breaking change in the jQuery.ajax() method in jQuery library version 1.5 and the code was failing because the original sample ran an older version of jQuery (1.4.2)!
The jQuery Blog appears to be the official place where breaking changes are announced along with the news of new releases.
Some jQuery plugins too will only work with a specific version of the jQuery library.
Related:
jQuery videos for ASP.NET developers
Free JavaScript & jQuery learning resources
Monday, 6 February 2012
Just using stored procedures doesn't prevent SQL Injection; use parameterized stored procedures
Posted on 21:47 by Unknown
This answer in dba.stackexchange.com puts in nicely -
The OWASP wiki has a more detailed explanation
The Stack Exchange family of websites lets you sort & view top voted questions in a specific area of interest identified through tags. They provide a RSS feed that you can keep following through a RSS Feed Reader like Google Reader, to stay abreast of hot questions in your favorite programming area.
The RSS feed for the top voted questions with the sql-injection tag on dba.stackexchange.com looks like this - http://dba.stackexchange.com/feeds/tag?tagnames=sql-injection&sort=votes
Whether you use SQL statements or stored procedure doesn't matter. What matters is whether your SQL uses parameters or concatenated strings. Parameters prevent SQL injection; concatenated strings allow SQL injection.
The OWASP wiki has a more detailed explanation
The Stack Exchange family of websites lets you sort & view top voted questions in a specific area of interest identified through tags. They provide a RSS feed that you can keep following through a RSS Feed Reader like Google Reader, to stay abreast of hot questions in your favorite programming area.
The RSS feed for the top voted questions with the sql-injection tag on dba.stackexchange.com looks like this - http://dba.stackexchange.com/feeds/tag?tagnames=sql-injection&sort=votes
Wednesday, 1 February 2012
Sample SQL Server database scripts
Posted on 12:21 by Unknown
From my old notes - a list of sample database scripts (.SQL files) that you can use for your SQL Server experiments:
- Pubs
- Northwind (download link: archive.msdn.microsoft.com)
- BBC Countries Dataset
- CIA World Factbook
- Nobel Prize Winners
- Music
- Movie Database
- ACME products
- Top of the Pops
- Musician
- Southwind (download link: SQLzoo.net)
- WordNet lexical database from Princeton University (download link: packaged as a SQL Server script by ObjectGraph )
- Stack Exchange dump of public data
Also see:
Sunday, 29 January 2012
Notes from Pluralsight course - SQL Server Questions and Answers
Posted on 09:45 by Unknown
In the Pluralsight course "SQL Server Questions and Answers", Pinal & Vinod debunk some SQL Server misconceptions with examples and highlight uncommon facts -
- Use SCOPE_IDENTITY() instead of @@IDENTITY or IDENT_CURRENT("tablename") to get the latest IDENTITY value for the table in the session
- @@IDENTITY returns the last IDENTITY value produced on a connection
- SCOPE_IDENTITY() returns the last IDENTITY value produced on a connection (explicity created by you rather than a trigger) and by a statement in the same scope
- IDENT_CURRENT("tablename") returns the last IDENTITY value produced in a table, regardless of the connection
- Identity column value can be positive or negative
- Identity column can be reseeded with DBCC CHECKIDENT command
- Deleting records from table using DELETE does not reset Identity values whereas deleting records from table using TRUNCATE resets Identity values.
- TRUNCATE statements are logged and can be part of transaction. Such transactions can be rolled back.
- Executing TRUNCATE is not possible when a table is referenced by a foreign key or if the table is used in replication or with Indexed views
- WHERE can be used with SELECT, DELETE, UPDATE statements whereas HAVING is used along with GROUP BY clause in a SELECT statement
- The order of the conditions in the WHERE clause does not affect index used. This can be verified from the Execution plan.
- If parenthesis is used with a combination of OR & AND conditions, the result & index usage may vary
- Table variables & Temporary tables both exist in TempDB
- Table variables too can have a clustered index but they do not participate in the Transaction context.
- A Table variable cannot be assigned to another Table variable
- A Table variable cannot be truncated
- Stored procedures are not compiled when created.
- Stored procedures are compiled on first run & this can be verified by watching the SP:CacheInsert event in Profiler.
- Using Filtered Index (uses WHERE in an UNIQUE INDEX) which is new in SQL Server 2008, it is possible to have multiple nulls even when UNIQUE constraint is imposed.
- In SQL Server 2008, date and time can be stored independent of each other in a db using the DATE & TIME datatypes
- DateTime2 datatype has a precision of 100th of a nanosecond.
- Precision of SmallDateTime datatype is 1 minute
- Multiple UNIQUE constraints can be defined on a table
- A quick way to populate table rows - CREATE TABLE Test (id INT IDENTITY(1,1), Long_Name CHAR(7500) DEFAULT 'dummy')
- INSERT INTO Test DEFAULT VALUES; GO 15; --inserts 15 rows
- fn_dblog is an undocumented system UDF that lets you to read from your transaction log
- Lock duration is dependent on the ISOLATION LEVEL (READ COMMITTED, READ UNCOMMITTED, REPEATABLE READ, SERIALIZABLE)
- When a nested transaction is rolled back it always rolls back to the outermost BEGIN TRANSACTION statement (unless SAVEPOINT is used)
- DENY takes precedence over GRANT except at a column level GRANT
- Blocked process report Event under Error & Warnings section of Events Selection tab in the Trace Properties dialog box in Profiler helps in analyzing Blocking issues
- Recent Expensive Queries tab within Activity Monitor in SSMS shows queries that you can optimize.
Saturday, 14 January 2012
Explore console.log if you use JavaScript alert extensively for debugging
Posted on 23:00 by Unknown
The JavaScript alert method is something that most web developers use to debug their code. However, now with all popular browsers incorporating Developer tools within them, there are easier ways to debug client-side code. Firebug is an optional add-on for Firefox that adds richer features to those natively available & probably the motivator for browsers to develop their own Developer tools. I guess, it was IE that started using F12 as keyboard shortcut to start up Developer tools and now that's synonymous with Developer tools on almost all browsers.
Within the Developer tools, a Console panel exists for executing script statements on-the-fly. You can make use of Console methods to expose information that is flowing through your scripts. The console.log method can be used as an alternative to the obtrusive JavaScript alert method to track what's going on within your code without having to click OK for every dialog box that alert throws up. This will work only if you have the Console opened though.
So to remove your debugging code when you deploy to production, use this:
if ( window.console ) {
// console is available
}
While console.log is one of the more common methods supported in popular browsers(IE, Firefox Firebug, Chrome, Safari), there are other methods as well for which support may vary -
Ctrl+Shift+J shortcut lets you jump to the Console panel in Chrome.
Within the Developer tools, a Console panel exists for executing script statements on-the-fly. You can make use of Console methods to expose information that is flowing through your scripts. The console.log method can be used as an alternative to the obtrusive JavaScript alert method to track what's going on within your code without having to click OK for every dialog box that alert throws up. This will work only if you have the Console opened though.
So to remove your debugging code when you deploy to production, use this:
if ( window.console ) {
// console is available
}
While console.log is one of the more common methods supported in popular browsers(IE, Firefox Firebug, Chrome, Safari), there are other methods as well for which support may vary -
- console.info
- console.warn
- console.error
- console.assert
Ctrl+Shift+J shortcut lets you jump to the Console panel in Chrome.
Subscribe to:
Posts (Atom)