A personal repository of technical notes. - CSC

Free Citation Web Sites

Problem
Need to accurately cite quoted sources.

Solutions
Use free cite making website

BibMe
Welcome to BibMe! The fully automatic bibliography maker that auto-fills. It's the easiest way to build a works cited page. And it's free.

"BibMe: Fast & Easy Bibliography Maker - MLA, APA, Chicago, Turabian - Free." BibMe: Fast & Easy Bibliography Maker - MLA, APA, Chicago, Turabian - Free. N.p., n.d. Web. 2 Aug. 2011.
<http://www.bibme.org/>.

EasyBib Free Bibliography Maker
The fastest way to create accurate, comprehensive works cited lists. 183,320,718 citations made to date. Now with Autocite: Cite books with just an ISBN number, and websites with just a URL.

EasyBib: Free Bibliography Maker - MLA, APA, Chicago Citation Styles. Web. 02 Aug. 2011.
<http://www.easybib.com>.

See Also
"Kinds of Sources and How to Cite Them | Using Sources | Writing at Yale | The Writing Center | Yale College." Yale University. Web. 22 Jan. 2010.
<http://www.yale.edu/bass/writing/sources/kinds/index.html>.

Updates
2011-08-02 Added BibMe reference.

ConfigurationManager.GetSection() as NameValueCollection Example

Problem
Need a custom AppSettings section in config file.

Solution
Create a custom section in config file based upon AppSettingsSection. Then use NameValueCollection to handle settings. See ConfigurationManager GetSection example below.

Note: Tested in .NET 4.0 and 2.0. If using 2.0, change the version number of type in config from 4 to 2.

<?xml version="1.0"?>
<configuration>
       <configSections>
              <sectionGroup name="customAppSettingsGroup">
                     <section name="customAppSettingsAAA" type="System.Configuration.AppSettingsSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
                     <section name="customAppSettingsBBB" type="System.Configuration.AppSettingsSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
                     <section name="customAppSettingsCCC" type="System.Configuration.AppSettingsSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
              </sectionGroup>
       </configSections>
       <customAppSettingsGroup>
              <customAppSettingsAAA>
                     <add key="KeyOneAAA" value="ValueOneAAA"/>
                     <add key="KeyTwoAAA" value="ValueTwoAAA"/>
                     <add key="KeyThreeAAA" value="ValueThreeAAA"/>
              </customAppSettingsAAA>
              <customAppSettingsBBB>
                     <add key="KeyOneBBB" value="ValueOneBBB"/>
                     <add key="KeyTwoBBB" value="ValueTwoBBB"/>
                     <add key="KeyThreeBBB" value="ValueThreeBBB"/>
              </customAppSettingsBBB>
              <customAppSettingsCCC>
                     <add key="KeyOneCCC" value="ValueOneCCC"/>
                     <add key="KeyTwoCCC" value="ValueTwoCCC"/>
                     <add key="KeyThreeCCC" value="ValueThreeCCC"/>
              </customAppSettingsCCC>
       </customAppSettingsGroup>
</configuration>

using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Configuration;
using System.Text;
using System.Web.Configuration;

public partial class ProofOfConcept_Configuration_Default : System.Web.UI.Page
{
       protected void Page_Load(object sender, EventArgs e)
       {
              StringBuilder outputStringBuilder = new StringBuilder();

              // EXAMPLE 1: Retrieve 1 custom appsettings section.

              // ConfigurationManager.GetSection() as NameValueCollection example
              // Create a custom AppSettings section in config file
              NameValueCollection settingsAAA = ConfigurationManager.GetSection("customAppSettingsGroup/customAppSettingsAAA") as NameValueCollection;
              if (settingsAAA != null && settingsAAA.Count > 0)
              {
                     // Individual setting
                     outputStringBuilder.AppendLine("Individual setting ----------");
                     outputStringBuilder.AppendLine(settingsAAA["KeyTwoAAA"]);

                     // All settings Values in section
                     outputStringBuilder.AppendLine("All settings values in section ----------");
                     foreach (string key in settingsAAA.AllKeys)
                     {
                           outputStringBuilder.AppendLine(settingsAAA[key]);
                     }

                     // All settings' Keys and Values to GridView via Dictionary.
                     Dictionary<string, string> outputDictionary = new Dictionary<string, string>(settingsAAA.Count);
                     outputDictionary.Add("[Dictionary to GridView]", "[Example]");
                     foreach (string key in settingsAAA.AllKeys)
                     {
                           outputDictionary.Add(key, settingsAAA[key]);
                     }
                     MainGridView.DataSource = outputDictionary;
                     MainGridView.DataBind();
              }

              // EXAMPLE 2: Put multiple custom appsettings sections into a single Dictionary collection.

              Dictionary<string, NameValueCollection> settingsDictionary = new Dictionary<string, NameValueCollection>();

              settingsDictionary.Add("customAppSettingsAAA", ConfigurationManager.GetSection("customAppSettingsGroup/customAppSettingsAAA") as NameValueCollection);
              settingsDictionary.Add("customAppSettingsBBB", ConfigurationManager.GetSection("customAppSettingsGroup/customAppSettingsBBB") as NameValueCollection);
              settingsDictionary.Add("customAppSettingsCCC", ConfigurationManager.GetSection("customAppSettingsGroup/customAppSettingsCCC") as NameValueCollection);

              outputStringBuilder.AppendLine("Dictionary items ----------");
              outputStringBuilder.AppendLine(settingsDictionary["customAppSettingsAAA"]["KeyTwoAAA"]);
              outputStringBuilder.AppendLine(settingsDictionary["customAppSettingsBBB"]["KeyOneBBB"]);
              outputStringBuilder.AppendLine(settingsDictionary["customAppSettingsCCC"]["KeyThreeCCC"]);

              // EXAMPLE 3: Loop through each setting of each section in a group

              Configuration webConfig = WebConfigurationManager.OpenWebConfiguration("~/ProofOfConcept/Configuration"); // NOTE: MUST INCLUDE FULL PATH TO SUBFOLDER OF WEB.CONFIG IF NECESSARY
              ConfigurationSectionGroup myGroup = webConfig.GetSectionGroup("customAppSettingsGroup");
              outputStringBuilder.AppendLine("Loop through entire group ----------");

              foreach (ConfigurationSection section in myGroup.Sections)
              {
                     outputStringBuilder.AppendLine(section.SectionInformation.SectionName);
                     NameValueCollection settings = ConfigurationManager.GetSection(section.SectionInformation.SectionName) as NameValueCollection;
                     foreach (string key in settings)
                     {
                           outputStringBuilder.AppendLine(String.Format(" {0} = {1}", key, settings[key]));
                     }
              }

              MainLiteral.Text = outputStringBuilder.ToString();
       }
}

Sample Output

Individual setting ----------
ValueTwoAAA
All settings values in section ----------
ValueOneAAA
ValueTwoAAA
ValueThreeAAA
Dictionary items ----------
ValueTwoAAA
ValueOneBBB
ValueThreeCCC
Loop through entire group ----------
customAppSettingsGroup/customAppSettingsCCC
 KeyOneCCC = ValueOneCCC
 KeyTwoCCC = ValueTwoCCC
 KeyThreeCCC = ValueThreeCCC
customAppSettingsGroup/customAppSettingsAAA
 KeyOneAAA = ValueOneAAA
 KeyTwoAAA = ValueTwoAAA
 KeyThreeAAA = ValueThreeAAA
customAppSettingsGroup/customAppSettingsBBB
 KeyOneBBB = ValueOneBBB
 KeyTwoBBB = ValueTwoBBB
 KeyThreeBBB = ValueThreeBBB

KeyValue
[Dictionary to GridView][Example]
KeyOneAAAValueOneAAA
KeyTwoAAAValueTwoAAA
KeyThreeAAAValueThreeAAA


Updates
2020-04-01 Added example 3: Loop through each setting of each section in a group
2014-05-23 Added example: All settings' Keys and Values to GridView via Dictionary.
2013-12-05 Added Example 2.
2013-11-11 Updated example code.

CGI Timeout IIS 6.0

Problem
CGI Timeout
The specified CGI application exceeded the allowed time for processing. The server has deleted the process.

See
The specified CGI application exceeded the allowed time for processing.
http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/w2000Msgs/1367.mspx?mfr=true

Solution
To increase timout:
1) Enable the Metabase Edit-While Running setting.
2) Locate metabase file:
C:\WINDOWS\system32\inetsrv\MetaBase.xml
3) Backup metabase file.
4) Edit metabase file with Notepad.
5) To double timeout value from default 5 minutes to 10 minutes, change CGITimeout="300" to CGITimeout="600".
6) Save.

References
Enabling Edit-While-Running in IIS 6.0 (IIS 6.0)
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/e6c04028-7db3-4564-9912-04e82c52d5ca.mspx?mfr=true

Editing the Metabase (IIS 6.0)
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/e643878b-67ea-4bf9-a9fd-3245b1baed64.mspx?mfr=true

CGITimeout Metabase Property (IIS 6.0)
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/c49c897e-7afa-4963-aa39-dd03920c1e9c.mspx?mfr=true

Configuring CGI Application Timeouts (IIS 6.0)
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/1cc829e2-a9fe-4885-b0a5-43a6d14e1961.mspx?mfr=true

Overview of the IIS 6.0 Metabase (IIS 6.0)
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/6929e089-c495-4ac8-8db0-b069b349b7ba.mspx?mfr=true

Delete SQL SERVER Database Transaction Log

Problem
- Unable to modify table.
The transaction log for database 'MyDatabase' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases

Solution
For detailed log backup solutions, see links under References below.

To delete an unneeded log on a development server:

BACKUP LOG MyDatabase WITH TRUNCATE_ONLY
DBCC SHRINKFILE(MyDatabase_Log, 2)


To determine log file name used as parameter with SHRINKFILE:

In Microsoft SQL Server Management Studio
  1. Right-click Object Explorer/MyDatabase
  2. Click Properties
  3. Click Select a page/Files
  4. See Database files: for name of log file.

References
BACKUP (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms186865(SQL.90).aspx

DBCC SHRINKFILE (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms189493(SQL.90).aspx

Troubleshooting a Full Transaction Log (Error 9002)
http://msdn.microsoft.com/en-us/library/ms175495(SQL.90).aspx

How to use the DBCC SHRINKFILE statement to shrink the transaction log file in SQL Server 2005
http://support.microsoft.com/kb/907511

SQL SERVER - Shrinking Truncate Log File - Log Full « Journey to SQL Authority with Pinal Dave
http://blog.sqlauthority.com/2006/12/30/sql-server-shrinking-truncate-log-file-log-full/

The transaction log for database 'mydatabase' is full. To find out why space in the log cannot be reused, see the log_reuse_wait : Transact-SQL : SQL Server : MSDN Forums
http://social.msdn.microsoft.com/forums/en-US/transactsql/thread/f3467f88-8657-439f-b422-00e4a0dd14ab/