ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Forum gesperrt Dieses Thema ist gesperrt. Du kannst keine Beiträge editieren oder weitere Antworten erstellen.  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 01 Nov 2006, 14:09 
Offline
Böser Admin 2
Benutzeravatar

Registriert: 17 Mär 2004, 17:03
Beiträge: 2544
Wohnort: Berlin
Mama wie funktioniert das mit dem Code Highlighter?

Nun, Sohn, Syntax-Highlighting ist eine sehr schwierige Sache. Aber du kannst es lernen, wenn du jetzt gut aufpasst! Du musst folgende Regeln beachten:
  1. Niemals Code posten! Sonst hast du gleich Lizenzfragen, Patentjäger und Raubkopierer am Hals. Außerdem könnte jemand deinen Code nützlich finden, und ihn dir wegnehmen!
  2. Niemals code-Tags benutzen! Normschrift ist aus typografischer Sicht inakzeptabel, und weiße Kästen stören nur das Gesamtbild der Seite:

    p "Hlelo, Wolrd!' // Wiso klapt das nihct?

  3. Wenn es schon sein muss, dann auf gar keinen Fall die Sprache angeben. Sonst wird der Besucher mit überflüssigen style-Tags konfrontiert, die durch ihre Buntheit obendrein vom eigentlichen Text ablenken:

    1
    2
    3
    4
    5
    6
    <% if session[:user] %>
    <%= link_to 'Logout', {:controller => 'user', :action => 'logout'}, :class => 'tool' %>
    <%= link_to 'Settings', {:controller => 'user', :action => 'settings'}, :class => 'tool' %>
    <% else %>
    <%= link_to 'Login', {:controller => 'user', :action => 'login'}, :class => 'tool' %>
    <% end %>

  4. Du kannst aber auch einfach eine falsche Sprache angeben, um die Aufmerksamkeit der Leser und Moderatoren zu testen. Lass dich nicht in die Irre führen: Ruby, RHTML, ERb, PHP, HTML, XHTML - das ist ein und dasselbe:


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    # The Greeter class
    class Greeter
    def initialize(name)
    @name = name.capitalize
    end

    def salute
    puts "Hello #{@name}!"
    end
    end

    # Create a new object
    g = Greeter.new("world")

    # Output "Hello World!"
    g.salute

  5. Am besten ist es, wenn du einfach das code-Tag falsch schreibst. Die Moderatoren haben sowieso zu viel Zeit:

    [dode]<table>
    <% items.each do |item| %>
    <tr>
    <td><%= item.title %></td>
    <td><%= item.text %></td>
    </tr>
    <% end %>
    </table>[/code]

  6. Nun, vielleicht möchtest du ja wirklich unbedingt korrekte Tags verwenden. Dann solltest du aber wenigstens genügend leere Zeilen vor und hinter deinen Code schreiben, um ihn gebührend abzugrenzen:







    1
    2
    3
    4
    5
    6
    7
    8
    9




    #define ISXDIGIT(c) (ISASCII(c) && isxdigit((int)(unsigned char)(c)))









  7. Alternativ kannst du auch horizontal überlange Zeilen verwenden, damit die Besitzer von 40"-Widescreen-Monitoren für ihr Geld auch was geboten kriegen:


    1
    2
    # Ich habe ein kleines Problem am Ende dieser Regexp:
    /%(?:[Qqxrw](?:\([^)#\\\\]*(?:(?:#\{.*?\}|#|\\\\.)[^)#\\\\]*)*\)?|\[[^\]#\\\\]*(?:(?:#\{.*?\}|#|\\\\.)[^\]#\\\\]*)*\]?|\{[^}#\\\\]*(?:(?:#\{.*?\}|#|\\\\.)[^}#\\\\]*)*\}?|<[^>#\\\\]*(?:(?:#\{.*?\}|#|\\\\.)[^>#\\\\]*)*>?|([^a-zA-Z\\\\])(?:(?!\1)[^#\\\\])*(?:(?:#\{.*?\}|#|\\\\.)(?:(?!\1)[^#\\\\])*)*\1?)|\([^)#\\\\]*(?:(?:#\{.*?\}|#|\\\\.)[^)#\\\\]*)*\)?|\[[^\]#\\\\]*(?:(?:#\{.*?\}|#|\\\\.)[^\]#\\\\]*)*\]?|\{[^}#\\\\]*(?:(?:#\{.*?\}|#|\\\\.)[^}#\\\\]*)*\}?|<[^>#\\\\]*(?:(?:#\{.*?\}|#|\\\\.)[^>#\\\\]*)*>?|([^a-zA-Z\s\\\\])(?:(?!\2)[^#\\\\])*(?:(?:#\{.*?\}|#|\\\\.)(?:(?!\2)[^#\\\\])*)*\2?|\\\\[^#\\\\]*(?:(?:#\{.*?\}|#)[^#\\\\]*)*\\\\?)/

  8. Wichtig: Immer Tabulatoren und Leerzeichen auf absurde Weise mischen, um sicherzustellen, dass der Besucher deinen wunderbaren Code in seinen Editor kopiert:


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
      for(i = 0; i < num_bins; i++) {
    new_table->bins[i] = 0;
    ptr = old_table->bins[i];
    while (ptr != 0) {
    entry = alloc(st_table_entry);
    if (entry == 0) {
    free(new_table->bins);
    free(new_table);
    return 0;
    }
    *entry = *ptr;
    entry->next = new_table->bins[i];
    new_table->bins[i] = entry;
    ptr = ptr->next;
    }
    }

  9. Niemals den gesamten interessanten Code veröffentlichen! Sonst erkennen andere, was du gerade vorhast, und antworten dir mit Lösungen, die du gar nicht erwartet hast:


    1
    2
    # Hier tritt der Fehler auf.
    Tk.mainloop

  10. Wenn du ihn schön findest, kopier deinen Code einfach komplett in den Beitrag. Es gibt zwar auch Attachments und http://pastie.caboo.se/ - aber da muss man ja erst draufklicken. Außerdem trainieren lange Codes die CPU des Servers, vielleicht wird er dadurch schneller:


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    #!/usr/local/bin/ruby
    #
    # biorhythm.rb -
    # $Release Version: $
    # $Revision: 1.9 $
    # $Date: 2003/05/05 14:02:14 $
    # by Yasuo OHBA(STAFS Development Room)
    #
    # --
    #
    #
    #

    # probably based on:
    #
    # Newsgroups: comp.sources.misc,de.comp.sources.os9
    # From: fkk@stasys.sta.sub.org (Frank Kaefer)
    # Subject: v41i126: br - Biorhythm v3.0, Part01/01
    # Message-ID: <1994Feb1.070616.15982@sparky.sterling.com>
    # Sender: kent@sparky.sterling.com (Kent Landfield)
    # Organization: Sterling Software
    # Date: Tue, 1 Feb 1994 07:06:16 GMT
    #
    # Posting-number: Volume 41, Issue 126
    # Archive-name: br/part01
    # Environment: basic, dos, os9

    include Math
    require "date.rb"
    require "parsearg.rb"
    require "parsedate.rb"

    def usage()
    print "Usage:\n"
    print "biorhythm.rb [options]\n"
    print " options...\n"
    print " -D YYYYMMDD(birthday) : use default values.\n"
    print " --sdate | --date YYYYMMDD : use system date; use specified date.\n"
    print " --birthday YYYYMMDD : specifies your birthday.\n"
    print " -v | -g : show values or graph.\n"
    print " --days DAYS : graph range (only in effect for graphs).\n"
    print " --help : help\n"
    end
    $USAGE = 'usage'

    def printHeader(y, m, d, p, w)
    print "\n>>> Biorhythm <<<\n"
    printf "The birthday %04d.%02d.%02d is a %s\n", y, m, d, w
    printf "Age in days: [%d]\n\n", p
    end

    def getPosition(z)
    pi = Math::PI
    z = Integer(z)
    phys = (50.0 * (1.0 + sin((z / 23.0 - (z / 23)) * 360.0 * pi / 180.0))).to_i
    emot = (50.0 * (1.0 + sin((z / 28.0 - (z / 28)) * 360.0 * pi / 180.0))).to_i
    geist =(50.0 * (1.0 + sin((z / 33.0 - (z / 33)) * 360.0 * pi / 180.0))).to_i
    return phys, emot, geist
    end

    def parsedate(s)
    ParseDate::parsedate(s).values_at(0, 1, 2)
    end

    def name_of_week(date)
    Date::DAYNAMES[date.wday]
    end

    #
    # main program
    #
    parseArgs(0, nil, "vg", "D:", "sdate", "date:", "birthday:", "days:")

    if $OPT_D
    dd = Date.today
    bd = Date.new(*parsedate($OPT_D))
    ausgabeart = "g"
    else
    if $OPT_birthday
    bd = Date.new(*parsedate($OPT_birthday))
    else
    STDERR.print("Birthday (YYYYMMDD) : ")
    unless (si = STDIN.gets.chop).empty?
    bd = Date.new(*parsedate(si))
    end
    end
    if !bd
    STDERR.print "BAD Input Birthday!!\n"
    exit()
    end

    if $OPT_sdate
    dd = Date.today
    elsif $OPT_date
    dd = Date.new(*parsedate($OPT_date))
    else
    STDERR.print("Date [<RETURN> for Systemdate] (YYYYMMDD) : ")
    unless (si = STDIN.gets.chop).empty?
    dd = Date.new(*parsedate(si))
    end
    end
    dd ||= Date.today

    if $OPT_v
    ausgabeart = "v"
    elsif $OPT_g
    ausgabeart = "g"
    else
    STDERR.print("Values for today or Graph (v/g) [default g] : ")
    ausgabeart = STDIN.gets.chop
    end
    end
    if ausgabeart == "v"
    printHeader(bd.year, bd.month, bd.day, dd - bd, name_of_week(bd))
    print "\n"

    phys, emot, geist = getPosition(dd - bd)
    printf "Biorhythm: %04d.%02d.%02d\n", dd.year, dd.month, dd.day
    printf "Physical: %d%%\n", phys
    printf "Emotional: %d%%\n", emot
    printf "Mental: %d%%\n", geist
    print "\n"
    else
    if $OPT_days
    display_period = $OPT_days.to_i
    elsif $OPT_D
    display_period = 9
    else
    STDERR.printf("Graph for how many days [default 10] : ")
    display_period = STDIN.gets.chop
    if display_period.empty?
    display_period = 9
    else
    display_period = display_period.to_i - 1
    end
    end

    printHeader(bd.year, bd.month, bd.day, dd - bd, name_of_week(bd))
    print " P=physical, E=emotional, M=mental\n"
    print " -------------------------+-------------------------\n"
    print " Bad Condition | Good Condition\n"
    print " -------------------------+-------------------------\n"

    (dd - bd).step(dd - bd + display_period) do |z|
    phys, emot, geist = getPosition(z)

    printf "%04d.%02d.%02d : ", dd.year, dd.month, dd.day
    p = (phys / 2.0 + 0.5).to_i
    e = (emot / 2.0 + 0.5).to_i
    g = (geist / 2.0 + 0.5).to_i
    graph = "." * 51
    graph[25] = ?|
    graph[p] = ?P
    graph[e] = ?E
    graph[g] = ?M
    print graph, "\n"
    dd = dd + 1
    end
    print " -------------------------+-------------------------\n\n"
    end

Bild
So, das waren Muttis Tipps. Nicht aufgeben, mein Sohn! Übung macht den Meister.

_________________
Ruby-Mine | (almost) murphy.de | rubychan.de


Zuletzt geändert von murphy am 14 Feb 2008, 05:50, insgesamt 5-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 01 Nov 2006, 15:36 
Offline
Interpreter
Benutzeravatar

Registriert: 10 Nov 2005, 15:04
Beiträge: 1477
Lieber murphy,

ein scharfes Schwert Zynismus ist. Weise nutze es. :)

azuby

*plieep*

_________________
[code=]Na, mal wieder nur grauer Code?[/code][url=http://rubyforen.de/viewtopic.php?t=1866]Das muss nicht sein!
azuby, Initiative "Pimp your Quellcode"[/url]

Plenken, Klempen, und andere Verbrechen


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 01 Nov 2006, 15:49 
Offline
Böser Admin 2
Benutzeravatar

Registriert: 17 Mär 2004, 17:03
Beiträge: 2544
Wohnort: Berlin
hey, das war rein zur belustigung gemeint :) eigentlich gibt es wohl gar keinen anlass mehr zu solchen belehrungen. das board ist toll :D

_________________
Ruby-Mine | (almost) murphy.de | rubychan.de


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 01 Nov 2006, 16:01 
Offline
Interpreter

Registriert: 29 Okt 2002, 14:25
Beiträge: 2137
Man beachte, dass Mutti sogar die Groß-/Kleinschreibung beherrscht!!! :)

_________________
Ruby-Mine

"Simplicity is the ultimate sophistication." Leonardo da Vinci


Nach oben
 Profil  
 
BeitragVerfasst: 01 Nov 2006, 17:18 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
Göttlicher Beitrag :D

murphy hat geschrieben:
[*] Niemals den gesamten interessanten Code veröffentlichen! Sonst erkennen andere, was du gerade vorhast, und antworten dir mit Lösungen, die du gar nicht erwartet hast:



1
2
# Hier tritt der Fehler auf.
Tk.mainloop

Das ist allerdings eine Beitragsklasse, die wirklich schon öfter auftrat. Da steht man dann wie das Nilpferd vor der Eiger Nordwand.

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Forum gesperrt Dieses Thema ist gesperrt. Du kannst keine Beiträge editieren oder weitere Antworten erstellen.  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: