topbanner_forum
  *

avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • February 25, 2018, 05:32 PM
  • Proudly celebrating 10 years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Tuxman [ switch to compact view ]

Pages: [1] 2 3next
1
You know what sucks?
E-mail address standards suck.

"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com

Did you know that this is a valid e-mail address? Well, it is. Try to validate that!

Oh, wait, there is a solution for that: My very own e-mail validation library.
https://github.com/d...malwieder/libvldmail

Will move away from GitHub some day. For now, it's there. Enjoy.

2
Looks like BitsDuJour has three SUMo offers by now:

http://www.bitsdujou...in=todays-deals-home
- Discounts for a 1-Year License
- Discounts for a Lifetime License

https://chefkochblog...eaway-by-bitsdujour/
- Free License. (At least according to the user name.)

 :huh:

Enjoy, probably.

3
The fan of old-school tools strikes again.  8)
(NANY 2019, anyone?)

Do you know what's missing in both POSIX and Windows? Right: A sane way to rename files/directories with a regular expression.
The usual approach on POSIX systems is:

ls * | sed -E 's/(.*)text(.*)to(.*)remove(.*)/mv & "$1$2$3$4"/' | sh

That is horrendously ugly and does not port well to Windows. Here is my slightly less horrendously ugly attempt to fix that:
https://bitbucket.org/tux_/remv

Enjoy.

4
N.A.N.Y. 2018 / NANY 2018 Release: UnClouder for Firefox
« on: November 18, 2017, 04:34 PM »
NANY 2018 Entry Information

Application Name UnClouder
Version 0.2
Short Description Replaces "the Cloud" marketing speech on websites you visit to correctly describe potential security issues.
Web Page http://mozilla.tuxproject.de/unclouder
Download Link https://addons.mozil...fox/addon/unclouder/
System Requirements
  • Firefox 57 or higher
Version History
  • 0.1: Initial release
  • 0.2: Grammar fixes, (virtual) DOM fixes
Author mouser  :P (just in case anything breaks)

One more? Fuck yeah!

This little side-project of mine is my first approach at a content script (formerly known as "userscript") for Firefox's WebExtension thingy. It basically grew as a playfield while preparing ymarks development, I just had the time to finish it.

Features:

If you visit a German or English website talking about "the Cloud" bullshit, this extension will replace that bullshit by "other people's computers" so you can easily see why the bullshit is bullshit.

Portability issues:

  • I only added two languages for now. I am lazy.
  • The UnClouder uses Firefox's "CLD2" language detector. Addendum: Chrome et al. support that too, but the messaging infrastructure seems to work differently. If anyone of you needs a Chrome/Vivaldi/... version, let me know that it might be worth the effort.

Enjoy or whatever.

5
N.A.N.Y. 2018 / NANY 2018 Release: Gowser, a Gopher browser
« on: November 04, 2017, 04:57 PM »
NANY 2018 Entry Information

Application Name Gowser
Short Description A simple Gopher browser
Supported OSes Compiled for Windows, would probably compile on *ix though
Web Page https://bitbucket.org/tux_/gowser (currently, source only)
System Requirements
  • Binary: Windows.
  • Source: Probably, Linux/Unix with GTK+ and Windows.
Version History
  • 20171104: init. DC build, may or may not break.
Author

Description
'member Gopher? I 'member.
Why is Gopher Still Relevant?

Features
  • Gowser will browse Gopher.
  • Can make me procrastinate working on ymarks.

Planned Features
  • Support for image and sound files.
  • Support for Gopher's killer feature: searches.
  • Bookmarks.

Screenshots
TMAVeTk.png

Usage
Installation
Unrar. Open the .exe. Enjoy.

Using the Application
Enter a Gopher URL.

Uninstallation
Remove the extracted .exe file.

Known Issues
  • Most of plain Gopher works, media files (images and sound files) don't (yet). As they rarely occur, I decided to postpone their implementation.
  • The one big advantage of Gopher towards HTTP is that you can easily search it. Maybe some day Gowser will support that, but it currently does not.
  • This build creates a debug log. If you experience crashes, you can send it to me or something.
  • There are crashes. Sorry.

6
N.A.N.Y. 2018 / NANY 2018 Release (preliminary alpha-or-so): ymarks
« on: October 30, 2017, 09:15 AM »
k0j8yAyE.jpg ymarks :: self-hosted cross-browser bookmarks sync

You know Xmarks, the almost legendary bookmark sync service that has been allowing you to synchronize your bookmarks across multiple browsers since 2006? I have been working on a self-hosted open-source alternative for a couple of months (skipping a couple of weeks because this is far from being my only ongoing development project) and I'm confident to be able to release a first version just in time for NANY 2018.

I implement the client part as a WebExtension, it will probably work with Firefox, Chrome, Vivaldi, Opera, and Edge without any modifications when I'm done. I'll also try to provide an Android app because mobile browsers suck when it comes to extensibility, but that does not have a high priority as of now.


DONEs and TODOs:

Bookmarks server:


  • Compiles on Windows done
  • Compiles on *ix done
  • Can retrieve and store bookmarks done
  • Can backup bookmarks done
  • Can send bookmarks to the client done

Browser extension:

  • Can upload bookmarks done
  • Can download bookmarks done
  • Can download previous bookmarks done
  • Automated downloads and uploads on start/changes done
  • Ensure cross-browser compatibility Write separate extensions because Mozilla is a cunt in progress

Android app:

  • Settings (UI & storage TODO
  • Bookmarks list TODO
  • Add/Edit/Delete bookmarks TODO

Prepare.

7
N.A.N.Y. 2018 / NANY 2018 Release: twtxtc
« on: September 17, 2017, 11:09 AM »
Application Name twtxtc
Short Description A command line client for the twtxt micro-blogging network
Supported OSes
  • tested on FreeBSD and Windows 10
  • will probably work everywhere else as long as a decent C compiler and curl exist
LicensesMostly WTFPL, includes one MIT-licensed library
Web Page https://hub.darcs.ne...rtuxmalwieder/twtxtc
Download Link Check the attachment or compile your own version from the website
System Requirements
  • runtime: curl (executable) in your PATH
  • building: CMake and a C compiler
Author Take a guess!

A command-line client for the twtxt micro-blogging system, written in C.

README (excerpts pasted here for your convenience, please refer to the website for boring technical details and TODOs):

What is twtxt?

twtxt is a decentralised, minimalist approach to micro-blogging, similar to Twitter but with self-hosted plaintext files. See the original twtxt documentation for details. twtxtc is a twtxt client written in the C language.

Requirements

Build or download an appropriate curl binary for your system and place it into your $PATH or the twtxtc folder. If you don't, you won't be able to retrieve your timeline. Sorry.

Usage

./twtxtc [COMMAND]

Commands

tweet <text>            Adds <text> to your twtxt timeline.
timeline                Displays your twtxt timeline.
following               Gives you a list of all people you follow.
follow <user> <URL>     Adds the twtxt file from <URL> to your timeline.
                        <user> defines the user name to display.
unfollow <user>         Removes the user with the display name <user> from your timeline.
help                    Displays a help screen.

Configuration

If found, twtxtc will use the .twtxtconfig file inside your HOME directory. (See twtxtc help for information on where it should be found.) The .twtxtconfig file is meant to be a valid JSON file like this:

{
    "nickname": "tux0r",
    "twtxtfile": "twtxt.txt",
    "maxlog": 100,
    "spacing": "   ",
    "following": {
        "user_1": "https://example.com/twtxt.txt",
        "user_2": "https://elsewhere.com/tweets.txt"
    }
}

Possible entries are:

  • nickname: Your preferred nickname. Only used to filter mentions to other people.
  • twtxtfile: The location of your twtxt.txt file. Defaults to ./twtxt.txt.
  • maxlog: The maximum number of entries shown when you view your timeline. Defaults to 100.
  • spacing: A string value that contains the spacing between the user name and the text when viewing your timeline. Defaults to three spaces.
  • following: A list of users you follow. Can be managed with the follow and unfollow commands.
The current limit of the list of users you are following is at 4 KiB. You probably won't reach that limit any time soon.

A Windows binary is attached. Here is the source code for your pleasure:
https://hub.darcs.ne...rtuxmalwieder/twtxtc

Have fun etc. etc.

8
While reviewing small browsers, I came across NetSurf as well. NetSurf is a fast and bloat-free web browser which happens to have got JavaScript support in younger incarnations by adding the Duktape ECMAScript engine.

Duktape, written in C, is much smaller than V8 or similar JS engines, making it a good choice for embedded systems or things like adding a scripting functionality to existing software. No web browser involved! It supports ECMAScript 5.1 with some additions from newer revisions, including regular expressions and Unicode. For lazy people like me, there is a C++ wrapper named Dukglue (quack!) available which lacks (good) documentation but works like a charm. If you ever thought that your application could need a good scripting engine, Duktape seems to be a good choice. Your C/C++ code can access any script functions and your scripts can access exported C/C++ symbols which is easier than it sounds.

You want an example? You get an example!
Assume that you want to have a JavaScript plug-in which doubles any input value.

Code: Javascript [Select]
  1. var DemoScript = {};
  2. DemoScript.double = function(number) {
  3.     return number*2;
  4. }
  5. DemoScript;

Here's how Dukglue probably* handles it:

Code: C++ [Select]
  1. #include <string>
  2. #include <iostream>
  3. #include <fstream>
  4. #include <dukglue/dukglue.h> // <- this is important
  5.  
  6. // ... blah ...
  7.  
  8. void processScripts(scriptfile) {
  9.     duk_context* ctx = duk_create_heap_default();
  10.    
  11.     std::ifstream infile(scriptfile); // add the exists() check yourself pls.
  12.     std::string file_contents = [&infile] {
  13.         // Read the script file contents for processing.
  14.         std::ostringstream ss{};
  15.         ss << infile.rdbuf();
  16.         return ss.str();
  17.     }();
  18.  
  19.     try {
  20.         // Give me a local handle to the script:
  21.         DukValue script = dukglue_peval<DukValue>(ctx, file_contents.c_str());
  22.  
  23.         // Try to call double(2):
  24.         int value = dukglue_pcall_method<int>(ctx, script, "double", 2);
  25.         std::cout << "The double value of 2 is " << value << std::endl;
  26.     }
  27.     catch (DukException& e) {
  28.         // Damn.
  29.         std::cout << "Blimey! Something bad happened. " << e.what();
  30.     }
  31.    
  32.     duk_destroy_heap(ctx);
  33. }
  34.  
  35. // now call processScripts("double.js"); or whatever.

* I was lazy, I just assumed it would work like this and it probably does. A more complex and actually tested ;) example is part of my blog software (nudge, nudge).

According to mouser, this might be interesting for more people than just me. So here it is. :)

10
Learning through pain, my friends ...

A UX design flaw in the Google's Chrome browser could allow malicious websites to record audio or video without alerting the user or giving any visual indication that the user is being spied on. (...) Bar-Zik reported the security issue to Google on April 10, 2017, but the company doesn't consider this as a valid security vulnerability.

Stop using Chrome. All of you. Now.

11
At least in Germany, you can currently get SoftMaker Office Standard or Professional for less than 23 €, including a free copy of the Paragon Partition Manager. Not sure about other countries though. Try it.

12
irc:// links don't work. (See the infobox.)
 

13
Mini-Reviews by Members / qutebrowser - Mini-Review
« on: April 01, 2017, 06:01 PM »
Basic Info

App Namequtebrowser
App URLhttp://qutebrowser.org/
App Version Reviewed0.10.1
Supported OSesmost (or even all?) OSs which have Python 3 and QtWebKit available
Support Methods
Pricing Schemequtebrowser is licensed under the terms of the GPLv3, meaning that you're - at least - free to use it without spending any money.
Screencast Video URLhttps://www.youtube..../watch?v=glfJJfTEB2g

I8ORIgE.png

Intro:

In 2017, the world wide web has long lost one of its key features, namely its simplicity. Remember when you could just visit most websites with a text-mode browser and not lose any relevant information? By today, the web has turned into a giant blob of anti-features, making it unnecessarily hard to keep a low memory and CPU footprint while trying to use it. Browsers like NetSurf which feature their own engine and manage to use as few resources as possible are neat, but they fail to be compatible with just anything, at least right now.

A pretty good compromise between a low footprint and an adequately large feature set is the qutebrowser which is amazing in multiple ways: It is fast even with its Python core, it is efficient even with its QtWebKit engine, it is accessible even though being modeled after Vim.

Here is my review.

Who is this app designed for:

The qutebrowser is a great alternative for the Unix-only uzbl browser and Firefox's to-be-deprecated Vimperator and Pentadactyl extensions, focusing on Vim-like UI and keyboard features. Having to use the mouse can be annoying in a text-based medium like the web.

If you prefer a minimal waste of screen space and efficient keybindings to giant toolbars and weird mouse (or even touch) gestures, qutebrowser could be for you.

The Good

If you know Vim, qutebrowser won't be a big deal for you. You can use most of Vim's basic keybindings (including hjkl), one-key commands (like O for opening something in a new tab) and some Vimperator-like commands like :tab-close. (You can still switch between the tabs with your mouse if you want to.) qutebrowser will show a DuckDuckGo tab and a Quickstart manual on its first start (see the screenshot above).

cheatsheet-big.png

There is a built-in ad blocker, advertised on the first start: Just type :adblock-update and you're good. Also, have I mentioned the low resource usage?

qute-memory.png

If you're not happy with some of the defaults, the built-in settings page provides a couple of rather advanced options including things like the window title format and the statusbar padding. Sorely missed from recent Firefoxes. And: Of course the qutebrowser has an "insert mode" for forms.  ;)

The needs improvement section

¯\_(ツ)_/¯

How does it compare to similar apps

Compared to Firefox with Vimperator or Pentadactyl, qutebrowser is not nearly as extensible but it saves you quite some headaches. There are official FAQ about that. :)

Conclusions

I'll see if this will be my default browser after Firefox's effective death on Nov. 14. You can never have enough options. For now, I'm impressed - I uninstalled NetSurf and dismissed Otter and I'll give this one a ride for a while.  :Thmbsup:

Enjoy.

14
Here, here:
Bits du Jour

15
Living Room / The end of replaceable batteries in smartphones
« on: January 24, 2017, 06:57 AM »
That's it. LG's upcoming G6 will not have a replaceable battery anymore.
Because, ha, as if modern devices would last long enough to see the demise of their batteries...

At least my life has suddenly become more interesting as I'll probably need to throw a dice about my next smartphone. LG was a safe bet until now.  :(

16
N.A.N.Y. 2017 / NANY 2017: Tiny Server Inventory
« on: December 25, 2016, 08:39 AM »
While my evil plan to release a great application for NANY 2017 was cancelled by the particular application becoming much too complicated for a quick release, I decided that I'd just write a small(ish) utility in time just for the sake of it.

fIdmJJ1.png

Description:

Some of you might know that, once you started renting your own servers, it can quickly become not so easy anymore to keep track of what's where. I, for one, have been using Evernote for this. You might see that Evernote is not perfect for this - the more servers you have, the more annoying it is to maintain your server/service list.

This application aims to be a server/service database. See the screenshot for what it can do and what not.

License:

WTFPL. Take it or leave it.

Technical interior:

I spent half of the past week trying to make sense of Object Pascal. This is how far I have come. There are quirks (to be solved later, maybe).

Future plans:

I might add a search functionality some day. Probably not in 2016 anymore. A lot of other projects to do.
Cancelled. Do it yourself.

Enjoy. Or don't.

17
General Software Discussion / Any replacement for ac'tivAid?
« on: December 22, 2016, 02:24 PM »
As the ac'tivAid development seems to have been stopped, I wonder if there is a similar software available. I mainly use the function to assign global hotkeys to applications (so I can e.g. start ConEmu with Ctrl-Alt-Space) and the Shutdown dialog (Windows+Q).

Any ideas?

18
Non-Windows Software / FYI: Cross-platform ASM
« on: December 04, 2016, 08:36 AM »
Neat:

The project aim is to create a fully portable library for visual assembly language programming. The supported operating systems for now are Win32, Linux and KolibriOS. Other systems might be added later.


  :-*

19
Found Deals and Discounts / WinRAR: 1/3 off
« on: December 04, 2016, 08:34 AM »
Looks like there is a notable offer:

https://shop.win-rar...purl-winrar_tipradar

Not sure when it will expire though. After having played with Bandizip for a couple of weeks, I might, however, give WinRAR another spin for this price.

20
So - has everyone left Firefox yet?

Good luck.

https://mobile.twitt...s/754337623964053504

TL;DR: the world's largest ads provider wants its piece of the cake that is you.

22
Ouch:

The vulnerability will not be fixed. The indirect costs of switching to HTTPS (like lost advertisement revenue) make it a inviable solution.

Open Source sucks.

23
Yadda yadda. No one reads my threads anyway. Penis!

Information and download: http://blogcpp.org
Sources and readme: http://bitbucket.org/tux_/blogcpp

(Yo mouser, don't you think it's time for a new subforum "The Bin, including Tuxman's software"?)

Sleep and stuff. G'night.

24
Developer's Corner / Boost as a symbol for the npm'ness of C++
« on: May 08, 2016, 08:39 AM »
I'm currently writing a rather sophisticated web software in C++ (I'll post a topic on it when I'm done, so there's finally another software of mine you can ignore :P). As I - as you might know - usually prefer the KISS principle, I try not to include as many external libraries as possible, probably reinventing the wheel in a lot of places yet sticking close to the standard. (Hooray, C++17!)

During the past development I came across a lot of potentially interesting libraries which I ended up implementing myself because all of them depended on the Boost libraries, a huge can-do-everything monster of some header-only, some must-be-linked libraries which would add an indefinite amount of complexity to my application without being maintainable by me. The usual reason for the requirement of Boost is that Boost provides regular expressions and advanced file system functionality - both of which are already a part of recent C++ standards (admittedly, <filesystem> is still considered experimental).

In the light of Node.js's funny - I really don't like JavaScript - left-pad debacle: Why, just why do some C++ folks prefer huge craploads of external libraries to just sticking to the standard? Being portable is no excuse anymore, nothing is as portable as the standard.

25
Sometimes I want to stay up-to-date with a website which does not have a good RSS feed, like KiTTY's. Of course I could use services like feed43. Or I just write my own solution.

rssparser.lisp on Bitbucket

Example:

% ./rssparser.lisp add "KiTTY" "http://www.9bis.net/kitty/?action=news&zone=en" ".news" "h1" ""
Success!
   
% ./rssparser.lisp list
1 feed is set up:
   
ID: 23  Title:        KiTTY
        URL:          http://www.9bis.net/kitty/?action=news&zone=en
        Last success: -

% ./rssparser.lisp parse
       
By default, the KiTTY website feed will be stored as feeds/feed23.xml then.

Enjoy.

Pages: [1] 2 3next