Showing posts with label jar. Show all posts
Showing posts with label jar. Show all posts

Friday, November 18, 2011

KrzFlopt 1.23

What is KrzFlopt? KrzFlopt is rebranded KrzYoptimizer (renamed) that again is developped by me. The program is written in VB6. Why? Because I wrote my first VBS script with GUI at the age of 16 and I liked this programming language. It also is much faster than .NET platform. Also it is too simply to be rewritten to .NET, although using ConsoleRead would be nice to create some log windows/status bar information what programs KrzFlopt is using are doing in the background.



By using some advanced deflate tools like kzip, DeflOpt, 7-zip, pngout and more KrzFlopt is able to reduce file size by optimizing Deflate streams. With build in ZIP to GZ, and ExtPK to PK header and vice versa conversions the user is able to open GZ and JAR files for processing. My program directy reads data from ZIP, GZ and JAR files that I programmed basing on online documents containing information on how file headers in those files are stored. This means it doesn't require any tools to at least: Open files, convert ZIP to GZ, ExtPK to PK headers and vice versa, calculate CRC32. You can add multiple files for optimisation.

User is free to chose 3 predefined optimisation methods or define his own and select Custom Mode. For Example in Fast mode program will only try blocks from 1-16, it's good for small files. It's still recommended to create Custom mode with settings: 16 or 32 blocks to try first, search for up to 1024 blocks (kzip/pngout limit) and run at least 100 random Huffman table inits.

KrzFlopt tries to find best number of blocks to split file to by extending searching range. When it successfully found best settings and number of blocks found is equal or higher maximum blocks in this range*66% (for example 13 block is > than 16*66%) then it extends it to maximum blocks*2, till it reaches 1024.

Optimised PNG files are saved on-fly but ZIP/GZ/JAR files are stored only when it ends optimising each file in Deflate archive. Of course the program discards any data that is larger than original file.

Although program may crash from time to time (for example when opening ZIP containing MeGUI profiles - dunno why, I need to research it where the overflow occurs), it should be very stable.

Changes in this version let users send/retrieve data to/from server. This means that my server stores best results for files optimised and sends it to users to save a lot of time. For example file that is 6MB takes very long time to find best settings when searching for up to 1024 blocks. If program finds a file that its best settings data is stored on server then it jumps directly to best settings and later only random huffman table inits are run to eventually futher reduce its size a bit.

Time for some changelog on what was changed sinve fersion 1.22 till 1.23 final.

- Added additional information in TitleBar (Expert Settings)
- Added support for GnuZIP/gz (Unix) timestamp format
* File inside GZ has same time/date as file in ZIP (may reduce the time by 1h on new windowses, I need to fix it someday - it's cause by day savings)
- Added number of bytes reduced in random
tries for Randoms tab "bytesb (successes)"
- Added option to skip 7-zip 3-257 fast bytes test (only 258)
- Added End 7-zip button
- Added CRC32 calculation in File menu
- Added Strategy display: 9 /s 9 /c 9 /f 9 /d [PNG]
- Added Result sending/retrieving
* Program sends best results to server
* Program retrieves best results from server and jumps to best results
and, if selected, checks for randoms to futher reduce file length
* Works if appropriate check boxes in settings
are selected (either one or both)
* Should work fine for ZIP and PNG files.
- Fixed CRC Checking
- Fixed crash when license window was closed after being accessed
through about windows
- Fixed blocks sometimes not displaying in list. [PNG]
- Fixed: Random inits always used extreme strategy even when
it should not [PNG]
- Fixed program doing 1/2 of total maximum blocks to test for ZIP/GZ/JAR
- Fixed status not updating for PNG files
- Fixed strategy parameter not being remembered at all when PNG file
was inside Deflate file [PNG]
- Fixed compression strategy [/s] being sometimes -3 instead of 0 [PNG]
- !!Changed to new webserver: 33e.eu/www
- Skip 7-zip compression when file is in database (only KZIP-ped
files are stored anyway)
- Reduced 7-zip passes from 255 to 15 and added check for
all fast bytes settings (VERY RARERY produces file smaller
than with 258 fast bytes but DOES)
- Bugfixes for block/strategy algorithm
- now work automatically resumes when user answers NO on exit msg
- Updated CRC file on server
- Updated and fixed 'Download & Install' Module
- Code rearranging and optimisation
- Compiled without optimizations (for some reason 13KB smaller exe)
- Changed Deflate settings algorithm a bit. Now it starts checking from
block 1 and checks file size after each strategy pass (not block as before)
* May lead to better or worse results - need testing [PNG]
- Rewrote 'Limit CPU Usage' code (works better now)
- Rearranged GUI a bit
in ensuring best number of blocks mode
- Updated CRC file (pngout and jpegtran update)
- Hopefully Fixed PNG file not being repacked
* Sorry for that bug, didn't notice it earlier. Program wrongly
calculated reduced PNG size for zipslim.


Download it from here.

Sunday, June 13, 2010

ZIPslim

This time I was working on some Visual Basic Script. The idea came from Andrew C.E. Dent's PNGslim script that optimizes PNG files.

ZIPslim in progress:


Actually I wrote testkzip script before discovering Andrew's invention. It was not open to public and It was simple and buggy (not really that much but still). It was based on my test script (similar to PNGslim but used only pngout and deflopt resulting in files being larger that one produced by his script).

At the beginning of this month I said to myself "how about doing something similar to PNGslim" but when I viewed his cmd file I thought "I'm sick of this cmd based script that isn't really programming language". Then I got an idea to write this in pure VBScript using few cmd commands (like dir or md) because of lazyness. =P

So I did the prototype and then I mainly converted my testkzip.cmd script there fixing few bugs. Guess what? It did optimize ZIP files pretty well (faster than cmd version), although it did support only one file inside zip and crashed on directories a lot =D

I think I got addicted to VBs again (previously I did Visual MinShare for DC Hub from NeoModus when I was 15 years old - almost 10 years ago). I can't stop adding things, everything that comes to my mind needs to be put there... be it at home, friend's house or even at work =)

Basically it's so automated that it even downloads and installs all necessary files directly from the internet (don't be scared when some window pop-ups while installing, it DOES NO HARM to your computer and it's necessary for things to run smooth and fast). It's at v0.97 by now (starting from v0.90) and can not only process ZIP files. It additionally accepts JAR, JPG, PNG and BMP files, all thanks to those people that worked hard to reduce every bit of uneccessary information, BIG THANKS!

You can download it at http://freya.neostrada.pl for free !
Don't forget to visit http://freya.neostrada.pl/ZIPslim-ip.txt to get information what programs are used to gain such cool results!



PLEASE! Report all bugs here as commets, Thanks!

Mr_KrzYch00
~~~~~~~~~~~