<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pakakeh.go, branch v0.37.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.37.0</id>
<link rel='self' href='http://git.kilabit.info/pakakeh.go/atom?h=v0.37.0'/>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/'/>
<updated>2022-05-09T14:57:13Z</updated>
<entry>
<title>Release share v0.37.0 (2022-05-09)</title>
<updated>2022-05-09T14:57:13Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-05-09T14:57:13Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=4a28e9531ed9d6048cde582fd69bd0854887f408'/>
<id>urn:sha1:4a28e9531ed9d6048cde582fd69bd0854887f408</id>
<content type='text'>
== Breaking changes

* lib/dns: refactor Server RemoveCachesByNames to return removed Answer
* lib/memfs: change the Watch method to accept struct

== New features

* lib/dns: add method to get the record in HostsFile by name and/or value
* lib/dns: add method CachesClear to remove all caches
* lib/net: add method to populate query on ResolvConf
* lib/dns: add function to create new client using name server URL

== Bug fixes

* lib/ini: fix panic when marshaling unexported field with type struct
* lib/memfs: make the Node’s addChild to be idempotent

== Enhancements

* lib/ini: implement marshaling and unmarshaling map with struct element

== Chores

* all: reformat all codes using gofmt 1.19 (the Go tip)
* all: replace any usage of ioutil package with os or io
</content>
</entry>
<entry>
<title>all: reformat all codes using gofmt 1.19 (the Go tip)</title>
<updated>2022-05-09T14:54:02Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-05-09T14:54:02Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=0c9abc1a962955dd0b795a422958c5445145d54c'/>
<id>urn:sha1:0c9abc1a962955dd0b795a422958c5445145d54c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>lib/dns: add method to get the record in HostsFile by name and/or value</title>
<updated>2022-04-24T17:39:03Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-04-24T17:38:04Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=c833f34b716b3aeacfca8f92227ff04cad5d04ae'/>
<id>urn:sha1:c833f34b716b3aeacfca8f92227ff04cad5d04ae</id>
<content type='text'>
The Get method return the first resource record that match with domain
name and/or value.
The value parameter is optional, if its empty, then only the first record
that match with domain name that will be returned.

If no record matched, it will return nil.

While at it, reformat the hosts_file comments with next Go 1.19 format.
</content>
</entry>
<entry>
<title>lib/ini: fix panic when marshaling unexported field with type struct</title>
<updated>2022-04-18T17:50:09Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-04-18T17:50:09Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=e5c85cdbfb18cae811679fb6b21090a1218dac4e'/>
<id>urn:sha1:e5c85cdbfb18cae811679fb6b21090a1218dac4e</id>
<content type='text'>
While at it, split the example for marshaling and unmarshaling
struct into separate examples.
</content>
</entry>
<entry>
<title>lib/ini: implement marshaling and unmarshaling map with struct element</title>
<updated>2022-04-17T18:35:59Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-04-17T18:30:40Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=f06c0d023a1ddd7b2d384995d975fe303d198ca9'/>
<id>urn:sha1:f06c0d023a1ddd7b2d384995d975fe303d198ca9</id>
<content type='text'>
For a field F with type map[K]S `ini:"sec"`, where K is string and S is
a struct or pointer to struct element, marshaling the field F will
result in the following ini format,

  [sec "K"]
  &lt;S.Field.Tag&gt; = &lt;S.Field.Value&gt;

Each field in struct S unmarshaled normally as "key = value".

This rule is also applied when unmarshalling from ini text into map[K]V.

This implementation allow multiple section with dynamic subsections as
key.
</content>
</entry>
<entry>
<title>lib/dns: add method CachesClear to remove all caches</title>
<updated>2022-04-14T19:27:31Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-04-14T19:27:31Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=ceba0704c6fcc2c3dd82876f6c45a3b24fe98fd6'/>
<id>urn:sha1:ceba0704c6fcc2c3dd82876f6c45a3b24fe98fd6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>lib/dns: refactor Server RemoveCachesByNames to return removed Answer</title>
<updated>2022-04-14T18:44:34Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-04-14T18:44:34Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=86c787c31de4a1c21414ee8b710276f76896f272'/>
<id>urn:sha1:86c787c31de4a1c21414ee8b710276f76896f272</id>
<content type='text'>
Previously, RemoveCachesByNames does not return anything, its only
print the domain name being removed if debugging level is set to &gt;= 1.

This changes rewrite the RemoveCachesByNames to return list of Answer
being removed to allower the caller to inspect and/or print the Answer.
</content>
</entry>
<entry>
<title>lib/net: add method to populate query on ResolvConf</title>
<updated>2022-04-13T17:23:21Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-04-13T17:23:21Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=9329196125feb616fc196a678d3a40940ce5ec85'/>
<id>urn:sha1:9329196125feb616fc196a678d3a40940ce5ec85</id>
<content type='text'>
Given a domain name to be resolved, the PopulateQuery generate
list of names to be queried based on registered Domain and Search
in the resolv.conf file.

The domain name itself will be on top of the list if its contains any
dot.
</content>
</entry>
<entry>
<title>lib/dns: add function to create new client using name server URL</title>
<updated>2022-04-11T18:31:37Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-04-11T18:31:37Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=8422dd7cdee8fbe31ef8b31e8e54c03ba330fadb'/>
<id>urn:sha1:8422dd7cdee8fbe31ef8b31e8e54c03ba330fadb</id>
<content type='text'>
The NewClient create new DNS client using the name server URL.
The name server URL is defined in the same format as ServerOptions's
NameServer.

The function also accept second parameter: isInsecure, which is only
usable for DNS over TLS and DNS over HTTPS.
</content>
</entry>
<entry>
<title>all: replace any usage of ioutil package with os or io</title>
<updated>2022-04-05T19:37:22Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2022-04-05T18:40:07Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=429a9d9205bad2be34cdfe7fb5b1a9a6f127f541'/>
<id>urn:sha1:429a9d9205bad2be34cdfe7fb5b1a9a6f127f541</id>
<content type='text'>
Since Go 1.16, the ioutil package has been deprecated.
This changes replace any usage that use functions from ioutil package
with their replacement from package os or package io.
</content>
</entry>
</feed>
