After a consecutive trial-and-fails, I figured out a most direct way to install xgboost on Windows with MSVC; that is, you only have to download the latest RELEASE of xgboost on GitHub. Continue reading “Installing xgboost on Windows”
Create albums in PowerPoint !
Recently I’ve programmed a tool that can automatically generate albums in PowerPoint. What you’re supposed to do is to prepare your photos, and write a script. When these materials are ready, just run this little application and you’ll get the presentation document.
Here’s a quite simple demo
Querying Network Status in .NET programming
Work with My namespace
We can use My.Computer.Network.IsAvailable in Visual Basic.NET to determine whether the network is connected. The definition of this property is:
|
153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
'''********************************************************************** ''';IsAvailable ''' <summary> ''' Indicates whether or not the local machine is connected to an IP network. ''' </summary> ''' <value>True if connected, otherwise False</value> ''' <remarks></remarks> Public ReadOnly Property IsAvailable() As Boolean Get Return NetInfoAlias.NetworkInterface.GetIsNetworkAvailable() End Get End Property |
It leads to the approach in C#. Continue reading “Querying Network Status in .NET programming”
Play with Linq.Expression
Suddenly Visual Basic 6.0 ……
Yesterday once more.

And

There’s virtually no way to debug into it…
So I had to use something like Debug.Print. Really had a hard time.
So I decided to implement XmlSerializer “again”
Reinventing the wheel T_T
ref = CXuesong/XSerializer/
Pull is welcomed T_T if you’d like to
Recently I’ve been considering the following problems:
When serializing using XmlSerializer to get more control on what the XML should look like,
- How to serialize members with type
Nullable<T>, persisting it as XML attribute (rather than element)? - How to serialize references, avoiding it persisted as multiple identical copies of one object?
- How to achieve the these two things above, without introducting public auxiliary properties?
(e.g. for case 1, an auxiliary property can be introduced to do the conversions betweenNullable<T>andstring, the latter of which can be persisted as XML attribute.)
It seems that case 2 can be solved using DataContractSeriallizer. However, DataContractSeriallizer generates Id by itself, and represent Id and its references with z:Id andz:Ref. As I’ve mentioned in previously (在 XmlSerializer 与 DataContractSerializer 之间抉择), DataContractSeriallizer is rather rigid when you want to control the appearance of XML tree it generates.
Then, how to solve these problems?
Maybe, I’ll reinvent the wheel.
See Also
c# – Is there any way for my class to support serialisation as an XML attribute? – Stack Overflow
The exapmle provided in section “Serializing Derived Classes”(with XmlArrayItemAttribute) may be not the case
cite=https://msdn.microsoft.com/EN-US/library/vstudio/2baksw0z.aspx
Another use of the XmlArrayItemAttribute is to allow the serialization of derived classes. For example, another class named Manager that derives from Employee can be added to the previous example. If you do not apply the XmlArrayItemAttribute, the code will fail at run time because the derived class type will not be recognized. To remedy this, apply the attribute twice, each time setting the Type property for each acceptable type (base and derived).
1234567891011 public class Group{[XmlArrayItem(Type = typeof(Employee)),XmlArrayItem(Type = typeof(Manager))]public Employee[] Employees;}public class Employee{public string Name;}public class Manager:Employee{public int Level;}A serialized instance might resemble the following.
1234567891011 <Group><Employees><Employee><Name>Haley</Name></Employee><Employee xsi:type = "Manager"><Name>Ann</Name><Level>3</Level><Employee></Employees></Group>
However, this is not the case.
I used the following test case:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
using System; using System.IO; using System.Xml.Serialization; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { var f = new XmlSerializer(typeof (Group)); using (var sw = new StringWriter()) { f.Serialize(sw, new Group() { Employees = new [] { new Employee {Name = "Jerry"}, new Manager {Name = "Tom", Level = 20} } }); Console.WriteLine(sw.ToString()); } } } public class Group { [XmlArrayItem(Type = typeof (Employee)), XmlArrayItem(Type = typeof (Manager))] public Employee[] Employees; } public class Employee { public string Name; } public class Manager : Employee { public int Level; } } |
which yields the result:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
<?xml version="1.0" encoding="utf-16"?> <Group xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Employees> <Employee> <Name>Jerry</Name> </Employee> <Manager> <Name>Tom</Name> <Level>20</Level> </Manager> </Employees> </Group> |
As you can see, xsi:type attribute didn’t appeared in the XML document containing the serialized Group instance. Instead, the element name of derived Manager class is employed.
If I modify the definition of Group class to
|
26 27 28 29 30 |
[XmlInclude(typeof(Manager))] public class Group { [XmlArrayItem(Type = typeof (Employee))] public Employee[] Employees; } |
Then I get the following result
|
1 2 3 4 5 6 7 8 9 10 11 12 |
<?xml version="1.0" encoding="utf-16"?> <Group xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Employees> <Employee> <Name>Jerry</Name> </Employee> <Employee xsi:type="Manager"> <Name>Tom</Name> <Level>20</Level> </Employee> </Employees> </Group> |
which coincides with the example output stated on MSDN.
p.s. I tested the code above in VS 2013.
