Init.
This commit is contained in:
commit
5d7ebb4a3e
21 changed files with 4973 additions and 0 deletions
71
.source-highlight_groff-output-definition
Normal file
71
.source-highlight_groff-output-definition
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
extension "groff"
|
||||
doctemplate
|
||||
"
|
||||
.MT 0
|
||||
$header
|
||||
.TL
|
||||
$title
|
||||
.AU \"\"
|
||||
.ND
|
||||
.SA 0
|
||||
.DS I
|
||||
"
|
||||
".DE
|
||||
$footer
|
||||
"
|
||||
end
|
||||
|
||||
nodoctemplate
|
||||
"
|
||||
"
|
||||
"
|
||||
"
|
||||
end
|
||||
|
||||
bold "\f[CB]$text\fP"
|
||||
italics "\f[CI]$text\fP"
|
||||
underline "\f[CI]$text\fP"
|
||||
fixed "\fC$text\fP"
|
||||
color "\m[$style]$text\m[]"
|
||||
|
||||
anchor "$infilename : $linenum - $text"
|
||||
reference "$text \(-> $infile:$linenum, page : $infilename:$linenum"
|
||||
|
||||
#lineprefix "\fC\(em\fP "
|
||||
#lineprefix "\fC\n(ln\fP "
|
||||
|
||||
lineprefix ""
|
||||
|
||||
|
||||
colormap
|
||||
"green" "green"
|
||||
"red" "red"
|
||||
"darkred" "darkred"
|
||||
"blue" "blue"
|
||||
"brown" "brown"
|
||||
"pink" "pink"
|
||||
"yellow" "yellow"
|
||||
"cyan" "cyan"
|
||||
"purple" "purple"
|
||||
"orange" "orange"
|
||||
"brightorange" "brightorange"
|
||||
"brightgreen" "brightgreen"
|
||||
"darkgreen" "darkgreen"
|
||||
"black" "black"
|
||||
"teal" "teal"
|
||||
"gray" "gray"
|
||||
"darkblue" "darkblue"
|
||||
default "black"
|
||||
end
|
||||
|
||||
translations
|
||||
"\\" "\\\\"
|
||||
##"\n" " \\\\\n"
|
||||
##" " "\\ "
|
||||
##"\t" "\\ \\ \\ \\ \\ \\ \\ \\ "
|
||||
"\t" " "
|
||||
"|" "|"
|
||||
"---" "\(em"
|
||||
"--" "\(mi"
|
||||
end
|
||||
|
||||
5
Makefile
Normal file
5
Makefile
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
SRC ?= paper
|
||||
ODIR ?= ~/tmp/
|
||||
export ODIR SRC
|
||||
|
||||
include Makefile.in
|
||||
80
Makefile.in
Normal file
80
Makefile.in
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
SRC ?= graphs
|
||||
|
||||
ODIR ?= .
|
||||
|
||||
BIBLIOGRAPHY ?= bibliography
|
||||
ALLSRC = $(shell find .)
|
||||
|
||||
SOELIM_OPTS ?=
|
||||
SOELIM = soelim $(SOELIM_OPTS)
|
||||
|
||||
PRECONV_OPTS ?= -e utf-8
|
||||
PRECONV = preconv $(PRECONV_OPTS)
|
||||
|
||||
EQN_OPTS ?= -Tpdf
|
||||
EQN = eqn $(EQN_OPTS)
|
||||
|
||||
# source-highlight stuff
|
||||
# GH_INTRO: instructions before each source code provided by source-highlight
|
||||
# GH_OUTRO: ------------ after ---- ------ ---- -------- -- ----------------
|
||||
# GH_INTRO/GH_OUTRO: values are separated by ';'
|
||||
#
|
||||
GH_INTRO := .nr DI 0;.DS I;.fam C;.b1;.sp -0.1i
|
||||
GH_OUTRO := .sp -0.2i;.b2;.fam;.DE
|
||||
#
|
||||
export GH_INTRO
|
||||
export GH_OUTRO
|
||||
#
|
||||
# SHOPTS: cmd line parameter given to source-highlight
|
||||
SHOPTS = --outlang-def=.source-highlight_groff-output-definition
|
||||
export SHOPTS
|
||||
|
||||
# ghighlight brings `source-highlight` to troff
|
||||
GHIGHLIGHT_OPTS ?=
|
||||
GHIGHLIGHT = ./bin/ghighlight $(GHIGHLIGHT_OPTS)
|
||||
|
||||
GRAP_OPTS ?=
|
||||
GRAP = grap $(GRAP_OPTS)
|
||||
|
||||
PIC_OPTS ?= -Tpdf
|
||||
PIC = pic $(PIC_OPTS)
|
||||
|
||||
# -P => move ponctuation after reference
|
||||
# -S => label and bracket-label options
|
||||
# -e => accumulate (use a reference section)
|
||||
# -p bib => bibliography file
|
||||
REFER_OPTS ?= -PS -e -p $(BIBLIOGRAPHY)
|
||||
REFER = refer $(REFER_OPTS)
|
||||
|
||||
# -k => iconv conversion (did it ever worked?)
|
||||
# -t => tbl preprocessor
|
||||
# -ms => ms macro
|
||||
# -U => unsafe (because of PDF inclusion)
|
||||
# -Tpdf => output device is PDF
|
||||
# -mspdf => include PDF (so, images converted in PDF) in the document
|
||||
# NOTE: a custom troffrc (configuration file) is necessary on OpenBSD
|
||||
# to have correctly justified paragraphs. Otherwise, the default
|
||||
# configuration removes this possibility, for bullshit reasons. Sad.
|
||||
# -M dir => path to custom troffrc
|
||||
# TODO: no change with or without the following options -P -e
|
||||
# This has to be inverstigated: how to make PDFs look nice in browsers?
|
||||
# -P -e => provide "-e" to gropdf to embed fonts
|
||||
GROFF_OPTS ?= -ms -t -Tpdf -U -mspdf -mpdfmark -M ./bin -P -e
|
||||
GROFF = groff $(GROFF_OPTS)
|
||||
|
||||
$(SRC).pdf:
|
||||
$(SOELIM) < $(SRC).ms |\
|
||||
./bin/utf8-to-ms.sh |\
|
||||
$(PRECONV) |\
|
||||
$(EQN) |\
|
||||
$(GHIGHLIGHT) |\
|
||||
$(GRAP) |\
|
||||
$(PIC) |\
|
||||
$(REFER) |\
|
||||
$(GROFF) > $(ODIR)/$@
|
||||
|
||||
# Keep options in memory for the recursive 'make' call
|
||||
export SOELIM_OPTS PRECONV_OPTS EQN_OPTS GHIGHLIGHT_OPTS GRAP_OPTS PIC_OPTS REFER_OPTS
|
||||
serve:
|
||||
@#find . -name "*.ms" -or -name "*.d" | entr gmake -B $(SRC).pdf
|
||||
find . | entr gmake -B $(SRC).pdf
|
||||
24
bibliography
Normal file
24
bibliography
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
%K CBOR
|
||||
%A C. Bormann
|
||||
%A P. Hoffman
|
||||
%T RFC 8949, Concise Binary Object Representation (CBOR)
|
||||
%D 2020
|
||||
%I Internet Engineering Task Force (IETF)
|
||||
|
||||
%K JSON
|
||||
%A Tim Bray
|
||||
%T RFC 8259, The JavaScript Object Notation (JSON) Data Interchange Format
|
||||
%D 2017
|
||||
%I Internet Engineering Task Force (IETF)
|
||||
|
||||
%K darkhttpd
|
||||
%A Emil Mikulic
|
||||
%T DarkHTTPd, when you need a webserver in a hurry.
|
||||
%D 2017
|
||||
%I https://unix4lyfe.org/darkhttpd/
|
||||
|
||||
%K netlibre
|
||||
%A Philippe PITTOLI
|
||||
%T netlib.re, a free DNS registrar
|
||||
%D 2013
|
||||
%I https://www.netlib.re
|
||||
2684
bin/busgrap.pl
Executable file
2684
bin/busgrap.pl
Executable file
File diff suppressed because it is too large
Load diff
57
bin/custom
Executable file
57
bin/custom
Executable file
|
|
@ -0,0 +1,57 @@
|
|||
#!/bin/sh
|
||||
|
||||
# From a single byte in hexadecimal per line to lines ending with 0a
|
||||
# (hex for '\n'). Ex: 61 62 63 0a
|
||||
# Required to easily match (and remove) multi-byte characters.
|
||||
regroup_lines() awk '
|
||||
BEGIN {
|
||||
line_start=1
|
||||
}
|
||||
|
||||
{
|
||||
if (line_start == 1)
|
||||
line = $1;
|
||||
else
|
||||
line = line " " $1;
|
||||
|
||||
line_start = 0;
|
||||
if ($1 == "0a") {
|
||||
print line;
|
||||
line_start = 1
|
||||
}
|
||||
}
|
||||
|
||||
END {
|
||||
if (line_start == 0)
|
||||
print line
|
||||
}
|
||||
'
|
||||
|
||||
uppercase() tr "[a-z]" "[A-Z]"
|
||||
|
||||
# One column decimal to plain text.
|
||||
from_dec() awk '{ printf ("%c", $1 + 0) }'
|
||||
|
||||
# Replace spaces by line returns, outputs a single column.
|
||||
spaces_to_line_returns() tr " " "\n"
|
||||
|
||||
# Convert input into hexadecimal and a single byte per line.
|
||||
to_hex_one_column() { od -An -tx1 | awk '{for(i=1;i<=NF;i++){ print $i }}'; }
|
||||
|
||||
# One column hexa to one column decimal.
|
||||
hex_to_dec() { { echo "obase=10;ibase=16;" ; cat ; } | bc ; }
|
||||
|
||||
# Reverse hexadecimal (with space separators) to original value.
|
||||
from_hex() { spaces_to_line_returns | uppercase | hex_to_dec | from_dec; }
|
||||
|
||||
# Replace unbreakable spaces by '\ '.
|
||||
replace_unbreakable_spaces() sed "s/c2 a0/5c 20/g"
|
||||
|
||||
custom_mods(){
|
||||
to_hex_one_column | # Input to hexadecimal, 1-byte representation per line.
|
||||
regroup_lines | # From 1-byte to x-byte lines with space separators.
|
||||
replace_unbreakable_spaces | # Replace unbreakable spaces by '\ '.
|
||||
from_hex # Convert back from hex (x-byte per line, space separator).
|
||||
}
|
||||
|
||||
custom_mods
|
||||
286
bin/ghighlight
Executable file
286
bin/ghighlight
Executable file
|
|
@ -0,0 +1,286 @@
|
|||
#! /usr/bin/env perl
|
||||
|
||||
# ghighlight - A simple preprocessor for adding code highlighting in a groff file
|
||||
|
||||
# Copyright (C) 2014-2018 Free Software Foundation, Inc.
|
||||
|
||||
# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
|
||||
|
||||
my $version = '0.9.0';
|
||||
|
||||
# This file is part of 'ghighlight', which is part of 'groff'.
|
||||
|
||||
# 'groff' is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# 'groff' is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
|
||||
# You can find a copy of the GNU General Public License in the internet
|
||||
# at <http://www.gnu.org/licenses/gpl-2.0.html>.
|
||||
|
||||
########################################################################
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
#use diagnostics;
|
||||
|
||||
# current working directory
|
||||
use Cwd;
|
||||
|
||||
# $Bin is the directory where this script is located
|
||||
use FindBin;
|
||||
|
||||
# open3 for a bidirectional communication with a child process
|
||||
use IPC::Open3;
|
||||
|
||||
|
||||
########################################################################
|
||||
# system variables and exported variables
|
||||
########################################################################
|
||||
|
||||
$\ = "\n"; # final part for print command
|
||||
|
||||
########################################################################
|
||||
# read-only variables with double-@ construct
|
||||
########################################################################
|
||||
|
||||
our $File_split_env_sh;
|
||||
our $File_version_sh;
|
||||
our $Groff_Version;
|
||||
|
||||
my $before_make; # script before run of 'make'
|
||||
{
|
||||
my $at = '@';
|
||||
$before_make = 1 if '@VERSION@' eq "${at}VERSION${at}";
|
||||
}
|
||||
|
||||
my %at_at;
|
||||
my $file_perl_test_pl;
|
||||
my $groffer_libdir;
|
||||
|
||||
if ($before_make) {
|
||||
my $highlight_source_dir = $FindBin::Bin;
|
||||
$at_at{'BINDIR'} = $highlight_source_dir;
|
||||
$at_at{'G'} = '';
|
||||
} else {
|
||||
$at_at{'BINDIR'} = '@BINDIR@';
|
||||
$at_at{'G'} = '@g@';
|
||||
}
|
||||
|
||||
|
||||
########################################################################
|
||||
# options
|
||||
########################################################################
|
||||
|
||||
foreach (@ARGV) {
|
||||
if ( /^(-h|--h|--he|--hel|--help)$/ ) {
|
||||
print q(Usage for the 'ghighlight' program:);
|
||||
print 'ghighlight [-] [--] [filespec...] normal file name arguments';
|
||||
print 'ghighlight [-h|--help] gives usage information';
|
||||
print 'ghighlight [-v|--version] displays the version number';
|
||||
print q(This program is a 'groff' preprocessor that handles highlighting source code ) .
|
||||
q(parts in 'roff' files.);
|
||||
exit;
|
||||
} elsif ( /^(-v|--v|--ve|--ver|--vers|--versi|--versio|--version)$/ ) {
|
||||
print q('ghighlight' version ) . $version;
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
my $macros = "groff_mm";
|
||||
if ( $ENV{'GHLENABLECOLOR'} ) {
|
||||
$macros = "groff_mm_color";
|
||||
}
|
||||
########################################################################
|
||||
# input
|
||||
########################################################################
|
||||
|
||||
my $source_mode = 0;
|
||||
|
||||
my @lines = ();
|
||||
|
||||
|
||||
sub getTroffLine {
|
||||
my ($opt) = @_;
|
||||
if ($opt =~ /^ps=([0-9]+)/) {".ps $1"}
|
||||
elsif ($opt =~ /^vs=(\S+)/) {".vs $1"}
|
||||
else { print STDERR "didn't recognised '$opt'"; ""}
|
||||
}
|
||||
|
||||
sub getTroffLineOpposite {
|
||||
my ($opt) = @_;
|
||||
if ($opt =~ /^ps=/) {".ps"}
|
||||
elsif ($opt =~ /^vs=/) {".vs"}
|
||||
else { print STDERR "didn't recognised '$opt'"; ""}
|
||||
}
|
||||
|
||||
# language for codeblocks
|
||||
my $lang = '';
|
||||
my @options = ();
|
||||
foreach (<>) {
|
||||
chomp;
|
||||
s/\s+$//;
|
||||
my $line = $_;
|
||||
my $is_dot_Source = $line =~ /^[.']\s*(``|SOURCE)(|\s+.*)$/;
|
||||
|
||||
unless ( $is_dot_Source ) { # not a '.SOURCE' line
|
||||
if ( $source_mode ) { # is running in SOURCE mode
|
||||
push @lines, $line;
|
||||
} else { # normal line, not SOURCE-related
|
||||
print $line;
|
||||
}
|
||||
next;
|
||||
}
|
||||
|
||||
|
||||
##########
|
||||
# now the line is a '.SOURCE' line
|
||||
|
||||
my $args = $line;
|
||||
$args =~ s/\s+$//; # remove final spaces
|
||||
$args =~ s/^[.']\s*(``|SOURCE)\s*//; # omit .source part, leave the arguments
|
||||
|
||||
my @args = split /\s+/, $args;
|
||||
|
||||
##########
|
||||
# start SOURCE mode
|
||||
|
||||
$lang = $args[0] if ( @args > 0 && $args[0] ne 'stop' );
|
||||
|
||||
if ( @args > 0 && $args[0] ne 'stop' ) {
|
||||
# For '.``' no args or first arg 'start' means opening 'SOURCE' mode.
|
||||
# Everything else means an ending command.
|
||||
|
||||
shift @args;
|
||||
@options = @args;
|
||||
|
||||
if ( $source_mode ) {
|
||||
# '.SOURCE' was started twice, ignore
|
||||
print STDERR q('.``' starter was run several times);
|
||||
next;
|
||||
} else { # new SOURCE start
|
||||
$source_mode = 1;
|
||||
@lines = ();
|
||||
next;
|
||||
}
|
||||
}
|
||||
|
||||
##########
|
||||
# now the line must be a SOURCE ending line (stop)
|
||||
|
||||
unless ( $source_mode ) {
|
||||
print STDERR 'ghighlight.pl: there was a SOURCE ending without being in ' .
|
||||
'SOURCE mode:';
|
||||
print STDERR ' ' . $line;
|
||||
next;
|
||||
}
|
||||
|
||||
$source_mode = 0; # 'SOURCE' stop calling is correct
|
||||
|
||||
my $shopts = $ENV{"SHOPTS"} || "";
|
||||
|
||||
##########
|
||||
# Run source-highlight on lines
|
||||
# Check if language was specified
|
||||
my $cmdline = "source-highlight -f $macros $shopts --output STDOUT";
|
||||
if ($lang ne '') {
|
||||
$cmdline .= " -s $lang";
|
||||
}
|
||||
|
||||
# Start `source-highlight`
|
||||
my $pid = open3(my $child_in, my $child_out, my $child_err, $cmdline)
|
||||
or die "open3() failed $!";
|
||||
|
||||
# Provide source code to `source-highlight` in its standard input
|
||||
print $child_in $_ for @lines;
|
||||
close $child_in;
|
||||
|
||||
if (my $v = $ENV{"GH_INTRO"}) {
|
||||
print for split /;/, $v;
|
||||
}
|
||||
|
||||
for (@options) {
|
||||
my $l = getTroffLine $_;
|
||||
print $l if ($l ne "");
|
||||
}
|
||||
|
||||
# Print `source-highlight` output
|
||||
while (<$child_out>) {
|
||||
chomp;
|
||||
print;
|
||||
}
|
||||
close $child_out;
|
||||
|
||||
for (reverse @options) {
|
||||
my $l = getTroffLineOpposite $_;
|
||||
print $l if ($l ne "");
|
||||
}
|
||||
|
||||
if (my $v = $ENV{"GH_OUTRO"}) {
|
||||
print for split /;/, $v;
|
||||
}
|
||||
|
||||
my @print_res = (1);
|
||||
|
||||
# Start argument processing
|
||||
|
||||
# remove 'stop' arg if exists
|
||||
# shift @args if ( $args[0] eq 'stop' );
|
||||
|
||||
# if ( @args == 0 ) {
|
||||
# # no args for saving, so @print_res doesn't matter
|
||||
# next;
|
||||
# }
|
||||
# my @var_names = ();
|
||||
# my @mode_names = ();
|
||||
|
||||
# my $mode = '.ds';
|
||||
# for ( @args ) {
|
||||
# if ( /^\.?ds$/ ) {
|
||||
# $mode = '.ds';
|
||||
# next;
|
||||
# }
|
||||
# if ( /^\.?nr$/ ) {
|
||||
# $mode = '.nr';
|
||||
# next;
|
||||
# }
|
||||
# push @mode_names, $mode;
|
||||
# push @var_names, $_;
|
||||
# }
|
||||
|
||||
# my $n_vars = @var_names;
|
||||
|
||||
# if ( $n_vars < $n_res ) {
|
||||
# print STDERR 'ghighlight: not enough variables for Python part: ' .
|
||||
# $n_vars . ' variables for ' . $n_res . ' output lines.';
|
||||
# } elsif ( $n_vars > $n_res ) {
|
||||
# print STDERR 'ghighlight: too many variablenames for Python part: ' .
|
||||
# $n_vars . ' variables for ' . $n_res . ' output lines.';
|
||||
# }
|
||||
# if ( $n_vars < $n_res ) {
|
||||
# print STDERR 'ghighlight: not enough variables for Python part: ' .
|
||||
# $n_vars . ' variables for ' . $n_res . ' output lines.';
|
||||
# }
|
||||
|
||||
# my $n_min = $n_res;
|
||||
# $n_min = $n_vars if ( $n_vars < $n_res );
|
||||
# exit unless ( $n_min );
|
||||
# $n_min -= 1; # for starting with 0
|
||||
|
||||
# for my $i ( 0..$n_min ) {
|
||||
# my $value = $print_res[$i];
|
||||
# chomp $value;
|
||||
# print $mode_names[$i] . ' ' . $var_names[$i] . ' ' . $value;
|
||||
# }
|
||||
}
|
||||
|
||||
|
||||
1;
|
||||
# Local Variables:
|
||||
# mode: CPerl
|
||||
# End:
|
||||
5
bin/pdf.awk
Normal file
5
bin/pdf.awk
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# usage: cat data | awk -f pdf.awk
|
||||
{
|
||||
V = V + $1
|
||||
print V, $2
|
||||
}
|
||||
38
bin/remove-eol.pl
Executable file
38
bin/remove-eol.pl
Executable file
|
|
@ -0,0 +1,38 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
use v5.10;
|
||||
|
||||
my @list_multiline_cmd = (
|
||||
qr/^\.SUBSECTION$/
|
||||
, qr/^\.SECTION_NO_NUMBER$/
|
||||
, qr/^\.SUBSUBSECTION$/
|
||||
, qr/^\.SUBSUBSUBSECTION$/
|
||||
, qr/^\.SECTION$/
|
||||
, qr/^\.BULLET$/
|
||||
, qr/^\.ENUM$/
|
||||
);
|
||||
|
||||
my $STACK = "";
|
||||
my $found_pattern = 0;
|
||||
|
||||
while (<>) {
|
||||
chomp;
|
||||
my $line = $_;
|
||||
|
||||
$found_pattern = 0;
|
||||
|
||||
for (@list_multiline_cmd) {
|
||||
if ($line =~ $_) {
|
||||
#say "line '$line' matched " . $_;
|
||||
$found_pattern = 1;
|
||||
$STACK = $line . ' ';
|
||||
}
|
||||
}
|
||||
|
||||
if ($found_pattern == 1) {
|
||||
next;
|
||||
}
|
||||
|
||||
say $STACK . $line;
|
||||
$STACK = "";
|
||||
}
|
||||
18
bin/roff2custom.sh
Executable file
18
bin/roff2custom.sh
Executable file
|
|
@ -0,0 +1,18 @@
|
|||
#!/bin/sh
|
||||
|
||||
# HOW TO USE
|
||||
|
||||
# . ./$0
|
||||
# cat file | modernize_roff | remove-eol.pl > file.new
|
||||
|
||||
modernize_roff() {
|
||||
sed \
|
||||
-e "s/^\.PP/.PARAGRAPH_INDENTED/" \
|
||||
-e "s/^\.NH 1/.SECTION/" \
|
||||
-e "s/^\.NH 2/.SUBSECTION/" \
|
||||
-e "s/^\.NH 3/.SUBSUBSECTION/" \
|
||||
-e "s/^\.NH 4/.SUBSUBSUBSECTION/" \
|
||||
-e "s/^\.SH [1-4]/.SECTION_NO_NUMBER/" \
|
||||
-e "s/^\.SH$/.SECTION_NO_NUMBER/" \
|
||||
-e "s/^\.LP/.PARAGRAPH_UNINDENTED/"
|
||||
}
|
||||
69
bin/troffrc
Normal file
69
bin/troffrc
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
.\" Startup file for troff.
|
||||
.
|
||||
.\" This is tested by pic.
|
||||
.nr 0p 0
|
||||
.
|
||||
.\" Load composite mappings.
|
||||
.do mso composite.tmac
|
||||
.
|
||||
.\" Load generic fallback mappings.
|
||||
.do mso fallbacks.tmac
|
||||
.
|
||||
.\" Use .do here, so that it works with -C.
|
||||
.\" The groff command defines the .X string if the -X option was given.
|
||||
.ie r.X .do ds troffrc!ps Xps.tmac
|
||||
.el .do ds troffrc!ps ps.tmac
|
||||
.do ds troffrc!pdf pdf.tmac
|
||||
.do ds troffrc!dvi dvi.tmac
|
||||
.do ds troffrc!X75 X.tmac
|
||||
.do ds troffrc!X75-12 X.tmac
|
||||
.do ds troffrc!X100 X.tmac
|
||||
.do ds troffrc!X100-12 X.tmac
|
||||
.do ds troffrc!ascii tty.tmac
|
||||
.do ds troffrc!latin1 tty.tmac
|
||||
.do ds troffrc!utf8 tty.tmac
|
||||
.do ds troffrc!cp1047 tty.tmac
|
||||
.do ds troffrc!lj4 lj4.tmac
|
||||
.do ds troffrc!lbp lbp.tmac
|
||||
.do ds troffrc!html html.tmac
|
||||
.do if d troffrc!\*[.T] \
|
||||
. do mso \*[troffrc!\*[.T]]
|
||||
.do rm troffrc!ps troffrc!Xps troffrc!dvi troffrc!X75 troffrc!X75-12 \
|
||||
troffrc!X100 troffrc!X100-12 troffrc!lj4 troff!lbp troffrc!html troffrc!pdf
|
||||
.
|
||||
.\" Test whether we work under EBCDIC and map the no-breakable space
|
||||
.\" character accordingly.
|
||||
.do ie '\[char97]'a' \
|
||||
. do tr \[char160]\~
|
||||
.el \
|
||||
. do tr \[char65]\~
|
||||
.
|
||||
.\" Set the hyphenation language to 'fr'.
|
||||
.do hla fr
|
||||
.
|
||||
.\" Disable hyphenation:
|
||||
.\" Do not load hyphenation patterns and exceptions.
|
||||
.\"do hpf hyphen.us
|
||||
.\"do hpfa hyphenex.us
|
||||
.
|
||||
.\" Disable adjustment by default,
|
||||
.\" such that manuals look similar with groff and mandoc(1).
|
||||
.\".ad l
|
||||
.\".de ad
|
||||
.\"..
|
||||
.\" Handle paper formats.
|
||||
.do mso papersize.tmac
|
||||
.
|
||||
.\" Handle PS images.
|
||||
.do mso pspic.tmac
|
||||
.do mso pdfpic.tmac
|
||||
.
|
||||
.\" ====================================================================
|
||||
.\" Editor settings
|
||||
.\" ====================================================================
|
||||
.
|
||||
.\" Local Variables:
|
||||
.\" mode: nroff
|
||||
.\" fill-column: 72
|
||||
.\" End:
|
||||
.\" vim: set filetype=groff textwidth=72:
|
||||
147
bin/utf8-to-ms.sh
Executable file
147
bin/utf8-to-ms.sh
Executable file
|
|
@ -0,0 +1,147 @@
|
|||
#!/bin/sh
|
||||
|
||||
# This program isn't by any mean complete.
|
||||
# Most of text markers, accents and ligatures are handled.
|
||||
# However, nothing else currently is.
|
||||
# Please, do provide more translations.
|
||||
|
||||
# Convert input into hexadecimal and a single byte per line.
|
||||
to_hex_one_column() xxd -p -c 1
|
||||
|
||||
# Reverse hexadecimal to original value.
|
||||
from_hex() xxd -p -r
|
||||
|
||||
regroup_lines() awk '
|
||||
BEGIN {
|
||||
line_start=1
|
||||
}
|
||||
|
||||
{
|
||||
if (line_start == 1)
|
||||
line = $1;
|
||||
else
|
||||
line = line " " $1;
|
||||
|
||||
line_start = 0;
|
||||
if ($1 == "0a") {
|
||||
print line;
|
||||
line_start = 1
|
||||
}
|
||||
}
|
||||
|
||||
END {
|
||||
if (line_start == 0)
|
||||
print line
|
||||
}
|
||||
'
|
||||
|
||||
accents() sed \
|
||||
-e "s/c3 81/5c 5b 27 41 5d/g"\
|
||||
-e "s/c3 89/5c 5b 27 45 5d/g"\
|
||||
-e "s/c3 8d/5c 5b 27 49 5d/g"\
|
||||
-e "s/c3 93/5c 5b 27 4f 5d/g"\
|
||||
-e "s/c3 9a/5c 5b 27 55 5d/g"\
|
||||
-e "s/c3 9d/5c 5b 27 59 5d/g"\
|
||||
-e "s/c3 a1/5c 5b 27 61 5d/g"\
|
||||
-e "s/c3 a9/5c 5b 27 65 5d/g"\
|
||||
-e "s/c3 ad/5c 5b 27 69 5d/g"\
|
||||
-e "s/c3 b3/5c 5b 27 6f 5d/g"\
|
||||
-e "s/c3 ba/5c 5b 27 75 5d/g"\
|
||||
-e "s/c3 bd/5c 5b 27 79 5d/g"\
|
||||
-e "s/c3 84/5c 5b 3a 41 5d/g"\
|
||||
-e "s/c3 8b/5c 5b 3a 45 5d/g"\
|
||||
-e "s/c3 8f/5c 5b 3a 49 5d/g"\
|
||||
-e "s/c3 96/5c 5b 3a 4f 5d/g"\
|
||||
-e "s/c3 9c/5c 5b 3a 55 5d/g"\
|
||||
-e "s/c3 a4/5c 5b 3a 61 5d/g"\
|
||||
-e "s/c3 ab/5c 5b 3a 65 5d/g"\
|
||||
-e "s/c3 af/5c 5b 3a 69 5d/g"\
|
||||
-e "s/c3 b6/5c 5b 3a 6f 5d/g"\
|
||||
-e "s/c3 bc/5c 5b 3a 75 5d/g"\
|
||||
-e "s/c3 bf/5c 5b 3a 79 5d/g"\
|
||||
-e "s/c3 82/5c 5b 5e 41 5d/g"\
|
||||
-e "s/c3 8a/5c 5b 5e 45 5d/g"\
|
||||
-e "s/c3 8e/5c 5b 5e 49 5d/g"\
|
||||
-e "s/c3 94/5c 5b 5e 4f 5d/g"\
|
||||
-e "s/c3 9b/5c 5b 5e 55 5d/g"\
|
||||
-e "s/c3 a2/5c 5b 5e 61 5d/g"\
|
||||
-e "s/c3 aa/5c 5b 5e 65 5d/g"\
|
||||
-e "s/c3 ae/5c 5b 5e 69 5d/g"\
|
||||
-e "s/c3 b4/5c 5b 5e 6f 5d/g"\
|
||||
-e "s/c3 bb/5c 5b 5e 75 5d/g"\
|
||||
-e "s/c3 80/5c 5b 60 41 5d/g"\
|
||||
-e "s/c3 88/5c 5b 60 45 5d/g"\
|
||||
-e "s/c3 8c/5c 5b 60 49 5d/g"\
|
||||
-e "s/c3 92/5c 5b 60 4f 5d/g"\
|
||||
-e "s/c3 99/5c 5b 60 55 5d/g"\
|
||||
-e "s/c3 a0/5c 5b 60 61 5d/g"\
|
||||
-e "s/c3 a8/5c 5b 60 65 5d/g"\
|
||||
-e "s/c3 ac/5c 5b 60 69 5d/g"\
|
||||
-e "s/c3 b2/5c 5b 60 6f 5d/g"\
|
||||
-e "s/c3 b9/5c 5b 60 75 5d/g"\
|
||||
-e "s/c3 83/5c 5b 7e 41 5d/g"\
|
||||
-e "s/c3 91/5c 5b 7e 4e 5d/g"\
|
||||
-e "s/c3 95/5c 5b 7e 4f 5d/g"\
|
||||
-e "s/c3 a3/5c 5b 7e 61 5d/g"\
|
||||
-e "s/c3 b1/5c 5b 7e 6e 5d/g"\
|
||||
-e "s/c3 b5/5c 5b 7e 6f 5d/g"\
|
||||
-e "s/c3 87/5c 5b 2c 43 5d/g"\
|
||||
-e "s/c3 a7/5c 5b 2c 63 5d/g"\
|
||||
-e "s/c3 85/5c 5b 6f 41 5d/g"\
|
||||
-e "s/c3 a5/5c 5b 6f 61 5d/g"\
|
||||
-e "s/c5 b8/5c 5b 3a 59 5d/g"\
|
||||
-e "s/c5 a0/5c 5b 76 53 5d/g"\
|
||||
-e "s/c5 a1/5c 5b 76 73 5d/g"\
|
||||
-e "s/c5 bd/5c 5b 76 5a 5d/g"\
|
||||
-e "s/c5 be/5c 5b 76 7a 5d/g"
|
||||
|
||||
# Ligatures.
|
||||
ligatures() sed \
|
||||
-e "s/ef ac 80/5c 5b 66 66 5d/g"\
|
||||
-e "s/ef ac 81/5c 5b 66 69 5d/g"\
|
||||
-e "s/ef ac 82/5c 5b 66 6c 5d/g"\
|
||||
-e "s/ef ac 83/5c 5b 46 69 5d/g"\
|
||||
-e "s/ef ac 84/5c 5b 46 6c 5d/g"\
|
||||
-e "s/c5 81/5c 5b 2f 4c 5d/g"\
|
||||
-e "s/c5 82/5c 5b 2f 6c 5d/g"\
|
||||
-e "s/c3 98/5c 5b 2f 4f 5d/g"\
|
||||
-e "s/c3 b8/5c 5b 2f 6f 5d/g"\
|
||||
-e "s/c3 86/5c 5b 41 45 5d/g"\
|
||||
-e "s/c3 a6/5c 5b 61 65 5d/g"\
|
||||
-e "s/c5 92/5c 5b 4f 45 5d/g"\
|
||||
-e "s/c5 93/5c 5b 6f 65 5d/g"\
|
||||
-e "s/c4 b2/5c 5b 49 4a 5d/g"\
|
||||
-e "s/c4 b3/5c 5b 69 6a 5d/g"\
|
||||
-e "s/c4 b1/5c 5b 2e 69 5d/g"\
|
||||
-e "s/c8 b7/5c 5b 2e 6a 5d/g"
|
||||
|
||||
# Text markers.
|
||||
text_markers() sed \
|
||||
-e "s/e2 97 8b/5c 5b 63 69 5d/g"\
|
||||
-e "s/e2 80 a2/5c 5b 62 75 5d/g"\
|
||||
-e "s/e2 80 a1/5c 5b 64 64 5d/g"\
|
||||
-e "s/e2 80 a0/5c 5b 64 67 5d/g"\
|
||||
-e "s/e2 97 8a/5c 5b 6c 7a 5d/g"\
|
||||
-e "s/e2 96 a1/5c 5b 73 71 5d/g"\
|
||||
-e "s/c2 b6/5c 5b 70 73 5d/g"\
|
||||
-e "s/c2 a7/5c 5b 73 63 5d/g"\
|
||||
-e "s/e2 98 9c/5c 5b 6c 68 5d/g"\
|
||||
-e "s/e2 98 9e/5c 5b 72 68 5d/g"\
|
||||
-e "s/e2 86 b5/5c 5b 43 52 5d/g"\
|
||||
-e "s/e2 9c 93/5c 5b 4f 4b 5d/g"
|
||||
|
||||
# These markers shouldn't be automatically translated in ms macros.
|
||||
# @ "s/40/5c 5b 61 74 5d/g"
|
||||
# # "s/23/5c 5b 73 68 5d/g"
|
||||
|
||||
# Legal symbols.
|
||||
legal_symbols() sed \
|
||||
-e "s/c2 a9/5c 5b 63 6f 5d/g"\
|
||||
-e "s/c2 ae/5c 5b 72 67 5d/g"\
|
||||
-e "s/e2 84 a2/5c 5b 74 6d 5d/g"
|
||||
|
||||
hexutf8_to_hexms() {
|
||||
text_markers | accents | ligatures | legal_symbols
|
||||
}
|
||||
|
||||
to_hex_one_column | regroup_lines | hexutf8_to_hexms | from_hex
|
||||
179
data/cumulative-domains-per-user.d
Normal file
179
data/cumulative-domains-per-user.d
Normal file
|
|
@ -0,0 +1,179 @@
|
|||
242 0
|
||||
6226 1
|
||||
10498 2
|
||||
12977 3
|
||||
15009 4
|
||||
19452 5
|
||||
20169 6
|
||||
20611 7
|
||||
20981 8
|
||||
21261 9
|
||||
21872 10
|
||||
22077 11
|
||||
22236 12
|
||||
22346 13
|
||||
22442 14
|
||||
22518 15
|
||||
22583 16
|
||||
22634 17
|
||||
22687 18
|
||||
22736 19
|
||||
22815 20
|
||||
22860 21
|
||||
22901 22
|
||||
22923 23
|
||||
22943 24
|
||||
22963 25
|
||||
22993 26
|
||||
23014 27
|
||||
23031 28
|
||||
23046 29
|
||||
23124 30
|
||||
23147 31
|
||||
23161 32
|
||||
23174 33
|
||||
23186 34
|
||||
23208 35
|
||||
23218 36
|
||||
23232 37
|
||||
23239 38
|
||||
23251 39
|
||||
23261 40
|
||||
23271 41
|
||||
23278 42
|
||||
23289 43
|
||||
23298 44
|
||||
23307 45
|
||||
23311 46
|
||||
23319 47
|
||||
23324 48
|
||||
23332 49
|
||||
23343 50
|
||||
23349 51
|
||||
23365 52
|
||||
23370 53
|
||||
23373 54
|
||||
23377 55
|
||||
23382 56
|
||||
23384 57
|
||||
23388 58
|
||||
23393 59
|
||||
23397 60
|
||||
23401 61
|
||||
23403 62
|
||||
23407 63
|
||||
23409 64
|
||||
23415 65
|
||||
23416 66
|
||||
23419 67
|
||||
23420 68
|
||||
23422 69
|
||||
23426 70
|
||||
23428 71
|
||||
23430 72
|
||||
23432 73
|
||||
23435 74
|
||||
23436 75
|
||||
23437 77
|
||||
23441 78
|
||||
23447 80
|
||||
23451 81
|
||||
23455 82
|
||||
23463 83
|
||||
23467 85
|
||||
23470 86
|
||||
23478 87
|
||||
23484 88
|
||||
23491 89
|
||||
23495 90
|
||||
23498 91
|
||||
23501 92
|
||||
23506 93
|
||||
23514 94
|
||||
23517 95
|
||||
23528 96
|
||||
23536 97
|
||||
23546 98
|
||||
23574 99
|
||||
23611 100
|
||||
23618 101
|
||||
23622 102
|
||||
23623 104
|
||||
23624 108
|
||||
23625 110
|
||||
23627 111
|
||||
23628 112
|
||||
23629 113
|
||||
23630 114
|
||||
23635 115
|
||||
23636 117
|
||||
23638 118
|
||||
23639 120
|
||||
23640 122
|
||||
23641 123
|
||||
23643 127
|
||||
23644 129
|
||||
23645 130
|
||||
23646 131
|
||||
23647 133
|
||||
23649 134
|
||||
23650 135
|
||||
23652 138
|
||||
23653 141
|
||||
23654 142
|
||||
23655 143
|
||||
23656 145
|
||||
23658 147
|
||||
23659 150
|
||||
23660 152
|
||||
23661 154
|
||||
23662 156
|
||||
23663 158
|
||||
23664 159
|
||||
23665 165
|
||||
23666 166
|
||||
23667 168
|
||||
23668 175
|
||||
23669 177
|
||||
23670 180
|
||||
23671 185
|
||||
23672 186
|
||||
23673 187
|
||||
23674 194
|
||||
23675 197
|
||||
23676 202
|
||||
23677 203
|
||||
23678 205
|
||||
23679 209
|
||||
23680 224
|
||||
23681 227
|
||||
23682 231
|
||||
23683 233
|
||||
23684 242
|
||||
23685 248
|
||||
23686 253
|
||||
23687 254
|
||||
23688 258
|
||||
23689 274
|
||||
23690 281
|
||||
23691 309
|
||||
23692 313
|
||||
23693 334
|
||||
23694 362
|
||||
23695 363
|
||||
23696 373
|
||||
23697 416
|
||||
23698 473
|
||||
23699 479
|
||||
23700 538
|
||||
23701 546
|
||||
23702 554
|
||||
23703 573
|
||||
23704 583
|
||||
23705 860
|
||||
23706 973
|
||||
23707 1954
|
||||
23708 2589
|
||||
23709 2911
|
||||
23710 3400
|
||||
23711 3714
|
||||
179
data/domains-per-user.d
Normal file
179
data/domains-per-user.d
Normal file
|
|
@ -0,0 +1,179 @@
|
|||
242 0
|
||||
5984 1
|
||||
4272 2
|
||||
2479 3
|
||||
2032 4
|
||||
4443 5
|
||||
717 6
|
||||
442 7
|
||||
370 8
|
||||
280 9
|
||||
611 10
|
||||
205 11
|
||||
159 12
|
||||
110 13
|
||||
96 14
|
||||
76 15
|
||||
65 16
|
||||
51 17
|
||||
53 18
|
||||
49 19
|
||||
79 20
|
||||
45 21
|
||||
41 22
|
||||
22 23
|
||||
20 24
|
||||
20 25
|
||||
30 26
|
||||
21 27
|
||||
17 28
|
||||
15 29
|
||||
78 30
|
||||
23 31
|
||||
14 32
|
||||
13 33
|
||||
12 34
|
||||
22 35
|
||||
10 36
|
||||
14 37
|
||||
7 38
|
||||
12 39
|
||||
10 40
|
||||
10 41
|
||||
7 42
|
||||
11 43
|
||||
9 44
|
||||
9 45
|
||||
4 46
|
||||
8 47
|
||||
5 48
|
||||
8 49
|
||||
11 50
|
||||
6 51
|
||||
16 52
|
||||
5 53
|
||||
3 54
|
||||
4 55
|
||||
5 56
|
||||
2 57
|
||||
4 58
|
||||
5 59
|
||||
4 60
|
||||
4 61
|
||||
2 62
|
||||
4 63
|
||||
2 64
|
||||
6 65
|
||||
1 66
|
||||
3 67
|
||||
1 68
|
||||
2 69
|
||||
4 70
|
||||
2 71
|
||||
2 72
|
||||
2 73
|
||||
3 74
|
||||
1 75
|
||||
1 77
|
||||
4 78
|
||||
6 80
|
||||
4 81
|
||||
4 82
|
||||
8 83
|
||||
4 85
|
||||
3 86
|
||||
8 87
|
||||
6 88
|
||||
7 89
|
||||
4 90
|
||||
3 91
|
||||
3 92
|
||||
5 93
|
||||
8 94
|
||||
3 95
|
||||
11 96
|
||||
8 97
|
||||
10 98
|
||||
28 99
|
||||
37 100
|
||||
7 101
|
||||
4 102
|
||||
1 104
|
||||
1 108
|
||||
1 110
|
||||
2 111
|
||||
1 112
|
||||
1 113
|
||||
1 114
|
||||
5 115
|
||||
1 117
|
||||
2 118
|
||||
1 120
|
||||
1 122
|
||||
1 123
|
||||
2 127
|
||||
1 129
|
||||
1 130
|
||||
1 131
|
||||
1 133
|
||||
2 134
|
||||
1 135
|
||||
2 138
|
||||
1 141
|
||||
1 142
|
||||
1 143
|
||||
1 145
|
||||
2 147
|
||||
1 150
|
||||
1 152
|
||||
1 154
|
||||
1 156
|
||||
1 158
|
||||
1 159
|
||||
1 165
|
||||
1 166
|
||||
1 168
|
||||
1 175
|
||||
1 177
|
||||
1 180
|
||||
1 185
|
||||
1 186
|
||||
1 187
|
||||
1 194
|
||||
1 197
|
||||
1 202
|
||||
1 203
|
||||
1 205
|
||||
1 209
|
||||
1 224
|
||||
1 227
|
||||
1 231
|
||||
1 233
|
||||
1 242
|
||||
1 248
|
||||
1 253
|
||||
1 254
|
||||
1 258
|
||||
1 274
|
||||
1 281
|
||||
1 309
|
||||
1 313
|
||||
1 334
|
||||
1 362
|
||||
1 363
|
||||
1 373
|
||||
1 416
|
||||
1 473
|
||||
1 479
|
||||
1 538
|
||||
1 546
|
||||
1 554
|
||||
1 573
|
||||
1 583
|
||||
1 860
|
||||
1 973
|
||||
1 1954
|
||||
1 2589
|
||||
1 2911
|
||||
1 3400
|
||||
1 3714
|
||||
179
data/reverse-cumulative-domains-per-user.d
Normal file
179
data/reverse-cumulative-domains-per-user.d
Normal file
|
|
@ -0,0 +1,179 @@
|
|||
1 3714
|
||||
2 3400
|
||||
3 2911
|
||||
4 2589
|
||||
5 1954
|
||||
6 973
|
||||
7 860
|
||||
8 583
|
||||
9 573
|
||||
10 554
|
||||
11 546
|
||||
12 538
|
||||
13 479
|
||||
14 473
|
||||
15 416
|
||||
16 373
|
||||
17 363
|
||||
18 362
|
||||
19 334
|
||||
20 313
|
||||
21 309
|
||||
22 281
|
||||
23 274
|
||||
24 258
|
||||
25 254
|
||||
26 253
|
||||
27 248
|
||||
28 242
|
||||
29 233
|
||||
30 231
|
||||
31 227
|
||||
32 224
|
||||
33 209
|
||||
34 205
|
||||
35 203
|
||||
36 202
|
||||
37 197
|
||||
38 194
|
||||
39 187
|
||||
40 186
|
||||
41 185
|
||||
42 180
|
||||
43 177
|
||||
44 175
|
||||
45 168
|
||||
46 166
|
||||
47 165
|
||||
48 159
|
||||
49 158
|
||||
50 156
|
||||
51 154
|
||||
52 152
|
||||
53 150
|
||||
55 147
|
||||
56 145
|
||||
57 143
|
||||
58 142
|
||||
59 141
|
||||
61 138
|
||||
62 135
|
||||
64 134
|
||||
65 133
|
||||
66 131
|
||||
67 130
|
||||
68 129
|
||||
70 127
|
||||
71 123
|
||||
72 122
|
||||
73 120
|
||||
75 118
|
||||
76 117
|
||||
81 115
|
||||
82 114
|
||||
83 113
|
||||
84 112
|
||||
86 111
|
||||
87 110
|
||||
88 108
|
||||
89 104
|
||||
93 102
|
||||
100 101
|
||||
137 100
|
||||
165 99
|
||||
175 98
|
||||
183 97
|
||||
194 96
|
||||
197 95
|
||||
205 94
|
||||
210 93
|
||||
213 92
|
||||
216 91
|
||||
220 90
|
||||
227 89
|
||||
233 88
|
||||
241 87
|
||||
244 86
|
||||
248 85
|
||||
256 83
|
||||
260 82
|
||||
264 81
|
||||
270 80
|
||||
274 78
|
||||
275 77
|
||||
276 75
|
||||
279 74
|
||||
281 73
|
||||
283 72
|
||||
285 71
|
||||
289 70
|
||||
291 69
|
||||
292 68
|
||||
295 67
|
||||
296 66
|
||||
302 65
|
||||
304 64
|
||||
308 63
|
||||
310 62
|
||||
314 61
|
||||
318 60
|
||||
323 59
|
||||
327 58
|
||||
329 57
|
||||
334 56
|
||||
338 55
|
||||
341 54
|
||||
346 53
|
||||
362 52
|
||||
368 51
|
||||
379 50
|
||||
387 49
|
||||
392 48
|
||||
400 47
|
||||
404 46
|
||||
413 45
|
||||
422 44
|
||||
433 43
|
||||
440 42
|
||||
450 41
|
||||
460 40
|
||||
472 39
|
||||
479 38
|
||||
493 37
|
||||
503 36
|
||||
525 35
|
||||
537 34
|
||||
550 33
|
||||
564 32
|
||||
587 31
|
||||
665 30
|
||||
680 29
|
||||
697 28
|
||||
718 27
|
||||
748 26
|
||||
768 25
|
||||
788 24
|
||||
810 23
|
||||
851 22
|
||||
896 21
|
||||
975 20
|
||||
1024 19
|
||||
1077 18
|
||||
1128 17
|
||||
1193 16
|
||||
1269 15
|
||||
1365 14
|
||||
1475 13
|
||||
1634 12
|
||||
1839 11
|
||||
2450 10
|
||||
2730 9
|
||||
3100 8
|
||||
3542 7
|
||||
4259 6
|
||||
8702 5
|
||||
10734 4
|
||||
13213 3
|
||||
17485 2
|
||||
23469 1
|
||||
23711 0
|
||||
33
graphs/cumulative-domains-per-user.grap
Normal file
33
graphs/cumulative-domains-per-user.grap
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
.G1
|
||||
copy "legend.grap"
|
||||
|
||||
graph Linear
|
||||
frame invis ht 3 wid 2 left solid bot solid
|
||||
#coord x 0,4000 y 0,100
|
||||
#ticks left out from 0 to 40000 by 10000
|
||||
#ticks bot off
|
||||
#ticks bot out at 0, 10, 100,1000,2000,3000
|
||||
|
||||
label left "% users having" unaligned "up to this" "much domains" left 0.5
|
||||
label bottom "Nb domains" unaligned
|
||||
|
||||
copy "./data/cumulative-domains-per-user.d" thru X
|
||||
v = ($1/23711)*100
|
||||
bullet at $2,v
|
||||
X
|
||||
|
||||
graph Zoom
|
||||
frame invis ht 3 wid 2 left solid bot solid
|
||||
coord x 10,100 y 96,100
|
||||
#ticks left out from 0 to 40000 by 10000
|
||||
#ticks bot off
|
||||
ticks bot out from 0 to 1000 by 10
|
||||
|
||||
label left "% users having" unaligned "up to this" "much domains" left 0.5
|
||||
label bottom "Nb domains" unaligned
|
||||
|
||||
copy "./data/cumulative-domains-per-user.d" thru X
|
||||
v = ($1/23711)*100
|
||||
bullet at $2,v
|
||||
X
|
||||
.G2
|
||||
31
graphs/nb-domains-per-user.grap
Normal file
31
graphs/nb-domains-per-user.grap
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
.G1
|
||||
copy "legend.grap"
|
||||
|
||||
graph Linear
|
||||
frame invis ht 3 wid 2 left solid bot solid
|
||||
coord x 0,4000 y 1,6000
|
||||
#ticks left out from 0 to 40000 by 10000
|
||||
#ticks bot off
|
||||
#ticks bot out at 0, 10, 100,1000,2000,3000
|
||||
|
||||
label left "Nb users" unaligned left 0.5
|
||||
label bottom "Nb domains" unaligned
|
||||
|
||||
copy "./data/domains-per-user.d" thru X
|
||||
bullet at $2,$1
|
||||
X
|
||||
|
||||
graph Zoom
|
||||
frame invis ht 3 wid 2 left solid bot solid
|
||||
coord x 0,50 y 1,6000
|
||||
#ticks left out from 0 to 40000 by 10000
|
||||
#ticks bot off
|
||||
ticks bot out from 0 to 50 by 10
|
||||
|
||||
label left "Nb users" unaligned left 0.5
|
||||
label bottom "Nb domains" unaligned
|
||||
|
||||
copy "./data/domains-per-user.d" thru X
|
||||
bullet at $2,$1
|
||||
X
|
||||
.G2
|
||||
145
legend.grap
Normal file
145
legend.grap
Normal file
|
|
@ -0,0 +1,145 @@
|
|||
define boite {
|
||||
xleft = $1
|
||||
xright = $2
|
||||
yup = $3
|
||||
ydown = $4
|
||||
|
||||
line from xleft,ydown to xright,ydown
|
||||
line from xleft,yup to xright,yup
|
||||
line from xleft,yup to xleft,ydown
|
||||
line from xright,yup to xright,ydown
|
||||
}
|
||||
|
||||
define legend_line {
|
||||
cy = $1
|
||||
lstartx = $2
|
||||
lendx = $3
|
||||
tstartx = $4
|
||||
|
||||
.gcolor $5
|
||||
line from lstartx,cy to lendx,cy
|
||||
.gcolor
|
||||
$6 ljust at tstartx,cy
|
||||
}
|
||||
|
||||
define legend {
|
||||
xleft = $1
|
||||
xright = $2
|
||||
yup = $3
|
||||
ydown = $4
|
||||
|
||||
diffx = xright - xleft
|
||||
diffy = yup - ydown
|
||||
|
||||
hdiff = diffy/5.7
|
||||
cy = yup - (diffy/6)
|
||||
cx = (diffx/20) + xleft
|
||||
|
||||
lstartx = cx
|
||||
lendx = cx + diffx/8
|
||||
tstartx = lendx + diffx/20
|
||||
|
||||
.ps -2
|
||||
legend_line(cy,lstartx,lendx,tstartx,red,"RAM only")
|
||||
cy = cy - hdiff
|
||||
legend_line(cy,lstartx,lendx,tstartx,black,"Cached db and index")
|
||||
cy = cy - hdiff
|
||||
legend_line(cy,lstartx,lendx,tstartx,pink,"Common db, cached index")
|
||||
cy = cy - hdiff
|
||||
legend_line(cy,lstartx,lendx,tstartx,blue,"Uncached db, cached index")
|
||||
cy = cy - hdiff
|
||||
legend_line(cy,lstartx,lendx,tstartx,green,"Uncached db and index")
|
||||
.ps +2
|
||||
}
|
||||
|
||||
define legend_common {
|
||||
xleft = $1
|
||||
xright = $2
|
||||
yup = $3
|
||||
ydown = $4
|
||||
|
||||
diffx = xright - xleft
|
||||
diffy = yup - ydown
|
||||
|
||||
hdiff = diffy/4.5
|
||||
cy = yup - (diffy/6)
|
||||
cx = (diffx/20) + xleft
|
||||
|
||||
lstartx = cx
|
||||
lendx = cx + diffx/8
|
||||
tstartx = lendx + diffx/20
|
||||
|
||||
.ps -2
|
||||
legend_line(cy,lstartx,lendx,tstartx,red,"1k")
|
||||
cy = cy - hdiff
|
||||
legend_line(cy,lstartx,lendx,tstartx,green,"5k")
|
||||
cy = cy - hdiff
|
||||
legend_line(cy,lstartx,lendx,tstartx,black,"10k")
|
||||
cy = cy - hdiff
|
||||
legend_line(cy,lstartx,lendx,tstartx,pink,"20k")
|
||||
.ps +2
|
||||
}
|
||||
|
||||
define legend_lru_addition {
|
||||
xleft = $1
|
||||
xright = $2
|
||||
yup = $3
|
||||
ydown = $4
|
||||
|
||||
diffx = xright - xleft
|
||||
diffy = yup - ydown
|
||||
|
||||
hdiff = diffy/3.5
|
||||
cy = yup - (diffy/10)
|
||||
cx = (diffx/20) + xleft
|
||||
|
||||
lstartx = cx
|
||||
lendx = cx + diffx/8
|
||||
tstartx = lendx + diffx/20
|
||||
|
||||
.ps -2
|
||||
cy = cy - hdiff
|
||||
legend_line(cy,lstartx,lendx,tstartx,orange,"Basic LRU")
|
||||
cy = cy - hdiff
|
||||
legend_line(cy,lstartx,lendx,tstartx,green,"Efficient LRU")
|
||||
.ps +2
|
||||
}
|
||||
|
||||
# WARNING: this macro uses "cx" (current x), y_scale and "ox" (old x).
|
||||
define line_no_mustache {
|
||||
# $1 = cbram
|
||||
# $2 = obram
|
||||
# $3 = column
|
||||
# $4 = color
|
||||
|
||||
$1 = $3/y_scale
|
||||
.gcolor $4
|
||||
if ($2 > 0) then {line from cx,$1 to ox,$2}
|
||||
bullet at cx,$1
|
||||
.gcolor
|
||||
$2 = $1
|
||||
}
|
||||
|
||||
# WARNING: this macro uses "cx" (current x), y_scale and "ox" (old x).
|
||||
define line_with_mustache {
|
||||
# $1 = cbram
|
||||
# $2 = obram
|
||||
# $3 = column
|
||||
# $4 = color
|
||||
# $5 = column mustache 1
|
||||
# $6 = column mustache 2
|
||||
|
||||
line_no_mustache($1,$2,$3,$4)
|
||||
line from cx,$5/y_scale to cx,$6/y_scale
|
||||
}
|
||||
|
||||
# WARNING: this macro y_scale.
|
||||
define linear_growth {
|
||||
# $1 = color
|
||||
# $2 = duration of the retrieval for a single value
|
||||
# $3 = min number of retrievals
|
||||
# $4 = max number of retrievals
|
||||
.gcolor $1
|
||||
line dashed from $3,($2*$3)/y_scale to $4,($2*$4)/y_scale
|
||||
.gcolor
|
||||
}
|
||||
632
macros.roff
Normal file
632
macros.roff
Normal file
|
|
@ -0,0 +1,632 @@
|
|||
.\" .RP = report document
|
||||
.nr PO 0.5i \" page offset default 1i
|
||||
.nr LL 7.0i \" line length default 6i
|
||||
.nr FM 0.3i \" page foot margin default 1i
|
||||
.nr DI 0
|
||||
.nr FF 3 \" footnotes' type: numbered, with point, indented
|
||||
.nr PS 12
|
||||
.
|
||||
.nr LIST_NUMBER 0 +1
|
||||
.
|
||||
.R1
|
||||
no-label-in-reference
|
||||
accumulate
|
||||
.R2
|
||||
.
|
||||
. \" COLORS
|
||||
.defcolor darkgreen rgb 0.1 0.5 0.2
|
||||
.defcolor darkblue rgb 0.3 0.3 0.7
|
||||
.defcolor darkred rgb 0.7 0.3 0.3
|
||||
.defcolor black rgb 0 0 0
|
||||
.defcolor color_box rgb 1 1 .6
|
||||
.
|
||||
. \" with semantic
|
||||
.defcolor citation rgb 0.4 0.4 0.4
|
||||
.defcolor citationbar rgb 0.3 0.3 0.7
|
||||
.defcolor explanation rgb 0.7 0.4 0.4
|
||||
.defcolor explanationbar rgb 0.8 0.3 0.3
|
||||
.
|
||||
.defcolor specialcolor_command rgb 0.7 0.3 0.3
|
||||
.defcolor specialcolor_type rgb 0.6 0.3 0.5
|
||||
.defcolor specialcolor_constructor rgb 0.1 0.5 0.2
|
||||
.defcolor specialcolor_module rgb 0.1 0.5 0.2
|
||||
.defcolor specialcolor_function rgb 0.4 0.4 0.7
|
||||
.defcolor specialcolor_question rgb 0.0 0.0 0.7
|
||||
.defcolor specialcolor_operator rgb 0.3 0.8 0.3
|
||||
.defcolor specialcolor_shine rgb 0.3 0.3 0.7
|
||||
.
|
||||
. \" SIZES
|
||||
.nr specialsize_command 10
|
||||
.nr specialsize_type 8
|
||||
.nr specialsize_constructor 8
|
||||
.nr specialsize_module 8
|
||||
.nr specialsize_function 8
|
||||
.nr specialsize_operator 9
|
||||
.nr specialsize_question 10 \" Current point size, no change.
|
||||
.nr specialsize_shine 11
|
||||
.
|
||||
. \" FONTS
|
||||
.ds specialfont_command CW
|
||||
.ds specialfont_type CW
|
||||
.ds specialfont_constructor CW
|
||||
.ds specialfont_module CW
|
||||
.ds specialfont_function CW
|
||||
.ds specialfont_operator CW
|
||||
.ds specialfont_question I
|
||||
.ds specialfont_shine B
|
||||
.
|
||||
.
|
||||
.de BELLOWEXPLANATION1
|
||||
.sp 0.5
|
||||
.ps 7 \" point size (~= font size)
|
||||
.vs 8p \" vertical spacing between lines
|
||||
..
|
||||
.de BELLOWEXPLANATION2
|
||||
.br
|
||||
.ps 9
|
||||
.vs 11p
|
||||
..
|
||||
.
|
||||
.\" BULLET and ENUM => do not add space when no parameter are provided
|
||||
.de STARTBULLET \" Bullet points
|
||||
.in +1
|
||||
..
|
||||
.de BULLET \" Bullet points
|
||||
.in -1
|
||||
\(bu
|
||||
.in +1
|
||||
.sp -1
|
||||
.ie '\\$1'' \
|
||||
.
|
||||
.el \\$*
|
||||
..
|
||||
.de ENDBULLET
|
||||
.in -1 \" indent
|
||||
..
|
||||
.
|
||||
.de ENUM \" Numbered list
|
||||
.nr LIST_NUMBER +1
|
||||
.IP \\n[LIST_NUMBER]. 3
|
||||
.sp -1
|
||||
.ie '\\$1'' \
|
||||
.
|
||||
.el \\$*
|
||||
..
|
||||
.de ENDENUM
|
||||
.nr LIST_NUMBER 0
|
||||
.in -2 \" indent
|
||||
..
|
||||
.
|
||||
.de b1 \" Begin code box
|
||||
.B1
|
||||
.sp 0.2
|
||||
.ft CW
|
||||
..
|
||||
.de b2 \" End code box
|
||||
.sp 0.5
|
||||
.B2
|
||||
.ft
|
||||
..
|
||||
.
|
||||
.de CITATION1
|
||||
.KS \" start a keep
|
||||
.ft I \" citation in italics
|
||||
.mk C \" set a marker for line drawing
|
||||
.in +1 \" indent a bit
|
||||
.gcolor citation
|
||||
..
|
||||
.ig
|
||||
The CITATION2 macro closes the quote then draws a line
|
||||
from current line to the start of the quote.
|
||||
..
|
||||
.de CITATION2
|
||||
.mk D \" set second marker to come back here
|
||||
.ft \" back to previous font
|
||||
.in -1 \" remove indent
|
||||
.gcolor \" remove previous color
|
||||
.gcolor citationbar
|
||||
.\" r = move upward
|
||||
.\" Z D t = drawing thickness
|
||||
.\" L = draw the line
|
||||
\r\
|
||||
\Z'\D't 1p''\
|
||||
\L'|\\nCu' \" draw line
|
||||
.gcolor black \" remove previous color
|
||||
.sp -2 \" get two lines back
|
||||
\Z'\D't 1'' \" get the previous drawing thickness back
|
||||
.KE \" end of the keep
|
||||
..
|
||||
.
|
||||
.de NAMECITATION
|
||||
.QP
|
||||
.vs -\\n[legendps]p
|
||||
.ps -\\n[legendps]
|
||||
.in -1.2
|
||||
.ll +1.2
|
||||
\h'|-2'\(em\h'|-0.4'
|
||||
\\$*
|
||||
.br
|
||||
.LP
|
||||
..
|
||||
.
|
||||
.de EXPLANATION1
|
||||
.KS \" start a keep
|
||||
.ft B \" citation in italics
|
||||
.mk C \" set a marker for line drawing
|
||||
.in +1 \" indent a bit
|
||||
.gcolor explanation
|
||||
..
|
||||
.de EXPLANATION2
|
||||
.ft \" back to previous font
|
||||
.in -1 \" remove indent
|
||||
.gcolor \" remove previous color
|
||||
.gcolor explanationbar
|
||||
\r\L'|\\nCu' \" draw line (\r moves upward, \L draw the line, ...)
|
||||
.gcolor \" remove previous color
|
||||
.sp -1 \" get two lines back
|
||||
.KE \" end of the keep
|
||||
..
|
||||
.
|
||||
.de METAINFO1
|
||||
.ft CW \" constant width font
|
||||
.ps 8 \" small font
|
||||
.vs 9p \" smaller vertical spacing between lines
|
||||
..
|
||||
.de METAINFO2
|
||||
.sp 1
|
||||
.vs \" come back to the previous vertical spacing
|
||||
.ps \" come back to the previous point size
|
||||
.ft \" come back to the previous font
|
||||
.sp -1 \" return one line above
|
||||
..
|
||||
.
|
||||
.
|
||||
.de FRAC
|
||||
.ie '\\$3'' \{\
|
||||
\v'-.7m\s[\\n(.s*6u/10u]+.7m'\\$1\v'-.7m\s0+.7m'\
|
||||
\(f/\s[\\n(.s*6u/10u]\\$2\s0
|
||||
\}
|
||||
.el \{\
|
||||
\v'-.7m\s[\\n(.s*6u/10u]+.7m'\\$1\v'-.7m\s0+.7m'\
|
||||
\(f/\s[\\n(.s*6u/10u]\\$2\s0\\$3
|
||||
\}
|
||||
..
|
||||
.de FOOTNOTE_TO_COLUMN_WIDTH
|
||||
.nr pg@fn-colw \\n[pg@colw] \" footnotes' column width
|
||||
..
|
||||
.de SINGLE_COLUMN
|
||||
.1C
|
||||
.\" .FOOTNOTE_TO_COLUMN_WIDTH
|
||||
.nr FL (\n[LL]*97/100)
|
||||
..
|
||||
.de TWO_COLUMNS
|
||||
.2C
|
||||
.FOOTNOTE_TO_COLUMN_WIDTH
|
||||
..
|
||||
.de HORIZONTALLINE
|
||||
\l'15'
|
||||
.FOOTNOTE_TO_COLUMN_WIDTH
|
||||
..
|
||||
.
|
||||
. \" Fonts and colors.
|
||||
.
|
||||
.de SPECIAL_WORDS
|
||||
.ie !'\\$3'' \\$3\c
|
||||
.nr current_size \\n[.s] \" Current point size.
|
||||
.gcolor specialcolor_\\*[semantictoken]
|
||||
.
|
||||
.if !((\\n[current_size] == \\n[specialsize_\\*[semantictoken]]) \
|
||||
.ps \\n[specialsize_\\*[semantictoken]]
|
||||
.
|
||||
.ie '\\$2'' \{\
|
||||
\f[\\*[specialfont_\\*[semantictoken]]]\\$1\f[]
|
||||
. ps \\n[current_size]
|
||||
. gcolor black \" FIXME: should be the previous color
|
||||
\}
|
||||
.el \{\
|
||||
\f[\\*[specialfont_\\*[semantictoken]]]\\$1\f[]\c
|
||||
. ps \\n[current_size]
|
||||
. gcolor black \" FIXME: should be the previous color
|
||||
\\$2
|
||||
\}
|
||||
..
|
||||
.de SMALLFONT
|
||||
.ps 8
|
||||
.vs 9p
|
||||
..
|
||||
.de NORMALFONT
|
||||
.vs
|
||||
.ps
|
||||
..
|
||||
.de COMMAND1
|
||||
.b1
|
||||
..
|
||||
.de COMMAND2
|
||||
.b2
|
||||
..
|
||||
.de COMMANDNAME
|
||||
.ds semantictoken command
|
||||
.SPECIAL_WORDS \\$@
|
||||
..
|
||||
.de FUNCTION
|
||||
.ds semantictoken function
|
||||
.SPECIAL_WORDS \\$@
|
||||
..
|
||||
.de TYPE
|
||||
.ds semantictoken type
|
||||
.SPECIAL_WORDS \\$@
|
||||
..
|
||||
.de TYPECLASS
|
||||
.I "\\$1" "\\$2"
|
||||
..
|
||||
.de OPERATOR
|
||||
.ds semantictoken operator
|
||||
.SPECIAL_WORDS \\$@
|
||||
..
|
||||
.de QUESTION
|
||||
.ds semantictoken question
|
||||
.SPECIAL_WORDS \\$@
|
||||
\h'5p'
|
||||
..
|
||||
.de CONSTRUCTOR
|
||||
.ds semantictoken constructor
|
||||
.SPECIAL_WORDS \\$@
|
||||
..
|
||||
.de MODULE
|
||||
.ds semantictoken module
|
||||
.SPECIAL_WORDS \\$@
|
||||
..
|
||||
.de SHINE
|
||||
.ds semantictoken shine
|
||||
.SPECIAL_WORDS \\$@
|
||||
..
|
||||
.de MODULEX
|
||||
.MODULE \\$1 ,
|
||||
..
|
||||
.de TBD
|
||||
.ft B
|
||||
To be defined or to finish.
|
||||
.ft R
|
||||
..
|
||||
.de ARROW
|
||||
.br
|
||||
\(->\h'5p' \\$*
|
||||
..
|
||||
.af dy 00
|
||||
.af mo 00
|
||||
.ds CURRENT_DATE \\n(dy/\\n(mo/\\n[year]
|
||||
.ds WEBSITE https://t.karchnu.fr/doc
|
||||
.ds EMAIL karchnu@karchnu.fr
|
||||
.de INFORMATIONS
|
||||
Check out for newer versions:
|
||||
.ft CW
|
||||
.ps 8
|
||||
\h'2p' \\$1
|
||||
.ps
|
||||
.ft
|
||||
.br
|
||||
And if you have questions:
|
||||
.ft CW
|
||||
\h'13p' \\$2
|
||||
.ft
|
||||
.\" .DE
|
||||
|
||||
.LP
|
||||
Lastly compiled the
|
||||
.SHINE \*[CURRENT_DATE]
|
||||
(day/month/year, you know, like in any sane civilization).
|
||||
..
|
||||
.de INFORMATIONS_FR
|
||||
.LP
|
||||
Nouvelles versions :
|
||||
.ft CW
|
||||
.ps 8
|
||||
\h'2p' \\$1
|
||||
.ps
|
||||
.ft
|
||||
.br
|
||||
Questions :
|
||||
.ft CW
|
||||
\h'36p' \\$2
|
||||
.ft
|
||||
.\" .DE
|
||||
|
||||
.LP
|
||||
Compilé pour la dernière fois le
|
||||
.SHINE \*[CURRENT_DATE]
|
||||
..
|
||||
.
|
||||
.\" RENAMING REQUESTS
|
||||
.
|
||||
.de SECTION
|
||||
.NH
|
||||
.ps +3
|
||||
.fam H \" helvetica family
|
||||
\\$*
|
||||
.fam \" back to previous font family
|
||||
.ps
|
||||
.PARAGRAPH_INDENTED
|
||||
..
|
||||
.de SUBSECTION
|
||||
.NH 2
|
||||
.ps +1
|
||||
.fam H \" helvetica family
|
||||
\\$*
|
||||
.fam \" back to previous font family
|
||||
.ps
|
||||
.PARAGRAPH_INDENTED
|
||||
..
|
||||
.de SUBSUBSECTION
|
||||
.NH 3
|
||||
.fam H \" helvetica family
|
||||
\\$*
|
||||
.fam \" back to previous font family
|
||||
.ps
|
||||
.PARAGRAPH_INDENTED
|
||||
..
|
||||
.de SUBSUBSUBSECTION
|
||||
.NH 4
|
||||
.fam H \" helvetica family
|
||||
\\$*
|
||||
.fam \" back to previous font family
|
||||
.PARAGRAPH_INDENTED
|
||||
..
|
||||
.de SECTION_NO_NUMBER
|
||||
.SH
|
||||
.fam H \" helvetica family
|
||||
\\$*
|
||||
.fam \" back to previous font family
|
||||
.PARAGRAPH_INDENTED
|
||||
..
|
||||
.de SUBSECTION_NO_NUMBER
|
||||
.SH 2
|
||||
.fam H \" helvetica family
|
||||
\\$*
|
||||
.fam \" back to previous font family
|
||||
.PARAGRAPH_INDENTED
|
||||
..
|
||||
.de PARAGRAPH_INDENTED
|
||||
.PP
|
||||
..
|
||||
.de PARAGRAPH_UNINDENTED
|
||||
.LP
|
||||
..
|
||||
.de NO_ABSTRACT
|
||||
.AB no
|
||||
..
|
||||
.de ABSTRACT1
|
||||
.AB
|
||||
..
|
||||
.de ABSTRACT2
|
||||
.AE
|
||||
..
|
||||
.ds LH Page %
|
||||
.ds CH
|
||||
.de TITLE
|
||||
.TL
|
||||
\\$*
|
||||
.\".ds LH \\$*
|
||||
.de HD .XX
|
||||
.sp -2.3
|
||||
.nr LINEWIDTH (\n[LL]/1.0i)
|
||||
\l'\\\\n[LINEWIDTH]i'
|
||||
.sp +1.5
|
||||
.br
|
||||
..XX
|
||||
..
|
||||
.de AUTHOR
|
||||
. AU
|
||||
. ie !'\\$1'' \\$*
|
||||
..
|
||||
.de FOOTNOTE1
|
||||
. FS
|
||||
..
|
||||
.de FOOTNOTE2
|
||||
. FE
|
||||
..
|
||||
.de VOCABULARY1
|
||||
. KS
|
||||
. BULLET
|
||||
. UL "\\$*" :
|
||||
..
|
||||
.de VOCABULARY2
|
||||
. KE
|
||||
..
|
||||
.
|
||||
.
|
||||
.de HIGHLIGHT
|
||||
.
|
||||
. nr @wd \w'\\$1'
|
||||
. nr x1 0
|
||||
. nr y1 (\\n[rst]u - \\n[rsb]u + .4m)
|
||||
. nr x2 (\\n[@wd]u + .4m)
|
||||
. nr y2 0
|
||||
. nr x3 0
|
||||
. nr y3 (\\n[rst]u - \\n[rsb]u + .4m)
|
||||
. nr x4 (\\n[@wd]u + .4m)
|
||||
. nr y4 0
|
||||
.
|
||||
\h'.2m'\
|
||||
\h'-.2m'\v'(.2m - \\n[rsb]u)'\
|
||||
\M[color_box]\
|
||||
\D'P \\n[x1] -\\n[y1]u \\n[x2]u \\n[y2]u \\n[x3]u \\n[y3]u -\\n[x4]u \\n[y4]u '\
|
||||
\h'.2m'\v'-(.2m - \\n[rsb]u)'\
|
||||
\M[]\
|
||||
\\$1\
|
||||
\h'.2m'
|
||||
..
|
||||
.
|
||||
.
|
||||
.
|
||||
.ds SPACE_SS_NUMBER_TITLE 0.5\" not a number register because of leading 0
|
||||
.nr CURRENT_SECTION 0 +1
|
||||
.nr CURRENT_APPENDIX 0
|
||||
.af CURRENT_APPENDIX I
|
||||
.nr CURRENT_SUBSECTION 0 +1
|
||||
.nr CURRENT_SSSECTION 0 +1
|
||||
.rm SECTION
|
||||
.de SECTION
|
||||
. nr CURRENT_SUBSECTION 0 \" reset current subsection numbering
|
||||
. nr CURRENT_SSSECTION 0 \" reset current subsubsection numbering
|
||||
. ie !(\\n[CURRENT_SECTION]=0) .sp +1
|
||||
. br
|
||||
. ie (\\n[APPENDIX_TIME]=0) \
|
||||
. ds RH \\n+[CURRENT_SECTION].\h'\\*[SPACE_SS_NUMBER_TITLE]' \\$*
|
||||
. el \{
|
||||
. ds RH \\n[CURRENT_APPENDIX].\h'\\*[SPACE_SS_NUMBER_TITLE]' \\$*
|
||||
. bp \}
|
||||
. ps +2
|
||||
. fam H \" helvetica family
|
||||
. ft B
|
||||
. ne 4 \" should be at least a few lines left at the bottom of the page
|
||||
\\*[RH]
|
||||
. ft
|
||||
. fam \" back to previous font family
|
||||
. ps -2
|
||||
. PARAGRAPH_INDENTED
|
||||
..
|
||||
.nr APPENDIX_TIME 0
|
||||
.de APPENDIX
|
||||
. nr CURRENT_APPENDIX +1
|
||||
. nr APPENDIX_TIME 1
|
||||
. SECTION \\$*
|
||||
..
|
||||
.de SS
|
||||
. nr CURRENT_SSSECTION 0
|
||||
. ie (\\n[APPENDIX_TIME]=0) \
|
||||
. SUBSECTION_NO_NUMBER \\n[CURRENT_SECTION].\
|
||||
\\n+[CURRENT_SUBSECTION]\h'\\*[SPACE_SS_NUMBER_TITLE]' \\$*
|
||||
.el \
|
||||
. SUBSECTION_NO_NUMBER \\n[CURRENT_APPENDIX].\
|
||||
\\n+[CURRENT_SUBSECTION]\h'\\*[SPACE_SS_NUMBER_TITLE]' \\$*
|
||||
..
|
||||
.de SSS
|
||||
. br
|
||||
. ps -2
|
||||
. fam H \" helvetica family
|
||||
. ft B
|
||||
. ie (\\n[APPENDIX_TIME]=0) \
|
||||
. SUBSECTION_NO_NUMBER \\n[CURRENT_SECTION].\
|
||||
\\n[CURRENT_SUBSECTION].\\n+[CURRENT_SSSECTION]\h'\
|
||||
\\*[SPACE_SS_NUMBER_TITLE]' \\$*
|
||||
. el \
|
||||
\\n[CURRENT_APPENDIX].\
|
||||
\\n[CURRENT_SUBSECTION].\\n+[CURRENT_SSSECTION]\h'\
|
||||
\\*[SPACE_SS_NUMBER_TITLE]' \\$*
|
||||
. ft
|
||||
. fam \" back to previous font family
|
||||
. ps +2
|
||||
. PARAGRAPH_INDENTED
|
||||
..
|
||||
.de INNERBULLET
|
||||
. in +1
|
||||
. br
|
||||
\(bu
|
||||
. in +1
|
||||
. sp -1
|
||||
\\$*
|
||||
. in -2
|
||||
..
|
||||
.de EENUM \" Numbered list
|
||||
. nr ENUM_INDENTATION 2
|
||||
. ie !(\\n[LIST_NUMBER]=0) .in -\\n[ENUM_INDENTATION]
|
||||
. br
|
||||
\\n+[LIST_NUMBER].
|
||||
. in +\\n[ENUM_INDENTATION]
|
||||
. sp -1
|
||||
\\$*
|
||||
..
|
||||
.de EENDENUM
|
||||
. nr LIST_NUMBER 0
|
||||
. in -\\n[ENUM_INDENTATION]
|
||||
..
|
||||
.nr legendps 2
|
||||
.de LEGEND1
|
||||
. QP
|
||||
. vs -\\n[legendps]p
|
||||
. ps -\\n[legendps]
|
||||
. in -1.2
|
||||
. ll +1.2
|
||||
. br
|
||||
..
|
||||
.de LEGEND2
|
||||
. br
|
||||
. vs +\\n[legendps]p
|
||||
. ps +\\n[legendps]
|
||||
. br
|
||||
. LP
|
||||
..
|
||||
.de IEME
|
||||
\\$1\u\s-4\\$2\s+4\d
|
||||
..
|
||||
.de CENTERED
|
||||
. ce
|
||||
\\$*
|
||||
. br
|
||||
..
|
||||
.de GIVEEXAMPLE1
|
||||
. in +1
|
||||
. ll -1
|
||||
. KS \" start a keep
|
||||
. \" .ft I \" citation in italics
|
||||
. mk C \" set a marker for line drawing
|
||||
. in +1 \" indent a bit
|
||||
. gcolor citation
|
||||
..
|
||||
.de GIVEEXAMPLE2
|
||||
. mk D \" set second marker to come back here
|
||||
. \" .ft \" back to previous font
|
||||
. in -1 \" remove indent
|
||||
. gcolor black\" remove previous color
|
||||
. gcolor citationbar
|
||||
. \" r = move upward
|
||||
. \" Z D t = drawing thickness
|
||||
. \" L = draw the line
|
||||
\r\
|
||||
\Z'\D't 1p''\
|
||||
\L'|\\nCu' \" draw line
|
||||
. gcolor black \" remove previous color
|
||||
. sp -2 \" get two lines back
|
||||
\Z'\D't 0.5p'' \" get the previous drawing thickness back
|
||||
. KE \" end of the keep
|
||||
. ll +1
|
||||
. in -1
|
||||
..
|
||||
.de ST
|
||||
.nr ww \w'\\$1'
|
||||
\Z@\v'-.25m'\l'\\n[ww]u'@\\$1
|
||||
..
|
||||
.de INCREMENT
|
||||
.br
|
||||
.in \\*[PINCREMENT]
|
||||
.br
|
||||
\h'-\\*[DECALAGE]'\\*[CHARACTER]\h'|0'\\$*
|
||||
..
|
||||
.de D
|
||||
.ds DECALAGE 1.0
|
||||
.ds PINCREMENT 2
|
||||
.ds CHARACTER \(bu
|
||||
.INCREMENT \\$*
|
||||
..
|
||||
.de DD
|
||||
.ds DECALAGE 1.0
|
||||
.ds PINCREMENT 3
|
||||
.ds CHARACTER \(bu
|
||||
.INCREMENT \\$*
|
||||
..
|
||||
.de AA
|
||||
.ds DECALAGE 1.5
|
||||
.ds PINCREMENT 3
|
||||
.ds CHARACTER \(->
|
||||
.INCREMENT \\$*
|
||||
..
|
||||
.de AAA
|
||||
.ds DECALAGE 1.5
|
||||
.ds PINCREMENT 4
|
||||
.ds CHARACTER \(->
|
||||
.INCREMENT \\$*
|
||||
..
|
||||
.de ED
|
||||
.br
|
||||
.in 0
|
||||
..
|
||||
42
paper.ms
Normal file
42
paper.ms
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
.ds VERSION 0.5.1
|
||||
.ds NB_USERS_NETLIBRE 10700
|
||||
.so macros.roff
|
||||
.de dq
|
||||
\[lq]\\$1\[rq]\c
|
||||
.shift
|
||||
\&\\$1
|
||||
..
|
||||
.
|
||||
.de COMMAND
|
||||
.I "\\$*"
|
||||
..
|
||||
.de DIRECTORY
|
||||
.ps -3
|
||||
\f[CW]\\$*\f[]
|
||||
.ps +3
|
||||
..
|
||||
.
|
||||
.
|
||||
. \" The document starts here.
|
||||
.
|
||||
.TITLE Netlibre in Graphs
|
||||
.AUTHOR Philippe PITTOLI
|
||||
.ABSTRACT1
|
||||
Just some graphs about netlibre.
|
||||
.ABSTRACT2
|
||||
.SINGLE_COLUMN
|
||||
.br
|
||||
.po +11.5c
|
||||
.br
|
||||
.po
|
||||
.SECTION Before the Great Purge, how many domains per user?
|
||||
.ps -2
|
||||
.so graphs/nb-domains-per-user.grap
|
||||
.ps \n[PS]
|
||||
.QP
|
||||
These graphs show that the vast majority of users have between a single domain (almost 6000 users) and about 10 domains.
|
||||
There is a total of 23,711 users on netlibre, 21,872 of them have between 0 to 10 domains, which represents 92 % of the users.
|
||||
The distribution after that is mostly flat.
|
||||
.so graphs/cumulative-domains-per-user.grap
|
||||
The graphs showing the cumulative number of users is very explicit on the fact that almost everyone has a very low number of domains (less than 10) and only 1,5 % of users have 50 or more domains.
|
||||
.QE
|
||||
69
troffrc
Normal file
69
troffrc
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
.\" Startup file for troff.
|
||||
.
|
||||
.\" This is tested by pic.
|
||||
.nr 0p 0
|
||||
.
|
||||
.\" Load composite mappings.
|
||||
.do mso composite.tmac
|
||||
.
|
||||
.\" Load generic fallback mappings.
|
||||
.do mso fallbacks.tmac
|
||||
.
|
||||
.\" Use .do here, so that it works with -C.
|
||||
.\" The groff command defines the .X string if the -X option was given.
|
||||
.ie r.X .do ds troffrc!ps Xps.tmac
|
||||
.el .do ds troffrc!ps ps.tmac
|
||||
.do ds troffrc!pdf pdf.tmac
|
||||
.do ds troffrc!dvi dvi.tmac
|
||||
.do ds troffrc!X75 X.tmac
|
||||
.do ds troffrc!X75-12 X.tmac
|
||||
.do ds troffrc!X100 X.tmac
|
||||
.do ds troffrc!X100-12 X.tmac
|
||||
.do ds troffrc!ascii tty.tmac
|
||||
.do ds troffrc!latin1 tty.tmac
|
||||
.do ds troffrc!utf8 tty.tmac
|
||||
.do ds troffrc!cp1047 tty.tmac
|
||||
.do ds troffrc!lj4 lj4.tmac
|
||||
.do ds troffrc!lbp lbp.tmac
|
||||
.do ds troffrc!html html.tmac
|
||||
.do if d troffrc!\*[.T] \
|
||||
. do mso \*[troffrc!\*[.T]]
|
||||
.do rm troffrc!ps troffrc!Xps troffrc!dvi troffrc!X75 troffrc!X75-12 \
|
||||
troffrc!X100 troffrc!X100-12 troffrc!lj4 troff!lbp troffrc!html troffrc!pdf
|
||||
.
|
||||
.\" Test whether we work under EBCDIC and map the no-breakable space
|
||||
.\" character accordingly.
|
||||
.do ie '\[char97]'a' \
|
||||
. do tr \[char160]\~
|
||||
.el \
|
||||
. do tr \[char65]\~
|
||||
.
|
||||
.\" Set the hyphenation language to 'us'.
|
||||
.do hla us
|
||||
.
|
||||
.\" Disable hyphenation:
|
||||
.\" Do not load hyphenation patterns and exceptions.
|
||||
.\"do hpf hyphen.us
|
||||
.\"do hpfa hyphenex.us
|
||||
.
|
||||
.\" Disable adjustment by default,
|
||||
.\" such that manuals look similar with groff and mandoc(1).
|
||||
.\".ad l
|
||||
.\".de ad
|
||||
.\"..
|
||||
.\" Handle paper formats.
|
||||
.do mso papersize.tmac
|
||||
.
|
||||
.\" Handle PS images.
|
||||
.do mso pspic.tmac
|
||||
.do mso pdfpic.tmac
|
||||
.
|
||||
.\" ====================================================================
|
||||
.\" Editor settings
|
||||
.\" ====================================================================
|
||||
.
|
||||
.\" Local Variables:
|
||||
.\" mode: nroff
|
||||
.\" fill-column: 72
|
||||
.\" End:
|
||||
.\" vim: set filetype=groff textwidth=72:
|
||||
Loading…
Add table
Reference in a new issue