Material to learn GObject and Glib [closed] - c

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 6 years ago.
Improve this question
I am comfortable with C. but need to learn GObject and Glib for gstreamer. All i found on net is Gobject reference manual. Its good but looking for tutorial for Gobject/Glib as the main focus is on gstreamer.
So pls share any other resources to learn the glib and gobject.

Start with Glib, its quite easy and well described here: Glib Reference Manual
GObject is mostly a lot of boilerplate code to achieve object orientation. Try out the "maman bar" examples found in the GObject Reference Manual
For me, GStreamer took the most time to understand. The documentation is good but there is alot to read (GStreamer docs). After reading about the basics, try starting a pipeline from the cmdline using gst-launch. Then read the full manual about application development and do some examples. Before trying to build your own plugin, check out some simple plugin and try understand the different parts, a simple place to start is the identity plugin
Good luck!
/Joel Larsson

You may be interested in these sample programs I uploaded to github after I read the chapter in the Gnome Developers Guide and went through the gobject manual.

There is also "the offical Gnome 2 Developer's guide". See 59 ff. on the mentioned book...
And it's really a good idea to check the sources of gtk. I've spend the last few weeks on getting into it, and found this book to be very helpful. What's quite tedious is to get the constuctors right and the order of initialization is "quite" mind-bending.
What you should check is chapter 4 in the GObject documentation also. It does not cover everything but together with the book it' quite ok. I suggest starting with a very simple derived glass form GObject....., to better understand on base principle
One always has two
structures. A Class Structure in which you store all the function pointers and an instance structure which represents one Object. This is the most important thing to get.
Another point which is a bit harder to understand it the reference counting for memory management. It helps if you had contact before with Objective-C and/or libapr and/or
COM.
Regards
Friedrich

This is best GTK+ book I found, it has a chapter on GLib, but reference manual is the best place to learn and the most up to date "book" you will find.

Manage C data using the GLib collections is a introduction of glib collection(links, hash tables, arrays, trees, queues, relations). Lots of examples are included. Good for beginners.

Maybe too much easy but there are the GNOME platform demos which you can get used to the idiomatics of GNOME and its libraries.

Related

Finding a way to learn GTK+ 3.x [duplicate]

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 6 years ago.
Improve this question
I am new to gtk and gnome programming and like to study GTK+ 3.0 and Gnome 3 programming. Since both of these are recent APIs, I can't find a good tutorial or blog post about these topics. The books I found on GTK+ or GNOME programming are very old ones. So I decided to start with the latest gtk tutorial at http://developer.gnome.org/gtk-tutorial/ which currently happened to be about GTK+ 2.90.7.
I need your help to find any tutorial or blogs or any book which cover GTK+ 3.0 or GNOME 3 programming topics. Would you please share any links that you know about these topics and thank you in advance.
Well, you need to start looking here. Second, what was said before is kinda right, there are books about Gtk+ 2.x and you could apply almost everything you learn to Gtk+ 3.x programming. I started by using Gtk+ 2.x and a few time later Gtk+ 3.x went out. I changed to the new version, migrated my old code, and that was how I learn to use Gtk+ 3.x, although have to say that is a process of always learning with Gtk/Glib based programming.
My recommendation: Learn Gtk+ 2.x there's some books, and some tutorials around. I remember this. And your other tool, main tool to is to read Gnome Project code, code from nautilus, gnome-control-center, gnome-utils, etc., almost everything basic you want to make your app do, there's already done by some Gnome module.
I've just seen this book came out: "GNOME 3 Application Development Beginner's Guide"
http://www.packtpub.com/gnome-3-application-development-beginners-guide/book
Check out the 10-minute tutorials on developer.gnome.org. They are designed for GTK 3.0. (Although really not much has changed in the basics between GTK 2 and 3.)
Gtk+ Tutorials & Resources
http://www.gtkforums.com/viewtopic.php?f=3&t=988&p=72088=GTK3+with+CSS#p72088
Scroll down to the links in gtkforums.com Index: Gtk+3.x with CSS
I suggest starting in: Intro and first program
http://www.gtkforums.com/viewtopic.php?f=3&t=988&p=72088=GTK3+with+CSS#p72088
Also under the section GTK+ Programming Tutorials "GUI Toolkit" you'll find:
Official GTK+3.x "Getting Started with GTK+"
http://developer.gnome.org/gtk3/stable/gtk-getting-started.html
Official GTK+3.x "Tutorials, code samples, and platform demos in C"
http://developer.gnome.org/gnome-devel-demos/3.5/c.html.en
Also: GNOME University Project
http://www.gtkforums.com/viewtopic.php?f=3&t=178162
Why don't you start with GTK+ 2.x ? I used GTK+ 2.x for my project and changed it to GTK3+ lately. Most changes are object fields which became private and now have to be accessed via methods. Another big change in GTK3+ is the depreacation of GdkGC. Instead of GdkGC you now have to use Cairo, but cairo is already available in GTK 2.x. In my opinion moving from GTK+ 2.x to GTK3+ at a latter stadium is not a big issue. And since GTK3+ is still pretty new it is not fully supported everywhere. I.e: the latest LTS Ubuntu is 10.10 which does not run GTK3+. Neither is the GTK3+ for Windows fully supported yet.

Recommended books for building a shell/BBS Server [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 7 years ago.
Improve this question
I am working on a independent project for school, and I need a bit of guidance on possible resources. Basically, I am trying to build a Unix-style shell (possibly porting later to Windows) in C or C++. I will add shell commands in a modular fashion, adding functionality as I go. The final step will be to ad a "connect" command which will allow a user to connect to a telnet BBS that I have designed. The BBS will also only have basic, skeletal functionality. E.G., I am probably going to have news blurbs, maybe a basic application and a basic door game.
I don't really need help with the programming (at least, not yet), but I have been having trouble finding good resources to help me out. What I am looking for is a good book on shell programming (not writing scripts, but actually programming a shell from scratch, and its various interactions with the underlying system), and a good book on adding telnet functionality- what I mean by this is that I want to use my computer as a server, and allow a few other users to connect in order to test that my system works. I am currently reading the Sans "Teach Yourself TCP/IP in 24 hours" which has proved reasonably useful for someone with a good understanding of CS, algorithms, data structures, etc. I just need something a little more specific.
Just a little background- I am a second year Computer Science student at Purdue, and I am doing this independent study in order to tie together many of the concepts I have learned thus far. If anyone could point me toward some truly excellent resources, it would be very much appreciated.
Please let me know if you need more detail or clarification in order to point me toward the appropriate resource. Note that I am willing to buy any book available if it proves to be a valuable resource. Also, I did try a search for these resources on SO, but most questions seemed to be too specific (generally about issues that someone is having with their implementation of a shell, etc.); I would also prefer personal recommendations from experienced programmers in the field.
Thanks in advance.
-S
PS- To clarify "BBS" for younger programmers- this is what existed before the Internet. Old school, dial-up, text based bulletin board systems on a 2400 baud modem. I obviously can't recreate that exactly, but my hope was to synthesize the experience using telnet or SSH. See http://www.telnetbbsguide.com/ for more information on a telnet BBS. I need to be able to write my own software, though, that merely has a fraction of the functionality of a real BBS. But, I am not sure what I need to be searching for to learn more about this- should I be looking at server books, networking books, or something else entirely?
PPS- More clarification. Most of the books I have been seeing on BBS's are books about how to setup, run, and maintain a BBS as a sysop, using pre-existing software. What I need to do is write the software myself. I will likely use telnet, as it appears to be easier to use that SSH (at least, to program- please correct me if I am wrong about this). I friend of mine recommended that I get a book on patterns, and also a copy of "The Pragmatic Programmer". Please let me know if he is pointing me in the right direction for what I want to build. Also, just as a side note, I do have a pretty decent (if basic) knowledge of programming, algorithms, and data structures- but absolutely no knowledge of networking or servers and I am not really sure how much I actually need to know in order to start development on this project. Well, I know a little bit about networking, just not from a programmer's perspective. Thank you all again.
There is a book about programming unix shells! written by none other than Axel Tobias-Schreiner, illustrious author of ooc.pdf, The "Object-Oriented C" PDF (Google it, but don't forget his name!).
It's called "Using C with Curses, Lex and Yacc: Building a Window Shell for Unix System V", Prentice Hall, 1990; and it really should be considered Part 3 of the saga begun in K&R "The C Programming Language", and continued in the second half of K&P "The UNIX Programming Environment".
The shell the book describes is a rogue-style "window system" that works inside the terminal (using curses), it includes a text-file viewer, and a command-language interpreter that runs commands inside of these "windows". The command language uses lex and yacc to implement the lexer/parser. So the book serves as an introduction to doing such things, a large literate program in C, and goldmine of snippets for using curses, complicated options processing, and implementing a programming language using the much-touted standard unix tools.
I've never seen a book about programming of shells, although I'd be happy to find out that such a thing exists.
But really, isn't programming a shell basically a list of features that you'll implement AND the order of evaluation of how interpret the users input? You can see a good write-up on order of evaluation in 'Classic Shell Programming', Robbins and Beebe AND in 'C Shell Field Guide' (the Andersons) and possibly others.
Of course, you would learn a lot by digging in on the available source codes for shells, bash, z shell, ksh.
Sorry, I don't have any ideas about the BBS server part of your question. As you found the SAMS book helpful, I'd recommend looking at the W. Richard Stevens' Network Programming Series of books, which is 99% Unix network programming and maybe not what you want.
(Finally, consider changing out your recommendation tag for bash or zsh, as many regular contributors at S.O. check for new questions by searching on 'their' tags. The people that can answer your question better may not be reading it)
I hope this helps.

Why there is not a comprehensive c archive network? [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 3 years ago.
Improve this question
There are websites as collections of python/perl/R libraries. Why there is not an equivalent one for c?
I searched the internet and only found a small website calling itself CCAN. There are only a few libraries in that website.
If I need extra libraries for c programming, where can I find them? Is there an well organized website of the c libraries?
Thanks.
If I need extra libraries for c programming, where can I find them? Is there an well organized website of the c libraries?
No known to me outside of CCAN.
The problem here is that C doesn't have any even loose specification for libraries. Compare that to e.g. packages in Java or Python or Perl.
And even then, C is quite bare bone itself leaving many things for libraries to implement themselves. I/O abstraction, memory management, multi-threading, OS integration - minor differences in how libraries work with any of the resources might make them incompatible, preventing them being used in the same project.
I have seen in past some 3rd party commercial libraries for C, covering quite a lot of functionality, but frankly I can't recommend them and honestly do not even remember their names - for they often were causing more problems than really helping. (OK, I'm lying: they were rarely causing unsolvable problems: it's the numerous workarounds which were causing often the problems later.)
Otherwise, for C you might want to check the Glib and (do not get me wrong) to also check the C standard as in my experience few actually know many of the utilities already in the standard library itself. And well, Google is your friend: lots of public domain code is there for you to simply throw as-is into your project.
I don't know of anybody who's studied this in detail, though I would be curious to see the studies. I'm sure it has to do with the nature of the C programming community itself.
I think a large (maybe the primary?) part of the answer is: before the WWW, there was no such thing as a single resource for obtaining libraries for a particular language. People obtained their libraries, and knowledge of libraries, via many different means: through BBSes, mailing lists, newsgroups, and periodicals. The C community dates from this time, of course, and I've noticed a similar difference in culture regarding other languages from this period and before.
I think another part of the answer has to do with the general decentralization of C culture itself. There's no one C compiler, no one C development community, that serves as a hub and a potential point for projects to attach themselves to. And the C development community is huge, which further drives this decentralization and splintering.
In the case of C libraries, OS distributions actually do a pretty good job of collecting useful C/C++ libraries out there. (With the unfortunate exception of Windows, I believe.) They do a better job in these languages than most others, probably since C and C++ are such important systems languages on these platforms.
As far as CCAN goes, I think what would make a more worthwhile project, given the number of different distributors of C code out there, is to have a single site that links to the various libraries on their own native sites, rather than trying to get them to upload straight to CCAN. I think there's a use for this in and apart from Google, which will give you a lot of noise if you try just browsing for libraries. The question is, would you and the bulk of the C communities out there embrace such a site if it existed?
You might be amused to see how CPAN got its start: http://www.brainbell.com/tutors/Perl/CPAN_History.htm
CPAN evolved just as its community did. So the same thing could happen in the C/C++ world if the leadership and interest is there. But it hasn't happened yet.
use http://www.google.com/codesearch?q=lang:%22C%22 variant of http://www.google.com/codesearch
=> i.e. add lang:"C" in the search query
Use these web-sites:
Debian "Testing": Subsection libs
The Free Country: Free C/C++ Libraries
Free Software Directory: Category/Library
SourceForge Software Map: Software Development/Libraries/C
Upstream Tracker: List of C/C++ Shared Libraries
There is a Maven-like repository and dependency management system called Biicode.
There isn't a huge collection of libraries on there yet, but you can add forks of open source projects yourself or inform original authors about it.
EDIT: the company behind biicode is dead
EDIT2: the spiritual successor seems to be conan.io
There is a C package manager which looks promising called CLib:
github:
https://github.com/clibs/clib
tutorial:
https://dev.to/noah11012/clibs-a-package-manager-for-c-4jmi
Why do you need a website for a collection of C libraries? Just use Google.

Cross Platform C library for GUI Apps? [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 6 years ago.
The community reviewed whether to reopen this question 8 months ago and left it closed:
Original close reason(s) were not resolved
Improve this question
Free of charge, simple to learn/use, Cross Platform C library for GUI Apps? Am I looking for Qt?
Bonus question: Can I develop with the said library/toolkit on Mac then recompile on PC/Linux?
Super Bonus Question: Link to tutorial and/or download of said library.
The truth is that I'm in the process of catching up on the C family (coming from web development - XHTML/PHP/MySQL) to learn iPhone development.
I do understand that C is not C++ or ObjectiveC but I want to keep the learning curve as simple as possible. Not to get too off topic, but I am also on the lookout for good starter books and websites. I've found this so far.
I'm trying to kill many birds with one stone here. I don understand that there are platform specific extensions, but I will try to avoid those for porting purposes
The idea is that I want to write the code on one machine and just compile thrice. (Mac/Win/Linux) If Objective C will compile on Windows and Linux as well as OS X then that's good. If I must use C++, that's also fine.
If you are looking for a C++ library, then Qt basically does what you are looking for. If you want to stick to pure C, then Qt is not an option.
As a C framework you could use GTK+, it works on Linux, Windows and OS X.
Take a look at the IUP Toolkit. It is written largely in C, and is also easily bound to Lua.
To complete this post Allegro has to be here =)
http://www.talula.demon.co.uk/allegro/
Allegro Game Library, have many graphics functions and a basic GUI library
And an explicit gui (and very simple) Allegro based library
http://cgui.sourceforge.net/index.html
Both multi-platform
Another option is Tk, which is a GUI library written in C. It comes with Tcl, a scripting language also written in C. These were designed from the ground up to be embedded in C programs.
One that I have considered using was the EFL, as it's quite fast, simple, small, but powerful. I would recommend diving into Elementary, their simplest GUI toolkit, and then later on, once you get comfortable with it, move to EDJE, which is not as simple, but much more powerful.
Qt is a C++ library. Other cross platform libraries that you might consider are wxWidgets (C++), and GTK (C).
All three of the presented libraries are fully cross platform. You can also look at Tcl/Tk, but that's a toolkit :).
You tagged this question about qt, which is a tag I follow. However, you are also asking with regards to c programming.
If for some strange (or domain-enforced) reason you feel you must use C and not C++, then Qt is not for you. It was designed from the ground-up as a C++ library.
Yet I'd strongly suggest questioning why your project would need to be in C. There are many benefits to C++, and the idea that C performs intrinsically better is mostly a myth. For some hard data on that, check out Bjarne Stroustrup's Learning C++ as a New Language.
If you must stick to C then there's always GTK. The underlying API of GTK+ is C, but bindings also exist for C++ called GTKmm. I'm not a big fan of it from a design perspective, but historically powered the Gnome desktop (Ubuntu's default)...and Google chose it for their version of Chrome for Linux. So it has some cred and support there.
But do note that Ubuntu is choosing Qt5 to implement their next version of "Unity" in the desktop:
https://askubuntu.com/questions/281092/why-is-canonical-choosing-qt-over-gtk-for-unitys-next-generation
EDIT: You added:
If I must use C++, that's also fine.
"Must" is a strong word, but there is practically no comparison between C++/Qt vs. C/GTK. And the latter is becoming a thing of history.
Take a look at the Ecere SDK. It offers a cross-platform GUI toolkit, and gives you eC, an object-oriented language derived from C (with all of its functionality) that is just great for building GUIs.

Useful Developer Resources in Second Life [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 3 years ago.
Improve this question
Second Life is fun to play with, and some developers are creating content there, but I was wondering what useful resources (if any) are available in Second Life for professional software developers.
Discussion groups
Education/training
Vendor support
Development-related presentations or demos
Professional contacts
To clarify: I'm not really looking for information on developing stuff for use in Second Life (although those answers are welcome). I am looking for pointers to stuff in SL that programmers would find useful for their real-life work.
They have a site about some of these uses: http://secondlifegrid.net/programs/api/
and some pages on the language they kind of grew: http://wiki.secondlife.com/wiki/LSL_Portal
Like you I find playing around with SL pretty interesting for recreational coding. One of the experiences that made me think there was something to it was trying to code a working clock in a sandbox (a general building area in SL). Other avatars would walk past and make suggestions and as there's a fair few coders around it soon turned into an interesting collaborative effort. If only it was that simple in RL. Some things just work really neatly in SL - I once implemented a swarming algorithm using a flock of 'birds' as the objects (which gives a whole new take on oops).
As to resources - assuming you're beyond basic coding level then you should be able to figure most things out from the LSL Wiki - http://wiki.secondlife.com/wiki/LSL_Portal.
There's an ebook - "Scripting Recipes for Second Life" by Jeff Heaton which covers the basics in a reasonably well laid out way. It's only a few dollars but probably only worth it if you've not done a great deal of coding elsewhere. There's also regular classes held in-world, but I believe most of these are at a pretty basic level.
For groups I've always found the Scripters of Second Life group very helpful with a lot of people generally on it. There's one called simply Scripts which is quite active too.
A couple of words of warning, LSL, whilst Turing-complete is pretty broken in several areas, lacks modern program constructs (and some older ones - like arrays!) and much of the 'black-art' of LSL is knowing how to work around the limitations, With the advent of Mono though this is likely to be a decreasing issue.
Also there does seem to be an assumption by the Lindens that if you want to do any 'heavy-lifting' code you'll do it on a server off-world and call and return results to/from SL. This isn't helped by the XMP-RPC implementation being very broken, although HTTP works fine (and generally better than might be expected).
I vaguely remember Dr Dobbs running some sort of ongoing "Programmer's Island" thingy in SL, but I can't find the reference right now.
Apparently some sort of "virtual conference" for software developers.
As far I'm concerned, I'm trying to contribute to the OpenSim project which is a OpenSource clone of the SecondLife server infrastructure, written in C# and Mono.
OpenSim is SL like, enhanced with many additional script commands, open grid protocols, with customized modules and plugins. It definitely worth a look if you dont already heard about it.
ControlBreak suggested this in a comment (I'm promoting it to an answer):
You can visit Microsoft Island. Presentations of new products are done regularly - http://www.kzero.co.uk/blog/?p=663#more-663
IBM, Microsoft and Sun are pretty active in Second Life and sometimes there are interesting presentations/demos to see. Some of those are great for networking and meeting people from those companies which work on products you're interested in.
There are several groups for Java, PHP and several other programming languages apart from LSL, however IMO they're not as good resource as other non-SL resources. You can get your questions answered more quickly on StackOverflow or IRC.
IBM held several interesting programming competitions - there was something with robots finding a way out of the maze by IBM, there are also robot wars and some other programming competitions in SL, however they are all LSL-oriented.
I think I saw a beginner PHP class once, so if you're interested in learning programming language from start, try searching events and you might find something; however those are pretty rare in my experience.
Look & Feel team Scripting, it's mine. Common 3D trouble is confusing camera center between camera or actor. A designer may think camera center is world when it should be actor.

Resources