Detecting Code Duplicates in C/C++ with CCFinderX

Over time, as your source code repository and software team(s) grow, you may have more and more code that just does the same thing. This is obviously not desirable since several persons work on code doing the same thing, so you just pay twice for the cost for development and debugging. To avoid this issue, proper team communication and management must be in place (e.g. discourage copy/paste of source code, use a common source control repository..). However, it might be difficult to always detect where the code duplicates are. Luckily, code duplication analysis tools such as CCFinderX are here to help. As described on CCFinderX website: CCFinderX is a code-clone detector, which detects code clones (duplicated code fragments) from source files written in Java, C/C++, COBOL, VB, C#. CCFinderX is a major version up of CCFinder, and it has been totally re-designed and re-implemented from scratch. Its new design and technologies aim at improving performance, enabling a user-side customization of …

Languages, Unicode and Charset

If your application needs to support multiple languages or if it needs to support languages with different character sets such as simplified Chinese (GB2312, GBK, GB18030, HZ,..) or traditional Chinese(BIG5, HKSCS, EUC-TW) you’ll need to make yourself familiar with Unicode and the different character sets. In this article, we’ll focus on introducing character sets,  manipulating and converting charsets and the possible challenges you may encounter while handling Unicode text files. If you plan to support multiple languages, you’ll also have to internationalize your application, for example by using Po files for different languages, a Po file editor and possibly have the translations done in launchpad if your project is open source. But this would be another subject. Go for Unicode If you are building a new application make sure its structure is based on Unicode (UTF-8, UCS-2, UTF-16 or UTF-32 ) since those charsets can handle most written languages (UTF: Universal Character Set) and are widely used. UTF-8 is the …

Android Debugging on MIPS Platform with Viosoft Arriba Debugger

I’ve recently attended a webinar organized by EETIMES with MIPS and Viosoft entitled “Android Platform: It’s Not Just For Handsets Anymore” on the 26th October 2010. You can now register for the on demand version at http://seminar2.techonline.com/s/mips_oct0610 The purpose of this web conference was to explain the status of Android for Set-top-box and MID development, the complexity of debugging kernel, java and application in an Android system as well as showcasing Viosoft Arriba to debug Android on MIPS. If you ever develop Android on Sigma Designs SMP864x/SMP865x platforms you’ll probably use Viosoft Arriba. You may refer to the following material Comprehensive Development and Debug Coverage for Linux and Android on the MIPS Architecture that contains the slides used during the presentation. Rick Leatherman – Vice President, Development Tools at MIPS Technologies, Inc – firstly described Android architecture with the application level, Library/Android (Dalvik), and the kernel. He then explained the status of Android for different devices: Mobile: 99% complete, if …

Xibo Open Source Digital Signage Tutorial / Demo

This is the second blog entry about Xibo, in case you have missed the first you can read XIBO: An Open Source Digital Signage Server/Client to make yourself familiar with Xibo and learn how to install it in a Windows XP computer. This mini-tutorial follows the instruction in Xibo’s training documentation and Xibo’s Introduction and Basic Operation The video below shows how to create a layout with a background, different zones with videos, images, html pages and an RSS feed and schedule it for a specific Xibo player. Here’s the resulting output in Xibo’s player. (The audio does not match. Since I had some problems during recording, I simply used a background music instead). You can get obtain free backgrounds at the Layout exchange section of Xibo’s website. We used Blue Boxes – 1920×1080 – for the background image of our tutorial. The RSS Feed is http://twitter.com/statuses/user_timeline/114751985.rss from CNXSoft twitter account. Xibo only supports the following video containers: wmv, avi, …

USB Hotplug Parameters and A Simple Linux USB Hotplug Script

USB Hotplug allows your system to detect a USB device has been inserted or removed and perform certain actions upon the USB device detection. The article below is largely inspired by http://linux-hotplug.sourceforge.net/?selected=hotplug which does not seem to work anymore. USB hotplugging involves: MODULE_DEVICE_TABLE support in the USB Device Driver API, so that a driver’s probe() routine is called only when it’s very likely to want to bind to a particular interface. USB always uses this. Support for invoking the hotplug helper (/sbin/hotplug by default) when devices are added or removed. This functionality is enabled only by CONFIG_HOTPLUG. That hotplug helper usually contacts a policy agent which handles the USB-level configuration or activation tasks appropriate to this device and the current system configuration. Boot-time configuration (“cold-plugging”) can be managed by the /etc/rc.d/init.d/hotplug startup script, if the “usbmodules” command line utility is available. (There is also a “diet hotplug” tool for use during “initrd” processing, which is much less flexible but works …

Digital Signage Standard: Open Pluggable Specification (OPS)

A while ago, we discussed about Popai Digital Signage Standards, mainly focused on software and client/server interoperability. Intel has just released a new standard for Digital Signage: Open Pluggable Specification (OPS). Here’s the description of the specification on Intel website. The Open Pluggable Specification (OPS) helps standardize the design and development of digital signage devices and pluggable media players. Intel created the OPS to address digital signage market fragmentation and simplify device installation, usage, maintenance and upgrades. The OPS enables digital signage manufacturers to deploy interchangeable systems faster and in higher volumes, while lowering costs for development and implementation. Installing digital signage equipment based on Intel® architecture helps you implement scalable digital signage applications that can network easily with other equipment. This simplifies interoperability and application upgrades designed to meet the digital signage requirements of individual customers, while helping to future-proof technology investments. You’ll need to fill a form to apply to have the “privilege” to access the specification. You’ll …

XIBO: An Open Source Digital Signage Server/Client

Today’s post will deal with Xibo (pronounced eX-E-bO), an open source, multi-display, multi-zone, fully scheduled digital signage solution. I’ll firstly give an overview and explain how to install the client and server in Windows XP. In another post, I’ll demo the system. The server can run on Windows or Linux and requires a web server (Apache / IIS), php5 and a MySQL database. The client can only runs on Windows 2000/Xp/Vista/7 and requires .NET Framework v3.5, Internet Explorer 7 or 8, Flash Player Version 9 or later, Windows Media Player 11 or later, Microsoft Powerpoint 2003 or later. As you can see from the client description, it won’t be able to run on Linux embedded systems, but it is still interesting to study this solution to see the content management flow, what this solution has to offer and how we get development idea from this solution.  An embedded client based on Xibo client (using Python) could also be potentially written …

Finding a device IP Address

If you are developing software for an Ethernet (or Wifi) device, you’ll need to access the board for debugging and/or testing purpose. If your board does not have user interface or the serial port is not available, you’ll have to find the IP address (assuming it is using DHCP) before accessing the board thru telnet or ssh. A simple way to do that is to ping the broadcast address and check the arp table. > ping -b 192.168.0.255 WARNING: pinging broadcast address PING 192.168.0.255 (192.168.0.255) 56(84) bytes of data. 64 bytes from 192.168.0.246: icmp_seq=0 ttl=64 time=0.018 ms 64 bytes from 192.168.0.101: icmp_seq=0 ttl=64 time=0.217 ms (DUP!) 64 bytes from 192.168.0.246: icmp_seq=1 ttl=64 time=0.023 ms > arp -i eth0 arp -i eth1 Address                  HWtype  HWaddress           Flags Mask            Iface 192.168.0.103            ether   00:50:FC:00:00:01   C                     eth1 192.168.0.109            ether   00:13:20:01:01:01   C                     eth1 If you cannot find your device, it may be configured to ignore ping broadcast (in order to avoid denial-of-service attack). To …