{"id":18974533,"url":"https://github.com/m7a/bp-java-nostalgic-tools","last_synced_at":"2026-04-08T15:30:19.844Z","repository":{"id":164554594,"uuid":"305825512","full_name":"m7a/bp-java-nostalgic-tools","owner":"m7a","description":"Legacy but potentially useful tools","archived":false,"fork":false,"pushed_at":"2024-04-28T19:37:07.000Z","size":33,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-01T09:08:17.029Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/m7a.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-20T20:26:39.000Z","updated_at":"2024-04-28T19:37:10.000Z","dependencies_parsed_at":"2023-07-02T14:16:24.809Z","dependency_job_id":null,"html_url":"https://github.com/m7a/bp-java-nostalgic-tools","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m7a%2Fbp-java-nostalgic-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m7a%2Fbp-java-nostalgic-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m7a%2Fbp-java-nostalgic-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m7a%2Fbp-java-nostalgic-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/m7a","download_url":"https://codeload.github.com/m7a/bp-java-nostalgic-tools/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239972089,"owners_count":19727305,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T15:15:22.389Z","updated_at":"2026-04-08T15:30:19.771Z","avatar_url":"https://github.com/m7a.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\nsection: 32\nx-masysma-name: java-nostalgic-tools\ntitle: Nostalgic Java Tools\ndate: 2020/10/14 22:41:12\nlang: en-US\nauthor: [\"Linux-Fan, Ma_Sys.ma (Ma_Sys.ma@web.de)\"]\nkeywords: [\"mdvl\", \"package\", \"java\", \"legacy\"]\nx-masysma-version: 1.0.0\nx-masysma-repository: https://www.github.com/m7a/bp-java-nostalgic-tools\nx-masysma-website: https://masysma.net/32/java-nostalgic-tools.xhtml\nx-masysma-owned: 1\nx-masysma-copyright: |\n  Copyright (c) 2020 Ma_Sys.ma.\n  For further info send an e-mail to Ma_Sys.ma@web.de.\n---\nOverview\n========\n\nPackage `mdvl-java-nostalgic-tools` provides a few Ma_Sys.ma Tools that are\nincluded in MDVL for _nostalgia_ only, because their functionality is provided\nby other, and well-maintaned tools. Still, the tools are very simple and run\non Windows as well as Linux which does not always hold for their better\ncounterparts.\n\nCompile all tools (requres Ant and a JDK) by running\n\n\t$ ant\n\nPackage them together (on Debian systems with suitable depnendencies installed)\nby running\n\n\t$ ant package\n\nThe following sections describe the individual tools in man-page style.\n\ncmdcolors\n=========\n\n## Name\n\n`cmdcolors` -- Display color capabilities of the console (max 16 colors)\n\n## Synopsis\n\n\tcmdcolors\n\n## Description\n\nOutputs a table with certain useful ANSI escape sequence colors. Does not\ndisplay all possible combinations but some that are considered most useful.\n\n![`cmdcolors` screenshot](java-nostalgic-tools_att/cmdcolors.png)\n\n## See also\n\n[colortest-16b(1)](https://manpages.debian.org/buster/colortest/colortest-16b.1.en.html) -- does the same thing but better in all regards: The output is less\nconvoluted and it reminds the user of the correct escape sequence syntax.\n\nnetread\n=======\n\n## Name\n\n`netread` -- Listen to data incoming on sockets and display it in hex.\n\n## Synopsis\n\n\tnetread [port]\n\n## Description\n\nListens on the specified port by using a socket. Whenever data comes in, it\nprints them out in HEX. Once the connection closes, a new socket is created.\n\nThe default port is 5971 unless otherwise specified.\n\n## Example\n\nOpen a terminal and run netread:\n\n\t$ netread\n\tNetRead 1.0, Copyright (c) 2012 Ma_Sys.ma.\n\tFor further info send an e-mail to Ma_Sys.ma@web.de.\n\n\tListening on port 5971\n\tPress enter to terminate application.\n\n\t 68  65  6c  6c  6f  20  77  6f  72  6c  64  0a                                  hello.world.\n\n\t 6e  65  77  20  77  6f  72  6c  64  0a                                          new.world.\n\nIn another terminal, send some messages:\n\n\t$ echo hello world | nc 127.0.0.1 597\n\t$ echo new world | nc 127.0.0.1 5971\n\n## See also\n\n[nc(1)](https://manpages.debian.org/buster/netcat-openbsd/nc.openbsd.1.en.html),\n[xxd(1)](https://manpages.debian.org/buster/xxd/xxd.1.en.html)\nand the shell together do the same:\n\n\t$ while true; do nc -l 5971 | xxd; echo; done\n\t00000000: 6865 6c6c 6f20 776f 726c 640a            hello world.\n\n\t00000000: 6e65 7720 776f 726c 640a                 new world.\n\nversion_change\n==============\n\n## Name\n\n`version_change` -- Compute checksums of a directory's files to detect changes.\n\n## Synopsis\n\n\tversion_change display DATABASE DIR\n\tversion_change accept  DATABASE DIR\n\n## Description\n\nThis tool recursively computes the SHA-256 checksums of all files found\nbelow directory `DIR` and stores them in a CSV file `DATABASE` when invoked with\n`accept`.\n\nWhen invoked with `display`, it will compute all the checksums and based on\nthat, output a list of files that were either added, changed or removed.\n\n## Bugs\n\n * `version_change` not use `java.nio` API for traversal and is thus prone to\n   endless loops in the presence of symlinks, mount points etc.\n * After displaying the changes, accepting them takes another complete run\n   that needs to compute all the checksums. This is highly inefficient!\n\n## See also\n\n[find(1)](https://manpages.debian.org/buster/findutils/find.1.en.html),\n[sort(1)](https://manpages.debian.org/buster/coreutils/sort.1.en.html),\n[diff(1)](https://manpages.debian.org/buster/coreutils/sort.1.en.html),\n[sha256sum(1)](https://manpages.debian.org/buster/coreutils/sort.1.en.html)\n\nCombine them as follows:\n\n\t# accept\n\tfind . -type f -exec sha256sum {} + | sort \u003e state_old.txt\n\t# display\n\tfind . -type f -exec sha256sum {} + | sort \u003e state_new.txt\n\tdiff state_old.txt state_new.txt\n\t# accept (without recomputation!)\n\tmv -f state_new.txt state_old.txt\n\nIf `cut` and `paste` are added to swap the columns in the `state_` files, it\nbehaves even more like `version_chnage` in that it will become possible to\ndetect the difference between changed and added/deleted files.\n\nvisual_copy\n===========\n\n## Name\n\n`vcp` -- Copy directory trees while displaying a lot of progress info\n\n## Synopsis\n\n\tvcp SRC DST\n\n## Description\n\nCopies directory `SRC` to `DST`. Two modes of invocation are to be\ndistinguished:\n\n * If `SRC` ends on a trailing slash (e.g. `/root/`), then its contents are\n   put directly below `DST`.\n * If `SRC` does not end on a trailing slash (e.g. `/root`), then a directory\n   with the same name as `SRC` is created below `DST` and data is copied\n   like with `cp -R SRC DST`.\n\nDuring Invocation, `vcp` displays a lot of progress information. Some of the\nideas (speed diagram) have been taken up by Windows 10's copy function while\nothers (progress bars separate for number of files and data) are quite\nuncommon.\n\nVisual Copy does not retain any file attributes nor modification times.\n\n![Visual Copy screenshot](java-nostalgic-tools_att/vcp.png)\n\n## Exit Status\n\n--  ----------------------------------------------------------------\n1   failed to list some directories or incorrect commandline options\n2   failed to copy some files\n64  Bug\n--  ----------------------------------------------------------------\n\n## See also\n\n[rsync(1)](https://manpages.debian.org/buster/rsync/rsync.1.en.html) --\ndoes everything better except for the progress bars.\n\n\t# Command to replace\n\tvcp /root/ /tmp/test\n\n\t# Very reliable, works efficiently over netcat to transfer large\n\t# structures. No resumption upon interruption.\n\ttar -C /root -c . | pv | tar -C /tmp/test -x\n\n\t# Slightly slower (?) than tar, but allows resuming the transfer\n\t# and displays the names of the files as transferred\n\trsync -av /root/ /tmp/test/\n\nxmlparser\n=========\n\n## Name\n\n`xmlparser` -- Commandline tool to parse XML files with Java\n\n## Synopsis\n\n\txmlparser FILE\n\n## Description\n\nThis program attempts to parse the given XML file using a `SAXParser` that is\nvalidating and XInclude aware. In case of invalid files, the exception is\nprinted to console, otherwise no output is shown.\n\n## See also\n\n[xmlstarlet(1)](https://manpages.debian.org/buster/xmlstarlet/xmlstarlet.1.en.html)\nwhich can provide a similar use with `xmlstarlet validate`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm7a%2Fbp-java-nostalgic-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm7a%2Fbp-java-nostalgic-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm7a%2Fbp-java-nostalgic-tools/lists"}