in

SDT Community Server

SDT Forums, Blogs, Photos server.

Floating Heart

No description is bad.

November 2007 - Posts

  • MSIL


    add=Adds two values and pushes the result onto the evaluation stack.
    add.ovf=Adds two integers, performs an overflow check, and pushes the result onto the evaluation stack.
    add.ovf.un=Adds two unsigned integer values, performs an overflow check, and pushes the result onto the evaluation stack.
    and=Computes the bitwise AND of two values and pushes the result onto the evalution stack.
    arglist=Returns an unmanaged pointer to the argument list of the current method.
    beq=Transfers control to a target instruction if two values are equal.
    beq.s=Transfers control to a target instruction (short form) if two values are equal.
    bge=Transfers control to a target instruction if the first value is greater than or equal to the second value.
    bge.s=Transfers control to a target instruction (short form) if the first value is greater than or equal to the second value.
    bge.un=Transfers control to a target instruction if the the first value is greather than the second value, when comparing unsigned integer values or unordered float values.
    bge.un.s=Transfers control to a target instruction (short form) if if the the first value is greather than the second value, when comparing unsigned integer values or unordered float values.
    bgt=Transfers control to a target instruction if the first value is greater than the second value.
    bgt.s=Transfers control to a target instruction (short form) if the first value is greater than the second value.
    bgt.un=Transfers control to a target instruction if the first value is greater than the second value, when comparing unsigned integer values or unordered float values.
    bgt.un.s=Transfers control to a target instruction (short form) if the first value is greater than the second value, when comparing unsigned integer values or unordered float values.
    ble=Transfers control to a target instruction if the first value is less than or equal to the second value.
    ble.s=Transfers control to a target instruction (short form) if the first value is less than or equal to the second value.
    ble.un=Transfers control to a target instruction if the first value is less than or equal to the second value, when comparing unsigned integer values or unordered float values.
    ble.un.s=Transfers control to a target instruction (short form) if the first value is less than or equal to the second value, when comparing unsigned integer values or unordered float values.
    blt=Transfers control to a target instruction if the first value is less than the second value.
    blt.s=Transfers control to a target instruction (short form) if the first value is less than the second value.
    blt.un=Transfers control to a target instruction if the first value is less than the second value, when comparing unsigned integer values or unordered float values.
    blt.un.s=Transfers control to a target instruction (short form) if the first value is less than the second value, when comparing unsigned integer values or unordered float values.
    bne.un=Transfers control to a target instruction when two unsigned integer values or unordered float values are not equal.
    bne.un.s=Transfers control to a target instruction (short form) when two unsigned integer values or unordered float values are not equal.
    box=Converts a value type to an object reference (type O).
    br=Unconditionally transfers control to a target instruction.
    break=Signals the Common Language Infrastructure (CLI) to inform the debugger that a break point has been tripped.
    brfalse=Transfers control to a target instruction if value is false, a null reference (Nothing in Visual Basic), or zero.
    brfalse.s=Transfers control to a target instruction if value is false, a null reference, or zero.
    brtrue=Transfers control to a target instruction if value is true, not null, or non-zero.
    brtrue.s=Transfers control to a target instruction (short form) if value is true, not null, or non-zero.
    br.s=Unconditionally transfers control to a target instruction (short form).
    call=Calls the method indicated by the passed method descriptor.
    calli=Calls the method indicated on the evaluation stack (as a pointer to an entry point) with arguments described by a calling convention.
    callvirt=Calls a late-bound method on an object, pushing the return value onto the evaluation stack.
    castclass=Attempts to cast an object passed by reference to the specified class.
    ceq=Compares two values. If they are equal, the integer value 1 (int32) is pushed onto the evaluation stack; otherwise 0 (int32) is pushed onto the evaluation stack.
    cgt=Compares two values. If the first value is greater than the second, the integer value 1 (int32) is pushed onto the evaluation stack; otherwise 0 (int32) is pushed onto the evaluation stack.
    cgt.un=Compares two unsigned or unordered values. If the first value is greater than the second, the integer value 1 (int32) is pushed onto the evaluation stack; otherwise 0 (int32) is pushed onto the evaluation stack.
    ckfinite=throws ArithmeticException if value is not a finite number.
    clt=Compares two values. If the first value is less than the second, the integer value 1 (int32) is pushed onto the evaluation stack; otherwise 0 (int32) is pushed onto the evaluation stack.
    clt.un=Compares the unsigned or unordered values value1 and value2. If value1 is less than value2, then the integer value 1 (int32) is pushed onto the evaluation stack; otherwise 0 (int32) is pushed onto the evaluation stack.
    conv.i=Converts the value on top of the evaluation stack to natural int.
    conv.i1=Converts the value on top of the evaluation stack to int8, then extends (pads) it to int32.
    conv.i2=Converts the value on top of the evaluation stack to int16, then extends (pads) it to int32.
    conv.i4=Converts the value on top of the evaluation stack to int32.
    conv.i8=Converts the value on top of the evaluation stack to int64.
    conv.ovf.I=Converts the signed value on top of the evaluation stack to signed natural int, throwing OverflowException on overflow.
    conv.ovf.I1=Converts the signed value on top of the evaluation stack to signed int8 and extends it to int32, throwing OverflowException on overflow.
    conv.ovf.I1.un=Converts the unsigned value on top of the evaluation stack to signed int8 and extends it to int32, throwing OverflowException on overflow.
    conv.ovf.I2=Converts the signed value on top of the evaluation stack to signed int16 and extending it to int32, throwing OverflowException on overflow.
    conv.ovf.I2.un=Converts the unsigned value on top of the evaluation stack to signed int16 and extends it to int32, throwing OverflowException on overflow.
    conv.ovf.I4=Converts the signed value on top of the sevaluation tack to signed int32, throwing OverflowException on overflow.
    conv.ovf.I4.un=Converts the unsigned value on top of the evaluation stack to signed int32, throwing OverflowException on overflow.
    conv.ovf.I8=Converts the signed value on top of the evaluation stack to signed int64, throwing OverflowException on overflow.
    conv.ovf.I8.un=Converts the unsigned value on top of the evaluation stack to signed int64, throwing OverflowException on overflow.
    conv.ovf.I.un=Converts the unsigned value on top of the evaluation stack to signed natural int, throwing OverflowException on overflow.
    conv.ovf.U=Converts the signed value on top of the evaluation stack to unsigned natural int, throwing OverflowException on overflow.
    conv.ovf.U1=Converts the signed value on top of the evaluation stack to unsigned int8 and extends it to int32, throwing OverflowException on overflow.
    conv.ovf.U1.un=Converts the unsigned value on top of the evaluation stack to unsigned int8 and extends it to int32, throwing OverflowException on overflow.
    conv.ovf.U2=Converts the signed value on top of the evaluation stack to unsigned int16 and extends it to int32, throwing OverflowException on overflow.
    conv.ovf.U2.un=Converts the unsigned value on top of the evaluation stack to unsigned int16 and extends it to int32, throwing OverflowException on overflow.
    conv.ovf.U4=Converts the signed value on top of the evaluation stack to unsigned int32, throwing OverflowException on overflow.
    conv.ovf.U4.un=Converts the unsigned value on top of the evaluation stack to unsigned int32, throwing OverflowException on overflow.
    conv.ovf.U8=Converts the signed value on top of the evaluation stack to unsigned int64, throwing OverflowException on overflow.
    conv.ovf.U8.un=Converts the unsigned value on top of the evaluation stack to unsigned int64, throwing OverflowException on overflow.
    conv.ovf.U.un=Converts the unsigned value on top of the evaluation stack to unsigned natural int, throwing OverflowException on overflow.
    conv.r4=Converts the value on top of the evaluation stack to float32.
    conv.r8=Converts the value on top of the evaluation stack to float64.
    conv.r.un=Converts the unsigned integer value on top of the evaluation stack to float32.
    conv.u=Converts the value on top of the evaluation stack to unsigned natural int, and extends it to natural int.
    conv.u1=Converts the value on top of the evaluation stack to unsigned int8, and extends it to int32.
    conv.u2=Converts the value on top of the evaluation stack to unsigned int16, and extends it to int32.
    conv.u4=Converts the value on top of the evaluation stack to unsigned int32, and extends it to int32.
    conv.u8=Converts the value on top of the evaluation stack to unsigned int64, and extends it to int64.
    cpblk=Copies a specified number bytes from a source address to a destination address.
    cpobj=Copies the value type located at the address of an object (type &, * or natural int) to the address of the destination object (type &, * or natural int).
    div=Divides two values and pushes the result as a floating-point (type F) or quotient (type int32) onto the evaluation stack.
    div.un=Divides two unsigned integer values and pushes the result (int32) onto the evaluation stack.
    dup=Copies the current topmost value on the evaluation stack, and then pushes the copy onto the evaluation stack.
    endfilter=Transfers control from the filter clause of an exception back to the Common Language Infrastructure (CLI) exception handler.
    endfinally=Transfers control from the fault or finally clause of an exception block back to the Common Language Infrastructure (CLI) exception handler.
    initblk=Initializes a specified block of memory at a specific address to a given size and initial value.
    initobj=Initializes all the fields of the object at a specific address to a null reference or a 0 of the appropriate primitive type.
    isinst=Tests whether an object reference (type O) is an instance of a particular class.
    jmp=Exits current method and jumps to specified method.
    ldarg=Loads an argument (referenced by a specified index value) onto the stack.
    ldarga=Load an argument address onto the evaluation stack.
    ldarga.s=Load an argument address, in short form, onto the evaluation stack.
    ldarg.0=Loads the argument at index 0 onto the evaluation stack.
    ldarg.1=Loads the argument at index 1 onto the evaluation stack.
    ldarg.2=Loads the argument at index 2 onto the evaluation stack.
    ldarg.3=Loads the argument at index 3 onto the evaluation stack.
    ldarg.s=Loads the argument (referenced by a specified short form index) onto the evaluation stack.
    ldc.i4=Pushes a supplied value of type int32 onto the evaluation stack as an int32.
    ldc.i4.0=Pushes the integer value of 0 onto the evaluation stack as an int32.
    ldc.i4.1=Pushes the integer value of 1 onto the evaluation stack as an int32.
    ldc.i4.2=Pushes the integer value of 2 onto the evaluation stack as an int32.
    ldc.i4.3=Pushes the integer value of 3 onto the evaluation stack as an int32.
    ldc.i4.4=Pushes the integer value of 4 onto the evaluation stack as an int32.
    ldc.i4.5=Pushes the integer value of 5 onto the evaluation stack as an int32.
    ldc.i4.6=Pushes the integer value of 6 onto the evaluation stack as an int32.
    ldc.i4.7=Pushes the integer value of 7 onto the evaluation stack as an int32.
    ldc.i4.8=Pushes the integer value of 8 onto the evaluation stack as an int32.
    ldc.i4.m1=Pushes the integer value of -1 onto the evaluation stack as an int32.
    ldc.i4.s=Pushes the supplied int8 value onto the evaluation stack as an int32, short form.
    ldc.i8=Pushes a supplied value of type int64 onto the evaluation stack as an int64.
    ldc.r4=Pushes a supplied value of type float32 onto the evaluation stack as type F (float).
    ldc.r8=Pushes a supplied value of type float64 onto the evaluation stack as type F (float).
    ldelema=Loads the address of the array element at a specified array index onto the top of the evaluation stack as type & (managed pointer).
    ldelem.i=Loads the element with type natural int at a specified array index onto the top of the evaluation stack as a natural int.
    ldelem.i1=Loads the element with type int8 at a specified array index onto the top of the evaluation stack as an int32.
    ldelem.i2=Loads the element with type int16 at a specified array index onto the top of the evaluation stack as an int32.
    ldelem.i4=Loads the element with type int32 at a specified array index onto the top of the evaluation stack as an int32.
    ldelem.i8=Loads the element with type int64 at a specified array index onto the top of the evaluation stack as an int64.
    ldelem.r4=Loads the element with type float32 at a specified array index onto the top of the evaluation stack as type F (float).
    ldelem.r8=Loads the element with type float64 at a specified array index onto the top of the evaluation stack as type F (float).
    ldelem.ref=Loads the element containing an object reference at a specified array index onto the top of the evaluation stack as type O (object reference).
    ldelem.u1=Loads the element with type unsigned int8 at a specified array index onto the top of the evaluation stack as an int32.
    ldelem.u2=Loads the element with type unsigned int16 at a specified array index onto the top of the evaluation stack as an int32.
    ldelem.u4=Loads the element with type unsigned int32 at a specified array index onto the top of the evaluation stack as an int32.
    ldfld=Finds the value of a field in the object whose reference is currently on the evaluation stack.
    ldflda=Finds the address of a field in the object whose reference is currently on the evaluation stack.
    ldftn=Pushes an unmanaged pointer (type natural int) to the native code implementing a specific method onto the evaluation stack.
    ldind.i=Loads a value of type natural int as a natural int onto the evaluation stack indirectly.
    ldind.i1=Loads a value of type int8 as an int32 onto the evaluation stack indirectly.
    ldind.i2=Loads a value of type int16 as an int32 onto the evaluation stack indirectly.
    ldind.i4=Loads a value of type int32 as an int32 onto the evaluation stack indirectly.
    ldind.i8=Loads a value of type int64 as an int64 onto the evaluation stack indirectly.
    ldind.r4=Loads a value of type float32 as a type F (float) onto the evaluation stack indirectly.
    ldind.r8=Loads a value of type float64 as a type F (float) onto the evaluation stack indirectly.
    ldind.ref=Loads an object reference as a type O (object reference) onto the evaluation stack indirectly.
    ldind.u1=Loads a value of type unsigned int8 as an int32 onto the evaluation stack indirectly.
    ldind.u2=Loads a value of type unsigned int16 as an int32 onto the evaluation stack indirectly.
    ldind.u4=Loads a value of type unsigned int32 as an int32 onto the evaluation stack indirectly.
    ldlen=Pushes the number of elements of a zero-based, one-dimensional array onto the evaluation stack.
    ldloc=Loads the local variable at a specific index onto the evaluation stack.
    ldloca=Loads the address of the local variable at a specific index onto the evaluation stack.
    ldloca.s=Loads the address of the local variable at a specific index onto the evaluation stack, short form.
    ldloc.0=Loads the local variable at index 0 onto the evaluation stack.
    ldloc.1=Loads the local variable at index 1 onto the evaluation stack.
    ldloc.2=Loads the local variable at index 2 onto the evaluation stack.
    ldloc.3=Loads the local variable at index 3 onto the evaluation stack.
    ldloc.s=Loads the local variable at a specific index onto the evaluation stack, short form.
    ldnull=Pushes a null reference (type O) onto the evaluation stack.
    ldobj=Copies the value type object pointed to by an address to the top of the evaluation stack.
    ldsfld=Pushes the value of a static field onto the evaluation stack.
    ldsflda=Pushes the address of a static field onto the evaluation stack.
    ldstr=Pushes a new object reference to a string literal stored in the metadata.
    ldtoken=Converts a metadata token to its runtime representation, pushing it onto the evaluation stack.
    ldvirtftn=Pushes an unmanaged pointer (type natural int) to the native code implementing a particular virtual method associated with a specified object onto the evaluation stack.
    leave=Exits a protected region of code, unconditionally tranferring control to a specific target instruction.
    leave.s=Exits a protected region of code, unconditionally tranferring control to a target instruction (short form).
    localloc=Allocates a certain number of bytes from the local dynamic memory pool and pushes the address (a transient pointer, type *) of the first allocated byte onto the evaluation stack.
    mkrefany=Pushes a typed reference to an instance of a specific type onto the evaluation stack.
    mul=Multiplies two values and pushes the result on the evaluation stack.
    mul.ovf=Multiplies two integer values, performs an overflow check, and pushes the result onto the evaluation stack.
    mul.ovf.un=Multiplies two unsigned integer values , performs an overflow check , and pushes the result onto the evaluation stack.
    neg=Negates a value and pushes the result onto the evaluation stack.
    newarr=Pushes an object reference to a new zero-based, one-dimensional array whose elements are of a specific type onto the evaluation stack.
    newobj=Creates a new object or a new instance of a value type, pushing an object reference (type O) onto the evaluation stack.
    nop=Fills space if bytecodes are patched. No meaningful operation is performed although a processing cycle can be consumed.
    not=Computes the bitwise complement of the integer value on top of the stack and pushes the result onto the evaluation stack as the same type.
    or=Compute the bitwise complement of the two integer values on top of the stack and pushes the result onto the evaluation stack.
    pop=Removes the value currently on top of the evaluation stack.
    refanytype=Retrieves the type token embedded in a typed reference.
    refanyval=Retrieves the address (type &) embedded in a typed reference.
    rem=Divides two values and pushes the remainder onto the evaluation stack.
    rem.un=Divides two unsigned values and pushes the remainder onto the evaluation stack.
    ret=Returns from the current method, pushing a return value (if present) from the caller's evaluation stack onto the callee's evaluation stack.
    rethrow=Rethrows the current exception.
    shl=Shifts an integer value to the left (in zeroes) by a specified number of bits, pushing the result onto the evaluation stack.
    shr=Shifts an integer value (in sign) to the right by a specified number of bits, pushing the result onto the evaluation stack.
    shr.un=Shifts an unsigned integer value (in zeroes) to the right by a specified number of bits, pushing the result onto the evaluation stack.
    sizeof=Pushes the size, in bytes, of a supplied value type onto the evaluation stack.
    starg=Stores the value on top of the evaluation stack in the argument slot at a specified index.
    starg.s=Stores the value on top of the evaluation stack in the argument slot at a specified index , short form.
    stelem.i=Replaces the array element at a given index with the natural int value on the evaluation stack.
    stelem.i1=Replaces the array element at a given index with the int8 value on the evaluation stack.
    stelem.i2=Replaces the array element at a given index with the int16 value on the evaluation stack.
    stelem.i4=Replaces the array element at a given index with the int32 value on the evaluation stack.
    stelem.i8=Replaces the array element at a given index with the int64 value on the evaluation stack.
    stelem.r4=Replaces the array element at a given index with the float32 value on the evaluation stack.
    stelem.r8=Replaces the array element at a given index with the float64 value on the evaluation stack.
    stelem.ref=Replaces the array element at a given index with the object ref value (type O) on the evaluation stack.
    stfld=Replaces the value stored in the field of an object reference or pointer with a new value.
    stind.i=Stores a value of type natural int at a supplied address.
    stind.i1=Stores a value of type int8 at a supplied address.
    stind.i2=Stores a value of type int16 at a supplied address.
    stind.i4=Stores a value of type int32 at a supplied address.
    stind.i8=Stores a value of type int64 at a supplied address.
    stind.r4=Stores a value of type float32 at a supplied address.
    stind.r8=Stores a value of type float64 at a supplied address.
    stind.ref=Stores a object reference value at a supplied address.
    stloc=Pops the current value from the top of the evaluation stack and stores it in a the local variable list at a specified index.
    stloc.0=Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 0.
    stloc.1=Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 1.
    stloc.2=Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 2.
    stloc.3=Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 3.
    stloc.s=Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index (short form).
    stobj=Copies a value of a specified type from the evaluation stack into a supplied memory address.
    stsfld=Replaces the value of a static field with a value from the evaluation stack.
    sub=Subtracts one value from another and pushes the result onto the evaluation stack.
    sub.ovf=Subtracts one integer value from another, performs an overflow check, and pushes the result onto the evaluation stack.
    sub.ovf.un=Subtracts one unsigned integer value from another, performs an overflow check, and pushes the result onto the evaluation stack.
    switch=Implements a jump table.
    tailcall=Performs a postfixed method call instruction such that the current method's stack frame is removed before the actual call instruction is executed.
    throw=Throws the exception object currently on the evaluation stack.
    unaligned=Indicates that an address currently atop the evaluation stack might not be aligned to the natural size of the immediately following ldind, stind, ldfld, stfld, ldobj, stobj, initblk, or cpblk instruction.
    unbox=Converts the boxed representation of a value type to its unboxed form.
    volatile=Specifies that an address currently atop the evaluation stack might be volatile, and the results of reading that location cannot be cached or that multiple stores to that location cannot be suppressed.
    xor=Computes the bitwise XOR of the top two values on the evaluation stack, pushing the result onto the evaluation stack.

     
  • DbLinq Project: Linq Provider for MySql, Oracle and PostgreSQL

    http://code2code.net/DB_Linq/

    What is LINQ?

    LINQ stands for Language-Integrated Query, which allows .NET programs (e.g. C# or VB.NET) to connect to databases.

    It is an O/R (Object-Relational) mapping tool, with some similarities to Hibernate or LlblGen.  LINQ is type-safe, queries get compiled into MSIL on the fly, and your C# WHERE clauses are translated into SQL and sent to SQL server for execution. In short, it makes design of data access layers safer and faster. In C# 3.0, linq code looks like this:

     var q = from p in db.Products             
             where p.ProductName == "Pen"  
             select p.ProductID;         

    Status Update - 2007 Nov:

    1. Miguel de Icaza is considering adding this project to Mono - which required re-licensing under MIT license.
    2. Suspended Oracle support, because my Oracle box died. The Oracle provider compiles, but status is unknown.
    3. Added support for client-side enums.
    4. Partial support for stored procedures and stored functions in MySql and PostgreSQL
    5. BULK Insert support (using SqlBulkCopy) in MS provider, and multi-row insert in Mysql provider.
    6. Bug fixes in 'IS NULL/ IS NOT NULL' clauses
    7. Starting to add test cases from '101 Linq Samples' - please help (there is a C# version available also, but license says 'All Rights Reserved' - not sure if I can place it in this project). Failure rate: 18 out of 67.
    8. Preparing a 2007-Nov source code release

    How good is DB_Linq compared to Microsoft's LINQ-to-SQL?

    DB_Linq is prototype software. Simple queries should work, complex ones probably not. Microsoft LINQ-to-SQL is approaching production quality. Microsoft only supports MS Sql Server and Acces, but has nice GUI integration, has Linq-to-entities, and can call stored procedures.

    The only two things that DB_Linq does better: DB_Linq supports MySql and Postgres, and won't fall over when you try to insert tens of thousands of rows.

    Getting Started:

    1. Download source code package, compile in Visual Studio.
    2. edit and run script 'run_myMetal.bat' (or run_oraMetal or run_pgMetal) to generate a C# file representing your database
    3. include DbLinq.Mysql.dll and the new file in your project (or DbLinq.Postgres.dll etc)

    Documentation

    Linq (or DLinq) documentation can be found in the doc/ folder of your C# 3.0 installation.
    Also, here is the Linq project home page [microsoft.com].
    DB_Linq has currently no documentation.

    Also:
    Got mail from Oren from the NHibernate project. They are also working on a Linq interface, and making good progress. Oren writes:
      I have started to work on an implementation of Linq to NHibernate, you can see the current results here:
      http://www.ayende.com/Blog/archive/2007/03/17/Implementing-Linq-for-NHibernate-A-How-To-Guide--Part.aspx

  • Visual Source Safe 2005 Update CTP

    http://www.microsoft.com/downloads/details.aspx?FamilyID=faf41edd-924d-449f-aefc-9c86dd499720&displaylang=en
    http://download.microsoft.com/download/b/4/c/b4cef9ee-e157-4244-90a0-7ba5dd64f980/VS80-KB939808-X86-ENU.exe

    Overview

    Fixes in the GDR include stability, performance, data integrity, and usability enhancements in many areas of the product.
    It also improves compatibility with Visual Studio 2008 and Windows Vista™. A comprehensive list of fixes that were previously published in the Microsoft Knowledgebase can be found by following the appropriate link under Additional Information on this page.

     Top of page

    System Requirements

    • Supported Operating Systems: Windows 2000 Service Pack 4; Windows Server 2003 Service Pack 2; Windows Server 2003 Service Pack 2 x64 Edition; Windows Vista Business; Windows Vista Business 64-bit edition; Windows Vista Enterprise; Windows Vista Enterprise 64-bit edition; Windows Vista Home Basic; Windows Vista Home Basic 64-bit edition; Windows Vista Home Premium; Windows Vista Home Premium 64-bit edition; Windows Vista Starter; Windows Vista Ultimate; Windows Vista Ultimate 64-bit edition; Windows XP Service Pack 2
    • Required Software: Visual Source Safe 2005

     Top of page

    Instructions

    This GDR prerelease may be installed before or after installing Visual Studio.
    It is recommended that this GDR prerelease be installed before using SourceSafe integration inside Visual Studio 2008 (formerly codenamed “Orcas”). If you install Orcas, you must then reregister tdnamespaceextension.dll. Once fully installed, this GDR is compatible with all Orcas releases Beta 1 and later.

    The GDR prerelease only needs to be installed once.

    The GDR prerelease can be installed over any existing SourceSafe 2005 hotfixes. In addition, future hotfixes will contain all of the changes from this GDR (cumulative). Older builds will never overwrite newer builds.

    It is recommended that you backup your SourceSafe databases before installing this GDR prerelease


    To install this update, we recommend that you follow these steps:

    1. Save the download package on your computer.
    2. Double-click the download package to run the installer.
    Posted Nov 26 2007, 03:34 PM by wicky with no comments
    Filed under:
  • How to Rename or Move Datafiles and Logfiles

    文档 ID: 注释:115424.1
    主题: How to Rename or Move Datafiles and Logfiles
    类型: BULLETIN
    状态: PUBLISHED
    内容类型: TEXT/PLAIN
    创建日期: 18-JUL-2000
    上次修订日期: 10-JUN-2004

    PURPOSE 

    In many situations, a datafile or logfile must be renamed inside Oracle.

    Whereas the contents of the file remain valid, you need to define a new

    physical name or location for it. For example:

    - You want to move a database file to a different disk for performance or

    maintenance reasons.

    - You have restored a datafile from backup, but the disk where it should

    normally be placed has crashed and you need to relocate it to a different

    disk.

    - You have moved or renamed a datafile at operating system level but forgot to

    rename it within Oracle. At startup, you get ORA-01157 and ORA-01110. If the

    database is up and you try to shut it down normal or immediate, you get

    ORA-01116 ad ORA-01110.

    - You have multiple databases on the same machine and you need to rename

    certain database files to prevent collision and confusion.

    SCOPE & APPLICATION

    This bulletin gives instructions to:

    I. RENAME OR MOVE DATAFILE(S) WITH THE DATABASE OPEN

    II. RENAME AND OR MOVE DATAFILE(S) WITH THE DATABASE SHUT DOWN

    III. RENAME AND OR MOVE A LOGFILE

    How to Rename or Move Datafiles and Logfiles:

    =============================================

    NOTE: To rename or relocate datafiles in the SYSTEM tablespace you must use

    option II, 'Renaming or Moving a Datafile with the Database Shut Down',

    because you cannot take the SYSTEM tablespace offline.

    I. RENAME OR MOVE DATAFILE(S) WITH THE DATABASE OPEN

    ----------------------------------------------------

    Datafiles can be renamed or moved while the database is open. However, the

    tablespace must be made READ-ONLY. This will allow users to select from the

    tablespace, but prevents them from doing inserts, updates, and deletes. The

    amount of time the tablespace is required to be read only will depend on how

    large the datafile(s) are and how long it takes to copy the datafile(s) to the

    new location.

    Making the tablespace read only freezes the file header, preventing updates

    from being made to the file header. Since this datafile is then at a read

    only state, it is possible to copy the file while the database is open.

    To do this you must follow these steps:

    1. Determine how many datafiles are associated with the tablespace.

    SVRMGR> SELECT FILE_NAME, STATUS FROM DBA_DATA_FILES

    WHERE TABLESPACE_NAME = '<YOUR_TABLESPACE_NAME>';

    2. Make sure that all datafiles returned have the status AVAILABLE.

    3. Make the tablespace is read only.

    SVRMGR> ALTER TABLESPACE <YOUR_TABLESPACE_NAME> READ ONLY;

    4. Make sure that the tablespace is defined as read only in the data

    dictionary.

    SVRMGR> SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES

    WHERE TABLESPACE_NAME = '<YOUR_TABLESPACE_NAME>';

    TABLESPACE_NAME STATUS

    ------------------------------ ---------

    <YOUR_TABLESPACE_NAME> READ ONLY

    5. Copy the datafile(s) to the new location using the operating system copy

    command. Once the datafile(s) have been copied to the new location compare

    the sizes of the datafiles. Make sure that the sizes match.

    6. Once the datafiles have been copied to the new location alter the

    tablespace offline.

    SVRMGR> ALTER TABLESPACE <YOUR_TABLESPACE_NAME> OFFLINE;

    * At this point the tablespace is not accessible to users.

    7. Once the tablespace is offline you will need to rename the datafile(s) to

    the new location. This updates the entry for the datafile(s) in the

    controlfile.

    SVRMGR> ALTER DATABASE RENAME FILE

    '/FULL_PATH_OF_OLD_LOCATION/AND_DATAFILE_NAME.DBF'

    TO

    '/FULL_PATH_OF_NEW_LOCATION/AND_DATAFILE_NAME.DBF';

    * You will need to do this for all datafiles associated with

    this tablespace.

    8. Once the alter database statement has been processed for the datafile(s)

    you can bring the tablespace online.

    SVRMGR> ALTER TABLESPACE YOUR_TABLESPACE_NAME ONLINE;

    9. After you bring the tablespace back online you can make the tablespace

    read/write again.

    SVRMGR> ALTER TABLESPACE YOUR_TABLESPACE_NAME READ WRITE;

    10. You can check the status of the tablespace to make sure it is read/write.

    You can also verify that the controlfile has been updated by doing the

    following:

    SVRMGR> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

    This will produce a readable copy of the contents of your controlfile

    which will be placed in your user_dump_dest directory.

    11. Remove the datafile(s) from the old location at the O/S level.

    II. RENAME AND OR MOVE DATAFILE(S) WITH THE DATABASE SHUT DOWN

    --------------------------------------------------------------

    1. If the database is up, shut it down.

    2. Copy the datafile to the new name/location at operating system level.

    3. Mount the database.

    SVRMGR> STARTUP MOUNT

    This command will read the control file but will not mount the datafiles.

    4. Rename the file inside Oracle.

    SVRMGR> ALTER DATABASE RENAME FILE

    '/FULL_PATH_OF_OLD_LOCATION/AND_DATAFILE_NAME.DBF'

    TO

    '/FULL_PATH_OF_NEW_LOCATION/AND_DATAFILE_NAME.DBF';

    Do this for all the datafiles that were renamed or moved at the operating

    system level.

    5. Open the database.

    SVRMGR> ALTER DATABASE OPEN;

    6. Query v$dbfile to confirm that the changes made were correct.

    SVRMGR> SELECT * FROM V$DBFILE;

    7. Remove the datafile(s) from the old location at the operating system level.

    III. RENAME AND OR MOVE A LOGFILE

    ----------------------------------

    1. Shutdown the database.

    2. Copy the logfile to the new name/location at operating system level.

    3. Mount the database.

    SVRMGR> STARTUP MOUNT

    4. Rename the file.

    SVRMGR> ALTER DATABASE RENAME FILE

    '/FULL_PATH_OF_OLD_LOCATION/AND_REDO_LOG_NAME.LOG'

    TO

    '/FULL_PATH_OF_NEW_LOCATION/AND_REDO_LOG_NAME.LOG';

    5. Open the database.

    SVRMGR> ALTER DATABASE OPEN;

    6. Remove the logfile(s) from the old location at the operating system level.

    Search Words:

    =============

    ORA-1157 ORA-1116 ORA-1110

    Posted Nov 26 2007, 11:04 AM by wicky with no comments
    Filed under:
  • Visual Studio 2008 和 .NET 3.5 发布

    Visual Studio 2008 和 .NET 3.5 发布了

    【原文地址】Visual Studio 2008 and .NET 3.5 Released
    【原文发表日期】 Monday, November 19, 2007 10:34 AM

    今天我们发布了 Visual Studio 2008 和 .NET 3.5。你可以使用下面的链接下载其最终版:

    • 如果你是MSDN订阅者,你可以在MSDN订阅网站下载(注:其中一些版本才上传完毕,如果你还没看到的话,过一会儿再来看一下)。

    • 如果你没有订阅MSDN,你可以在这里下载Visual Studio 2008 Team Suite的90天免费试用版本。Visual Studio 2008 专业版的90天试用版本(下载大小稍微小点)将于下个星期推出。Team Foundation Server的90天免费试用版本可以在这里下载。

    • 如果你想使用免费的 Visual Studio 2008 Express 版本(下载大小更小一些,而且是完全免费的),你可以在这里下载。

    • 如果你只想安装 .NET Framework 3.5运行时,你可以在这里下载。

    一些新特性之快速指南

    Visual Studio 2008 和 .NET 3.5 内含成堆的新功能和改进。想了解详情的话,下面是一些我以前写的相关博客贴子的链接,以及你可以观看的录像的链接:

    VS 2008的多定向支持

    VS 2008允许你构建针对多个.NET框架版本的应用。这意味着你可以使用VS 2008打开,编辑,和编译现有的.NET 2.0和ASP.NET 2.0应用(包括使用了ASP.NET AJAX 1.0的ASP.NET 2.0应用),继续在.NET 2.0机器上部署这些应用。你可以从下面的博客贴子里进一步了解其中的工作原理:

    ASP.NET AJAX和JavaScript支持

    ASP.NET AJAX已经成为.NET 3.5的一部分,不再需要单独下载了。除了包括ASP.NET AJAX 1.0的所有功能外,ASP.NET 3.5现在还包括下面这些丰富的支持: 集成了WebParts的UpdatePanel,与象<asp:menu> and <asp:treeview>这样的控件的 ASP.NET AJAX 集成,WCF对JSON的支持,以及许许多多AJAX方面的改进。

    VS 2008 和 Visual Web Developer 2008 在将JavaScript和AJAX集成进你的应用方面还有特别棒的支持。你可以在我这里的贴子里了解相关详情:

    你可以在这里观看一些讨论ASP.NET AJAX 和 Visual Studio 2008支持的录像。

    我高度推荐这本佳作:ASP.NET AJAX in Action以进一步了解ASP.NET AJAX(客户端和服务器端)。

    VS 2008 Web设计器和CSS支持

    VS 2008包含一个显著改进的HTML web设计器(是Expression Web产品中的同一个设计器)。该设计器提供了分割视图编辑,嵌套母板页,以及出色的CSS集成。下面是我对此作了详述的2篇文章:

    ASP.NET还提供了一个新的<asp:ListView>控件,该控件对数据场景提供了非常丰富的支持,允许对输出的标识做完全的控制,与VS 2008中的新CSS支持还有良好的协作,你可以在我这里的贴子里了解有关详情:

    你可以在这里观看一些讨论Visual Studio 2008 新web设计器和新的ListView/DataPager控件的录像。

    编程语言方面的改进和LINQ

    VS 2008中新的VB和C#编译器对这些语言做了显著的改进。两者都添加了对函数式编程概念的支持,允许你编写更干净,更简洁,更具有表达性的代码。这些特性还促成了我们称之为LINQ(语言级集成查询)的新编程模型,使得查询和操作数据成为.NET中的一等编程概念。

    下面是我撰写的一些讨论这些新语言特性的文章(用C#作为示例):

    这里是我撰写的其他几个贴子,展示了一些新的VS 2008代码编辑支持和使用这些新的语言特性的一些很酷的方式:

    Visual Basic开发团队还录制了一些很棒的讨论LINQ的免费录像,你可以在这里观看。

    LINQ to SQL中的数据访问改进

    LINQ to SQL是.NET 3.5中内置的OR/M (对象关系映射器)。它允许你使用.NET 对象模型对关系数据库进行建模。然后你可以使用LINQ对数据库进行查询,以及更新、插入,删除数据。LINQ to SQL完整支持事务,视图和存储过程。它还提供了一个把业务逻辑和验证规则结合进你的数据模型的简易方式。下面是一些我讨论如何使用LINQ to SQL的文章:

    我认为你会发现LINQ 和 LINQ to SQL极大地方便你建造极其干净的数据模型,编写极其干净的数据代码。我在今后还会撰写更多LINQ to SQL的系列文章(一直没空写完,我非常抱歉,要做的事情太多,可惜时间太少了!)。

    Scott Stanfield 正在为www.asp.net网站录像一些非常棒的LINQ to SQL录像,这些录像是基于我上面的系列文章的(录像有VB和C#版本)。你可以在这里观看其中的前四集。

    使用Visual Studio浏览.NET Framework库源码

    在几个星期前我在博客里提到, 我们将在这个发布里同时发布 .NET框架库源码的引用版本。Visual Studio 2008有内置的调试器支持,自动按需调试进入代码(VS 2008可以自动为你下载适当的.NET框架库文件)。

    我们正在部署这些源码服务器,在几个星期里将发表启动这个功能的步骤。

    说不尽的其他改进

    上面的列表只是所做改进的一小部分。针对客户端开发,VS 2008 包含了对WPF设计器和项目的支持。ClickOnce 和WPF XBAPs现在在FireFox中也工作了。WinForms和WPF项目现在也能使用ASP.NET 应用服务(成员,角色和用户数据)来漫游用户数据了。

    办公开发也更加丰富了,包括对Office 2007 Ribbon和Outlook的集成支持。Visual Studio办公工具支持现在也成为Visual Studio的一部分了(对,不用再购买另外的产品了)。

    新的WCF和Workflow项目和设计器现在也包括在VS 2008中了。单元测试的速度大为提高,而且单元测试的支持现在包括在VS Professional版本(而不仅仅是VSTS版了)中了。连续集成支持现在也内置于TFS中了。AJAX web测试(单元和压力)现在也由VS Test产品支持了。还有许许多多多的改进,这里无法一一提及了。

    安装建议

    很多人问我该如何从Visual Studio 2008的早期beta版升级的问题。一般来说,我建议你先卸载Beta2。作为卸载的一部分,你应该卸载Visual Studio 2008 Beta2,.NET Framework Beta2以及Visual Studio Web Authoring Component ,这些是分开的安装,需要分别卸载。之后,我通常建议在卸载后,重新启动机器,以确保在你安装新东西之前,机器处于干净的状态。然后,你就可以在机器上安装VS 2008 和.NET 3.5的最终版了。

    安装完毕后,我通常建议你运行 工具->引入和输出设置 菜单选项,选择“重置设置”选项,然后重新选择你喜欢的配置。这有助于确保去掉Beta2版本的老配置(有时还会有助于改进性能)。

    注,VS 2008可以和VS 2005 并行,所以完全可以在同一台机器上同时安装它们,不会有任何问题的。

    Silverlight工具和VS Web部署项目插件

    可在VS 2008最终版下工作的2个非常受欢迎的Visual Studio插件尚未推出。它们是Visual Studio Silverlight 1.1工具 Alpha和Visual Studio Web部署项目插件。 我们希望在下2个星期内推出可在VS 2008最终版下工作的更新版本。如果你在使用VS 2008 Beta2 做Silverlight 1.1开发的话,你最好还是继续使用VS 2008 Beta2 ,直到这个插件的更新版推出为止。

    希望本文对你有所帮助,

    Scott

     

    Posted Nov 21 2007, 08:31 AM by wicky with 4 comment(s)
    Filed under:
  • VS2008 RTM

    Posted Nov 20 2007, 08:34 AM by wicky with no comments
    Filed under:
  • XtraReport -> How to: Create a Custom Preview Form

  • ifsimportexport get error "IFS-30008: Unable to import LibraryObject"

    http://forums.oracle.com/forums/thread.jspa?threadID=229897

    Errors in log:

    IfsException in run(); exiting:
    oracle.ifs.common.IfsException: IFS-30008: Unable to import LibraryObject
    oracle.ifs.common.IfsException: IFS-30002: Unable to create new LibraryObject
    oracle.ifs.common.IfsException: IFS-30010: Attribute would not be unique (NAME)
    oracle.ifs.common.IfsException: IFS-30008: Unable to import LibraryObject
    oracle.ifs.common.IfsException: IFS-30002: Unable to create new LibraryObject
    oracle.ifs.common.IfsException: IFS-30010: Attribute would not be unique (NAME)
    at oracle.ifs.server.S_LibraryObject.insertRow(S_LibraryObject.java:3456)

    ----------->

    The issue we were facing was the same as bug 4206012 "IFSIMPEXP
    IFS-30010 ATTRIBUTE NOT UNIQUE (NAME) [SYSTEMLOCKOBJECT]"

    Installing the latest CMSDK 9.0.4 patchset (patch 4399361) solved the issue

     

    Posted Nov 12 2007, 10:21 PM by wicky with no comments
    Filed under:
  • oidrepld instance already exist. Only one instance of OIDREPLD can be started

    http://forums.oracle.com/forums/thread.jspa?threadID=546990&tstart=15

    If i execute ps -ef|grep oidrepld, no process is running.
    1) if i stop instance:
    oidctl server=oidrepld connect=<servicename> instance=1 stop
    show: *** Cannot Stop an Instance that is not running ***
    2) If i start instance:
    oidrepld instance already exist. Only one instance of OIDREPLD can be started

    it's very unusual and i don't know that i do or how i can recreate replica with remtool?

    ---->
    select * from ods.ods_process where serverid=3
    If you see any rows then

    delete * from ods.ods_process where serverid=3;

    Then you should be able to start replication server

     

    Posted Nov 11 2007, 08:07 PM by wicky with no comments
    Filed under:
  • PXE clients computers do not start when you configure the Dynamic Host Configuration Protocol server to use options 60, 66, 67

  • PXE Clients do not receive an IP address from a DHCP server across a router

  • 新股民炒需经历哪三个阶段

     http://blog4.eastmoney.com/bawojihui,100056148.html

     一个普通人办理了股东帐户和资金帐户,然后时入股市开始运作,即成为一名股民。但是要成为一名成熟的股民须经历3个阶段:    

    一、初级阶段。此阶段股民的特征表明是: 
        盲目性:不知道如何开户;不了解股票知识或知之甚少,对“除权、每股收益”等专业名词更不知何意思;不会具体操作(填单、刷卡等);更不知该买什么股票。但有一点“清楚”,认为买股票肯定赚钱。    胆大性:由于盲目性,特别是认定“买股票赚钱”,因此胆子大,敢买任何股票,特别表现在刚一开户,手就发痒,马上买进若干股。好像不买,心里就不踏实。初战告捷:初入股市者往往瞎蒙能赚上一笔钱,这使得他们兴高采烈,更加认准了“股票能赚钱”并且“深化”了认识,即“股市赚钱易、赚钱快”,而且逢人便吹“股市哪有风险,不需要那么多知识,我一入市就赚钱”等等,并且鼓动周围人赶紧加入炒股队伍。 
        短暂性:初战告捷时间很短,最多3个月,随后就转入下一阶段。 
        

    二、中级阶段。此阶段的整体特征均围绕套牢反映: 
        被深套:由于“连战连胜”,忘乎所以,结果全线被套住,或割肉,或等待,第1次尝到赔钱、风险的滋味。 
        技巧差:虽然一些操作手段熟悉了,股票知识也了解一些,但抗风险的技巧没掌握,表现在不会尽早割肉再抄底,而一味傻等解套的来临,结果越套越深。心沉重:胜利果实及老本一下被套,想不通,很后悔,心情,不愿意和周围人谈论股票,别人问及,往往支支吾吾,或强撑脸面皮笑肉不笑地说“还行”。 
        不甘心:这时有钱就存股市,以加大投资想尽快捞回来,特别爱打听消息,爱听股评,以获得精神上的安慰或从中汲取些策略。对不符合自己心愿的股评甚为反感,怕由此造成市场波动加大其损失。 
        长期性:被套的时间长,如选的个股再不争气,更是赚指数赔钱,解套无望。最长的要等3年甚至更长。 
        

    三、成熟阶段。经过小赚、深套、解套后,股民开始成熟:终于解套:苦等了9相当一段时间后或几次割肉抄底成功后,老本终于赚回。头脑不再发热,不再贪心,充分认识股市风险,交易行为变得稳重。股票知识及操作技巧有很大提高:特别关注宏观面,结合技术面,自己分析判断性加强。对股评少听少看仅作参考。谈话慎重:与周围人谈股票讲风险多了,股市上胜与负的结果不再流露到脸上和语言中,显得沉稳老练。增强了风险意识,所以多以见好就收、落袋为安、谨慎为上。

     

    Posted Nov 05 2007, 09:05 PM by wicky with 2 comment(s)
    Filed under:
  • ORA-01031: insufficient privileges when start sqlplus / as sysdba

    1. check whether ORACLE_HOME, ORACLE_SID, ORACLE_BASE set properly
    2. use owner of oracle files instead of root, i.e. oracle
    3. make sure oracle user is in dba group

    Posted Nov 02 2007, 02:47 PM by wicky with no comments
    Filed under:
  • Sysinternals Suite

    http://www.microsoft.com/technet/sysinternals/utilities/sysinternalssuite.mspx
    Introduction

    The Sysinternals Troubleshooting Utilities have been rolled up into a single Suite of tools. This file contains the individual troubleshooting tools and help files. It does not contain non-troubleshooting tools like the BSOD Screen Saver or NotMyFault.

    Download SysinternalsSuite (8 MB)

    The Suite is a bundling of the following selected Sysinternals Utilities:

    AccessChk

    AccessEnum

    AdExplorer

    AdRestore

    Autologon

    Autoruns

    BgInfo

    CacheSet

    ClockRes

    Contig

    Ctrl2Cap

    DebugView

    DiskExt

    Diskmon

    DiskView

    DU

    EFSDump

    Filemon

    Handle

    Hex2dec

    Junction

    LdmDump

    ListDlls

    LiveKd

    LoadOrder

    LogonSessions

    NewSid

    NtfsInfo

    PageDefrag

    PendMoves

    Portmon

    ProcessExplorer

    ProcessMonitor

    ProcFeatures

    PsExec

    PsFile

    PsGetSid

    PsInfo

    PsKill

    PsList

    PsLoggedOn

    PsLogList

    PsPasswd

    PsService

    PsShutdown

    PsSuspend

    RegDelNull

    RegJump

    RegMon

    RootkitRevealer

    SDelete

    ShareEnum

    SigCheck

    Streams

    Strings

    Sync

    TcpView

    VolumeId

    WhoIs

    WinObj

    ZoomIt

    Posted Nov 01 2007, 08:38 AM by wicky with no comments
    Filed under:
Copyright SDT, 2006-2009. All rights reserved.