方言を話すおしゃべり猫型ロボット『ミーア』をリリースしました(こちらをクリック)

Go

application(Flutter)

[Flutter × Go × ESP32] How to add mute function to Mia.

After the release of the beta version of Mia, several users who actually used it asked for a 'no talking mode' for the frequency of talking, so the implementation of this feature is described in this report. For reference, we looked at Alexa and found that mute (in this case, goodnight mode) was indeed displayed on the home screen with a toggle icon.
Development/Design

[Golang] Practice of Test-Driven Development: From Migration File Creation to SQL Injection Countermeasures

Describes test-driven development in Go language, including migration file creation, SQL injection countermeasures and actual testing methods using dockertest. testutils.RunMySQLContainer function is called to start the MySQL container and connect to the database. RunMySQLContainer function to start the MySQL container and connect to the database.
Development/Design

[gRPC] Create a .proto file, compile it, and use it with the Go language.

Protocol Buffers (protobufs) are Interface Definition Languages (IDLs) used in gRPC to transmit data in smaller sizes and at a faster rate than traditional formats such as JSON and XML. Create a .proto file to define messages and gRPC methods
Development/Design

[Go x FCM] Implemented a function to send push notifications to FCM on a regular basis: Server Edition

Implement a function to send Push notifications from the server to FCM at regular times in Go language.The following four arguments are required to implement Push notifications to FCM: OAuth 2.0 token (Authorisation in the HTTP request header), FCM token of the device, title and body.
Development/Design

[Flutter × Go] Withdrawal process: How to handle the “requires-recent-login” error when deleting Firebase Auth.

Describes how to deal with the 'requires-recent-login' error when processing user withdrawal using Firebase Auth.This error occurs when a user has not logged in recently for security reasons. The user needs to be re-authenticated (reauthentication) before they can be withdrawn.
Development/Design

[Flutter × Go × gRPC] Implementation of forced application update function (screen lock)

A search for "Flutter Firebase app update" yielded two main types of hits: using RemoteConfig and using FirebaseDetabase.This time, however, we will implement the forced update function on our own using Flutter x Go x gRPC.
Development/Design

[Mia] ESP32 OTA update function implementation: Firmware update app notification

A new Firmware binary is uploaded to the AWS s3 firmware directory with the version specified by the developer.The version of each user's firmware is compared to the latest version uploaded by the developer, and if they are different, the Flutter app is notified that the new firmware is available for installation.
Development/Design

[ESP32] OTA update: Firmware update using MQTT and AWS IoT device shadow

When the user accepts the update, the app sends an API request to the server, which reflects the change in the AWS IoT device shadow. The device detects this change via MQTT and performs a firmware download and upgrade.
Development/Design

[Go] Handling Date type values ​​for nullable DB columns

Three methods for golang to handle values of type date for DB columns that allow null. Allow null with a pointer. sql.NullTime requires a conditional branch via the Valid field to determine null. []When using uint8, convert byte slice -> string -> time.Time object.
Development/Design

[Go Memorandum] Static typing, type inference, functions, structures, receivers, Go Modules, Packages, Imports

In Go language, functions begin with the func keyword and require argument and return types (static typing). Type names are written "behind" variable names; Go structures differ from classes in that methods are defined outside of the structure definition, and structures and methods are associated via "receivers".