What are good resources to learn about web services for an iOS developer? [closed] - iphone

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 9 years ago.
Improve this question
I am a C# developer which I specialize in Win forms and web application. I work in financial field and most of my experience is connecting to Oracle/sql/sybase and get data and display on the screen.
Recently I taught myself how to develop iPhone / iPad applications. It went very well. Now I want to learn how to connect using web services to my own databases and get data or upload data.
So I need to learn Web services, SOAP, WSDL and whatever else that I need. I don't have any experience in it but if someone can direct me to the right books I will buy them and read them. i want to start writing in my office and connect to my databases and be able to do a proof of concept. Any ideas?

Particularly because you're starting out, I would suggest looking at RESTful services. The API is essentially a URL using HTTP GET, PUT, POST, or DELETE. The output can be XML, JSON, whatever you want. Very simple to construct and test. And because the API is so simple, you don't necessarily need to add another library to your project and increase the code size.
The second chapter of the book iPhone Games Projects talks about how to use a RESTful rankings system to record game scores to a server from an iPhone game.

I don't think you need books for that subject. Try using some API's to make your life easier, and check some code samples. For example:
For JSON, SBJSON is a standard: https://github.com/stig/json-framework/
For XML, have a look at this Apple example: https://developer.apple.com/library/ios/#samplecode/SeismicXML/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007323

An easy way to retrieve info from a online database is to use PHP. You simply call a PHP file located on your server from your iPhone application. The PHP file takes in info you sent it via GET/POST methods (if required), retrieves info from your database, and echo's it in XML/JSON.

Related

What is the current best speech recognition API for ios to match few keywords? [closed]

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 9 years ago.
Improve this question
I am looking for an API for ios (free ideally) that will allow to do some speech recognition. I have seen few posts for this: iPhone speech recognition API? and free speech recognition engines for iOS? and after a bit of prospect i have gathered the sdk that looks quite interesting:
http://dragonmobile.nuancemobiledeveloper.com/public/index.php?task=home
http://www.politepix.com/openears
http://www.creaceed.com/ceedvocalsdk/ (not free :-\ )
http://www.ispeech.org/
is there any of those that really stand out of the crowd and quite recent? how do they really differentiate from each other?
If you want to track just few keywords, you should not look for speech recognition API or service. This task is called Keyword Spotting and it uses different algorithms than speech recognition. Speech recognition tries to find all the words that has been said and because of that it consumes way more resources than keyword spotting. Keyword spotter only tries to find few selected keywords or keyphrases. It's way simple and way less resource consuming.
The only possible solution to archive this funcitonality is to use open source package like OpenEars powered by Pocketsphinx
http://www.politepix.com/openears
Openears has Rejecto plugin that implements something similar.
Pocketsphinx itself has recently implemented open source effective keyword spotting too, but it didn't get into Openers yet. It's only available through pocketsphinx API, you need to create kws search and set the target word to look for. I hope soon this functionality will reach OpenEars too.
Nuance gives developers free access (but not for high volume) - See http://www.masshightech.com/stories/2011/09/26/daily13-Nuance-tweaks-mobile-dev-program-with-free-access-to-Dragon.html or http://dragonmobile.nuancemobiledeveloper.com/public/index.php?task=home
Nuance services are typically offered commercially and require up front fees and transaction fees. The interesting news above is that they now make low volume use of their services available to developers for free. So, for development, testing, and demonstration you can probably use the free Nuance services. However, unlike the Google services that come free in Android, if your app has thousands of users you will likely have to pay for Nuance services.
We have been developing CeedVocal SDK since 2008, it's based on Julius & FLite open source projects.
Here's some context: we wanted to make our app (Vocalia) for speech recognition back in 2008 and basically picked Julius (hesitated with Pocket Sphinx, which appears to be good as well) and optimized its file format so that it would boot in 1-2 sec instead of 20sec on the original iPhone. Then we dutifully trained our own acoustic models in 6 languages. We designed the API, and eventually decided to offer it to other developers as an SDK.
CeedVocal basically supports 2 modes of operation:
matching of words (or small phrases)
keyword spotting
In the first mode of operation, it tries to align the input speech to a word (or phrase) in its list of acceptable input. This forces the input to a pre-known word, even if the speech is something else. Accuracy is good. In the second mode of operation, it will try to pick one of its keywords into the stream of speech. This is a difficult case, and it can be less accurate.

Best Way to Build a Web Based Instant Messaging? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
Want to build an web based Instant Messaging system similar to www.chatzy.com
The question is what is the best way to go about it?
Go soley the Ajax way, where i write a script that continually pings and updates a database for u conversation?
Or play around with XMPP?
If the answer is XMPP? i would appreciate any pointer to any online resource that details how XMPP can be used in building such services...(Done some couple of searches via google but results came in vogue)
I would be using PHP, but can use Python too, if it offers a better solution to getting this done.
Thanks
XMPP/BOSH
Right now I would use XMPP/BOSH to write web-based IM. I found Prosody the easiest server that supports BOSH. Then you don't need to write any server-side code at all.
Then for the javascript I would use strophe.js
The future
Like Pablo pointed out you could look at websockets. But Pablo is misinformed about gmail. It does not use websockets. The major drawback of websockets is browser support. It is the future, but not yet.
Wrong
polling does not scale. I would not recommend it.
Using AJAX to ping and update a database is not a very good option.
I would suggest you reading about WebSockets. It's the way GMAIL's chat (among other) work.
If you are looking to develop using PHP and little javascript, checkout Jaxl Framework for building web applications. http://github.com/abhinavsingh/JAXL
Use ejabberd/prosody as jabber server, they are stable and scalable enough to give you enough throughput.
Using websockets is surely recommended, but alas not all browsers support them till date.

amqp or xmpp for real time online games [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 months ago.
The community reviewed whether to reopen this question 5 months ago and left it closed:
Original close reason(s) were not resolved
Improve this question
Which of these technology suite for Multi user online game project?
Project requirements:
Able to handle 2k-5k user at any given time.
client library for iphone and android (native, no javascript).
client library for Microsoft Windows (most important), also for mac os x and linux.
Good documentation specially for mod development
Project is not open-source. So, can only use libraries with suitable license.
I can program in erlang and java as well, programming language isn't an issue.
I was looking at following server technologies like Openfire, Tigase, ejabberd and RabbitMQ.
All are good for my project but I want to know more about what suite my needs, AMQP or XMPP.
What AMQP offer specially for real time online games. Is it better option then xmpp?
A key difference between XMPP and AMQP is binary content. AMQP handles binary data just fine, and XMPP seems more designed for XML. Personally for online games I use Google Protocol Buffers for message formatting and parsing, and with their very small binary footprint, I'd be more inclined to use AMQP to deliver those messages.
But do consider what AMQP server you want to use. I've been bitten by using RabbitMQ for my AMQP server in the past. RabbitMQ does not have any flow control facilities, at all. So if your clients are sending messages faster than your server can consume them, buffers on the server can fill up and blow the server up. More recent versions of RabbitMQ implement flow control in an exceedingly coarse way: they halt all consumers in the system until memory clears up.
I've never tried zeromq; perhaps it'd be better for the things I've been using RabbitMQ for...
5K users doesn't tell me much about their behaviour, but if they all submited one request within the same 10 second window then let's say you'd be looking in the 500-1000 requests per second.
I've had Active/MQ running on my relatively low-powered lap-top easily handling 300 requests per second and so I'd happily recommend it here. You can also set up clusters of brokers and achieve horizontal scalability. You can use an http protocol (STOMP) or its native binary protocol. Lots of client API libraries also for C/C++, Java, JavaScript and others. There is some initial AMQP support.
You didn't mention any persistence requirement, but again I would have thought that most RDBMSs would suffice. That said, some of the document oriented and big-table type databases look interesting from a horizontal scaling perspective.
I've also found Apache Camel highly performant and I strongly recommend it. Camel is used to implement your logic layer.

What options are there for Free for commercial use NoSql Datastores for the .NET world? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a book, tool, software library, tutorial or other 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've been looking around....
MongoDB seems to require a commercial license. http://www.mongodb.org/display/DOCS/Licensing
RavenDB has quite a costly scheme. http://ravendb.net/licensing
CouchDB, seems to be free for commercial use? But requires Apache, which is a bit of a pain.
Are there any other good options for .NET?
From my understanding, MongoDB is open source and free to use. There are two license types: AGPL v3.0 and a commercial license. There are a few minor restrictions with the AGPL 3.0, so some may need to remove these restrictions with a commercial license, but most probably won't.
So in short, I believe it is free and can most likely suit your needs.
It may or may not apply to you: if you're going to use RavenDB for a startup company, you may request a free license.
Of course, there's nothing preventing you from using a table in an ordinary SQL database as a simple repository for key-value pairs, which is essentially what a NoSQL database is.
This has the added benefit of still allowing you to use SQL where it is appropriate.
Cassandra uses Facebook's "thrift" (now Apache Thrift) RPC mechanism for its client layer. This is capable of generating C# output, which you can compile into a .NET assembly and call from a MS CLR application.
Whether Cassandra itself does what you want, is very much dependent upon what you want is.
https://github.com/mcintyre321/PieDb is a very basic MIT-licenced embedded document db wot I wrote
It
writes objects to app_data using json.net serialized documents
uses Lucene.Net.Linq to provide basic IQueryable support
optimistic concurrency
requires no configuration
It would be nice to get some other developers behind it, as it's only had about a weekend of work on it, but it works for simple cases as a RavenDb replacement.
Google has released a beta preview of their Cloud Datastore (previously only available for App Engine apps), but now can be used via their JSON API. It is free up to 1GB with 50K calls per day and there is a paid option after that.
GCD is rather low level, but I wrote a .NET ORM for it called Pogo that supports LINQ. The API is inspired by the RavenDB client API.
The source code and documentation for Pogo is available here - http://code.thecodeprose.com/pogo, and it is also available on Nuget.
For .Net there is also FatDB, which we used for a smaller project. They have a one year demo version : http://fatcloud.com/

Software Requirement Specifications for Web Applications [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
I'm looking for some guidance/books to read when it comes to creating a software requirement specification for a web application. For inspiration I have read some spec documents for desktop based applications. The documents I have read capture a systems functional requirements in use cases which tend to be rather data oriented with use cases centered around the various CRUD operations the application is intended to perform.
I like this structure however I'm finding it rather difficult to marry it to what my web application needs to do, mostly reading data as opposed to manipulating it. I've had a go at writing some use cases however they all tend to boil down to "Search for item", "Change view of search results" or "User selects facet to refine search results". This doesn't sound quite right to me and makes me wonder if I'm going about this the right way.
Are there planning differences between web based and desktop based applications?
In my experience, there is really nothing wrong as having all the specifications being CRUD. Most of the time, any application isn't just "a simple CRUD app." Requirements evolve and different parts of the systems tend to diverge and acquire some specific logic.
Even if it feels like repeating the same CRUD sentences over and over, actually writing them down and thinking about it (instead of copy & pasting) will often uncover hidden requirements.
The differences between desktop based applications and web based applications is staggering.
I recommend reading these in exactly this order and apply this knowledge in exactly the opposite order, aside from CSS 3, HTML 5, and XHTML 1.1:
RFC 3986 - URI
RFC 2616 - HTTP 1.1
RFC 4346 - TLS 1.1
RFC 4251 - SSH Protocol
RFC 4252 - SSH Authentication
RFC 4253 - SSH Transport
RFC 2045 - MIME
RFC 4627 - JSON
HTML 4.01
XML
XHTML 1.0
XHTML 1.1
ECMAScript
CSS 2
HTML 5 (Not a standard)
CSS 3 (Not a standard)
Web Content Accessibility Guidelines 2.0
Symantec Internet Security Threat Report Volume XIV
Symantec Internet Security Threat Report Volume XV
OWASP Top 10
SEO
Once you have finished reading this you should begin to understand how the basic technology of the web works. Only at this point would you be ready to develop, conformantly, for a web application. There are many other technologies at play, but these are the basics and once you are familiar with the basics you will know where else to look for more information.
Basically you can sue the same method as for desktop applications, although you might make some addition, because we applications often tend to have different type of requrements. First of all, read something good about Use Cases, there are different use case levels and that might be a solution to your use cases which do not seem so right. Also do not forget about use case generalization and parametrized use cases if CRUD repetition is the problem. One thing, which is often more important in web applications than in desktop apps is the aspect of usability. This is because of the nature of the web - people have ofthe the coice of not using your service and go to next google result if you app is not usable. So what I think is a good addition to the spec are Personas - just find some possible instances of the human actors for your use cases and try to think of some goals they might want to achieve often using your web app and present how they will achieve them using your web app (and try to make it super easy of course). Another important thing is the Information Architecture - the way in which you will provide information in your web app. This comprises of navigation, some basic layout, but not necessarily design, just information about where to find something in your web app. This can be done using some rapid prototyping tools.