Domain: sourceforge.net
Stories and comments across the archive that link to sourceforge.net.
Comments · 31,462
-
Re:Been done before?
yup, your memory serves you well grasshopper. its called Peep more info here.
-
Log everythingI'm no programming expert, but I've found that logging everything with accurate timestamps can solve a lot of problems. One of the best things I've done was to acquaint myself with Python's logging module. It's really a lot nicer than throwing print statements all over the place, and log levels make for easy switching in and out of "debug" mode. So that's my advice... implement a good logging system.
:)I'm unfortunately not too familiar with C#, so I can't comment on it's logging facilities (or lack thereof) other than the
.NET EventLog class.There is a project on Sourceforge called C# Logger that is supposedly similar to log4j in Java. But it seems to be stuck in alpha release mode, and not particularly active.
Just my two cents. Hopefully it helps.
:) -
Re:Oh Great!...
Let me go ahead and plug a couple projects for the disillusioned masses reading this:
Free Delphi Alternative:
Lazarus
Free C++ IDEs:
Anjuta, Code::Blocks, KDevelop (works with other langs too I believe)
Free Python IDE:
Stani's Python Editor
Free Visual Basic Alternative:
Gambas
Free Java (and others) IDE:
Eclipse -
Re:Oh Great!...
Let me go ahead and plug a couple projects for the disillusioned masses reading this:
Free Delphi Alternative:
Lazarus
Free C++ IDEs:
Anjuta, Code::Blocks, KDevelop (works with other langs too I believe)
Free Python IDE:
Stani's Python Editor
Free Visual Basic Alternative:
Gambas
Free Java (and others) IDE:
Eclipse -
Re:Proprietary software
Buy ATI Radeon cards. open source drivers for up to 9800 are available. Then let ATI know that you made the decision to buy their card because of this project.
then.. buy one of the experimental cards from The Open Graphics Project.. when it's available.
I can't express enough how important open 3D drivers are for linux on the desktop. -
Re:Logging
Nothing can stop Google from loggin everything you do over their servers. What you can do is make it pointless:
- use Gaim with
- OTR for all your chat, routing it via
- TOR by TORifying Gaim
Furthermore you better create a fresh account for this, using an invite that you got through a non-traceable route (for instance using Firefox with the Switchproxy plugin according to Tor's guidelines.) Don't forget to install Privoxy for this and configure your browser correctly or your DNS requests are still going over open channels. For more information you can refer to the documentation on the TOR website.
Yes you miss out on the new coolness, yes you have to have alternative channels to verify fingerprints to really be certain there's no man-in-the-middle and yes I'm really paranoid.
Questions? -
Re:DIY
It may be pricier than 400 euros to build your own HD mythTv box, but you may be interested in this (Comcast in my area issues Moto DCT 62xx boxes):
Feature of MythTV:
http://www.mythtv.org/
-firewire capture method, for those with cable boxes capable of firewire output (Motorola DCT-6200 + cousins, SA 3250, etc).
-Internal channel-change over firewire support for DCT-6200 series cable boxes.
HOWTO on interfacing to the DCT 6214:
http://replayguide.sourceforge.net/dct6412/ -
From Sharks to Robot AI: Evo Recap
Evolution of AI Minds proceeds by the same sort of recapitulation of evolution.
Robotic Sensorium Modules allow for the robotic evolution of special senses as in this case of sharks, or the Japanese idea of umami as a "fifth taste" on the human tongue.
The Mentifex Theory of Mind for artificial intelligence (AI) explains how even sharks, if left alone as the heretofore pinnacle of evolution on an Earthlike-planet, could evolve into intelligent beings and beyond.
Mentifex AI Mind Design explains the Central Nervous System (CNS) as it evolves in sharks, humans and superintelligent robots.
-
desktop cube: old ideaThe virtual destop cube -thingy really looked like something usable for a change.
Actually, something similar has been available at least since 2002: http://desk3d.sourceforge.net/
It's still cool of course, and it probably works much better with Xgl.
-
Re:very pretty, but what does it do?
I don't think so, no. Atleast, until real 3D displays become available. A 3D desktop like that Xgl demo is nice to look at, but doesn't really improve usability, IMHO. It's a solution for a problem that doesn't exist.
I recall trying an addon for Windows that placed the desktop on a sphere. Nice, but not really useful. The spinning desktop on the video is very similar to 3D-Desktop, which only adds a nifty way to switch between virtual desktops. It's really cool to look at, but, say, an horizontal displacement between desktops would achieve the same practical effect. It's cool, and i want it, but it isn't really groundbreaking.
Check the window movement on that video though - awfully smooth. That kind of stuff is what i want to see on my desktop. That, and real transparency on consoles ;) -
Re:Finally!The open source R300 drivers (http://r300.sourceforge.net/ - now part of Mesa/DRM + X.Org source trees) for the 9600 and 9800 series of ATi Radeons seem to be currently at least somewhat usable.
I mean, at least Planet Penguin Racer (ex-Tuxracer) seemed to work fine, 3D acceleration and all..!
:P -
Re:Hideous
It's javascript, but I'm willing to guess that it is probably handled similarly to how CGI:IRC does. Or even better, poll for "updates"/messages every X milliseconds -- even 1 second would still seem sufficiently responsive.
-
Well, Mr Anonymous Expert...
...if there's a spike in the "forest" for NGC 7319 in its quasar's spectrum, I can't see it. That's why detractors blather on about "fortuitous voids" and other question-begging deux ex machinae instead of simply pointing to the Lyman notches and pronouncing "I told you so!" (can you see them missing the chance if they had one?).
You might also want to grab a copy of this image, drop it into a graphics editor (here is a free one) and have fun with the intensity curves (Layer, Curves, drag the centre of the curve left to 50,160 (scale 0-255), then grab the curve where it crosses the 25% mark and drag that to 27,36). Now think about what you see, as you toy with that curve. -
Re:Non-object oriented test tools?
-
Re:Non-object oriented test tools?
-
Re:I have a better idea...
-
Re:Free Software?Company president Ashwin Navin told ZDNet yesterday: "We're sensitive to people calling their software BitTorrent to achieve a certain level of popularity in order to distribute spyware and adware."
As long as the Software is not using the trade mark BitTorrent within its name, it should not be affected. And many have names distinct names
... (like Azureus) -
Related Projects
OpenWengo:
SIP compliant VoIP client (+ Video ?), Firefox extension, GPL: http://openwengo.com/
Ekiga:
VoIP and video conferencing application (H.323 and SIP) for GNOME, GPL: http://www.ekiga.org/
PhoneGaim:
VoIP system based on the Gaim instant messaging software and the SIP protocol, GPL: http://www.phonegaim.com/ (sponsored by Linspire: Some controversy exists over the perceived difficulty faced by non-Linspire users who wish to install PhoneGaim on their Linux system.)
sipX:
SIP based products (pbx, softphone, and supporting products), LGPL: http://www.sipfoundry.org/sipX/
Google's Libjingle:
Implementation of Jingle and Jingle-Audio (proposed extensions to XMPP), BSD License: https://sourceforge.net/projects/libjingle/
KPhone:
VoIP application for the KDE desktop environment, SIP, GPL: http://kphone.sourceforge.net/
Skype: http://www.skype.com/
Google Talk: http://www.google.com/talk/
Gizmo Project: http://gizmoproject.com/ -
Related Projects
OpenWengo:
SIP compliant VoIP client (+ Video ?), Firefox extension, GPL: http://openwengo.com/
Ekiga:
VoIP and video conferencing application (H.323 and SIP) for GNOME, GPL: http://www.ekiga.org/
PhoneGaim:
VoIP system based on the Gaim instant messaging software and the SIP protocol, GPL: http://www.phonegaim.com/ (sponsored by Linspire: Some controversy exists over the perceived difficulty faced by non-Linspire users who wish to install PhoneGaim on their Linux system.)
sipX:
SIP based products (pbx, softphone, and supporting products), LGPL: http://www.sipfoundry.org/sipX/
Google's Libjingle:
Implementation of Jingle and Jingle-Audio (proposed extensions to XMPP), BSD License: https://sourceforge.net/projects/libjingle/
KPhone:
VoIP application for the KDE desktop environment, SIP, GPL: http://kphone.sourceforge.net/
Skype: http://www.skype.com/
Google Talk: http://www.google.com/talk/
Gizmo Project: http://gizmoproject.com/ -
Gaim support for SIP as well
Gaim 2.0 (currently in beta) actually has support for SIP/SIMPLE thanks to the Google Summer of Code.
So we've actually had VoIP capabilities in open source projects since last summer. -
Gaim support for SIP as well
Gaim 2.0 (currently in beta) actually has support for SIP/SIMPLE thanks to the Google Summer of Code.
So we've actually had VoIP capabilities in open source projects since last summer. -
Re:Non-object oriented test tools?
Thanks for that excellent link. On a quick first glance, http://check.sourceforge.net seems like it could fit the bill.
Cheers -
Re:What about Komodo?Unfortunately the Komodo IDE won't be open sources (free as in beer) any time soon.
But honestly, that's ok with me. It's only $30 for the personal license, and they license per developer not per seat/cpu... so you are welcome to install it on as many machines as you use (e.g. desktop and laptop).
I do quite a bit of Python coding, and after checking out Eclipse, SPE, and a few others, I'm still a huge fan of Komodo. I've easily gotten $30 of value out of using it.
Plus, if you watch the bargain sites carefully, they occasionally run promotions where you can get Komodo for free.
:)That said, YMMV. I know a lot of people who would disagree with me and would rather use Eclipse with PyDev.
-
An alternative to winamp...
Alternatively, you can use Coolplayer, cuz it's as lite as it gets. http://coolplayer.sourceforge.net/ And I agree, Winamp2 used to be the best (music) player....
-
Re:i luv these guys, but they are doomed
Indeed. I (through my company) have licences for a bunch of their Perl tools for Windows because at work I have to use a Windows machine. Having Windows around is good when it comes to ensuring code is portable, anyway. There are certain CPAN modules which do not currently build on Windows which one must avoid if attempting to cross-platform Perl apps.
I can understand why some would use Cygwin but I personally gave up on Cygwin for all uses a few years back since I was constantly running into issues with multiple applications installing their own copies of the cygwin DLL and it getting all confused, not to mention the fact that Cygwin stuff always starts up so slowly. Instead, I use native ports of most of the "standard" GNU command line utilities, ActivePerl and a bunch of other all-native bits and pieces to make my usage of Windows less of a pain in the rear.
Note also that ActiveState has a tool for packaging up perl applications into Windows executables. It's a total hack revolving around a self-extracting archive but it's transparent enough to the end user that at my office we have several little home-grown tools written in Perl but most users don't even have Perl installed let alone know or care that they're written in Perl.
-
Design, develop test and then develop some moreI think that there is no reason why writing the application in C++ should imply that it will be unstable. I like the idea of decoupling your processes and personally write off the 'managed code' concept unless you're building for
.net land. Make sure that the separation between your components makes sense, and as someone else has said, unless you need to, there's nothing to imply that your whole system should be in C++. As long as your centralise your core functionality and dependencies on flaky libraries in one place. I built an application a couple of years ago which exposed some C++ functionality over soap, using gsoap. This interacted with perl and java soap clients. I've also in the past written applications which monitor the state of applications deemed to be unstable and recover them in failure. Obviously, this should be something which runs whilst you're resolving your bugs and if you test and develop towards a clean release, you should never need it in production.That's my 0.2 EU's.
-
Backup software for UNIX
You bring up an interesting point. I had never thought of the fact that there are virtually no GUI backup utils for unix/linux. I did a search at Freshports.org and all I found was 'kdar'. That's great if you use KDE, but what if you use gnome, or worse, a lightweight wm like fluxbox. Having to install a bunch of KDE libs just to use one program would suck.
It doesn't seem like writing a GUI front-end to tar/gzip would be rocket science.
That's definitely something that desktop UNIX's need. -
I'd patch your book on Linux Patch Management
I am taking you too seriously maybe
;)
Anyway, first of all i'd use aptitude instead of apt-get. It has similar command line options (aptitude update, aptitude [dist-]upgrade), it has nice ways to resolve dependency problems, and it keeps a log of the upgrades (more precisely of the upgrade requests, IIRC).
Then, having each box doing an update on its own is an unnecessary waste of band. There is stuff like apt-proxy.
Another trick is to copy the .deb packages (ONLY the .deb packages) from the /var/cache/apt/archive of an updated machine to the one to be updated. Apt recognizes it already have a local copy of the packages and refrains from obtaining it again from the network. Handy when installing a slightly old debian version on a new partition. -
A partial solution for GIMP/RAW interaction
UFRaw and dcraw appear to give me a nice way to load RAW photos into the GIMP. The conversion from RAW is done with 16-bits per component accuracy, although the end result will then be sampled down to 8 bits per component. Obviously, this is not quite the same as having the 16-bits per component accuracy available all the time, but at least things like color balance, brightness/gamma etc. can be tweaked within the more accurate representation before the downsampling.
-
Alternative players
How come nobody mentioned VLC or Media Player Classic yet? -
better use powersave
https://sourceforge.net/projects/powersave
it has a nice front end - namely kpowersave.
Features:
1. Auto suspend when inactive after x minutes
2. hard disk settings
3. all CPU governors are derived from kernel -
Screw Winamp
I've recently moved over to java-based jlGui
http://www.javazoom.net/jlgui/jlgui.html
http://sourceforge.net/projects/jlgui/
It's cross-platform, portable, (USB thumb drive, anyone?) and it plays local mp3/ogg files, Shoutcast streams (*.pls), and Winamp playlists (*.m3u)
It's great for running at my work where I have a personal network drive that follows me from PC to PC. I never need to install anything... I just double-click the jar file.
I highly recommend giving it a shot if you're sick of updating Winamp all the time. -
Re:Fonts in OS X?
erm last time I loaded up the GIMP I couldn't even use any of the OS X fonts. Maybe you can (can you?) but that's a pretty big reason to use it for home-graphics use (ie when you can't afford/need photoshop).
Gimp.app will make use of installed OS X fonts by default, but the list is somewhat polluted by rarely-used variants used for far-Eastern languages and similar, and irritatingly it doesn't pick up on the different styles available for some fonts. I think I'll report a bug... ;-) -
Re:White Balance
It doesn't have to. Just like with Photoshop, a plugin handles white balance adjustment at the time of raw conversion. For Photoshop, the plugin is Adobe Camera Raw. For GIMP, it's UFRaw or one of the other interactive dcraw-based packages like RougePhoto or RawPhoto:
http://ufraw.sourceforge.net/
http://pages.quicksilver.net.nz/pepe/d70/Nikon_D70 _on_Linux.html
http://ptj.rozeta.com.pl/Soft/RawPhoto -
Re:The only thing runningI agree completely, although an alternative solution is to put the JVM into the kernel
This has actually been done some years ago, see the kissme project.
-
Re:Slicing is the main feature the GIMP needs!
You mean something like this, don't you: http://gimp-sharp.sourceforge.net/screenshot-6.jp
g -
Re:GIMP won't natively process in 16bpp images
'GIMP is probably never going to be able to support your RAW photos'
There's already an excellent solution to this problem:
http://www.cybercom.net/~dcoffin/dcraw/
It's been used to create several GIMP plugins, including:
http://ufraw.sourceforge.net/
When run in 'standalone' mode, UFRaw even has a 16-bit output mode (useful if you Cinepaint). When run as a GIMP plugin, you're obviously stuck with GIMP's 8-bit limit. -
Re:Irfanview
Several options...
As already pointed out, ImageMagick and some scripting will keep you going forever..however if you're not into that there are some graphical tools:
http://gthumb.sourceforge.net/
http://f-spot.org/Main_Page
Also, check out this page:
http://en.wikipedia.org/wiki/Comparison_of_image_v iewers -
Um...
You know any idiot can get GIMP on Windows by running two
.exe's... -
Re:Artists' OS Knowledge
-
Re:Artists' OS Knowledge
-
Re:Kill me...kill me please.
Not even close sparky..... The bits were avaliable to MS Partners as early as lat 1999,
Ive been coding .net 2.0 exclusivley for 1 1/2 years now, it was only avaiable as Releasse to Market (RTM) in November.
Hell I was working on 64 Bit Itaniums with .Net years before release, and 64 Bit windows 5 years ago.
Just cause they dont trust you to play with their stuff before release.
Heres and example. This is a Itanium with 64 Bit Windows Server , and .Net 1.1 64 Bit, (in feb 2001).....Get a clue.... -
MPI & MOSIX
if "Basically, it allows users to crunch a god-awful amount of data over several computing nodes" is one of your requirements I would look at http://www.open-mpi.org/ and http://openmosix.sourceforge.net/. These two projects will provide you the library to create multi-node applications( MPI ) and a load balancer for your cluster( MOSIX ).
-
Re:stop the jpegs!
Some raw converters (and the jpgs produced by the camera) seem to omit a few boundary pixels. Using UFRaw for example gives 3039 x 2014 images, which is 6120546 pixels.
-
Use Z - but don't expect it to be easy
Use formal methods, it's what NASA and companies that develop medical software use.
I'd recommend B or Z.
There are even methods/software that will help you convert your specification from B/Z to C/C++ code (or other languages).
(Just a word of warning: This is not going to be easy or fun, but it will make your software robust, and you will catch a lot of errors before you even start coding)
http://www.zuser.org/z/
http://czt.sourceforge.net/ -
Test-driven development
what strategies should a developer take to insure that the resulting program is as crash-free as possible?
Simple, easy answer: unit test it as much as possible, then tinker with the design to make more unit tests posible.
Beyond that, do regular code reviews and get into the habit of programming defensively.
this applies to any language, not just C++. There's even a port of JUnit to C++ over here -
Web Services
Provides very good decoupling for anything that can be abstracted to a request-response model.
XML is used extensively (if not exclusively) for data formats, and HTTP is used as a network protocol, keeping these to known standards keeps it simple.
I recently used gSOAP (http://gsoap.sourceforge.net/ to implement some web services into a C++ API and it worked flawlessly. -
General Advice and Some Reading RecommendationsIf you want stable software perhaps one of the most important things you can do to stack the odds in your favor is to keep your system as simple and clean as possible. The idea to completely decouple the application from itself seems complex rather than simple and thus could serve to reduce reliability rather than increase it. I really strongly recommend not getting that complex from the get-go especially without any empirical evidence indicating that the complexity is absolutely required.
The restart logic to bring parts of the system up that fail also seems like it could have a net-effect of reducing reliability. Such restart logic will almost certainly be complex and thus problematic. I recommend instead a different error handling paradigm: whenever anything pathological is detected your program should "panic" (quit in a graceful way) and tell you exactly why it panicked (perhaps by printing out a stack trace, perhaps by printing out the exception's
.what() string and making sure all possible exceptions produce uniquely identifiable strings.) In the course of development every time a panic happens you will know why and so will be able to resolve them quickly. Given this sort of discipline, some good engineers and the proper development schedule by release time you will have worked all the common panics out of the system.The advice to use some sort of agile software development process and automated unit-testing is spot-on. Check out cppunit (http://cppunit.sourceforge.net/cppunit-wiki). I use cppunit extensively and it helps me greatly. Making the application unit-testable will increase its complexity somewhat, but this complexity increase is usually not too great and will prove to be insanely worthwhile given the advantages of having an automated unit-tests testing that your software still works at every build.
Think carefully about your Makefiles/directory structure. Again you want something simple. But you also want the build system to do some things for you like auto-generate the dependencies of your
.cpp files and invoke your unit-tests as part of the build. Make sure you build system refuses to output an application binary if any unit-test fails (this is quite easy to do with make and cppunit.)The advice to utilize STL and exceptions is also very good. There is no need to reinvent the wheel when you can leverage STL. Make sure you do some reading about exceptions to avoid making a big mess, but they are absolutely worth learning and using.
Really, really try to stay away from threads. Threads imply complexity and it is hard to get them right without great discipline and some experience.
Reading:
The C++ Programming Language by Bjarne Stroustrup
This is worth having around as a reference. It is a bit heavy as a tutorial but it will be able to answer many the strange questions that come up about C++.Effective C++ Third Edition by Scott Meyers
(Getting the THIRD (newest) edition in particular is important.) C++ has a learning curve that's a bit steeper than many of the other modern OO languages. This book helps you up that curve as quickly as possible (assuming you already know the basics of OO software design and languages.) Very good advice about why you should use the "auto_ptr" (that others mention) when you allocate memory on the heap. Advice about exceptions. Lots and lots of other lessons can be learned from a quick read that will save you so much time and pain the long run.Agile Software Development by Robert C. Martin
Others may disagree with this recommendation. I think there are several similar books. This is the one that I happened to encounter and I do not know if it's the best. I do know it is sufficient at giving a broad overview of many important concepts like: agile development processes, unit testing, OO design principles, design patterns.Good luck with the system!
-
It's not the language that counts...it's how you use it!
Honestly, everyone seem to believe that all C/C++ code is unstable (probably because of all those people working for companies like Sun/Microsoft, who are promoting The Next Big Thing in Software Development), but it's far more to do with how you go about using the language and its features.
However, it is honestly an improvement on C. I think Bjarne Stroustrup (I'm almost certain I spelled that wrong) said it best: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off." (http://public.research.att.com/~bs/bs_faq.html; apart from the quote, it has a whole lot of useful tips).
So, here's my advice, from my experience working in all sorts of languages (professionally I've used everything from TCL through PHP to Java/C#, but at home I use C++ exclusively). This is just my experience, though; take this with the requisite grain of salt:
STL is your friend. I cannot stress this enough. STL allows you to leverage complex containers (automatically resizing lists, hash tables, ropes - which are mega-long strings, etc) with complete type safety: you can create a container for a particular type, and the compiler will balk if you ever try to put something incompatible in. Also, the generated code will be optimized for your particular storage type. In this respect, C++ is actually better than most other languages (only with Java 1.5 and
.NET 2.0 do Java and C# implement Generics, and in the case of Java, it's only implemented in the compiler).Pointers are not always your friend. When you allocate data structures on the stack (e.g. "string blah;"), they will automatically be taken care of by the language. Even if an exception is thrown, these objects will still have their destructor called (which in turn will call all other necessary destructors) and the memory will be deallocated freely.
Of course, this will not work everywhere (large numbers of polymorphic, dynamically allocated objects). But in these cases, you can use helper classes (such as auto_ptr in the STL, or something like shared_ptr from Boost or nsCOMPtr from Mozilla). Look around; lots of other people have already solved this problem. In fact, there are even Garbage-Collection libraries available for C++!
Use exceptions instead of value checking, dammit! Every time you call a function that "returns 0/false/-1 on error" you are exposing yourself to possible bugs. Try to avoid this wherever possible, and try to keep all your OS-specific calls in one spot.
Check out Boost: (www.boost.org) There is a LOT of useful stuff in here, and it will certainly speed up the development process.
Finally, make sure you design it properly! A couple of well-defined interfaces to separate things out will go a LONG way towards simplifying code, as it will ensure there is less coupling between different code modules (i.e. they don't depend on eachother as much, so you can rewrite one without affecting others). This goes for ANY language. C++ doesn't directly support interfaces, but abstract classes will do the same thing.
As for separating modules out, you could try CORBA (as you mentioned): ORBit (orbitcpp.sourceforge.net) is a free implementation (that happens to be used by GNOME). But to be honest you probably won't need to go to this effort. If written properly, your code should be stable enough that you don't even need to separate code out into separate processes. The furthest I'd go in your situation would be to write a command-line application that does all the work, then have a graphical client (although you could write this in a different language; don't get me started on graphics library support under C++) that uses a socket or TCP/IP to communicate with the worker thread. In this case, you could just use a very simple protocol to
-
Sunbird and iCal hosting?
I've been using Mozilla Sunbird and iCal hosting (icalx.com) for a while - it does to-do's and calendars pretty well, synchronizing back and forth. After a lot of searching and trying things out, this seemed to work the best for me. Also, there's a new Outlook plugin called Remote Calendars (http://sourceforge.net/projects/remotecalendars/
) which does the same thing as Sunbird on Outlook.
The only downside here is the lack of SSH, but I figured being able to read and update my calendar from any PC, and read my calendar from just about anything, and having my calendar in a standard format for my iPod is totally worth the lack of security.