Duff show

octobre 10, 2009

xaml designer for monodevelop

Classé dans : Mono — duff @ 7:48

Long time, I have not blog… So I will pop up some news!

First, I have worked on monoTorrent to fix some bug on DHT, clean code, support for nodes segment in torrent file and use it. This last part is not on svn yet but will be soon. (Alan is reviewing it) Go Alan go! 0.80 of monoTorrent will follow soon after that and I hope that 1.0 will not been so far ;) .

The second point is a xaml designer plugin for MonoDevelop. I am working on it for 1 month.
You can found it here:
I have start by converting the lunar eclipse to use the  MoonlightHost GTK widget which replace the old GtkSilver.

I add a zoom system to zoom with wheel from the mouse cursor position. But, I am not happy of it because it is a drawing system in canvas but I miss a designer mode to add controls on container and all things like stetic done on MonoDevelop.

So, I have start to write a glu between lunar eclipse system and MonoDevelop view part. Now, I start to work on the designer part to drag and drop item from toolbox on the xaml designer.

I am far from the end and it is still very buggy but here are some screenshots!

First, you see the new button designer when you work on xaml file!

switch design mode

Here the code is loaded in the designer and now we get that :
designer

Now, you see that I have adapt the code from stetic gtk designer to have this beautiful combo-box with the tree of the xaml document:
combo box

Now, you have 2 modes:

  • one for drawing with toolbox as gimp :

drawing mode

  • and the 2cd one for designer with all control that you can drag and drop!

designer mode

The drag and drop is still not working and if people understanding the gtk system can help me on that, I will be happy ;)

mai 12, 2009

udp tracker and distributed search

Classé dans : .NET, Mono, monotorrent — duff @ 3:41
Tags: ,

WOW, long time I have not blog about my life…. (2 years)

But today, I want to talk because a lot of great things append:

  • First, I have complete this week the udp tracker code for monotorrent library.  The goal is to reduce overhead. I know that UDP is an ugly protocol (No IPv6 support, no field to represent the user agent,…)
  • I have compose an idea of a distributed search engine, I will send it to bittorrent.org but I need feedback before sending it. This mean that with meta-data exchange support and DHT, we can be fully tracker less.

This mean that we are close features  full. We will not code the azureus support because utorrent extension have the same features. I hope Alan will release the 1.0 soon.  Monotorrent have a new website with a wiki with all you need to know to use monotorrent library. We still need to improove some documentation, so fill free to edit/add page in wiki…

Monotorrent.com is still an 404 error but we have the site.

Alan have done a beautiful work with this library and I have help him a bit on few part and I am really happy of it.

Alan have refactored a lot of module to make it very flexible, so do not just think to bittorrent client GUI (as monsoon). This library can be used in many other ways. In fact every time you need to spread data, you can think to it. Direct download is quick when you have only few downloader but when you need to spread a lot of data bittorrent is the best. So it can be used to spread patch among a a lot of client as done on World of Warcraft.  And do not forget that this can be used cross-plateform.

Just for fun, here is the list of current features in MonoTorrent library:

  • Encryption
  • Dht
  • Peer Exchange (uTorrent style)
  • Local Peer Discovery
  • Web Seeding (getright style)
  • Magnet Links / Metadata download
  • IPV6
  • FAST Extensions
  • Sparse files (NTFS file system)
  • Multi-tracker torrents
  • Compact tracker responses
  • IP Address white listing / black listing
  • Fast Resume
  • Initial Seeding (super seeding)
  • Selective downloading
  • Prioritised downloading
  • Full bittorrent tracker
  • Dynamic request queue size
  • Memory Cache
  • Endgame mode
  • Per torrent and global rate limiting
  • Individual file relocation

juin 13, 2008

monotorrent api is great !

Classé dans : .NET, Mono, development, monotorrent, open source — duff @ 8:53

Monotorrent is really great thanks to the beautiful work of Alan.
I have read the code and it is really easy to understand.

Thanks to this beautiful Api it was very easy to add a lot of features to the core api.

So here is what I have added during the last month (with the help of Alan):

  • super-seeding (also known as the initial seeding) it permit to be faster when you have made a torrent and start to broadcast it on net…In this mode the rules to choose where I send piece are different
  • uTorrent peer exchange: exchange with the swarm the peers.
  • web seeding (getright specification only) This specification allow to download on web site with HTTP and FTP and do not need any script on server side (just a regular link). This specification contain a bonus which is just a nice to have : gap management but I have not implemented it. There is just some basic code on my branch in piece picker class.
  • libtorrent metadata support: you can receive the other metadata contain in the torrent file from other peer with this message. this features allow monotorrent to be tracker less. You just download the infohash with a magnetlink and get from other peers the torrent file.

I have code some other things which are not on trunk :

  • magnet link: this features is like the edonkey link. It is link to the libtorrent metadata features.
  • a basic work for gap management in piece picking process (getright specification)
  • Event and function to have chat message usable in lib. This will evolve to support Azureus chat message protocol
  • azureus protocol: I have just started it and it is far from compilable but will be soon ;) I need to do the negotiation protocol too!

In the big next TODO there are

Here you have a list of extension in protocol:

http://wiki.theory.org/BitTorrentSpecification#Reserved_Bytes (technical view)
http://www.bittorrent.org/beps/bep_0000.html#draft-beps (official draft)

octobre 13, 2007

ironruby under mono

Classé dans : .NET, Mono, development, open source — duff @ 6:05

Today, I have made a patch to fix the rakefile of Microsoft team of IronRuby.

This patch allow ironruby to be compiled with mono with the basic rakefile.

You just have to use mono flag : “rake compile mono=1″.

You can found it on ironruby mailing list.

ironruby with mono

septembre 17, 2007

Great tool

Classé dans : .NET, Mono, development, open source — duff @ 7:43

I will talk about a great tool which is not a lot used by developer. This tool is not recent but it is not a lot used. So I will try to make people used it!

A lot of developer use only Visual studio in DotNet project but you have a lot of other IDE(or build tool) to manage your project:

  • sharpdevelop
  • monodevelop
  • nant
  • make (autotool)

You can even used some IDE with plugin (eclipse for example…).

And for VS you have VS 2002, VS2003, VS2005 and VS ORCAS in beta2.

So when you start an open source project, you have to said we will all worked on the same IDE. If you want to support more than one IDE, you will have to synchronized the solution file and it will take a lot of time for nothing.

An other case, you want to switch from VS2003 to VS2005. So you will have dev on the older one and some on new one. This is now not a big issue because you have VS Express but at start you have to buy your Visual studio. For a open source developer, it is so expensive.

DotNet PreBuild is the tool to save your time. It is a project file generator based on XML.

This tool is great because you have to maintain only one XML project file and you target Visual Studio .NET 2002, 2003, 2005, SharpDevelop, MonoDevelop, NAnt and Autotools.

My favorite feature is that you can said take all file with name as “*.cs” in this folder.

With that you have nothing to maintain only have to put file in good folder and when you want to not used a file rename it or delete it.

To make project file you have to call the Prebuild.exe with /target:MyTarget where MyTarget can be all target writen previously.

So quite easy to done batch file for each project and just have click it and a project file of your choice is generated.

The only missing features for me is the possibility to parse a project file to generate the prebuild project file.

In my opinion, this project is good for mono because it make project file not linked with an IDE (So, with an OS).

septembre 6, 2007

JavaScript compiler go ahead…

Classé dans : .NET, Mono, development, open source — duff @ 2:08

Today, I have fixed thanks to my new unit tests 3 major bugs in the compiler.

I guess now that my tokenizer (lexer) is bug free (else than regular expression which is not finished)

I have done a small sample test but I have still issue because RowanGenerator is far from finished.

I have discover that regexp is not finished too.

In fact to sum up we have :

  • Engine and RowanGenerator class to finished
  • Strings, parser for expression, Engine, RowanGenerator, IdentifierTable ot unit test
  • And a console compiler to test all ;)

With the recent anouncement of Miguel, I will maybe have MS unit test to test my code (so exiting!)

UPDATE:

here is a screenshot myconsole compiler. As you can se, I am not ready for released ;(

But it is funny to check it for first time. I am pretty sure that rowan generator is in big part responssible for that.

Mono jscript compiler

For life side, I leave officialy Pepsico France.

I will be free the 26th october. I will join SAGE which is a software editor. It is a real step in my life. I want to be in firm where software is the core of business, where I will have chance to improove myself and climb step by step the hierarchical structure ;) .

 

septembre 4, 2007

mono winforms

Classé dans : Mono, News, development, open source — duff @ 11:00

As many knows, it is the last part of mono which need to be implement to have a full support of the MS framework .NET 2.0.

If you read the class status page of Mono, you will see that we are near 98% of complete.

mwf-class-status.jpg

In fact, all MWF of .NET 1.0 take a big place in it.

What is really missing are:

  • HTML element and friends
  • WebBrowser and friends
  • some little other class but not as useful/hard to make as previous one

And what I read today is that a new component named Mono.Mozilla provide a wrapper arround mozilla unmanaged class.

So now we have the webBrowser in MWF!!!

What a good news!! I guess that we will have in next version of mono the full support of .NET framework 2.0 if all MWF bug are solved…

Everaldo have post a good review to see the state of bug tracking in MWF.

septembre 3, 2007

Compiler moonlight

Classé dans : .NET, Mono, development, open source — duff @ 5:41

Ok,

So I have worked on the new jscript compiler for moonlight for 2 months. And I have now a clear idea of how it worked and what is the MS system.

The JScript compiler use standard pattern as lexer and tokenizer but use too some custom things that I will show you.

  1. The Tokenizer read the file and translate it to token and check the lexical grammar. Each token is linked to a keyword, a punctuator or a literal ( indentifier, numeric,…)
  2. The parser will translate the array of token in a compiler object tree aand check the syntax.
  3. The rowan generator will translate the object tree in a runtime object tree wich is common for all scripting language.
  4. The compiler will just manage all called and return the runtime object tree.
  5. All node contain an Emit and a walker function witch seems to be 2 visitors pattern. the first one must Emit code with CodeDOM and the second one must be here to do whatever you want with this tree. For example, we can use it to do some check (as gendarme) or provide code completion in an IDE.

The other big thing of this dll is the Engine system witch is just a system to have full featured and flexible compiler to embded it in whatever you want ( console, GUI, tool, IDE …).

It manage console option in it. For moment, I am a bit stuck on that because ConsoleHost is not overriden. So I guess I have to done it myself.

About status of this assembly, I have done quite all things. The only missing thing is to finished the RowanGenerator and test all with unit test and a small console. Hope I will post screenshot of my console compiler soon ;)

cool t-shirt!

Classé dans : Me, Mono — duff @ 4:00

I have received this week end my t-shirt of Mono.

I have ask to miguel to send me one and received it quickly.

I am so happy than I have wear it at my job under my shirt ;)

See the cool logo which is on top :

mono logo

So cool is not it ? ;)

septembre 1, 2007

Lunar eclipse

Classé dans : .NET, Mono, open source — duff @ 4:32

This is the name of the new xaml designer for moonlight. It will replace the MS Expression Blend for mac and linux where blend does not work…

Congratulation to Alan for this work. Alan is the father of MonoTorrent and have done an amazing job on it.

The application must be improove for user friendly but the engine is here thanks to Alan and it is quite funny ;) . I know that the goal is integrate as an addin in monodevelop. So this small appli is just here to show you the core of the designer which will end up in monodevelop.

You can see some video of this tool here, here and here.

And you can follow the evolution of this tool on the SVN:

http://anonsvn.mono-project.com/viewcvs/trunk/lunareclipse/

So, now if you take a look at what have been done for moonlight it is wonderfull. You have so much thing which have been done on it in a really small time!
Here you have the current state of moonlight:

Task Owner Status
Status Pages miguel started
Rendering Engine Design various developers under development
C++ XAML parser Jackson under development
Mozilla Plugin everaldo started
New Security System mark, spouliot under research
Syndication and JSon APIs Olive-list Early implementation on SVN
Hosting APIs, talk to browser toshok under development
Mono new build setup for 2.1 jbevain started, under development
Media Codecs nobody Prototype working, but need a long term solution.
Polygon clipping nobody not started, SL 1.1 does not seem to expose this need.
Exposed DOM interface jackson started
Open Source Javascript compiler Olivier in progress, in Olive module.
Silverlight Unix SDKs jbevain linker and build started, depends on build system  
Testing environments nobody not started, depends on build system

I hope the next release of mono will include a all this new stuff around Moonlight. Hope MS will soon released the silverlight final version to see the end goal and have a real documentation.

(source : Miguel)

Page suivante »

Publié sur WordPress.