Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking for code must demonstrate a minimal understanding of the problem being solved. Include attempted solutions, why they didn't work, and the expected results. See also: Stack Overflow question checklist
Closed 9 years ago.
Improve this question
I release a bunch of tools for free, but recently I have began to sell an application, that has private research, and people have been able to get my source code, and one person publically released my entire source. I spent a lot of time on this program, just to have someone crack it, and release my entire source.
How can I go about protecting my program? I have tried HWID, but people are still able to crack it. I know I am limited by C#, but it the most convenient to use. I just need a way to protect my programs from people trying to do this.
You could have a look at the many obfuscation tools that are out there, for example these:
http://gapotchenko.com/eazfuscator.net
http://orangeheap.blogspot.nl
http://confuser.codeplex.com (succeeded by https://yck1509.github.io/ConfuserEx/ and then again by https://github.com/XenocodeRCE/neo-ConfuserEx)
http://ntoolbox.com)
Well, the problem with languages like C#/Java is that they are generally much easier to de-obfuscate. The way to secure this is generally to put this stuff into a webservice, but you said you couldn't really do that. What about porting specific non-trivial functions over to a language like C, and obfuscate that. Your C# program could then use reflection to make calls to this external/unmanaged dll. It would increase the difficulty for de-obfuscating, but the problem is that if someone wants it bad enough, they can figure it out as it is client-side.
It may be that legal action is the only real solution here, but this is not a site for legal advice, and I am not qualified to give it if it were.
Additionally, this could be a business decision. Consider Making your software open-source and post a donation link. I am also not qualified to give business advice, but this is worth considering. It may actually increase your revenue, not to mention the other benefits that come with releasing open-source software.
There's Dotfuscator (http://www.preemptive.com/products/dotfuscator/overview). But the best solution in some cases is to offer what you do as a web site (Software as a Service).
Consider this tool for example to convert VB to C#: http://converter.telerik.com/
Or this tool to format JSON: http://jsonformatter.curiousconcept.com/
This may or may not work for you. I don't know what the nature of the software you're trying to protect is.
No, your code needs to contain the information needed to decrypt itself, its an impossible problem to solve.
Your best solution is to put your intellectual property on a server in the cloud that only you have access to. Give your customers a unique login, audit their access to check for abuse, off load as much grunt work onto your customers machines, but keep your algorithms locked into the cloud.
Related
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 11 years ago.
Improve this question
I just completed with one of my applications which is now ready to be tested. But before submitting my application I want to make sure I have used appropriate comments wherever required. Though I use comments in most of my applications but it is this time I have realized that my application is quite complex and thus for the purpose of reviewing the code again and for functional understanding I need proper commenting. I was also worried about the amount of commenting in my application.
What I am looking for are standard commenting practices we need to follow in IPhone development.
Kindly assist.
Good Comments say "why" you did something, not "what" you did.
I usually implement comments in the following situations, (this is by no means exhaustive), and any developer reviewing or debugging your application would appreciate them in these situations:
When I use a third-party or otherwise obscure library;
In deep-nested control structures when they cannot be avoided;
When implementing my own protocols in Obj-C (when they are not obvious);
And in general when something is not obvious to you and/or a potential reviewer
EDIT: And I also suggest implementing sparingly, if you did not get that from the post. It is annoying to read code that is near the over-commenting threshold. You do not want to feel like you are reading an introduction to programming book.
There is nothing special with regard to comments and iPhone development.
Personally I prefer readable (self-documenting) code over comments. That is, using meaningful method and variable names to make the purpose of the code understood. If it still can't be understood then comments might be useful, but don't make them too long. A problem with long comments is that they might fall out of sync with the sources and become misleading.
I think links to other sources of documentation are good, such as stackoverflow questions, bug databases, etc.
These, to me, are the golden principles:
Comments should never explain code (use self-explanatory code with proper names and indentation).
Don't insult the reader's intelligence with unnesseary comments
Comment by code block (if you need to explain a process, don't use seperate comments on each line of the code block).
When Im commenting my code, I act as if I had some half wit programmer sitting right next to me asking me "what does this code do, and why are you doing it?" Ill reply in a nutshell of an answer.
My response to him is what I comment.
// now that we got the data we need lets store it in the Settings Array
// check for NULL if null, change to None Selected
// make sure there is an object here so we dont crash
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
I'm a developer who is making an app without a graphic designer for the first time. I am competent at making user interfaces that fits conventions and the Apple Human Interface Guidelines, but when it comes adding that extra layer of decoration to make the app sexy, I'm totally inexperienced.
Does anyone have any pointers or resources for helping developers such as myself act like graphic designers, in particular for iPhone apps?
I have a technical knowledge of photoshop, without having an artistic ability with it. I like to believe that I have a good eye for judging aesthetics, but I've never been good at creating something aesthetically pleasing from scratch.
"Acting as" requires being one, so learn the basics of graphic design. One popular book for beginners is The Non-Designer's Design Book. It's not about Photoshop, it's about recognizing why a design works to improve your judgement. There is more logic behind it than you may think. Usually being pleasing is the same as conveying useful information, "design is how it works as much as how it looks".
Review screenshots of existing iOS apps: Pttrns, Well Placed Pixels, Beautiful Pixels, or keep your own collection using LittleSnapper and CandyBar.
Unfortunately most tutorials are step by step instructions to reach a goal, but they don't bother much in why or how combining certain effects works. Then there are a lot of subtleties which you will have to dig in blog posts. Erik Tjernlund posted a good link (flyosity.com), here is another (bjango.com). These details create immediate trust from the user. There are plenty of tutorial sites on Google, but learning PS is a long-term goal.
An (offtopic) option now is to buy professional services. Example, Articles from Sophia Teutschler got help from the IconFactory. It's cost effective to invest your time in what you do best to pay for what they do best.
I really like Mike Rundle's (#flyosity) blog post – "Crafting Subtle & Realistic User Interfaces" – as a good, hands-on introduction on how to think about creating beautiful user interfaces. Follow some of his advice and your apps will automatically look much better.
To get inspiration, I highly recommend the Pttrns site. Look at how different apps solve common tasks.
My last advice is to practice a lot. My experience is that using the most commonly used tools (Photoshop and Illustrator) doesn't come naturally for us developers. Seeing a professional using these tools can sometimes be a real eye-opener. Especially workflow and how they use the tools to guide them in the creative process.
I am frequently visiting this website: http://app.itize.us/wp/
Not for directly copying others design or functionality but I always get ideas on how to design GUI elements here, often by mixing many of the different styles. I will also recommend you to just play with all of the different layer options you get when you double-click a layer in Photoshop, learned a lot by doing that!
The Web Designers Guide to iOS Apps is excellent but it does focus on NimbleKit. If you're not using NK the design discussions are still valuable.
You can follow tutorials here. I am not vary much familiar about photoshop/illustrator but may be these tutorials be helpful.
Having a "good eye" and knowing what looks nice is good, but if you don't have that initial "vision" then you will be spending a lot of time playing around until you stumble on the design that looks good and even then you may never reach that point.
As developers, we are very good at following the guidelines put down by Apple and making sure that we follow those - after all it's a nice logical set of rules to follow and that's exactly what we do when we write code - follow logical rules.
Unfortunately the design side of things doesn't have rules that we can follow. Yes, we may be technical at using Photoshop or some other drawing application, but when it comes to actually having that spark of inspiration, that's not something we can just click a button for.
Looking at other applications is one way to go. But then you may end up having an app that looks like another app or a collection of a number of apps and then you may have problems with a fluid user interaction.
My own approach to this problem was to go out and find someone who is really good at doing that art stuff and working with them. I struggled for a long time designing my own stuff, but looking back, it was obvious it was a developer (me) doing the design. I'm not sure what it is, but there's an extra something that these graphic artists seem to be able to do that I just can't get and that makes all the difference.
But the flip side to this is that he can't code. Sometimes it's best to just stick to what you're best at.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
When starting out on any project it could be seen as essential to pick an appropriate framework. I was wondering if you would point out any key questions that should be asked in order to aid the choice. I have looked at numerous sites and there doesn't seem to be any definative questions to ask before a choice is made.
I was wondering if, in any of your experience,s you have come across any key questions.
I gather one of the first is what are you developing? web app or desktop based
Any key questions would be a great help. This is a pretty general question as I am just looking for generic questions that would be asked before a choice is made.
Pick one you (or your team) already know.
Learning a new framework is a time consuming and expensive process that you don't want to be associated with a project. I would say the number one factor when selecting a framework/language is the existing knowledge base in your team.
[Obviously, this isn't very helpful if you don't currently know any, or the ones you do know aren't useful in the project's domain]
The best technology is the one you know. So ask a question - what technologies my team has experience in.
The main question you must ask is about stability. If you are developing an enterprise application wich sould be maintained for several years and should me stable, you should use mature and well tested frameworks. Something Java EE or .NET based for web applications. If your project is experimental, you can use experimental frameworks, technologies, languages etc.
Pick the one with good documentation. The quality of documentation gives you a clue how good the framework is.
A large user community is a plus, especially for opensource frameworks.
Ask yourself right from the start:
What are the things my application
will do, what are the ones it won't ever
do?
Choose a framework that makes it easy to accomplish the things you want from your application, care less for things that are extra. Don't worry, when you'll really need extra, you'll worry about looking then.
Who will use my application? What are
the numbers and needs of people that
will be the application's users?
You need a framework that scales well to the number of users you intend your app to handle and to their specific needs(collaboration, social interaction, ease of use, necessary tools, etc).
Is there a strong support
for the framework(from the developer or the community)?
Make sure you'll have who to turn to if you'll have questions or problems.
I usually try to find the framework that is the most popular. Have a look at a comparison of Javascript frameworks in Google Trends. It's pretty obvious that jQuery is the most popular by a large margin, so I'd lean towards using that.
It's not the only criteria, but more users means better documentation, testing, features, etc. Also, if you're new to an area of programming, then it usually pays to follow the wisdom of the crowd.
I would start by thinking about the pros and cons of frameworks in general. Based on those things that matter most in your situation, see which frameworks fit.
It's also helpful to think about the general features found in most frameworks of a platform (web application frameworks, for example). Decide which of those features are important to you, then investigate the frameworks that provide those features.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I'm just about to publish a project as open source, and would really like some feedback on a couple of things:
The code is quite clean but the version control history isn't. Mistakes, debug code, perhaps inappropriate code, etc. Should I clear the history before publishing, or import it anyway to the public repository?
Should I prioritize making a tutorial, feature explanations or api documentation?
Other thoughts that makes a new project easy for people to get into?
In my very humble opinion:
1) If you're set on going open source, be proud of your code. We all know there are mistakes and bugs along the way. There are going to be more, too, so don't feel like you can't display those publically. You can!
2) Definitely. Probably in that, order, too, because that's the order that people using your product are going to read them. They'll have to use your software before they decide to work on it.
3) The best advice I can give is to have clear build instructions, hopefully with scripts to help people configure the environment. A common plague with open source software is requiring new developers to download tons of libraries and configure their box to work just right in order to be able to build the software. That, to me, is very frustrating and can put me off very quickly.
Good luck!
Totally your choice, unless you used copyrighted code for which you don't have distribution rights or if there is some issue involving redistribution, credit, whatever.
Hard to say without knowing what it is. What would you need in order to use it? What would you want to see first? (Probably the tutorial...)
Perhaps a start-to-finish example including installation. Perhaps you should go to the trouble of running it a virtual environment or on a new OS install, so you are sure your installation instructions deal with everything.
It should be easy enough to squash some commits together, and the effort will be worth it. Developers often look through the history to get an insight into how the project was designed ground-up.
Definitely. The least you can do is get some documentation engine like Doxygen to generate the documentation. Tutorial is probably unnecessary at this point; the community will write tutorials for you, provided the code is nicely documented.
Good packaging always helps. Generate pre-compiled binaries for more than one architecture, and if feasible, create RPMs and DEBs. This lowers the entry barrier greatly. Nobody contributes to software they don't use. You could additionally use a nice bug tracker like Bugzilla, or use an integrated solution like Launchpad or Trac. Also set up a mailing list and IRC channel. This will help build a community.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
If you have worked with DotNetNuke, what are advantages and disadvantages that you have come across? What are alternative Content Management Systems that you have used that you find are better or worst. I'm trying to get a feel of what Content Management System Frameworks people are using and the advantages and disadvantages of them.
Thanks,
XaiSoft
This post may help as it has covered some of this info!
DotNetNuke works well, and has a wide variety of addins that are available for purchase from various vendors. It is also open source which is nice, as it allows you to troubleshoot issues to a deeper level then if it was closed source.
We didn't spend a lot of time researching CMS systems but this past summer we couldn't find anything with the functionality of DotNetNuke which targets the .net framework. If your not tied to .net then there are a ton of options available.
DNN is very very dynamic in terms of functionality, features and security. There's is nothing like it. However there are a few drawbacks that i felt while using it.
The biggest drawback in my opinion is the response time of a DNN using sites. The code itself is very obsolete and you need to lock yourself and scour on each and every coding details before using DNN. One more is the URL dependency, if you need to change your domain name to another your old database will be of no use.
There are a lot of new promising CMS extension in Dot NET market and Sageframe, in my opinion, is the best of them. I have been using this extension for quite a time now and I am quite fascinated by its features though still in beta.
DotNetNuke is quite powerful. It's biggest advantage is the inline editing of site content, in my opinion. It's biggest disadvantage is that it is pretty resource intensive compared to other CMS systems.
Here's a comparison I wrote last month:
http://www.logicalvue.com/blog/2009/01/cms-shootout-dotnetnuke-vs-joomla-vs-wordpress/
The biggest disadvantage is the missing support for multiple languages.
Yes, you can install multiple languages but you can't write seperate content for each installed language...
It's not hard to write such a module yourself but the other problem is the URLs.
You can use the 'Human Friendly' option but yet again, this does not support multiple languages.
For instance /Products/tabid/57/language/en-US/Default.aspx becomes products.aspx but there isn't a possibility to include the language like this /en-US/products.aspx
I know there are 3th party tools like UrlMaster which covers this up but still I think this should be available in such a framework.
The biggest advantage is the ease of developing your own modules! If a functionality isn't available, you can write your own module without any problems!
.Net Nuke is not good for developing projects.
Microsoft is releasing lot of versiond and including lot of lauguages.
So how developers will learn all the things...
This is very bad for developers.....