This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
I periodically tinker with nodemcu firmware for the ESP chips by espressif. One of the most frustrating things is the difference between the documented methods and constants and the actual methods and constants. | |
The first helper function I define is a `help` function named `h()`: | |
``` | |
function h(mod) for k,v in pairs(mod) do print(k) end end | |
``` | |
-- Example Use# | |
``` |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# We use streams (open the file convert the device to a stream, using 4MB chunks) | |
# as a demo, using this method we copied a 2.5GB file with no significant memory usage on | |
# an Odroid with only 2GB of RAM. Not super fast... Do line oriented by replacing the byte | |
# count in IO.binstream(:line), very very slow. Process line by line or chunk by chunk | |
# by passing a function to Stream.into(out, fn(line) -> do_someting(line) end). | |
fin = File.open!("file.in", [:read, :read_ahead]) |> IO.binstream(4194304) | |
fout = File.open!("file.out", [:write] |> IO.binstream(4194304) | |
fin |> Stream.into(fout) |> Stream.run |