> C really isn't as great for this as is often suggested either, not for decades at least
It's good enough for undergraduate teaching. In C, you can easily explain the relation between a struct definition and its layout in memory. It's much more difficult in Caml (what's the relation between an algebraic datatype and its layout in memory?) or Java (which introduces pointers that you never asked for).
We (University of Paris-Cité) are teaching Java in first year, then C and Caml in second year, with seemingly good results.
If the compiler optimizer doesn't reorder the struct fields depending on which flags or pragmas are used, and you could teach that as well in other compiled languages, ignoring the market size of each language.
The C optimizer is not allowed to re-order, so, unless you've specifically used some implementation override you know exactly how C will lay out basic types.
Likewise packing isn't allowed by the standard, so you'd again only need to talk about packing if you want to.
This seems like a reasonable place to start. Like the way driving school teaches you a U-turn but not a J-turn. Is a J turn actually a thing you might need? Maybe, but it's definitely not where we should start.
Thanks. I've had a quick look, and it looks like it's a drop-in replacement for fail2ban (it claims to parse fail2ban's configuration files unchanged), except that it doesn't require a Python runtime.
I haven't tried it, since I'm currently happy with sshguard. I'm keeping the link handy in case I find I need more features than what sshguard provides.
I guess it takes some people a long time to learn.
The signs of his corruption and sociopathic personality were there long before he got elected the first time. e.g. history of refusing to pay contractors who'd worked for him.
One hour later, it appears that sshguard is working fine. It's structured as a dozen binaries or so, but it has no dependencies. I haven't done any CPU usage measurements, but I haven't seen it appear in top's output.
Just to clarify: OsmAnd has more features, CoMaps and Organic Maps are much faster.
(Aside: I'm using CoMaps myself. The main missing features are tracking (I use OpenTracks for that) and public transportation (I use a website for that). End of aside.)
OsmAnd is not that much slower nowadays since they added the new OpenGL renderer. It is, however, less convenient and pretty. I think OsmAnd really shines for things like hiking, whereas for regular urban navigation CoMaps works just as well.
Exactly my experience as well. OSMAnd is a lot better for hiking as it has 3d views, hiking routes, topo maps and better routing in general. Comaps is great for city navigation or casual usage
I also really like the star chart they added recently. Seems like a minor thing but it's just really handy to have it available for the few occasions you need it.
I gave CoMaps a shot this morning, but it doesn't support public transit in my city (Minneapolis/Saint Paul area) which is an instant deal killer. Bummer.
Wait, I just used the tracking the other day and generated a GPX from it. It also drew me an elevation map and gave me some other info about the trip. Is there some other tracking that it can't do?
I stand corrected, CoMaps can do tracking. It was introduced in Organic Maps a couple of years ago, but I was already using OpenTracks, so I never switched away from it.
I was recently recommended https://api.transitous.org (it's a webapp despite the domain). It can do things like "someone can pick me up on the far side and I don't mind walking 30 minutes at the start at 6 km/h, what's the optimal route to take?"
Revolutionary! Finally I don't have to look on a map to find all stations in walking/cycling/driving distance and then route to/from every possible combination of start and end station manually to see what busses and trains run there. And repeat the process with each schedule change in each involved country. Every other transport app that I know of will try to keep you within a few hundred metres of a bus stop or train station at all times and say "there exists no route" before telling you to cycle 10 minutes or from which station you have the shortest remaining distance by taxi or whatever
There is actually work being done to integrate exactly this API into Comaps! Although it will certainly take some more time, especially until these more niche routing features are available
Nice design, but that's the kind of functionality that's best integrated within a chat or videoconferencing application, since within a conference you can be pretty sure that you send the file to the right person.
For a demo, go to <https://galene.org:8443/group/public/hn/>. Login twice in two different browser tabs (leave the password field empty). Click on the username of your partner, and choose Send file.
No, it's best to write the data on a USB stick and see the person in real life. Ask for ID and do a retina scan. Then you can be pretty sure that you give the file to the right person. Make sure to cryptographically sign the data so the recipient can be sure it's you.
In modern conferencing applications, users are not connected with each other, they are connected with a central server.
Transferring files shouldn't involve that central server, so you'd need to establish a direct connection between the users, and with network topologies those days, it will most likely require a relay between the two. It's not great.
> Transferring files shouldn't involve that central server, so you'd need to establish a direct connection between the users
That's exactly what Galene does when a user requests a file transfer.
> with network topologies those days, it will most likely require a relay between the two
We perform NAT traversal by using the server to punch holes in both NATs. Only if that fails (due to a symmetric NAT or to an overly restrictive firewall) do we fall back to relaying through the server.
Traditionally, character's under Unix were encoded in a locale-specific manner: ISO 8859-1 in Western Europe, ISO 8859-2 in Eastern Europe, EUC-JP in Japan, etc. In the 1990s, there was a major push to get XFree86 (the ancestor of X.Org) to switch to locale-independent UTF-8, lead mainly by Markus Kuhn and Bruno Haible.
The link is to Markus Kuhn's web page, which appears to describe the UTF_8 software available around 1998 or so.
UTF-8 is not locale independent. You cannot correctly render multilingual UTF-8 text without also specifying its locale, and some transformations like uppercase/lowercase also depend on the locale.
Eg: some cjk characters render differently based on whether mainland China, Taiwan, or Japan. One example 骨 (from my old notes so tiny chance this example is incorrect)
> You cannot correctly render multilingual UTF-8 text without also specifying its locale
You can render it pretty well, not perfect, but good enough to actually read it, as opposed to not being able to render it at all or rendering mojibake à la Кракозябры instead.
At least touching Unicode strings in wrong locales only mildly corrupts the strings. Plenty of Win32 apps would crash if the system locale is in UTF-8.
I mean, UTF-8 string handling is language (of the given bitstream, not necessarily the system) dependent, e.g. Turkish lowercase I, Chinese Hanzi vs Japanese Kanji at same codepoints, etc etc...
The encoding itself is locale-independent. Some algorithms (rendering, casing, hyphenation etc.) depend on the locale.
This is unlike the older paradigm, where the encoding itself was dependent on the locale, making things like copy-paste between applications running in different locales problematic.
It's good enough for undergraduate teaching. In C, you can easily explain the relation between a struct definition and its layout in memory. It's much more difficult in Caml (what's the relation between an algebraic datatype and its layout in memory?) or Java (which introduces pointers that you never asked for).
We (University of Paris-Cité) are teaching Java in first year, then C and Caml in second year, with seemingly good results.
reply