<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pakakeh.go, branch v0.57.0</title>
<subtitle>Collections of packages and tools for working with Go programming language.</subtitle>
<id>http://git.kilabit.info/pakakeh.go/atom?h=v0.57.0</id>
<link rel='self' href='http://git.kilabit.info/pakakeh.go/atom?h=v0.57.0'/>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/'/>
<updated>2024-09-03T18:09:51Z</updated>
<entry>
<title>Release pakakeh.go v0.57.0 (2024-09-03)</title>
<updated>2024-09-03T18:09:51Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-09-02T17:16:13Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=061cf9bf6072e0f718c6c16935caf218d05da5de'/>
<id>urn:sha1:061cf9bf6072e0f718c6c16935caf218d05da5de</id>
<content type='text'>
=== Breaking changes

* lib/sql: replace [http.FileSystem] with [memfs.MemFS]

  Accepting the [http.FileSystem] means that the parameter can receive
  an instance of [embed.FS], but in most cases, it will fail.

  Case example, when we embed SQL files for migration under
  "db/migration" using the "go:embed" directive,

  	//go:embed db/migration/*.sql
  	var DBMigrationFS embed.FS

  and then call the [Migrate] function, it will not find any ".sql"
  files inside the "/" directory because the files is stored under
  "db/migration/" prefix (also there is no "/" when using embed.FS).

=== Chores

* lib/memfs: document the comparison with "go:embed" directive

  Compare it to "go:embed", the memfs package is more flexible and
  portable. Currently, we found three disadvantages of using "go:embed",

    - The "go:embed" only works if files or directory to be embedded is
      in the same parent directory.
    - Accessing the embedded file require the original path.
    - No development mode.

  None of those limitation affected the memfs package.
</content>
</entry>
<entry>
<title>all: fix various linter warnings</title>
<updated>2024-09-03T18:09:51Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-09-02T17:36:12Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=bea911e27eb064653e46493320d3a15061672acc'/>
<id>urn:sha1:bea911e27eb064653e46493320d3a15061672acc</id>
<content type='text'>
While at it, temporary disable gosec due to excessive report for G115,
which may be true, but may also break the current working program.
We should alter and fix once we can test and make sure that it does not
breaks.
</content>
</entry>
<entry>
<title>go.mod: update all dependencies</title>
<updated>2024-09-02T17:16:00Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-09-02T17:16:00Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=218aad17a7f92169b1bd75fccb8a3c87cde0cf8b'/>
<id>urn:sha1:218aad17a7f92169b1bd75fccb8a3c87cde0cf8b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>lib/sql: replace [http.FileSystem] with [memfs.MemFS]</title>
<updated>2024-08-09T09:34:57Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-08-09T09:34:57Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=437d1090ef8b94b8de784eb27f2cf85bcfc1fc6e'/>
<id>urn:sha1:437d1090ef8b94b8de784eb27f2cf85bcfc1fc6e</id>
<content type='text'>
Accepting the [http.FileSystem] means that the parameter can receive an
instance of [embed.FS], but in most cases, it will fail.

Case example, when we embed SQL files for migration under
"db/migration" using the "go:embed" directive,

	//go:embed db/migration/*.sql
	var DBMigrationFS embed.FS

and then call the [Migrate] function, it will not found any ".sql" files
inside the "/" directory because the files is stored under
"db/migration/" prefix (also there is no "/" when using embed.FS).
</content>
</entry>
<entry>
<title>lib/memfs: document the comparison with "go:embed" directive</title>
<updated>2024-08-09T08:21:01Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-08-09T08:21:01Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=473738cfc9b33c18ee749112c7d248f4f626e7fb'/>
<id>urn:sha1:473738cfc9b33c18ee749112c7d248f4f626e7fb</id>
<content type='text'>
Compared it with "go:embed", the memfs package is more flexible and
portable.
Currently, we found three disadvantages of using "go:embed",

  #1 - The "go:embed" only works if files or directory to be
       embedded is in the same parent directory.
  #2 - Accessing the embedded file require the original path.
  #3 - No development mode.
</content>
</entry>
<entry>
<title>Release pakakeh.go v0.56.0 (2024-08-04)</title>
<updated>2024-08-04T04:33:49Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-08-04T04:29:59Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=f703cf50a4e3b2092a5ad615eef9bd56f58a25d3'/>
<id>urn:sha1:f703cf50a4e3b2092a5ad615eef9bd56f58a25d3</id>
<content type='text'>
== New features

* cmd/emaildecode: CLI to decode email body to plain text

The emaildecode accept file as input. If the email header contains
content-transfer-encoding with value quoted-printable or base64, it will
decode the message body and print it to stdout as plain text.

== Bug fixes

* lib/memfs: another fix for refresh

In previous commit we use wrong condition when handling directory
"." as Root.

== Enhancements

* lib/email: allow message that end lines with LF only

Although, a message from network must end with CRLF, a message from
(another) client may have been sanitized and end with LF only.

* lib/email: decode the message body based on content-transfer-encoding

After the header and body has been parsed, if the header contains
Content-Transfer-Encoding, we decode the body into its local formats.
Currently supported encoding is "quoted-printable" and "base64".

== Others

* lib/email: export the Header fields

By exporting the fields, this allow the caller to filter or manage
the field manually.

* _doc: add partial note and summary for RFC 2183

The RFC 2183 is define Content-Disposition header field in the
internet message.

* lib/ini: mention that marshaling []byte does not supported

Due to "byte" is considered as "uint8" during reflection, we cannot
tell whether the value is slice of byte of slice of number with type
uint8.
</content>
</entry>
<entry>
<title>lib/ini: mention that marshaling []byte does not supported</title>
<updated>2024-08-04T04:33:49Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-08-03T11:00:40Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=b70c8ab9bc3225a5cbad746902e4252477500e7b'/>
<id>urn:sha1:b70c8ab9bc3225a5cbad746902e4252477500e7b</id>
<content type='text'>
Due to "byte" is considered as "uint8" during reflection, we cannot tell
whether the value is slice of byte of slice of number with type uint8.
</content>
</entry>
<entry>
<title>_doc: add partial note and summary for RFC 2183</title>
<updated>2024-08-04T04:33:49Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2023-09-19T18:07:59Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=426f3df9aaf6d4788567da2f7ca17ce14cb56b38'/>
<id>urn:sha1:426f3df9aaf6d4788567da2f7ca17ce14cb56b38</id>
<content type='text'>
The RFC 2183 is define Content-Disposition header field in the internet
message.
</content>
</entry>
<entry>
<title>cmd/emaildecode: CLI to decode email body to plain text</title>
<updated>2024-08-04T04:33:49Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-01-24T17:20:53Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=4ae360c5adc25051136ce638f85c7c10f856d9d3'/>
<id>urn:sha1:4ae360c5adc25051136ce638f85c7c10f856d9d3</id>
<content type='text'>
The emaildecode accept file as input.
If the email header contains content-transfer-encoding with value
quoted-printable or base64, it will decode the message body and print it
to stdout as plain text.
</content>
</entry>
<entry>
<title>lib/email: export the field Fields in Header</title>
<updated>2024-08-04T04:33:27Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-08-03T04:50:24Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=9902b65d3feef74a30001b8f150299467693e699'/>
<id>urn:sha1:9902b65d3feef74a30001b8f150299467693e699</id>
<content type='text'>
By exporting the field, this allow the caller to filter or manage the
Header Fields manually.
</content>
</entry>
</feed>
