What parts are needed for a mono based music server? - linux

I have recently installed Ubuntu Linux on my machine. This machine is on pretty much all of the time and houses my music collection. I have looked at various solutions for a central repository for music and each one is lacking in one way or another. I have done some .net programming and thought this would be an ideal project to try on MONO.
My question is this. What parts of an application are needed for streaming music around my house. I would like a web front end but other than that I'm not really sure of the parts needed to form this sort of application.
Any insight into this type of application are much appreciated!

No need to re-invent the wheel
http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance
http://manuals.playstation.net/document/en/ps3/3_15/settings/connectdlna.html
http://www.obsessable.com/feature/home-media-streaming-101-dlna-explained/
Since you are running linux, I suggest you try http://mediatomb.cc/

Related

How to integrate Node.js Server in My cocod2d-x (C++) Game

I am new in Multiplayer Game Development, I have already developed a offline game and now I want to make it a multiplayer, so with help of my friend we create a server side script in node.js, but I don't know how to integrate this in my c++ project,
I've googled but, can't find anything helpful.
anybody can suggest any tutorial.
Thanks
You've asked a big open-ended question. As Allern suggests there are a lot of things that you can do with networked programs that can extend it well beyond that of a single user game. For instance in my current game there is an access to a version welcome page in html. There are file downloads for campaign/user maps and there are connections to Firebase for leaderboards and other networked resources like ads.
However, I suspect you are referring to the communications between a number of separate user machines all synchronized to keep them coordinated. For this you will need to write some serialization code to transmit to and receive packets from the central server. Typically a serialization package like flatbuffers will be needed to move information from your data structures to a packet and the reverse.
You might also require communication/network software to asynchronously send and receive those packets (this may be included in whatever game engine you might be using). Boost.asio might help otherwise. There are numerous other networking packages and libraries all the way down to the bare-bones unix/POSIX calls (or Windows OS calls).
You will also need software on the server side to log users in, deal with players disconnecting and doing the main work of passing the game packets around. This software may also implement the logic of your game (game rules) and might do saves on the data if you want users to be able to play the game in multiple sessions (like a big dungeon crawl). There might be packages out there that do most of the server side stuff. If so, please post what you find out.
Cocos2dx does have some networking software built in but it isn't very functional as far as I'm concerned. It does have facilities to display web pages and download files fairly easy but the async communication seems a little weak. You can try the Network module in the API Docs which may have what you are looking for.
Since the type of game and how you want to implement your player interaction will dictate how the software is to be built I'm afraid this answer is a little vague. Good luck. Share your insights.
you can use public tools , as a sample is websocket,it can support C++ and javasc

NodeJS and multiple mini programs

I know that this question is going to slightly broad and it is a development theory question.
But I have a client who wants the ability for one nodejs application to be able to host multiple mini programs inside of it using the same structure as the parent nodejs. Without giving too much away, the theory is there is one platform and experimenters could post their experiments and run those experiments within the application in the form of modules. Sorta like cloud9 in theory but with experiments. I will be using shortcodes within the application as room name for socket.io to have the ability to chat within an experiment.
Does anybody have an ideas or could point me to a place where there is something for this? (I will clarify any questions you may have about this project in the comments.)
Thanks for your feedback

Need guidance back into programming

I used to be a programmer and unix sysadmin back in the 90's and early 00's. I wrote business software mostly in BBX, which was non-compiled, procedural BASIC. It was all text based when I started, and I only just got into GUI and OOP with ProvideX by the time I got out. I did do some SQL work and understand basic database concepts.
I've continually dabbled since and tried to keep up by running my own Debian web server here at the house, doing little script programs here and there, and most recently learning PHP and Python. But I would like to get versed in the current state of the industry and hopefully make myself employable in it again.
My current learning project is to write a db app that I can use when drag racing to log run data, report based on various combinations of variables, and predict vehicle performance. This should cover IO, data management, and some complex math. I do want to make is sellable, so it has to be in Windows since all other racing software is. My two options now are to write it in MSAccess, which isn't really programming, or to write a front end in Python and use MySQL for the data.
I assume I should go the Python path out of those two, or should I choose a third path that would pay more dividends toward a job? My biggest concern is wasting my time learning pointless stuff. I assume most of the work out there is db related and web based applications, so that would be my ultimate goal. Correct me if I am wrong on that.
Thanks for any input,
Dave
If your goal is to get back into software development, then I recommend that you first ask yourself what type of industry and development setting you'd like to work in. Learn something about the skills those industries are demanding... Then hit Monster and peruse the job qualifications for companies in those industries. Don't limit your view to just language names and broad job descriptions either, but really try to get an idea what sort of developer they're looking for and whether you'd fit in well.
You will be able to find many interesting technologies in lots of different business domains, but what do you really want to be working to help deliver? Python coding, for example, may be interesting, but I'm sure you'd be more interested if it were supporting your motorsport interest in some way versus, say, baby food. When you have the business domains narrowed down, then you can focus on the background required to get jobs in those industries.
You will find an endless set of recommended "hot" techologies if you search for them. I'm sure you can find a list, or post, which will confirm any bias you have on what to learn. But chasing the technology of the day may lead to an unfulfilling day-to-day job if what you're applying it to is not something you find interesting.
I would say that the answer depends on what type of job you want to do. The Fortune 500 company I worked at last summer had everything from mainframe c and cobol, java EE, .net to ruby on rails and python in applications. There are still alot of jobs maintaining legacy desktop applications. But the web atmosphere is obviously the future of business computing, and java EE and .NET are huge players in that arena. As for the project you are describing. I've done QT applications with python and there are python libraries for GTK that I've seen used to run apps in Windows. I've also used java swing and awt to build graphical applications and other than the learning curve for the layout system it works really well for building applications. I wrote a really basic windows application using visual studio and C# one time and that seemed to me to be very easy to write.
Enterprise level Java or .NET involve a fairly steep learning curve, so I would have those as a medium-long term goal rather than try and learn that tech immediately.
It seems to me that learning a high productivity web framework is the best way for you to go. "Ruby on Rails" seems to be a hot ticket at the moment. I've only had a small look at it, but it seems pretty quick and straightforward. Your drag racing app would be a good place to start.
Build a couple of websites for yourself using the tech. Then build a couple of websites for friends for a nominal fee. After that, see if you can find a real client (perhaps a local business). If you have 2 or 3 of those under your belt, then a potential employer will at least take notice.
One warning, though - people expect web sites to look nice. If you don't have good interface design skills yourself, it will be in your best interest to hire a designer to pretty up whatever you produce.
For a Windows desktop application, you can use C# and the various .NET APIs, and store your data in either a Microsoft-provided database, or SQLite, which is a reliable, server-free SQL implementation. (I don't know anything about Microsoft tech, hence the vagueness of my answer.) There is a lot of work available using C# and .NET, and it should be easy to pick up. You'll meet less resistance on the Windows platform with Microsoft's kit than with third-party languages like Python.

How to shift Web-development from windows to linux

I am a systems programmer, so i just know some basic css/html. I like to learn basic of template development for sites. I have some idea about joomla. wordpress, and I am also experimenting with few wikis. A friend of mine is fireworks/photoshop advanced user, it looks quite easy to make a template using fireworks. Is there any equivalent of fireworks on linux. My concern majorly is templating, making a layout, slicing it, defining boxes (something as a place holders for menus/tabs :) ). And some easy CSS based on it. I have been surfing for these answers, but mostly all the users who have migrated to Linux of web-development are talking about PHP/AJAX i mean things like these. None of them is too concerned about templating, may be its a too easy skill for them. Anyways following are the tools i have found on the net,
Kompozer
LnkScape
Gimp
Screem/geany/codeblocks/eclipse/bluefish
Apatana (they say its eclipse based)
Can anyone ps guide, which one to choose to just - make a picture/layout and generate or say write it into a css/html.
I have seen fireworks, it looked good, any best alternative for it on linux, or shall I run an older version of fireworks in wine. I think mine requirements are very basic. Thanks.
Excuse me, I was writing the question and I by-mistake pressed enter. The question got published, and when I tried to delete, it needed 5 votes. So i just took time and wrote it completely, and during that time i got voted down -3:).
EDIT -- I am still surfing, everyone is advocating GIMP, i have used GIMP, but it is more like a picture/manipulation software, not like fireworks, specifically for web-layouts. What are you linux-guys, using for your template designing. I just need advices from experienced guys. Mine requirements are simple, no fancy things... but clean intuitive web-layouts for personal sites which i can change freely, without dependence on anyone, when-ever i wish
I use Fireworks on Mac and have yet to find a decent alternative. The closest thing to a vector editor on Linux is going to be Inkscape but you are unlikely to find it useful for creating exportable slices that are suitable for use in your website. You will have to take multiple intervening steps in order to accomplish what would have otherwise been possible with the "Export as HTML" feature on Fireworks, with which you are likely familiar. GIMP is a reasonable photo editor (with most of the features you would expect from Photo Shop).
It sounds like you are mostly interested in replacing your graphic design workstation and not the subsequent server technologies. If that's the case, I can't wholeheartedly endorse that you switch at this time. I have yet seen an example of a site designed entirely with OOS that could compare with most of the "professional design houses" using proprietary solutions. If you were focused on web application development and not graphic design, I would be a lot less hesitant.
Creating plain-text HTML and CSS on Linux isn't going to be any different from how you create it on Windows. If you are familiar with these mark-up languages, then you will have no problem using a text editor under Linux to accomplish the same thing. If you are currently using tools like Dreamweaver to generate this code for you, you will have to try a few packages like the ones you have mentioned until you find something that is a suitable alternative. You are not going to find a Dreamweaver clone. If you plan to do web design as a business: I would suggest just learning the proper syntax for XHTML and CSS, anyway. Debugging works in the browser just like it does in Windows, with the exception of Internet Explorer (which can be ran in a virtual machine, below). Be sure to pick up the FireBug, YSlow!, and Live HTTP header extensions for Firefox to ease your debugging woes.
To achieve the best of both worlds, you should consider running your current operating system of choice (Windows?) within a virtual machine under Linux. There are many virtualization products available for Linux, but VMware Player/Server seem to be the easiest for people to use. There should still be an apt package for VMware for an easy one-click install in Ubuntu. This way, you can transition comfortably--one app at a time. Most virtualization products are now free!
As a server platform:
If you are using FOSS technologies (Perl, Python, Ruby, PHP, etc) then you'll find that things pretty much drop into place (although moving away from case-insensitive file systems may cause issues).
If you depend on Microsoft technologies (.NET for example) then you're pretty much going to have to rewrite everything, although Mono might help.
As a desktop platform:
Look at the tools you use now. Find equivalents on Linux. Many tools are available for both OSes.
If you use only css and html in you webpages, you can only copy the website and install Apache server on Linux...

Web programming language

I want to go learn web programming,but besides names and a little of html I don't know anything.So I ask you what programming languages you recommend,why,what can be done with it,tools to learn ,etc.I don't know if it matters but I program in a Linux enviroment(Ubuntu).
I don't want to do hardcore web programming ,I only want to be able to develop complete websites and understand network concepts.
Well, most cheap/free web hosts support PHP, MySQL, and most browsers support Javascript.
Target those and you'll be on a reasonably good path.
Some support Ruby and Python, and you might choose that path if you want to learn those languages.
Good luck!
-Adam
Definitely start with HTML, and basic CSS. These are the core of web programming, and you need to understand them well to do anything of consequence.
Once you've got those down, you'll want to move on to a server-side language. The easiest is PHP, but be careful of picking up bad habits, since it's a loose environment; if you stick with PHP, you'll eventually want to use it with an MVC framework such as CodeIgniter, which encourage separating presentation and logic. To get a little more advanced, you can also try Python or Ruby. Get yourself some server space to mess around with; most shared hosting plans are $5-10/month.
For Javascript/AJAX, you'll probably want to start by using Firebug or Firefox's DOM inspector to learn the relationship between the HTML of a page and the DOM object which Javascript uses to interact with it. Once you understand how the DOM works, toy around with jQuery to start doing useful (and fun!) stuff.
You'll also eventually want to learn MySQL (or a similar SQL variant), but that can probably wait, since you can do lots of interesting things without tackling database stuff.
Above all, be patient and persistent, and make use of every resource at your disposal: books, Google, Stack Overflow, and cheat sheets.
Ruby all the way. It's exactly what you need if you're interested in web dev and completely starting from scratch programming-wise. From the basics of Ruby it's pretty easy to get into Rails, which is a very beginner-friendly web framework.
Many great books on Amazon (look for the highest rated of course) on both Ruby and Rails.
Great starting point for links:
http://www.ruby-lang.org/en/documentation/
As well check out Learn to Program
Now get learnin'.
Google App Engine offers free hosting for applications that do not exceed the specified limits. The server-side language is Python, the client-side language is JavaScript inside Django templates. Everything has worked nicely for me in Ubuntu 8.10.
GREAT Question,
a couple of years ago I was in the same place -
What HONESTLY Helped me was using Dreamweaver, I set it in split mode and started watching the code
I used this and started delving into the PHP Application world and could see what was going on (sort of)
I know you can use dreamweaver with wine on the linux, and it can help you do a TON
granted if you continue it has the potential to limit you to the dreamweaver world... but can help you learn and create at the same time
(I build full php apps from scratch now with a notepad... but I started with DW)
The question I'd have is what kind of scale on web programming are you wanting to do? If it is small stuff then the LAMP stack would be my suggestion while if you want to get more into 3-tier architecture then Java or ASP.Net may be worth getting into for middleware or business logic code.
With the exception of the reference to the LAMP stack above, there has been no Perl recommendations. I like Perl as it is easy enough to build a fairly full featured web application (using CGI, or mod_perl). Of course, you are going to have to learn HTML/CSS if you are going to do anything on the web. I feel Perl is a good choice for web development as it is fairly robust and full featured with all of the modules available on CPAN. Combine with an application framework like CGI::Application or Catalyst and you can build sophisticated web apps in a short amount of time. Also, using a tool like XAMPP can help as you won't have to worry about web server or database cofigurations to get started.

Resources