I am working with erlang project which uses google protobuf via https://github.com/basho/erlang_protobuffs
After some time I've got not such good impresion about it (I've found usage of this technology in erlang very clumsy and inconvenient). But of course, I known that this is because I can not cook it properly.
Which open source erlang project are using erlang_protobuffs? I am interested in best (or at least sufficient) practices of its usage.
I assume that you mean http://github.com/basho/erlang_protobuffs library.
From major opensource projects I know only basho's riak using this library, although
Github code search gives a lot of different projects.
Note, that this library is not only one, take a look at this post
Related
I'm trying to build a simple JavaFX application in IntelliJ environment using Gradle and OSGi, but I could't find a simple working example anywhere.
Most of the solutions I've found are not Gradle based or they use some additional tools, or they are outdated and they simply don't run, or they import some magical "hack code" from github etc.
The tools I've found for similar purpose e.g. e(fx)clipse, bndtools are probably not important if I use IntelliJ. Moreover the bndtools tutorial is very wordy and I couldn't find a good starting point or quickstart to try those things out.
I know the basics about Gradle and OSGi and according to information I've found, it does not seem to be an easy task to solve.
Are there any (good) tutorial(s) or quickstart(s) about how to start this kind of project properly? A simple working example would be very useful.
The e(fx)clipse project is a good starting point and provides many useful features for using JavaFX and OSGi.
See http://www.eclipse.org/efxclipse/index.html .
The blog of one of the developers has also many useful tips, https://tomsondev.bestsolution.at/ .
So, there is existing webrtc project, that runs on latest libjingle(25dec 2015). And now, for support purpose, I need to update current version to latest from webrtc repo. How can I do that? I see there java files with c++ with headers in separate folders, have no idea what is going on there, even where files that I actually need, and how to implement that source to project. Is there any in-depth guide for that? Have anyone faced this problem before?
WebRTC's project structure have changed a lot since last year. They are deprecating GYP in favor of GN, it is highly recommended to start from the beginning.
You can read the compilation guide for Android there: https://webrtc.org/native-code/android
Firstly, I saw some topics about these two but weren't my answer.
I'm looking for a good FPC(Free Pascal Compiler) IDE on GNU/Linux.
There are some IDE's like Lazarus and CodeTyphon. I need suggestion to choose one of those.
I've tried Lazarus once but all windows was separated. It looks messy and not interesting.
I would like to know what are the distinguishes between these two ?
I would like to know advantages / disadvantages each of those. Thank you
CodeTyphon is a distro of Lazarus, like Ubuntu and Debian are distros of Linux.
CodeTyphon comes with a large package of components and plugins, that otherwise you would have to google and download and install.
CodeTyphon have their own idea what are stable versions and what are not stable yet for both of FPC (compiler) and Lazarus(IDE). Whether their assessment is better or worse than upstream's Lazarus Team's, I don't know.
What about one-single-window plugin, it is work-in-progress and it doesn't seems to me it is ready for production use, no matter would you get it as part of CT or download and add it to vanilla Lazarus. However maybe it better works on Linux than on Windows, I don't know.
There were however issues with code legality in CT grande bundle. It is widely believed that Orca (if I remember the name) violates copyrights of glScene/vgScene, which also happened in early Delphi FMX releases but was fixed by EMBA later. There also were disputes in FPC forums/wiki about CodeTyphon pirating some open-source components. See answer by Peter Dunne below.
Your question is akin to asking the difference between Linux and Ubuntu. Lazarus is an IDE/component library, based on FreePascal (FPC). And CodeTyphon is a distribution of Lazarus and FPC. So CodeTyphon is just one way to install a functioning installation of Lazarus.
Lazarus uses the same floating window design as older versions of Delphi. Installing from CodeTyphon won't change that.
Myself and several friends highlighted several licensing issues with codetyphon
most of which could have been corrected by sourcing the included files from known good source and ensuring the correct license headers were included
PirateLogic refused to correct the issues which means they are using code in direct violation of the original license terms
The fact its open source code does not change the fact they are pirating the code by not including the correct license even after the issue was highlighted
I also found several instances of copyright code included which appears to be proprietary and not FOSS at all
They also changed the path & file names on some libraries so that source is no longer compatible with standard lazarus/component installs
This in my view is totally illogical
These 2 factors heavily undermine what was potentially the best FPC/Lazarus distro
Hardly professional
Lazarus can be a daunting installation process due to it's nature as a cross compiling environment. You don't just download an installer and click ok. A typical "installation" is actually a bootstrap FPC compiler doing a three-pass compilation of an "install". There are plenty of good installation scripts/methods from the official Lazarus/FPC team and in the community for a . But, understandably, the installation process is a skill in itself.
CodeTyphon is a a different/separate branch of an installer system, which is more of a utility suite/tools/third party code compilation library. If you want the simplest installation experience go with CodeTyphon. It has the nice graphical front end for managing the compiler. You can conveniently do the fancy stuff like build "cross-compilers" for almost every "target" operating system out there. It also is jam packed with hundreds of the best components/libraries pre-installed. It is a very actively maintained project and very professional. A whole lot of work is done for you.
Even if you want to be learn the low level compiler capabilities, CodeTyphon is a good place to start. It is written in FCP/Lazarus and is open source. Simply study it as "working demo app" and the other info on the compiler details. If you crash it, at least you don't have to learn to climb the hill. You get to get to start from the top and lose control on the way down. Start from scratch (and a three hour reinstallation) Hahaha
Lazarus also has a package "AnchorDock" which allows you to dock all the windows into one. Either install the anchor dock design package after installing Lazarus, or install Lazarus using the script at getlazarus.org which will do it for you.
Using Monticello package manager does not seem to guarantee that, once you added the interesting package(s), the total image is still coherent. Are there any ways to verify that? Are dependencies verified? Are there guidelines in that direction?
I think you're looking for Metacello, a package and configuration manager for Monticello.
You can check out this guide: Managing projects with Metacello, and also there's a page on Google code
While Monticello actually has the possibility to ensure that dependencies are met,
it is limited to the form “this Monticello version depends on exactly these other Monticello versions”. Also, specifying these dependencies is a bit hidden in the Monticello browser and, above all, scarcely used in the community.
As Uko said, Metacello is exactly intended to solve the problem of dependency management in Smalltalk systems. It is not limited to Monticello, conceptually. To my knowledge, most GemStone, Pharo, and Squeak images come with Metacello pre-installed or easily installable.
Have a look at the blog of Metacello’s author, Dale Henrichs, where he gives some introduction to using Metacello.
There is also the Metacello Repository, where most configurations (think software receipts) can be found.
Monticello's responsibility ends with loading individual packages. Coherence comes with either Metacello (see Uko's answer) or with SqueakMap.
SqueakMap stores install scripts that ensure that entire applications get loaded into your image.
Has anyone used Google's Protocol Buffers when developing applications in Objective-C?
Are there any current projects for compiling .proto files into Objective-C, all the Google docs simply refer to Java, C++ or Python.
I've been working on an fork of Cyrus' project. It's based on protobuf 2.3 and works as a protoc plugin (protoc-gen-objc) instead of requiring a modified protobuf distribution.
You can find it as the protobuf-obj project on GitHub.
The Third Party page lists this Objective-C port. Unfortunately the project appears to be empty at the moment, but it's encouraging to see it anyway. I had heard internal rumours of the project, but hadn't seen it as an open source project before today.
You could get in touch with the project owner (Cyrus Najmabadi) to ask about it though...
(Small piece of trivia - Cyrus used to work on the C# team in Microsoft before he joined Google.)
This may or may not be helpful, but Apache Thrift (originally developed at Facebook) supports Cocoa, and seems to have people attempting to use it in the iPhone.
Thrift officially supports more languages. But Protocol Buffers have 5x the Stack Overflow interest, so who knows if it's a good replacement in terms of maintenance—not to mention compatibility with your own project! Still, maybe it's worth consideration.
I just asked a related question you may find helpful if it gets good answers: Any success using Apache Thrift on iPhone?
Protocol Buffers v3 supports Objective-C
Protocol Buffers v3 supports Objective-C as a first class language.
To generate Objective-C code from a .proto file call the compiler with the objc_out option:
protoc --proto_path=src --objc_out=build/gen src/foo.proto src/bar/baz.proto
I prefer to use c++ generated classes within my objc projects, works just fine.
I did try the objc PB version but without success.