You can license your own code under any license you want to, and even dual or multi-license the code too. If the original code is "freeware" or "public domain", then it should actually be okay to incoroporate that into a GPL project, since the GPL's terms are not in conflict with those sort of licenses. Actually, your license terms in the source code is very close to the spirit of the LGPL v2 licenses, although with an additional "attribution" restriction. "Compatible with GPL" means that if the code is included in a GPL distribution, then the original licesnse's terms aren't violated, or vice-versa. It tends to be easier to be compatible in the first direction (incoproration into GPL) than vice-versa. Oh - if he does any modifications, he can only claim copyright on the modifications, not the rest of the code. My suggestion is to just issue an LGPL license to the TCPLIB. He would have to provide source to the lib on demand including any changes to anyone who gets a copy of a binary containing the lib, but not "propogate" into any proprietary or other "calling" code. I use LGPL for all my "lib" stuff so that others can use it if I just want to contribute to "community" projects. My goal tends to be to give a starting point, but my "license fee" for the code is the LGPL requirement to publish source to derivitaves and "play nice". The last thing I want is my code to show up in someone else's product without compensation of some sort, even if it's just publishing changes and helping in my development of the "lib". Going "straight GPL" is a bit to Draconian in my mind, since it requires the entire "calling" project be GPL as well, so no use in any proprietary development is allowed, and I don't like to go quite that far. Hope this philosophy dump helps out!!!
maz2331
Posts
-
GPL'ing CP article code -
Barbara Walters calls Paris HiltonIt is about time for her to get a reality check and learn a thing or two about the really real world. I wonder if the strange behavior was caused by some sort of drug withdrawl. I'm thinking of something like Prozac here, or possibly even birth control pills. Don't underestimate how much impact BC can have. My wife was prescribed them at one time, and it royally screwed her up until weeks after discontinuing them. Lets just say pure raw emotion taking control over any possible reason and logic. From what I have seen, getting off of them can be REALLY rough on some women, and I don't think that you get them in jail. Suddenly withdrawing from antidepressants can do similar things too. Maybe the little time in the can will help out by purging all the drugs (legal, semi-legal, and illegal) from the girl's system and allow the brain to start functioning. Plus, giving a mega-dose of reality as well. Let's just hope that she kind of disappears for a while from public view.
-
Holy crap - fighter planesAs we said when I was in the USAF, "Jet blast is the sound of freedom!" Try living on an air base with a wing of F-16's, especially when they do an engine test where they park all 72 planes on the runway and run at full afterburner. Let's just say it is so loud you have to yell into someone's ear to be heard when you're half a mile from the flight line. Fighters are very cool to watch flying around - unless you are the one they decide to fight.
-
MTU Size in DSL Router AND speed [modified]Uh... exactly how is changing the MTU above the actual path MTU supposed to help out here? DSL's 1492 MTU is due to the ISPs setting it up as a PPPoE tunnel, so you have an IP packet inside an IP packet. This adds 8 bytes to each packet as its sent down the wire, thus causing the 1492 byte MTU that you see. Plus, remember that connections also follow an ICMP path MTU discovery protocol, and limit themselves to the smallest detected MTU between the two end nodes anyway.
-
String in hands of dumb****sYep - it's a better check, assuming one is working in C# or with .NET. Personally, I tend to do most of my development in C or C++ without ever touching any .NET stuff, and tend to fall into that pattern instead. It's the nature of my apps being low-level stuff for the most part that drives this, plus I like working with pointers!
-
which one is faster and better codingI'd go with the first as being better. Besides, the overhead in "DropDownList1.Items.Add()" itself is enough to mask any possible speed difference between the two constructs. Really, both should execute fast enough that you won't notice it anyway. Speed diff can be so easily lost due to random interrupts and kernel scheduling variations that it becomes a "who cares" issue for the most part. And the explicit one... what a nightmare to maintain.
-
DataBase Selects and other lovely things :)Or.... just write a function to check all your input fields before processing them? Little things... like making sure numeric values are in "int" and strings are properly quoted out and escaped before concatenating the final SQL string works fine too. Just gotta be careful.
-
VB6: GraphicsGruesome. Guess that's why we have the ability to write Active-X controls in VC?
-
String in hands of dumb****sThat's why I like to verify all input before passing it on. A couple "if" constructs looking for NULLs and such isn't a bad thing to throw in from time to time. if (strUser !="") { strDest.Format(_T("-u%s"), strUser); } else { // Add code to complain here } Checking for "stupid user tricks" is half the battle of coding! I tend to be very paranoid about anything "editable" by users, and check the bejezzus out of it before passing it along.
-
How to Generate a 16 bit Random number?Take a look at my article at: http://www.codeproject.com/useritems/VB\_KeyCode.asp to do what you want here.
-
How to Generate a 16 bit Random number?16 bits is pretty small. Are you actually looking for 16 bytes instead? IE: a key code that looks like this: D41D-8CD9-8F00-B204-E980-0998-ECF8-427E (This is a string representation of a 16-byte (128 bit) MD5 hash of an empty string with "-" characters thrown in between every 2 bytes. The underlying value is: 0xD41D8CD98F00B204E9800998ECF8427E Of course, this is too big to be represented as any integer type, so we'll represent it as strings instead. In any event, I'd do something based on a 16-byte MD5 hash of the license number or "licensee name" or similar to generate a base "key code", then "XOR" your 16-bit "feature code" into the lowest two bytes of the hash. I'd also append a product name to the user name prior to the initial MD5 step to add some security and make each key product-specific. Or, you could use the lowest bit of each of the 16-bytes of the MD5 hash to indicate a particular "feature bit". Here's a more detailed step-by-step of the overall algorithm.... GIVEN: Licensee Name (string) GIVEN: Product Name (string) GIVEN: Feature Code (16-bit integer) First, convert licensee name to all upper or lower case, and append (concatenate) product name to either the beginning or end of the string. Let's call this the "ID_STRING". Second, take an MD5 hash of the ID_STRING and store it in an "ID_HASH_STRING". This is a 32-character "text" version of the hash, so we then convert each pair of 2 characters (such as "D4") to a binary byte (0xD4) and store it in a 16-character string. Third, split the high and low order bytes from the "Feature Code" and XOR them with the last two characters of the ID_HASH_STRING. Fourth, to really be nasty to hackers, drop the first two bytes of the ID_HASH_STRING and run an MD5 hash of the remaining 14 characters. Take the first character of this MD5 and append it as the first character of the new keycode, and append the last character of the MD5 and append it as the second character of the string. Step 4 ensures that people can't just easily change the value of the last 2 bytes to cheat on the permissions! Decoding the keycode is pretty much a straightforward reversal of the above steps. I've written a VB module to perform these functions and will soon post an article here on CodeProject containing the code and a sample demo application using it.
-
Intellectual Property - What exactly is it?"Intellectual Property" is an all-encompassing term that covers patents, copyright, and trademarks. The "IP" that your CIO is talking about is the copyright of your program. Basically, the company is making a claim of ownership of that code since you developed it on company time (ie: "Work For Hire"). The basic idea of copyright is that you own your own works unless you assign those rights to another person (or company). However, in an employement relationship, the "author" of the work is the company. Also, you'd need to review any employment contracts and such that you signed with the company regarding assignment of IP. Lots of companies make you pretty much assign to them anything you develop during the time you're employed by them to the company - even stuff that you do on your own time and has zero connection to the company in any way. Regarding what you can or can't do on the side, the answer is "it depends" on whether or not you have any non-compete or assignment of rights agreements with the company you work at. It's really important to read anything you sign and keep copies.
-
help with free twain softwareDosadi has a free version of EzTwain Classic on thier website that works okay. http://www.dosadi.com