HN user

cheese65536

12 karma
Posts0
Comments6
View on HN
No posts found.

Here is a Udacity course using webgl: https://www.udacity.com/course/interactive-3d-graphics--cs29...

Here is the Class Central page with reviews: https://www.classcentral.com/course/udacity-interactive-3d-g... You can search for other courses on class central, though searching for webgl didn't actually find the Udacity course - had to look at related courses for a no longer available Coursera course listing that searching did find.

Edit: Also, Packt's free ebook of the day is currently Learn Three.js, which is a wrapper around webgl. Only available for the next 9 hours or so. If you don't have a packt subscription, you can only read it in a web browser. https://www.packtpub.com/free-learning

Deprecating scp 6 years ago

Also, what is the correct way to use scp copy remote files with a space in the name? I usually end up just using wildcards (or rsync), but that can behave incorrectly with similarly named files.

  $ touch '/tmp/test file'
  $ scp localhost:'/tmp/test file' .
  scp: /tmp/test: No such file or directory
  scp: file: No such file or directory
  $ scp localhost:'/tmp/test?file' .
  test file                                     100%    0     0.0KB/s   00:00
Edit: I'll answer my own question, which I clearly never thought about much, since the answer is obvious. I need to escape the space within the string.
  $ scp localhost:'/tmp/test\ file' .
  test file                                     100%    0     0.0KB/s   00:00

A lot of embedded compilers are bad or at least old. You frequently only get C and not C++, so you can use header files as a sort of template. Write all your real code to use a peripheral in the header, but wrap all the function names, global variable names, and peripheral register names in special macros. Then, in the .c file, you can include the header file multiple times as long as before each include you define a handful of macros that rename all the function, global variable, and register names in the header so they refer to the correct peripheral instance.