Új hozzászólás Aktív témák
-
axioma
veterán
En tobb dologban nem ertek egyet a sonarlint-tel, de ettol me'g orulok hogy van, mert neha egyszeru teveszteseknel felhivja a figyelmet a potencialis hibara.
A baj az amikor kotelezove teszik az osszes sonarlint hiba javitasat, es olyan szornyek keletkeznek, hogy az mar nem konnyiti hanem neheziti a megertest. Mert azt megertem hogy a sonarlint celja olyan szintre levinni a fejlesztes szinvonalat hogy egysegsugaru programozo is kovetni tudja, de ez minden csak nem hatekony, ha nem egysegsugaruakkal csinalod amugy a projektet.
Nyilvan SZVSZ. -
válasz
floatr #11098 üzenetére
Szerintem van ráció abban amit a SonarLint ír. Lehet, hogy komplexebb lesz a dolog de akkor is biztonságosabbá válik azáltal, hogy valmait kell kezdened a DTO-val és nem tudod csak úgy pusztán elmeneteni.
Az egész sonar opcionális, nem muszály használnod. De egyszerűen, egy plugin telepítésével összeségében nagyon sokat tudsz javítani a minőségen.
Én általában a nálam okosabb emberek által javasolt dolgokat elfogadom, persze nem jelenti azt, hogy neked is el kell. Régóta létezik, ha akkor szar lenne, azért bízom benne, hogy nem létezni.
Ki volt és megint hol demagóg? Valláshábórú != demagógia (bocs, ha nem nekem szólt).
-
floatr
veterán
A legjobban az tetszik, hogy a sonar oldalán lévő leírás és javaslat is tele van agyatlan anti-patternekkel. Sajnos a sonar tele van hülyeséggel, nem véletlen, hogy meghagyták a lehetőségét annak, hogy kikapcsolj egy-egy szabályt
Ha DTO-kat gyártasz akár rétegenként, akár microservice-enként, akkor plusz konverziós lépéseket teszel a kódba potenciális hibaforrásokként. A leggyakoribb az, amikor egy fejlesztő erre rá van kényszerítve, hogy gépiesen átdobálja az adatokat, néha konvertál típusok közt. Komplexebb lesz a kód, és semmi nem teszi biztonságossá abban az irányban, amit a sonar szabályban és a linkjeiben -- leginkább csak -- sugallnak. A mintakód félrevezetően gyatra, hűen tükrözi a témakörben gyakori ultragagyi minimalista tutorialok szellemét. Nem ment semmi és senki automatikusan, ellenőrizetlenül, validáció, autentikáció és access control nélkül, pláne nem a Controllerből, ha publikus endpointról van szó. Ha microservice-eket használunk, akkor meg egyenesen hiba eltakarni egy újabb réteggel az adatokat pl az api gateway elől. Hasonló okokból teljesen feleslegesnek tartom az OpenSessionInView filterrel kapcsolatos felindulásokat.
A leggyakoribb érdemi oka annak, hogy DTO-t vagy projekciót kell használni, az szokott lenni, hogy teljesítménybeli optimalizációt kell csinálni, így bizonyos lekérdezéseket view-ra specializáltan kell implementálni, vagy mert a frontend nem tud mihez kezdeni összetett adatokkal. Esetleg az api gateway összegyúr két service-ből származó adatot, de az meg szvsz tervezési hiba, ha erre kényszerült rá valaki.
Egy esetben látom még a létjogosultságát a DTO-szerű képződményeknek, ha az Entity/Document bloated lenne egyébként. Ez meg szubjektív.
Nem kell, hogy egyetértsünk, de a dogmatikus kijelentések teszik tönkre a szakmát.
-
-
togvau
senior tag
megint szívás a keveréssel... spring MVC controller, JSF-el. Tökjó volt addig, amíg nem kéne egy jsf oldalt GET url paraméterrel megnyitni.
De ott elakadtam:@GetMapping(path = "/public/list/{id}")
public String publicwish(@PathVariable long id, Model model) {
System.out.println("Controller:"+id);
model.addAttribute("id", id);
return "public/list.xhtml";
}nem spring controllernél van az f:viewParam, de itt sehogy se működik. 1 darab id-t kellene csak a jsf managedbeannek eljuttatni, akárhogy. Ezt a model-t se tudom hogy lehetne elérni jsf-ből. A returnbe bármi mást írok, akkor 404 lesz. Így bejön az id a controllerhez, de a jsf-be nem megy tovább. Erre mi a megoldás?
Najó találtam rá egy megoldást, de az igen csúnya
-
togvau
senior tag
nem túl fontos, csak optimalizációs kérdés:
van egy jpql query, hogy pl:SELECT w FROM Stuff s JOIN User u ON s.owner_id=u.id WHERE u.id=?1
De itt épp nem kellene semmi a User-ből, szükségtelen a join, az owner_id-re keresni a where-ben elég lenne.
TehátSELECT s FROM Stuff s WHERE s.owner_id=?1
de így elszáll, hogy nem találja az owner_id-t, pedig DB szinten van ilyen, csak entity-ben ugye User owner van.
Ilyet így csak natív queryben lehet?
Vagy ilyenkor a DB okosan egyszerűsít, és tudja, hogy a 2.-al kiváltható az első query? -
janos666
nagyúr
-
togvau
senior tag
Na beszívattam magam... már nagyon keveredtek a dolgok, nem akarom újraírni.
Szóval spring MVC, security+JSFMűködik minden, addig, hogy kellene az egyik jsf oldalon egy lekérdezés, ami az oldalt megnyitó belépett org.springframework.security.core.userdetails.User adatai alapján kérdez le.
@Controller-ben tökegyszerű, csak egy @AuthenticationPrincipal MaiUserDetailz user paraméter kell a metódusba. De ez csak @Controller-ben használható, és nekem a @Service-ben kellene, vagy ha nincs rá más megoldás, akkor a jsf beanjének átadni valahogy.
Erre valami ötlet?
-
janos666
nagyúr
Mit szoktatok javasolni, ha valaki ~nulláról akar megtanulni programozni? (Lehet angol, magyar, könyv, videó, ingyenes vagy olcsó fizetős, csak legyen lényegre törő, "intenzív".)
Rám jött a hepp. Minimálisan konyítok a C++ hoz (féléves választható tárgy volt régen egyetemi mérnök képzésen), de azt tanácsolta egy ismerősöm, hogy azt felejtsem el és inkább mondjuk Java (esetleg ~Script). De most még átküldhettek másik topic-ba.
-
válasz
togvau #11078 üzenetére
Ez az egész nekem nagyon nem kerek. Ezt a részt hogy érted? "JSF managedbean (ami a spring miatt inkább @Component)"
A JSF managed beannek @ManagedBeannek kellene lennie, nem @Componentnek. JSF-et és Springet ilyen formában nem szabad keverni. Itt le van egy jó példa, hogy hogyan kellene a Spring+JSF-nek kinéznie: https://www.baeldung.com/spring-jsf -
togvau
senior tag
Ezt meg tudja nekem valaki magyarázni?
JSF frontend, springboot-mvc-data backend. Júzer módosító felületen, egy @PostConstruct init metódus van, ami betölti a júzer listát, egy @Autowired @Service metódust hívva, ami Crudrepositoryt hív.
Ez rendben is megy. Módosítok a felületen (jelszó változtatás), ami hasonlóképpen történik, de hogy a változások rögtön látszódjanak, a JSF managedbean (ami a spring miatt inkább @Component) metódusa ami a servicet meghívja, az újra meghívja az initet, ami szintén, csak a lekérdezést.
Ez megint oké. De ha 2. alkalommal is módosítok valamit, akkor hibernate lazyinitialization exceptionnal elszáll, és mindig ugyan ez lesz ezen túl, ha reloadolom az oldalt, akkor is.
Ha nem megyek el eddig a 2. módosításig, vagy előtte reloadolom az oldalt, nincs ilyen probléma. Akárhányszor nyomogathatom az újratöltést, annyiszor lekérdez, nincs lazy probléma.Mindegyik service metódus javax.transaction. @Transactional
A furcsaság amit itt észrevettem, hogy az első módosítás utáni frissítésnél, ha a managedbean metódus hívja meg az initet, akkor csak a fő tábla selectje megy le, az ahhoz kapcsolódó entityké nem. De ha böngészőben reloadot nyomok, akkor kapcsolódókat is selecteli.
Ugyan az a metódus 2 féle képpen működik? -
disy68
aktív tag
Csak zárójelben. Én egy junior tréning programmal kezdtem egy multinál annó, ahol volt egy gyakorló feladat, ahol kvázi excel jelleggel kellett tudni kezelni cellákat (a cellának lehetett konkrét értéke vagy más cellákra is referáló függvénye). Ekkor futottam bele, hogy java 8-as verzióval bekerült a Nashhorn nevezetű Javascript Engine a JRE-be, amivel elég egyszerűen lehetett kiértékelni az egyszerűbb műveleteket. A js engine JVM byte-kódot generál. Nem használnám production-ben, pláne, hogy a 11-es verzióval deprecated, de érdekes volt, hogy van ilyen is.
-
axioma
veterán
válasz
axioma #11074 üzenetére
"4*(3+sin(12))" -> a szamologepen ezt is ugy irod be leginkabb, hogy 12 sin +3, *4
Ha nagyon muszaj zarojelezest is tudni, akkor is ilyesmi:
4,* -> vissza 4
( -> vissza 0
3, + -> vissza 3
12, sin -> vissza sin(12)
) -> vissza 3+sin(12)
= -> vissza 4*(3+sin(12))
Tehat minden nem szamjegynel vagy 1 vagy 2 parametert kuldesz, ha volt szam akkor azt es a muveletet, ha nem, akkor csak a muveletet (zarojelet, akarmit).
Probald ki a windows tudomanyos szamologepben.
A nehezites a precedencia. De csak az osszeadas, szorzas eseten (max. ha kell hatvanyozas ott is). A sin() es mas 1-operandusu muvelet az mindig arra vonatkozik, amit epp kiir. -
axioma
veterán
válasz
-Faceless- #11072 üzenetére
Me'g mindig nem. A szamologepbe NEM copy-zol olyat ami oda van irva (legalabbis az mar nem szamologep hanem mini-excel...). A szamologep a billentyunyomkodasok menten mukodik. Peldaul azt irja be hogy 12 / 17 sin. Ez lesz a sin(12/17). De mi a fenenek kuldened ebben a formaban a backend-nek? Te a nem szamjegy gombnyomasoknal, ha volt uj szam akkor azt es a muveletet kuldod el, es reszeredmenyt vissza. Tehat 12,/ eseten vissza 12, 17 sin-re vissza a sin(12/17). Ha megengeded a precedenciat (es/vagy zarojelet, de ez azert eggyel komplexebb, en elsore megneznem hogy a feladatleiras alapjan muszaj-e, mert a sima szamologep NEM tudja es a legtobb usernek kb. nem is kell), akkor annyi hogy a backend-en kell egy verem is. De a szamologepen tulkepp forditott lengyel, tokenizalt a bemenet (ugye a sin-ra se a 3 betut kell atkuldeni, hanem egy kodot ami azt jelenti nalad hogy a sin gombot nyomtak meg).
-
floatr
veterán
válasz
-Faceless- #11072 üzenetére
Na most javíts ki ha rosszul értelmezem, de te egy kifejezés kiértékelőt akarsz írni? Mert az azért nem annyira triviális... bár az amőba sem
-
-Faceless-
őstag
válasz
axioma #11071 üzenetére
Enyém minden frontend backend ahogy van.
Most hogy mondod igen ennek több értelme van. Én teljesen úgy gondolkodtam, hogy a műveleti mezőnek TextField-nek kell lennie, és ha mondjuk becopy-zod a "4*(3+sin(12))"-t akkor nincs gombnyomás ami mentén felosztod a műveleteket meg nyeljen le üres zárójelet ilyenek.
De akkor "csak" össze kellene foltoznom egy reguláris kifejezést amivel szétbontom, és műveleti sorrendben végigmegyek tömbbön.Semmis akkor a kérdés, csak évek óta nem csináltam ilyesmit, és túl későn este akartam hozzákezdeni. Inkább le is tagadom, hogy hozzákezdtem volna megy a letagadom kupacba.
-
axioma
veterán
válasz
-Faceless- #11069 üzenetére
Mit szeretnel parse-olni? Ha jol ertem akkor a tied a frontend. Ha meg igy van, akkor a gombnyomasok tulajdonkeppen megcsinaljak neked a tokenizalast, sot tulkepp rogton a kifejezesfat is felepitheted mindig ahogy jon a kovetkezo gombnyomas (nyilvan szamoknal a szamjegyeket erdemes a frontenden osszevarni es 1x konvertalni). De mar csak azert is igy erdemes mukodnie mert a szamologep a reszeredmenyt altalaban mar irja.
Vagy valamit nem ertek jol. -
válasz
-Faceless- #11069 üzenetére
Problémás kód részletet tudnál szolgáltatni?
-
-Faceless-
őstag
Sziasztok!
Számológépet csinálok, és bajban vagyok a string parsing-al. Minél többet gondolkodok rajta annál jobban túlbonyolítom...
Neten keresve, vagy csak kétszámos megoldásokat találok amiben nincs is parsing, vagy visszadob a 120 ezredik split() pont mentén leíráshoz.
Tudnátok esetleg ajánlani valamilyen referenciát/példát ahol bármi hasonló megvan valósítva? Szóban is bőven elég lenne, csak hogy nagyjából milyen módszerrel lenne szépen megoldva.Egy kis rant: nyakamba varrtak egy számológépet amiben minden alapműveletnek, sin, tan cos, asztali, és webes nézettel aminek azonos adatbázisa van, működjön minden fő számrendszerben, minden alap mértékegységet váltson át, és API-n keresztül menjen a valuta váltás.
Mindeközben mások nyamvadt amőbát csinálnak meg recepkönyvet. String in, save click, és csókolom. -
fatal`
titán
válasz
Create. #11065 üzenetére
Szakámban dolgozó, egyetemet otthagyóként hasonlót tudok mondani mint mobal.
Semmit nem tanítanak ott, amit egyébként ne tudnál megtanulni és az átlag melóhoz kellene. Persze vannak területek, amihez kell az egyetemi tudás (matekra gondolok, nem az info részére, utóbbi szerintem könnyebben tanulható egyedül), de ez szerintem kevés területet érint.
Szerintem ehhez a munkához a legfontosabb (a logikus gondolkodáson túl) a hozzállás és az, hogy érdekeljen. Azok közül, akiket csak a pénz motivál, eddig csak kókányolóművészekkel találkoztam. -
2017-ben kezdtem pti-t levelezőn, de az elvárás meg van, viszont tanítani kb semmit se tanítanak. Közben az élet úgy hozta, hogy 1év passzívra kellett tennem magam, ezért most a webleren keresztül webmesternek tanulok. Nem légből kapott ötlet ez, csak magamtól nem minden világos és ezért gondoltam ilyenre is.
-
axioma
veterán
Hat, reszben ertek egyet. Marmint a gondolkodasmodot onmagaban nehez egy ilyen tanfolyamon megszerezni, de az az erzesem hogy ezek a cegek pont azokat probaljak felvenni, akiknel mar van valami analitikus/algoritmikus gondolkodas, arra epitik ra a konkret programozasi tudast, processzt.
Tehat annak javasolhato a tanfolyam, akit amugy is erdekel, kozel all hozza ez a fajta munka (nem a penz miatt), van alapja (mintha csak diplomaval vagy annak kozeli multtal vennenek fel), es hajlando a tanfolyam honapjait csak erre forditani (nem csak esti muszakban tolja at a sajat melojat hogy ne utkozzon, hanem adott esetben este is nekiall kodolni). Ha ez megvan, akkor szerezhet junior szintet, bar nekem nagyon fura hogy miert fullstack-eznek, akkor feluletesebb, mindenbol kevesebb tudas/gyakorlat lesz.
Egyebkent van olyan ismeros aki elegge mas iranyu diplomaszerzes korul vegigcsinalt egy progmat felvetelit, ahhoz ugye info erettsegit (bar asszem kozepszint eleg volt neki), epp halaszt de gondolkodik egy ilyen tanfolyamba atugrasban. Es me'g ot se biztos, hogy felvennek. Szerintem - most meg plane - van annyi jelentkezo, hogy aki bejutott, arra mar igaz lehet hogy eleg valoszinuen kepes lesz junior lenni a vegen. De ez nem azt jelenti, hogy aki kitalalja hogy kiprobalna, az fel ev mulva kesz junior.
Persze tevedhetek en is, de ezzel a felteteles moddal egyutt en hihetonek tartom mar. -
válasz
Create. #11062 üzenetére
Nem.
Ezt ne úgy fogd fel, hogy mondjuk végigcsinálsz egy tanfolyamot és rendelkezel megfelelő tudással, hogy junior lehess. Ez nem egy olyan munka ami határok közé van szorítva, és nem hiszem, hogy fél vagy egy év alatt a gondolkodás módot el lehet sajátítani.
Ez az én véleményem.
-
Sziasztok!
Érdeklődnék, hogy a greenfox vagy a progmasters java fullstack képzésről mi a véleményetek? Adhat annyi tudást, hogy juniorként el lehessen vele helyezkedni?
köszi előre is! -
Hello,
Hazsnált már valaki CameraX -et?
Ilyent kellene alkotnom, hogy CameraX -et használó alkalmazásban a kamera paraméterit állítgatni.Alsó hangon ott akad el a dolog, hogy nem tudom ezeket importálni :
import androidx.camera.camera2.interop.Camera2Interop;
import androidx.camera.camera2.interop.ExperimentalCamera2Interop;
Hogy lehet megmagyarázni a fordítónak (AndroidStudio alatt), hogy ezeket húzza be...?Köszi minden segítséget
-
válasz
bandi0000 #11059 üzenetére
Nem az a baja, hanem hogy nem lenne szabad hívni, csak ugyanabból a library contextből, azaz a CameraX library-ból. Ehhez képest működik.
A forgatás a képernyőt még érteném, hogy nullázza, de egy tök független thread miért döglik el tőle... A kamerás thread meghívja a BT-t jelenleg másodpercenként egyszer.
A forgatást meglátom, hogyan tiltom, mert az UI szempontjából jó lenne, de szerintem a Textureview-t nem kéne forgatni. Fekvő telónál fekvő kép lenne rajta...
-
bandi0000
nagyúr
Java-ban szokott rá nyavajogni, hogy a getContext lehet, hogy nulla, ezért hibát okozhat, persze ettől még lefordul a program
Azt nem tudom, hogy attól van e, de a forgatás nulláz mindent, erre vannak különböző praktikák, amivel el lehet menteni az állapotot
Amúgy meg a Manifest-be tudod beállítani az alapértelmezett nézetet
android:screenOrientation="portrait"
android:screenOrientation="landscape" -
válasz
bandi0000 #11057 üzenetére
??? Nem, panaszkodik az IDE, hogy az úgy nem jó. Viszont most lefordul, meg is jelennek az üzenetek.
static Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
String message = (String) msg.obj; //Extract the string from the Message
Log.d("FCKK:","Handler called w/ " + message);
Toast.makeText(getContext(),message, Toast.LENGTH_SHORT).show();
} };public static void showToast(String text) {
Message msg = Message.obtain(); // Creates an new Message instance
Object message;
msg.obj = text; // Put the string into Message, into "obj" field.
msg.setTarget(handler); // Set the Handler
msg.sendToTarget(); //Send the message
Log.d("FCKK:",text);
}Ami még fura : külön szálon fut a kamera és a BT. Elforgatom a telefont, a kameraképet mire elforgatja, az egy kis idő, egyből eldobja a BT-t... Semmi közük egymáshoz, logban sincs semmi. Visszafordítom, és megy tovább.
Mondjuk a forgatásra nem nagyon van szükség, ki kéne vakarni. -
OK, csináltam egy handlert, amit szépen meg tudok hívni a statikus thread-ekből, megkapja a message-t is. Merthogy a handler is static kell legyen, különben nem lehet meghívni.
De mivel static, még mindig nem lehet belőle meghívni egy toast-ot......amint leírtam, elkezdett működni. A getcontext() hiába nem tetszik az IDE-nek, működik :S
-
-
Két külön probléma volt.
Van egy Activity-m (Android), ami indít 2 szálat (kamerához, Bluetooth-hoz, és ezek külön classban is vannak). Egy bajom az volt, hogy nem tudtam, hogyan kell meghivatkozni a másik szálban levő metódust (azaz hogy a kamera szál által feldolgozott kép alapján adatot küldjek BT-n). Ez már megy.
Ehhez a BT szálat (is) statikussá kellett tenni. Viszont így meg nem tudom, hogyan lehetne toast-ot küldeni az UI-ra, mert az Activity nem statikus, (nem is lehet az) így aztán a RunOnUIThread nem igazán működik. De akkor hogyan lehet? :S -
Ez már megy, de köszi
Egyszerűbb volt : két static class között szépen lehet hívni (simán meg kellett hivatkozni class.metódus formában, és megy). Ott akadtam el, hogy az összes RunOnUIThread-os toast-ot ez kiüti, mert static classból a nem static MainActivity-t kéne elérni. Ezt hogy lehet áthidalni? -
Hello,
Csinált vár valaki olyat Androidon, hogy egy thread-ként fuó class -ból hívott egy másik thread-ban (ami szintén külön class) levő metódot? Nem jövök rá, hogyan... A hívott class public, és a metódus is. A MainActivity - ből szépen működik a hívás, csak a másik szálból nem tudom.
Köszi
-
hefike
tag
Sziasztok!Javafx ittapiros játék,a mellékelt pontig eljutottam,azonban még egy labelbe ki kellene írni,hogy hanyadik kattintásra találtam meg a pirosat....nos ez nem megy ...tudtok segíteni?köszi.
package application;
import java.awt.event.MouseEvent;
import java.util.Random;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.Node;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.OverrunStyle;
import javafx.scene.layout.GridPane;public class Controller {
@FXML
private Label lepes;
@FXML
private GridPane racs;
@FXML
private Button b00;
@FXML
private Button b01;
@FXML
private Button b02;
@FXML
private Button b03;
@FXML
private Button b10;
@FXML
private Button b11;
@FXML
private Button b12;
@FXML
private Button b13;
@FXML
private Button b20;
@FXML
private Button b21;
@FXML
private Button b22;
@FXML
private Button b23;
@FXML
private Button b30;
@FXML
private Button b31;
@FXML
private Button b32;
@FXML
private Button b33;
@FXML
private Button uj;
private int randx=veletlenszam();
private int randy=veletlenszam();
@FXML
void klikk(ActionEvent event) {
System.out.println(event.getSource().toString().substring(11,13));
String hely=event.getSource().toString().substring(11,13);
System.out.println("veletlen="+randx+""+randy);
if(hely.equals(randx+""+randy))
((Node) event.getSource()).setStyle("-fx-background-color:red");
else
((Node) event.getSource()).setStyle("-fx-background-color:black");
}
private int veletlenszam() {
return new Random().nextInt(4);
}
@FXML
void ujra(ActionEvent event) {
System.out.println(racs.getChildren().size());
for(int i=0;i<racs.getChildren().size();i++)
racs.getChildren().get(i).setStyle("-fx-background-color:lightgray");
randx=veletlenszam();
randy=veletlenszam();
}
@FXML
private void handleButtonAction(ActionEvent event) {
int db=0;
db++;
System.out.println(db);
lepes.setText(String.valueOf(db));
}
public void handle(MouseEvent event) {
int count=0;
count ++;
System.out.println(count);
lepes.setText(String.valueOf(count));
}
}
az utolsó két sor a gyenge próbálkozásom,egyenlőre azt szerettem volna,hogy kiírja a kattintások számát egyenlőre,a feltétel azután írtam volna,de ez ki sem ír semmit,nem számol,nem ír.Köszi. -
Hello,
Küzdök egy ideje a dologgal. Valaki tudja, hogyan lehet azt, hogy
- van egy CameraX-es preview-wm egy SurfaceView-n
- ezen teljesen jó kép van, ebből veszek ki adatot
- ezt szeretném feldolgozni (akár egy Analyzer is tökéletes, az kb. működik is), és a feldolgozott képet kitenni valami más view-re, valamint az adatokkal még egyebeket csinálni (elküldeni pl.).Ott akadok el, hogy a képet még csak-csak tudom elemezni az Analyzer-ben, de nem tudom a feldolgozott képet bitmap-é alakítani, hogy pl. egy imageview-re kitegyem. Másik Surfaceview-el is próbáltam, azzal sem ment.
Tud erre valaki tuti eljárást? Köszi minden ötletet
-
disy68
aktív tag
válasz
togvau #11043 üzenetére
Nem írsz arról, hogy a MockMvc-t hogyan használod (a test class hogyan van annotálva). Ha
@SpringBootTest
annotációval használod, akkor explicit be kell konfigurálni a security-t.
részlet a korábbi baeldung cikkből:@Autowired
private WebApplicationContext context;
private MockMvc mvc;
@Before
public void setup() {
mvc = MockMvcBuilders
.webAppContextSetup(context)
.apply(springSecurity())
.build();
}(...)
De én továbbra is TestRestTemplate használatát javaslom, ehhez itt egy kis egyszerű minta.
A DB-s problémád pedig kicsit zavaros, az az "application.properties" részlet meg egy controller post methodja..
-
togvau
senior tag
válasz
disy68 #11042 üzenetére
pl
mvc.perform(MockMvcRequestBuilders.post("/user").header(HttpHeaders.AUTHORIZATION, "Bearer "+testToken).contentType(MediaType.APPLICATION_JSON_VALUE).content(json)).andReturn();
így. Ha kihagyom az autentikációs tokent, akkor is megy. Úgy megy, hogy semmilyen jogosultsági beállítást nem állítottam a tesztben. Ugyan ennyivel elindítva postmanből szépen unauthorized, ahogy kell.A másik, pedig hogy a beadott DML sql-ben lévő insertek lefutnak még egyszer (constraintviolationnal, mert már ugye betöltötte a DB-be), amikor egy ahhoz köze nincs, rest hívást csinálok először. Utána újra próbálva ugyan az a rest hívás lemegy.
Így an a DML beadva az application.properties-ben:@Transactional
@PostMapping(path = "/user")
@ResponseBody ResponseEntity<InfoResponse> createUser(@RequestBody UserDTO userDTO) {
User newUser = new User(userDTO);
return InfoResponse.createResponseEntity(ResponseTypes.SUCCESS, "new user id: "+userRepo.save(newUser).getId(),HttpStatus.CREATED);
} -
disy68
aktív tag
válasz
togvau #11041 üzenetére
Ok, azt hiszem értem mi a félreértés. Ezt írtad: "maradjon futva a junit tesztek lefutása után". Ebből én unit testre asszociáltam és erről is beszéltem.
Erősen kétlem, hogy támogatná bármilyen test framework alapból, hogy utána fusson tovább az alkalmazás, ami a tesztek futtatása miatt indult.
A springboot junit test az meg nem csal, hanem azt csinálja, amit "mondasz" neki. Hogyan hívod most a tesztekben a "rest szolgáltatásokat"? Itt egy baeldung a témakörben. Meg egy TestRestTemplate részletesebb.
-
togvau
senior tag
válasz
disy68 #11040 üzenetére
pontosan azt, amit írtam. De lefut az alkalmazás, elindul ugyan úgy mintha simán futtatnám, lefuttatja a teszteket, majd leállítja.
És most az újabb dolog amit szeretnék el,érni, az az, hogy ne csaljon a springboot junit test, és ne god mode-ban hívja meg a rest szolgáltatásokat, hanem autentikálni kelljen, csak úgy mintha postmanból hívnám.
-
disy68
aktív tag
válasz
togvau #11039 üzenetére
A unit test-eknek van valami futtató keretrendszere, ami segítségével futtatod a teszt osztályok metódusait, amiben használod az alkalmazásod elemeit. Ilyenkor nem fut a teljes alkalmazás, szóval nincs sok értelme így a kérdésnek. Mi a tényleges probléma, mit szeretnél elérni?
-
togvau
senior tag
Hogy lehet elérni, hogy a springbootos app maradjon futva a junit tesztek lefutása után, ne lője le az egészet?
Sőt az lenne a jó, hogy ha választhatnék, hogy indítsa el az egészet, vagy maradjon mindig futva az app, és akárhányszor újrafuttathatom a junit tesztet -
Taoharcos
aktív tag
Spring Boot, JPA, adatbázisnak a legegyszerűbb H2, be lehet állítani, hogy újraindításkor is megtartsa az adatokat, viszont nem kell külön telepíteni. Nem tudom felületnek mit szeretnél, de a Thymeleaf-t könnyű használni.
-
aDtG
tag
Sziasztok!
Adott egy Music osztály.
public class Music {
String title;
String genre;
int rating;
int startToEnd;
}Ennek az osztálynak a példányait szeretném valamibe letárolni. Ehhez kérem a segítségeteket.
Pontosan leírom hogy mit szeretnék:
Megadok egy könyvtárat, ahonnan java-val beolvasok zeneszámokat.
A zenék ID3 értékeit felhasználva hoznék létre annyi példányt az osztályból, ahány zeneszám van.
Ezeket a szeretném úgy letárolni, hogy mentésre is kerüljenek. Tehát a program következő indításakor ha megadok egy nevet, akkor a hozzá tartozó zeneszámok kerüljenek betöltésre.
Ehhez mit ajánlanátok? (adatbázis, stb...) -
skoda12
aktív tag
-
Csaby25
őstag
Sajna úgy sem jó:
[
{
"1": "2",
"Reka": "Zita"
},
{
"1": "3",
"Reka": "Nora"
},
{
"1": "4",
"Reka": "Simon"
},
{
"1": "5",
"Reka": "Elek "
},
{
"1": "6",
"Reka": "Geza"
},
{
"1": "7",
"Reka": "Ella "
},
{
"1": "8",
"Reka": "Kolos "
},
{
"1": "9",
"Reka": "Antal"
},
{
"1": "10",
"Reka": "Viola"
}
] -
Csaby25
őstag
Sziasztok! CSV akarok JSON - ba alakitani.
CSV:1;Reka
2;Zita
3;Nora
4;Simon
5;Elek
6;Geza
7;Ella
8;Kolos
9;Antal
10;ViolaA ket metodus amit hasznalok:
public static List<Map<?, ?>> readObjectsFromCsv(File file) throws IOException {
CsvSchema bootstrap = CsvSchema.emptySchema().withHeader();
CsvMapper csvMapper = new CsvMapper();
MappingIterator<Map<?, ?>> mappingIterator = csvMapper.reader(Map.class).with(bootstrap).readValues(file);
return mappingIterator.readAll();
}
public static void writeAsJson(List<Map<?, ?>> data, File file) throws IOException {
ObjectMapper mapper = new ObjectMapper();
//mapper.enable(SerializationFeature.INDENT_OUTPUT);
mapper.writeValue(file, data);
}
Igy hivom meg oket:List<Map<?, ?>> data = readObjectsFromCsv(studentFile);
writeAsJson(data, studentJson);
A gond az hogy ezt a json-t gereralja:
[
{
"1;Reka": "2;Zita"
},
{
"1;Reka": "3;Nora"
},
{
"1;Reka": "4;Simon"
},
{
"1;Reka": "5;Elek "
},
{
"1;Reka": "6;Geza"
},
{
"1;Reka": "7;Ella "
},
{
"1;Reka": "8;Kolos "
},
{
"1;Reka": "9;Antal"
},
{
"1;Reka": "10;Viola"
}
]Vagyis veszi az elso sort es beteszi kulcsnak az osszes tobbi sorhoz
Mi lehet a gond?
Koszi! -
sztanozs
veterán
válasz
sarkanyolo2 #11024 üzenetére
Az okozhatja, hogy érvénytelen unicode van az xml-ben.
(illetve hogy bináris/byte/ascii8 adatot unicode szövegként próbálsz tárolni vagy értelmezni) -
sarkanyolo2
őstag
válasz
sarkanyolo2 #11024 üzenetére
Nyelv: Java (lemaradt, bocsi)
-
sarkanyolo2
őstag
Sziasztok! [hibakeresés]
error: [Invalid byte 2 of 4-byte UTF-8 sequence.]
Ezt mi okozhatja srácok? Ezt egy XML valiadation failed követi ami az előbbi okán jön. :(
-
floatr
veterán
Nyilván... hosszú éveken át használtam Eclipse-t az összes hülyeségét nem sikerült kiismerni, mert ez is olyan, mint a Skyrim - vég nélküli kihívások. Volt már mindenféle fizetős edition a kezem alatt, egyik rémesebb volt a másiknál. Azt gondoltam, hogy az IntelliJ tényleg tud mást letenni az asztalra, de ez valahol törvényszerű, hogy minél összetettebb valami, annál nagyobb hulladék. Egyik sem érdemli meg, hogy rajongótábora legyen
-
floatr
veterán
Ne fanboikodjunk, kérem
Nekem az idea a gradle projektektől térdel le, néha azt sem tudja merre van a projekt, a debug tool katyvasz, a docker integráció meg rosszabb mint a command line, a gitet teljesen hazavágja egy merge-el, mate környezet alatt elveszti a menüjét. De legalább amióta van egy vadiúj laposom, egész gyorsan elindul. -
p76
senior tag
@SecondaryTable(name = "EMP_DATA",...
Erre azt mondta az eclipse hogy: cannot resolve secondary table EMP_DATA
MySQL adatbázisban hoztam létre a táblát, aztán írtam bele a fenti sort egy már létező entitybe.
Mindent(?) próbáltam aztán újraindítottam az eclipset, még mindig rossz volt. Felvettem egy másik táblát a db-ben. Ahhoz csináltam egy sima entity-t. És hirtelen a secondary is jó lett! Mégis mi történt? -
-
Igen. Spawnolsz egy threadet, nyitsz egy dialogfragmentet és ott pedig updateled a státuszt, illetve teszel egy cancel gombot.
Hogy mi a komponens neve a jó ég tudja, kb. 6 éve nem csináltam.
Szerk.: Közben megtaláltam, AsyncTask kell neked. Van sok tutoriál. Mindenképpen így "szép" megcsinálni.
-
-
-
Nem.
Nem igazán van rá szükség, az elkészült képeket kell feldolgozni.
Valószínű amúgy azzal van gond, hogy mintha nem várna a CountdownTimer-en kívül semmi, csak pörögne a while, vagy ilyesmi, a kamera meg nem tudna mit kezdeni a kérésekkel (nem tudom jobban megfogalmazni).Amúgy kb. ennyit kéne helyettesíteni while (feltétel); -lel. Kb. tutorialokból vadásztam össze
new CountDownTimer(96000, 6000) {
public void onTick(long millisUntilFinished) {
Log.d("Iterate", "seconds remaining: " + millisUntilFinished / 1000);
camera.takePicture(shutterCallback, null, null, jpegCallback);
}
public void onFinish() {
Camera.Parameters param;
param = camera.getParameters();
param.setAutoWhiteBalanceLock(false);
camera.setParameters(param);
thefirstiteration = true;
}
}.start();
-
Hello,
Az mitől lehet, hogy ha egy eljárást Countdowntimer-ből hívok (Android...) akkor lefut, ha while ciklusból, akkor nem (mi az hogy nem? megáll az egész UI tőle, mint a szög)?
Illetve, van ezen az izén értelmesebb várakozás, mint a Countdowntimer? (Bár arra is jöhet tipp, hogy a kamera foglaltságát hogyan lehet lekérdezni, azaz kérek egy képet, és mikor kérhetem a következőt...)
-
togvau
senior tag
JPA-ban van arra automata lehetőség, hogy a fő entity, és a hozzá tartozó al-entity-ket egyszerre rakja a DB-be? Tehát van egy fő entity, amihez kapcsolódhat sok al-entity.
Mert fő entity save-nél csak a fő entity elemeit menti le, a benne lévő al-entityket nem.
Tényleg csak selectkor képes összeszedni mindent, máskor szájba kell rágni az egyértelműt?
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Veszprém és környéke adok-veszek-beszélgetek
- Magga: PLEX: multimédia az egész lakásban
- iPhone-t használók OFF topikja
- Luck Dragon: Asszociációs játék. :)
- Milyen videókártyát?
- Melyik tápegységet vegyem?
- Elektromos rásegítésű kerékpárok
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Milyen légkondit a lakásba?
- sziku69: Szólánc.
- További aktív témák...
- Szerezd meg a tökéletes házat most!
- ASUS TUF Gaming F16 FX607JV-QT212 Notebook
- AKCIÓ! ASUS B650M R5 7600X 64GB DDR5 1TB SSD RTX 3080Ti 12GB Be Quiet! Pure Base 500FX ASUS 1000W
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5800X 32/64GB RAM RTX 4060 Ti 8GB GAMER PC termékbeszámítással
- Eredeti Windows 10 / 11 Pro aktiválókulcs AZONNALI SZÁLLÍTÁSSAL!
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged