Hallod a különbséget?

Egy teszt, hogy tényleg számít e a hangminőség, vagy sem…

http://www.npr.org/sections/therecord/2015/06/02/411473508/how-well-can-you-hear-audio-quality

Eredmény:

  • Laptopon integrált hangkártyával, és fülhallgatóval a 320kbps és uncompressed között nem tudtam különbséget tenni, a 128kbps viszont hallható (többszöri teszt után sem választottam soha)
  • Rendes hangkártyával, és stúdió monitorokkal az eredményt még nem tudom, meg kell várni, amíg megépül hozzá az új stúdió… 🙂

Photoshop bekaphatja

Van pár olyan cég, akinek a termékeit akkor sem használnám, ha kivételesen jók lennének (de rendszerint nem azok)… A borland ilyen (nincs az a büntetés amit a pascal világra és oktatási intézményekre szabadított borzalmai miatt érdemelnének), és ide tartozik az Adobe cég is, a flash-től kezdve a photoshopig…

http://www.coffeemonk.com/2009/05/photoshop-guides-and-pixel-precise-alignment/

Ez egy 2009-es cikk, azóta is fel feltűnik a ‘Snap Guides to Pixel Grid’ opció mit a kárhozatra ítélt grafikusok utolsó reménysugara… Eltelt azóta több mint 10 év, és… Természetesen nem történt semmi az ügyben.

Adobe én így szeretlek!

Java, jpeg, exception

Az egyik publikus képfeltöltő szervlet kapcsán jeleztek egy hibát, hogy valamiféle csodaképeket egyszerűen nem lehet feltölteni. A naplófájlok elemzése után látszott is a hiba:

java.lang.IllegalArgumentException: Numbers of source Raster bands and source color space components do not match
 at java.awt.image.ColorConvertOp.filter(ColorConvertOp.java:460)
 at com.sun.imageio.plugins.jpeg.JPEGImageReader.acceptPixels(JPEGImageReader.java:1114)
 at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImage(Native Method)
 at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1082)
 at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:897)
 at javax.imageio.ImageIO.read(ImageIO.java:1422)
 at javax.imageio.ImageIO.read(ImageIO.java:1282)

A hiba viszonylag könnyen reprodukálható volt, tehát volt egy jó képem, és egy rossz. A gimp semmi extrát nem mondott a képről, és a rossz kép az ismételt elmentés után is rossz maradt.

Kis keresgélés után rátaláltam az exiftool nevű alkalmazásra:

exiftool -a -G ./JUT430-1.jpg

Látszott is, hogy a kép adatai között mindenféle furcsaság található:

[JFIF] JFIF Version : 1.01
 [JFIF] Resolution Unit : inches
 [JFIF] X Resolution : 300
 [JFIF] Y Resolution : 300
 [ICC_Profile] Profile CMM Type : HDM
 [ICC_Profile] Profile Version : 2.4.0
 [ICC_Profile] Profile Class : Output Device Profile
 [ICC_Profile] Color Space Data : CMYK
 [ICC_Profile] Profile Connection Space : Lab
 ...
[ICC_Profile] Profile Description : ISO Coated v2 (ECI)
 [ICC_Profile] Char Target : (Binary data 126677 bytes, use -b option to extract)
 [EXIF] Modify Date : 2012:08:21 09:56:35
 [EXIF] Compression : JPEG (old-style)
 [EXIF] Thumbnail Offset : 1829717
 [EXIF] Thumbnail Length : 5947

Ekkor gyanús lett a dolog, az én képeimen nem volt ennyi szemét. Letöröltem az összes exif adatot:

exiftool -all= ./JUT430-1.jpg

A dolog működött, a kép megnyitható java-ban. Innen már azt hittem egyszerű a dolog, már csak meg kellene oldani, hogy az exif adatokat a java is le tudja kapni feldolgozás előtt.

Erre találtam is egy ígéretes projektet az Apache common’s Sanselan-t. Az mondjuk furcsa volt, hogy még incubator-os, béta, és 3 éve senki nem nyúlt hozzá, de abból indultam ki, hogy biztosan azért mert annyira jó… 🙂

Természetesen a dolog nem működött. A forráskód tanulmányozása során feltűnt, hogy az általam használt kódból mintha hiányzott volna az érdemi rész…

</pre>
public void removeExifMetadata(ByteSource byteSource, OutputStream os)
 throws ImageReadException, IOException, ImageWriteException
 {
 JFIFPieces jfifPieces = analyzeJFIF(byteSource);
 List pieces = jfifPieces.pieces;

//Debug.debug("pieces", pieces);

//pieces.removeAll(jfifPieces.exifPieces);

//Debug.debug("pieces", pieces);

writeSegmentsReplacingExif(os, pieces, null);
 }
<pre>

Gondoltam ez így nem a legjobb, ezért visszacommenteztem (nyílt forráskód rulz) a removeAll-t. Sajnos ez még önmagában nem jelentett megoldást, ugyanis nem minden addicionális adat EXIF adat, és pont azok az adatok maradtak a képen, amik a problémát okozták.

Minden JFIFPieceSegment eltávolítása nem minősült kimondottan jó taktikának, de egy kis wikipedia-s utánaolvasás után megvolt, hogy mik az egyéb adatok marker bit-jei, amikre nekem semmi szükségem, innen már csak pár sor választott el a sikertől…


public void removeExifAndAllMetadata(ByteSource byteSource, OutputStream os)
 throws ImageReadException, IOException, ImageWriteException
 {
 JFIFPieces jfifPieces = analyzeJFIF(byteSource);
 List pieces = jfifPieces.pieces;

//Debug.debug("pieces", pieces);

 Iterator it = pieces.iterator();

 while (it.hasNext()) {
   Object object = (Object) it.next();
   if (object instanceof JFIFPieceSegment ) {
     JFIFPieceSegment iffdat=(JFIFPieceSegment)object;
     if (iffdat.marker>= 0xFFE0 && iffdat.marker<=0xFFEF) {
        it.remove();
     }
   }
 }

 pieces.removeAll(jfifPieces.exifPieces);

//Debug.debug("pieces", pieces);

writeSegmentsReplacingExif(os, pieces, null);
 }

A végeredmény valami ilyesmi lett:

public static void main(String[] args) {
 try {
String fileName="c:/JUT430-1.jpg";
File f=new File(fileName);
ExifRewriterAdv eRewriter=new ExifRewriterAdv();
FileInputStream fis=new FileInputStream(f);
ByteSourceInputStream bis=new ByteSourceInputStream(fis, null);
ByteArrayOutputStream bout=new ByteArrayOutputStream ();
eRewriter.removeExifAndAllMetadata(bis, bout);
ByteArrayInputStream iobis=new ByteArrayInputStream(bout.toByteArray());
ImageIO.read(iobis);
 } catch (Exception e) {
e.printStackTrace();
 }
 }

Prometheus – kritika

Általában nem szoktam kritikát írni filmekről. Ha tetszik egy film, nem foglalkozok az apróságokkal. Amennyiben egy film nem tetszik, kár rá vesztegetni az időt és a (tár)helyet, hogy leírjam mennyire nem jó.

Most mégis kritikát írok. Nem csoda, hogy ez a film megosztja a kritikusokat, mert engem is megosztott.

a; A film zseniális, mert nem egy sablon amerikai történet (jó vs. rosz, vagy jelen esetben ember vs gonosz alien). Vannak dolgok, amikre következtetni kell, nem készen kapja a néző, becsomagolva, és masnival átkötve.

b;A film csapnivaló, és itt nem az olyan sallangokra kell gondolni, hogy nem megfelelő a látványvilág, a szereposztás, vagy vontatott a cselekmény. Ilyen szempontból a film teljesen rendben van, ehhez értenek már hollywoodban. A probléma pont a következtetésekkel, és a nézőre bízott miértek megválaszolásával van. Vagy velem van a probléma, vagy a film nem ad elég információt a felmerülő kérdések megválaszolásához, kikövetkeztetéséhez.

Lehet mondani bármit (hogy ez művészet, meg nézői szabadság), de szerintem egyszerű anyagi érdekek rejlenek ez mögött.

Véleményem szerint a készítők, az alábbi forgatókönyvben gondolkoztak, és csak ez után keverték bele az alien-eket a dologba.

  • siker = sok pénz,
  • hiányos történet = folytatás
  • folytatás = sok pénz

Értem én ezt, de nem tartom korrektnek. Egy teljes áron megnézett film, egy egyszerű történetet se tud úgy prezentálni, hogy ne maradjon legalább annyi nyitott kérdés, mint amennyit megválaszol (ez még az x-aktákban elment, mert az egy sorozat, de azt is utáltam, épp ezért). Ha így állunk, akkor hívják a filmet Prometheus I. rész-nek (mondják meg előre, hogy lesz még x darab mert kell a pénz), és ne próbálják azt mondani, hogy ez egy teljes, egész estés történet.

Ennek ellenére a film megnézését ajánlom, főleg ha valakit érdekel az alien világ.

Aki még nem látta, itt hagyja abba az olvasást, mert megpróbálom sorra venni azokat a hibákat, amik nálam már egyenként is kiverték a biztosítékot.

A legelső probléma már a két eltévedt ember a komplexumban. Az űrhajóban volt egy teljes térkép a helyről, az emberek koordinátáiról, sőt rádiókapcsolat is volt (a vihar alatt is). A két szerencsétlen ennek ellenére ELTÉVEDT, és nem talált ki úgy, hogy korábban indultak (a csapat másik fele kb. 5 perc alatt ért vissza az űrhajóhoz, és abból kb. 2 perc alatt jutottak ki a komplexumból). Hmm…

Aztán ott a két eltévedt halála. Az tiszta sor, hogy senki nem látta, hogy meghaltak, mert épp szexelt a kapitány, és a szöszi. De volt rádiókapcsolat, volt videó kapcsolat. Egy ilyen modern űrhajó, egy ilyen küldetés alatt nem rögzít MINDEN kommunikációt? Elfogyott a tárhely, vagy elfelejtették megnyomni a record gombot? Vagy mi? A többieknek csak vissza kellett volna nézni és kész… Hmm… #2

A legcikibb jelenet mégis az, amikor a két lány egy guruló C alakú alien űrhajó elől menekül. Az egész olyan, mint amikor megmondták, hogy kell valami nagy, és látványos a filmbe, ami feszültséget kelt. Gurul feléjük egy hatalmas űrhajó, az egyik félreáll (???) a másikat meg agyonnyomja… Aztán még a végén rádől az egész a túlélő lányra is, de egy kis szikla megtartja felette, és kimászik alóla… Mindezt több percen keresztül, egyszerűen vicc az egész. Tudom, hogy kell a drámai hatás, de ez gáz. Ennél már az is jobb lett volna, ha ráesik a hajó az egyikre (a másiktól meg jó messzire). (ez már annyira ciki volt, hogy ide már azt se írom, hogy hmm…)

Aztán nézzük milyen kérdésekre nem kaptunk egyértelmű választ:

–          mi is volt a céljuk a földel

–          mit is akartak kezdeni azzal a sok fekete folyadékkal

Nekem van egy elméletem, amivel valamilyen szinten értelmezhető a film, de úgy érzem, hamarosan sok elmélet lesz ezzel kapcsolatban.

Vegyük sorjába mi is történhetett:

Csináltak egy olyan biológiai fegyvert, ami bár elpusztít minden életet, valójában biztosítja az újrakezdést is (humánus tömegpusztítás). Ezt kipróbáltak egy mindentől távol eső, az életre alkalmas, de még lakatlan bolygón, a földön (akkor még csak az anyagot, nem a bombát magát). Ennek mellékhatásaként ott kialakult az élet, és közvetve az emberi faj is (első jelenet a folyóval).

Ha már így történt, vizsgálódtak, hogy akkor ez, hogy is működik a gyakorlatban, és működött. A vizsgálatok eredményeként az emberek látták az enginereket (ez eredményezte a barlangrajzokat).

Ezek után történt egy baleset az anyagot előállító bolygón, aminek eredményeként létrejöttek az alienek (kirobbant mellkasú enginer hullák). Persze rejtély, hogy miért maradt magára a bolygó, és a komplexumok, űrhajók (annyira titkos volt a kísérlet, hogy senki nem tudott róla? Vagy renegátok voltak?), de ettől most tekintsünk el.

A tégelyek bombák voltak, amik élesítés után aktiválódtak, és elpusztítanak minden élőt, új lényeket teremtve. A fej-es terem volt a test chamber, fej szolgálhatott a tesztalanyokkal való kommunikációra (vagy bármi). Ezt aktiválták a földi látogatók, és így mutálódtak el a giliszták (akik időközben  belakták a helyet), tojás rakó kis gonosz arctámadókká.

A sztori többi része már világos, bár a fenti dolgok teljesen másként is történhettek (pl. a fekete dolog nem is fegyver volt, hanem egy élettelen bolygó benépesítését célzó vegyi anyag).

És, hogy hogy kapcsolódik ez a többi filmhez, hát így: A nyolcadik utasban pedig erről a bolygóról szállított egy tojást egy enginer kutató hajó további tanulmányozásra, amikor meghibásodott, és azt találják meg az emberek az űrben.

A kérdés, amire nem találtam még elméletben sem a választ, hogy 2000 évnyi hibernálás után miért indult el az űrhajó a föld felé, és miért volt rajta annyi tégely?

Nem akart senkivel kommunikálni, vagy csak körbenézni, hogy mi van (a többi hajóval, többi emberrel, stb.)? Vagy ez megtörtént pár pillanat alatt, csak azt nem láttuk?

Ha valakinek más elmélete van, vagy tudja a választ, írja meg commentbe. Érdekel, tényleg 🙂

Amikor neked fizetnek

Régen gondolkoztam azon, hogy megveszem a hypersnap dx nevű programot. Nem egy nagy dolog, néha kell, de akkor nagyon hasznos tud lenni. Szerintem túl van árazva, ez tartott vissza. Eddig.

Amikor elmentem a vásárlás oldalra, és ismét meggondoltam magam, kaptam egy felugró ablakot: Ha most nem navigálok el innen, kapok egy valid license-t ingyen. Ez azért elég meggyőző érv.

Maradtam, és mint megtudtam, ha veszek valamit a TrialPay-en keresztül, akkor a HyperSnap license ingyen az enyém… Hát nem nagyon akartam venni semmit, mígnem észrevettem, hogy kínálnak olyan dolgokat is, amik nem kerülnek pénzbe… Ekkor már elkezdett azért érdekelni a dolog.

Az egyik ilyen az emusic előfizetés volt, ami annyiból áll, hogy be kell regelni (+ bankkártya adatok), adnak 10 usd-t, és ha nem függeszted fel az accountodat, akkor 10 nap múlva átfordul havidíjasba a történet…

Levásároltam a 9 usd-t majd elmentem, hogy visszamondom az accountot. Kiírták, ha most mégsem mondom vissza kapok 5 usd kupont. Jó… Levásároltam a maradék 6 usd-t, most már tényleg vissza mondom… Erre megint kiírták. Nem akartam 1 nap alatt túl sok kupont nyúlni, így 15 usd-t vásároltam csak el ily módon, majd (meglepő módon)  visszamondtam az accountomat. Hiába, ez van ha az ember határozatlan 🙂

Az eredmény:

  • Kaptam egy hypersnap dx-et (40 usd)
  • Töltöttem le 3 albumot (20 usd)

Nem fizettem semmit. Nemhiába Amerika a lehetőségek országa…

Ez a dolog azért kis munkával továbbgondolható:

  • van már google keresőparaméterem ami a trialpay-es oldalakat keresi
  • az emusicba lehet regisztrálni crc valid kártyaadatokkal
  • az emusic regisztráció során nincs capcha és semmi ilyesmi (lehet seleniummal is regisztrálni 🙂
  • van nagyon sok email címem…
  • egy két biztos proxy se árt (nem szép elírni a kártyaadataimat, főleg sokszor más más email címmel 🙂