Thanks for wanting to contribute to Chef! There are many ways to get involved in various areas of the project, tools, and documentation. This document will help you get started; the links below point to how-to-contribute information for each project.
daemon off; | |
worker_processes 1; | |
events { worker_connections 1024; } | |
http{ | |
sendfile on; |
# -*- mode: ruby -*- | |
# vi: set ft=ruby : | |
# install: | |
# `vagrant plugin install vagrant-aws` | |
# `vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box` | |
# config: | |
# `export AWS_ACCESS_KEY_ID='...'` | |
# `export AWS_SECRET_ACCESS_KEY='...'` | |
# `export AWS_REGION='us-west-2'` |
# Set variables in .bashrc file | |
# don't forget to change your path correctly! | |
export GOPATH=$HOME/golang | |
export GOROOT=/usr/local/opt/go/libexec | |
export PATH=$PATH:$GOPATH/bin | |
export PATH=$PATH:$GOROOT/bin |
;; -*- mode: emacs-lisp -*- | |
;; This file is loaded by Spacemacs at startup. | |
;; It must be stored in your home directory. | |
(defun dotspacemacs/layers () | |
"Configuration Layers declaration. | |
You should not put any user code in this function besides modifying the variable | |
values." | |
(setq-default | |
;; Base distribution to use. This is a layer contained in the directory |
We added these bits to one of our base cookbooks that gets applied to every node.
Because apt doesn't allow you to specify a minimum version for a package to be installed, I had to build an approximation of that logic in this recipe. Basically, what we do is check for a bash
package version that is less than what is specified in the node attributes for that platform. If and only if the installed version is less than the min_pkg_ver
attribute, we notify apt_package[bash]
to run the :upgrade
action. That ought to prevent us from updating bash unnecessarily, but also ensuring that we are never running an unpatched bash.
(Also, handy thing to note is the execute[apt-get update]
- that's using the apt cookbook to force an apt-get update
to run immediately. If you don't do that, bash won't update until apt has updated AND this chef recipe runs again.
A checklist for designing and developing internet scale services, inspired by James Hamilton's 2007 paper "On Desgining and Deploying Internet-Scale Services."
- Does the design expect failures to happen regularly and handle them gracefully?
- Have we kept things as simple as possible?
describe 'recipe[doit]' do | |
before(:each) do | |
stub_r3dparty_cookbooks | |
end | |
it 'some awesome specs do here' do | |
# assertion | |
end | |
end |
All the time I was working with XMPP I realized this protocol has a lot of flaws to use in mobile devices, even the lack of sync for the messages between several devices. This protocol tries to solve those flaws:
- Use of bandwidth. This protocol is binary and use keywords to save a lof of bandwidth using the same protocol and the same featureas as XMPP.
- Reliability of the messages. Using ACKs in every sent ensure all of the messages will arrive to the destin and in the same order. The protocol is async, but for messages the server must to use a pipeline sent.
- Multi-device. Capabilities to ensure the messages are delivered on all the devices the user has registered.
- Security. Ensuring a certificate is valid between client and server (client must to check server certificate and server must to check client certificate) ensure the communication should be more secure.