Monthly Archives: January 2015

Simple Linq Example in Visual Basic

Here is a simple example of a Linq query in Visual Basic. This code populates a list with 100 integers. It then selects all items from the list that are greater than 90 and orders that list from greatest to least. In the query portion the from t specifies that t should represent what is being selected into (which is a little confusing when it’s coupled with the “In”).

VB.Net Linq Query

        ' Delcare a list of integers (we could also use arrays, list of objects, etc).
        Dim lst As New List(Of Integer)

        ' Populate the list with 100 items
        For x As Integer = 1 To 100
            lst.Add(x)
        Next

        ' You don't have to include the IEnumerable but I like to see the exact definition of what
        ' something is in the code so it's crystal clear what I'm looking at.  We're going to select
        ' from the list for items above 90 and then sort those items from greatest to least.
        Dim query As IEnumerable(Of Integer) = From t In lst
                    Where t > 90
                    Order By t Descending

        For Each item As Integer In query
            Console.WriteLine(item)
        Next

Visual Basic 5 & 6 INI Module

The following is a Visual Basic module to read and write from a Windows INI file. This makes use of the Windows API’s GetPrivateProfileString and WritePrivateProfileString to handle fast parsing and writing to the files.

VB Code

Attribute VB_Name = "modIni"
'*************************
'  Module: INI Processing
'*************************

' Windows API to read/write from the INI File
Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

Public Function GetFromIni(mySection As String, myEntry As String, iniFile As String) As String
    Dim buf As String
    Dim myLength As Long
    
    buf = String$(256, 0)   '256 null characters    
    myLength = GetPrivateProfileString(mySection, myEntry, "", buf, 256, iniFile)    
    getFromINI = Left$(buf, myLength)
End Function

Public Function WriteToIni(mySection As String, myEntry As String, buf As String, iniFile As String) As Boolean
    Dim x As Long
    x = WritePrivateProfileString(mySection, myEntry, buf, iniFile)

    If x = vbTrue Then
        writeToINI = True
    Else
        writeToINI = False
    End If
End Function

Cannot find VBRUN300.DLL.

Scenario:

An application your using throws the following error.

Cannot find VBRUN300.DLL.

History:

“VBRUN300.dll” was one of the necessary files needed to run an application compiled under Visual Basic 3.x. Visual Basic 3.x was a 16-bit development environment that could run on operating systems as early as Windows 3.0/3.1 and continued to be supported into the 32-bit Windows OS’s as far as Windows 7.

Solution:

The first for this error is to included the necessary files in the same directory as the executable in question. Microsoft still provides these files for download at:

SQL Server 2014–Database Roles Explained

The following is a listing of database rolls in SQL Server 2014.  These also apply to SQL Server 2005, SQL Server 2008, SQL Server 2008R2 and SQL Server 2012.

  • db_accessadmin – Group members can add or remove access for logins and groups.
  • db_backupoperator – Group members can back up the database.
  • db_datareader – Group members can read all data from all user tables.
  • db_datawriter – Group members can add, delete, or change data in all user tables.
  • db_ddladmin – Group members can run any data definition language (DDL) command in a database.
  • db_denydatareader – Group members cannot read any data in the user tables within a database.  Deny permissions always take precedence over grant permissions.
  • db_denydatawriter – Group members cannot add, modify, or delete any data in the user tables within a database. Deny permissions always take precedence over grant permissions.
  • db_owner – Group members can perform all configuration and maintenance activities on the database.  db_owner permissions can also drop the database.
    db_securityadmin – Group members can modify role rolls and manage permissions.

All database users belong to the public database role unless specifically denied that permission.  Users will inherit permissions of this role which generally should be restricted.

Nintendo DS – You must link a Nintendo Network ID in order to use this software.

In order to install some of the free software packages on your or your child’s Nintendo DS you are required to link a Nintendo Network ID which can be a cumbersome process and will require a credit card to verify you are an adult. The question often arrises on whether you should create yourself an account or create your child one. The answer I will give you is that you should create an account for your child but retain the credentials for it (as well as setting up parental controls with a password and NOT storing your credit card information and instead entering it with each transaction as an extra measure of not having your child accidently spend money if they were to figure out your pin number). When creating an account Nintendo will make a one time charge of 50 cents to verify that you are a consenting adult to your childs usage.

The advantage of linking a network ID should be that you can transfer and/or re-download titles for your DS that you have previously downloaded. It also will allow you to share your account between your DS/3DS and your WiiU if you happen to own both systems.

How do I search for an image with another image in Windows?

Question:

How do I search for an image using another image as the criteria?

Answer 1:

There are a few ways. If you are looking for an exact match you can use a program that creates unique hashes based on the contents of the file that will determine with certainty that it is identical. There are many free programs available to do this. Wikipedia lists open source/free duplicate file finders:

Answer 2:

The second method involves using a program that is able to compare two photos possibly of different sizes and estimate whether they are of of the same image. This is called a “reverse image search”. For Windows as of the writing of this article there is a free package called Visipics which can do a reverse image search on your hard drive. Visipics is also reported to work under Linux utilitizing the wine virtualization software. This package can be found here: