How can an ejabberd newbie setup a fully functioning ejabberd server? - erlang

i am completely new to ejabberd. I have downloaded the installation for both windows and linux (Ubuntu). Somewhere on the web i had seen a demo of how to install and set it up but the installation was configured as a 'demo'. I have the pidgin XMPP client and now am having problems setting up ejabberd.
Another issue is that i have tried to develop chat systems with Nitrogen's comet pools and erlang ETS tables on the backend (thanks to the failover mechanism embedded in ets tables now) i.e ets:give_away/3 [it gives my chat engines fault tolerance, thanks to the guys who maintain the virtual machine who saw how useful this is]
Can we have Web interfaces to ejabberd servers, putting aside its admin interface. Nitrogen Comets are quite cumbersome sometime forexample, the browser time out especially in Nitrogen 2.X.X can not easily be changed.So now i have decided on ejabberd. How can i customize an internal organization chatting system using ejabberd as the backend engine. I wouldnot want every one in the organisation to download Pidgin as a client but want to embed the chat functionality in the web interfaces.
With Erlang, Yaws, Mnesia, Inets, Mochiweb e.t.c i have no problem so even if it requires me to develope an erlang application with a few Gen servers on top of ejabberd, that wont be a problem
Please point me in the right direction to get ejabberd up and running. On the processOne Website and the ejabberd documentation i have still failed to start it well. Please help

If you are a newbie and want to setup and ejabberd server, you should simply use hosted version of ejabberd.
You can easily create your own domain on http://hosted.im
You should be up and running in minutes

Related

Writing Minecraft panel in Ruby on Rails

I'm planning on writing a control panel for Minecraft in Rails but I don't have much experience with Java at all, Minecraft seems to have some standard remote connection and query tools, but most conventional panels don't seem to use them. For example with McMyAdmin, I have disabled remote connectiona and the query, but it still seems to be able to communicate with the server after restarting it after I've edited the server configs to disable the settings.
What I'm asking is if anyone knows how McMyAdmin communicates with the Minecraft server, it comes with a plugin, but I've deleted that as well and it still seems to be able to communicate with the server, I know McMyAdmin is written in .NET and I believe it uses Mono as it's server, as it's cross platform.
If anybody could shed some light on this I'd be ever so greatful, just trying to get my head around the communication.
McMyAdmin uses the plugin to open a socket that it can interact with(Not sure which features are provided using this plugin). The rest of the features are just from the Process instance that it creates. It also just edits the config files for a few things as well or runs commands using the input stream of the process.

Nitrogen Server

I would like to know which server is the best to use for the Nitrogen Web Framework?
Of the 5 listed on the site, I have already removed Inets(not recommended for production) and WebMachine. Left with only Mochweb, Yaws and Cowboy. I also noted on the site that Nitrogen/Yaws windows binary is not available for download. Any particular reason?
There is no clear answer for what is the "best" to use. If you're just getting started, just pick one and go. Cowboy and Yaws are under the most active development as "full featured" Erlang webservers, and so if your limitation is to use Windows, just use Cowboy.
Each server has its own configuration for tuning, and if you're comfortable tuning and developing for one, Nitrogen provides the mechanism to use your server of choice.
As for not providing a Windows download for Nitrogen/Yaws, Yaws is not done in "pure erlang" (there are some C files that need compiling), and as a result, compiling Yaws on Windows is more complicated, so in order to just get the build out there, Yaws was left out on Windows. Enough time was spent optimizing Nitrogen's build in Windows that I just wasn't going to spend any more time trying to get Yaws running with Nitrogen on Windows. I wanted the release done, and so Yaws was left to the wayside for a future version.

What could be the ideal server side stack for an iOS two-player game?

I am about to start an iOS two-player game.
Its a card game, and is played turn by turn.
After going through a lot of articles and blog posts,
I have decided to go with these:
node.JS on the backend to respond to API calls.
MongoDB as the database.
and Apples Notification service to push data to other devices.
I am comfortable with JavaScript and I am willing to learn node and mongoDB both and I have some time before the project can start.
I have worked with PHP and Java in the past.
Considering the entire scenario, shall I go ahead with what I have thought or there are things I should consider.
You can also consider google app engine using a java or a python backend as the server side. The most obvious advantage is that you wont have to worry about infrastructure hassles as GAE is a managed service. GAE has a high replication datastore similar to mongo and you can code the backend in java which you already know.

IntraWeb / DataSnap?

I'm a hobby programmer trying to build a client/server application suite, using Delphi XE.
I write stand-alone applications occasionally, for my personal use. The problem is I don't know ANYTHING when it comes to networking / multi-tier. I am willing to learn though.
I looked for ways to do this and DataSnap and IntraWeb jump out as the most likely candidates for the job. But, before I start using one or the other, I would like to know a few info I wasn't able to find on the web:
If I build an IW stand-alone app and deploy it on my site (as server) will I be able to connect to it/retrieve data with a client application? I need to do that within my Delphi written app, without using a browser and without using HTML (I know very little HTML and I'm not eager to learn). I know IntraWeb isn't meant for this, but will it work?
If I go with DataSnap and build a server app, will I be able to deploy it to my website? Or do I have to make a computer on the network the server?
In case anyone wants to know, I want to connect 5 computers(from different cities), to exchange information between them, if at all possible using ADO, as I'm very familiar with it.
Intraweb is a server based tool for building web sites, accessed via a browser. It is not "proper" multi-tier, and it sounds like it isn't what you need.
DataSnap is designed to do what you want I think. First, the ADO part would be on the server, and you would define an interface that the server offers to do tasks. Then your clients would call that interface over the internet to get data or do those tasks etc.
As for whether they will work on your web server, that depends on what your server is, and the access that is provided to it. A web server is just a PC, but typical hosting is fairly restricted to running "scripted" languages on that server, which reside in the hosting directory. A Delphi server would be a running executable (usually a Windows Service), listening on a port, and needs much more access to the computer than typical. You would need at least a virtual Windows server with administrator access to the desktop to allow it to work. In the first instance though, you could happily run the server on a DSL line or similar and make it work just fine. You can worry about hosting it on the net when you have customers paying for it.

Erlang as a backend process

I want to use Erlang for some background processing and stuff for a web app. I read about its concurrency handling and stuff and I have started learning it. What I want to do specifically is a persistent connection with the clients using COMET - with the Erlang process co-ordinating the HTTP client connections.
Do I need a Erlang based web server for this?
For the actual implementation, how does the "spawn"-ing work in Erlang. I downloaded the erlang ebook and read about spawning. In the case for my web based script, when two clients connect to the same Erlang script by making an HTTP request - can I automatically "spawn" new threads for each of them, and do message passing?
No, you didn't but it is simplest way. You can combine Erlang with libevent to achieve more http://www.metabrew.com/article/a-million-user-comet-application-with-mochiweb-part-3/
Yes, spawn new client is cheap, if you want cheaper see above.
I would highly recommend using an erlang based webserver to handle the comet connections. The lightweight processes in erlang are half the benefit of using it for this type of thing.
Most of the erlang webserver frameworks will handle the spawning for you. No need to reimplement it yourself. See nitrogen and mochiweb for examples of really dead simple comet implementations.
Did you see the page http://beebole.com/erlang ?
It contains:
how to setup an Erlang environment(with Mochiweb) on Ubuntu
how to install the Nginx web server
a video tutorial to build a small web app using Erlang
You should investigate 'YAWS' (high performance HTTP server) modules: easy to write, full flexibility. YAWS is easily installed: apt-get install yaws (on Ubuntu at least).
Another option would be to use Nitrogen - this allows an easy integration of Erlang code in web pages, including a fully-fledged webserver, and comet.

Resources