Reklama
Strona 1 z 2 12 OstatniaOstatnia
Pokazuje wyniki od 1 do 15 z 18

Temat: Mój kawałek kodu.

  1. #1
    konto usunięte

    Domyślny Mój kawałek kodu.

    Hej,

    Tym razem troche inna zabawa, "mój kawałek kodu". Zabawa polega na wklejeniu kawałka kodu nad którym teraz pracujecie, tudzież piszecie w wolnej chwili. Można oczywiście zadawać pytania odnośnie kodu, komentarze (krótki komentarz co kod ma robi jest mile widziany). Jako że jestem inicjatorem, zaczynam:


    Poniższy kod wykorzystuje tzw. class policies (Alexandrescu, Modern C++ Design, 2005) do "konfigurowania" klas. Mająć klasę bazową, poprzez szablony możemy konfigurować jej implementacje (przypomina to wzorzec strategii).

    Kod:
    #include<list>
    #include<vector>
    
    template<typename T>
    class IDataHolder
    {
    public:
    	virtual void push(const T& value) = 0;
    	virtual T pop() = 0;
    };
    
    template<typename T = void>
    class DataList : public IDataHolder<T>
    {
    	std::list<T>	m_data;
    public:
    	virtual void push(const T& value) { m_data.push_back(value); }
    	virtual T pop() { T t = m_data.front(); return t; }
    };
    
    template<typename T = void>
    class DataVector : public IDataHolder<T>
    {
    	std::vector<T>	m_data;
    public:
    	virtual void push(const T& value) { m_data.push_back(value); }
    	virtual T pop() { return m_data.front(); }	
    };
    
    
    template<typename T, typename C = IDataHolder<T>>
    class CharQueue
    {
    	C m_data;
    public:
    	void push(const T& value) { m_data.push(value); }
    	T pop() { return m_data.pop(); }	
    };
    
    int main()
    {
    	CharQueue<int, DataList<int>> x1;
    	x1.push(10);
    	int x = x1.pop();
    
    	CharQueue<float, DataVector<float>> x2;
    	x2.push(10.f);
    	float f = x2.pop();
    
        return 0;
    }
    Kto następny?:)

  2. #2

    Notoryczny Miotacz Postów Absynt jest teraz offline
    Avatar Absynt
    Data rejestracji
    2009
    Wiek
    30
    Posty
    1,266
    Siła reputacji
    15

    Domyślny

    Kod:
    package assignment1;
    
    import java.awt.*;
    
    public class Square  
    {   
       private double x,y;    
       
       public Color color;    
    
       private int side;
    
       public Square()
       {
          x = 100;
          y = 100;
          side = 5;
    	  color = Color.orange;
       }
      
       
       public void draw(Graphics g) 
       {
          g.setColor(color);
          g.fillRect( (int)(x), (int)(y), (int)(2*side), (int)(2*side) );
       }
       
       public void setSide(int s)
       {
           side = s;
       }
       
       public int getSide()
       {
           return side;
       }
        
       public int getX()
       {
            return (int) x;
       }
        
       public int getY()
       {
            return (int) y;
       }
       
       public void setX(int xIn)
       {
           x = xIn;
       }
       
       public void setY(int setY)
       {
           y = setY;
       }
    }
    Kod:
    package assignment1;
    
    import java.awt.*;
    
    public class Ship extends Square  
    {   
    
    
        public Ship()
        {
            super();
        }
    
       public void draw(Graphics g) 
       {
          int side = super.getSide();
          int x = super.getX();
          int y = super.getY();
          
          g.setColor(color);
          g.fillRect( (int)(x), (int)(y), (int)(2*side), (int)(2*side) );
            
          g.setColor(color);
          g.fillRect( (int)(x), (int)(y - (2*side)), (int)(2*side), (int)(2*side) );
          
          g.setColor(color);
          g.fillRect( (int)(x - (2*side)), (int)(y - (2*side)), (int)(2*side), (int)(2*side) );
          
          g.setColor(color);
          g.fillRect( (int)(x + (2*side)), (int)(y - (2*side)), (int)(2*side), (int)(2*side) );
          
          g.setColor(color);
          g.fillRect( (int)(x), (int)(y - (4*side)), (int)(2*side), (int)(2*side) );
       }
        
    }
    Kod:
    package assignment1;
    
    import java.awt.*;
    
    public class FleetOfShips
    {
        Ship[] fleetMembers; 
        int total = 5; 
     
        FleetOfShips() 
        {
            fleetMembers = new Ship[total]; 
            for (int i = 0; i < total; i = i++) 
            {
                fleetMembers[i] = new Ship();  
                fleetMembers[i].setX (i * 10); 
                fleetMembers[i].setY (i * 10);
            }
        }
        
        public void draw(Graphics g)
        {
            for (int i = 0; i < total; i = i++)
            {
                fleetMembers[i].draw(g); 
            }
        }
        
        public void goSouth(int howFar)
        {
            for (int i = 0; i < total; i = i + 1) 
            {    
                fleetMembers[i].setY (fleetMembers[i].getY() + howFar); 
            }
        }   
    }
    Szykuje sie do studiow, teraz akurat ucze sie javy. Ten "program" ma za zadanie stworzyc kilka statkow i przy kliknieciu myszka maja sie poruszac o ustalony dystans w ustalonym kierunku.

    Protipy jak uproscic, ulepszyc kod etc. bardzo mile widziane :D

  3. Reklama
  4. #3
    konto usunięte

    Domyślny

    Kilka tipów by się znalazło, jednak powiedz mi, to jest "skończony" projekt? Czy zamierzasz dodać jakieś nowe features (inne statki, inne ruchy statkow itd.) ?

  5. #4

    Notoryczny Miotacz Postów Absynt jest teraz offline
    Avatar Absynt
    Data rejestracji
    2009
    Wiek
    30
    Posty
    1,266
    Siła reputacji
    15

    Domyślny

    Atm to bylo tylko zadanie do szkoly, dostalismy liste rzeczy ktore nasz program musi robic/uzyc. Wczesniej nic ciekawego raczej nie robilem, tylko jakis glupi kalkulator we flashu albo hello world, czy proceduralne programy w konsoli :p

  6. #5
    Avatar LGTK
    Data rejestracji
    2009
    Położenie
    Podlaskie, Białystok
    Wiek
    32
    Posty
    267
    Siła reputacji
    15

    Domyślny

    Kod:
     private void bgThread_DoWork(object sender, DoWorkEventArgs e)
            {
                string host = this.host.Text;
                string acc = this.acc.Text;
                string pass = this.pass.Text;
    
    
    
                int loop = 0;
                r = new Reported();
                this.BeginInvoke(showReport, r);
                this.BeginInvoke(setStatusText, status, "Working", Color.Green);
    
                if (this.loop.Checked)
                    setLoopValue(host, ref loop);
    
             
                if (command.Enabled)
                    this.BeginInvoke(addTextToForm, r, "Run command " + command.Text + " for " + (loop > 1 ? "arry ip's" : "one ip"));
                else this.BeginInvoke(addTextToForm, r, "Try run shell on " + (loop > 1 ? "arry ip's" : "one ip"));
                if (paraller.Checked)
                #region paraller loop
                {
                    pOptions.CancellationToken = cancelSrc.Token;
                    pOptions.MaxDegreeOfParallelism = System.Environment.ProcessorCount;
                    try
                    {
                        for (int j = (twoLevelArry.Checked ? getStartIp(host, 0) : 0); j < (twoLevelArry.Checked ? 256 : 1); ++j)
                         {
                             Parallel.For(getStartIp(host, 1), (loop > 0 ? 256 : getStartIp(host, 1) + 1), pOptions, i =>
                             {
                                 
                                 pOptions.CancellationToken.ThrowIfCancellationRequested();
                                 doEachLoop(nextIp(host, i), acc, pass);
                             });
                             nextIpSecondLevel(ref host, j);
                          }
                    }
                    catch 
                    {
                        this.BeginInvoke(setStatusText, status, "Canceled", Color.Red);
                        this.BeginInvoke(addTextToForm, r, "Canceled");
                        return;
                    }
                }
                #endregion
                else
                #region normal loop
                    for (int j = (twoLevelArry.Checked ? getStartIp(host, 0) : 0); j < (twoLevelArry.Checked ? 256 : 1); ++j)
                    {
                        for (int i = 0; i <= loop; i++)
                        {
                            if (((BackgroundWorker)sender).CancellationPending)
                            {
                                e.Cancel = true;
                                this.BeginInvoke(setStatusText, status, "Canceled", Color.Red);
                                this.BeginInvoke(addTextToForm, r, "Canceled");
                                return;
                            }
                            doEachLoop(host, acc, pass);
                            nextIp(ref host);
                        }
                        nextIpSecondLevel(ref host, j);
                    }
                    #endregion
    
                this.BeginInvoke(setStatusText, status, "Done", Color.Blue);
            }
    PIŻMAG

  7. #6
    Avatar Haan
    Data rejestracji
    2005
    Położenie
    Irlandia
    Wiek
    35
    Posty
    2,081
    Siła reputacji
    20

    Domyślny

    Nie uzywacie komentarzy w kodzie?
    ipse se nihil scire id unum sciat

  8. #7
    Avatar LGTK
    Data rejestracji
    2009
    Położenie
    Podlaskie, Białystok
    Wiek
    32
    Posty
    267
    Siła reputacji
    15

    Domyślny

    @Haan zależy czy robię coś skomplikowanego czy nie.
    PIŻMAG

  9. #8

    Data rejestracji
    2010
    Posty
    2,657
    Siła reputacji
    16

    Domyślny

    Kod:
    
    <?php
    /**
     * User: [...]
     * Date: 4/4/14
     * Time: 3:41 PM
     */
    
    namespace Infrastructure\PDO;
    
    /**
     * Class DB
     * @author chriso , edited by [...]
     * @description Provides a lazy-connecting extension around PDO.
     * @see http://stackoverflow.com/questions/5484790/auto-connecting-to-pdo-only-if-needed
     * @package Infrastructure\PDO
     */
    class LazyPDOConnection extends \PDO {
    
        protected $_config = array();
    
        protected $_connected = false;
    
        public function __construct($dsn, $user = null, $pass = null, $options = null) {
            //Save connection details for later
            $this->_config = array(
                'dsn' => $dsn,
                'user' => $user,
                'pass' => $pass,
                'options' => $options
            );
        }
    
        public function checkConnection() {
            if (!$this->_connected) {
                parent::__construct($this->_config['dsn'],$this->_config['user'],$this->_config['pass'],$this->_config['options']);
                $this->_connected = true;
            }
        }
    
        public function query($query) {
            $this->checkConnection();
            return parent::query($query);
        }
    
        public function exec($query) {
            $this->checkConnection();
            return parent::exec($query);
        }
    
    
        public function commit() {
            $this->checkConnection();
            return parent::commit();
        }
    
        public function prepare($statement, $driver_options = array()) {
            $this->checkConnection();
            return parent::prepare($statement, $driver_options);
        }
    
    }
    Lazy-loading dla PDO.

  10. #9
    konto usunięte

    Domyślny

    Cytuj Haan napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Nie uzywacie komentarzy w kodzie?
    @Haan
    Było ciężko napisać, ma być ciężko zrozumieć.

  11. #10
    Avatar zakius
    Data rejestracji
    2008
    Położenie
    The Internets
    Wiek
    33
    Posty
    11,075
    Siła reputacji
    24

    Domyślny

    Ja komentuje tylko rzeczy niezrozumiale dla mnie, ewentualnie calle do pojebanych metod zewnetrznych, czyli w sumie patrz pt 1, reszta się sama dokumentuje lub proste znalezienie danej metody w klasie wszystko tłumaczy (maksymalnie 1 poziom póki co także nie ma problemów), coś niegrzecznego, ale stworzonego z lenistwa do mojej małej zabawki wrzucę jak wlacze kompa. i może coś jeszcze ciekawego znajdę i przysiade do kodzenia w najblizszym czasie to zobaczymy
    Problem z komputerem? Instrukcja diagnostyczna
    Cytuj Vegeta napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Baby maja wymagania jak windows vista, takze nigdy nie wiesz.
    Cytuj Dzzej napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Moje posty to esencja głupoty.
    "Don't worry, I'm just a pervert"

  12. #11

    Data rejestracji
    2010
    Posty
    2,657
    Siła reputacji
    16

    Domyślny

    Dobry kod OOP sam powinien umieć się udokumentować.
    Tak poza tym, to algorytmy warto komentować.

  13. #12
    Avatar zakius
    Data rejestracji
    2008
    Położenie
    The Internets
    Wiek
    33
    Posty
    11,075
    Siła reputacji
    24

    Domyślny

    moje "cudo" xD
    Kod:
    class DBO extends PDO
    {
        public function query($q, $t=0)
        {
            try
            {
                $z = $this->prepare($q);
                $z->setFetchMode(PDO::FETCH_OBJ);
                $z->execute();
                switch($t)
                {
                    case QT::SINGLE:
                        return $z->fetch();
                    case QT::MULTI:
                           return $z->fetchAll();
                    case QT::NR:
                        return ;//
                }
                return $z->fetch();
            }
            catch(PDOException $e)
            {
                echo $e->getMessage();
            }
            return NULL;
        }
        public function __construct($a, $b, $c)
        {
            parent::__construct($a, $b, $c);
            $this->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
        }
    }
    
    abstract class QT
    {
        const SINGLE = 0;
        const MULTI = 1;
        const NR = 2;
    }
    wyjątek traktuję tak, bo to dev mode póki co
    ogólnie pewnie niektórych rozbolą oczy czy głowy, ale jak wspominałem: jestem leniwy, a to takie coś, co przede wszystkim ma działać
    (jakby jakiś protip inny niż "spal to" to poproszę :D)
    Problem z komputerem? Instrukcja diagnostyczna
    Cytuj Vegeta napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Baby maja wymagania jak windows vista, takze nigdy nie wiesz.
    Cytuj Dzzej napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Moje posty to esencja głupoty.
    "Don't worry, I'm just a pervert"

  14. #13

    Data rejestracji
    2010
    Posty
    2,657
    Siła reputacji
    16

    Domyślny

    W sumie nie rozumiem po co zatracasz funkcjonalnosc query() zamiast dodac nowa ( queryAndFetch xD )

  15. #14
    Avatar zakius
    Data rejestracji
    2008
    Położenie
    The Internets
    Wiek
    33
    Posty
    11,075
    Siła reputacji
    24

    Domyślny

    rly, nawet nie zerknąłem, że ma metodę o tej nazwie, no to podmienię :D
    anyway, w sumie tylko te 3 co oplotłem swoją funkcją mi są potrzebne. chyba
    Ostatnio zmieniony przez zakius : 04-04-2014, 22:51
    Problem z komputerem? Instrukcja diagnostyczna
    Cytuj Vegeta napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Baby maja wymagania jak windows vista, takze nigdy nie wiesz.
    Cytuj Dzzej napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Moje posty to esencja głupoty.
    "Don't worry, I'm just a pervert"

  16. #15
    Avatar Lord
    Data rejestracji
    2012
    Położenie
    CPK xDDD
    Wiek
    29
    Posty
    10,451
    Siła reputacji
    18

    Domyślny

    Kod:
    class string;
    
    	//Prototype of string class
           _self.init();
    
       
    	proc _self.puts;
    	puts(_self);
    	end
    
          proc _self.execute;
    	system(_self);
    	end
    
    	proc _self.pos(1);
    	pos(_self.pos.arg0,_self);	
    	return $0
    
    	proc _self.concat(1);
    	concat(_self,_self.concat.arg0);
    	end
    	proc _self.comparestr(1);
    	comparestr(_self,_self.comparestr.arg0);
     	return $0
    	proc _self.comparetext(1);
    	comparetext(_self,_self.comparetext.arg0);
    	return $0
    	proc _self.MsgBox;
    	ShowWindow(_self);
    	end;
    
    
    
    	//Constructor
    	proc _self.init
    	_self=" ";
          "End"
    endclass;
    Fragment stdliba mojego języka.
    Narazie pracuje nad dziedziczeniem, ale utknąłem w pętli między konstruktorami ^^
    Ostatnio zmieniony przez Lord : 05-04-2014, 14:43

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. Kawałek od znamojego ( Rap )
    Przez Alex Fortune w dziale Muzyka
    Odpowiedzi: 7
    Ostatni post: 26-02-2014, 07:24
  2. Kawałek z mocnym bassem w refrenie
    Przez kernilov w dziale Muzyka
    Odpowiedzi: 2
    Ostatni post: 27-09-2013, 23:22
  3. Kawałek - rap.
    Przez mlody100200 w dziale Muzyka
    Odpowiedzi: 2
    Ostatni post: 04-07-2012, 15:47
  4. Odpowiedzi: 8
    Ostatni post: 27-12-2011, 12:37
  5. Co to za kawałek?
    Przez bober1761990 w dziale Muzyka
    Odpowiedzi: 0
    Ostatni post: 08-12-2011, 22:00

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •