lilalo
diff l3-frontend @ 57:187b6636a3be
l3-agent:
Исправлен микробаг с uid
Раньше он не отправлялся в поток
l3-cgi:
При генерировании не CGI-версии
в таблице отсутствуют поля "инструктор" и "все"
На текущий момент они указывали в никуда,
поэтому я отключил их
l3-frontend:
Выводятся новые команды в начале каждого дня.
Команды сортируются по убыванию частоты использования.
l3scripts:
в письмо в одном месте е заменил на ё
Исправлен микробаг с uid
Раньше он не отправлялся в поток
l3-cgi:
При генерировании не CGI-версии
в таблице отсутствуют поля "инструктор" и "все"
На текущий момент они указывали в никуда,
поэтому я отключил их
l3-frontend:
Выводятся новые команды в начале каждого дня.
Команды сортируются по убыванию частоты использования.
l3scripts:
в письмо в одном месте е заменил на ё
author | devi |
---|---|
date | Wed Dec 28 18:44:42 2005 +0200 (2005-12-28) |
parents | 43aeb3036aaa |
children | 4d7e45bc659b |
line diff
1.1 --- a/l3-frontend Wed Dec 28 01:01:00 2005 +0200 1.2 +++ b/l3-frontend Wed Dec 28 18:44:42 2005 +0200 1.3 @@ -26,6 +26,7 @@ 1.4 my %mywi_cache_for; # Кэш для экономии обращений к mywi 1.5 1.6 sub make_comment; 1.7 +sub make_new_commands_table; 1.8 sub load_command_lines_from_xml; 1.9 sub load_sessions_from_xml; 1.10 sub sort_command_lines; 1.11 @@ -301,9 +302,10 @@ 1.12 $$cl->{"class"} = $$cl->{"err"} eq 130 ? "interrupted" 1.13 : $$cl->{"err"} eq 127 ? "mistyped" 1.14 : $$cl->{"err"} ? "wrong" 1.15 - : ""; 1.16 + : "normal"; 1.17 1.18 - if (!$$cl->{"euid"}) { 1.19 + if ($$cl->{"cline"} =~ /[^|`]\s*sudo/ 1.20 + || $$cl->{"uid"} eq 0) { 1.21 $$cl->{"class"}.="_root"; 1.22 } 1.23 1.24 @@ -389,6 +391,8 @@ 1.25 1.26 my $current_command=0; 1.27 1.28 + my @known_commands; 1.29 + 1.30 my %filter; 1.31 1.32 if ($Config{filter}) { 1.33 @@ -460,9 +464,9 @@ 1.34 $note = join ("\n", map ("<p>$_</p>", split (/-\n/, $note))); 1.35 $note =~ s@(http:[a-zA-Z.0-9/?\_%-]*)@<a href='$1'>$1</a>@g; 1.36 $note =~ s@(www\.[a-zA-Z.0-9/?\_%-]*)@<a href='$1'>$1</a>@g; 1.37 - $result .= "<tr><td colspan='6'>"; 1.38 - $result .= "<h4 id='note$note_number'>".$cl->{note_title}."</h4>" if $cl->{note_title}; 1.39 - $result .= "".$note."<p/><p/></td></td>"; 1.40 + $this_day_result .= "<tr><td colspan='6'>" 1.41 + . "<h4 id='note$note_number'>".$cl->{note_title}."</h4>" if $cl->{note_title} 1.42 + . "".$note."<p/><p/></td></tr>"; 1.43 1.44 if ($cl->{note_title}) { 1.45 push @{$toc[@toc]},"<a href='#note$note_number'>".$cl->{note_title}."</a>"; 1.46 @@ -508,11 +512,6 @@ 1.47 $hour = "0".$hour if $hour =~ /^.$/; 1.48 $sec = "0".$sec if $sec =~ /^.$/; 1.49 1.50 - #my @new_commands; 1.51 - #my @new_files; 1.52 - #@new_commands = split (/\s+/, $cl->{"new_commands"}) if defined $cl->{"new_commands"}; 1.53 - #@new_files = split (/\s+/, $cl->{"new_files"}) if defined $cl->{"new_files"}; 1.54 - 1.55 $class=$cl->{"class"}; 1.56 $Stat{ErrorCommands}++ if $class =~ /wrong/; 1.57 $Stat{MistypedCommands}++ if $class =~ /mistype/; 1.58 @@ -521,8 +520,25 @@ 1.59 # DAY CHANGE 1.60 if ( $last_day ne $day) { 1.61 if ($last_day) { 1.62 + 1.63 +# Вычисляем разность множеств. 1.64 +# Что-то вроде этого, если бы так можно было писать: 1.65 +# @new_commands = keys %CommandsFDistribution - @known_commands; 1.66 + 1.67 + 1.68 $result .= "<h3 id='day$last_day'>".$Day_Name[$last_wday]."</h3>"; 1.69 - #$result .= "Новые команды<br/>"; 1.70 + 1.71 + my $new_commands_section = make_new_commands_table(\@known_commands); 1.72 + @known_commands = keys %CommandsFDistribution; 1.73 + 1.74 + if ($new_commands_section) { 1.75 + $result .= "<h5>Новые команды</h5>" 1.76 + . "<table class='new_commands_table'>" 1.77 + . "<tr class='new_commands_header'><td>Команда</td><td>Описание</td></tr>" 1.78 + . $new_commands_section 1.79 + . "</table>" 1.80 + } 1.81 + 1.82 $result .= "<table width='100%'>\n"; 1.83 $result .= $this_day_result; 1.84 $result .= "</table>"; 1.85 @@ -614,17 +630,53 @@ 1.86 $this_day_result .= "</td>\n"; 1.87 $this_day_result .= "</tr>\n"; 1.88 } 1.89 + last: { 1.90 + my $new_commands_section = make_new_commands_table(\@known_commands); 1.91 + @known_commands = keys %CommandsFDistribution; 1.92 1.93 - $result .= "<h3 id='day$last_day'>".$Day_Name[$last_wday]."</h3>"; 1.94 - $result .= "<table width='100%'>\n"; 1.95 - $result .= $this_day_result; 1.96 - $result .= "</table>"; 1.97 + $result .= "<h3 id='day$last_day'>".$Day_Name[$last_wday]."</h3>"; 1.98 + if ($new_commands_section) { 1.99 + $result .= "<h5>Новые команды</h5>" 1.100 + . "<table class='new_commands_table'>" 1.101 + . "<tr class='new_commands_header'><td>Команда</td><td>Описание</td></tr>" 1.102 + . $new_commands_section 1.103 + . "</table>" 1.104 + } 1.105 + 1.106 + $result .= "<table width='100%'>\n"; 1.107 + $result .= $this_day_result; 1.108 + $result .= "</table>"; 1.109 + } 1.110 1.111 return ($result, collapse_list (\@toc)); 1.112 1.113 } 1.114 1.115 +sub make_new_commands_table 1.116 +{ 1.117 + my @known_commands = @{$_[0]}; 1.118 1.119 + my %count; 1.120 + my @new_commands = (); 1.121 + for my $c (keys %CommandsFDistribution, @known_commands) { 1.122 + $count{$c}++ 1.123 + } 1.124 + for my $c (keys %CommandsFDistribution) { 1.125 + push @new_commands, $c if $count{$c} != 2; 1.126 + } 1.127 + 1.128 + 1.129 + my $new_commands_section; 1.130 + if (@new_commands){ 1.131 + my $hint; 1.132 + for my $c (reverse sort { $CommandsFDistribution{$a} <=> $CommandsFDistribution{$b} } @new_commands) { 1.133 + $hint = make_comment($c); 1.134 + my ($command, $hint) = $hint =~ m/(.*?) \s*- \s*(.*)/; 1.135 + $new_commands_section .= "<tr><td>$command</td><td>$hint</td></tr>" if $hint; 1.136 + } 1.137 + } 1.138 + return $new_commands_section; 1.139 +} 1.140 1.141 1.142 ############# 1.143 @@ -796,7 +848,7 @@ 1.144 LastCommand => "Время последней команды журнала", 1.145 TotalCommands => "Количество командных строк в журнале", 1.146 ErrorsPercentage => "Процент команд с ненулевым кодом завершения, %", 1.147 - MistypesPercentage => "Процент синтаксически неверное набранных команд, %", 1.148 + MistypesPercentage => "Процент синтаксически неверно набранных команд, %", 1.149 TotalTime => "Суммарное время работы с терминалом <sup><font size='-2'>*</font></sup>, час", 1.150 CommandsPerTime => "Количество командных строк в единицу времени, команда/мин", 1.151 CommandsFrequency => "Частота использования команд", 1.152 @@ -914,6 +966,21 @@ 1.153 должна быть указана программа script. 1.154 </p></li> 1.155 <li><p> 1.156 + Команды, при наборе которых были допущены синтаксические ошибки, 1.157 + выводятся перечёркнутым текстом: 1.158 +<table> 1.159 +<tr class='command'> 1.160 +<td class='script'> 1.161 +<pre class='mistyped_cline'> 1.162 +\$ l s-l</pre> 1.163 +<pre class='mistyped_output'>bash: l: command not found 1.164 +</pre> 1.165 +</td> 1.166 +</tr> 1.167 +</table> 1.168 +<br/> 1.169 + </p></li> 1.170 + <li><p> 1.171 Если код завершения команды равен нулю, 1.172 команда была выполнена без ошибок. 1.173 Команды, код завершения которых отличен от нуля, выделяются цветом. 1.174 @@ -921,12 +988,14 @@ 1.175 <tr class='command'> 1.176 <td class='script'> 1.177 <pre class='wrong_cline'> 1.178 -\$ l s-l</pre> 1.179 -<pre class='wrong_output'>bash: l: command not found 1.180 +\$ test 5 -lt 4</pre> 1.181 </pre> 1.182 </td> 1.183 </tr> 1.184 </table> 1.185 + Обратите внимание на то, что код завершения команды может быть отличен от нуля 1.186 + не только в тех случаях, когда команда была выполнена с ошибкой. 1.187 + Многие команды используют код завершения, например, для того чтобы показать результаты проверки 1.188 <br/> 1.189 </p></li> 1.190 <li><p> 1.191 @@ -1003,6 +1072,22 @@ 1.192 Для того чтобы получить краткую справочную информацию о команде, 1.193 нужно подвести к ней мышь. Во всплывающей подсказке появится краткое 1.194 описание команды. 1.195 + </p> 1.196 + <p> 1.197 + Если справочная информация о команде есть, 1.198 + команда выделяется голубым фоном, например: <span class="with_hint" title="главный текстовый редактор Unix">vi</span>. 1.199 + Если справочная информация отсутствует, 1.200 + команда выделяется розовым фоном, например: <span class="without_hint">notepad.exe</span>. 1.201 + Справочная информация может отсутствовать в том случае, 1.202 + если (1) команда введена неверно; (2) если распознавание команды LiLaLo выполнено неверно; 1.203 + (3) если информация о команде неизвестна LiLaLo. 1.204 + Последнее возможно для редких команд. 1.205 + </p></li> 1.206 + <li><p> 1.207 + Большие, в особенности многострочные, всплывающие подсказки лучше 1.208 + всего показываются браузерами KDE Konqueror, Apple Safari и Microsoft Internet Explorer. 1.209 + В браузерах Mozilla и Firefox они отображаются не полностью, 1.210 + а вместо перевода строки выводится специальный символ. 1.211 </p></li> 1.212 <li><p> 1.213 Время ввода команды, показанное в журнале, соответствует времени