matches.value_of("scm").expect("needs a file descriptor")
   .parse::<i32>().expect("the SCM_RIGHTS file descriptor must be a number")
}

pub fn get_configuration_state_fd<'a>(matches: &ArgMatches<'a>) -> i32 {
  matches.value_of("configuration-state-fd")
   .expect("needs a configuration state file descriptor")
   .parse::<i32>().expect("the file descriptor must be a number")
}

pub fn get_id<'a>(matches: &ArgMatches<'a>) -> i32 {
  matches.value_of("id").expect("needs a worker id")
   .parse::<i32>().expect("the worker id must be a number")
}

pub fn get_buffer_size<'a>(matches: &ArgMatches<'a>) -> usize {
  matches.value_of("command-buffer-size")
   .and_then(|size| size.parse::<usize>().ok())
   .unwrap_or(1_000_000)
}<commit_msg>fix typo<commit_after>use clap::{App,Arg,SubCommand,ArgMatches};
use worker::begin_worker_process;
use upgrade::begin_new_main_process;

pub fn init<'a>() -> ArgMatches<'a> {
  App::new("sozu")
   .version(crate_version!())
   .about("hot reconfigurable proxy")
   .subcommand(SubCommand::with_name("start")
               .about("launch the main process")
               .arg(Arg::with_name("config")
                   .short("c")
                   .long("config")
                   .value_name("FILE")
                   .help("Sets a custom config file")
                   .takes_value(true)
                   .required(option_env!("SOZU_CONFIG").is_none())))
   .subcommand(SubCommand::with_name("worker")
               .about("start a worker (internal command, should not be used directly)")
               .arg(Arg::with_name("id").long("id")
                    .takes_value(true).required(true).help("worker identifier"))
               .arg(Arg::with_name("fd").long("fd")
                    .takes_value(true).required(true).help("IPC file descriptor"))
               .arg(Arg::with_name("scm").long("scm")
                    .takes_value(true).required(true).help("IPC SCM_RIGHTS file descriptor"))
               .arg(Arg::with_name("configuration-state-fd").long("configuration-state-fd")
                    .takes_value(true).required(true).help("configuration data file descriptor"))
               .arg(Arg::with_name("command-buffer-size").long("command-buffer-size")
                    .takes_value(true).required(true).help("Worker's channel buffer size"))
               .arg(Arg::with_name("max-command-buffer-size").long("max-command-buffer-size")
                    .takes_value(true).required(true).help("Worker's channel max buffer size")))
   .subcommand(SubCommand::with_name("upgrade")
               .about("start a new main process (internal command, should not be used directly)")
               .arg(Arg::with_name("fd").long("fd")
                    .takes_value(true).required(true).help("IPC file descriptor"))
               .arg(Arg::with_name("upgrade-fd").long("upgrade-fd")
                    .takes_value(true).required(true).help("upgrade data file descriptor"))
               .arg(Arg::with_name("command-buffer-size").long("command-buffer-size")
                    .takes_value(true).required(true).help("Main process command buffer size"))
               .arg(Arg::with_name("max-command-buffer-size").long("max-command-buffer-size")
                    .takes_value(true).required(false).help("Main process max command buffer size")))
   .get_matches()
}

pub fn get_fd<'a>(matches: &ArgMatches<'a>) -> i32 {
  matches.value_of("fd").expect("needs a file descriptor")
   .parse::<i32>().expect("the file descriptor must be a number")
}

pub fn get_scm<'a>(matches: &ArgMatches<'a>) -> i32 {
  matches.value_of("scm").expect("needs a file descriptor")
   .parse::<i32>().expect("the SCM_RIGHTS file descriptor must be a number")
}

pub fn get_configuration_state_fd<'a>(matches: &ArgMatches<'a>) -> i32 {
  matches.value_of("configuration-state-fd")
   .expect("needs a configuration state file descriptor")
   .parse::<i32>().expect("the file descriptor must be a number")
}

pub fn get_id<'a>(matches: &ArgMatches<'a>) -> i32 {
  matches.value_of("id").expect("needs a worker id")
   .parse::<i32>().expect("the worker id must be a number")
}

pub fn get_buffer_size<'a>(matches: &ArgMatches<'a>) -> usize {
  matches.value_of("command-buffer-size")
   .and_then(|size| size.parse::<usize>().ok())
   .unwrap_or(1_000_000)
}Q: What kind of encoding is used for escaping special characters in Gutenberg #673 (The Gutenberg Webster's Unabridged Dictionary)? Link: http://www.gutenberg.org/ebooks/673
Through cross-checking with other sources1,2, I figured that:


*

*\'81 stands for ü (U+00FC)

*\'82 stands for é (U+00E9)

*\'84 stands for ä (U+00E4)

*\'91 stands for æ (U+00E6)

*\'94 stands for ö (U+00F6)

*\'ab stands for ½ (U+00BD)

*\'ac stands for ¼ (U+00BC)


Looking around, I thought CP775 seemed like a match.
Then I found these codes that don't fit in there:


*

*\'85 stands for à (U+00E0)

*\'c6 stands for í (U+00ED)


And these I don't know the corresponding characters for, but surely don't fit either: \'be (variant of "a"), \'d3 (variant of "o"), \'b5 (variant of asterisk?) and a lot more...
Any idea how to decode them?

A: After a lot more searching and crawling through Internet Archives than was necessary, I finally discovered the solution: http://micra.com/dictionary/webfont.txt (which doesn't seem to be a standardized mapping/encoding)
Chase The Ground Hog!!!
On the sunny afternoon of February 9, your fellow GCARC Club members were out on another wildly popular radio fox hunting event. This time, the fox was Frank, N3PUU, and the hunt area was in the Scotland Run Park area, in the vicinity of Williamstown.
Many took to this challenge using a “warmer / colder” technique, where the signal is strongest when you are closer, and weaker when further away. Others used a directional “beam” antenna, like an “arrow” antenna, or a home made “tape measure beam” to try and determine the direction of the transmitter, and then home-in on it that way. But those were not the only ways to hunt the fox.
Playing of the phrase “.or any technique of the hunter’s choosing”, this strange looking home-brew contraption took to field in this hunt.
Figured out what this thing is yet?  Instead of relying on signal strength, this gizmo can determine if there is a phase difference in a received signal between two sets of dipole antennas. Unlike the stronger/weaker or direction of strongest received signal (amplitude) approaches, this approach is independent of signal strength. What that means, in theory, is that a phase differential approach can be used at distance on weak signals, without using a beam antenna, or close-in on strong signals without needing to knock down the signal by removing the antenna or using an attenuator, or having to jump to the third harmonic.
Karl, W2KBF, tried a similar variant on this approach, by turning his auto into a porcupine, with multiple TDOA antennas to give a directional bearing to where the transmitter might be located.
Did either the phase differential or