Practical Mono
hisham writes "At first glance, you would think that Practical Mono is yet another
introductory book about C# and Mono, but all of that drastically
changes the moment you look at the book's table of contents and see
the variety of topics it covers and the lengths to which the author
goes to describe the more important details." Read the rest of Hisham's review.
Practical Mono
author
Mark Mamone
pages
402
publisher
APRESS
rating
Excellent
reviewer
Hisham Mardam Bey
ISBN
1-59059-548-3
summary
Takes the readers from an introduction to .NET, Mono, and C# to their most advanced features using a real world approach.
The book gently eases the into what .NET and Mono are giving a historical background for each. What I found very interesting is the fact the author takes time to explain about .NET in the real world, and ties this to Mono to give the reader a clear idea of how any why Mono was started and what the reader can do to participate in this effort.
Since a lot of people using Mono might be coming from a traditional .NET environment, the author expects those people to be used to certain development tools. To that effect, the second chapter in the book is dedicated to introducing the reader to development tools that can be used with Mono, especially Mono Develop. This gives the reader some heads up about what can be used instead of their conventional development tools and makes sure you start off on solid grounds.
Having gotten the user all set up and ready for action, the book then moves on to introduce the author to C#. This is a subtle introduction that eases the user into what C# is and how the language works. Chapter 3 comes in very handy when you want to brush up on your C# skills or are new to C#. the author continues to give the reader more information about C# in a more detailed fashion in Chapter 4, "Learning C#: Beyond the Basics". This chapter goes into some nitty-gritty detail about C# classes, exceptions, and all round more advanced C# topics.
Chapter 5 moves into the more exotic areas of .NET that deal with the CLR, IL, assemblies, and the general assembly cache (GAC). This chapter is very helpful if the reader wishes to acquire in depth info of how the .NET environment works. Other discussed topics here are garbage collection, application domains, and the class library. This is one of those chapters that make this book an excellent recommendation for both novice and advanced users of C# and .NET.
The first 5 chapters have made sure the user is very knowledgeable about what Mono is, what .NET is, what C# is, and how all of them relate to each other. They have also explained C# and introduced the reader to its syntax and advanced features. Starting with Chapter 6, the "Practical" bit from the books title starts to kick in quite strongly. If its a book with both theoretical and real world information that you want, then the coming chapters are really going to quench your thirst.
Chapter 6 goes right into the heart of on of .NET's most desired features, Windows Forms. The author explains what Windows Forms is, what GDI+ is, how to implement a good user interface, and gives real world examples of how to do all of that introducing the reader to Windows Forms' various controls. A nice section that is mentioned in several chapters is the "Whats New in Version 2.0?" section that informs the reader about what to expect in the new version of .NET in regard to that particular topic.
Because the author knows that not all people will be using Windows Forms to design their graphical interfaces, he goes into GTK+ and Glade and takes up a complete chapter explaining what they are and how they can be used instead of Windows Forms. Chapter 7 serves as a gentle introduction to the GTK+ and Glade world, and makes sure the uses knows how to pick between Windows Forms and the GTK+ / Glade combination.
After finishing Chapter 7, the user has a very good idea about how to design a complete graphical user interface using freely available tools (Windows Forms in Mono, and GTK+ / Glade using GTK# in Mono). The author now moves on to describe ADO.NET, a heavily used feature of .NET which is also available through Mono. This chapters enlightens the reader and explains all aspects of using ADO.NET in applications to connect and utilize databases. The particular example is geared towards installing MySQL. Explanation is given both for Linux and Windows, which also shows that Mono can be used as a .NET alternative on Windows.
Since XML is constantly referred to as a "hot topic", the author does not let us down and dedicates a complete chapter to discussing XML and Mono. If the reader is new to XML, then he / she will be pleased to find out that an explanation to what XML is and its history is given at the beginning of Chapter 9: Using XML. The chapter deals with looking at XML documents and traversing them. The author shows us a real world example by applying this knowledge to create an RSS feed class library.
Chapter 10 is for those of us with enthusiasm for networking and remoting. This chapter, "Introducing Networking and Remoting", starts by explaining what networks are and their general concepts, then dives into how we can do networking related programming in .NET. We apply this knowledge later on and create an RSS feed handler.
Another heavily used feature in .NET is ASP.NET. Chapter 11: Using ASP.NET, explains what ASP.NET is, how it works internally, and how to use it. This chapter shows the reader how to set up a web server for ASP.NET (both the XSP web server and an external web server) and moves on to show the user how a web service can be written. A lot of readers will find this chapter very useful as web services seem to be an increasing and expanding field right now.
Finally in Chapter 12: Using Advanced Mono Techniques, the author dives into such topics like performance tuning, reflection, and using threads. Advanced readers will particularly like this chapter as it handles some of the "harder" more demanding features of .NET.
This book not only serves as a great learning experience that shows you how things are done in the real world, it also as a general good reference for C#, .NET, and Mono and several of their features. Definitely one you should have in your bookshelf right by your work desk.
I enjoyed reading Mark's book, and I would recommend it to people that are either getting into .NET / Mono or have some experience but would like to further it."
You can purchase Practical Mono from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
The book gently eases the into what .NET and Mono are giving a historical background for each. What I found very interesting is the fact the author takes time to explain about .NET in the real world, and ties this to Mono to give the reader a clear idea of how any why Mono was started and what the reader can do to participate in this effort.
Since a lot of people using Mono might be coming from a traditional .NET environment, the author expects those people to be used to certain development tools. To that effect, the second chapter in the book is dedicated to introducing the reader to development tools that can be used with Mono, especially Mono Develop. This gives the reader some heads up about what can be used instead of their conventional development tools and makes sure you start off on solid grounds.
Having gotten the user all set up and ready for action, the book then moves on to introduce the author to C#. This is a subtle introduction that eases the user into what C# is and how the language works. Chapter 3 comes in very handy when you want to brush up on your C# skills or are new to C#. the author continues to give the reader more information about C# in a more detailed fashion in Chapter 4, "Learning C#: Beyond the Basics". This chapter goes into some nitty-gritty detail about C# classes, exceptions, and all round more advanced C# topics.
Chapter 5 moves into the more exotic areas of .NET that deal with the CLR, IL, assemblies, and the general assembly cache (GAC). This chapter is very helpful if the reader wishes to acquire in depth info of how the .NET environment works. Other discussed topics here are garbage collection, application domains, and the class library. This is one of those chapters that make this book an excellent recommendation for both novice and advanced users of C# and .NET.
The first 5 chapters have made sure the user is very knowledgeable about what Mono is, what .NET is, what C# is, and how all of them relate to each other. They have also explained C# and introduced the reader to its syntax and advanced features. Starting with Chapter 6, the "Practical" bit from the books title starts to kick in quite strongly. If its a book with both theoretical and real world information that you want, then the coming chapters are really going to quench your thirst.
Chapter 6 goes right into the heart of on of .NET's most desired features, Windows Forms. The author explains what Windows Forms is, what GDI+ is, how to implement a good user interface, and gives real world examples of how to do all of that introducing the reader to Windows Forms' various controls. A nice section that is mentioned in several chapters is the "Whats New in Version 2.0?" section that informs the reader about what to expect in the new version of .NET in regard to that particular topic.
Because the author knows that not all people will be using Windows Forms to design their graphical interfaces, he goes into GTK+ and Glade and takes up a complete chapter explaining what they are and how they can be used instead of Windows Forms. Chapter 7 serves as a gentle introduction to the GTK+ and Glade world, and makes sure the uses knows how to pick between Windows Forms and the GTK+ / Glade combination.
After finishing Chapter 7, the user has a very good idea about how to design a complete graphical user interface using freely available tools (Windows Forms in Mono, and GTK+ / Glade using GTK# in Mono). The author now moves on to describe ADO.NET, a heavily used feature of .NET which is also available through Mono. This chapters enlightens the reader and explains all aspects of using ADO.NET in applications to connect and utilize databases. The particular example is geared towards installing MySQL. Explanation is given both for Linux and Windows, which also shows that Mono can be used as a .NET alternative on Windows.
Since XML is constantly referred to as a "hot topic", the author does not let us down and dedicates a complete chapter to discussing XML and Mono. If the reader is new to XML, then he / she will be pleased to find out that an explanation to what XML is and its history is given at the beginning of Chapter 9: Using XML. The chapter deals with looking at XML documents and traversing them. The author shows us a real world example by applying this knowledge to create an RSS feed class library.
Chapter 10 is for those of us with enthusiasm for networking and remoting. This chapter, "Introducing Networking and Remoting", starts by explaining what networks are and their general concepts, then dives into how we can do networking related programming in .NET. We apply this knowledge later on and create an RSS feed handler.
Another heavily used feature in .NET is ASP.NET. Chapter 11: Using ASP.NET, explains what ASP.NET is, how it works internally, and how to use it. This chapter shows the reader how to set up a web server for ASP.NET (both the XSP web server and an external web server) and moves on to show the user how a web service can be written. A lot of readers will find this chapter very useful as web services seem to be an increasing and expanding field right now.
Finally in Chapter 12: Using Advanced Mono Techniques, the author dives into such topics like performance tuning, reflection, and using threads. Advanced readers will particularly like this chapter as it handles some of the "harder" more demanding features of .NET.
This book not only serves as a great learning experience that shows you how things are done in the real world, it also as a general good reference for C#, .NET, and Mono and several of their features. Definitely one you should have in your bookshelf right by your work desk.
I enjoyed reading Mark's book, and I would recommend it to people that are either getting into .NET / Mono or have some experience but would like to further it."
You can purchase Practical Mono from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
fGmmmmmnnnnm!
Have you read my blog? Neither have I.
Queers-fucking queers. I hate them. One of them ruined my life. I was married-had a good job, and a son-a son that I loved. I lost it all-all because of a queer.
He was a guy that I knew at work. I didn't know that he was queer; I just thought he was a nice guy; I thought that he was my friend. One night, after work-we'd been working late-we stopped at a bar for a drink. One drink became several; both of us became drunk. I don't remember much of what happened after that, but I do remember that he kept touching me-kept putting his arm around my shoulder-kept touching my leg. I remember having a hard-on, but it must have been the alcohol that was causing it.
Somehow we ended up in a hotel room-in the same bed. I remember that he was lying on top of me-kissing me. I was too drunk not to return his kisses. Then, we were naked. He had my legs spread apart. I remember that he spit on his hand-then rubbed it on my asshole, moistening it, lubricating it for what he did next-I was too drunk to resist-he raped me; he stuck his cock into my ass.
While he fucked me-my cock became really hard; it began throbbing; I had to do something about it; it wasn't because I liked getting fucked; it wasn't because I was queer-I'm not; but, I had to beat off. As he was fucking me, I was pumping my cock. I think we both came at the same time. It was the most intense orgasm that I've ever had-but I guess that was because of the pressure his cock was exerting on my prostate; it certainly wasn't because I was enjoying it. We might have done more. I might have even fucked him-but, at some time, I passed out-and everything that happened after my first orgasm is a blur.
I woke up the next morning-in bed-next to him; he still slept. Cum had dried-was matted, in the hair of my stomach. I was hung over. Watching him there, softly snoring, lying in the wreck we'd made of the bed, among wrinkled, semen stained, sheets, I remembered what he'd done-remembered that he'd raped me. I was furious; the God damned queer had fucked me-had actually fucked me in the ass. I remember thinking, "I'll fix him. He'll never rape anyone else."
I had to look around for my pants-finding them, crumpled on the floor, next to the bed. I always carried a pocket knife-a Swiss army knife. Opening it, I walked around to his side of the bed, leaned over-grabbed his cock.
He moaned slightly-but didn't awake-until-I sliced off his cock. Then, with a scream, he sat up on the bed, both hands searching his crotch-shock evident in his face-shock from the wound, from which blood was gushing-shock that his hands couldn't find his cock-the cock I held in my hand.
He was a pitiful sight-a bloody gash where his cock used to be. When I'd sliced off his cock, I'd also opened up the front of his scrotum. His balls, blood stained, slipped out of their sack when he stood up from the bed, trying to grab his cock out of my hand. Pushing him back down on the bed, and saying, "You won't need those any longer." I grabbed his nuts-sliced them off as well. His scream-I'll never forget that scream-was piercing. I hit him to shut him up-over and over I hit him.
Grabbing my clothes, I quickly dressed, but, by then, someone was already pounding on the door. Hearing a key in the lock, I quickly pulled open the door, jerking the hotel maid off balance-then, brushing by her, quickly ran down the hall, down the stairs, and out into the street. By the time I got home, the cops were already there. It seems that I'd used my credit card to pay for the room.
It was a messy trial. The papers were full of it, with headlines such as, "Man Castrates Gay Lover." From the way they told it, I was also gay.
Fifteen years-fifteen-fucking years-I got-sentenced to prison for fifteen-fucking years. He didn't even die. Fifteen-fucking years for cutting off a queer's cock and balls. Hell, I should have gotten a reward. There should be a bounty on queer's balls.
My wife divorced me. Hell, she didn't even come to my trial-never came to visit me in jail. After
At first glance, you would think that Practical Mono...
No...at first glance, I think this is a book about how to get the kissing disease easier.
"Once, I thought I had mono for an entire year. Turns out I was just really bored"
"When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
"Hemos" "Zonk" "Taco" "Samzenpus"..
What the Hell does this mean ? Are these retards so ashamed of their families that they hide under such stupid nicks ?
Save yourself $7.00 (17.5%) by buying the book here: Practical Mono. And if you use the "secret" A9.com discount, you can save an extra 1.57%!
Subject says it!
Sent from my ASR33 using ASCII
That sounds along the same lines as Practical Herpes!
Its simple-licious!
This was taken from a review on Amazon that people may find useful.
http://religiousfreaks.com/Since a lot of people using Mono might be coming from a traditional .NET environment, the author expects those people to be used to certain development tools. To that effect, the second chapter in the book is dedicated to introducing the reader to development tools that can be used with Mono, especially Mono Develop.
Bahaha. Mono is a deployment option for windows developers. Nobody in their right mind uses MonoDevelop when they can use VS.NET
Starting with Chapter 6, the "Practical" bit from the books title starts to kick in quite strongly. If its a book with both theoretical and real world information that you want, then the coming chapters are really going to quench your thirst.
Whoa, for a minute there I thought this was a book about WINE.
He who knows best knows how little he knows. - Thomas Jefferson
From the review, it seems that the book deals with very few Mono specific stuff, like XSP and gtk#. Everything else is common to both MS .Net and Mono. Which makes me wonder, what is the real worth of buying this book. There are so many excellent books available for .Net (Microsoft Press has some excellent titles. Generally I have found MS Press books to be excellent on MS topics), which will take you through the basics and even to tricky details of the CLR and IL. The remaining Mono specific stuff can be gathered from the Internet.
.Net and Mono, more Linux specific stuff etc etc.
So why buy this book? I would have bought one, if it talked more about Mono specific stuff. Like compatibility problems, challenges when building for
Life is just a conviction.
Aftuw he suwvived Pwacticaw Mono-nucweosis, what kiwwed Ewmer Fudd?
Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
Comment removed based on user account deletion
I liked the info in the book review. It provided what is in the book, but geesh!!!
:-D
It felt like I was reading something by (the character)David Van Driessen.
Catch that ref if you can.
He heh!!
...as in, "if you kiss Kathleen Fent Malda you practically have mono!"
Two glaring grammatical mistakes that made me not read the rest of the article. That is ridiculously bad.
Here's a practical Mono question:
If I need high performance out of something in C#/.Net, I can always write it in native C++ and package it up as a COM object. What would be an analogous concept in Mono? How does the Mono framework support native, unmanaged code?
Use Java instead.
That honestly discusses the influence of Java on C# (which is pretty huge...), and has a discussion why you would choose to develop for .Net rather than JVM?
Cause most books I've glanced through seem to be remarkably silent on those questions.
"At first glance, you would think that Practical Mono is yet another introductory book about C# and Mono..."
No, at first glance I thought it was a book on retro sound systems. There is a programming language called Mono? Wow, it's nice to be out of the loop...
I REFUSE to use anything related to such an evil convicted MONOPOLY as M$$$ and You Should Too!!!
Mod me up! Because this is going to the TOPPPPP!!`11
". . . have made sure the user is very knowledgeable about what Mono is, what .NET is, what C# is, and how all of them relate to each other."
In the same manner that the first 5 chapters of The Feynman Lectures on Physics makes one very knowledgeable about physics.
Teach Yourself Programming in Ten Years
KFG
...I sure do hope it has a section on patent infringement!
The book sux as its reviewer
"He's still dead, Jim!"
y =mono_meme_update_mono_still
http://www.realmeme.com/roller/page/realmeme?entr
Finally in Chapter 12: Using Advanced Mono Techniques, the author dives into such topics like performance tuning, reflection, and using threads.
Then what the hell are the basics? OK, I can just about let reflection pass, but a developer doesn't deserve to get above the rank of Junior or Beginner until they understand threads and performance tuning.
Bob
Listen to my latest album here
.. as it turned out, I was just really bored.
And I thought it was about Mono Hi-Fi.
No joke! Many years ago I had the pleasure of listening to a high end valve amp (Radford) hooked up to a Fons turntable, listening to (of all things), Cowboy music, all in glorious mono and the sound stage from the modified AMW speakers (and the submarine battery cables used for speaker wire) was so realistic, so 3D that 'stereo' sounded artificial.
Must of been the direct to disc cut on the vinyl.
So much for 5.1 sound.!
Don't be apathetic. Procrastinate!
This review is interesting, but very hard for the non-.NET indoctrinated to follow. Specifically, many terms go undefined, which is a particular problem for the review of a book aimed at MONO beginners. For example, what are:
CLR
IR
GAC (I know what it stands for, but what does it do?)
Since Chapter 7 is apparently about ADO.NET, it would be nice to give the reader a little sense of what this is.
I think the problem is that not many people have to ponder that question(JVM vs. .NET).
.NET, Java/C++ like and runs on MS servers as in graphical applications too.
.NET were really cross platform with MS support, but it isn't. Too bad for Microsoft, good for Sun and Java.
Java's strength is that it's crossplatform and fares well with distributed systems.
C# that it's on Windows, part of
People who have to ponder which is better, propably either don't really need Java and those who need Java propably don't need or can't use C#.
Only reason people really would need C# is propably if working on Windows Servers or doing Windows GUI's. If you need crossplatform compatability and scalability, you're better of with Java but forget the fast graphical application witht it.
It might be diffent thing if
Nobody knows the trouble I've seen, nobody knows has the trouble seen me, even I sometimes wonder why I write these line
..is my big hassle with it. I installed SuSE 9.3 on a spare machine (yes I know v10 is out now), and nothing I did seemed to be able to get Mono to compile. I followed all the help/man pages, both on the mono site as well as Novell's site. Google, both web and newsgroups, was no help either.
Maybe once I get some free time I'll wipe the machine and try again with SuSE 10, since I've heard that the Mono packages come bundled with it. I'll cross my fingers and hope that all the dependencies get satisfied by the installer.
If that doesn't work, I suppose I could install it on Windows. But, what would the point be of doing that?
Chip H.
Mono . . . Aw, it's not for you. It's more of a Shelbyville idea.
and piis cocktail.
Paragraph 1 "a clear idea of how any why Mono was started" - that would be a clearer idea than I get about what this sentance was supposed to mean.
.Net. Just checked (in less than 60 seconds): it's "global assembly cache" in Mono as well.
Paragraph 2 "gives the reader some heads up about what can be used instead of their conventional development tools and makes sure you start off on solid grounds." Is this ABOUT the reader ("THEIR tools") or TO the reader ("YOU start off"... on more solid grounds than this shaky, shifting sentance structure)?
Paragraph 3 "introduce the author to C#" - I'd hope the author was already introduced, so that the author could introduce the READER to C#.
Paragraph 4 "general assembly cache (GAC)" No, it's the Global Assembly Cache, at least in Microsoft's version of
Then a few somewhat coherent paragraphs, until we get to:
"makes sure the uses knows how to pick"... As the USER, I'd like to pick the USES of the software.
"connect and utilize databases"... Utilize literally means, "put to use for a purpose that is not the intended design." You can USE a screwdriver to turn a screw, or UTILIZE a screwdriver to pound in a nail. You can USE a database to create, select, update, and delete information. You can UTILIZE a database to fill out a marketing buzzwords list or take up space on a disk.
"if the reader is new to XML, then he / she will be pleased" There's already a way to say this well in English: "Readers new to XML will be pleased." I'd be pleased to read a review that looked more like English, less like XML.
If the quality of the review represents what the book is about, I'd prefer to not waste my time with book or subject matter. Unfortunately, I can't get back the time I wasted reading this incredibly lousy review.
I was suprised when I got my ASP.NET application running without changes on my Linux Web Server. It turns out that most of .NET is implemented except for omissions like 'Enterprise Services' (Active Directory) in its place they have an LDAP namespace which you can use to talk to any LDAP-compatible directory (i.e. Novell Directory, Open LDAP, etc)
.ashx files and the IHttpHandler interface you have them out of the box.
:), as a result it is installed by default in Fedora.
But as a webdeveloper using ASP.NET you can consider it 'cross-platform', ASP.NET 1.1 is fully compliant and most of ASP.NET 2.0 is though you have to use the 'gmcs' compiler to currently use C# 2.0 features.
Also being a Java developer, using XSP to develop with is unfamiliary productive, it boots in a fraction of a second - a lot less than the 8 seconds for my basic tomcat installation.
mod_mono has benefits as ASP.NET can be run as a first-class citizen (similar to perl,php,etc) on apache without needing to open any other ports and without needing to run mod_proxy/mod_jk services.
There is a lot to like about mono. C# is a far superior language than Java, I can't see how people can think otherwise. Typed Exceptions is the only 'feature' missing (read: annoying code-bloat) and that is by design. C# features include: Properties, Indexers, Delegates/Events, Partial classes, ref/out params, Operator Overloading.
Although one of my favourite things about mono is that it can run Boo (http://boo.codehaus.org/) on Linux. It is an advanced agile, statically-typed agile language that has Python's power and brevity with C# performance. It can also run in interactive mode which efectively gives you a scripting language productivity with a compliled language performance - the best of both worlds.
Personally coming from a Java web-developer perspective I'm not a fan of ASP.NET webforms for all situations, (Its really productive for Intranet applications) but for my Internet applications I still prefer to generate XHTML/CSS so I need servlet style control, its good to know that with
Also Mono is 'Open Source' (In contrast to other popular platforms
but poorly edited. All of the points you make are based on editing mistakes, not writing mistakes per se.
:)
Given that the review was largely an outline of the topics covered in the book, it could stand some rewriting too, but try for some more positive sounding feedback and correct use of English all `round, eh?
The use of unmanaged code is to allow legacy C++ code to run on .NET, and to allow all sorts of 'unsafe' things to be done. Performance is not a good reason to do this.
So would a 3D video game's graphics or physics run acceptably fast in managed code (e.g. C# or managed C++) compared to unmanaged code?
The Monoppix Project makes a Knoppix-based Live CD with the complete Mono development environment included. So if you want to give it a hassle-free try, go ahead!
Karma: none (due to not believing in reincarnation)
brown
green
brown
green
ah, hell, it's just dog ####
2^3 * 31 * 647
MOD POINTS. SOMEONE PLEASE MOD THIS POST UP!
okay, thanks, i needed that laugh.
that was good.
back to work now, i guess.
2^3 * 31 * 647
Has anyone tried running the VS.NET express on one of the Windows emulators for Linux? results?
Actually, I read this book. it's pretty good. the reviewer was right on about all the points. great review.