Ny Version2-debat - vi vil se din kode!
Den livlige og konstruktive debat til artikler og blog-indlæg er en af de ting, som gør os rigtig glade for vores læsere på Version2.
Men der har altid manglet noget, og det var, når diskussionen kom til det, mange it-professionelle bruger adskillige timer af deres hverdag på - programkoden.
Det er der forhåbentlig rettet op på med relanceringen af version2.dk.
Nu understøtter debatten nemlig såkaldt syntax highlighting, hvor koden præsenteres med farver og indrykning, så den er let at læse for andre debattører. Samtidig linkes de enkelte funktioner til onlinemanualen for det valgte sprog, hvis det er tilgængeligt.
Som standard understøttes flere end 70 sprog - heriblandt PHP, Python, Ruby, Java og C++.
For at vise eksempelvis PHP-kode i debatten, skal du blot sætte [code=php] foran din kode og [/code] efter. Under denne artikel er der link til vores debatguide, hvor du kan læse mere og se alle de sprog, der understøttes.
Kommentarer (24)
Og her er så et lille eksempel på noget kode - andre skal være meget velkomne til at teste systemet af med andre eksempler.
[code=c]
main() {
printf("hello, world\n");
}
[/code]
[code=php]
<?php
// Hello World in PHP
echo 'Hello World!';
?>
[/code]
[code=fortran]
C Hello World in Fortran
PROGRAM HELLO
WRITE (*,100)
STOP
100 FORMAT (' Hello World! ' /)
END
[/code]
[code=ruby]
# Hello World in Ruby
puts "Hello World!"
[/code]
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<element attribute="value">value</element>
</root>
public static void Main(string[] args)
{
if (args.Length > 0)
{
Console.Write(args[0]);
Console.Read();
}
}
[code=csharp]
public static void Main(string[] args)
{
if (args.Length > 0)
{
Console.Write(args[0]);
Console.Read();
}
}
[/code]
[code=xml]
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<element attribute="value">value</element>
</root>
[/code]
Hej Jesper.
Husk at bruge de rigtige "koder", som du kan se på http://www.version2.dk/debat/guide.
Jeg har rettet code=c# til code=csharp i dit seneste indlæg, så det nu viser koden korrekt.
Mvh Casper
[code=scheme]
(define (apply-mugshot img
fg-layer
frame-color)
(let* ((current-color (car (gimp-context-get-foreground))))
(gimp-context-push)
(gimp-selection-none img)
(gimp-drawable-transform-scale fg-layer 0 0 95 95 0 2 1 3 1)
(gimp-image-resize img 95 95 0 0)
(gimp-layer-resize fg-layer 95 95 0 0)
(gimp-selection-all img)
(gimp-selection-shrink img 1)
(gimp-selection-invert img)
(gimp-context-set-foreground frame-color)
(gimp-edit-fill fg-layer 0)
(gimp-context-set-foreground current-color)
(gimp-selection-none img)
(gimp-layer-set-opacity fg-layer 99.0)
(gimp-context-pop)))
(define (script-fu-mugshot img
fg-layer
frame-color)
(begin
(gimp-image-undo-group-start img)
(apply-mugshot img fg-layer frame-color)
(gimp-image-undo-group-end img)
(gimp-displays-flush)))
(script-fu-register "script-fu-mugshot"
_"_Fix Mugshot"
"Takes a square photo, resizes it to 95px square, sets transparency at 99% and adds a 1px border."
"Kristian Thy"
"Kristian Thy"
"2006"
"RGB,RGBA"
SF-IMAGE "Image" 0
SF-DRAWABLE "Drawable" 0
SF-COLOR _"Frame color" '(0 0 0))
[/code]
<snøft>
Og det på trods af at Erlang gruppen er en af de forholdsvis store og aktive grupper.
Til gengæld er der så Z80 assembler.
Hej Søren.
Det er selvfølgelig ærgerligt med den manglende understøttelse af Erlang, men sproget er desværre ikke standard i Geshi, som er den software, vi benytter.
Hvis du kan finde en Geshi-fil til Erlang (vi kan ikke være de eneste med interesse for Erlang), er vi dog meget villige til at tilføje den, så også Erlang-kode kan blive en del af Version2.
Efter at have ledt lidt rundt, kan vi ikke umiddelbart finde en Geshi-fil til Erlang - det kan være, at du kan spørge i forummet i Erlang-gruppen og få hjælp til eftersøgningen der?
Mvh Casper, Version2
Z80!? Det må straks prøves. Snippet med tak til http://www.geocities.com/dinceraydin/files/hello_asm.htm
[code=z80]
ld a,38h ; function set command
ld b,4
ld c,cwadr
ld d,command
out (c),d ; select the instruction register
ld d,write
out (c),d ; reset RW pin for writing to LCD
out (paadr),a ; place the command into portA
[/code]
[code=intercal]
(10) PLEASE DON'T GIVE UP
(1) DO .2 <- '?.1$#64'~'#0$#65535'
DO .2 <- '&"'.1~.2'~'"?'?.2~.2'$#32768"~"#0$#65535"'"$".2~.2"'~#1
DO .3 <- '?#91$.1'~'#0$#65535'
DO .3 <- '&"'#91~.3'~'"?'?.3~.3'$#32768"~"#0$#65535"'"$".3~.3"'~#1
DO (11) NEXT
DO (2) NEXT
DO (12) NEXT
(11) DO (13) NEXT
PLEASE FORGET #1
DO (12) NEXT
(13) DO (14) NEXT
PLEASE FORGET #2
DO (12) NEXT
(14) DO STASH .1
DO .1 <- .3
DO (1000) NEXT
DO .1 <- .3
DO .2 <- #1
PLEASE DO (1000) NEXT
DO RETRIEVE .1
PLEASE RESUME .3
...
[/code]
Hehe. Jeg savner også muligheden for syntax highlighting af [url=http://compsoc.dur.ac.uk/whitespace/]whitespace[/url]-kode.
Nej, ingen intercal - se listen på
http://www.version2.dk/debat/guide
(Ja, vi skal nok få fikset de URL-til-link problemer snarest)
Kan I ikke pille ved CSS'en, sådan at kode-snippets fremstår med fast spatiering?
Formentlig - hvad havde du i tankerne?
Ny test af C#:
[code=csharp]
// nu med indrykning/formattering af kodelinierne
public static void Main(string[] args)
{
if (args.Length > 0)
{
Console.Write(args[0]);
Console.Read();
}
}
[/code]
Jan,
Nyt forslag: anvendelse af fixed-width font for kodestumber?
(fx en eller anden Courier-variant eller lignende)
Ja, hvis du spørger mig, så er det meget bedre med fixed-width fonte til kodestumperne.
(hvis det bliver et problem med for store tekstbidder, så kan I jo skrue lidt ned for størrelsen på fonten.
:o)
hvis det bliver et problem med for store tekstbidder, så kan I jo skrue lidt ned for størrelsen på fonten.
Hvis man bruger Ildræven med Fedtaben kan man installere dette userscript og styre det selv:
[code=javascript]
// ==UserScript==
// @name Version2 Customizer
// @namespace http://quovadis.dk/
// @description Customize V2 layout.
// @include http://version2.dk
// ==/UserScript==
function xpath(query, context)
{
var cx = (arguments.length < 2) ? document : context;
return document.evaluate(query, cx, null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
}
var posts = xpath('//blockquote[@class="code"]');
for (var i = 0; i < posts.snapshotLength; i++)
{
var block = posts.snapshotItem(i);
block.style.fontFamily = "Consolas";
block.style.fontSize = "9px";
}
[/code]
Må lige prøve dette:
[code=c]
#pragma src
#pragma asm
// the assembler macros below do the following two 'C' statements:
// 1) ByteBits = abs(gnqx)>>8;
// 2) gnqsum = abs(gnq1)>>8 + abs(gnq2)>>8
// and do it in only 1.0 to 1.1 usec, compared to 1.5 to 1.8 usec
$GEN ; Expand macro in listfile
; 1)
TAKE_HIGH_OF_ABS MACRO SOURCE, DEST
local ADDONE, EXIT
MOV DPTR,#SOURCE
MOVX A,@DPTR
MOV R6, A
INC DPTR
MOVX A, @DPTR
ADD A, #0
JZ ADDONE
MOV A, R6
JNB ACC.7, exit
CPL A
JMP exit
ADDONE:
MOV A, R6
JNB ACC.7, exit
CPL A
INC A
exit:
MOV DEST, A
ENDM
; 2)
MAKESUM macro GNQ1, GNQ2, GNQSUM
TAKE_HIGH_OF_ABS GNQ1,R7 ; Store abs(gnqx) in R7
TAKE_HIGH_OF_ABS GNQ2,R6 ; Store abs(gnqx) in R6
mov A, R7
add A, R6
mov GNQSUM, a
ENDM
#pragma endasm
...
#pragma asm
MAKESUM g1q1, g1q2, g1qsum // 2.0 to 2.2 usec
MAKESUM g2q1, g2q2, g2qsum
MAKESUM g3q1, g3q2, g3qsum
MAKESUM g4q1, g4q2, g4qsum
MAKESUM g5q1, g5q2, g5qsum
MAKESUM g6q1, g6q2, g6qsum
MAKESUM g7q1, g7q2, g7qsum
#ifdef DTMF16
MAKESUM g8q1, g8q2, g8qsum
#endif
#pragma endasm
#ifdef FLOATTEST
// Floating point test. For informational tests only
fqsum = abs(fq1) + abs(fq2); // 30 to 37 usec
#endif
DTMFBins = -1;
FoundHighBin = 0;
[/code]
Hvor gemmer preview knappen sig?
Hvis det var svært at skrive, skal det vel også være svært at læse ;-)
[code=perl]
#:: .|-| .-| :||:-| .|:|:-| .::-| |.|-| ||-: ||-. :||
open(Q,$0);while(<Q>){if(/^#(.)$/){for(split('-',$1)){$q=0;for(split){s/|
/:.:/xg;s/:/../g;$Q=$?length:$;$q+=$q?$Q:$Q20;}print chr($q);}}}print"\n";
#:. |||-| |.|-| 0-| .-: |:|.|-. |:|-:: 0-| .-| |::|-| ::::
[/code]
Ja, jeg har snydt, og bearbejdet kode, jeg fandt her: http://mysite.verizon.net/les.peters/id2.html
Hmm.... det blev ikke helt rigtigt farvelagt: Nummertegnet i /^#/ skal ikke starte en kommentar...
Mener jeg har et sekscifret antal kodelinier fra mine kodedage i 80serne.
Her er et snippet. Der var vist også npget med noget TCP OOB low level kode som jeg må prøve at finde frem. Det var vist dengang nogle mente at tcp oob var ret hip. Måske der skulle laves et separat retro programmør forum :-)
[code=c]
main(argc,argv) /* Old style for AIX V. 1.1 compatibility /
int argc;
char *argv[];
{
long value = 0;
#ifndef AIX1 / No basename() in AIX 1 */
if ( 0 == strcmp(basename(argv[0]),"d2x") )
#else
if ( 0 == strcmp(rindex(argv[0], '/')+1,"d2x") )
#endif
printf("%lx\n",atoi(argv[1]));
else
{
sscanf(argv[1],"%x",&value);
printf("%ld\n",value);
}
}
[/code]
lol...
Prøver lige om linieskift før og efter [...] instruktionerne gør en forskel:
[code=C]int main(int argc, char *argv[]) { exit(argc); }[/code]
Det gør de! Læg også mærke til mellemrummet efter kodeboksen.
Jeg brugte [...]kode[...] til at præsentere ovenstående C program.

