Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Témata - Ondrej Nemecek

Stran: [1]
1
Ahoj všem,

mám Raspberry PI s Linuxem a několika síťovými rozhraními (eth0, wlan0, wlan1). Jedno wifi rozhraní (wlan1) potřebuji izolovat tak, abych:

  • se s ním mohl připojit na jiné AP
  • mohl získat IP adresu z tamního dhcp serveru
  • mohl odeslat nějaké pakety na tamní síť (a pak se zase odpojit, je to jednorázová konfigurační operace)

Adresaci předem neznám a je reálné, že bude kolidovat s existující adresací ostatních síťových rozhraní (wlan1 typicky dostane 192.168.0.0/24 adresu která bude dost pravděpodobně kolidovat s existujícím připojením do lokální sítě na eth0 rozhraní). Jak toho nejelegantněji docílit? Zatím mě napadla virtualizace (kvm - na raspberry os zatím nefunguje, lxc - nezkoušel jsem a nejsem si jist, čeho všeho tam lze docílit). Existuje nějaké praktičtější kanonické řešení? Jde mi o řešení pro ipv4, síťová rozhraní jsou všechna typu ethernet a wifi.

Děkuji za podněty  :)

2
Dobrý večer,

řeším takový problém s resize okna v javafx - okno obsahuje SplitPane a v něm dva AnchorPane, jeden z nich má omezení na šířku (obr 1).

Pokud posouvám SplitPane, nedovolí mi zmenšit šířku  pod limit nastavený u toho jednoho AnchorPane (obr 2). Avšak zmenšením celého okna je možné limit překonat a pokud se tak stane, objeví se divné odsazení od okraje AnchorPane, vypadá to jako chyba (obr 3).

Co dělám špatně? Níže je úplně jednoduchý fxml dokument, kde to lze pozorovat - stačí otevřít ve SceneBuilderu a dát náhled CTRL+P a šoupak splitem a měnit vleikost okna. Zdá se, že to je specialita SplitPane, v případě jiného kontejneru se mi to neděje. Chci umožnit, aby si uživatel mohl upravit velikost prvků pomocí splitu ale i velikost okna...  >:(

Díky za popostrčení  :)


obr. 1
obr. 2
obr. 3
Kód: [Vybrat]
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.SplitPane?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.Pane?>

<SplitPane dividerPositions="0.5" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="150.0" prefWidth="300.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
<items>
<AnchorPane style="-fx-background-color: yellow;">
<children>
<Pane layoutX="5.0" layoutY="5.0" minWidth="100.0" style="-fx-background-color: green;" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
</children>
</AnchorPane>
<AnchorPane layoutX="10.0" layoutY="10.0" style="-fx-background-color: yellow;">
<children>
<Pane layoutX="5.0" layoutY="5.0" style="-fx-background-color: green;" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
</children>
</AnchorPane>
</items>
</SplitPane>

3
Takže nevím, zda je root ideální server pro tento dotaz, ale zkusím to  :)

Mám v javě

Kód: [Vybrat]
package cz.exambuilder.entity.domain.calendar;
(...)
public class Calendar {
    protected static final Set<Image> imagesQueue = new LinkedHashSet<>();
    (...)
}

a ten set imagesQueue je neprázdný:

Kód: [Vybrat]
imagesQueue.isEmpty(); // dává false
imagesQueue.size(); // dává 1

Problém je, že položky toho setu nemůžu získat:

Kód: [Vybrat]
imagesQueue.iterator().hasNext(); // dává false
imagesQueue.iterator().next(); //  hodí java.util.NoSuchElementException.

Podstatné, že k tomuto stavu dojde až po cca měsíčním běhu aplikace, zprvu to funguje normálně.

Čichal bych tady nějaký problém v implementaci equals(), hashCode() nebo compareTo(), ale na nic jsem nepřišel, používám výchozí implementace z frameworku. Možná vstoupí do hry nějaký JIT nebo přesun instancí do jiné oblasti paměti a změní se hashcode nebo něco podobného? Na co se mám zaměřit? Uvažoval jsem ještě nad tím, zda se to do tohoto stavu nemůže dostat špatně ošetřeným konkurenčním přístupem, ale nedokážu si to představit.

Pozitivní je, že mám k dispozici testovací prostředí, kde to ještě funguje i prostředí, kde to už nefunguje - do obou se můžu se připojit debuggerem nebo z vývojové konzole umožňující spouštět interaktivně kód.

Na co se mám zaměřit? Kdy k něčemu takovému může v principu vůbec dojít?

Používám java version "1.8.0_161", apache-tomcat-8.5.5, Debian 4.8.4-1 a Brightspot ve verzi v3.2.7178-2110f8

Aktuální testovací kód:

Kód: [Vybrat]
import cz.exambuilder.entity.domain.calendar.Calendar;
import java.util.stream.*;
import java.lang.reflect.*;
import org.slf4j.*;

public class Code {
    public static Object main() throws Throwable {

        Logger log = LoggerFactory.getLogger(Code.class);

        // tady získám tu privátní instanci imagesQueue, abych se na ní mohl podívat:

        Calendar calendar = Query.from(Calendar.class).first();
        Field field = Calendar.class.getDeclaredField("imagesQueue");
        field.setAccessible(true);
        Set<Image> imagesQueue = (Set<Image>) field.get(calendar);

        // tady zkouším, co imagesQueue obsahuje:

        log.info("*** imagesQueue.isEmpty(): " + imagesQueue.isEmpty()); // false
        log.info("*** imagesQueue.size(): " + imagesQueue.size()); // 1

        log.info("*** imagesQueue.stream(): " + imagesQueue.stream().map(i -> String.format("%s (%s)", i.getTitle(), i.getId())).collect(Collectors.toList())); // prázdná kolekce
        log.info("*** imagesQueue.iterator().hasNext(): " + imagesQueue.iterator().hasNext()); // false

        try {
           log.info("*** imagesQueue.iterator().next(): " + imagesQueue.iterator().next()); // NoSuchElementException
        } catch(Exception e){
            log.info("*** exception: " + e);
        }
       
        return "SEE LOGS";

    }
}

Dík za nápady!

Stran: [1]