e-puck Robot Lead/Follow
A leader/follower scheme with obstacle avoidance using e-puck educational robots.
YouTube here: Video
Paper here: e-puck Leader/Follower Final Paper
A leader/follower scheme with obstacle avoidance using e-puck educational robots.
YouTube here: Video
Paper here: e-puck Leader/Follower Final Paper
Added a new project: Least Significant Bit (LSB) Encoding and Decoding. By changing the least significant bit of each byte in an image (B&W), its possible to encode an invisible string of text into the image. Check out ways to break it in the code
Code and paper under “Projects” section.
Finally got around to putting up my assembly language Tanks game. Here’s the Tanks Source and here are some screenshots:


All files here.
I added a “Restaurants” section from my google doc and a “Projects” section — updates there!
The rsync material on my wiki is on Amazon in the new version of A Practical Guide to Linux Commands, Editors, and Shell Programming!
I’ve started a MySQL wiki for a chapter of A Practical Guide to Red Hat Linux. I’m learning as I write it up, so feel free to correct or change anything! Here’s the link.
(Update 11/20/09: This page now contains other utilities, too!)
This year’s problems for the ICPC:
http://www.acmgnyr.org/year2009/problems.shtml
Now that we can log in automatically (SVN Part 1), we can do some cool stuff. This summer I managed a SVN server for a company that has multiple programs, each of which had different developers working on them. Each of these programs is stored as a repository in SVN. For example, developer A needs access to repository 1 and 2 and developer B needs access to repository 1 and 3, etc. To make it even trickier, in repository 1, developer A should have access to the entire repository, while developer B should only have access to the directory devB in repository 1. Also, every time a developer makes a change to a file, the change needs to be logged with their username.
This is where the RSA keys come in. Each repository should be owned by a different user. For example, /usr/bin/svnserver/repository1 is owned by user repo1, /usr/bin/svnserver/repository2 by repo2, etc. Put any developer who needs access to [repo]’s RSA pubkey in the /home/[repo]/.ssh/authorized_keys file, where [repo] is the name of the repository’s owner (repo1, repo2). Configure authorized_keys like:
command="/usr/bin/svnserve -t -r /var/svn/ --tunnel-user=[developer's username]",no-port-forwarding,no-pty,no-agent-forwarding,no-X11-forwarding ssh-rsa [developer's RSA pubkey]== [developer's username]
This enables developers to check out [repository] using: svn+ssh://[repo]@[server]/[repository]. While we are sending the information over SSH, the developer does not have a SSH account and can do nothing but use SVN to check out (svn co) and update (svn ci) repositories owned by a user (repo1, repo2) whose authorized_keys file contains the developer’s pubkey. The last column in the authorized_keys file is the comment line. SVN automatically uses this line as the comment when a developer commits code to the SVN repository.
The last part, giving only partial access to a repository, coming in Part 3.
Subversion is another awesome piece of software for keeping files in sync across multiple computers. Not quite suited for backing up pictures or anything like that — but hey, its great for big coding projects! Usually with big projects, there are different levels of access. For example, Bob’s algorithm may be super secret and only he and Bill should be able to see the code for it. But, Barry may be logging in to the same SVN server and need access to other code. There’s an app for that. I mean, there’s a feature for that. Also, perhaps not everyone should have access to the server’s file, or even an account on the server. Well, there’s a feature for that, too. Anyway, here’s the procedure/setup I came up with after lots of research/trial-and-(hopefully not catastrophic) error.
Make sure at least YOU can ssh into the server (or better yet, be sitting in front of it and skip the next few steps). Its handy to use an RSA key so you can log in automatically and don’t have to type your password every time you want to execute a subversion command. So:
sh-keygen -t rsa
will generate you a key. Then:
rsync -a ~/.ssh/id_rsa.pub server:~/.ssh/
Before we switch over to the server, if you’re using a non-standard port, in /etc/ssh/ssh_config, add:
Host [server][this line should be there already, it just tells you where to put the 2 preceeding lines]
Port [port #]
Host *
Next, ssh over to the server and:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/.ssh/id_rsa.pub
The >> instead of just > puts the key at the END of the file instead of overwriting, so if you already have a computer set up in your authorized_keys file, this will preserve that setup.
Now you should be able to log in with no password using ssh [server].
Part 2 coming soon!
Recent Comments