HTML

Programozó Páternoszter

Ez a Programozó Páternoszter (PP) blogja, a programozásról szól. Aktualitása, hogy a Debreceni Egyetem Informatikai Kara Magasszintű programozási nyelvek 1-2, C++ esattanulmányok, Java esettanulmányok című kurzusainak blogja is egyben.

A vadászat

A Debreceni Egyetem Programozói Évkönyve: az UDPROG projekt. A szakmai fórumunk a Facebook-en. Az új előadások a prezin.
A régi előadások:
Prog1:
1. C bevezetés
2. C tárgyalás
3. C befejezés
4. C a gyakorlatban
5. C++ bevezetés
6. C++ tárgyalás
7. C++ befejezés
8. C++ a gyakorlatban
9. Java platform bevezetés
10. Kvantuminformatikai alg. bev.
Prog2:
1. Java bevezetés
2. Java tárgyalás
3. Java befejezés
4. Java a gyakorlatban
5. Software Engineering bev.
6. Java EE bevezetés
7. AspectJ bevezetés
8. BPMN-BPEL SOA programozás
9. C++ haladó
10. Tensorflow

Kövess engem!

Friss topikok

Linkblog

YANonymous = YANA + Anonymous = You Are Not Anonymous

2013.09.26. 19:16 nb

"MORPHEUS: This is the Construct. It is our loading program.  We can load anything from clothes, to weapons, to training simulations. Anything we need."
http://www.imsdb.com/scripts/Matrix,-The.html

YANonymous = YANA (You Are Not Alone)  + Anonymous = You Are Not Anonymous

Az app képletének értelmezése:

  1. Anonymous: az alkalmazás teljesen anonim úgy a felhasználó, mint az általa jellemzett további szereplők esetén.
  2. You Are Not Alone: sokan készítik el a kapcsolati hálójukat
  3. Ami feladatunk az 1.) és 2.) alapján a felhasználók valódi közösségi hálózatának a felderítése (tehát az anonimítás olyan értelmű "törése", hogy azt továbbra sem tudjuk, hogy valójában ki-kicsoda, de azt igen, hogy a felvitt anonim szereplők kinek a kiei)

Ez az alapfeladat és alap app, ahol a kapcsolati hálót a YANonymous Construct program építi fel, amelyekből a YANonymous Puzzle építi fel a közösségi hálót. Előbbi háló tehát kicsi, lokális és anonim, utóbbi globális és az előbbiekből számított.

Előző posztunknak megfelelően a héten folytatjuk a lokális kapcsolati háló megadását biztosító Androidos kliensprogram - a névadása (lásd a mottót) tekintetében a Mártrix ihlette - Construct fejlesztését. Fontos szempont, hogy a háló megadásánál az adatokat szolgáltató felhasználó és az általa megadott további szereplők is anonímek maradjanak (az más kérdés, hogy párhuzamosan megkezdjük a ConstructGPS fejlesztését is, amelybe olyan funkciókat ad majd, amelyek bizonyos értelemben odavágnak az anonimitásnak...! )

Feladatok

Nem felejthetjük el, hogy a fejlesztés egyik hordozója a prog2 kurzus (illetve a prog2-esek bejöhetnek a Java esettanulmányokra is, ahol ugyanez a téma, csak fokozottabb a tempó, hiszen ott ez a fejlesztés elsődleges cél). Szóval jövő hétre prog2-ből írásban kérek pár észrevételt, hogy mi a különbség az alábbi első 5 Maven forráscsomag között. Természetesen a lényeg az src könyvtárakban lévő néhány Java forrás összehasonlítása!

Emlékezz az első laborra, ezeket a forrásokat felhasználva könnyen fel tudod éleszteni a projekteket az ADT Bundle Eclipse-ében, de immár nem IDE rabszolgaként akár a Maven-elis dolgozhatsz, lásd a csomagokbeli README állományt. (Android/Java kezdőknek javaslom, hogy 1-2 hétig még maradjanak az Eclipse-ben.) De már most +10 pont, aki az előző pont feladatait Maven projektként készíti el, adja be, természetesen feladatonként.

Az 5.tar.bz2 itt tart:

yanoc5.png

a pártos profilt használja, lásd a Unidentifiable.java forrást a csomagban

package hu.unideb.inf.batfai.yanonymous5;

interface Unidentifiable {

    void next();
    int getColor();

    interface PoliticalAffinity extends Unidentifiable {

        @SuppressWarnings("serial")
        public static final java.util.Map<String, Integer> partyColors = java.util.Collections
                .unmodifiableMap(new java.util.LinkedHashMap<String, Integer>() {
            {
                put("Party",
                        android.graphics.Color.rgb(0x01, 0x0a, 0xbf));
                put("Fidesz",
                        android.graphics.Color.rgb(0xef, 0x9a, 0x2b));
                put("MSZP",
                        android.graphics.Color.rgb(0xef, 0x07, 0x0c));
                put("KDNP",
                        android.graphics.Color.rgb(0xf1, 0xec, 0x5b));
                put("Jobbik",
                        android.graphics.Color.rgb(0x4d, 0x53, 0x53));
                put("LMP",
                        android.graphics.Color.rgb(0x1d, 0x8e, 0x06));
                put("YANO",
                        android.graphics.Color.rgb(0x80, 0xe3, 0x05));

            }
        });
    }

    interface Archetype extends Unidentifiable {

        @SuppressWarnings("serial")
        public static final java.util.Map<String, Integer> relationship = java.util.Collections
                .unmodifiableMap(new java.util.LinkedHashMap<String, Integer>() {
            {
                put("Relationship",
                        android.graphics.Color.rgb(0x01, 0x0a, 0xbf));
                put("Csajom",
                        android.graphics.Color.rgb(0xef, 0x9a, 0x2b));
                put("Fiúm",
                        android.graphics.Color.rgb(0xef, 0x07, 0x0c));
                put("Muter",
                        android.graphics.Color.rgb(0xf1, 0xec, 0x5b));
                put("Fater",
                        android.graphics.Color.rgb(0x4d, 0x53, 0x53));
                put("Tesó",
                        android.graphics.Color.rgb(0x1d, 0x8e, 0x06));
                put("Szomszéd",
                        android.graphics.Color.rgb(0x80, 0xe3, 0x05));

            }
        });
    }
}

25 pontért bővítsd úgy a programot, hogy az élekre és a csomópontokra kiírja a, de szépen ám az iménti kulcsok neveit! +10 pont, ha egy gombbal ezt a kiírást ki/be lehet kapcsolni.

A reguláris feladat, amely mindenkinek kötelező az 5 csomag rövid írásbeli összevetése, hogy az i+1 csomag miben több, mint az i (hasonlításonként max 1-2 mondat).

S itt az én protóm a hatosra:

yanoc3.png

További trófeák: a Construct-os apk-t, ha kiteszed, akkor 5 pont annak, aki teszteli Neked és talál egy BUG-ot, amelyet a fejlesztő elismer - s 5 pont a fejlesztőnek is, ha javítja és a bejelentő ezt elfogadja a BUG javításának.

A hetes plussz fícsörei:

  • üres terület húzásával lehet mozogni a kapcsolati hálón ("végtelen" távolságba bármely irányba)
  • egy módosított Android logó jelzi, melyik csomópont vagyok én

yano7.png

A nyolcas plussz fícsörei:

  • más mozgatás
  • pager

yanoc8.png

38 komment

A bejegyzés trackback címe:

https://progpater.blog.hu/api/trackback/id/tr305534484

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

veni_vidi_vici 2013.09.27. 07:03:34

Az élekre és csúcsokra kiirja a kulcsok neveit, 25 pont.
Egy gombbal lehet váltani a szöveg megjelenítése és elrejtése között, 10 pont.

screen1: imagerz.com/QE5PDEtvAwMCUAoeEwVQ
screen2: imagerz.com/QE5PDEtvAwMCUAoeEgVQ

Cvanger 2013.09.27. 07:12:10

@veni_vidi_vici: Király, hogy elforgattad a szöveget, megcsinálom én is, grat! :D

nb · http://fersml.blog.hu 2013.09.27. 08:33:27

Igen, jól néznek ki! Még a pontok kapcsán azzal is számoljatok most, hogy Maven vagy nem Maven a megoldásotok. (A szövegelfogratás külön feladat is lesz, majd figyeld és azt is könyveld el magadnak.)

ShuffleSource 2013.09.27. 16:56:58

A poszt címe el lett írva, így kicsit mást jelet:
You Are Not Anonymous...

ShuffleSource 2013.09.28. 09:38:33

@nb: hát eredetileg nem az lett volna, hogy You Are Not Alone + Anonymus? -> ugye nem vagy egyedül, de adataidat anonym módon kezeljük...

Ehelyett most az van kiírva, hogy You Are Not Anonymus -> nem vagy névtelen (Tehát tudunk - vagy tudni akarunk - rólad mindent?)

Legalább is én így értelmeztem... És ez a második verzió nekem nem éppen pozitív jelentésű, ellenben az elsővel!

Ugye a hiba csak a blogposzt címében van, alatta már jól van leírva!

nb · http://fersml.blog.hu 2013.09.28. 10:01:48

@ShuffleSource: kétségtelen, hgy egyensúlyozunk az anonimítás bástyázó sziklákon :)

A jelen pillanatban magam így értelmezem az app alábbi képletét:

YANonymous = YANA (You Are Not Alone) + Anonymous = You Are Not Anonymous

1.) Anonymous: az alkalmazás teljesen anonim úgy a felhasználó, mint az általa jellemzett további szereplők esetén.

2.) You Are Not Alone: sokan készítik el a kapcsolati hálójukat

3.) a mi feladatunk az 1.) és 2.) alapján a felhasználók valódi közösségi hálózatának a felderítése (tehát az anonimítás olyan értelmű törése, hogy azt továbbra sem tudjuk, hogy valójában ki-kicsoda, de azt igen, hogy ezek az anonim szereplők kinek a kiei)

Ez az alapfeladat és alap app. Erre épül a ConstructGPS, amely folyamatosan nyomja a felhasználó GPS koordinátáit, de ez már egy másik történet :)

ShuffleSource 2013.09.28. 10:50:47

@nb: Értem, én azt hittem a poszt címéből véletlenül maradt ki az ALONE szócska...

nb · http://fersml.blog.hu 2013.09.30. 14:32:38

adt-bundle-linux-x86_64-20130522/sdk/tools$ ./android avd
adt-bundle-linux-x86_64-20130522/sdk/platform-tools$ ./adb install "az apk elérési útja, ahová lementetted"/valami.apk

veni_vidi_vici 2013.09.30. 16:20:56

+20 pont az órán a scrollozás megvalósításáért

Cvanger 2013.09.30. 17:14:04

+20 pont a scrollozásért

László Béres 2013.09.30. 21:27:15

Jo estet mindenkinek! A ma delutani(14-16 orai) csoportban Szabolcs programjat teszteltem es talaltam benne egy hibat. Ha egy elen keresztul huzunk egy masik "leagazast" akkor az atmeno ponton tuli vonalra kattintva nem lehet valtoztatni a kapcsolatot, csak az atmeno pont elott lehet a kapcsolatot valtoztatni.

Cvanger 2013.10.01. 08:26:26

@László Béres: Igen, valós a probléma, de nem amiatt, hogy egy másik ponton keresztülhúzod, hanem azért mert az élek kiválasztásakor a legközelebbit válassza, ami speciális esetben, ahhoz vezethet, hogy másik él lesz kiválasztva és módosítva, mint amit szerettél volna. Elismert bug, javítom.

Disassemblinator777 2013.10.02. 19:07:27

Cvanger programjában találtam bugot:
Ha csak egy csúcs van és úgy scrollozok, akkor kifagy a progi.

+ 5 pont.

Cvanger 2013.10.03. 09:07:46

a gomb nem működik, tudok róla, most próbálom

B.Norbi93 2013.10.03. 22:22:03

Pártok és kapcsolatok kiíratása (25 pont) + szöveg láthatósága (10 pont)
www.dropbox.com/s/ijcb9w2j709cijd/affinity.avi

A "névadás" egyelőre kicsit statikus, abban az értelemben, hogy utólag nem igazán lehet változtatni a szövegen (a csomópont(ok) törlése nélkül)

APK frissítve:
www.dropbox.com/s/lc9fkzns4kl8n2f/MyFirstApp.apk

nb · http://fersml.blog.hu 2013.10.04. 08:27:46

@B.Norbi93: még csak a videót néztem, tehát a felhasználói élményről nem tudok nyilatkozni, csak a látványról. Ami nagyon tetszik, hogy totálisan megvalósítottad a use case azon részét, hogy akár szabadszavas infókat is be lehessen vinni. De a videón az kicsit nehézkesnek tűnik, hogy így kell bevinni az "alapban kattintható" infókat is (de majd újra írok, ha kipróbáltam telefonon).

B.Norbi93 2013.10.05. 23:19:28

@nb: Az ötlet az volt, hogy a kapcsolatokat egyénileg lehessen megadni, aztán ha már ott vagyunk, akkor adjuk meg a pártot is :)

Új verzió:
- csomópont szerkesztése, törlése (nem t'om utóbbiért jár-e pont (5. lépés), mert nem lehúzással csináltam :) )
- a helyi menü megvalósítása miatt a bugok elkerülése végett egy csomópont nem lehet a másik sugarában
- mivel a kapcsolatokat nem lehet szerkeszteni, a párbeszédablakban kötelező megadni (persze ha a "vissza" gombbal kilépünk az activityből akkor ez nem érvényes)
- mentés, betöltés (20 pont)
- plusz hozzáadtam még egy "mentés törlése" gombot

www.dropbox.com/s/n2hndvtvu5pnkif/save.avi

Frissített APK:
www.dropbox.com/s/lc9fkzns4kl8n2f/MyFirstApp.apk

Pontok (ebben minden prog2-be beadott feladat benne van, a kérdőjelesekért nem tudom, hogy jár pont):
www.dropbox.com/s/0sefawz2w6h08c5/prog2pontok.ods

Cvanger 2013.10.06. 19:38:05

a pontjaim:
5 pont : a húzásnak nyoma legyen
25 pont : az élekre és a csúcsokra írás
20 pont : a scrollozás

Cvanger 2013.10.06. 19:39:18

+ 15 pont : clear + upload

veni_vidi_vici 2013.10.07. 14:28:27

+5 pont a project felélesztéséért mavenben az órán

VSanyi94 2013.10.11. 14:22:49

checkstyle hibák javítása előtt:
kepfeltoltes.hu/view/131011/checkstyle01_www.kepfeltoltes.hu_.png

után:
kepfeltoltes.hu/view/131011/checkstyle02_www.kepfeltoltes.hu_.png

+10 pont

Pontjaim:
20 pont Humán Genom program átírása C++-ból Javaba
3 pont órán feltett kérdés
10 pont checkstyle

Összesen: 33 pont

B.Norbi93 2013.10.11. 17:41:48

Ha még lehet:

Who won the WC 2010?
imagerz.com/QE4XCktvAwMCUV9FFAVQ

15 pont, feltéve, hogy nem gond, hogy nincsenek validálva az xml-ek

Checkstyle hibák javítása:
1537-ről
imagerz.com/QE4XCktvAwMCUV9FEgVQ

1173:
imagerz.com/QE4XCktvAwMCUV9FFQVQ

(10 pont)

Tovább nem voltam hajlandó a szóközöket + tabulátorokat javítgatni :)

Cvanger 2013.10.13. 19:39:31

a mavennel kapcsolatban tud valaki segíteni? gondoltam megoldom magamtól, de nem sikerült a ferSML-t akartam mvn site-olni és ezt a hibát kaptam:
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.791s
[INFO] Finished at: Sun Oct 13 19:37:21 CEST 2013
[INFO] Final Memory: 13M/213M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.0-beta-3:site (default-site) on project PublicResourceFCforFerSML: Unable to parse configuration of mojo org.apache.maven.plugins:maven-site-plugin:3.0-beta-3:site for parameter plugin: Cannot find setter, adder nor field in org.apache.maven.plugins.site.ReportPlugin for 'inherited' -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] cwiki.apache.org/confluence/display/MAVEN/PluginConfigurationException

A.Betti 2013.10.13. 19:45:27

Who won the WC 2010:

kepfeltoltes.hu/131013/whowonthewc_www.kepfeltoltes.hu_.png

Pontok:
3 pont órai kérdés
15 pont Who win the WC 2010

B.Norbi93 2013.10.14. 20:21:45

Gráf mentése: (5 pont)

Szintén SharedPreferences-t használtam: egy SharedPreferences változónak értéket adunk a getSharedPreferences() fv-vel. Ehhez nyitunk egy Editort (SharedPreferences.Editor v = <előbbi változó>.edit()), majd egy for ciklussal végigmegyünk az ArrayListeken, és az adott indexű elemek értékeit kimentjük a sorszám alapján megkülönböztetve, pl.: name0, x0, y0, name1, x1, y1 stb.., egyszerű string és int összefűzése (editorváltozó.putInt()/Float/Double/String stb), végül egy editorváltozó.commit()-tal végrehajtjuk a mentést. (ugyanezt végrehajtjuk a vonalakkal)
Betöltésnél hasonlóan járunk el, csak itt nem kell editor, egyszerűen a SharedPref. változóból egy getInt()/Float stb...-vel kivesszük az adatokat. Először kiürítjük az ArrayListet, a for cikluson belül pl az Anonymous ArrayListhez mindig hozzáadunk egy Anonymoust (anonyms.add(new Anonymous)), majd beállítjuk az értékeit az elmentett adatok alapján.

Gyakorlaton mentett állás választása: 15 pont
www.dropbox.com/s/pvkgpr8whzz0aa8/saveslot.avi

Szövegesen szerkeszthető kapcsolatok+pártok: 10 pont
süti beállítások módosítása