February 2006 - Posts
hmm... it's really like a .Net version of Digg...
[via Will Asrari] [via DotNetKicks.com]
dotnetkicks.com is a community based news site edited by our members. It specializes in Microsoft development techniques , technologies and tools including ASP.NET, C#, VB.NET, C++, Visual Studio, Team System, SQL Server and Microsoft Vista.
Individual users of the site submit and review stories, the most popular of which make it to the homepage. Users are encouraged to 'kick' stories that they would like to appear on the homepage. If a story receives enough kicks, it will be promoted.
Technorati Tags: microsoft , digg, dotnet
As I am starting to put some of my projects to a Subversion repository for learning its usage with TortoiseSVN, seeing this news today about SourceForge just let me feel that I am doing the right thing. Although it should be made as common concepts for developers to understand the usage of CVS and Subversion, since one should know the history first to understand how we gain from the past.
Technorati Tags: opensource , sourceforge, progamming, subversion
[via Larkware][via Andrew Connell]
A nice asp.net 2.0 RSS toolkit by Dmitry Robsman to let your applications get RSS abilities.
Got pretty good tutorial from ScottGu's post.
Technorati Tags: blog , rss, progamming, asp.net
Those 2 days my blog feed readers dropped down suddenly. main feed dropped down about 30 readers and work blog feed dropped down about 10 readers. all happened in one night.
Today one of my readers told me that he had problems syncing my feeds via Bloglines reader. As I've tried, also not working and my feeds will have a "[!]" aside. after clicking the "[!]" mark it will show up a message box telling me:
"Bloglines has encountered an error trying to fetch the latest version of this feed. Bloglines handles errors automatically, no action is required by you. The error was:
The feed does not appear to exist. This can be caused by the feed URL being incorrect, or it can be caused by a configuration issue with the server hosting the feed. If this error continues, you should check the feed URL and, if it is wrong, subscribe to the correct URL. "
A search to Google found that it seemed to be an old problem that can be tracked back to last year. Another search to Google found a thread talking about this at FeedBurner forums. Seems that Bloglines sometimes will have glitches syncing specific feeds and the only way to solve this is to contact Bloglines support for this.
So I've sent the support request to Bloglines support and wish my Bloglines readers can sync my feeds normally soon.
Technorati Tags: blog , rss, bloglines, feedburner
Finally, CommunityServer 2.0 was released couple minutes ago for public download , including Source Code couple hours later... will get busy upgrading again!
Congratulations to Telligent Systems!!
[via Rob Howard on CS Announcement]
Telligent and the Community Server team are very pleased to announce the immediate availability of Community Server 2.0 the platform that enables you to quickly and easily create online communities.
Download Community Server 2.0 MSI Now!
Download Community Server 2.0 Web Installer Now! (required if upgrading)
Learn more at CommunityServer.org
Community Server 2.0 is available in several editions:
Express Edition – The free Express Edition is perfect for people that need to get a community up-and-running on a budget. It is free, but has restrictions on use but can be used commercially.
Standard Edition – The Standard Edition is the entry level commercial platform and unlocks some features not available in the Express Edition.
Professional Edition – The Professional Edition is targeted at organizations that require many of the capabilities offered by Community Server 2.0 for running a high-traffic community.
Enterprise Edition – The Enterprise Edition unleashes the full potential of Community Server and has been designed for organizations that require all of the capabilities found in Community Server.
For more information on licensing Community Server 2.0, please read the Community Server 2.0 licensing guide.
Important: Community Server 2.0 Standard, Professional, and Enterprise Editions are available for purchase at the 1.1 price until March 20th 2006.
In addition to many improvements in Community Server 2.0 core features (forums, blogs, and photos) some of the new capabilities in Community Server 2.0 include:
File Gallery – Easily share files of any type and size. Supports comments, ratings, download counts as well as permissions for controlling how your files are accessed.
FTP Gateway – Easily enable drag-and-drop or even drive mapping for Community Server file or photo galleries.
Enterprise Search – Enables new options for data matching; RSS enabled search; and proximity searching
Email Gateway – Enables integration with Microsoft Exchange Server or stand-alone email support. Using the Mail Gateway enables blogging by email and using forums as an email distribution list.
RSS Aggregator – Easily combine multiple RSS sources into a combined/aggregated view.
RSS Reader – Enable each user to create his or her own custom RSS subscriptions as well as aggregating and ‘mashing-up’ related content in-and-outside of Community Server
Control Panel – Completely rewritten Control Panel which greatly simplifies management of Community Server.
…and more – Video blogging, Tablet PC ink support, simple content management, search engine optimization, basic social networking functionality, new reports, spam blocking tools, member points, new slideshow tool for photo gallery, updated polls system, forum personalization, RSS enabled search, secure RSS, better NNTP and Email integration, URL redirects/tracking, threaded UI for forums.
Please visit www.communityserver.org where you can download Community Server 2.0 today!
The Community Server core source code corresponding with today’s release will be published ~5PM CST Today as well.
Technorati Tags: dottext , blog , programming , dotnet , communityserver
Thanks Steve! you not only saved the IDE settings, but also saved a lot of people's time...
Also thanks to Andrew for pointing out the info!!
[via Andrew Connell] [via Steve Harman]
Many of the settings are stored in the windows registry, so all you have to do is find the necessary keys and save to a .REG file, and then later you can run those files to re-install the keys on the new VS install. So, fire up regedit, navigate to the key, right-click and select Export. The important keys for VS 2003 are:
The majority of the other settings are stored in your user's
- KEY_CURRENT_USER\Software\Microsoft\VisualStudio\7.1\External Tools
- HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\7.1\Text Editor
Application Data directory. So just browse to
C:\Documents and Settings\YOUR_USER_NAME\Application Data\Microsoft\VisualStudio\7.1\ and then save the following files:
- Keyboard schemes and shortcuts are stored in .vsk files.
- Toolbox data is in the toolbox.tbd file.
- Windows layout are in the devenv.xml file.
- Object Browser data is in the ObjBrow.dat file.
- Various settings from things like external add-ins and packages are stored in the ExtGlobals.dat file.
Technorati Tags: microsoft , visualstudio, programming
The official Microsoft Technology Community at Taiwan used to be running web-NNTP based forums to communicate with the public, answering questions and sharing information with each others. This year Microsoft Taiwan announced new forum based community system, established new way to interact with the public. Using a forum system (should be based on CommunityServer forum framework) enables all the content be searched by popular searching engines and thus enables information be exchanged and shared more efficient and wide.
This should be Chinese based Microsoft Technology Forums hosted by Taiwan Microsoft MVPs and I'll also help on building a good Microsoft Technology related content base to help more Chinese-reading people know more about Microsoft Technologies.
[This post in Chinese]
Technorati Tags: microsoft , community , technology , forum , chinese
NHibernate got its 1.0.2 release. Release Note as follows:
* [NH-409] - Sybase - Polymorphics Queries - wrong SQL generation about aliases/quotes
* [NH-418] - Custom persister cannot be instanciated.
* [NH-464] - DateTime does not work in composite-element mapping
* [NH-470] - Disconnect and Close should not close user-supplied connections
* [NH-471] - Misspelled property in ICriteria throws NullReferenceException
* [NH-476] - GetSetHelperFactory doesn't work with external dependencies
* [NH-477] - IncrementGenerator reads Int64 even if Int32 or Int16 is used.
* [NH-479] - One-To-One SaveAndUpdateCopy - Reference Identifier Bug
* [NH-480] - Should use invariant culture with ToLower and other string calls
* [NH-496] - Reflection optimizer should throw a more informative exception when a property is mapped using a wrong type
* [NH-505] - Reflection optimizer does not work with structures
* [NH-508] - changes to idbag collection not persisted correctly
* [NH-509] - ILMerge is not packaged in the distribution
* [NH-512] - Custom properties accessors do not work
* [NH-523] - SaveOrUpdateCopy throws PersistentObjectException
* [NH-513] - FOR UPDATE NOWAIT in Postgresql 8.1
* [NH-483] - Improve type resolution to handle dynamic assemblies
* [NH-488] - Change log level for GetSetHelper messages to DEBUG so that users are not confused
* [NH-489] - Remove logging from ADOException constructor
* [NH-491] - SQLite dialect should use DATETIME type for date/time columns
* [NH-493] - Correction in the NHibernate.Type.CharType.cs
* [NH-497] - Add more Hibernate-compatible type names
* [NH-506] - Make Environment.UseReflectionOptimizer property writable
* [NH-516] - Log SQL parameter values
* [NH-521] - Locking an unitialized entity causes its initialization
* [NH-525] - Upgrade to latest DynamicProxy
Technorati Tags: hibernate , nhibernate , orm , database , programming
Just happened this morning as I noticed that when I open IE6 window on my Windows XP sp2 host, the caption string at the title bar just been cut-off and remain only one char existed. for example, when open a blank page with the address "about:blank" , title bar should be the same string as "about:blank" , but now it only got a "a" on it. same situation happaned to all other browsing of sites, only the first char appeared and the rest were cut-off.
After a search of Google, found the discussion group about this and then find a solution answer at Expert-Exchange site. with the tool of ToolBarCop and information provided, found out that it's the same as the answers at Expert-Exchange site that there was something wrong with Google Toolbar. There was even strange behaviors that when selecting toolbars by right-clicking mouse button on IE toolbar area, if selecting to not show MSN Toolbar, it happened that Google Toolbar was disappeared, reverse is also true, when choosing to show or not show Google Toolbar, it's MSN Toolbar that took the action.
Obviously that there should be a corrupttion of settings of those IE toolbar configurations. after uninstall and reinstall Google Toolbar, everything backs to normal, means that the caption string in title bar backs to normal.
Pretty strange, but fortunately got it solved!
Technorati Tags: IE , internet explorer, toolbar, google
[via Rob Howard]
Nice post from Rob Howard on introduction of .netTiers templates for CodeSmith.
.netTiers templates are the templates for generation of Data Access Layer (DAL) that follows recommandations of Microsoft Patterns & Practices data access techniques, including the using of its Enterprise Libraries.
There are majorly 2 approaches of doing DAL for using in application design. one is to use Code Generation tools such as general purpose tools like CodeSmith or to use specialized DAL generation tool like LLBLGen Pro. the other way will be using Object Relation Mapping (O/R Mapping) frameworks like NHibernate. Code Generation is fast since it's hard coded data access code and strongly typed. O/R Mapping frameworks majorly using Run-Time type mapping thus it's flexible and dynamic, but the performance won't be as good as code generated DAL sinces there will be one more tier to deal with Object Class and Relational Data mapping.
It should depends on solution design requirements to use either tools, but to all of them, it just showed that with good tools and frameworks, coding or developing desired software won't fall into boring works and will be fun and like art works!
Technorati Tags: codesmith , DAL , orm , database , programming , pattern
As my blog site got enough content and daily bandwidth is averagely 200mb, I am started thinking about moving this site to a web-hosting service for long-term operation. The other reason for that is also because of that I might changing my job and moving to somewhere else soon. Thus I might need to move all my services (DNS, blog, email service) to some web-hosting services.
Actually it's not very easy to find a professional web-hosting service that provides Windows 2003 server , ASP.NET 1.1 / 2.0 , SQL Server 2000/2005 and others, which a professional Microsoft developer will likely to use and the price is acceptable. For a developer's needs, the hosting company must has strong background on hosting Microsoft technologies and should likely be more welcome that one hosting company is focus on only hosting Microsoft stuffs, comparing to most of hosting companies that usually host Unix/Linux as major and Windows as one of their services.
Most of the needs of a hosting service is likely as follows:
- Simply web pages hosting with server side dynamic content
- Web pages hosting and database support
- Email hosting
- Simple DNS hosting (route every names to root)
- Advanced DNS hosting with self-defined records (A, MX, CNAME, etc)
As in my case, I'll need web pages hosting with database support, email hosting and also advanced dns hosting if I'll move all my services from my home server to a hosting company.
My colleague Chris Ho gave me some links of host search and comparing sites (here and here) that provides comprehensive information on overall hosting service markets (which is what I needed! thanks pal!). through the search of Google also find Frankarr's post about asp.net web-hosting and later found that there is a list of hosting services nominated by Microsoft ASP.NET Hosting Advantage program.
Some of the hosting companies provide low price targeted to user who only needs web pages hosting and provide less support on email and dns hosting. some others are half-half, some others might provide web page hosting functions not as comprehensive as others but they provides excellent support for users to manage domain name records and email accounts. so there will be a matrix of price, disk spaces, database spaces, technologies supported, email functions and dns functions on choosing a suitable hosting service based on one's needs.
I am still taking a deep look of the matrix every Windows hosting company provides in that Hosting Advantage Program and will try some of them in their "30 days money back guarantee" period to come out a result later for my hosting needs.
Technorati Tags: microsoft , asp.net, hosting
Time for sniffing the network!
It's been some time that I've noticed my server been surrounding huge packets from source IP 0.0.0.0 , noticed from my BlackIce PC Protection firewall, both TCP and UDP packets from 0.0.0.0 were there marked as TCP_Probe_Other and UDP_Probe_Other. UDP packets grew slow but TCP packets grew very fast.
Due to the lack of information provided by BlackIce (Orz), I had little clues to find out what's going on those weeks also, busy on writing code for my work; The Chinese-New-Year 9 days vacation (well, it's like X'mas in western world) just gave me the chance to fully find out what's going on.
I've kept monitoring my server during the vacation and finally it reached over 450,000 TCP packets from 0.0.0.0 in about 3 days, constantly increasing about 15-20 packets per second. I couldn't stands for it and thought I should really dig into what's going on.
A search to Google gave me a hint, according to Steve Gibson's comprehensive articles (here and here), I was originally thought that I might under someones' DRDoS attacks (the pattern is similar to what Steve described in his article). After knowing this I was wondering if there will be good tools to help me investigate my network. I used to use IRIS, but felt that it's sort of huge and seems not very compatible in Windows 2003 server, so I decided to find others.
BlackIce PC Protection is the little software firewall I am using to defend my system from opening a wild door to other systems around the internet.
SystemInternals' freeware TCPView is a good tool to monitor the server's TCP/UDP usage. (thanks to MSMVP Li Jung Chiu's info). It shows how all the real-time TCP connections are going on inside a server and can easily see what application / process is using what port to connect to others. but I can only see what process is using what tcp/udp ports to communicating with someone else; I can not see the details of packets that's going inside the wires. I'll still need a small but useful packet sniffer for that.
I did find Snort site (free, got windows version), but I had no time and mood finishing the whole user manual to start get control of this cool tool. in the search of it's related underlying socket handler package WinPcap (free), I found it's cool Links page that's full of other networking tools that might be useful to my investigation. for a quick and random pick, I got Ethereal (free) for sniffing my network.
3 tools above in a row to start peeking my WAN network!
I've seen those 0.0.0.0 packets keep coming in, no clues in TCPView about who is using them since there were only bunch of LISTENING ports with Remote Address 0.0.0.0:0 , hard to tell what's going on.
Started Ethereal for sniffing the traffic of WAN, before doing this either close most of other known net daemons (mail server, web server ,etc) or set the filter to only capture UDP packets (since there were some volume of packets of them also) to minimize the range of investigation. quickly found that there were suspicious udp packets kept coming in. it's all from random IPs with random port numbers but all coming in to my server ip with the same udp port.
BlackIce didn't mark those 0.0.0.0 udp packets as blocked status, it's allowing accepting those packets. so my instinct told me that it should be something I've set in my firewall rules. after checking the settings of BlackIce, found that it's the port number I've opened for BitComet!
I've open the same port numbers for both tcp and udp to allow BitComet communicating with its distributed network. so I just let Ethereal filter both tcp and udp packet for the same port number for BitComet. the result was just like what I am guessing, those 0.0.0.0 tcp and udp packet were all coming from BitComet's distributed network.
Knowing that I might not been suffering from some kind of DoS attacks was really a relieve (although this should be classified as one kind of attack, if not knowing it). It's now the time to find out why and how to stop this.
I closed BitComet to see if the traffic would stop. also blocked tcp and udp port for BitComet in BlackIce to see what will happen. the block of ports quickly reflected in BlackIce monitor, those 0.0.0.0 packets were now marked as blocked, although still keep coming in. there is a decay time for TCP sockets to finally reach it's end of communication, so I just wait for couple minutes. after seen from TCPView that BitComet had not using any connection, I noticed that the 0.0.0.0 packets still coming in, in the same speed.
The sniffing form Ethereal told me that under the circumstance I've made for the system (firewall port block , kill the listening and processing app), there were now only coming TCP SYN packets from various sources and no SYN/ACK packets returned (I've blocked the port!), the packets still coming in like a flood. re-open the listening app won't have any difference since it won't know that someone is contacting him. but strangely that BitComet will still uploading stuffs out to peers while the ports were blocked (incoming / download also work!).
Later I just closed BitComet also kept port blocked, waiting for days to see if the traffic will just decay by time. while in the waiting time I took some reading about BitComet's adoption of DHT (Distributed Hash Table) network. The explaination from BitComet wiki here and little bit in-depth explaination from Wikipedia here. After knowing the working of a DHT network, I was starting to imagine how it would like if my server becoming a node inside one of such a network.
If my server is being as a node inside BitComet's DHT network, then my server would act as a routing node for keys. note as BitComet wiki said that DHT network used TCP port with the same UDP port number for its overlay network, also from what Ethereal got of packets from the same port, it should be an evidence of a match. The cancellation of using DHT network seems not work at start of this experiment, but later found that it "should" work as what it stated in BitComet's settings dialog.
The blocking of the ports to prevent incoming BitComet packets seems not be a good idea. the DHT network looks like it will continue retrying the node that originally inside its network (my server) if the node didn't respose anything with other peers TCP SYN handshake, as proven above. so I just turn on the ports (both tcp and udp) from BlackIce again, and seen from Ethereal that now every incoming TCP SYN will accompany with an outgoing TCP RST/ACK to tell peers that this node is cancelling their connection and discarding their packets (cause the listening app was not started). This seemed to work! after several half-hour monitoring, the 0.0.0.0 packets were decaying in some sort of speed and constantly slowing the speed. finally only several packets from 0.0.0.0 were happened in a minute hours later. I assume that waiting for worldwide participating BitComet peers in its DHT network to notice a node (my server) is dis-joining the network would take up to half-day to complete (well, sort of faster then a DNS propagation!).
The final question would be that, why 0.0.0.0 in BlackIce?
Ethereal showed every packet with clear source and destination IPs, but it all appeared as 0.0.0.0 in BlackIce. I can only assume that it should be caused by that now BitComet network had the ability to encrypt the headers to hide peers' identifications (see BitComet settings dialog). thus it will appear to firewalls like BlackIce to only determine a fake IP 0.0.0.0 , which later in turn to see similar and familiar as a DRDoS attack.
The Conclusion as follows:
- The Concepts of DDoS and DRDoS (Steve Gibson's articles here and here)
- Various Network Monitoring Tools (BlackIce , TCPView , and Ethereal)
- BitComet DHT network and how it works
In the last, if you too find that you've had this kind of 0.0.0.0 huge incoming packets, check if your servers or administrating networks had applications or network nodes now on any of those DHT or BT networks!
Technorati Tags: firewall , DHT, bitcomet, blackice, ethereal, p2p