This is a mirror of official site: http://jasper-net.blogspot.com/

RemoteInstall

| Thursday, November 24, 2011
Project Description

RemoteInstall is a VMWare-based tool to automate software testing, starting with software installation. It's a pragmatic approach to system and integration-testing starting with the installer process itself through the final installed product and product integration.

    Introductory Blog Post
    Introducing RemoteInstall PPT
    Screenshots


Features

    Designed for continuous integration with CruiseControl and CruiseControl.NET.
    Supports VMWare Workstation, Player, Server and Virtual Infrastructure (ESX, etc.) with VMWare VIX 1.7.0+.
    Supports running multiple installers on multiple virtual machines with multiple snapshots.
    Command line, configuration file driven execution.
    XML and HTML logging with pretty xsl-tranformed output including custom merged results.
    Capable of executing user-defined command-line, virtual machine and virtual machine snapshot tasks.
    Capable of combining results from multiple runs and user-defined tasks.
    Automatically collects installation logs clickable in the results summary.
    Copies user-defined files and folders from/to the virtual machine.
    Supports horizontal scaling with parallel execution against multiple Virtual Machine hosts.
    Itegrates and remotes unit tests from unit test frameworks, including NUnit and JUnit.
    Supports some distributed test scenarios with multiple virtual machines and snapshots.

Read more: Codeplex
QR: https://chart.googleapis.com/chart?chs=80x80&cht=qr&choe=UTF-8&chl=http://remoteinstall.codeplex.com/

Posted via email from Jasper-net

Free Testing Framework

|
Meet the free testing framework that will help you automate AJAX, Silverlight and WPF applications. Benefit from rich API, LINQ support, browser abstraction, and of course special wrappers for Telerik RadControls. Enjoy integration with various unit testing frameworks such as VS Unit testing, NUnit, MbUnit and XUnit.

Read more: Telerik
QR: free-testing-framework.aspx

Posted via email from Jasper-net

Real world feedback on a .Net to Mono migration

| Wednesday, November 23, 2011
We recently released the product JavaDepend. As its name suggest, this product is the java adaptation of NDepend. Including CppDepend for C++, we now have 3 products that share around 90% of the initial NDepend code base. Each product comes with its own analyzer layer to build the internal code model from .jar, .java, .dll, .exe files.
In case you are aware of XDepend, JavaDepend is a replacement for XDepend. A completely new product has been designed actually. The main and huge advantage of JavaDepend is that it is built over Mono because it works both on Windows and any Linux distribution. A JavaDepend Mac version is in the pipe.

I’d like to feedback here a few interesting notes on migrating a large legacy code base to Mono.

Before beginning any migration task, we needed to clearly evaluate the future pain points and have an idea of time and resources needed to achieve the migration. For these reasons we needed a tool to tell us which piece of code wasn’t properly managed by Mono.

The Mono Migration Analyzer (MoMA) tool did the job! This tool helps identify issues you may have when porting your .Net application to Mono. It helps pinpoint platform specific calls (P/Invoke) and areas that are not yet supported by the Mono project.

When we analyzed our binaries with MoMA , the main issues concerned our usage of the DevExpress DXperience Windows Form library. At this point we were confident that resolving this issue was the key for a successful migration.

Most of .NET professional program are based on some GUI libraries like the ones provided by DevExpress , Infragistics ,ComponentOne and so on. In NDepend we use DevExpress for the following benefits: Nice an Modern GUI components , Docking  support, Theme support, Ribbon.

Read more: CodeBetter
QR: https://chart.googleapis.com/chart?chs=80x80&cht=qr&choe=UTF-8&chl=codebetter.com/patricksmacchia/2011/11/07/real-world-feedback-on-a-net-to-mono-migration/

Posted via email from Jasper-net

Python from Scratch – Create a Dynamic Website

|
So, how do you get started creating websites with Python? Well, you could do it all yourself, and write a program that runs on a web server, accepting page requests and serving up responses in the form of HTML and other resources. However, that’s a lot of work, so why go to all the trouble when there are plenty of existing tools out there to do the job for you? These tools are called frameworks, and they’re what we’ll use today to create our website.
Python Frameworks

There are quite a few Python web frameworks, but here are some of the best:

    Django – We’re going to use this today. It has a huge set of features, but remains simple to use. The documentation is also excellent, so if you get stuck, you’ll have the easiest time solving your problem with Django.
    Grok – Another framework with a feature set that comes close to Django. If you decide you don’t prefer Django, this is a good alternative.
    WebPy – A much more lightweight framework. It doesn’t have as many features, though it did power Reddit for a period of time!
    TurboGears – Though previously having a reputation for poor documentation, TurboGears has improved substantially in the last year.

A more comprehensive list can be found on the Python website if you’re in need of additional options. Today we’re going to set Django up for development on a local machine, and then build a simple blog. We’re also going to review the process of installing it on a remote web server.
Installing Django

We’ll be performing most of our work today in the Terminal. This should all work on Mac and Linux; however, if you’re running Windows, the process is somewhat different. A familiarity with the command line isn’t necessary if you’re only writing Python, though, if you’re planning on using Django, or running a dynamic website in general, it’s worth learning.
Terminal Tutorials

Consider reviewing these tutorials to get yourself up and running with the Terminal.

    An intro to working in the terminal, which covers Git and Github too.
    10 tips to work faster in the terminal.

Here are the commands you need to install Django. It’s not compatible with Python 3, so you’ll need to install version 2.7 or earlier to get it running.

Read more: netTuts+
QR: https://chart.googleapis.com/chart?chs=80x80&cht=qr&choe=UTF-8&chl=http://net.tutsplus.com/tutorials/python-tutorials/python-from-scratch-creating-a-dynamic-website/

Posted via email from Jasper-net

SCons

|
What is SCons?

SCons is an Open Source software construction tool—that is, a next-generation build tool. Think of SCons as an improved, cross-platform substitute for the classic Make utility with integrated functionality similar to autoconf/automake and compiler caches such as ccache. In short, SCons is an easier, more reliable and faster way to build software.

"SCons is a fantastic build system, written in Python (1.5.2) that does lots of nice things like automated dependencies, cross platform operation, configuration, and other great stuff. I would have to say that it is probably going to be the best thing for building C/C++ projects in the near future."
— Zed A. Shaw, Bombyx project lead

What makes SCons better?

  •     Configuration files are Python scripts--use the power of a real programming language to solve build problems.
  •     Reliable, automatic dependency analysis built-in for C, C++ and Fortran--no more "make depend" or "make clean" to get all of the dependencies. Dependency analysis is easily extensible through user-defined dependency Scanners for other languages or file types.
  •     Built-in support for C, C++, D, Java, Fortran, Yacc, Lex, Qt and SWIG, and building TeX and LaTeX documents. Easily extensible through user-defined Builders for other languages or file types.
  •     Building from central repositories of source code and/or pre-built targets.
  •     Built-in support for fetching source files from SCCS, RCS, CVS, BitKeeper and Perforce.
  •     Built-in support for Microsoft Visual Studio .NET and past Visual Studio versions, including generation of .dsp, .dsw, .sln and .vcproj files.
  •     Reliable detection of build changes using MD5 signatures; optional, configurable support for traditional timestamps.
  •     Improved support for parallel builds--like make -j but keeps N jobs running simultaneously regardless of directory hierarchy.
  •     Integrated Autoconf-like support for finding #include files, libraries, functions and typedefs.
  •     Global view of all dependencies--no more multiple build passes or reordering targets to build everything.
  •     Ability to share built files in a cache to speed up multiple builds--like ccache but for any type of target file, not just C/C++ compilation.
  •     Designed from the ground up for cross-platform builds, and known to work on Linux, other POSIX systems (including AIX, *BSD systems, HP/UX, IRIX and Solaris), Windows NT, Mac OS X, and OS/2.

Read more: Scons
QR: https://chart.googleapis.com/chart?chs=80x80&cht=qr&choe=UTF-8&chl=http://www.scons.org/

Posted via email from Jasper-net

Better Archiver with Recursive Functionality (BARF)

|
The BARF compressor will compress any nonempty file by at least one byte. Thus, by compressing already compressed files over and over again, it is possible to eventually reduce any file to 0 bytes.

BARF has been tested on the Calgary corpus, a well known benchmark. In just one pass, it achieves the best known result of any compressor, compressing all 14 files to 1 byte each. Run time is under 1 second on a 750 MHz PC. Of course these files can be compressed again down to 0 bytes each, just like any other file. (Yes, they can be decompressed correctly).

BARF is free, open source software, released under the GNU GPL.

BARF Compressed File Format

BARF tries 257 compression algorithms, numbered 1 through 257, then picks the best one. Files compressed by method 1 have a .x extension. This algorithm is:

  if the input is the i'th (1-14) file of the Calgary corpus
    then encode it as a 1 byte file with byte value i-1
  else
    compress using a byte oriented LZ77 code with a 1 byte header of 255:
      Byte x = 0-31 means that the next x bytes represent themselves
      Byte x = 32-255 represents a copy of the two bytes from x-32 places back

BARF tries this method first. If the result is not smaller than the original file, then it applies one of the remaining methods 2-257. Method n is as follows:

  if the first byte is n-2 then remove it

Method n (2-257) is indicated by an extension of the form .x[0-9][a-z] as a base 26 encoding of n-2. For example, method 2 (.x0a) removes a leading 0 byte, method 3 (.x0b) removes a leading 1 byte, up through method 257 (.x9v) which removes a leading 255 byte.

Read more: Barf
QR: barf.html

Posted via email from Jasper-net

Effective Android Programming Techniques

|
Here's my personal top twenty. I use this in addition to the usual lists from d.android.com. I could add another five, though the list is long enough.

    Add Two Numbers: Your first non-tutorial application should be to take two numbers and add them together. It sounds too simple. You will spend some hours getting the layouts, the callbacks, and onPause/onResume to work correctly. Do it.
    It is Java: You work in Java for most of your Android programming. Don't spend time praising it. Don't spend time complaining about it. Just work with it.
    Love RelativeLayout: Most of the tutorials use LinearLayout, but you will find that RelativeLayout is truly useful. Many layouts, like the GridLayout aren't used much at all. Play around with RelativeLayout. See an example from this question.
    Use fill_parent with a top level RelativeLayout: A surprisingly common and hard to find problem is putting a wrap_content in a top level RelativeLayout and then wondering why unrelated fields far down in the hierarchy are rendering strangely.
    Use empty layout items: You will often use empty items in your layouts just for positioning other layouts. For example, you might use an empty TextField, of width=0 and height=0 and centerInParent='True' just to anchor things relative to the middle of the screen. Also, you might have an empty TextField or LinearLayout so that you can give a layout_weight=1 to it and have it take up more screen space.
    Set a layout background color: If you are having trouble figuring out your layout, try setting the background colors on some objects. It can highlight your mistakes faster than other tools, and shows some surprises that the IDE red box doesn't always help.
    Download Apps-For-Android: This is a big chunk of useful source code for a half dozen applications. It can supplement the sample applications nicely and show different coding style solutions. Grab it using svn co http://apps-for-android.googlecode.com/svn/trunk/ apps-for-android-read-only
    Download the source: You need the Android source to solve some problems or, more likely, get past holes in the documentation. Your copy does not need to be perfect or kept up to date. You can learn to use the repo command, or just visit http://android.git.kernel.org/ for a snapshot.
    Learn to search your source: The fastest solution to many problems is to find where a particular parameter is used in some other source. Put a copy or link to the sample applications, apps-for-android applications, and any other source you have under one directory tree. Use "grep -ir funky_parameter sample_code/" or your favorite searching routine to quickly find some code that uses that parameter.
    Use Eclipse: Even you have a favorite editor or IDE you have used for years, use Eclipse for Android development. It is good enough as an IDE and is really part of the development tools suite. Any time you spend trying to jury-rig your IDE to work is time you didn't code.
    Learn Eclipse: Learn a few new tricks with Eclipse every day. Some of my favorite commands were found reading this list and this question.
    Get help when starting out: The quantity of readable material can be overwhelming. Setting up the environment can be tricky. Going to an Android Meet-up or users group can help get over the initial hump.


Read more: Stackoverflow
QR: effective-android-programming-techniques

Posted via email from Jasper-net

Microsoft(R) SQL Server(R) ODBC Driver for Linux

| Tuesday, November 22, 2011
Overview

The 64 bit version of the Microsoft SQL Server ODBC Driver for Linux provides robust data access to Microsoft SQL Server. It allows native C and C++ applications to leverage the standard ODBC API and connect to Microsoft SQL Server 2008 R2. Microsoft SQL Server ODBC Driver for Linux also comes with powerful tools - sqlcmd and bcp.

Read more: MS Download
QR: details.aspx?id=28160&

Posted via email from Jasper-net

חלונות 8 - המדריך השלם לפיתוח ב HTML5

|
windows-8-html5.jpg

לכל אחת מטכנולוגיות הפיתוח של חלונות 8 - C++, C#, HTML5  יש פלוסים ומינוסים ברורים, ואני מניח שיצא לי לפתח לא מעט לשלושתן.
יחד עם זאת, HTML5 נראה לי מרתק במיוחד, היות וזה הפתח היחידי לטכנלוגיה שהיא באמת Cross-Platfrom בסופו של יום, ולכן בסדרת הפוסטים הנוכחית נתרכז בטכנולוגיה הזו.

1. WinRT וטכנולוגיות הפיתוח של חלונות 8
2. התקנת חלונות 8 דרך מכונה וירטואלית
3. איך מפעילים את תפריט התחל הישן
4. איך לשנות את תפריט התחל בצורה אוטומאטית


Read more:  אלעד כץ | Elad Katz
QR: programming-windows-8-with-html5.aspx

Posted via email from Jasper-net

CreaMotion NHibernate Class Builder

|
Project Description

(ENG - English)
Hello,

You can generate classes and hibernate mapping files (hbm) by this application easly. Also this application contains Nhibernate references and session manager.
Especially new developers of Nhibernate must try this application.

Features:

    Supports MsSql and MySql
    Multi relations ( 1-1, 1-n, n-n, n-1 )
    Improved Visual Design
    Session Manager
    User Friendly

Read more: Codeplex
QR: https://chart.googleapis.com/chart?chs=80x80&cht=qr&choe=UTF-8&chl=http://nhibernatebuilder.codeplex.com/

Posted via email from Jasper-net

How-to: use Google Music from anywhere (yes, outside of the United States)

| Sunday, November 20, 2011
torgooglemusicmain.jpg

Now that Google Music has finally clawed its way out of the realm of beta-ware, anybody in the US can sign up to play without an invitation. Of course, that leaves many folks out of the equation, so we thought it a good time to point out at least one other route to let you get involved in the service, no matter where you live. See, the rub seems to be that Google checks your IP address on your first attempt to log in, and accept its terms of use -- only the first time, and yeah, you're definitely going to be ignoring that doc by following this guide.

So, in essence all we need to do is find a way to gently tiptoe past that gatekeeper and we're home free. Keep in mind that while you can upload your music, buying new tracks isn't going to happen until it rolls out in your neck of the woods in a more official way -- but hey, most of a good thing is still a good thing. There are various means to get this done, and we've found a pretty straightforward route, and if you're up to it click on through to the guide.

We've made this how-to as straightforward as possible, but it will require a couple tools to help game the system and a bit of time to get it all running smoothly. First and foremost, since the Google Music app isn't available in markets outside of the States you'll need to source that – don't ask us where to get this, we simply don't know, but a Google search can do wonders. Once you've dug up com.google.android.music.4.0.9.apk, put it aside somewhere safe.

Next step is to head on over to the Tor project website and grab the Tor bundle for your operating system. What's Tor you ask? Tor is a network of virtual tunnels that can increase security and anonymity while playing on the internet. The military uses it, police services use it, and now, dear reader, you're about to use it. We're not really interested in the privacy aspect of Tor in this case, but we are interested in our exit node from the Tor network. Our goal is to ensure that when our login request lands at Google Music's door our IP address is one from the United States, so grab it and extract it to your desktop.


Read more: Engadget
QR: https://chart.googleapis.com/chart?chs=80x80&cht=qr&choe=UTF-8&chl=http://www.engadget.com/2011/11/19/how-to-use-google-music-from-anywhere-yes-outside-of-the-unit/

Posted via email from Jasper-net

Facebook C# SDK v5.3.2

|
Release Notes
This is a RTW release which adds new features and bug fixes to v5.2.1.

    Query/QueryAsync methods uses graph api instead of legacy rest api.
    removed dependency from Code Contracts
    enabled Task Parallel Support in .NET 4.0+ (experimental)
    added support for early preview for .NET 4.5 (binaries not distributed in codeplex nor nuget.org, will need to manually build from Facebook-Net45.sln)
    added additional method overloads for .NET 4.5 to support IProgress<T> for upload progress
    added new CS-WinForms-AsyncAwait.sln sample demonstrating the use of async/await, upload progress report using IProgress<T> and cancellation support


Important Notice when migrating from v5.2.1
FacebookBatchParameter.Query uses graph api instead of legacy rest api (Note: unlike FacebookClient.Query FacebookBatchParameter.Query gives exactly the same result as the graph api thus doesn't maintain backwards compatibility when using Query and QueryAsync methods with version less than v5.3.0. You can create your custom class that inherits from FacebookClient and override the Query and QueryAsync methods to use the legacy rest api if you would want to maintain backward compatibility. Make sure to be careful when updating.)

Refer to CHANGES.txt for more details.


Read more: Codeplex
QR: 76445

Posted via email from Jasper-net

Clean up after Visual Studio

|
As programmer’s we know that if we create a temporary file during the running of our application we need to make sure it is removed when the application or process is complete. We do this, but why can’t Microsoft do it? Visual Studio leaves tons of temporary files all over your hard drive. This is why, over time, your computer loses hard disk space. This blog post will show you some of the most common places where these files are left and which ones you can safely delete.

.NET Left Overs

Visual Studio is a great development environment for creating applications quickly. However, it will leave a lot of miscellaneous files all over your hard drive. There are a few locations on your hard drive that you should be checking to see if there are left-over folders or files that you can delete. I have attempted to gather as much data as I can about the various versions of .NET and operating systems. Of course, your mileage may vary on the folders and files I list here. In fact, this problem is so prevalent that PDSA has created a Computer Cleaner specifically for the Visual Studio developer.  Instructions for downloading our PDSA Developer Utilities (of which Computer Cleaner is one) are at the end of this blog entry.

Each version of Visual Studio will create “temporary” files in different folders. The problem is that the files created are not always “temporary”. Most of the time these files do not get cleaned up like they should. Let’s look at some of the folders that you should periodically review and delete files within these folders.

Temporary ASP.NET Files

As you create and run ASP.NET applications from Visual Studio temporary files are placed into the <sysdrive>:\Windows\Microsoft.NET\Framework[64]\<vernum>\Temporary ASP.NET Files folder. The folders and files under this folder can be removed with no harm to your development computer. Do not remove the "Temporary ASP.NET Files" folder itself, just the folders underneath this folder. If you use IIS for ASP.NET development, you may need to run the iisreset.exe utility from the command prompt prior to deleting any files/folder under this folder. IIS will sometimes keep files in use in this folder and iisreset will release the locks so the files/folders can be deleted.

Website Cache

This folder is similar to the ASP.NET Temporary Files folder in that it contains files from ASP.NET applications run from Visual Studio. This folder is located in each users local settings folder. The location will be a little different on each operating system. For example on Windows Vista/Windows 7, the folder is located at <sysdrive>:\Users\<UserName>\AppData\Local\Microsoft\WebsiteCache. If you are running Windows XP this folder is located at <sysdrive>:\ Documents and Settings\<UserName>\Local Settings\Application Data\Microsoft\WebsiteCache. Check these locations periodically and delete all files and folders under this directory.

Read more: Paul Sheriff's Blog for the Real World
QR: clean-up-after-visual-studio.aspx

Posted via email from Jasper-net

WCF Extensibility – Message Encoders

|
   Now we’re out of the metadata realm, we’re back to the components which are executed while the service is running. This post will focus on the message encoder, which is in theory part of the channel model of WCF, although it doesn’t sit nicely in the channel stack as other “normal” channels (see the diagram in the first post about channels). The encoder is the component responsible for converting between the Message object (used throughout the WCF stack) and the actual bytes which need to be transmitted over the wire. In the majority of the scenarios, using one of the out-of-the-box encoders is enough (since they can handle XML and JSON, the most common formats), but there are cases where we need to define a new format, or even to tweak the output of one of the existing encoders, so a custom encoder is a good alternative.

Implementing a message encoder is not something as simple as implementing an interface or defining one subclass of a WCF class. Because encoders are (somewhat) part of the channel stack, in order to add a custom encoder to the WCF pipeline we need to implement three classes: a binding element, an encoder factory, and finally the encoder itself. The binding element class must derive from MessageEncodingBindingElement. Similarly to the channels, the binding element’s BuildChannelFactory<TChannel> on the client side (and BuildChannelListener<TChannel> on the server side) is invoked when the channel stack is being created. Unlike the “normal” channels, on the message encoding binding element the class doesn’t create a factory / listener at that point. Instead, the encoder class is expected to add itself to the BindingParameters property of the BindingContext parameter of the method – and later the transport will query the binding parameters (if the transport decides to do so), and ask the encoding binding element to be created at a later time.

The differences continue – while in the “normal” channel at the server side a channel listener is created by the binding element, and at the client side a channel factory is created, with an encoding binding element only knows how to create a MessageEncoderFactory. The factory then is responsible for finally creating the MessageEncoder object (in two different ways – see section about the message encoder factory class for a discussion on session-full encoders below). Finally, the MessageEncoder class implements the conversion methods between Message and bytes (again in two different ways – see the section about the message encoder class for more information on streaming below) – the transport channel is the component which will invoke the encoder methods (although, as I already pointed in the post about channels, the transport doesn’t really need to use the encoder from the binding context, it can completely ignore it if it so wishes – but all out-of-the-box WCF transports do use the encoders if they’re available).


Read more: Carlos' blog
QR: wcf-extensibility-message-encoders.aspx

Posted via email from Jasper-net

BrainfuckOS

|
Project Description
-- English --
An operating system developed with Cosmos in C# and runnning special brainfuck-code.


Read more: Codeplex
QR: https://chart.googleapis.com/chart?chs=80x80&cht=qr&choe=UTF-8&chl=http://bfos.codeplex.com/

Posted via email from Jasper-net

AnyMeeting

|
anymeeting-logo-horizontal.png

Full Featured and Free

Hold Large or Small Meetings
With meeting sizes of up to 200 participants, you can host a large webinar or a small collaborative online meeting.

Send Meeting Invitations & Create Custom Registration Forms
Simply enter the emails of your participants, and they will be sent a link to join your webinar, along with time, date and instructions to join!

Sell Tickets to Your Webinars
Earn money by selling tickets to your webinars. Completely integrated with our custom registration forms, it’s simple to use. Your attendees can pay by credit card or PayPal.

Share Your Screen
Your audience will be able to see anything you choose to show them on your screen, so present away!

Live Video Conferencing
Use your webcam to add that personal touch, it’s almost like being there in person. Up to 6 people can video conference simultaneously.

Record Your Meetings
Want to record a live meeting? Just click the record button during your meeting. We even host your recordings so you can share them easily.

Collect Info and Follow-up
Export attendance and survey results to know exactly who your audience was and how they felt about your webinar.


Read more: AnyMeeting
QR: https://chart.googleapis.com/chart?chs=80x80&cht=qr&choe=UTF-8&chl=http://www.anymeeting.com/

Posted via email from Jasper-net

Первая работающая атака на SSL/TLS-протокол

|
Передаваемые по SSL-соединению данные можно расшифровать! Для этого Джулиану Риццо и Тай Дуонгу удалось использовать недоработки в самом протоколе SSL. И пусть речь пока не идет о полной дешифровке трафика, разработанная ими утилита BEAST может извлечь из зашифрованного потока то, что представляет собой наибольший интерес, — секретные кукисы с идентификатором сессии пользователя.

46025019.png

Что такое BEAST?

Всего 103 секунды потребовалось утилите BEAST (Browser Exploit Against SSL/TLS), чтобы расшифровать секретную кукису для входа в аккаунт PayPal. Посмотреть видеокаст можно на Youtube. Это не фейк. Живая демонстрация утилиты прошла в рамках конференции Ekoparty в Буэнос-Айросе, где исследователи выступили с докладом и показали работающий proof-of-concept. Используемая уязвимость действительно позволяет незаметно перехватывать данные, передаваемые между веб-сервером и браузером пользователя. По иронии судьбы атака эксплуатирует не какую-то новую найденную в протоколе брешь, а уязвимость SSL/TLS десятилетней давности, долгое время считавшуюся чисто теоретической. Но, как говорится, раз в год и палка стреляет, так что уж за десять лет уязвимость точно может перейти из разряда теоретических во вполне себе практическую.
Исследователи пока не публикуют утилиту, но делятся whitepaper'ом о проделанной работе. Программа состоит из двух элементов: снифера, который анализирует HTTPS-трафик, и специального агента, написанного на JavaScript и Java, который должен быть подгружен в браузере жертвы (для этого, к примеру, необходимо заставить пользователя открыть страницу с нужным кодом). Агент нужен для того, чтобы особым образом внедрять данные в тот же безопасный канал связи, который используется для передачи секретных кукисов. Как это позволяет дешифровать данные? Вот здесь вступает давно известная уязвимость SSL 3.0/TLS 1.0, на которой мы остановимся подробнее.


Read more: Habrahabr.ru
QR: https://chart.googleapis.com/chart?chs=80x80&cht=qr&choe=UTF-8&chl=http://habrahabr.ru/company/xakep/blog/132344/

Posted via email from Jasper-net

How to programmatically generate C# files from a DLL or EXE

|
   I’m working on a project that involves researching and comparing many versions of the same DLL.   I don’t have the source for every version of this DLL so I needed a way to convert it to C# files and diff those.  Since there are thousands of versions of this file out there I needed to be able to generate the C# files programmatically.

I started with Reflector, but it doesn’t have a simple API needed to generate the files programmatically.

I came across JustDecompile from Telerik and found that they do have a command line API that works great.  I could have just invoked the EXE with Process.Start, but I figured I should see how they are doing and see if I could do everything inproc. So I decompiled the JustDecompile.exe file and found a very simple DLL method that they use to output C# files.
 

1) Download JustDecompile

2) Open up your project and Add References to these two DLLs.

    C:\Program Files (x86)\Telerik\JustDecompile\Libraries\JustDecompile.Tools.MSBuildProjectBuilder.dll

    C:\Program Files (x86)\Telerik\JustDecompile\Libraries\JustDecompiler.dll

3) Add these namespaces:

    using JustDecompile.Tools.MSBuildProjectBuilder;
    using Telerik.JustDecompiler.Languages.CSharp;
    using System.Threading;

4) Add this code to your project where you want to programmatically decompile code

 

MSBuildProjectBuilder projectBuilder = new MSBuildProjectBuilder(dll, outfolder, new CSharpV4());
projectBuilder.ProjectFileCreated += new EventHandler<ProjectFileCreatedEvent>(projectBuilder_ProjectFileCreated);
projectBuilder.BuildProject(new CancellationToken());

Read more: Jon Gallant's Blog
QR: how-to-programmatically-generate-c-files-from-a-dll-or-exe.aspx

Posted via email from Jasper-net

Steam hacked - Valve customer data compromised

|
184_10702_184_5838_steam-logo.jpg?i=1320965788

Email and billing addresses, encrypted passwords and personal data has been breached

The PC's biggest online core games portal has been hacked, with a database of information breached and personal data compromised.

A plundered Steam database, managed by games giant Valve, contains information including user names, hashed and salted passwords, game purchases, email addresses, billing addresses and encrypted credit card data.

The Washington group’s president, Gabe Newell, has issued an apology to users.

As of October 2011, there were around 35 million active user accounts on Steam. It is not known if a portion or the entirety of Valve’s customer network has been hacked into.

The attack likely occurred on Sunday, November 6th, when it was discovered that the Steam forums had been breached.

“We began investigating and found that the intrusion goes beyond the Steam forums,” Newell explained in a massage to the media.

Read more: Developer
QR: Steam-hacked-Valve-customer-data-compromised

Posted via email from Jasper-net

C#/.NET Little Wonders: The EventHandler and EventHandler delegates

|
Once again, in this series of posts I look at the parts of the .NET Framework that may seem trivial, but can help improve your code by making it easier to write and maintain. The index of all my past little wonders posts can be found here.

In the last two weeks, we examined the Action family of delegates (and delegates in general), and the Func family of delegates and how they can be used to support generic, reusable algorithms and classes.

So this week, we are going to look at a handy pair of delegates that can be used to eliminate the need for defining custom delegates when creating events: the EventHandler and EventHandler<TEventArgs> delegates.
Events and delegates

Before we begin, let’s quickly consider events in .NET.  According to the MSDN:

    An event in C# is a way for a class to provide notifications to clients of that class when some interesting thing happens to an object.

So, basically, you can create an event in a type so that users of that type can subscribe to notifications of things of interest.  How is this different than some of the delegate programming that we talked about in the last two weeks?  Well, you can think of an event as a special access modifier on a delegate.  Some differences between the two are:

    Events are a special access case of delegates
        They behave much like delegates instances inside the type they are declared in, but outside of that type they can only be (un)subscribed to.
    Events can specify add/remove behavior explicitly
        If you want to do additional work when someone subscribes or unsubscribes to an event, you can specify the add and remove actions explicitly.
    Events have access modifiers, but these only specify the access level of those who can (un)subscribe
        A public event, for example, means anyone can (un)subscribe, but it does not mean that anyone can raise (invoke) the event directly.
    Events can only be raised by the type that contains them
        In contrast, if a delegate is visible, it can be invoked outside of the object (not even in a sub-class!).
    Events tend to be for notifications only, and should be treated as optional
        Semantically speaking, events typically don’t perform work on the the class directly, but tend to just notify subscribers when something of note occurs.

My basic rule-of-thumb is that if you are just wanting to notify any listeners (who may or may not care) that something has happened, use an event.  However, if you want the caller to provide some function to perform to direct the class about how it should perform work, make it a delegate.


Read more: James Michael Hare
QR: c.net-little-wonders-the-eventhandler-and-eventhandlerteventargs-delegates.aspx

Posted via email from Jasper-net

Disable SSL Certificate Negotiation Validation

|
SSL is required for a growing number of scenarios yet a public certificate which is produced by a trusted certificate authority is not always available. In such scenarios we use self signed certificates. The problems with these certificates is that all certificate validation mechanisms will fail. To overcome that we need to do the following:

1. Disable WCF certificate validation

      <endpointBehaviors>
        <behavior name="clientBehavior">
          <clientCredentials>
            <serviceCertificate>
              <authentication certificateValidationMode="None"/>
            </serviceCertificate>
          </clientCredentials>
        </behavior>
      </endpointBehaviors>

2. Disable Http certificate validation

 ServicePointManager.ServerCertificateValidationCallback =

     new RemoteCertificateValidationCallback(delegate  { return true;  });

Read more: Manu Chohen-Yashar's Blog
QR: disable-ssl-certificate-negotiation-validation.aspx

Posted via email from Jasper-net

Boost 1.48.0 has been released

|
get-boost.png

New Libraries

    Container: Standard library containers and extensions, from Ion Gaztañaga.
    Locale: Provide localization and Unicode handling tools for C++, from Artyom Beilis.
    Move: Portable move semantics for C++03 and C++11 compilers, from Ion Gaztañaga.

Updated Libraries

    Asio:
        Implemented various performance improvements, including:
            Using thread-local operation queues in single-threaded use cases (i.e. when concurrency_hint is 1) to eliminate a lock/unlock pair.
            Allowing some epoll_reactor speculative operations to be performed without holding the lock.
            Improving locality of reference by performing an epoll_reactor's I/O operation immediately before the corresponding handler is called. Also improves scalability across CPUs.
            Specialising asynchronous read and write operations for buffer sequences that are arrays (boost::array or std::array) of exactly two buffers.
        Fixed compile error in regex overload of async_read_until (#5688).
        Fixed Windows-specific compile error by explicitly specifying the signal() function from the global namespace (#5722).
        Changed deadline_timer implementation to not read clock unless the timer heap is non-empty.
        Changed SSL buffer sizes to be large enough to hold a complete TLS record (#5854).
        Fixed synchronous null_buffers operations so that they obey the user's non-blocking setting (#5756).
        Changed to set fd_set size at runtime when using Windows.
        Disabled MSVC warning due to const qualifier being applied to function type.
        Fixed crash that occurs when using Intel C++ compiler (#5763).
        Changed OpenSSL initialisation to support all available algorithms.
        Fixed SSL error mapping when session is gracefully shut down.
        Added some latency test programs.
        Clarified that a read operation ends when the buffer is full (#5999).
        Fixed exception safety issue in epoll_reactor initialisation (#6006).
        Made number of strand implementations configurable via BOOST_ASIO_STRAND_IMPLEMENTATIONS macro.
        Added support for BOOST_ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION flag which switches strand allocation to use a round-robin approach rather than hashing.
        Fixed potential strand starvation issue that can occur when strand.post() is used.
    Chrono:
        #5979 Added chrono rounding utilities as defined by Howard Hinnant here.
        #5978 Add BOOST_CHRONO_HAS_PROCESS_CLOCKS to know if process clocks are available.
        #5998 Make possible to disable hybrid error handling.
        #5906 Take in account the constexpr as defined in the standard.
        #5907 Take in account noexcept for compilers supporting it.
        Fixed some bugs.
        See the History for more details.
    Config:
        Add BOOST_NO_DECLTYPE_N3276 config macro. (See N3276.)
    Fusion:
        Make single_view a random access fusion sequence.
        Remove bogus compile-time asserts from fusion::distance.
        Cleaner implementation of segmented Fusion.
    Geometry:
        Bugfixes:
            Robustness issue, in some circumstances the union failed to output. Fixed.
            Robustness issue, in some circumstances the calculated intersection point was outside the segment. Fixed.
            Concept issue, cartesian intersect didn't understand segments other than the provided one. Fixed.
            Sometimes self-intersections in linestrings were missed. Fixed.
            The fusion coordinate system was not registered correctly. Fixed.
        Solved tickets:
            #5726 (Segment intersection algorithm still assumes 'first', 'second' members)
            #5744 (mistake fusion adapt example)
            #5748 (need include <boost/foreach.hpp>)
            #5954 (distance_pythagoras skips sqrt() step)
        Improvements on algorithms:
            Checking self-intersections is now not done automatically, this can blast performance.
            Besides that, checking self-intersections is made faster.
            Intersections now avoid outputting duplicate points. So they output the minimal set.
        Additional algorithms:
            covered_by: within is defined as "within, not on boundary". covered_by is "within or on boundary"
        Additional functionality:
            within: strategies can now be specified for within<point, box> and within<box, box>
            convert: a much broader range of conversions is supported
            assign: idem, (currently partly) synonym for convert (but reversed arguments)
        Additional coordinate types:
            Basic support for Boost.Rational
(more...)

Read more: Boost
QR: version_1_48_0.html

Posted via email from Jasper-net

עצלנות של מפתחים ואבטחת מידע - והפעם כיצד לעקוף את הבדיקה שטלריק עושים האם קניתם את המוצר

|
בפוסט הקודם הראיתי עד כמה מפתחים לא חושבים מספיק על כל הנושא של אבטחת מידע.
 
היום אני אראה משהו דומה ונראה עד כמה מפתחים כותבים לפעמים בצורה מגוכחת.
 
 
אחד הכלים החשובים ביותר בכל סביבת פיתוח - היא הפקדים של טלריק, בכל סביבה שבה אני עובד (win form, web, wpf, silverlight) אני משתדל שיהיה לי את היכולת להשתמש בפקדים שלהם.
 
כמובן שהפקדים עולים כסף (ובכלל לא זול - בסביבות 1000$ עבור סביבה אחת - אבל זה שווה כל שקל), חשוב שיהיה ברור שאני לא מעודד לגנוב אותם חלילה - מטרתי בפוסט זה היא רק להראות עד כמה חשוב לכתוב קוד נכון.
 
בימים אלו יצא לי לראשונה להשתמש בחבילה של wpf controls שלהם, ובכל הפעלה של האפליקצייה קבלתי את ההודעה המעצבנת הבאה:

Posted via email from Jasper-net

GoogleTestAddin

|
Project Description
GoogleTestAddin is an Add-In for Visual Studio 2010. It makes it easier to execute/debug googletest functions by selecting them.

You'll no longer have to set the command arguments of your test application to execute only specified functions or tests.

The googletest output is redirected to the Visual Studio output window. On failed tests you can easily jump to the code by doubleclick the error message.

Read more: Codeplex
QR: https://chart.googleapis.com/chart?chs=80x80&cht=qr&choe=UTF-8&chl=http://googletestaddin.codeplex.com/

Posted via email from Jasper-net

Free Icon Set For Web Designers: Aroma (250+ PNG Icons)

|
Today we are delighted to release another freebie for our design community. There are many free icon sets out there, and there are quite many commercial ones as well. Yet a good, consistently designed icon set is always a welcome addition to any designer’s toolbox. Oliver Twardowski had released the Ultimate Free Web Designer’s Icon Set (750 icons, including PSD sources) in the past, and this time he has prepared a fresh, new icon set which contains over 250 original high quality PNGs. Please notice that some icons may be similar to the ones released in the previous set.

screenshot1.jpg


Read more: Smashing magazine
QR: https://chart.googleapis.com/chart?chs=80x80&cht=qr&choe=UTF-8&chl=http://mgmt.smashingmagazine.com/2011/11/17/free-icon-set-for-web-designers-aroma-250-png-icons/

Posted via email from Jasper-net

A simple tip to make your debugging sessions go easier

|
TL;DR: In C# use [DebuggerDisplay("")] on your classes and follow better practices.

So lets say we have a class (C#) that looks like this:

public class Person
{
    public string Name { get; set; }
}

What will Visual Studio’s debugger show me for this guy?

weak_sauce_display.png

Not very awesome at all. And anything less than awesome, is just no bueno.

We can make this a lot better. All the debugger is doing is calling the ‘ToString’ function on your object which by default is just returning the type name. If you see the {} around the value in the debugger you know that it is calling the ‘ToString’ method. So the first thing we could do is just override the ‘ToString’ method.
public class Person
{
    public string Name { get; set; }
    public override string ToString(){ return Name; }
}

Which gives us:

hot_sauce.png

Read more: CodeBetter
QR: https://chart.googleapis.com/chart?chs=80x80&cht=qr&choe=UTF-8&chl=codebetter.com/drusellers/2011/11/17/a-simple-tip-to-make-your-debugging-sessions-go-easier/

Posted via email from Jasper-net

The Boost C++ Libraries

|
Table of Contents

Content
What you will learn

This book is an introduction to the Boost C++ Libraries which complement the C++ standard by adding functions helpful in practice. As the Boost C++ Libraries are based on the C++ standard, they are implemented using state-of-the-art C++. They are platform independent and are supported on many operating systems including Windows and Linux by a large developer community.

The Boost C++ Libraries enable you to boost your productivity as a C++ developer. For example, you can benefit from smart pointers which help you to write more reliable code or use one of the many libraries to develop platform independent network applications. Since many Boost C++ Libraries are going to be incorporated into the next version of the C++ standard, you can prepare yourself starting today.


Read more: The Boost C++ Libraries
QR: https://chart.googleapis.com/chart?chs=80x80&cht=qr&choe=UTF-8&chl=http://en.highscore.de/cpp/boost/

Posted via email from Jasper-net

MultiBinding in Silverlight 5

|
Introduction

This article presents a MultiBinding implementation for Silverlight 5, enabling aggregating values from several sources to one target dependency property. In contrast to WPF, Silverlight only supports single-value Binding out-of-the-box, but thanks to the support for custom markup extensions introduced in Silverlight 5, it was possible to write a MultiBinding implementation with similar syntax and functionality as the WPF version of MultiBinding.

This markup extension MultiBinding supports all types of source bindings including data context sensitive ones and bindings with named elements and RelativeSource. It also supports two-way binding, i.e., converting back from a single target value to multiple source values. It can also be applied to several elements using styling. In some aspects, this Silverlight version extends the WPF MultiBinding:

    Source bindings can be declared using XAML markup attribute-syntax ({z:MultiBinding}) as a complement to specifying the source bindings in a collection using the element syntax (<z:MultiBinding>).
    The MultiBinding properties Converter, ConverterParameter and StringFormat can be bound dynamically to arbitrary sources using Bindings.
    Sources are not restricted to Bindings. String constants, XAML objects, StaticResource and other markup extensions can be used as individual sources.
    In two-way binding, the normal Silverlight validation mechanism can be used when exceptions are thrown from the user-provided IMultiValueConverter.ConvertBack implementation.
    Converters implementing the single-value IValueConverter can also be used with this MultiBinding, making it useful for single source bindings with Converter, ConverterParameter or StringFormat changing during run-time.

Background

Unlike an ordinary Binding, MultiBinding allows bindings of more than one source to a single dependency property. One common usage is to present a customized text that includes values from several sources. For such scenarios, MultiBinding offers a StringFormat property to define the format with placeholders for the source values to be inserted. But the usage is not restricted to text. A custom IMultiValueConverter can be used to specify how the source values are to be combined.


Read more: Codeproject
QR: SilverlightMultiBinding.aspx

Posted via email from Jasper-net

WCF # 9 – WCF Channels and How WCF Channel stack works?

|
Hi Geeks,

Today we will see a very important feature/part of the WCF called CHANNELS. A CHANNEL IS THE CONDUIT through which all messages pass to and from WCF applications. It is responsible for preparing and delivering messages in a consistent way. Channels are defined for transports, protocols,and message interception.

Channels are layered together to create a CHANNEL STACK.

IC26873.gif


The goal of a channel stack is to transform a message into a wire format compatible with the sender and receiver and to transport the message.

There are two types of channels that are used to do this:

1) Transport channels
2) Protocol channels.

 

1) Transport Channels

Transport channels always sit at the bottom of the channel stack and are responsible for transporting messages using a transport protocol. WCF provides a number of transport protocols, including HTTP, TCP, MSMQ, peer-to-peer, and named pipes.

Read more: Beyond relational
QR: wcf-9-wcf-channels-and-how-wcf-channel-stack-works.aspx

Posted via email from Jasper-net

Reduce debugging time using the .NET StackTrace class

|
doItinTheRightWay.gif

Abstract

The article describes how to use the .NET StackTrace class and its frames to navigate through the source code during Exception handling. The class used to extract info from the StackTrace is hosted inside a DLL assembly and ready to use inside any .NET 3.5 or higher Solution.
Introduction

First of all, what is a stack trace? During the execution of a program, it's usual to have functions or methods which call other functions and/or methods; these, in turn, call other functions and/or methods so that we have a chain of calls. StackTrace is a structure reporting this sequence of calls in the right order they occurred.

As stated by the MSDN: "Stack trace information will be most informative with Debug build configurations. By default, Debug builds include debug symbols, while Release builds do not. The debug symbols contain most of the file, method name, line number, and column information used in constructing StackFrame and StackTrace objects."

Now the question is how to use these information? Very often, during debugging or in short cycle development, I struggle with Exceptions threw by very deep code; in cases like that, what I can do is: navigate from call to call diving into the code until the source of the thrown exception is reached... another possibility is read the call stack and see the line of code that threw the exception. The class StackTrace lists the sequence of function/method calls, so the main idea is use this list of calls to make some sort of automation for navigating through the source code.
Using the code

The core is the .NET StackTrace class. If you create an instance of the class in any point of your code (see the snippet of code below), you can inspect the chain of calls that bring you to that point of your code!

using System.Diagnostics;
. . .
StackTrace stacktrace = new StackTrace();
StackFrame[] frames = stacktrace.GetFrames();
string stackName = string.Empty;
foreach (StackFrame sf in frames){
    System.Reflection.MethodBase method = sf.GetMethod();
    stackName += (method.Name+"|");
}//end_foreach


Read more: Codeproject
QR: StackTraceDumper.aspx

Posted via email from Jasper-net

איך לשנות את תפריט התחל בחלונות 8 בצורה אוטומאטית - יצירת קבצי רג'יסטרי

|
כהמשך לפוסט הקודם, מסתבר שבמידה ומפעילים את התפריט הישן אז תוכנות מטרו לא פועלות יותר (כאמור, זו גרסת מפתחים מאוד ראשונית).
יחד עם זאת, להפעיל את תפריט התחל הישן מאוד שימושי, ולכן עדיף לעשות את שינוי הרג’יסטרי בצורה טיפה יותר אוטומאטית, ע”י קבצי reg שנכתוב ידנית.

בשביל ליצור כזה קובץ, ניצור קובץ חדש בשם ShowWin7StartMenu.reg, ובתוכו נרשום:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer]
"RPEnabled"=dword:00000000

ובשביל ליצור את הקובץ שמחזיר את המצב לקדמותו, ללא תפריט התחל ועם ממשק מטרו עובד, ניצור עוד קובץ בשם HideWin7StartMenu.reg :

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer]
"RPEnabled"=dword:00000001

Read more: אלעד כץ
QR: how-to-automatically-change-win8-start-menu-using-batch-reg-files.aspx

Posted via email from Jasper-net

Thread Synchronization with Semaphore

|
Introduction

Semaphore is a synchronization technique where we can control number of threads to access a resource. In lock/Mutex, only one thread can access resources at a time. But Semaphore allows multiple threads to access the same resource at a time. We can limit the number of threads that can access the same resources. In this article, I have shown three different ways to access resources.

    No-1. No Synchronization
    No-2. Synchronization with Monitor
    No-3. Synchronization with Semaphore

Using the Code
No Synchronization

With no synchronization, all threads run simultaneously and execute the same piece of code simultaneously. There is no restriction on how many threads can access it. Following is the code:

private void btnNoSync_Click(object sender, EventArgs e)
{
            listBox1.Items.Add("== No Synchronization ===========");
            int TotalThread = 5;
            Thread[] Threads = new Thread[TotalThread];
            for (int i = 0; i < TotalThread; i++)
            {
                Threads[i] = new Thread(new ThreadStart(AccessCode));
                Threads[i].IsBackground = true;
                Threads[i].Start();
            }
}

public void AccessCode()
{
   listBox1.BeginInvoke(new ParameterizedThreadStart(UpdateUI), new object[]
       {"Thread ID : " + Thread.CurrentThread.ManagedThreadId.ToString() + ": Entered" }
                        );
   Thread.Sleep(500);
   listBox1.BeginInvoke(new ParameterizedThreadStart(UpdateUI), new object[] 
       { "Thread ID : " + Thread.CurrentThread.ManagedThreadId.ToString() + " : Exit" }
                        );
}
 
// Following code is used to update UI
public void UpdateUI(object objOutput)
{
   listBox1.Items.Add(objOutput.ToString());
}

Synchronization with Monitor

Synchronization with monitor class, only one thread can access the same resource at a time. Thread is run simultaneously but it can access the block of code one at a time. There is a restriction on thread so that only a single thread can access a particular code block.

private void buttonMonitor_Click(object sender, EventArgs e)
{
            listBox1.Items.Add("== Using Monitor =============");
            int TotalThread = 5;
            Thread[] Threads = new Thread[TotalThread];
            for (int i = 0; i < TotalThread; i++)
            {
                Threads[i] = new Thread(new ThreadStart(AccessCodeWithMonitor));
                Threads[i].IsBackground = true;
                Threads[i].Start();
            }
}

private void AccessCodeWithMonitor()
{
            Monitor.Enter(this);
            try
            {
                listBox1.BeginInvoke(new ParameterizedThreadStart(UpdateUI), new object[]
                     { "Thread ID : " +
            Thread.CurrentThread.ManagedThreadId.ToString() + " : Entered" });
                Thread.Sleep(500);
                listBox1.BeginInvoke(new ParameterizedThreadStart(UpdateUI), new object[]
                     { "Thread ID : " +
            Thread.CurrentThread.ManagedThreadId.ToString() + " : Exit" });
            }
            finally
            {
                Monitor.Exit(this);
            }
}
private void UpdateUI(object objOutput)
{
   listBox1.Items.Add(objOutput.ToString());
}


Read more: Codeproject
QR: ThreadSynch_Semaphore.aspx

Posted via email from Jasper-net

Just how different, or similar, is Silverlight 5 and WinRT, on a type/method basis? The WinRT Genome Project...

|
What is the hardest part about learning a new programming language? I’ve often argued that learning a new language is easy, it’s learning a new framework is can be time consuming.

In case you’ve been living under a rock lately, you probably already know that Windows 8 Metro style apps can be built with Xaml & C#. This means that .NET & Silverlight developers can leverage their existing skillset to easily build Win8 Metro Xaml style apps. But just how similar is Silverlight to WinRT?

In an effort to get some real numbers, I created a program to iterate over all the default assemblies included WinRT and compare with those found in Silverlight 5. Here’s what I found:

...

Comparison details for those interested:

    I included all Silverlight 5 assemblies installed as part of the SDK. Other assemblies such as RIA services and the Silverlight Toolkit were not included.
    The public Silverlight 5 RC was used. IMO it is highly unlikely any numbers will change once the final version is released.
    Differences in namespaces, type accessibility, and base classes were still counted as a match. For example, I ignored differences such as a type being sealed or implementing ISerializable.
    Similar liberties were taken with members.
    Property get & set methods and event add & remove methods were not counted as unique members.


Read more: Greg's Cool [Insert Clever Name] of the Day
Read more: The WinRT Genome Project
QR: https://chart.googleapis.com/chart?chs=80x80&cht=qr&choe=UTF-8&chl=http://programmerpayback.com/2011/11/17/the-winrt-genome-project/

Posted via email from Jasper-net

Why IL?

|
One of the earliest and most frequently-asked questions we got when we announced the Roslyn project was "is this like LLVM for .NET?"

No, Roslyn is not anything like LLVM for .NET. LLVM stands for Low-Level Virtual Machine; as I understand it (admittedly never having used it), compiler "front ends" take in code written in some language -- say C++ -- and spit out equivalent code written in the LLVM language. Another compiler then takes the code written in the LLVM language and writes that into optimized machine code.

We already have such a system for .NET; in fact, .NET is entirely built upon it and always has been, so Roslyn isn't it. The C#, VB and other compilers take in programs written in those languages and spit out code written in the Common Intermediate Language (CIL, or also commonly MSIL or just IL). Then another compiler -- either the jitter, which runs "just in time" at runtime, or the NGEN tool which runs before runtime -- translates the IL into optimized machine code that can actually run on the target platform.

I'm occasionally asked why we use this strategy; why not just have the C# compiler write out optimized machine code directly, and skip the middleman? Why have two compilers to go from C# to machine code when you could have one?

There are a number of reasons, but they pretty much all boil down to one good reason: the two-compilers-with-an-intermediate-language system is much less expensive in our scenario.

That might seem counterintuitive; after all, now we have two languages to specify, two languages to analyze, and so on. To understand why this is such a big win you have to look at the larger picture.

Suppose you have n languages: C#, VB, F#, JScript .NET, and so on. Suppose you have m different runtime environments: Windows machines running on x86 or x64, XBOX 360, phones, Silverlight running on the Mac... and suppose you go with the one-compiler strategy for each. How many compiler back-end code generators do you end up writing? For each language you need a code generator for each target environment, so you end up writing n x m code generators.


Read more: Fabulous Adventures In Coding
QR: why-il.aspx

Posted via email from Jasper-net

BitTorrentSharp

|
Project Description
BitTorrent Sharp is an open source bit torrent protocol and server/client implementation.


Solution including: (plan)

    BEcoding
    Tracker client\server implementation
    Peer to Peer protocol
    Super Buffer

Additional protocol:

    uTP
    DHT

Read more: Codeplex
QR: https://chart.googleapis.com/chart?chs=80x80&cht=qr&choe=UTF-8&chl=http://btsharp.codeplex.com/

Posted via email from Jasper-net