|
I've been looking for a good one for some time. I found one that looks good, but it requires Windows 2000 or above and I have only Windows 98. (Sorry, I don't even remember its name.)
Right now, I use ProxyDesigner[^].
Let me know if you find a good one.
"Do unto others as you would have them do unto you." - Jesus
"An eye for an eye only makes the whole world blind." - Mahatma Gandhi
|
|
|
|
|
I think, that you can use Microsoft Visio. There is plug-in to Vs.Net. But you need to download Visio SP (AFAIK).
i'm only pointer to myself
|
|
|
|
|
You might want to take a look at Enterprise Architect from SparxSystems.
A co-worker of mine who is a UML/design guru and now the leading C# expert that I know, swears this tool is the best he's used. We have before always used Rational Rose...he claims this does everything Rational Rose does only better and for only about $150 (instead of a few thousand like Rose).
It does reverse engineer and produce skeleton code for C# among other languages. I have been so moved by his rants over the last 6 months or so, I've actually finall purchased it myelf, just last weekend. I haven't had time to play with it myself, yet though.
There are only 10 types of people in this world....those that understand binary, and those that do not.
|
|
|
|
|
so what was your final opinion of Enterprise Architect?
|
|
|
|
|
Hey All,
The first time in my life that I have ever had the use the line control, or what vb 6 considered the line control, but it's no longer included in the .net toolbox. I know that I can easily draw a line on a form using GDI+, but Im creating a prototype form that has no real functionality, and I already get in trouble for writing to much code in my prototypes. Does anyone know where it went? lol
Thanks,
Ryan
|
|
|
|
|
They removed it for some reason... I just use a lable control and set the height (or width) to 1 pixel. You are screwed though if you need a diagonal line.
I know I have seen some other line controls around here... Have a look in the articles...
Paul Watson wrote:
"At the end of the day it is what you produce that counts, not how many doctorates you have on the wall."
George Carlin wrote:
"Don't sweat the petty things, and don't pet the sweaty things."
Jörgen Sigvardsson wrote:
If the physicists find a universal theory describing the laws of universe, I'm sure the a**hole constant will be an integral part of that theory.
|
|
|
|
|
Ray Cassick wrote:
You are screwed though if you need a diagonal line
Please see my reply to Ryan.
-Nick Parker
|
|
|
|
|
You can use the DrawLine() method on System.Drawing.Graphics to draw lines.
|
|
|
|
|
Ryan@SalamanderTechnologies wrote:
Does anyone know where it went?
Nope, but I wrote up a quick control for you, I haven't implemented everything, however it does do the job (even works with diagonal lines ) I am writing an article on this, but here is some code that you can compile into a quick control if you would like, hope this helps:
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Data;
using System.Drawing.Drawing2D;
using System.Drawing.Design;
using System.Windows.Forms;
using System.Windows.Forms.Design;
namespace DeveloperNotes.LineControl
{
public class LineControl : System.Windows.Forms.UserControl, ISupportInitialize
{
private Point start, end;
private Color color;
#region ISupportInitialize
void ISupportInitialize.BeginInit() {}
void ISupportInitialize.EndInit() {}
#endregion
#region Properties
[Category("Position"),Description("Starting position of line")]
public Point Start
{
get{return start;}
set{start = value;}
}
[Category("Position"),Description("Ending position of line")]
public Point End
{
get{return end;}
set{end = value;}
}
[Category("Line Color"),Description("Color of line")]
public Color LineColor
{
get{return color;}
set{color = value;}
}
#endregion
#region Constructors
public LineControl()
{
this.SetStyle(ControlStyles.DoubleBuffer, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.ResizeRedraw, true);
}
public LineControl(int x1, int y1, int x2, int y2)
{
start.X = x1;
start.Y = y1;
end.X = x2;
end.Y = y2;
}
public LineControl(Point pt1, Point pt2)
{
start = pt1;
end = pt2;
}
#endregion
#region Event Handlers
protected override void OnPaint(PaintEventArgs pe)
{
Graphics g = pe.Graphics;
SolidBrush brush = new SolidBrush(this.color);
Pen pen = new Pen(brush, 1);
Size clientSize = this.ClientRectangle.Size;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
g.DrawLine(pen, this.start, this.end);
base.OnPaint(pe);
}
#endregion
}
}
-Nick Parker
|
|
|
|
|
wow, hey, thanks nick.
ryan
|
|
|
|
|
Can someone explain to me the lifetime of a static member variable? That is, in a singleton, one has a static member variable of the single instance and a static member function which returns a reference to that instance. How is it that, 1) the static member variable is maintained, 2) the static member variable is destroyed (GC in the CLR, but what about unmanaged languages)?
|
|
|
|
|
You will need to count the references created to it, and if none is needed anymore, the unmanaged resources can be released. By design a static member will instantiate whenever it is first accessed and will last the lifetime of the appdomain. There is no GC on those objects AFAIK.
<a TITLE="See my user info" href=http:
|
|
|
|
|
Hey I was wondering- why don't software developers (desktop software) not just make the desktop application communicate with a web site every now and then, sending the user's IP address and registration key? That way if someone installed a pirated copy, the company would know. I never see any companies do that. Is there like a law against that or something? (As long as it's in the license agreement of course..)
Seems to me it would work. I mean you could still crack it and take all those calls out, but the users of the cracked version would be counting on the cracker to have done a perfect job. I dont think I would trust cracked software that much!
"Outside of a dog, a book is Man’s best friend. And inside of a dog, it’s too dark to read."
-Groucho Marx
|
|
|
|
|
First, seems to me there are serious privacy implications here. This would probably require that you totally open up your communications protocol to ensure to users that you are not sending private data back. Just look at how much some people freak out over cookies.
Second, you would drive IT admins nuts. Besides the added bandwidth of the communications that is required, some admins watch their traffic very carefully and want to know what each an every port and message is for. All it would take would be one admin to see that the traffic was carrying a serial number and you would be shut down quick.
Third, this method is not really well suited for any disconnected users (laptop users that work offline) so you would have to consider them.
I go by the rule that the 'harder' a products security is the 'harder' someone will be willing to work to break it. Put in just enough to keep an honest man honest and take care of the rest through support agreements.
Paul Watson wrote:
"At the end of the day it is what you produce that counts, not how many doctorates you have on the wall."
George Carlin wrote:
"Don't sweat the petty things, and don't pet the sweaty things."
Jörgen Sigvardsson wrote:
If the physicists find a universal theory describing the laws of universe, I'm sure the a**hole constant will be an integral part of that theory.
|
|
|
|
|
thanks, some good points there,
I should mention that the app I'm writing is like an ide for web developers, so offline it's no good anyway.
But besides, I'm not talking about the app *requiring* a net connection to work. I'm talking about something more passive. So, when you run it, it checks to see if you're online, and if you are, it rolls some dice, and then decides to send the http get request (and doesn't even listen for response). Not only would the request be incredibly small- we're talking like the size of this sentence, its just the key I'd be sending, but it would also be infrequent. So, as for the "added bandwidth" I mean this codeproject.com page you're looking at is as big as like 400 of those little requests, which would only get sent like once a week per user. See what I mean?
The communication protocol would just be HTTP. And as for IT admins watching packets- it would just be an HTTP request, not an open port on the user's machine or something. In fact, I could even send it though an IE webbrowser control. A serial number is like A23S-SWE12-FW42, which essentially looks just like a session argument- you know like amazon.com/a/something.cgi?s=S42G2-GR445D or something.
Not that I'd be sneaky tho- it'd be right there in the user agreement.
Like I say it can be cracked, sure. But if you download some pirated software you have to count on the cracker to have done a perfect job, it's a question of you trusting the anonymous, shady cracker out there, which I don't think most people will do. I mean, I sure wouldn't.
thanks
"Outside of a dog, a book is Man’s best friend. And inside of a dog, it’s too dark to read."
-Groucho Marx
|
|
|
|
|
This might be ok, perhaps if you only did it when the user was going online to upload thier files to the web server or something like that.
The funny thing about people is that they like thier privacy. Even if you put this statement in the license agreement they might not like it. Hell, they might not even read it.
I would be as open and as upfront about it as I can. I would make them sign a separate privacy statement that spells this out in black and white, and I woul dmake sure that the software would run WITHOUT it unless you are aready to make sure that they always have a clear shot to your servers over the internet at all times. If you don't do this be ready for the customers to come back and require that you sign an SLA to provide them 5 9's of uptime on your end.
Paul Watson wrote:
"At the end of the day it is what you produce that counts, not how many doctorates you have on the wall."
George Carlin wrote:
"Don't sweat the petty things, and don't pet the sweaty things."
Jörgen Sigvardsson wrote:
If the physicists find a universal theory describing the laws of universe, I'm sure the a**hole constant will be an integral part of that theory.
|
|
|
|
|
A. Some do. I don't recall what software does it, but I know I have seen some software that has done it.
B. Some people wouldn't like their IP address being sent out (even if encrypted).
C. How would that help really? People's IP address may change (every time if still on a modem). How could you correlate it?
Just some more random thoughts to consider at least.
There are only 10 types of people in this world....those that understand binary, and those that do not.
|
|
|
|
|
Yea, some good points,
I should mention that the app I'm writing is a web development IDE, so it's using the web already. Fundamentally, your IP goes out no matter what you do on the web, (unless you're behind a proxy). I mean if people send their IP to me when they come to my web site, why can't they send it to me when they're using my app, right? (Right now codeproject.com has our IP's oh no!)
And no I can't correlate it (unless I had the ISP's assistance) but don't you think that would deterr some people from using the cracked version? Maybe not experts like you but regular folks.
thanks much
"Outside of a dog, a book is Man’s best friend. And inside of a dog, it’s too dark to read."
-Groucho Marx
|
|
|
|
|
Intuit, the folks who make TurboTax tried something similar, but combined it with a fairly invasive DRM protection scheme. The "activation" portion functioned similarly to that of Windows Product Activation, however the DRM portion wrote to the boot sector of the hard drive.
The result? Mass customer backlash which finally led to the company removing DRM from future versions of the product.
I understand the need to protect your intellectual property, but it should implemented in a consumer-friendly way. Ya know?
|
|
|
|
|
Yep I'm with you. In fact, last year I stopped using turbotax and switched to TaxCut because of that when i did my taxes.
But I mean, you understand what I'm talking about isn't like crazy invasive like that right! I'm not talking about like boot sector raping! I explained it better here http://www.codeproject.com/script/comments/forums.asp?msg=508895&forumid=1649#xx508895xx
thanks
"Outside of a dog, a book is Man’s best friend. And inside of a dog, it’s too dark to read."
-Groucho Marx
|
|
|
|
|
A. Lots of apps do it prime example virtual girl.
B. What is this about protecting your IP, cant see how you could apart from spoofing and this sends an IP, just someone else's. If you want to use the internet an IP is needed somwhere along the line, and it always goes across in the request header. The IP is the simplest thing to find out and there is now way to stop it unless all you use the internet for is email.
C. Agreed, can't just use IP number because of DHCP.
He who laughs last thinks slowest.
|
|
|
|
|
What if I have two machines, say one at home and one at my vacation home (yeah right like I would own two houses) and I use only one at a time, so its not multiple users, then I get screwed for piracy, even though I am not copying and giving out the software to unauthorized users. Actually I am notr sure what pricay laws say about that.
|
|
|
|
|
Yea my license agreement says you can install on two machines provided you only use one at a time (that's kind of standard or at least common). So you're not screwed there.
"Outside of a dog, a book is Man’s best friend. And inside of a dog, it’s too dark to read."
-Groucho Marx
|
|
|
|
|
I use AdMuncher[^] with IP scramble option.
From that site:
Privacy concerns can be addressed also. Ad Muncher includes options to remove identifying fields from page requests, preventing web page owners from tracking where you came from or which browser you’re using. The IP Scramble feature also allows you to hide where you are connected from; it instead bounces web page requests off dozens of anonymous proxy servers sequentially, keeping your address hidden and cached requests scattered.
Don't and drive.
|
|
|
|
|
It is really going to depend on many factors. One version I have pondered on using should I release an application to the general public again, is to use a "battery" type system. (Oppps.. Better run on patent it so that I can wait five years and hit people up for fees )
With the it will simply force the person to "charge" the registration battery when they sign up. This makes a full battery in the program and will function normally until the battery runs out. When it gets low it will have in icon that appears somewhere which if they click on will charge it back up. If it continues to get lower it will start blinking. When the battery is almost died, it will start a popup each time you run the application informing them it needs charged. When it batter dies the program dies until recharged.
This both allows off-line use but with regulation. There would also be an option to keep the battery charged any time there is a network connection thus eliminating any user intervention.
I would also give each installation a unique ID and allow (x) installs per purchase. When they are charging the system, it will pass that ID to the server that will verify they are a legal user. If not, or the number of times it is charged (if you allow two machines then in a battery time span it would allow two recharges), if more charges have been used than allowed or it is an invalid code it would not charge.
All this is a simple way to protect software. BUT (yes there is always one of those), if you are writing an application in C#, unless you have a very good scrambler, some smart person will just decompile your program and diconnect the battery.
This is one of the reasons companies like Microsoft are now trying to force everyone into a hardware key so that hacked version can be detected. I have one rule when it comes to copy protection, "If man created, man can break it". You can never make an application safe you can only keep honest people honest.
Another way to cut down on piracy is to put out lots of updates. If a hacked version it detected in an update, they program no longer works.
Rocky Moore <><
|
|
|
|
|