As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
I am encrypting images using AESCrypt and converting them to NSString, so people can easily share them.. The problem is that text is too long. An Encrypted 19Kb image took minutes to copy. Is there a way I can fix this problem? Is it possible to shorten strings without losing data?
Default-569h#2x.png files base64 string with an encryption key
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
Generally speaking, no you cannot shorten the encrypted strings without losing data. All (lossless) compression algorithms work by eliminating redundancy/patterns. A good encryption algorithm has virtually no redundancy/patterns, so lossless compression is usually not possible. In some cases I've even seen it increase the file size by adding the compression metadata to the file
Your best bet is to apply as much compression (lossy or lossless) to the image before encrypting/converting to Base-64. I would bet that the reason the encryption/decryption takes so long is the limited resources of the mobile device. Extensive floating point operations are hard on mobile devices, and thus they are poor platforms for encryption.
NOTE: Since the NSString class is immutable, you may want to look into the AESCrypt code to see if it is constantly appending and/or copying the string as it goes. This would be a very inefficient way to handle it.
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
I make heavy use of MagicalRecord for fetching, deleting, updating and saving data. I have noticed in testing that I don't get expected results because something went wrong with the operation I was attempting, such as a bad predicate resulting in no record being updated or deleted, etc.
I have looked at the available docs (such as they are) and can find nothing that give a method for examining any return code, etc.
Anyone know of a place that lists all of the available MR methods with explanations (other than the MR Categories and Core)?
I'm not exactly sure what it is you're looking for in the way of documentation. The primary reason for sparse documentation for the project is that the core data docs cover the vast majority of the features. Magical record is merely a set of convenience methods that make standard operations in core data much more manageable.
The parts that are 'non standard' core data functionality may need some extra explanation in how things work, but they source is also available to read and understand. If you have a specific question, please ask it.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
Who, in the world, uses DD-YYYY-MM and DD-YY-MM as standard date format patterns?
Should I worry about them?
A quick look into wiki gave me this page
http://en.wikipedia.org/wiki/Date_notation_by_country
there is no one who uses this kind of format. no need to worry I guess.
It depends on what you are getting the date from and what you are allowed to get away with.
If this is an application that is going to be used by users who would never enter this type of date and even if they do, you can always return an error, then yes, by all means ignore the format.
If, on the other hand, you are writing code that is supposed to read in dates from some unknown data source and it would be a problem if you could not parse a date, then it is probably a very good idea to support the format.
It comes down to the argument of programming by contract vs. defensive programming. If you don't support DD-YY-MM, then your application will not work right that one time in 3 years that something gives it that form of date. If this is acceptable or not worth the cost, than by all means ignore it.
My general rule-of-thumb regarding date parsing is, if strtotime can't handle it, toss it out and make them type a new one. This may be different for whatever language you're using, but there's probably a library/function that parses datetimes for you so you don't have to worry about it. No need to reinvent the wheel.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I have a project that runs on the .NET Micro Framework (or NETMF) and am looking for a profiler. So far none of the ones I've tried will run on NETMF. Does anyone know of a profiler that will?
A week with no answers.
You have a tough problem, which is getting good measurement data in a very small footprint world.
My company, Semantic Designs provides profilers for a variety of languages including C# in a number of variations.
Our (C#) timing profilers can handle multiple threads of execution but require additional space per function call to track the data. It is unclear if you need this capability, and it is unclear that you have the room to capture it.
Our counting profilers require only enough space for track counts for each basic block (stored in an array) but some additional code space as instrumentation. Typically you need a counter slot for every 4-5 lines of code you have. This is likely your best bet.
You'll likely have to build some custom support machinery; in particular, in small embedded environments, our customers usually have to build a small bit of code that exports the count array content to a disk file. If you can achieve that, you can get profiling data.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
We have a Oracle 9i database and OrderDetails table which has a column to store binary data for product images.
These images can be viewed only using a 3rd party tool. I have no idea which 3rd party tool. and I have no idea of the format of the image.
Is there anyway from the binary data we can find what format is the image?
Thanks
file or libmagic is a good place to start.
From your description it isn't clear whether the third-party tool is needed to access the data or to display it. It is entirely probable the data is simply JPG, BMP or PNG and the tool is basically an SQL frontend. To verify this try to write out the binary data to a file (being careful to tell your program it's binary data) and then try to open it with a standard image tool. A decent image editor will ignore the extension and sniff the data to get the format.
If you verify it really is a standard binary image you have two options:
Batch convert to JPEG, saving
yourself the effort of learning the
format.
Find a tool that tells you the
format (there are many including
Imagemagick identify and even
online tools)
Yeah, read about headers of JPG, PNG, GIF and other popular image formats and try to recognize their headers in your data.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Where can I find documentation on the X12 documents along with samples. I am interested in 810 and 812, but would also like to bookmark information on the additional documents.
Is there a good book out there which covers these documents?
Thanks
There's a fair bit around. The first place to look is X12.org.
This looks like a pretty decent online course.
EDI documents aren't particularly hard to process, they're just strings. The difficulty is that within the standard there are a lot of degrees of freedom, so you need to negotiate exactly which field codes etc you're going to support with each transaction partner.
Another magic word to look for is EDIFACT, which is the international standard.
You have to purchase the official documentation (from DISA), however for common X12 transactions like the 810 there are lots of implementation guides around on the net that have the subset of the transactions which are most used.