Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Våra topplistor i Go (Peter Hellberg och Kristi...

David Hall
November 26, 2014

Våra topplistor i Go (Peter Hellberg och Kristian Saebdal, TV4)

Peter Hellberg och Kristian Saebdal berättar om när de skrev om tjänsten för topplistor i Go efter att ha råkat ut för ett fall av ruttnad kod.

David Hall

November 26, 2014
Tweet

More Decks by David Hall

Other Decks in Programming

Transcript

  1. ȇȇ&0&11/ (03&0&1+!/"0-,+!04&1%ǐ5ǐ #2+ ȁ-&ȋ Ȃ&0&1ȁ 4"ǣǤ 4%11-ǣ"0-,+0"/&1"/Ǥ/ȋ%11-ǣ".2"01Ȃȅ 3&0&1ǤȀǥʛ"4&0&1ȁ&-Ǥ-/*0Ȃ !ǣȁǭ3&0&10ǭȂǣ +0"/1ȁ3&0&1Ȃ

    3ǤȀǥʛ"4$$/"$1"&0&1ȁ3&0&1Ȃ !ǣȁǭ$$/"$1"!Ȁ3&0&10ǭȂǣ-0"/1ȁ3Ǥ  0,+ǣȅǭɸ&+ ǭǥ0,+ǣȅǭ3&0&10ǭǥǐȆȆȂ 4ǣ/&1"ȁ/+0-/"+1&5")Ȃ Ȇ
  2. ȇȇ&0&11/ (03&0&1+!/"0-,+!04&1%ǐ5ǐ #2+ ȁ-&ȋ Ȃ&0&1ȁ 4"ǣǤ 4%11-ǣ"0-,+0"/&1"/Ǥ/ȋ%11-ǣ".2"01Ȃȅ 3&0&1ǤȀǥʛ"4&0&1ȁ&-Ǥ-/*0Ȃ !ǣȁǭ3&0&10ǭȂǣ +0"/1ȁ3&0&1Ȃ

    3ǤȀǥʛ"4$$/"$1"&0&1ȁ3&0&1Ȃ !ǣȁǭ$$/"$1"!Ȁ3&0&10ǭȂǣ-0"/1ȁ3Ǥ  0,+ǣȅǭɸ&+ ǭǥ0,+ǣȅǭ3&0&10ǭǥǐȆȆȂ 4ǣ/&1"ȁ/+0-/"+1&5")Ȃ Ȇ
  3. ȇȇ&0&1/"-/"0"+103&0&11,Ǔ)6 16-"&0&101/2 1ȅ 01/&+$ˍ0,+ǥǭ&!ǭˍ 6-"01/&+$ˍ0,+ǥǭ16-"ǭˍ /,$/*01/&+$ˍ0,+ǥǭ-/,$/*ǭˍ 1"$,/601/&+$ˍ0,+ǥǭ 1"$,/6ǭˍ "+/"01/&+$ˍ0,+ǥǭ$"+/"ǭˍ ,2/

    "01/&+$ˍ0,+ǥǭ0,2/ "ǭˍ ,+1"+1,2/ "01/&+$ˍ0,+ǥǭ ,+1"+1Ȁ0,2/ "ǭˍ 01/&+$ˍ0,+ǥǭ&-ǭˍ '" 1 0,+ǣ'" 1 !ˍ0,+ǥǭȀ&!ǭˍ &*"01*-1&*"ǣ&*"ˍ0,+ǥǭ1&*"01*-ǭˍ Ȇ
  4. ȇȇ&0&11/ (03&0&1+!/"0-,+!04&1%ǐ5ǐ #2+ ȁ-&ȋ Ȃ&0&1ȁ 4"ǣǤ 4%11-ǣ"0-,+0"/&1"/Ǥ/ȋ%11-ǣ".2"01Ȃȅ 3&0&1ǤȀǥʛ"4&0&1ȁ&-Ǥ-/*0Ȃ !ǣȁǭ3&0&10ǭȂǣ +0"/1ȁ3&0&1Ȃ

    3ǤȀǥʛ"4$$/"$1"&0&1ȁ3&0&1Ȃ !ǣȁǭ$$/"$1"!Ȁ3&0&10ǭȂǣ-0"/1ȁ3Ǥ  0,+ǣȅǭɸ&+ ǭǥ0,+ǣȅǭ3&0&10ǭǥǐȆȆȂ 4ǣ/&1"ȁ/+0-/"+1&5")Ȃ Ȇ
  5. ȇȇ&0&11/ (03&0&1+!/"0-,+!04&1%ǐ5ǐ #2+ ȁ-&ȋ Ȃ&0&1ȁ 4"ǣǤ 4%11-ǣ"0-,+0"/&1"/Ǥ/ȋ%11-ǣ".2"01Ȃȅ 3&0&1ǤȀǥʛ"4&0&1ȁ&-Ǥ-/*0Ȃ !ǣȁǭ3&0&10ǭȂǣ +0"/1ȁ3&0&1Ȃ

    3ǤȀǥʛ"4$$/"$1"&0&1ȁ3&0&1Ȃ !ǣȁǭ$$/"$1"!Ȁ3&0&10ǭȂǣ-0"/1ȁ3Ǥ  0,+ǣȅǭɸ&+ ǭǥ0,+ǣȅǭ3&0&10ǭǥǐȆȆȂ 4ǣ/&1"ȁ/+0-/"+1&5")Ȃ Ȇ
  6. ȇȇ$$/"$1"&0&1 ,+1&+0+$$/"$1"3&0&1 16-"$$/"$1"&0&101/2 1ȅ   01/&+$ˍ0,+ǥǭ&!ǭˍ 6-" 01/&+$ˍ0,+ǥǭ16-"ǭˍ /,$/*

    01/&+$ˍ0,+ǥǭ-/,$/*ǭˍ 1"$,/6 01/&+$ˍ0,+ǥǭ 1"$,/6ǭˍ  "+/" 01/&+$ˍ0,+ǥǭ$"+/"ǭˍ ,2/ "01/&+$ˍ0,+ǥǭ0,2/ "ǭˍ ,+1"+1,2/ "01/&+$ˍ0,+ǥǭ ,+1"+1Ȁ0,2/ "ǭˍ '" 1  0,+ǣ'" 1 !ˍ0,+ǥǭȀ&!ǭˍ  ,2/ 1&*"ǣ&*"ˍ0,+ǥǭ%,2/ǭˍ Ȇ
  7. ȇȇ&0&11/ (03&0&1+!/"0-,+!04&1%ǐ5ǐ #2+ ȁ-&ȋ Ȃ&0&1ȁ 4"ǣǤ 4%11-ǣ"0-,+0"/&1"/Ǥ/ȋ%11-ǣ".2"01Ȃȅ 3&0&1ǤȀǥʛ"4&0&1ȁ&-Ǥ-/*0Ȃ !ǣȁǭ3&0&10ǭȂǣ +0"/1ȁ3&0&1Ȃ

    3ǤȀǥʛ"4$$/"$1"&0&1ȁ3&0&1Ȃ !ǣȁǭ$$/"$1"!Ȁ3&0&10ǭȂǣ-0"/1ȁ3Ǥ  0,+ǣȅǭɸ&+ ǭǥ0,+ǣȅǭ3&0&10ǭǥǐȆȆȂ 4ǣ/&1"ȁ/+0-/"+1&5")Ȃ Ȇ
  8. ȇȇ&0&11/ (03&0&1+!/"0-,+!04&1%ǐ5ǐ #2+ ȁ-&ȋ Ȃ&0&1ȁ 4"ǣǤ 4%11-ǣ"0-,+0"/&1"/Ǥ/ȋ%11-ǣ".2"01Ȃȅ 3&0&1ǤȀǥʛ"4&0&1ȁ&-Ǥ-/*0Ȃ !ǣȁǭ3&0&10ǭȂǣ +0"/1ȁ3&0&1Ȃ

    3ǤȀǥʛ"4$$/"$1"&0&1ȁ3&0&1Ȃ !ǣȁǭ$$/"$1"!Ȁ3&0&10ǭȂǣ-0"/1ȁ3Ǥ  0,+ǣȅǭɸ&+ ǭǥ0,+ǣȅǭ3&0&10ǭǥǐȆȆȂ 4ǣ/&1"ȁ/+0-/"+1&5")Ȃ Ȇ
  9. ȇȇ$$/"$1"/"12/+01%"1,-)&010  #2+ ȁ-&ȋ Ȃ$$/"$1"ȁ 4"ǣǤ 4%11-ǣ"0-,+0"/&1"/Ǥ/ȋ%11-ǣ".2"01Ȃȅ  .2"/6ǥʛ$$/"$1"2"/6ȁ ǣ/*0ȃǭ16-"ǭȄǤ1&*"01*-Ǥ-/*0Ȃ

    -&-")&+"ǥʛ1,-)&01&-")&+"ȁ.2"/6Ǥ)&*&1Ȃ  ,))ǥʛ0"00ǣȁǭǭȂǣȁǭ$$/"$1"!Ȁ3&0&10ǭȂ &1"/ǥʛ ,))ǣ&-"ȁ-&-")&+"Ȃǣ 1"/ȁȂ 1,-)&01ǥʛȃȄ,-)&01 1"*ȅȆ 3/1&,-)&01 1"* #,/&1"/ǣ"51ȁǎ1&Ȃȅ  1,-)&01ʛ--"+!ȁ1,-)&01Ǥ1&Ȃ Ȇ 3)2"ǤȀǥʛ'0,+ǣ/0%)ȁ1,-)&01Ȃ 4ǣ/&1"ȁ3)2"Ȃ Ȇ
  10. ȇȇ$$/"$1"/"12/+01%"1,-)&010  #2+ ȁ-&ȋ Ȃ$$/"$1"ȁ 4"ǣǤ 4%11-ǣ"0-,+0"/&1"/Ǥ/ȋ%11-ǣ".2"01Ȃȅ  .2"/6ǥʛ$$/"$1"2"/6ȁ ǣ/*0ȃǭ16-"ǭȄǤ1&*"01*-Ǥ-/*0Ȃ

    -&-")&+"ǥʛ1,-)&01&-")&+"ȁ.2"/6Ǥ)&*&1Ȃ  ,))ǥʛ0"00ǣȁǭǭȂǣȁǭ$$/"$1"!Ȁ3&0&10ǭȂ &1"/ǥʛ ,))ǣ&-"ȁ-&-")&+"Ȃǣ 1"/ȁȂ 1,-)&01ǥʛȃȄ,-)&01 1"*ȅȆ 3/1&,-)&01 1"* #,/&1"/ǣ"51ȁǎ1&Ȃȅ  1,-)&01ʛ--"+!ȁ1,-)&01Ǥ1&Ȃ Ȇ 3)2"ǤȀǥʛ'0,+ǣ/0%)ȁ1,-)&01Ȃ 4ǣ/&1"ȁ3)2"Ȃ Ȇ
  11. #2+ $$/"$1"2"/6ȁ101/&+$Ǥ101&*"ǣ&*"Ǥ-2/)ǣ)2"0Ȃ0,+ǣ ȅ .ǥʛ0,+ǣȅǭ16-"ǭǥ1Ǥǭ%,2/ǭǥ0,+ǣȅǭɸ$1"ǭǥ10ȆȆ #2+ ȁ("60ǣǣǣ01/&+$Ȃȅ  #,/ȀǤ("6ǥʛ/+$"("60ȅ  &#3)ǥʛ-ǣ

    "1ȁ("6ȂǦ3)Ǩʛǭǭȅ  .ȃ("6Ȅʛ3)  Ȇ  Ȇ Ȇȁǭ ,+1"+1Ȁ0,2/ "ǭǤǭ 1"$,/6ǭǤǭ$"+/"ǭǤǭ-/,$/*ǭǤǭ0,2/ "ǭȂ /"12/+. Ȇ
  12. ȇȇ$$/"$1"/"12/+01%"1,-)&010  #2+ ȁ-&ȋ Ȃ$$/"$1"ȁ 4"ǣǤ 4%11-ǣ"0-,+0"/&1"/Ǥ/ȋ%11-ǣ".2"01Ȃȅ  .2"/6ǥʛ$$/"$1"2"/6ȁ ǣ/*0ȃǭ16-"ǭȄǤ1&*"01*-Ǥ-/*0Ȃ

    -&-")&+"ǥʛ1,-)&01&-")&+"ȁ.2"/6Ǥ)&*&1Ȃ  ,))ǥʛ0"00ǣȁǭǭȂǣȁǭ$$/"$1"!Ȁ3&0&10ǭȂ &1"/ǥʛ ,))ǣ&-"ȁ-&-")&+"Ȃǣ 1"/ȁȂ 1,-)&01ǥʛȃȄ,-)&01 1"*ȅȆ 3/1&,-)&01 1"* #,/&1"/ǣ"51ȁǎ1&Ȃȅ  1,-)&01ʛ--"+!ȁ1,-)&01Ǥ1&Ȃ Ȇ 3)2"ǤȀǥʛ'0,+ǣ/0%)ȁ1,-)&01Ȃ 4ǣ/&1"ȁ3)2"Ȃ Ȇ
  13. #2+ 1,-)&01&-")&+"ȁ.2"/60,+ǣǤ)&*&1&+1ȂȃȄ0,+ǣȅ /"12/+ȃȄ0,+ǣȅ  0,+ǣȅǭɸ*1 %ǭǥ.2"/6ȆǤ  0,+ǣȅǭɸ-/,'" 1ǭǥ0,+ǣȅ 

    ǭ&!ǭǥǭɸ&!ǭǤ ǭ3&0&10ǭǥǭɸ3&0&10ǭǤ  ȆȆǤ  0,+ǣȅǭɸ$/,2-ǭǥ0,+ǣȅ  ǭȀ&!ǭǥǭɸ&!ǭǤ ǭ3&0&10ǭǥ0,+ǣȅǭɸ02*ǭǥǭɸ3&0&10ǭȆǤ  ȆȆǤ  0,+ǣȅǭɸ0,/1ǭǥ0,+ǣȅǭ3&0&10ǭǥǸǐȆȆǤ  0,+ǣȅǭɸ)&*&1ǭǥ)&*&1ȆǤ Ȇ Ȇ
  14. ȇȇ$$/"$1"/"12/+01%"1,-)&010  #2+ ȁ-&ȋ Ȃ$$/"$1"ȁ 4"ǣǤ 4%11-ǣ"0-,+0"/&1"/Ǥ/ȋ%11-ǣ".2"01Ȃȅ  .2"/6ǥʛ$$/"$1"2"/6ȁ ǣ/*0ȃǭ16-"ǭȄǤ1&*"01*-Ǥ-/*0Ȃ

    -&-")&+"ǥʛ1,-)&01&-")&+"ȁ.2"/6Ǥ)&*&1Ȃ  ,))ǥʛ0"00ǣȁǭǭȂǣȁǭ$$/"$1"!Ȁ3&0&10ǭȂ &1"/ǥʛ ,))ǣ&-"ȁ-&-")&+"Ȃǣ 1"/ȁȂ 1,-)&01ǥʛȃȄ,-)&01 1"*ȅȆ 3/1&,-)&01 1"* #,/&1"/ǣ"51ȁǎ1&Ȃȅ  1,-)&01ʛ--"+!ȁ1,-)&01Ǥ1&Ȃ Ȇ 3)2"ǤȀǥʛ'0,+ǣ/0%)ȁ1,-)&01Ȃ 4ǣ/&1"ȁ3)2"Ȃ Ȇ
  15. ȇȇ$$/"$1"/"12/+01%"1,-)&010  #2+ ȁ-&ȋ Ȃ$$/"$1"ȁ 4"ǣǤ 4%11-ǣ"0-,+0"/&1"/Ǥ/ȋ%11-ǣ".2"01Ȃȅ  .2"/6ǥʛ$$/"$1"2"/6ȁ ǣ/*0ȃǭ16-"ǭȄǤ1&*"01*-Ǥ-/*0Ȃ

    -&-")&+"ǥʛ1,-)&01&-")&+"ȁ.2"/6Ǥ)&*&1Ȃ  ,))ǥʛ0"00ǣȁǭǭȂǣȁǭ$$/"$1"!Ȁ3&0&10ǭȂ &1"/ǥʛ ,))ǣ&-"ȁ-&-")&+"Ȃǣ 1"/ȁȂ 1,-)&01ǥʛȃȄ,-)&01 1"*ȅȆ 3/1&,-)&01 1"* #,/&1"/ǣ"51ȁǎ1&Ȃȅ  1,-)&01ʛ--"+!ȁ1,-)&01Ǥ1&Ȃ Ȇ 3)2"ǤȀǥʛ'0,+ǣ/0%)ȁ1,-)&01Ȃ 4ǣ/&1"ȁ3)2"Ȃ Ȇ
  16. -&ȇ$$/"$1"ǣ$, ǐǑǗ -&ȇ$$/"$1"Ȁ3&0&1ǣ$, ǒǕ -&ȇ-&ǣ$, Ǖǘ -&ȇ )"+2-ǣ$, ǒǗ -&ȇ*&!!)"4/"ǣ$,

    ǓǑ -&ȇ/"0-,+0"ǣ$, Ǒǐ -&ȇ/,,10Ȁ151ǣ$, ǐǒ -&ȇ/,21"0ǣ$, Ǒǐ -&ȇ01120ǣ$, ǔǏ -&ȇ3&0&1ǣ$, ǐǑǑ *&+ǣ$, ǘǓ ǔǓǏ ,