Posts

How to fix the Unbound module Graphics in an ocaml project

Image
From ~/pr/gitl/ocaml-gol In a constant effort to learn new programming languages, I'm currently trying to use ocaml , a free and open-source general-purpose, multi-paradigm programming language maintained at the Inria . It's basically an extension of Caml with object-oriented features. I'm mostly interested by its functionnal and pattern matching features but the module part of the language can be a bit difficult to understand for someone with little to none ML (Meta Language) background.   The error When trying to use the graphics module to create a graphical window and go just a little further than the simplest helloworld program, here is the result : If the project uses dune : (executable (name ocaml_project) (libraries lwt.unix graphics) ) with this code : let () = Printf.printf "Hello, world!\n";; Lwt_io.printf "Hello, world!\n";; Graphics.open_graph " 800x600";; The first times I built this project running the du...

How to use codecov.io in a C/C++ project

Image
If you need a good code coverage  web reporting tool for a github-hosted project, codecov.io may be your next best friend. I'm already using it on  biology  and  rainbrurpg ). The present article is usable on a C/C++ project using cmake as build system and travis-ci as CI platform. Codecov.io screenshot Handling coverage in cmake You first need to install some package (at least on Debian GNU/Linux) : sudo apt install gcov lcov gcovr Then, copy the  CodeCoverage.cmake in a cmake/ directory inside your project's repository and add this line to your CMakeLists.txt file: set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) Generate coverage reports and send them Now, you need to modify your .travis.yml file and add this : after_success: # Creating report - cd ${TRAVIS_BUILD_DIR} - lcov --version - lcov --directory . --capture --output-file coverage.info - lcov --remove coverage.info '/usr/*' --output-fil...

Introducing gl-adventure

Image
This month (February 2018), I'm freeing gl-adventure  (as I've already done for biology and librlgl ). Original news A little dungeon crawl game written in C and OpenGL. Dependencies include GLUT and Gettext since I try to handle user messages translation. It also includes unit tests provided by the check unit test framework . The menu The game This project doesn't intend to create a beautiful game, so its rendering is ugly. It is about learning C/opengl the hard way but not a modern way, for example it doesn't use any shader. A lot of room for improvment. 2022 Update The project is now hosted at bitbucket . The current work intends to create the Game -oriented game state in the feature branch called feature_gsname . The master branch source code is known to build on modern linux-based Oses (tested on debian and manjaro ).

Headers-date switches to revision 14

Image
This little ruby project , introduced earlier in this post , used to test the GNU headers' dates for a complete project, just switched to revision 14. This project, and in the near future all of my public projects, uses an online coverage tool provided by  coveralls.io . Coveralls presentation This online coverage tool is used to measure which source code is executed when a particular test suite runs. So you can know which part of a project isn't yet tested and improve software quality. 2022 update This project is not hosted at github anymore, I moved it to bitbucket and it do not use coveralls anymore. You can always execute unit tests or compute code coverage locally though. Since I do not use this project anymore obn a weekly basis, I can only test it once every 3 or 4 months. The text output actually works. The GTK-based GUI may be broken though.

Introducing biology, a neural network-based project to handle NPCs

Image
Since now, I will try to free (or make public) a new project every month. These projects mainly come from a private incubator I handle at bitbucket.org . Original news This month, I released  biology  : a study to train a neural network to handle Non-Playable Characters. This is a C++ gui application using wxwidgets as GUI toolkit. Another dependency is libfann , a neural network library. It also need the Google Test unit test framework library to be successfully compiled. The layout of the project is handled in a way that the core of the logic can be used a a separate library called libbiology . The GUI part of the project simply use this library. 2022 Update This project is still a work in progress but is know to still build and run on debian but since I have many projects in this WIP state, it obviously takes me months to get back on this.

How to use github API on a static webpage

Image
For the new rainbrurpg homepage , I would like to dynamically add the github's repositories status, for example the last commits.

Introducing librlgl

Image
Today, I'm freeing a new rainbrurpg -related project. Its repository is now located at https://bitbucket.org/rainbru/librlgl/ . This library will be a fundamental piece in the new RainbruRPG's ecosystem, providing the graphical content of the game client. Initial news This code is designed to be used as a git submodule (as libwsmeta ) to provide dependency check and library building. The aim of this project is to define a DSL used to generate and use complete 3D worlds. Its major dependencies are mainly boost components ( system , filesystem , program-options and thread ) but it uses gtest to implement unit tests. 2022 update The project isn't hosted at github anymore. As many of my old, game-oriented projects, it is now hosted at bitbucket . Dependencies now include qtbase and libgit2 development packages. As other rainbrurpg -related projects, it also depends on boost libraries, especially its system , filesystem and thread components.

How to use MongoDB on travis-ci

Image
Using continuous integration for rainbrurph , I need the mongodb database and C libraries. Unfortunately, I had issue using it on Ubuntu Precise 12.04 LTS, the distribution used on travis-ci. To make it work, we'll have to : install database components from the official MongoDB repositories; manually build the latest release of the official C libraries; add /usr/local/ to ld.conf to make your build system discover the newly installed library.