60
A Ť SE Z KÓDU NEPRÁ Š Í! Juraj Michálek 6. 5. 2013 - FI MUNI - Brno http://georgik.sinusgear.com

Ať se z kódu nepráší! 2013

Embed Size (px)

DESCRIPTION

Talk at FI MUNI about programming in C. About testing in C language and test automation.

Citation preview

Page 1: Ať se z kódu nepráší! 2013

AŤ SE Z KÓDU NEPRÁŠÍ!

Juraj Michálek6. 5. 2013 - FI MUNI - Brno

http://georgik.sinusgear.com

Page 2: Ať se z kódu nepráší! 2013

NIEČO O MNE

Page 3: Ať se z kódu nepráší! 2013

ČO NÁS ČAKÁ

Testovanie v C

C vo svete Applu, krátky úvod do Objective-C

Kvalita kódu, open source a projekty

Page 4: Ať se z kódu nepráší! 2013

OTVORENIE KÓDU

GitHub.com

Social Coding

https://github.com/georgik/fimuni-c-cpp-examples

Page 5: Ať se z kódu nepráší! 2013

Když se dívám na svůj kód,tak se musím pochválit.Nevypadá věru zle,zkrátka program jak má být.

Před naší, za našíať se z kódu nepráší! Hej!

Page 6: Ať se z kódu nepráší! 2013

HÁÁ! CHYBÁÁ!

Page 7: Ať se z kódu nepráší! 2013

TESTOVANIE

žiadne

manuálne

automatické

Page 8: Ať se z kódu nepráší! 2013

ŽIADNE TESTOVANIE

Page 9: Ať se z kódu nepráší! 2013

ĽUDOVÁ MÚDROSŤ

Bez testů do vývoje nelez!

Page 10: Ať se z kódu nepráší! 2013

MANUÁLNE

Spustíme a aplikácia ...

Page 11: Ať se z kódu nepráší! 2013

DEBUGGER

Když něco rozeberem, tak leda debuggerem

http://georgik.sinusgear.com/2010/09/19/zaznam-z-prednasky-kdyz-neco-rozeberem-tak-leda-debuggerem/

Page 12: Ať se z kódu nepráší! 2013

AUTOMATIZOVANÉ TESTY

Záchranná sieť pre vývojárov

Živá dokumentácia

Lepší dizajn

Viac času na vývoj

Page 13: Ať se z kódu nepráší! 2013

UNIT TESTING

izolácia

setUp - príprava prostredia

test - samotný test

tearDown - upratanie prostredia

Page 14: Ať se z kódu nepráší! 2013

PRÍKLAD TESTU

int a=41;

a++;

assert( a == 42, “Universe should be ok”);

Page 15: Ať se z kódu nepráší! 2013

MINUNIT

Minimalist Unit Testing Framework for C

http://www.jera.com/techinfo/jtns/jtn002.html

Page 16: Ať se z kódu nepráší! 2013

MINUNIT - CODE

/* file: minunit.h */ #define mu_assert(message, test) do { if (!(test)) return message; } while (0) #define mu_run_test(test) do { char *message = test(); tests_run++; \ if (message) return message; } while (0) extern int tests_run;

Page 17: Ať se z kódu nepráší! 2013

MU_RUNTEST

mu_runtest( test_currency );

mu_runtest( test_accounting );

Page 18: Ať se z kódu nepráší! 2013

MU_ASSERT

mu_assert(“Should not be null”, state == null);

Page 19: Ať se z kódu nepráší! 2013

SPUSTENIE

gcc *.c -o test

./test

ALL TEST PASSED

Tests run: 2

Page 20: Ať se z kódu nepráší! 2013

CHECK FRAMEWORK

http://check.sourceforge.net/

Inštalácia

./configure

make

make install

Page 21: Ať se z kódu nepráší! 2013

ORGANIZÁCIA TESTOV

Test Case

testovaný prípad

Test Suite

sada Test Case

Test Runner

Page 22: Ať se z kódu nepráší! 2013

TEST FIXTURES

void setup();

void teardown();

Page 23: Ať se z kódu nepráší! 2013

KONTRÓLNE FCIE

fail_if ( employee->age != 43, “Problem”);

fail_unless( employee->age == 43, "Incorrect age.");

Page 24: Ať se z kódu nepráší! 2013

KOMPILÁCIA

gcc -lcheck test.c -o test

Page 25: Ať se z kódu nepráší! 2013

SPUSTENIE TESTU

./test

Príklad:

Running suite(s): Employee testing

0%: Checks: 1, Failures: 1, Errors: 0

main.c:45:F:Core tests:test_age:0: Incorrect age.

Page 26: Ať se z kódu nepráší! 2013

ĎALŠIE FRAMEWORKY

C/C++

CxxTest: http://cxxtest.com/

Boost: http://boost.org

http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C

Page 27: Ať se z kódu nepráší! 2013

JENKINS

Continuous Integration - https://ci.jenkins-ci.org

Page 29: Ať se z kódu nepráší! 2013

OBJECTIVE-C

programovací jazyk vychádzajúci z C

objektové princípy zo Smalltalku

Page 30: Ať se z kódu nepráší! 2013

OBJECTIVE-C

1983 - Brad Cox a Tom Love

zakladajú StepStone

1988 - Steve Jobs - NeXT

licencuje Objective-C od StepStone

rozširuje GCC, vytvára AppKit

Page 31: Ať se z kódu nepráší! 2013

OBJECTIVE-C

1996 - Apple ohlásil akvizíciu NeXT

429 mil. $

Cocoa framework

Page 32: Ať se z kódu nepráší! 2013

APPLE - XCODE

Mac OS 10.8

Xcode 4

Command Line Tools for Xcode

http://developer.apple.com

Page 33: Ať se z kódu nepráší! 2013

OBJECTIVE-C

Syntax: cammelCase

Prefix: NS (od NextStep)

Page 34: Ať se z kódu nepráší! 2013

HELLO FI MUNI!

Command + R

Page 35: Ať se z kódu nepráší! 2013

NSSTRING

NSString *who = @”FI MUNI”;

NSLog(“Hello %@!”, who);

Page 36: Ať se z kódu nepráší! 2013

BOOLEAN

BOOL isFIBest = YES;

BOOL isCBoring = NO;

Page 37: Ať se z kódu nepráší! 2013

SPRÁVA PAMÄTE

Nové verzie Mac OS podporujú auto-garbage collection.

Nespoliehajte sa na to!

Naučte sa manažovať pamäť.

Nefunguje na mobilných zariadeniach.

Page 38: Ať se z kódu nepráší! 2013

RETAIN COUNTER

alokácia - zvýšenie počítadla

dealokácia - zníženie počítadla

Page 39: Ať se z kódu nepráší! 2013

PRAVIDLÁ

Ak objekt vlastníš, musíš ho uvoľniť.

Ak objekt nevlastníš, nesmieš ho uvoľniť.

Page 40: Ať se z kódu nepráší! 2013

VLASTNENIE OBJEKTU

alloc, new, retain, copy

Každý ANRC musí mať release!

Page 41: Ať se z kódu nepráší! 2013

ALOKÁCIA - NEW

Page 42: Ať se z kódu nepráší! 2013

ALLOC, INIT

Preferovaný spôsob

Page 43: Ať se z kódu nepráší! 2013

ROZDELENIE KÓDU

rozhranie (interface) - *.h

implementácia - *.m

Page 44: Ať se z kódu nepráší! 2013

INTERFACE@interface Employee : NSObject {

@private

NSString *name;

NSString *surname;

NSDate *age;

}

@end

Page 45: Ať se z kódu nepráší! 2013

IMPLEMENTÁCIA

@implementation Employee

- (void) myMethod {

NSLog(@"Hello");

}

@end

Page 46: Ať se z kódu nepráší! 2013

ZNAK PRED METÓDOU

- (void) myMethod

znak mínus - metóda inštancie

znak plus - statická metóda

Page 47: Ať se z kódu nepráší! 2013

PRÍSTUP K ZDROJOM

NSURL

NSURL *myURL = [NSURL fileURLWithPath:path];

file:///Users/georgik/file.txt

Page 48: Ať se z kódu nepráší! 2013

PREČO POUŽÍVAŤ NSURL?

Pretože to tak Apple povedal.

rýchlejšie na iOS

zachytenie chyby v prípade zlého formátu

omnoho mocnejšie

Page 49: Ať se z kódu nepráší! 2013

CODESCHOOL

Learn by doing

lekcia

challange, badge

iOS, HTML5, CSS3, Ruby on Rails, AngularJS...

Page 50: Ať se z kódu nepráší! 2013

LYNDA.COM

Dobrý zdroj znalostí

Page 51: Ať se z kódu nepráší! 2013

OHLOH.NET

hodnotenie open source projektov

Page 52: Ať se z kódu nepráší! 2013

SE-RADIO.NET

Page 53: Ať se z kódu nepráší! 2013

GOURCE

http://code.google.com/p/gource/

Page 54: Ať se z kódu nepráší! 2013

KVALITA KÓDU

Kód sa viackrát číta, než sa píše.

Review kódu

Page 55: Ať se z kódu nepráší! 2013

CURL

curl http://www.fi.muni.cz -o index.html

http://curl.haxx.se/

Page 56: Ať se z kódu nepráší! 2013

CURL PROGRAMUJE!

curl http://www.fi.muni.cz --libcurl download.c

gcc -lcurl download.c download

./download

Page 57: Ať se z kódu nepráší! 2013

LICENCIE

Free software

GNU/GPL, LGPL

Open source

BSD, MIT, Apache

business friendly

Page 58: Ať se z kódu nepráší! 2013

ČÍTAJTE LICENCIE

Copyright (c) 2002 JSON.org

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

The Software shall be used for Good, not Evil.

Page 59: Ať se z kódu nepráší! 2013

ČÍTAJTE LICENCIE

Copyright (c) 2002 JSON.org

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

The Software shall be used for Good, not Evil.

Page 60: Ať se z kódu nepráší! 2013

AŤ SE Z KÓDU NEPRÁŠÍ!

Juraj Michálek6. 5. 2012 - FI MUNI - Brno

http://georgik.sinusgear.com