The openSUSE project gives Linux developers and enthusiasts everything they need to get started with Linux.
The goals of the openSUSE project are:
OpenSuse is covered in SourceLabs Self-support Suite for Linux and Open Source Java
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char **argv)
{
unsigned int max, i;
int sum = 0;
max = atoi (argv[1]);
for (i = 0; i <= max; i++) {
printf ("%u\n", i);
sum += i;
}
fprintf (stderr, "master value: %d\n", sum);
return 0;
}
[fejj@moonlight benchmarks]$ time ./output 5000000 | java -server -Xbatch sumcol
master value: 1647668640
2147483647
real 0m4.606s
user 0m5.264s
sys 0m0.276s
[fejj@moonlight benchmarks]$ time ./output 5000000 | mono sumcol.exe
master value: 1647668640
1647668640
real 0m1.415s
user 0m2.136s
sys 0m0.228s
[fejj@moonlight benchmarks]$ time ./output 5000000 | ./sumcol
master value: 1647668640
1647668640
real 0m1.043s
user 0m1.604s
sys 0m0.188s
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char **argv)
{
unsigned int i, max;
int sum = 0;
max = atoi (argv[1]);
for (i = 0; i < max; i++) {
printf ("1\n");
sum++;
}
fprintf (stderr, "master value: %d\n", sum);
return 0;
}
[fejj@moonlight benchmarks]$ time ./output 5000000 | ./sumcol
master value: 5000000
5000000
real 0m0.601s
user 0m0.828s
sys 0m0.032s
[fejj@moonlight benchmarks]$ time ./output 5000000 | mono sumcol.exe
master value: 5000000
5000000
real 0m0.774s
user 0m0.876s
sys 0m0.064s
[fejj@moonlight benchmarks]$ time ./output 5000000 | java -server -Xbatch sumcol
master value: 5000000
5000000
real 0m0.751s
user 0m0.824s
sys 0m0.096s
[fejj@moonlight benchmarks]$ time ./output 21474836 | java sumcol
master value: 21474836
21474836
real 0m2.625s
user 0m3.236s
sys 0m0.304s
[fejj@moonlight benchmarks]$ time ./output 21474836 | mono sumcol.exe
master value: 21474836
21474836
real 0m3.225s
user 0m3.712s
sys 0m0.272s
[fejj@moonlight benchmarks]$ time ./output 21474836 | java sumcol
master value: 370655678
2147483647
real 0m19.157s
user 0m22.757s
sys 0m0.568s
[fejj@moonlight benchmarks]$ time ./output 21474836 | mono sumcol.exe
master value: 370655678
370655678
real 0m6.004s
user 0m9.513s
sys 0m0.940s
A few months ago, am not sure how, but Nat talked me into getting a widescreen laptop. I no longer remember what were the touted benefits of it, but this warpig of a machine is both buggy and heavy.
Since the warpig is just too heavy to carry home every day (and also requires a base station hooked up to high-def output to stay at 2.4 GHz of speed) I just leave it at work and use my five year old computer at home to surf the internets. When I bought the machine I remember distinctively describing it to friends as "a silent computer". Five years later every time I load a new web page the fans make as much noise as the construction site across the street. Was I deaf back then, or did the fans become dirty and loud?
I am a fan of Google IG, and recently I discovered that they have a tiny IDE that you can add to your Google IG page. So I decided to try to write a Silverlight Sudoku application entirely using that tiny editor in my old computer at home:
I actually cheated a little and used Emacs here and there every once in a while.
But I ended up with this cute Sudoku/Silverlight application that has exactly one puzzle:
I am very proud of my one-puzzle Sudoku because it has some of the features that I like from Big Bang's Sudoku (click to flag, double click to set the value, hints) and some cute and simple animations that I wrote in xaml and shows my allegiance to the clean and simple configuration religion:
I published it on IG as "Moonlight Sudoku". To add it to your IG home page, go here and click "Add to Google".
Now the only problem with it is that it seems to work just fine with Firefox but seems to have problems with IE and Safari. I must be doing something wrong with Javascript, but I have no idea what it could be. If you can find the bug, let me know so I can make it work on other browser.
My toy sudoku only has one puzzle, this is clearly a design decision to prevent people from becoming addicted to Moonlight Sudoku. But if you know of a source of http-fetchable Sudoku puzzles, let me know, as I might want to revisit this design decision to include more puzzles.
You can download the self-contained module (ig + html + xaml + js) from here. You might also need the Silverlight.js file.
In clear violation of David Mamet's advise to the aspiring actor, I am now going to act surprised:
In other news, Firefox 3 RC1 came out, and the release notes have nothing to say about the bugs that prevent Silverlight from working with it.
Larry Ewing pointed this out.
PackMan now has full packages of Moonlight for OpenSUSE users (it includes ffmpeg codecs).
You can use these packages to check some videos at channel9 or see the dual-stream updated videos from Mix 08. Keep us posted about bugs and limitations.
From the “Not Linux or Open Source, but good to know” department comes this little screed on trying to meet with people for important meetings in multiple timezones, organizations and calendaring programs.
——————————
Scenario: Try to schedule users for a meeting who are in a) Provo b) Waltham c) Nurenberg d) France. Mix includes 3 companies, 4 operating system choices and 3 calendaring programs/standards. Wackiness ensues, as they say in the sitcom biz.
Enter meeting organizers such as When is Good, Doodle and TimeBridge. The basic premise is that you go to the scheduling software site and create a meeting and paint or select your available times, and then the site sends you the meeting URL so you can have all the other people select from the times you propose.
For example, if you click on this meeting request, you’ll see I have proposed a set of times over a week, and it’s possible to click your available times and have it sent back to me so I can see everyone’s availability.  Larry and Abigail both clicked their availability and this is the result.
While When is Good doesn’t yet support increments of 15 or 30m or less than an hour, it’s been very useful in getting a general idea of when everyone is able to meet up. I use it over the others because I like the interface, I don’t have to register and it will send Blackberry users an html interface, rather than just not working for them. If you need a more complete and incremental interface, I highly recommend TimeBridge.
Got a fave scheduling tool? Let me know about it and I’ll be happy to post it and give you props.
Enjoy,
RossB
Planning to deploy new desktops in your computer labs or classrooms? Learn how to maximize your budget with multi-station SUSE Linux Enterprise Desktops from Novell and Omni. This strategy delivers a cost-effective and eco-friendly alternative to stand-alone desktops and traditional thin clients.
In my last post, I showed how sat-solver (solver’s ZYpp uses) would solve correctly the “case 2″ included in smart’s README, an exercise smart uses to claim its “smartness” (because apt and yum can’t handle them).
How does it with case 3?
That’s another interesting case which was tested with APT-RPM and YUM.
In this case, there’s a package
Aversion 1.0 installed in the system, and there are two versions available for upgrading: 1.5 and 2.0. Version 1.5 may be installed without problems, but version 2.0 has a dependency onB, which is not available anywhere.In this case, the best possibility is upgrading to 1.5, since upgrading to 2.0 is not an option.
Here both yum and apt fail:
Just like APT, YUM selected version 2.0 and didn’t consider the availability of an intermediate version.
But smart does the right thing:
Smart correctly selects the intermediate version 1.5, which is the only viable possibility given the current options.
So, we setup a repository packages.xml with A version 1.5 and 2.0 ( 2.0 requiring an non-existing B) and a system.xml representing the installed packages, with only A 1.0 installed. We put all together in a test.xml file, and select a “upgrade” action.
We run the already introduced deptestomatic:
# deptestomatic test.xml >!> Solution #1: >!> upgrade A-1.0-1.noarch => A-1.5-1.noarch[test] >!> !unflag A-2.0-1.noarch[test] >!> installs=0, upgrades=1, uninstalls=0
And we confirm, that ZYpp (sat-solver) would also select A 1.5 as expected.
In my recent post about ZYpp, yum and smart speed and memory usage, I got this comment:
It would be also interesting to know how the new libzypp manages the “Case Studies” from http://svn.labix.org/smart/trunk/README
I don’t know, but could be that yum fixed “Case 2″ and libzypp “fails”? So the extra time and memory over libzypp taken by yum to make the dep resolution would be justified.
At first glance I thought the case was very vague, but actually it was really simple and concrete, so it was a good candidate to be tested with our test suite tools. Let’s look at it:
This is another real case, and is being reproduced in a controlled environment for tests with YUM, APT-RPM, and Smart.
The issue is, a package named
Arequires packageBCDexplicitly, and RPM detects implicit dependencies betweenAandlibB,libC, andlibD. PackageBCDprovideslibB,libC, andlibD, but additionally there is a packageBprovidinglibB, a packageCprovidinglibC, and a packageDprovidinglibD.In other words, there’s a package
Awhich requires four different symbols, and one of these symbols is provided by a single packageBCD, which happens to provide all symbols needed byA. There are also packagesB,C, andD, that provide some of the symbols required byA, but can’t satisfy all dependencies withoutBCD.
So, what is so special about this case?
The expected behavior for an operation asking to install
Ais obviously selectingBCDto satisfyA’s dependencies, on the other hand,YUMand APT fail to deliver that as a guaranteed operation, as is shown below.
Ok, there are a couple of things that must be said about this example.
The dependencies of the package A are broken. Unless the package A depends on the libraries libA, libB and libC and some runtime “thing” provided by it, then BCD should be split in three packages. But as none of B, C, D provides any runtime “thing”, but they just “replace” it, this is not true. So either fix BCD or fix A to depend on the libraries only, the explicit BCD dependency is bogus.
Debian’s apt-get won’t succeed here, because AFAIK Debian only has dependencies across packages, not on libraries. Actually I still wonder how smart could succeed here using a debian backend. I ignore if apt-rpm does support library dependencies.
The result yum produces makes no sense too.
So yes, this is the expected result, but the example is a really dumb package.
How to simulate dependencies using the ZYpp sat solver?. The magic is call deptestomatic. There are two versions of this tool, one provided by satsolver-tools, and another one provided by libzypp-testsuite. The one in sat-solver tools should be sufficient. The one in libzypp-testsuite has extra features like graphical display of dependencies.
So, we use the helix format for testcases, which was the format of the original RedCarpet testuite. A testcase is a xml file refering to one or more xml files describing repositories, and one repository represents the installed packages (in this case we can simulate with no installed packages and just one repository).
We start by creating a packages.xml.
And now, we define the test.xml describing the testcase.
If there are conflicts, the xml language has features to select solutions, but that is advanced stuff documented here. For our case, the test is really, simple, just install A.
Now run the test:
# deptestomatic test.xml
And you get the result:
>!> Installing A from channel test >!> Solution #1: >!> install A-2.0-1.noarch[test] >!> install BCD-2.0-1.noarch[test] >!> installs=2, upgrades=0, uninstalls=0
Which is the “smart” result. It only installs A and BCD, and not B, C and D (which is what yum does).
Learning to develop testcases and run them is an excellent way to help the development team to fix bugs without having to request extra information, so you can play yourself with the simulation before actually reporting it.
You can also generate testcases for day to day operations in a very simple way (no need to write xml):
Then you can run them with deptestomatic by referencing the test xml file. Note that you can reuse package lists (repositories) across tests. libzypp-testsuite and the sat-solver source includes a big list of testcases representing simple operations, distributions, upgrades, and distribution upgrades.
Daniel Seales explains how to resize Xen file based disk VMs on SUSE Linux Enterprise Server 10 SP1.
/usr/src/packages/BUILD
and then unpacked Ever since zypper came along I hated it. It was slow, buggy, and used a ton of resources.
Well, I installed openSUSE 11.0b3 yesterday and the zypper/libzypp there is massively improved. I don’t think it’s possible to overstate just how much of an improvement it really is. Normally I just make rcd/rug work on whatever new release comes along and continue using that. Zypper and PackageKit are so good now that I’m giving that up. So congratulations to the zypp team — I know they caught a lot of flack in the past, but I think this release will finally put a lot of that to rest.
smplayer 0.6.0 has been released. If you haven't used it yet, it is a very nice and comprehensive graphical frontend for the almighty mplayer that (now) uses the Qt4 toolkit.smplayer-old and the new 0.6.0 branch from smplayer-beta to smplayer.mplayer frontend that perfectly integrates into konqueror.