1. 程式人生 > >google的開源工程,真多

google的開源工程,真多

There are a variety of C unit testing frameworks available however many of them are fairly complex and require the latest compiler technology. Some development requires the use of old compilers which makes it difficult to use some unit testing frameworks. In addition many unit testing frameworks assume the code being tested is an application or module that is targeted to the same platform that will ultimately execute the test. Because of this assumption many frameworks require the inclusion of standard C library headers in the code module being tested which may collide with the custom or incomplete implementation of the C library utilized by the code under test. Cmockery only requires a test application is linked with the standard C library which minimizes conflicts with standard C library headers. Also, Cmockery tries to avoid the use of some of the newer features of C compilers. For more information checkout 
manual
.
This project is to get Perl implemented as a supported language on Google App Engine. Want to support Perl? - Read Getting Started.
Protocol Buffers for Perl.
Perl XS module to override all “dangerous” Perl operations (any operation which interacts with the system). Notably, this module aims to provide the user with an environment identical to the restrictions in place on Google App Engine for Python.
Google App Engine enables developers to build web applications on the same scalable systems that power our own applications. Google App Engine makes it easy to design scalable applications that grow from one to millions of users without infrastructure headaches. Here are some SDK Release Notes.
JRuby on Google App Engine. With support for the Java Language, it’s now possible to run Ruby code on Google App Engine. This project aims to make using JRuby as easy as any of the native App Engine languages. Although Google employees may participate in this project, the code is experimental and is not officially supported by Google.
The Android Scripting Environment (ASE) brings scripting languages to Android by allowing you to edit and execute scripts and interactive interpreters directly on the Android device. These scripts have access to many of the APIs available to full-fledged Android applications, but with a greatly simplified interface. Want to know more check out FAQ
Speech Enabled Eyes-Free Android Applications. The Text-To-Speech (TTS) library is allows developers to add speech to their applications. Developers give the TTS object a text string, and the TTS will take care of converting that string to text and speaking it to the user. The TTS library is designed such that different underlying speech engines can be used without affecting the higher level application logic. Currently, a port of the eSpeak engine is available. Here is Getting Started Guide
This project seeks to build an infrastructure for micro-architectural optimizations at the instruction level. MAO is a stand alone tool that works on the assembly level. MAO parses the assembly file, perform all optimizations, and re-emit another assembly file. After this, the assembler can be invoked to produce a binary object. MAO reuses much of the code in the GNU Assembler (gas) and needs binutils-2.19 to build correctly. Please see the README.txt file for information on how to build and run MAO. The current MAO version is an early prototype targeting x86.
Reading web-based developer documentation is different than browsing typical web pages. As a developer, you probably refer to key technical doc many times per day, and you want it well-organized, easy to navigate, and — above all — fast. It works with any open source project hosted on Google Code.
The Social Graph Node Mapper is a community project to build a portable library to map social networking sites’ URLs to and from a new canonical form.
This library makes it easy to implement a Visualization data source so that you can easily chart or visualize your data from any of your data stores. The library implements the Google Visualization API wire protocol and query language. You therefore need write only the code required to make your data available to the library in the form of a data table. This task is made easier by the provision of abstract classes and helper functions.
This is an extension of the Torch3 Machine Learning library for handling various types of Deep Architectures and modifications to the standard Multi-layer Perceptrons:
  • Handles an arbitrary number of fully-connected sigmoidal layers
  • Unsupervised learning of MLPs using various reconstruction costs. Greedy layer-wise learning is available as well.
  • An implementation of the Stacked Denoising Autoencoders
  • A preliminary implementation of collective learning idea, whereby a pair of networks are trained in parallel and are communicating with each other.

One of Google Employees is involved in this project (it is not official Google Project). Documentation is here.

A closed loop, high-performance, general purpose protocol-blind fuzzer for C programs. Uses compiler-level integration to seamlessly inject precise and reliable instrumentation hooks into the traced program. These hooks enable the fuzzer to receive real-time feedback on changes to the function call path, call parameters, and return values in response to variations in input data. This architecture makes it possible to significantly improve the coverage of the testing process without a noticeable performance impact usually associated with other attempts to peek into run-time internals. One of Google Employees is involved in this project (it is not official Google Project). Here are some docs.
Thread Weaver is a framework for writing multi-threaded unit tests in Java. It provides mechanisms for creating breakpoints within your code, and for halting execution of a thread when a breakpoint is reached. Other threads can then run while the first thread is blocked. This allows you to write repeatable tests for that can check for race conditions and thread safety. Here is user guide.
A neat tool for creating GDB readable coredumps from multithreaded applications The coredumper library can be compiled into applications to create core dumps of the running program — without terminating. It supports both single- and multi-threaded core dumps, even if the kernel does not natively support multi-threaded core files.
The Rollcage API can be used to sandbox an application on windows. It is primarily used by Chromium, the open source browser project behind Google Chrome. Here is design overview.
Server-based tags serving for large codebases. Clients in python and for emacs and vim This is an extension to GNU Emacs and X-Emacs TAGS functionality, with a server-side component that narrows down the view of a potentially large TAGS file and serves the narrowed view over the wire for better performance. An Emacs Lisp client, a python client, and vim extensions are supplied.
PP is intended to provide infrastructure and tools to describe and manipulate hardware registers and fields. Once described, it is possible to read and write fields symbolically. This allows one to browse the state of their hardware.
The iotools package provides a set of simple command line tools which allow access to hardware device registers. Supported register interfaces include PCI, IO, memory mapped IO, SMBus, CPUID, and MSR. Also included are some utilities which allow for simple arithmetic, logical, and other operations, If you ever have to debug hardware, you could probably use these tools.
The suite of fast incremental algorithms for machine learning (sofia-ml) can be used for training models for classification or ranking, using several different techniques. This release is intended to aid researchers and practitioners who require fast methods for classification and ranking on large, sparse data sets. Includes methods for learning classification and ranking models, using Pegasos SVM, SGD-SVM, ROMMA, Passive-Aggressive Perceptron, Perceptron with Margins, and Logistic Regression.
plda
A parallel C++ implementation of fast Gibbs sampling of Latent Dirichlet Allocation
Stubl is a transition mechanism for providing a basic level of IPv6 connectivity to individual nodes on a private network. All that’s required is a single Linux server with an IPv6 /64 subnet routed to it. The Stubl server consists of a Linux kernel module (stubl.ko) for handling the tunnel packets, and an HTTP server (stubl_http.py) for calculating clients’ addresses and providing tunnel setup instructions. The main advantage of Stubl is that it allows a user on the network, running any major OS, to get a working IPv6 connection with nothing but a few lines of shell commands. This makes it very easy for developers to start getting familiar with the protocol, with minimal administrative overhead.
dcsbwt is a data compressor program and library based on the Burrows-Wheeler transform.
DepAn is a direct manipulation tool for visualization, analysis, and refactoring of dependencies in large applications. Chekout User Guide
MobWrite converts forms and web applications into collaborative environments. Create a simple single-user system, add one line of JavaScript, and instantly get a collaborative system.
An encoder and decoder for the format described in RFC 3284: “The VCDIFF Generic Differencing and Compression Data Format.” The encoding strategy is largely based on Bentley-McIlroy 99: “Data Compression Using Long Common Strings.” A library with a simple API is included, as well as a command-line executable that can apply the encoder and decoder to source, target, and delta files. A slight variation from the draft standard is defined to allow chunk-by-chunk decoding when only a partial delta file window is available.
Update Engine is a flexible Mac OS X framework that can help developers keep their products up-to-date. It can update nearly any type of software, including Cocoa apps, screen savers, and preference panes. It can even update kernel extensions, regular files, and root-owned applications. Update Engine can even update multiple products just as easily as it can update one.
Sitemaps are an easy way for webmasters to inform search engines about pages on their sites that are available for crawling. By creating and submitting Sitemaps to search engines, you are more likely to get better freshness and coverage in search engines. Google Sitemap Generator is a tool installed on your web server to generate the Sitemaps automatically. Unlike many other third party Sitemap generation tools, Google Sitemap Generator takes a different approach: it will monitor your web server traffic, and detect updates to your website automatically.
The Google pose optimizer (GPO) is a C++ library that allows reconstruction of the pose of a sensor platform (i.e. its position and orientation over time) based on information from sensors such as GPS, accelerometers and rate gyroscopes. GPO does not provide real-time localization in the way that a Kalman filter would, instead it generates the pose as a result of a large off-line optimization. This produces better results. Here is wiki.
dnswall is a daemon that filters out private IP addresses in DNS responses. It is designed to be used in conjunction with an existing recursive DNS resolver in order to protect networks against DNS rebinding attacks. For details of the attack and various defenses, including dnswall, see http://crypto.stanford.edu/dns/.
Choose from a list of major cities around the world or define your own if it’s not on the list. Set one of six layouts for your clocks and choose a design and a background for each clock independently. Add up to 15 clocks and never loose track of time again.
GeN