Some HAT...

= Анабар.ru
| Вход | Регистрация

Чтобы иметь возможность писать сообщения в форум

Нужно либо осуществить вход (для зарегистрированных пользователей), либо зарегистрироваться и войти. Для этих действий в верхнем правом углу каждой станицы (непосредственно после зеленоватой линии) существуют две ссылки: Вход и Регистрация.

Правила оформления сообщения

Существуют всего два простых, хотя и не очевидных правила оформления сообщений:

  1. Абзацы друг от друга нужно отделять пустыми строками.

  2. Для того, чтобы сохранить всю разметку какой-то части сообщения, т.е. оставить на месте все пробелы, переносы, сохранить отступы и т.п., нужно заключить эту часть в конструкцию [code:langname] ....... [/code]. Как правило это требуется, если внутри вашего сообщения содежится исходный код на каком-нибудь языке программирования или языке разметки. Здесь langname — как раз и есть имя этого языка.

Чуть подробнее об использовании [code:langname]

Какие языки поддерживатся? Т.е., какие значения может принимать langname? Точное число вариантов мне назвать затруднительно, но большинство языков программирования и разметки поддеживается, включая самые неожиданные (часть из которых настолько сумеречна, что, вероятно, никому из читателей никогда не доведётся видеть кода на этих языках). Вот некоторые из известных: python, tex, cpp, html, javascript, c, perl и многие другие. Полный список подготовлю позже.

Хотя указание :langname не обязательно, но это поможет «движку» форума сделать подсветку синтаксиса в этой части сообщения строго согласно грамматике языка langname. Например, Вы хотите процитировать некоторый код на языке Python, тогда Вам нужно написать следующее

[code:python]
import sys, traceback, os, time, re, types
from os.path import exists, isfile
from string import atol, atoi, split, lstrip
from cgi import *

def someSum(i_filename):
    '''Функция считает сумму...''' 
    summa, lines = 0, []
    fullname = "/var/tmp/" + i_filename  
    if exists(fullname) and isfile(fullname):
        try: 
            fp = open( "/var/tmp/" + i_filename, "rb")
            lines = fp.readlines(); fp.close()
        except: 
            pass
    else: return summa            
    
    for lin in lines:
        a = 0
        try: a = atoi(lin)
        except: pass
        summa += a
    return summa
[/code]
Вы получите такой результат на выходе:
 1  import sys, traceback, os, time, re, types
 2  from os.path import exists, isfile
 3  from string import atol, atoi, split, lstrip
 4  from cgi import *
 5  
 6  def someSum(i_filename):
 7      '''Функция считает сумму...''' 
 8      summa, lines = 0, []
 9      fullname = "/var/tmp/" + i_filename  
10      if exists(fullname) and isfile(fullname):
11          try: 
12              fp = open( "/var/tmp/" + i_filename, "rb")
13              lines = fp.readlines(); fp.close()
14          except: 
15              pass
16      else: return summa            
17      
18      for lin in lines:
19          a = 0
20          try: a = atoi(lin)
21          except: pass
22          summa += a
23      return summa

Т.е. получился вполне читабельный питоновский код. Строки в нём также автоматически пронумерованы. Мне кажется это полезным, особенно при цитировании, ведь очень просто можно указать строку.

В сообщении может быть несколько последовательных конструкций [code:langname] ....... [/code], перемежающихся с текстом; при этом языки langname могут быть различными. Вложенные конструкции [code:langname] ....... [/code] не распознаются, — на мой взгляд это совершенно не нужно.

Дополнительные свойства обработчика сообщений

Помимо вышеприведённых правил существует ещё несколько деталей, на которые стоит обратить внимание. Ниже приведена таблица в которой показано, какие ещё замены происходят. Это оценят те, кто привык различать три вида тире, а также предпочитает «кавычки-ёлочки» знакам "дюйма".

Что меняем На что меняем Примечание
Символы Комментарий Символ Комментарий
Табуляция 4 пробела происходит повсеместно
--- Три дефиса подряд длинное тире за исключением блоков [code]...[/code]
-- Два дефиса подряд короткое тире за исключением блоков [code]...[/code]
<< Два знака 'меньше' подряд « левая кавычка-ёлочка за исключением блоков [code]...[/code]
>> Два знака 'больше' подряд » правая кавычка-ёлочка за исключением блоков [code]...[/code]

Программисты пусть обратят внимание на первую строку: знак табуляции ВСЕГДА и неотвратимо заменяется на четыре пробела. Незнание сего обстоятельства может привести к неожиданным результатам.

Vasily Ivanov,
29 января 2004 г.,
Исправлено 22 мая 2006 г.