Affichage des articles dont le libellé est Recent Questions - Stack Overflow. Afficher tous les articles
Affichage des articles dont le libellé est Recent Questions - Stack Overflow. Afficher tous les articles

lundi 31 août 2015

PortAudio: Playback lag at default frames-per-buffer

I'm trying to play audio in Go, asynchronously, using PortAudio. As far as I'm aware PortAudio handles its own threading, so I don't need to use any of Go's build-in concurrency stuff. I'm using libsndfile to load the file (also Go bindings). Here is my code:

type Track struct {
    stream   *portaudio.Stream
    playhead int
    buffer   []int32
}

func LoadTrackFilesize(filename string, loop bool, bytes int) *Track {
    // Load file
    var info sndfile.Info
    soundFile, err := sndfile.Open(filename, sndfile.Read, &info)
    if err != nil {
        fmt.Printf("Could not open file: %s\n", filename)
        panic(err)
    }
    buffer := make([]int32, bytes)
    numRead, err := soundFile.ReadItems(buffer)
    if err != nil {
        fmt.Printf("Error reading from file: %s\n", filename)
        panic(err)
    }
    defer soundFile.Close()

    // Create track
    track := Track{
        buffer: buffer[:numRead],
    }

    // Create stream
    stream, err := portaudio.OpenDefaultStream(
        0, 2, float64(44100), portaudio.FramesPerBufferUnspecified, track.playCallback,
    )
    if err != nil {
        fmt.Printf("Couldn't get stream for file: %s\n", filename)
    }
    track.stream = stream

    return &track
}

func (t *Track) playCallback(out []int32) {
    for i := range out {
        out[i] = t.buffer[(t.playhead+i)%len(t.buffer)]
    }
    t.playhead += len(out) % len(t.buffer)
}

func (t *Track) Play() {
    t.stream.Start()
}

Using these functions, after initialising PortAudio and all the rest, plays the audio track I supply - just. It's very laggy, and slows down the rest of my application (a game loop).

However, if I change the frames per buffer value from FramesPerBufferUnspecified to something high, say, 1024, the audio plays fine and doesn't interfere with the rest of my application.

Why is this? The PortAudio documentation suggests that using the unspecified value will 'choose a value for optimum latency', but I'm definitely not seeing that.

Additionally, when playing with this very high value, I notice some tiny artefacts - little 'popping' noises - in the audio.

Is there something wrong with my callback function, or anything else, that could be causing one or both of these problems?

Thanks.



via Chebli Mohamed

DockerHub Private Repo Login. More secure way?

I've seen articles such as this one about pulling from private repos and the "best" way to do it. What I understand is, if I want to automate any infrastructure to pull my docker images from dockerhub I need to:

  • Have a user I can login with.
  • Save the users creds in some application that will spin up my infrastructure (be it EC2 User data, a config file for ansible, or ENV variables in some API).
  • When the machine spins up it uses this user's credentials to login and place a token on the machine. All is well.

I'm wondering if there is any functionality to use application keys / tokens instead of needing to tie this to a user. It seems like it would be more secure/convenient if I could manage application keys to do have access to my user/organization's DockerHub account. Then I could yank the keys or change my password and not worry about the sky falling.

Is something like this available, coming, or is there a solution I haven't come across yet?

Thanks!



via Chebli Mohamed

Android Studio. Can i use startLockTask() on app X from app Y knowing the packageName of X?

The titles says it all. I want to start the LockTask introduced in lollipop on an app from another app. Can i do such thing ? Ty.



via Chebli Mohamed

How to add placeholder text to yii inputfield?

iam using clevertech an extension for YII, dose anybody know how i can add my own custom placeholder text inside the input. Below is an example of the input filed:

<?php echo $form->textFieldGroup(
            $model,
            'textField',
            array(
                'wrapperHtmlOptions' => array(
                    'class' => 'col-sm-5',
                ),
                'hint' => 'In addition to freeform text, any HTML5 text-based input appears like so.'
            )
        ); ?>



via Chebli Mohamed

Object prototype and class in Javascript

I'am working with javascript but I've doubts with my code because the function does not work as I want. This is my code:

classDescuentos = function () {
};

classDescuentos.prototype = {
var cellsEditar = function (row, column, columnfield, value, defaulthtml, columnproperties) {
            var data = grid.jqxGrid('getrowdata', row);
            var style = "";

            if (data.editar == 't' && data.apr_ger == 'f') {
                style = "display:block";
            } else {
                style = "display:none";
            }

            var html = "";
            var activarBotEnv = actBtn;
            html = "<div id='activarEdicion_" + row + "' style='width:99%;text-align:center;" + style + "' ><a href='#' id='editarHora' name='editarHora' title='Editar Total horas descontar' onclick=classDescuentos.prototype.editarHora(" + row + ");><img style='padding-bottom: 0px' height='17px' width='17px' src=../../../media/img/edit.png></a></div>";
            return html;
        };

editarHora: function (row) {
        var grid = $(this.gridData);
        grid.jqxGrid('setcolumnproperty', 'des_hor_ger_format', 'editable', true);
        grid.jqxGrid('begincelledit', row, "des_hor_ger_format");

        grid.on('cellendedit', function () {
            grid.jqxGrid('setcolumnproperty', 'des_hor_ger_format', 'editable', false);
        });
    }
};

Should allow edit the data of a cell of a jqxGrid of JQWidget and take the data that is entered but still leaves the original data before modifying it.

What am I doing wrong does not work?



via Chebli Mohamed

How to find the source table rows used by a big complex query

We have a huge Oracle SQL query in our project which is using many views and tables for source data.

Is there any way to find the list of rows fetched from each source table by this big query when I run it?

Basically what we are trying to do is to create the bare minimum number of rows in the source tables so that the outer most big query returns at least a single record.

I have tried to run the smaller queries individually. But it is really time consuming and tedious. So I was wondering if there is a smarter way of doing this.



via Chebli Mohamed

How do I use try, except?

I am currently making a program for the raspberry pi2 I just brought and with the help from some other members, have got it to work most of the time. however there are some case where it won't work because a field doesnt exist in the json if im correct. the code i have is:

import urllib.request
import json

r = urllib.request.urlopen("http://ift.tt/1NTgHGN").read()
rr = r.decode()

obj = json.loads(rr)

# filter only the b16 objects
b16_objs = filter(lambda a: a['routeName'] == 'B16',  obj['arrivals'])

if b16_objs:
# get the first item
b16 = next(b16_objs)
my_estimatedWait = b16['estimatedWait']

my_destination = b16['destination']
print(my_estimatedWait)

My problem is that when routeName B16 is not in the json, an error comes up. I've tried to use the try and catch feature but I could not get this to work. Is there another way of catching this error and displaying a message saying its not present?

The try and catch

try:
b16 = next(b16_objs)
except:
print("there are no records of this")



via Chebli Mohamed

Orchard 1.9.1 Duplicating Menu

I just upgraded an Orchard website from 1.7.1 to 1.9.1 and it seems like a number of things were broken in the process. I managed to fix all of them except for one - all of my navigation items in the menu lost the links to their associated content items, so when I started adding them back in for some reason the front-end start duplicating everything. I'm on a custom theme and the menu started showing up properly, but it's duplicating all menu items right in the root with <option /> tags. I can hide those through CSS easily enough, but it's also adding "undefined" in here too, something I can't seem to target and hide.

Bad Site Navigation

Any idea why this is happening?

Update I figured out the "undefined" part - it's more of the content menu items being blown out, but this time it was a custom link (just a #, since it didn't go anywhere) that didn't have a URL, so it was showing as undefined. The rogue <option /> values are still here, though I can hide them via CSS. I just don't like that they are in the markup at all.



via Chebli Mohamed

Can not get All Post from Json API to ionic

i have this steps to get posts of category from Json API WordPress, And my problem is cannot print post title and content in page but in console i get it.

My code:-

     myApp.factory('Allposts',['$http', '$q',function($http,$q){
        var allposts = [];
        var pages = null;
        return {

        GetAllposts: function (id) {
            return $http.get("http://localhost/khaliddev/azkarserv/?json=get_category_posts&id="+id+"&status=publish",{params: null}).then(function (response) {
               items = response.data.posts;
               console.log(items); 
                allposts = items;
                return items;
            });
        }
        }
}]);

The http://localhost/khaliddev/azkarserv/?json=get_category_posts&id=16&status=publish is like

{"status":"ok","count":1,"pages":1,"category":{"id":16,"slug":"%d8%a3%d8%b0%d9%83%d8%a7%d8%b1-%d8%a7%d9%84%d8%a7%d8%b3%d8%aa%d9%8a%d9%82%d8%a7%d8%b8","title":"\u0623\u0630\u0643\u0627\u0631 \u0627\u0644\u0627\u0633\u062a\u064a\u0642\u0627\u0638","description":"","parent":0,"post_count":1},"posts":[{"id":31,"type":"post","slug":"%d8%a3%d8%b0%d9%83%d8%a7%d8%b1-%d8%a7%d9%84%d8%a7%d8%b3%d8%aa%d9%8a%d9%82%d8%a7%d8%b8","url":"http:\/\/localhost\/khaliddev\/azkarserv\/2015\/08\/28\/%d8%a3%d8%b0%d9%83%d8%a7%d8%b1-%d8%a7%d9%84%d8%a7%d8%b3%d8%aa%d9%8a%d9%82%d8%a7%d8%b8\/","status":"publish","title":"\u0623\u0630\u0643\u0627\u0631 \u0627\u0644\u0627\u0633\u062a\u064a\u0642\u0627\u0638","title_plain":"\u0623\u0630\u0643\u0627\u0631 \u0627\u0644\u0627\u0633\u062a\u064a\u0642\u0627\u0638","content":"<p>\u0627\u0644\u062d\u0645\u0640\u062f \u0644\u0644\u0647 \u0627\u0644\u0630\u064a \u0623\u062d\u0640\u064a\u0627\u0646\u0627 \u0628\u0639\u0640\u062f \u0645\u0627 \u0623\u0645\u0627\u062a\u0640\u0646\u0627 \u0648\u0625\u0644\u064a\u0647 \u0627\u0644\u0646\u0640\u0634\u0648\u0631.<\/p>\n","excerpt":"<p>\u0627\u0644\u062d\u0645\u0640\u062f \u0644\u0644\u0647 \u0627\u0644\u0630\u064a \u0623\u062d\u0640\u064a\u0627\u0646\u0627 \u0628\u0639\u0640\u062f \u0645\u0627 \u0623\u0645\u0627\u062a\u0640\u0646\u0627 \u0648\u0625\u0644\u064a\u0647 \u0627\u0644\u0646\u0640\u0634\u0648\u0631.<\/p>\n","date":"2015-08-28 23:14:11","modified":"2015-08-28 23:14:11","categories":[{"id":16,"slug":"%d8%a3%d8%b0%d9%83%d8%a7%d8%b1-%d8%a7%d9%84%d8%a7%d8%b3%d8%aa%d9%8a%d9%82%d8%a7%d8%b8","title":"\u0623\u0630\u0643\u0627\u0631 \u0627\u0644\u0627\u0633\u062a\u064a\u0642\u0627\u0638","description":"","parent":0,"post_count":1}],"tags":[],"author":{"id":1,"slug":"azkarserv","name":"azkarserv","first_name":"","last_name":"","nickname":"azkarserv","url":"","description":""},"comments":[],"attachments":[],"comment_count":0,"comment_status":"open","custom_fields":{}}]}

and view is

<ion-view view-title="">

<ion-nav-title>
  <img class="logo" src="img/logo.png">
</ion-nav-title>


<ion-content class="padding" lazy-scroll>
<div class="row no-padding HomeRowsList">

<dive class="item itemfull" ng-repeat="post in allposts">

<div class="item item-body">
<div>
{{ post.title }}
<div class="title-news">
<div class="title" ng-bind-html="post.content"></div>
</div>
</div>
</div>
</div>
</div>
</ion-content>

</ion-view>



via Chebli Mohamed

Javascript Math.pow() returning Uncaught TypeError: Cannot read property '0' of undefined

I can't seem to figure out why this:

Populations[0] = Math.round(Math.pow((Populations[0] * Math.E), (popGrowth * 5)));
Populations[1] = Math.round(Math.pow((Populations[1] * Math.E), (popGrowth * 5)));
Populations[2] = Math.round(Math.pow((Populations[2] * Math.E), (popGrowth * 5)));

returns this:

Uncaught TypeError: Cannot read property '0' of undefined

JSFiddle:http://ift.tt/1MYsAut

window.addEventListener('load', function () {
    document.getElementById("buttonEndTurn").addEventListener('click', endTurn());
});
var Populations = [100, 100, 100];
var popGrowth = [0.1797];
var resourceGold = [1000, 1000, 1000];
var resourceWood = [500, 500, 500];
var minerPercent1 = 0.5;
var minerPercent2 = 0.75;
var minerPercent3 = 0.1;
var Miners = [0, 0, 0];
var Loggers = [0, 0, 0];
var endTurn = function (Populations,popGrowth,resourceGold,resourceWood,minerPercent1,minerPercent2,minerPercent3,Minners,Loggers) {
    popGrowth += Math.random;

    Populations[0] = Math.round(Math.pow((Populations[0] * Math.E), (popGrowth * 5)));
    Populations[1] = Math.round(Math.pow((Populations[1] * Math.E), (popGrowth * 5)));
    Populations[2] = Math.round(Math.pow((Populations[2] * Math.E), (popGrowth * 5)));
        
 for (var m = 0; m < 3;m++) {console.log(Populations[m])};
    
    Miners = [Math.round(Populations[0] * minerPercent1),
    Math.round(Populations[1] * minerPercent2),
    Math.round(Populations[2] * minerPercent3)];

    Loggers = [Populations[0] - Miners[0],
    Populations[1] - Miners[1],
    Populations[2] - Miners[2]];
    for (var i = 0; i < 3; i++) {
        console.log(Miners[i]);
    }
    for (var j = 0; j < 3; j++) {
        console.log(Loggers[j]);
    }

    resourceGold[0] += Miners[0] * 100;
    resourceGold[1] += Miners[1] * 100;
    resourceGold[2] += Miners[2] * 100;

    resourceWood[0] += Loggers[0] * 100;
    resourceWood[1] += Loggers[1] * 100;
    resourceWood[2] += Loggers[2] * 100;

    for (var k = 0; k < 3; k++) {
        console.log(resourceGold[k]);
    }

    for (var l = 0; l < 3; l++) {
        console.log(resourceWood[l]);
    }
};
<script src="http://ift.tt/1oMJErh"></script>
<button id="buttonEndTurn">End Turn</button>
<canvas id="hexCanvas" width="800" height="600" style="width:800px;height:600px" />


via Chebli Mohamed

How to save user preferences in Core Data?

I am using Core Data to save my data. I preloaded the data from a .csv file. I have an entity named places, with an attribute isFavorite. I am populating the data in UITableViewController. TableViewCell consists of some labels and a button. When the user taps the button the value of isFavorite changes from false to true and vice-versa. I want to show the list of favorite places of the user in a separate tableView. Only those places are shown in favorite tab whose isFavorite value is true.

The problem I am facing is, when the value of isFavorite changes on the click of the button say from false to true and the user closes the app. Upon relaunch the isFavorite value changes back to the one that is saved in the .csv file. How can I save the user changes? So that the favorite places remain in the favorite list.

I read a few articles about NSUserDefaults but couldn't understand properly. If anyone can help me considering my app's scenario, would be appreciated.



via Chebli Mohamed

How can I tell if IPython is running?

I have an IPython notebook. I have a long-running loop that produces no output in one of the code blocks. It's not this, but imagine it was this:

for i in range(100):
    time.sleep(2)

I started the code block running a while ago, and now I can't tell whether it's finished, or whether it's still running.

All the IPython status bar says at the top is Last Checkpoint: 23 minutes ago (autosaved). There's nothing in the browser tab to show whether it's running code, either.

I don't want to start the next block because I don't know if this block has finished.

And I don't want to stop the kernel and add print statements to this block, because if it's 80% of the way through, I don't want to kill it and restart it!

Is there anything in IPython - either the browser window or the console - that indicates what code is running right now?



via Chebli Mohamed

unit testing angularjs app with ocLazyLoad

What is the setup I need to run unit tests for an AngularJS app using ocLazyLoad?

What should karma.conf.js look like? I assume I need test-main.js like examples using Karma, Jasmine, and RequireJS, but maybe I'm wrong.

I'm using Webstorm to run the tests, or command line.

I'm starting with testing my services, but eventually I want to run end-to-end tests with Protractor to test the DOM.



via Chebli Mohamed

Recursive call in the try-catch statement without StackOverflowError exception

I have the following snippet of code:

public static void main(String[] args) {
    foo();
}
public static void foo() {
    try {
        foo();
    } catch (Throwable t) {
        foo();
    }
}

Can anyone explain me what's going on here? In details, please.


I have changed this piece and added println methods to show something:

...
try {
    System.out.println("+");
    foo();
} catch (Throwable t) {
    System.out.println("-");
    foo();
}
...

I'm getting something like this (the process hasn't stopped):

+
+
+
+
+--
+--
+
+--
+--
+
+
+--
+--
+
+--
+--
+
+
+
+--
+--

I haven't had any exception (like StackOverflowError).



via Chebli Mohamed

HSQL DB SQL function calculation gives different results between HSQLDB and Oracle

I am getting different results between HSQLDB and Oracle. Am I missing anything in the query?

      SELECT   (-300 / (24*60)) AS resultVal FROM DUAL;
      ---0.2083333333333333333333333333333333333333 oracle
      --0 hsqldb

Thanks Jugunu



via Chebli Mohamed

Fetch data from multiple tables in django views

In Django views, I want to fetch all details(Workeraccount.location,Workeravail.date, Workerprofile.*) for any particular wid=1.

SQL Query:

select * from Workeraccount,Workeravail,Workerprofile where Workerprofile.wid=1 and Workerprofile.wid=Workeravail.wid and Workeraccount.wid=Workerprofile.wid;

The corresponding models are as follows:

class Workeraccount(models.Model):
    wid = models.ForeignKey('Workerprofile', db_column='wid', unique=True)
    location = models.ForeignKey(Location, db_column='location')
    class Meta:
        managed = False
        db_table = 'workerAccount'

class Workeravail(models.Model):
    wid = models.ForeignKey('Workerprofile', db_column='wid')
    date = models.DateField()
    class Meta:
        managed = False
        db_table = 'workerAvail'

class Workerprofile(models.Model):
    wid = models.SmallIntegerField(primary_key=True)
    fname = models.CharField(max_length=30)
    mname = models.CharField(max_length=30, blank=True, null=True)
    lname = models.CharField(max_length=30)
    gender = models.CharField(max_length=1)
    age = models.IntegerField()
    class Meta:
        managed = False
        db_table = 'workerProfile'`



via Chebli Mohamed

cronjob to remove file where the name contains the date of 7 days ago

I have created a cronjob to backup a database into a sql file with a date in the file name:

5 0,10,15,20 * * * /usr/syno/mysql/bin/mysqldump -u<user> -p<password> --opt DATABASE > "/volume5/DATABASE$(date +\%F).sql"`

I am trying to have an other cronjob to delete the file of 7 days ago

0 0 * * * rm /volume5/DATABASE$(/bin/date -D "%s" -d $(( $(/bin/date +\%s ) - 604800 )) +\%F).sql

for example, if the actual date is 2015-08-31, the file of 7 days ago is DATABASE2015-08-24.sql, which should be deleted.

the removal does not work by cron, but does by manual command, so I guess it is only a missing "escape", but I can't figure out where.

Does anybody know where is the problem ?

The "X days ago" option does not work with this date bin.



via Chebli Mohamed

SPARQL-Query doesn't yield expected results

I have a Virtuoso Server and run a SPAQRL-Query against it, which doesn't yield the expected results. I'm not quiet sure, what the problem might be, so I hope some of you have an idea where to look.

This is my SPARQL-Endpoint

The query

select * where {?s ?p
   &lt;http://ift.tt/1KzV6lR;. }

yields one result:

http://ift.tt/1JxDF3j    http://ift.tt/1KzV5ON

When I use the result for ?p in the query like:

select * where {?s &lt;http://ift.tt/1JxDF3l; &lt;http://ift.tt/1KzV6lR;. }

I don't get any result.

For other objects, it works perfectly, like:

select * where {?s &lt;http://ift.tt/1JxDF3l; &lt;http://ift.tt/1KzV6lW;. }

I have no idea, why it works for one Uri but not for the other. Any help pointing me towards the answer is appreciated!



via Chebli Mohamed

For will not iterate through entire list in Python

so I'm learning Python and having trouble with this small program I've designed to try and take my Codecademy skills further.

car_models = ["Ferrari", "Lamborghini", "Aston Martin", "BMW"]
bad_cars = ["Toyota", "Mazda", "Ford", "Hyundai"]

for gcar, bcar in zip(car_models, bad_cars):
    ask = input("What is your favorite car brand? ")
    if ask == gcar:
        print("Yes!")
    elif ask == bcar:
        print("Ew!")
    else:
        print("The model is not listed")
    break

When I run this, it will only pop up with an answer if the model is the first one on the list, otherwise, it just tells you that the model is not listed even though it is.

Thanks!



via Chebli Mohamed

What can I do so that the program is not starting to draw from the last point added?

I am trying to create a program such that there is a square going inside another square (slightly rotated), and another square going inside and so on. I've managed to create a program that does that. But I want the program to make several boxes like that. Take a look at the illustration to get a better idea:

My problem is that after drawing the first box, and then trying to draw the second, the "cursor" drawing the lines is kind of stuck at the last point, so it's drawing the line from the last point of my first square to the first point in the second square, like this:

So as you can see inside pointPanel-constructor I've tried clearing the list, and resetting the counter and i-variable, but no luck. Is there any modifications I can do such that I don't have this problem? I've tried placing the clear()-instruction other places. But maybe I'm missing something.

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.util.ArrayList;

import javax.swing.JFrame;
import javax.swing.JPanel;




public class Art {
    ArrayList<Point> points = new ArrayList<>();
    int i =0;
    public static void main(String[] args) {
        new Art();
    }

    public Art() {
        JFrame frame = new JFrame("Art");
        frame.add(new pointPanel());

        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);


    }

    public class pointPanel extends JPanel{
        //Constructor
        public pointPanel(){
            points(0, 100);
            //points.clear();
            points(500, 200);

        }

        @Override
        //Dimension
        public Dimension getPreferredSize() {
            return new Dimension(800, 600);
        }



        public void points(double x, double y){
            double t=0.1;   //constant
            final int side = 100;
            int counter=0;

            while (counter<20){
                 //Init the first points-->
                Point p  = new Point((int)(x),      (int) (y)           );
                Point p1 = new Point((int)(x+side), (int)(y)            );
                Point p2 = new Point((int)(x+side), (int) (y-side)      );
                Point p3 = new Point((int)(x),      (int)(y-side)       );
                Point p4 = new Point((int)(x),      (int)(y)            );
                //-->and adding them to the list
                if (counter == 0) {
                    points.add(p);
                    points.add(p1);
                    points.add(p2);
                    points.add(p3);
                    points.add(p4);
                }


                //Dynamic part: 
                //If the method has been run earlier - place points making it possible to draw lines
                if (counter>0){
                    x=(1-t)*points.get(i).x + t * points.get(i+1).x;
                    y=(1-t)*points.get(i).y + t * points.get(i+1).y;
                    points.add(  new Point( (int) x, (int) y)  );
                    i++;    
                }

                if (counter>0){
                    x=(1-t)*points.get(i).x + t * points.get(i+1).x;
                    y=(1-t)*points.get(i).y + t * points.get(i+1).y;
                    points.add(  new Point( (int) x, (int) y)  );
                    i++;
                }

                if (counter>0){
                    x=(1-t)*points.get(i).x + t * points.get(i+1).x;
                    y=(1-t)*points.get(i).y + t * points.get(i+1).y;
                    points.add(  new Point( (int) x, (int) y)  );
                    i++;
                }

                if (counter>0){
                    x=(1-t)*points.get(i).x + t * points.get(i+1).x;
                    y=(1-t)*points.get(i).y + t * points.get(i+1).y;
                    points.add(  new Point( (int) x, (int) y)  );
                    i++;
                }

                if (counter>0){
                    x=(1-t)*points.get(i).x + t * points.get(i-3).x;
                    y=(1-t)*points.get(i).y + t * points.get(i-3).y;    
                    points.add(  new Point( (int) x, (int) y)  );       
                    i++;
                }



                counter++;

            }//while
        //counter=0;
        //i=0;
        x=0;
        y=0;

        }//metode

        //Paint-method
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2d = (Graphics2D) g;

            g2d.setColor(Color.RED);
            for (int i = 0; i < points.size()-1; i++) {
                g2d.drawLine(points.get(i).x, points.get(i).y, points.get(i+1).x, points.get(i+1).y);
            }

           g2d.dispose();
        }   
    }
}



via Chebli Mohamed