JAVAMikulás! - Az IGAZI! - ELJÖTT!!!

Hozzászólások

ez kamu :(

nekem van fenn java mert a regi drac/ilo/kvm csak azzal megy, de megse hullik a ho...

szerk: vagy megse kamu? az oldal forrasaba ez van:

applet code="/images/xmas/alcsnow.class" width="200" height="137"
             codebase="https://hup.hu/">
               <param name="grph" value="/images/xmas/xmas2.jpg">
                <param name="snows" value="500">
                <param name="threadsleep" value="50">Sorry, your browser doesn't support Java.
/applet

meen ;) chromiumhoz adtam egy CheerpJ Applet Runner nevű extension-t... nem töltött le java-t, mégis működik 🙄

 

(s waylanddel ment a screencast, a wayland-tagadók egyházába tartozóknak 🤭 )

A mikulás mögött is esik a hó?

Szerkesztve: 2024. 12. 17., k – 15:05
 

trey @ gépház

Én alapelvből nem rakok fel semmilyen szutyok plugint, addont. Rémálmomban is kísértenek azok a régi idők, amikor ilyeneket telepíteni kellett, Java és Flashplayer plugin, egyes oldalakhoz QuickTime, vagy aki nagyon beteg volt, akkor egyes magyar oldalakhoz MS Silverlight, meg egyéb ótvarságok. Plusz egy időben minden szutyok extra toolbart akart kitenni a böngészőbe. Örülök, hogy ezeknek az időknek vége. Igen, bloat a JS-nek mindenféle frameworkje, meg a HTML5, de legalább extra hülyeségeket nem kell telepíteni hozzá.

The world runs on Excel spreadsheets. (Dylan Beattie)

Ez van, tudom, hogy tönkreteszem ilyen merev hozzáállással a mulatságot. Tényleg csak azért jeleztem, mert jött a hibaüzenet, hogy Upsz, a böngésződben nincs Java Plugin támogatás, így csak tisztáztam, hogy Upsz, nem véletlen, és Upsz, nem is lesz.

Egyébként is overkill a Java egy ilyen kép előtti hóesésre. Ezt JS-tel is össze lehet hozni, vagy animált kép, ahogy most csinálod, de ha modernizálsz egyszer, már az animált gif helyett is lehet webp-t használni. Az a modern folytatója az animált gifnek, jobb tömörítéssel, kevesebb korláttal. Lehetne helyette avif-ot vagy heif-et használni, de az előbbi még bloatabb, az utóbbi meg licencköteles.

The world runs on Excel spreadsheets. (Dylan Beattie)

Egyébként meg kell védenem a kollégát, nem. Simán csak power user, nem látja a szakma belsejét, ezért időnként rohadtul elmennek a feje felett dolgok, meg nem nagyon képes internálni az ezekből a tapasztalatokból származó nézőpontokat. Meg van neki egy fétise, ahhoz meg kedves egészségére, van az itt kb mindenkinek valami. De egyáltalán nem igaz, hogy kizárólag fogalmatlanságokat beszélne.

Te nem érted. Itt eleve a Mikulásról van szó. Az már csak ehhez képest egy adalék, hogy ennek kapcsán kiderült, hogy ilyen hülyeségeket még használnak emberek, nyugodtan vitatkozzál, tartom, hogy szánalom kategória 2024-ben. Már 2010-ben is gáz volt, de akkor még helyenként le kellett nyelni keserű pirulaként. De ha szerinted ez jól van, telepítgessél csak magadnak ilyen semmire nem jó szutykokat, megveregetheted akkor a vállad, hogy te mennyire értesz mindent, megkapod rá az áldásom.

The world runs on Excel spreadsheets. (Dylan Beattie)

Ne légy butthurt :) Teljesen mindegy, hogy mennyire értelmes vagy sem ez így technikailag, nyilván mindenki tudja, hogy nem appletezünk így 2024-ben. Ez itt egy hagyomány, emberek örülnek neki, hogy itt a mikulás oldalt, hogy lehet rajta kicsit évődni, hogy mi van vele, és most nekiálltak egy vastag adag nosztalgiázásnak és közben geekkedésnek. Miért fáj ez neked? Nem kell feltenni semmit, nem maradsz le semmiről, nézheted a gif mikit jobb oldalt, ha érdekel. Ha úgy tetszik, retróznak, azt se érted?

*szerk: bal oldalt: régen minden jobb volt nem? Vagy legalábbis a miki oldala? :d

Csak ezért elővettem egy Chromiumot, telepítettem a ChirpJ-t, reloadoltam és... valamiért nem működik.

Pedig szeretem a Javát, de Weben még csak másnál láttam működni. Még a másik gépemen ahol van igazi Chrome ki fogom próbálni.

Köszi a ChirpJ tippet, ezt nem ismertem.

Nagyon király így eredetiben. El is feledtem, hogy szélfútta erős havazásban ment a Mikulás, de most visszajött az élmény. Így a szuper, ez volt az eredeti, ez égett be etalonként az agyam hupos féltekébe :)
Köszi a beletolt melót!

Megnéztem Pale Moon browserrel, de hibára futottam.

Azután összelőttem egy Firefox 51.0.1-et egy Oracle Java 8u202-vel (ebben még volt Java NPAPI plugin - libnpjp2.so), de sajnos ez a hiba: https://imgur.com/a/eyuCS11

jcontrol-ban az Exception Site List-re természetesen felvettem az oldalt.

Még egy próbát tettem régebbi JRE-vel (7u80) is, sajnos ugyanez a hiba.

Úgy érted, hogy 10-ből 8 IT-s elvérzik egy Java applet helyes beágyazásán? :D

Ha kijavítom a HTML kódot, működik. Fontos, hogy a code tag-be ne kerüljön prefix.

<html>
<body>
<applet code="alcsnow.class" width="137" height="200"
             codebase="https://hup.hu/images/xmas/">
               <param name="grph" value="https://hup.hu/images/xmas/xmas2.jpg">
                <param name="snows" value="500">
                <param name="threadsleep" value="50">Sorry, your browser doesn't support Java.
          </applet>
</body>
</html>

https://imgur.com/3NoQB21.png

Firefox 51.0.1-el és Pale Moon böngészővel, rendes Oracle Java pluginnel, nem ilyen hamisítványokkal :D

Korhű módon Java 7-tel és 8-cal is próbáltam, pontos verziók fentebb.

Ezt az oldalt néztem az applet tag leírásáról: https://docs.oracle.com/javase/1.5.0/docs/guide/deployment/deployment-g…

Van-e neked előtte ilyen "splash screen"?  https://imgur.com/FhRUHq5.png

Na ugye! :D

Ha nem lenne nyilvánvaló, most sportértékpontokat gyűjtöttem.  Ezer éve nem csomagoltam ki JRE tarballokat meg symlinkeltem NPAPI plugint a plugins directory alá.  Anno dolgoztam eleget applet based cuccokkal (KVM cuccok, HP iLO, DRAC, szutyok Brocade FC switchek admin toolja), egy még sötétebb időszakomban fejlesztettem is CD melléklethez offline keresőt Java applet alapon, még a Sun-féle NetBeans-szel :D  Nem hiányzik az "élmény" és a sok inkompatibilitás.

Jajaja, korhűen akarod. Igen, itt kezdődik a művészi hajlam :)

Még futó Supermicro JAVA-s konzolhoz sok éve egy virtualbox image van cégnél, benne valami ősöreg ubuntu, firefox, java. Munkatársaknak azt adjuk, rajta a munkás laptopon. Nem piszkáljuk sose, működik addig, míg lassan kikopnak ezek a régi cuccok.

Amúgy nem volt akkora szívás egy teljesen friss Debian desktopon összelőni. Kicsomagoltam a Pale Moon browsert, a fent említett JRE tarballokat, symlinkeltem a libnpjp2.so-t a plugins directoryba, jcontrol-ban a "Security" fülön felvettem a site-ot és működik. A mindenféle egyéb variálás csak azért történt, mert elsőre nem működött, mint utóbb kiderült, ennek az oka az volt, hogy az applet tag code paramétere nem volt szabályosan kitöltve. Ez a Chrome extensionnek nem fájt, míg a valódi Java környezetnek igen (NoClassDefFound hibával elszállt).

Úristen, nem mondod, hogy ezeket a szutykokat még mindig használják emberek. Azt nagyon sajnálom, akinek ilyen hülyeséget fel kel tegyen. Ezeket mind el kellett volna temetni már egy évtizeddel ezelőtt, nem hogy még eszközök admin környezetébe is betenni, verném agyon szívlapáttal, aki még mindig beleerőlteti ezeket az ósdi gányolásokat az eszközeibe.

The world runs on Excel spreadsheets. (Dylan Beattie)

Van élet a folytonos cserén túl is - ide értheted a kényszeres szoftveres update-eket, kedvenc rolling release disztribúciódat, de a folyamatos hardvercserét is.  Egy jól működő szervert, fc switchet, bármit nem fog kidobni minden szervezet csak azért, mert idővel kényelmetlenebbé vált az adminisztrációja.

mobilon hogy kell életre kelteni? (mondjuk firefox for android alatt).

Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....

JAVA ide, nehézségek oda, azt azért meg kell hagyni, hogy a JAVA verzió szebb! A GIF olyan, mintha szoftver render-rel menne a Quake, a JAVA meg olyan, mintha OpenGL-lel. :D

Mondjuk a JAVA verziónak biztos nagyobb is CPU terhelése :D :D :D De a mai hardverek mellett ezt már ki számolja?!

trey @ gépház

Brave-vel nekem is megy, a plugin segítségével.

Hajrá! :-)

Lehet rosszul emlékszem, de nem lehetséges, hogy a havazás iránya követte az egér mozgását?

Bar nyilvan asch kollega is meg tudja tenni, de bemasolom ide a dekompilalt kodot.

import java.applet.Applet;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.util.Random;

public class alcsnow extends Applet implements Runnable {
  Thread mainThread;
  
  Image offScrn;
  
  Graphics offGrph;
  
  Random rand;
  
  int stopFlag;
  
  long stopTime;
  
  int[] snowX;
  
  int[] snowY;
  
  int snows;
  
  int wind;
  
  int threadSleep;
  
  Dimension dim;
  
  Image[] gAlc;
  
  MediaTracker mt;
  
  public void init() {
    this.rand = new Random();
    this.dim = size();
    this.offScrn = createImage(this.dim.width, this.dim.height);
    this.offGrph = this.offScrn.getGraphics();
    String str = getParameter("snows");
    if (str == null) {
      this.snows = 100;
    } else {
      this.snows = Integer.valueOf(str).intValue();
    } 
    if (this.snows > 500)
      this.snows = 500; 
    str = getParameter("threadsleep");
    if (str == null) {
      this.threadSleep = 80;
    } else {
      this.threadSleep = Integer.valueOf(str).intValue();
    } 
    if (this.threadSleep < 10) {
      this.threadSleep = 10;
    } else if (this.threadSleep > 1000) {
      this.threadSleep = 1000;
    } 
    this.snowX = new int[this.snows];
    this.snowY = new int[this.snows];
    for (byte b = 0; b < this.snows; b++) {
      this.snowX[b] = this.rand.nextInt() % this.dim.width / 2 + 
        this.dim.width / 2;
      this.snowY[b] = this.rand.nextInt() % this.dim.height / 2 + 
        this.dim.height / 2;
    } 
    str = getParameter("graphic");
    if (str == null) {
      str = getParameter("graph");
      if (str == null) {
        str = getParameter("grph");
        if (str == null)
          str = "tento1.gif"; 
      } 
    } 
    this.mt = new MediaTracker(this);
    this.gAlc = new Image[1];
    this.gAlc[0] = getImage(getDocumentBase(), str);
    this.mt.addImage(this.gAlc[0], 0);
    try {
      this.mt.waitForID(0);
    } catch (InterruptedException interruptedException) {
      return;
    } 
    this.stopFlag = 0;
  }
  
  public void start() {
    if (this.mainThread == null) {
      this.mainThread = new Thread(this);
      this.mainThread.start();
    } 
  }
  
  public void stop() {
    this.mainThread = null;
  }
  
  public void run() {
    while (this.mainThread != null) {
      try {
        Thread.sleep(this.threadSleep);
      } catch (InterruptedException interruptedException) {
        return;
      } 
      repaint();
    } 
  }
  
  public void paint(Graphics paramGraphics) {
    this.offGrph.setColor(Color.black);
    this.offGrph.fillRect(0, 0, this.dim.width, this.dim.height);
    this.offGrph.drawImage(this.gAlc[0], 0, 0, this);
    drawBackSnow();
    paramGraphics.drawImage(this.offScrn, 0, 0, null);
  }
  
  public void update(Graphics paramGraphics) {
    paint(paramGraphics);
  }
  
  public void drawBackSnow() {
    this.offGrph.setColor(Color.white);
    for (byte b = 0; b < this.snows; b++) {
      this.offGrph.fillRect(this.snowX[b], this.snowY[b], 1, 1);
      this.snowX[b] = this.snowX[b] + this.rand.nextInt() % 2 + this.wind;
      this.snowY[b] = this.snowY[b] + (this.rand.nextInt() % 6 + 5) / 5 + 1;
      if (this.snowX[b] >= this.dim.width)
        this.snowX[b] = 0; 
      if (this.snowX[b] < 0)
        this.snowX[b] = this.dim.width - 1; 
      if (this.snowY[b] >= this.dim.height || 
        this.snowY[b] < 0) {
        this.snowX[b] = Math.abs(this.rand.nextInt() % this.dim.width);
        this.snowY[b] = 0;
      } 
    } 
    switch (this.rand.nextInt() % 100) {
      case -2:
        this.wind = -2;
        return;
      case -1:
        this.wind = -1;
        return;
      case 0:
        this.wind = 0;
        return;
      case 1:
        this.wind = 1;
        return;
      case 2:
        this.wind = 2;
        return;
    } 
  }
}

Köszönöm, sőt köszönjük! A TeaVM ebben a formában sajnos nem alkalmas, mert pont a Graphics osztályt nem támogatja OOB. Talán meg lehetne valahogy csinálni azon az úton is, de nem tűnik ésszerűnek.

A programot át lehet írni sima Canvas API-ra TeaVM-en belül. De akkor már értelmetlennek tűnik mindezt Javában implementálni, én is JS-re portolnám és kész. Az eredeti Javával kb egyenlő hosszú lenne JS-ben, és pontosan ugyanezt csinálná. De az már JS mikulás lenne. Jó az? Kell az valakinek? Polesz látom már el is kezdte, szerintem bele fogja tenni az eredeti logikát, amint lesz ideje. Most hogy megvan a dekompilálás, már gyerekjáték, nem kell Java toolokat telepíteni hozzá.

Lehet, hogy igénytelen tróger vagyok, de nekem elég a gifmikulás.

Szerkesztve: 2024. 12. 21., szo – 14:14

Továbbra is súlyos problémának tartom, hogy csak a Mikulás előtt esik a hó. Ez így számomra nem alkalmas rendeltetésszerű használatra.

Időközben azt a megfigyelést tettem, hogy a hó mozog (ami jó), ugyanakkor a Mikulás meg van merevedve, ami némi ellentmondást eredményez képzavar formájában. Minden nap megnézem, de egy lépést sem tett előre.

Úgy érzem, elmentünk a filozófia ismeretelméleti területének irányába. Honnan tudjuk, hogy valaki vagy valami mögött mi történik, ha a szóbanforgó valaki vagy valami nem átlátszó? A konkrét esetben nyilván meg lehet írni a kódot úgy, hogy a Miki mögött, de csak ott piros hó essen, de mivel a Miki nem átlátszó...