<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pakakeh.go, branch v0.50.1</title>
<subtitle>Collections of packages and tools for working with Go programming language.</subtitle>
<id>http://git.kilabit.info/pakakeh.go/atom?h=v0.50.1</id>
<link rel='self' href='http://git.kilabit.info/pakakeh.go/atom?h=v0.50.1'/>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/'/>
<updated>2023-11-05T05:22:09Z</updated>
<entry>
<title>Release share v0.50.1 (2023-11-05)</title>
<updated>2023-11-05T05:22:09Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2023-11-05T05:22:09Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=4160c3778238a5b4dd3e3366be24dec80d62d409'/>
<id>urn:sha1:4160c3778238a5b4dd3e3366be24dec80d62d409</id>
<content type='text'>
This release bring many enhancements to "lib/memfs", a library for caching
file system in memory.

===  Enhancements

* lib/memfs: return nil in AddChild if file not exist
* lib/memfs: quote the path in the returned error
* lib/memfs: add method Child to Node
* lib/memfs: call the Init method in the embedded file
* lib/memfs: include empty directory
* lib/memfs: re-scan directory content on Node’s Update
</content>
</entry>
<entry>
<title>lib/memfs: re-scan directory content on Node's Update</title>
<updated>2023-11-05T05:02:52Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2023-11-02T14:34:25Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=cdf63b664754fd2c53ec89d0e63410008e37516b'/>
<id>urn:sha1:cdf63b664754fd2c53ec89d0e63410008e37516b</id>
<content type='text'>
Previously, only node content get updated.
In case in the MemFS, user set "Options.TryDirect" to true, the directory
content should be updated too on "MemFS.Get".
</content>
</entry>
<entry>
<title>lib/memfs: include empty directory</title>
<updated>2023-11-05T05:02:52Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2023-11-02T14:30:49Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=3dbed6f1d8e797af40d8fe4eefe5c30bf89ffce7'/>
<id>urn:sha1:3dbed6f1d8e797af40d8fe4eefe5c30bf89ffce7</id>
<content type='text'>
Even thought empty directory does not contains file, from the parent
node _it is_ part of their content.

Also, there is a use case where memfs use as virtual file system (VFS),
as a layer with file system, where user can view list of directory,
create a directory or file on the fly.
If we skip scanning empty directory, that directory will not be visible.
</content>
</entry>
<entry>
<title>lib/memfs: call the Init method in the embedded file</title>
<updated>2023-10-29T10:08:15Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2023-10-29T10:08:15Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=d714934c3b42d9fba7c8751532f92cb61c23e1e2'/>
<id>urn:sha1:d714934c3b42d9fba7c8751532f92cb61c23e1e2</id>
<content type='text'>
By calling the Init method, the regular expression for include and
excludes is initialized, which allow using any method of MemFS instance
later, for example the Watch method.

While at it, fix the fields alignment in template code format.
</content>
</entry>
<entry>
<title>lib/memfs: add method Child to Node</title>
<updated>2023-10-28T17:46:53Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2023-10-28T17:46:53Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=72e51cb4606155d9a3ecc9777aeb41579045f868'/>
<id>urn:sha1:72e51cb4606155d9a3ecc9777aeb41579045f868</id>
<content type='text'>
The Child method return the child node based on its node.
</content>
</entry>
<entry>
<title>lib/memfs: quote the path in the returned error</title>
<updated>2023-10-24T14:18:32Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2023-10-24T14:14:20Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=cea29b1890e2e03c4744d50c3c9d6d3dc4535bdf'/>
<id>urn:sha1:cea29b1890e2e03c4744d50c3c9d6d3dc4535bdf</id>
<content type='text'>
Error message should at least contains 4W in the following order,

  WHEN WHO/WHERE WHAT WHY

By quoting, user or machine can parse that the value inside quote
is the value that cause the error (the what), not part of the cause of
the error (the why).
</content>
</entry>
<entry>
<title>lib/memfs: return nil in AddChild if file not exist</title>
<updated>2023-10-24T14:10:30Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2023-10-24T14:10:30Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=5bd6a228de6fb526cc10ab5284ce59857c2d966b'/>
<id>urn:sha1:5bd6a228de6fb526cc10ab5284ce59857c2d966b</id>
<content type='text'>
In case the node being added is a symlink, and the symlink is broken,
the AddChild will return an error fs.ErrNotExist.

In this changes we check for fs.ErrNotExist and return nil without an
error, so the user of AddChild can skip adding the node to the parent.
</content>
</entry>
<entry>
<title>go.mod: update all dependencies</title>
<updated>2023-10-13T05:17:32Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2023-10-13T05:17:32Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=350cbf5179181893050cd9326537424db4c07365'/>
<id>urn:sha1:350cbf5179181893050cd9326537424db4c07365</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Release share v0.50.0 (2023-10-04)</title>
<updated>2023-10-04T15:41:43Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2023-10-03T16:00:43Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=279638ef43dd2a938a43363a4813c0e18b898cb3'/>
<id>urn:sha1:279638ef43dd2a938a43363a4813c0e18b898cb3</id>
<content type='text'>
This release bring many enhancements thanks to linters like revive,
fieldaligment, and shadow.

This release also replace "math/rand.Seed" with "crypto/rand".
Since Go 1.20 the "math/rand.Seed" is considered deprecated (the initial
value of rand is seeded automatically, not zero).
Now, it is the time to replace "math/rand" with more secure random number
generator, from "crypto/rand".
This changes affect tests in package "lib/email", "lib/http", and
"lib/stmp".

== Breaking changes

* lib/test: refactoring, rename TestWriter to BufferWriter
* ssh/sftp: rename method Close to CloseFile

== New features

* lib/errors: implement method Is
* lib/email: add method ID to Header
* test/mock: implement mock for testing io.ReadWriter or io.StringWriter
* lib/crypto: add function LoadPrivateKeyInteractive
* lib/crypto: implement RSA encrypt and decryption for large message size
* ssh/sftp: add method to close client connection
* lib/ssh: add method Close to Client

== Enhancements

* _AUR: include go-mod-tip.sh to package
* lib/crypto: rewrite LoadPrivateKey as wrapper of ssh.ParseRawPrivate
* lib/ssh: store and use the connected identity file for ScpPut and ScpGet
</content>
</entry>
<entry>
<title>lib/ssh: fix missing error check from previous changes 8d0720f6</title>
<updated>2023-09-27T03:17:16Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2023-09-27T03:17:16Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=fa2510a8d458dc6d66d7df6e6ac94365553c248a'/>
<id>urn:sha1:fa2510a8d458dc6d66d7df6e6ac94365553c248a</id>
<content type='text'>
</content>
</entry>
</feed>
