A VIDEO

Check out my Figure song, then make your own! http://goo.gl/YSgfi

A VIDEO

Check out my Figure song, then make your own! http://goo.gl/YSgfi

A TEXT POST

Sending data from C++ to Python using UDP and protobuf

So here is one example how to use Googles `protobuf` to send a data structure from a `C++` script to a `Python` script via `UDP`. This is tested on Mac OS X Mavericks but should work fine on other Unix systems too.

Installing protobuf

The first step is of course installing the `protobuf` library. I used homebrew for the main library and `pip` to install the `Python` modules:

brew install protobuf
pip install protobuf

Then I defined a very simple data structure using the proto-syntax:

Filename: foo.proto

package prototest;

message Foo {
    required int32 id = 1;
    required string bar = 2;
    optional string baz = 3;
}

This proto-file can now be translated into C++ and Python classes via:

protoc foo.proto —cpp_out=. —python_out=.

The folder should now contain the C++ header and source files and the Python code:

├── foo.pb.cc
├── foo.pb.h
├── foo.proto
└── foo_pb2.py

Let’s have a look at the very basic `C++` code, which is meant to send an instance of `foo` over the network, using UDP (to localhost on port 5555):

Filename: send.cc

#include <sys/socket.h>
#include <arpa/inet.h>

// this is our proto of foo
#include “foo.pb.h”

int main(int argc, char **argv)
{
struct sockaddr_in addr;

addr.sin_family = AF_INET;
inet_aton(“127.0.0.1”, &addr.sin_addr);
addr.sin_port = htons(5555);

// initialise a foo and set some properties
GOOGLE_PROTOBUF_VERIFY_VERSION;
prototest::Foo foo;
foo.set_id(4);
foo.set_bar(“narf”);

// serialise to string, this one is obvious ; )
std::string buf;
foo.SerializeToString(&buf);

int sock = socket(PF_INET, SOCK_DGRAM, 0);
sendto(sock, buf.data(), strlen(buf.c_str()), 0, (struct sockaddr *)&addr, sizeof(addr));

return 0;
}

I compiled it via `clang++`:

clang++ -o send send.cc foo.pb.cc -lprotobuf

And finally, this is the `Python` code, which waits for UDP packets and deserialise them into `foo`. Again: no error checking whatsoever, this is only to demonstrate the functionality:

Filename: receive.py

import socket
from foo_pb2 import Foo

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((“127.0.0.1”, 5555))

foo = Foo()
while True:
    data, addr = sock.recvfrom(1024)
    foo.ParseFromString(data)
    print(“Got foo with id={0} and bar={1}”.format(foo.id, foo.bar))

Now we’re done and this is the final directory structure:

├── foo.pb.cc
├── foo.pb.h
├── foo.proto
├── foo_pb2.py
├── receive.py
├── send
└── send.cc

To test the script, simply run `receive.py` to listen to UDP packets via

python receive.py

and keep your eyes on the output when you execute the C++ generated `send` script:

./send

A VIDEO

Check out my Figure song, then make your own! http://itunes.com/app/figure

A VIDEO

Check out my Figure song, then make your own! http://itunes.com/app/figure

A VIDEO

Check out my Figure song, then make your own! http://itunes.com/app/figure

A VIDEO

Check out my Figure song, then make your own! http://itunes.com/app/figure

A TEXT POST

vim option of the month

set colorcolumn=80

Hallelujah!

A VIDEO

showslow:

Birds Eye View Room Portraits by Menno Aden

Through a camera installed on the ceiling Menno Aden abstracts most familiar actual living environments and indoor public spaces into flattened two-dimensional scale models. These birds-eye-view photographs capture a unique perspective on rooms, compared to the perfectly neat and tidy interior photos we are so used to seeing.

Reblogged from Slow Show
A TEXT POST

Changing file permissions in SVN

Maybe you pulled out your hair too:

svn propset svn:executable “*” filename

A VIDEO

likeafieldmouse:

Alejandro Guijarro - Momentum (2010-12)

“The artist travelled to the great quantum mechanics institutions of the world and, using a large-format camera, he photographed the blackboards as he found them. Momentum displayed the photographs in life-size. 

Before he walked into a lecture hall Guijarro had no idea what he might find. He began by recording the blackboard with the minimum of interference. No detail of the lecture hall was included, the blackboard frame was removed and we are left with a surface charged with abstract equations. Effectively these are documents. Yet once removed from their institutional beginnings the meaning evolves. The viewer begins to appreciate the equations for their line and form. Color comes into play and the waves created by the blackboard eraser suggest a vast landscape or galactic setting. The formulas appear to illustrate the worlds of Quantum Mechanics. What began as a precise lecture, a description of the physicist’s thought process, is transformed into a canvas open to any number of possibilities.”

1. Cambridge (2011)

2. Stanford (2012)

3. Berkeley I (2012)

4. Berkeley II (2012)

5. Oxford (2011)

Reblogged from hackedy
A QUOTE

Remember: “Buying tons of productivity apps will not make you more productive.”