New programmers usually begin with the most popular IDE for their programming language of choice such as Xcode, Visual Studio and others. But with time, basic tools are being mastered, problems become more interesting and complicated and many of us developers begin using additional tools, little timesaver applications for different kinds of tasks, various helpers for checking the data processing chain, for example. In this article I'll tell you about several useful tools I’ve collected for my own toolbox over time. Some of the programs listed below are only available for Mac OS, since I am an iOS developer. But I hope you'll still find the information useful, even if you're developing for another platform since there are analogous tools for other platforms as well.
1. SQLite Manager
Embedded databases are frequently used for storing information in many projects. iOS developers typically use the CoreData framework for accessing data stored in an SQLite database, but it is really a matter of the developer's choice. Xcode has a built-in data model editor that's really useful for creating and changing a database structure as well as creating classes for accessing the database, but it is unable to browse or change the data itself. This has to be done by third-party tools such as SQLite Manager, a Firefox extension.
SQLite Manager is a standard database management GUI with all the functionality you may expect from this kind of software, including the data export/import feature. It may be used to:
- Check the database contents and structure;
- Export data for using it in another software, data backups, etc.;
- Import data to immediately have some test data for your app;
- Quickly edit data in the database during the application testing.
Tip: where to find the database of your iOS app?
If you're debugging the app in iOS Simulator, the database is found in the following location: /Users/USERNAME/Library/Application Support/iPhoneSimulator/IOSVERSION/Applications/APPLICATIONID/Library/Application Support/TARGET/
If the database is stored on the device, it may still be accessed from the Xcode Organizer.
Another task that's often encountered in non-trivial projects is client-server interaction, where a client is an iOS-device. The tools listed below are all related to working on this kind of interaction.
2. XPath tester
XML is very popular format for data storage and exchange and there is a lot of services and applications for processing XML in one way or another. An interesting XML processing tool is XPath tester. XPath tester is used for:
- Outputting raw XML-data in a nice human-readable format;
- Testing Xpath queries and displaying the query results.
You can look at a result of the query requesting data for the "author" tag on the screenshots below.
This is a professional analysis and testing tool for SOAP services. It may be used for:
- Displaying the structure of a WSDL schema of a service (requests, parameters);
- Service testing (sending requests, receiving responses);
- Setting additional request options (e.g., headers);
- Printing request and response in the raw form.
4. JSON Formatter
JSON is another popular data exchange format, which I certainly can’t call "second" because of its advantages (format superiority is actually a topic for another post). JSON Formatter can quickly output raw JSON data in a readable form. By the way, you need to read JSON not only when developing software. Sometimes, you just need to quickly exchange a data piece with the team or the customer or provide an example for the API documentation in a client/server project.
5. Visual JSON
This is an even more advanced JSON visualization tool that supports not only GET, but POST requests and outputs the response in a human-readable format.
Note: SoapUI supports testing of REST services, including those that use JSON for requests and responses.
Use this little tool to search and replace text in many files at once. This really comes in handy when you need to quickly check if errors have been corrected in your XML input or how often the tag "gallery" is used in the data files.
7. Little Snitch
The last tool in this post isn’t exactly meant for software development, but it can certainly be used for development purposes too. Little Snitch is a companion app to the Mac OS built-in firewall that tracks network requests on the application level and may allow or deny individual connections. How can this functionality be useful for a developer?
- Use Little Snitch to analyze application or a system service protocol in an unfamiliar project;
- Reject certain requests to simulate network connection problems without changing client or server code.
So, this is my toolbox with several tricks I have collected on my way to mastery. If you stumble upon some useful programmer's tool or have done so already, I'm looking forward to seeing what you have to share as well.