Duff show

mai 29, 2009

theora decoder

Classé dans : .NET — duff @ 10:56

Since MonoTorrent is quite features complete. I look for new challenge ;)

So I have start to work on dirac but I skip it quickly because we have first to work on a more flexible system in for media stream source in moonlight.

I have start to code something where I get out of ogg media stream source the vorbis code and try to make ogg accept other codec as dirac or theora.

I come to conclusion that before done glue I need to have more codec to see all the needs of differents codecs. So I start to code a theora decoder from specification of xiph.

If you want to help, I code on my own branch here:

http://anonsvn.mono-project.com/viewvc/branches/cscodec/

Anyway, it is just a start so do not expect to read a single video, it need a lot of work to achieve it!

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)

février 14, 2008

A managed OS

Classé dans : .NET — duff @ 1:44

We have ever heard about singularity the Microsoft project to make an OS in managed language. Most is done in managed mode but some part are done in asm.

And now, we have 2 projects in open source which try to make it all in manged way SharpOS and Cosmos

Both project have succeed to boot with virtual machine.

Cosmos have made a compiler which convert the IL(intermediate language) code in assembler code. So code is compile just in time but ahead of time. (The mono compiler can ever done it). I do not know if there are differences between mono AOT and Cosmos one…

SharpOS use another way. They build a PE file with MultiBoot header.

SharpOS have a great documentation to explain how it work, especially on boot time.

If you want to learned how work an OS there is another good project named SOS for Simple OS (fork from KOS) which is lead by a French Linux magazine. This is in C/C++ but you have a lot of documentation which come from articles in the magazine freely available. All article are in french but it can help if you want to help SharpOS or Cosmos and know nothing about kernel.

sharpos

décembre 23, 2007

libxml2.so issue with mono 1.2.6

Classé dans : .NET — duff @ 10:35

If you have an issue on ubuntu to build monodevelop 0.18 because of an error with the libxml2.so, I have found a solution.

The error talked about gzopen64 which is not found. So I looked for it in google and find this bug report:

In fact, the bug come from a bad link with libz to check it just do

whereis libxml2 //to get where it is install.

For me it is in /usr/lib, so I do

ldd /usr/lib/libxml2.so.2

This give me this result:

linux-gate.so.1 => (0xffffe000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7e2c000)
libz.so.1 => /home/myuser/mono/lib/libz.so.1 (0xb7e17000) // this is the install folder of mono 1.2.6
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7df2000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7ca8000)
/lib/ld-linux.so.2 (0×80000000)

As you can see, the libz.so.1 is linked to my binary install of mono 1.2.6.

So when I check it, I see that this is a link file to libz.so.1.2.1 in the same folder.
So, I check my previous version of this lib
whereis libz

/usr/lib/libz.so.1

This file is a linked to libz.so.1.2.3.3.

Haha! Here we are, the version of ubuntu gutsy is 1.2.3.3 and the version of mono is 1.2.1.1. So I just change the link to point to the 1.2.3.3 lib. To do that you have a lot of solution.

You can copy/paste the file from /usr/lib to your mono/lib or and just change the link file libz.so.1 to link to the libz.so.1.2.3.3. (Or you can do the trick with ldconfig as said on the bug report.)

And now monodevelop build! You can enjoy all the new features ;)

rem: The other big issue I face of is boo build because it use nant and I do not found how to install deploy it as “make install”(copy assembly in gac and make pc file). So I use gacutil to install all dll but I miss the pc file ( package config). So, I have copy the old boo.pc from /usr/lib/pkg-config/ and change version and path to get the good boo install from my new mono 1.2.6 installation folder.

I hope this can help other people who try to have monodevelop 0.18 on ubuntu!

Merry Christmas!

octobre 18, 2007

ubuntu 7.10 released!

Classé dans : .NET — duff @ 11:27

This is not official but will be in few hours now official…

Ubuntu released the 7.10.

My wife want to test linux. So I will install ubuntu on her PC to compare my suse with ubuntu ;)

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

octobre 11, 2007

.NET advantage released!

Classé dans : .NET, development — duff @ 1:46

For all people using .NET in your job, the basic controls/components of .NET are not enough sometimes and you have to develop components. you have a lot of .NET package on the .NET to help you.

With all this stuff, you extends the basic toolset with a lot of things and have not to reinvent the weel.

On of the most known package is NetAdvantage which contain a lot of controls, components, tools for ASP.NET and windows forms.

This new release bring new features:

  • Vista look-and-feel without WPF needs
  • Export PDF, XPS and Excel
  • Improve Visual Studio help integration
  • Improve AJAX support for WYSIWYG

source

octobre 4, 2007

wiki and code

Classé dans : .NET — duff @ 11:29

The core ideas of wiki are:

  • Every readers are authors
  • Keep language easy ( easier than html)
  • When you write a text you can flag all keyword to make it expandable for future.

The first is the concept is not far from open source : every user can read and modify source.

The second concept is to have the language which have the better ratio feature/lines of code. This is a key concept for all language. All modern language try to increase this ratio.

The third one is idea can be compared to the autogeneration of stubbed functions in VS2005.

It is funny to see that wiki key concept can be compare to the coding world.

busy life

Classé dans : .NET — duff @ 9:59

So sorry to not post since 1 week but I had a lot of work.

First, I will leave soon pepsico France for SAGE.

job change

The issue is that, I am the only one in IT team who know business part of supply chain and technique part of it. So, I have to transfer a lot of knowledge to other member of team and I have to finished my year objective before leaving.

So much thing to do… But I want to leave PepsiCo with a clean place.

  • I have made some technical documentations about all part of the supply chain applications.
  • I have made formation to other team member for all my application (Cost of goods, logistic gateway, claim system, palette system, data-warehouse logistic, client chase payment,…)
  • I have get back 25K€ from one bill of our palette suppliers.
  • I have improve end month process of Cost of goods application.

About the last point, I have done so much things. Before the end month process take 1H30 to import all data and calculate and now it take only 2min20. I have improve the logging system to have good reports to debug it and simplified the process. I have reformat all code to use standard naming rules. I have remove all extra call in our ERP to call data which is ever import in other part of data-warehouse. The other big point is that the human interface is just a page where you see a small image animation witch said process go on. And now we have a page with auto refresh and a table which show the state of the process to user. So now it is not a black box for users!!

So, now, I can say that this process is clean, standard, quick, user friendly and well logged.

This application is well known as the pain in the ass. 5 different people (including 3 trainees) have worked on it and it have finished to a bad designed application with a lot of issue and really bad performance. The core of the system is a end month process which calculate and reports errors to solve to close the period. The main user of the application is really happy for it.
I am really happy about all this work done in a real short time.

Page suivante »

Publié sur WordPress.