{"id":17497409,"url":"https://github.com/benaryorg/liveuniq","last_synced_at":"2025-06-15T03:07:05.155Z","repository":{"id":68704815,"uuid":"114184582","full_name":"benaryorg/liveuniq","owner":"benaryorg","description":"liveuniq is uniq -c with some real-time output","archived":false,"fork":false,"pushed_at":"2018-04-24T21:06:42.000Z","size":20,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-06T03:12:52.316Z","etag":null,"topics":["cli","haskell","ncurses"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/benaryorg.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":"LICENSE","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":"2017-12-14T00:55:02.000Z","updated_at":"2022-05-19T14:34:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"fab2f5c1-9e18-475b-b3a2-5cce41902b6e","html_url":"https://github.com/benaryorg/liveuniq","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benaryorg%2Fliveuniq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benaryorg%2Fliveuniq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benaryorg%2Fliveuniq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benaryorg%2Fliveuniq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/benaryorg","download_url":"https://codeload.github.com/benaryorg/liveuniq/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243551328,"owners_count":20309300,"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":["cli","haskell","ncurses"],"created_at":"2024-10-19T15:43:55.633Z","updated_at":"2025-03-14T09:14:01.644Z","avatar_url":"https://github.com/benaryorg.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# liveuniq\n\nEver had a webserver logfile that had IPs in it and you wanted to know the top talker?\nEver received a continuous stream of repetitive lines and wanted to know which one was occurring\nmost often?\n\nThat is usually a job for `uniq -c`, the problem with that is that you can't `tail -f` a file or\nreceive an infinite stream of data.\n\nWe've solved that problem by just printing out the output of a `uniq -c` every 0.1 seconds.\n\n[![asciicast](https://asciinema.org/a/153477.png)](https://asciinema.org/a/153477)\n\n# Try it out!\n\nWanna see it yourself?\n\nJust clone this repository and install [*stack*](https://haskell-lang.org/get-started).\nAnd follow those steps:\n\n```bash\n# build liveuniq\nstack build\n\n# get random two character strings and send them to liveuniq\nbase64 /dev/urandom -w 2 | stack exec liveuniq\n\n# optionally install into your PATH (probably ~/.local/bin)\nstack install\n```\n\n# More Examples\n\nThe [GitHub Repository](https://github.com/benaryorg/liveuniq/) has a\n[Wiki](https://github.com/benaryorg/liveuniq/wiki), which in turn has an [Example\nPage](https://github.com/benaryorg/liveuniq/wiki/Examples).\nI hope we can fill that one with examples soon.\n\n# License\n\nISC.\nThere's a catch though, the library this code depends on is GPL.\nThis seems to be fine, as long as you take care when redistributing binaries.\n\nMy personal comment on this is: stick to more free licenses than GPL.\nIt saves so much trouble on these kinds of things.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenaryorg%2Fliveuniq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbenaryorg%2Fliveuniq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenaryorg%2Fliveuniq/lists"}