Basic IRC Server Protocol overview / tutorial - network-programming

I have to develop my own IRC Server for a project for school.
School does not require much and all i have to show them is a functioning
irc server which accepts multiple connections and actually performs the basic tasks
such as opening a room, chatting, banning ..
I developed my own IRC bot when i was younger but building the irc server is much harder,
as i do not have time to make my own research or read the whole RFC of the IRC Server protocol.
so the special is, do you know any sites/tutorials/articles that describe in short the irc server protocol, so i could develop a basic irc server without reading a whole RFC?
I know it might piss off some people that i do not actually want to study the protocol but just kind of "copy" it for my school project. this is not the case, i do want to study it as i studied a lot of protocols, and i will. Right now i do not need to understand it, i just need something working for my project, or i will be left without a grade.

What language do you use?
Here is an working simple irc server written in java by Alex Boyd.
Edit: The source code for got lost in time. Use the archived version.

I see #jous has already answered your query.
For others who want to learn about IRC server development, here is a very good resource - https://www.alien.net.au/irc/index.html

Related

Questions regarding ios back-end programming (concept)

thank you all for reading my question~
Before asking some (2~3) questions, I will briefly explain what I am trying to do. I am trying to build a turn based multiplayer (1 vs 1) game. I have a little knowledge of Swift/IOS development, mysql, html, and jsp. I am planning to learn php since many people say combination of mysql and php is good for ios back-end programming.
Here are actual questions:
Do I need to get a droplet from places like Digital Ocean and deploy my own server? Or is it possible to use web hosting such as bluehost for this purpose?
This is the part which I have no clue about... How do I actually develop a multiplayer game? I can guess that this has something to do with tcp/ip socket programming. My experience with tcp/ip programming did not require mysql or something similar if I remember it correctly. In that vein, what's the role of some database like mysql when it comes to developing a multiplayer game? Of course it becomes handy when saving scores and achievement; however, I do not know why it is required for finding a match and establishing a connection. Wouldn't a private server needed instead for receiving and sending sockets? Does this mean I have to lease a dedicated server and setup everything by myself?
It seems like there are more than three questions... sorry for asking too many questions. I am a noob programmer and needs many advice from experts!
Is is necessary for me to deploy a web application for handling all backend stuffs? By the way, I am trying to avoid having users make an account. As a result, if I have to manage each user, maybe keeping each user's unique phone id can help me distinguish each user?
I have looked into both Google's and Apple's free game match system... It is very tempting to use them, but my friends designed game match screen and separate ranking systems. As so, I need to come up with a way to solve this conundrum. Please help me!!! Thank you all for reading my question again and help a poor soul here...

Choosing Erlang webserver

Yep, subjective question. But here are a lot of such questions that got good answers. So now I have to try to develop some REST API with Erlang, as I got from google I have to install some webserver, such as Cowboy, Webmachine, Yaws, Mociweb. But all information I can find is too old and seems to be non-actual. So what server still keeps on developing and how can I choose one for me? Am I wrong at all at this way?
You can't go wrong with Cowboy. It is actively being developed, with a 2.0 pre-release just made available. The documentation is excellent, and handles REST very well.
See: http://ninenines.eu/docs/en/cowboy/1.0/guide/rest_handlers/ for the Cowboy REST support.

Choosing web service for iphone app

im currently making an iphone application that will be in need of a web service. And obviously im thinking about releasing it to appstore eventually. So my question is what kind of web service should i use that is "well known " or what normally people woould choose?
It does not have to be free just that its professional. Anyone has some tips?
I have been looking into amazon web services and im trying the 12 months free trial, and i cant seem to find any tutorial of how to upload some files that will produce a json text as a GET request. If anyone have some information regarding that or a tutorial that would also be great!
If you are not happy/confident about developing server side code you could also consider using services such as Parse
https://www.parse.com
You're asking some extremely open-ended questions for which there is no single good answer.
So my question is what kind of web service should i use that is "well known " or what normally people woould choose?
There are plenty of "well known" web services to choose from. First you need to decide if you want this to run on Windows or on linux, and the answer for that question depends mostly on what you are comfortable working with and what you're used to programming on. If you're going the linux route then you further need to decide what linux distribution to use: RedHat, Ubuntu, Debian, Amazon, etc.
The answer to that question will then narrow down your choices of the actual "web service", be it IIS (Windows only), Apache, nginx, etc. And those answers will also depend on and/or help decide which programming language(s) you want to utilize: java, C#, python, ruby, perl, etc.
i cant seem to find any tutorial of how to upload some files that will produce a json text as a GET request.
The reason you can't find such a tutorial is because it's going to depend greatly upon the answers to all the above questions. If you want to implement this on Windows using IIS and C# then any tutorials are going to be specific to those choices. If you want to implement this on linux using Apache and java then any tutorials are going to be specific to those choices, and significantly different from the Windows based tutorials.

What is a simple and low-profile way to do push notifications in an ASP.NET MVC app?

I need a way for my web application to send push-notifications to the client side. Realtime is not a strong requirement, near-realtime is okay. I don't need anything fancy, just sending a string to the client every now and then, nothing more. What's really important is that the solution must be very simple and low-profile (performance-wise mainly). Could you give me advice on which framework to use?
Many people would say SignalR hands down, but I'm not sure about the performance part. It is not disqualified, I'll tell about my doubts below, and I'm also interested about any insights you may have about this, but the main question stays what I wrote above.
I read this article recently. What it provides is a long-running request pattern with only a few classes, a little IIS & async magic and nothing more. Even if you have an IIS connection limit of 200, it will barely use up any of those connections. Compared to this, SignalR is as complex and heavy-weight as a nuclear power plant. It comes with half a dozen different DLL's (like OWIN, which I haven't heard about before, and even after a bit of Googling, I can't figure out what it is). The performance wiki page of SignalR starts by suggesting to increase your concurrent request limit to a ridiculous amount. So I'm guessing it's not using the aforementioned "trick". I'm not exactly sure how bad that is, but in the light of that article, it doesn't sound good.
If you really want to push messages to the client, SignalR approach is very good. As far as I know it works with web-sockets. Try to digg this way. Here is some article for the beginning:
http://blogs.msdn.com/b/youssefm/archive/2012/07/17/building-real-time-web-apps-with-asp-net-webapi-and-websockets.aspx.
For mobile apps I would use great library PushSharp. https://github.com/Redth/PushSharp
With help of PushSharp you can send notifications to any mobile app: WindowsPhone, IOS, Android, Blackberry etc.
Please note: sending push notification differs from platform to platform.
Keep in mind approach with pinging server all the time and checking for new messages. It is probably the easiest way.
I use SignalR and toastr.js. SignalR can scale to thousands of connections. There are also native SignalR clients for iOS and Android (check out Signalr-ObjC).
Since noone answered about the resource requirements and my doubts about SignalR, which was the key question here, I'm accepting this as an answer: http://www.codeproject.com/Articles/27107/Scalable-COMET-Combined-with-ASP-NET .

Design a chat client in a website. Shoud I use XMPP?

I am going to design a website using ruby on rails. And one of the features i want to implement is the chat functionality. Where users can chat with the other users/members of the website. What i should be using or in other words start learning in order to design something like that ?
Is XMPP the answer. if so, i would be glad if someone could be a bit descriptive on where to go from there and/or suggest some books. thanks !
I said XMPP because i know Facebook uses that and i plan to create something similar
Protocols can become a pretty hairy topic, implementing a well-working protocol yourself can be pretty daunting without prior experience. Especially if it has to do with (near) real-time communication between several parties. If this is supposed to scale to any significant number of visitors, implementing this correctly can be pretty tough.
XMPP is a protocol that is already well established, is shaken down and already has many stable implementations. So when using it, you do not need to worry about designing or implementing the protocol anymore. For that reason, I'd really recommend it. It's also a rather easy to understand protocol, even if you will have to spend some time reading up on the basics in the beginning. Look neigh further than http://xmpp.org for documentation.
Setting up an XMPP server can be done in minutes, depending on your OS and the server you choose. The caveat is that if you want to customize the server at all, you will have to learn about the innards of it as well to some degree, which may or may not take some time.
The bottom line is: choosing XMPP and existing XMPP libraries and servers, you get 90% of the functionality for free and can concentrate on implementing your client. The question is, how much will you have to dig into the details of XMPP and the server, will this take longer than rolling your own protocol and will your own protocol suit your needs in the long term as well as XMPP would?
You always have to think about how much you want to spend on implementing this.
If you go with XMPP you will be able to run a XMPP standard chat server (outside of Rails) and should be able to use a JavaScript Client with a XMPP to HTTP Bridge.
A project a quick Google Search brought up doing this is Strophe.
But I'd argue that you should think long and hard about if XMPP really suits your needs and if you really want to go through all that trouble for a Chat.
Implementing your own is also not straightforward, especially when you are writing all the long-polling and signaling stuff yourself.
But it's not impossible and should give you a simple working solution in a couple of days.
Doing the chat yourself in Rails will require you however to use an alternative Database since Rails can't store data in-memory between requests and persisting chat data in ActiveRecord seems like not a very scalable and good idea.
Using XMPP obviously has the benefit of your users being able to connect to your Chat service using iChat, Jabber or any other XMPP Client..

Resources