こちらに移行しました. www.drumato.com
はじめに 2021 年 10 月 19 日に MySQL 8.0.27 がリリース されました。非同期レプリケーションにおける変更点の 1 つとして、デフォルトでマルチスレッドレプリカが有効になり、レプリカの遅延を軽減しやすくなることが期待できるようになりました。 Replication: Multithreading is now enabled by default for replica servers. A multithreaded applier has a number of applier threads that execute transactions in parallel. This behavior can avoid many cases of unwanted replication lag that can cause temporary divergenc
ファイルシステム API Routes の課題 Next.js のファイルシステムを利用した routing は、直感的に定義を追加することができます。一方、モジュールシステム観点からは透過的参照がないため、TypeScript の型推論と相性が悪いです。Next.js における型安全な routing ソリューションとして pathpida がありますが、API Routes には対応していません。 useSWR から API Routes の API を呼ぶシーンで期待に沿うものが見当たらなかったので、今回自作してみました(リポジトリはこちら)本サンプルでは、npm script のpostinstallを hook に、src/types/pages/apiに生成ファイルが出力されるので、あらかじめnpm installを実行してお試しください。 サンプルで実現している型推論概要 は
早速Golangで頭を抱えている Goには「このインターフェースを実装するぞ!」という明示的な宣言がない。errorインターフェースがいい例だが、Error() stringというシグニチャのメソッドがある構造体は何でもerrorとして扱うことできるようになる。ダックタイピングのような挙動を示す そんなインターフェースの型によって分岐する単純なコードを考える type Animal interface { Bark() string } // animalを実装したCat type Cat struct {} func (cat *Cat) Bark() string { return "Nyan" } // animalを実装してないApple type Apple struct{} func whatIs(x any) { switch x.(type) { case Animal:
[2022-09-23 追記] BIOS アップデート(n3buj05w)で解決した! https://support.lenovo.com/jp/ja/downloads/ds557163-bios-update-utility-bootable-cd-for-windows-11-10-64-bit-thinkpad-t14-gen-3-p14s-gen-3-t16-gen-1-p16s-gen-1 前回の続き ThinkPad T14 Gen3 の Ubuntu がサスペンドすると正常に復帰しない。 画面が消えたまま。10秒くらい待ってると点灯するけど数秒でまた消える…というのを繰り返し。 X が起動してると何もわからないので、コンソールでサスペンドを試すとこんなメッセージが出てた。 i915 0000:00:02.0: [drm] *ERROR* Failed to write s
Go go-plugin × gRPC で自作Goツールにプラグイン機構を実装する方法 go-pluginパッケージを使ってgRPCプラグイン機構を提供する方法を調べたので紹介します。 Overview こんにちは pon です。これはGo 2 Advent Calendar 2020 の15日目の記事です。 自作ツールに素敵なプラグイン機構を仕込みたいことありますよね。今回はTerraformやPackerなどでプラグイン機構をして利用されているパッケージであるhashicorp/go-pluginの使い方を紹介し、実際にどのように実装するかをコードをあげて紹介します。 go-pluginとは go-pluginは、RPCを介したGoのプラグインシステムです。 TerraformなどHashicorpの様々なOSSの内部でも使われているので実績は抜群です。RPCを介すると言いますがローカ
技術書、ブログ、READMEを書いてていて、文章中に出てくるコードブロックのコードをテストしたいことがあると思います。 そのサンプルコードが本当に動いてるのか不安になることがあるからです。 power-doctestは、そのコードブロック中のコードにコメントを入れるだけでテスト可能にするツール群です。 power-doctestの例 具体的な例から見ていきます。 次の例では、Markdownで説明とJavaScriptのコードブロックを書いています。 デフォルト引数を使って書くことで、このような挙動は起きなくなるため安全です。 デフォルト引数では、引数が渡されなかった場合のみデフォルト値が入ります。 ```js function addPrefix(text, prefix = "デフォルト:") { return prefix + text; } // falsyな値を渡してもデフォルト
電通デジタルでバックエンドの開発をしている齋藤です。弊社では社内/グループ会社向けデジタル広告運用実績の管理システムバックエンド API に gRPC を利用しています。 本記事では gRPC サーバ内で発生したエラーを gRPC Server Interceptor で gRPC Error Status にマッピングする試作をご紹介します。 ユースケースgRPC を使った API サーバでエラーが発生した場合、エラーハンドリングとロギングをした後に gRPC クライエントへのエラーを伝えます。ここで、サーバのエラーを gRPC クライアントに伝えるエラーに変換する処理が発生します。クライアントに伝えるエラーメッセージはサーバで発生したことそのままではなく、クライアントに必要な情報にする必要があります。この処理は全ての gRPC のメソッド呼び出しで実施します。そこで、本処理を gRPC
原文(投稿日:2020/05/19)へのリンク 新ライブラリのHegelは、JavaScriptで高度な静的型チェックを実現しようという試みだ。強い型推測と完全な型システムを提供するという。現在はまだアルファ版だが、専用のオンライン・プレイグラウンドで動作を確かめることができる。 Hegelは型アノテーションを備えたJavaScript用の型チェッカである。TypeScriptの場合のように、新たなプログラム言語構造を学ぶ必要はないが、アノテーション記法についての学習は必要だ。Hegelは強い、完全な型システム(Sound File System)を使うことで、実行時の型エラーを防止する。 const numbers: Array<number> = []; // HegelError: Type "Array<number>" is incompatible with type "Arr
SlackのEvents API(Event Subscription)で盛大にドハマりしてしまったので、Events APIの再送の仕様をまとめて、本来のベストプラクティスに沿った実装と妥当な落とし所をご紹介します。 どうも、もこ@札幌オフィスです。 最近Slackを利用したBotの開発をする機会がありまして、SlackのEvents API(Event Subscription)で盛大にドハマりしてしまったので、Events APIの再送の仕様をまとめて、本来のベストプラクティスに沿った実装と妥当な落とし所をご紹介します。 Slack Events APIとは? 従来のポーリング型のAPIとは違い、あらかじめ受信するURLとイベント(メッセージの送信、リアクションの追加など)を指定してあげる事で、ワークスペース上でイベントが発生した際にSlackがWebHookしてくれる物となります。
この記事は「Go で作るモダン・ブートサーバー」の 4 日目の記事です。 この記事では PXE ブートができるブートサーバーの実装をします。 シリーズの記事は以下のリンクからどうぞ。 Go で作るモダン・ブートサーバー Day 1 - 基礎知識編 Go で作るモダン・ブートサーバー Day 2 - 環境構築編 Go で作るモダン・ブートサーバー Day 3 - 雑 DHCP サーバー実装編 Go で作るモダン・ブートサーバー Day 4 - PXE サーバー実装編 ← この記事 Go で作るモダン・ブートサーバー Day 5 - iPXE サーバー実装編 PXE ブートは古くからあるネットワークブートの規格の 1 つです。 この記事では前回実装した DHCP サーバーを元に、新たに TFTP サーバーを実装します。 そして PXE ブート環境を構築して、実際に Linux がネットワーク経
Stop catching errors in TypeScript; Use the Either type to make your code predictable In some languages such as Java, methods or functions can provide type information about the Exceptions or Errors they may throw. However in TypeScript, it is not possible to know what Errors a function may throw. In fact, a function could throw any value, even a string, number, object, etc. This is why TypeScript
Go1.17beta1がダウンロードできるようになったので、Generics(Type Parameters)でStackを書いて軽く遊んだメモ。 Generics (Type Parameters)について 最新の仕様のProposalは以下を見ると良い。 実際にどんな感じのコードになるのかは、GitHubのdev.typeparams branchのコードを見ると良さそう。 Go1.17beta1のダウンロード 普段使っているgoコマンドから以下のようにGo1.17beta1をダウンロードできる。 $ go get golang.org/dl/go1.17beta1 $ go1.17beta1 download これで ~/sdk/go1.17beta1 にインストールされる。 FYI: Goは標準の機能で複数のバージョンをインストールできる。より詳しくは以下のドキュメントを読むと良い
Hatena-Textbook 2018学習日記(5) - GraphQL編 - $shibayu36->blog;のようにHatena-Textbookを用いて最近のモダンなWebアプリケーション開発の学習をしているのだけど、TypeScript + GraphQL + Apollo Client + Reactの部分でそれぞれの技術の基本知識を理解できていなかったので、エラーが起きたときに何から直したらよいかわからない状態になってしまっていた。 前回はGraphQLのクエリについて学んだ - $shibayu36->blog;でGraphQLを少し掘り下げたので、今回はApollo platformについてチュートリアル( https://www.apollographql.com/docs/tutorial/introduction/ )を行いながら学習を進めていった。 Apollo
puppeteer初心者がTwitterブックマークをエクスポートするツールを作りながら、使い方をまとめてみたNode.jsTwitterスクレイピング個人開発puppeteer ふと、puppeteerがおもしろそうだなと思い、前から欲しかった TwitterブックマークをJSONファイルにエクスポートするツールを題材に、 いろいろ遊んでみた時に備忘録。 puppeteerはサクッと使えるので、すてき(´ω`) 作ったもの こんな感じで勝手に操作してエクスポートしてくれます(´ω`) puppeteerで自動ログインして、ブクマをJOSNでエクスポートできるように(´ω`) わかりやすいように背景色を変えたりしてる(´ω`) pic.twitter.com/UJiGAiw5KN — 積読ハウマッチ📚きらぷか (@kira_puka) October 1, 2019 最終的なソースコード
Rubyのparserを語る上で忘れてはいけない存在としてRipperというライブラリがあります。 RipperはRubyのコードを構文解析するためのライブラリとしてirbやrdocなどで長く使われてきました。 一方でBug #10436のように長い間未解決のバグがあったり、Bug #18988のようにパーサーと挙動が異なる箇所があったりと完璧でない部分があります。 今回Ripperのアーキテクチャを見直すことでRipperの抱えている問題を解決することができたので、この記事で紹介したいと思います。 関連するPRとticketはそれぞれ以下のとおりです。 github.com bugs.ruby-lang.org Ripperとは RipperはRubyのパーサーライブラリです。入力されたコードに対応するS式を返すRipper.sexpを使ったことがある人もいるのではないでしょうか。 Ri
どんなアプリ作るの?修了に際して、どのようなアプリを作ろうか考えました。 色々悩んだのですが、過去の記事でTwitterAPIを利用したのを思い出し、TwitterAPIを使ったTwitterアプリケーションを作ってみようと思いました。 ツイートしたい内容の一部を、猫語(「にゃ」とか「にゃん」)に変えるという簡単なアプリです! その制作過程を、今回と次回で書かせていただいて、Go言語(Golang)入門は一旦修了とさせていただきます! どう進めていくのか?まずは、TwitterAPIの登録その後、Go言語(Golang)の実装最後に、HTMLの実装今回のメイン言語は、Go言語(Golang)となります。 そのため、画面の実装はFWなどを利用せずに進めます。 ちなみに、TwitterAPI の登録方法は、今回は割愛させていただきます。 それでは、作っていきましょー! Twitter認証の実装
ANDPADフロントエンドエンジニアの小泉(@ykoizumi0903)です。Vue / Nuxt での開発を行っています。 このテックブログでも、 Vue Composition API を使った開発にまつわる記事を過去に何件か書いていますが、現在担当しているプロダクトの開発に携わるようになって2年ほど経ち、いわゆる技術的負債と呼ばれるようなものも少しずつ増えてきました。 そういった状況を改善するアプローチの1つとして、Nuxt.js の既存リポジトリにおける型チェックのルールをより厳しい設定に変更する、という取り組みを2ヶ月ほどかけて行いました。 今回はその取り組みにおける道のりを振り返って、苦労したことや良かったことなどを書いてみたいと思います。 導入を決めるまでの流れ きっかけは noUncheckedIndexedAccess を知ったことから 弊社のSlackにはtimes文化
2021年7月現在、goでエラーハンドリングってどうやって扱うのが無難なのかについて、いろいろと調べました。 昔から人気な pkg/errors、Go公式がメンテナンスしていたxerrors、 go v1.13から追加されたfmt.Errorfなどエラーハンドリングの選択肢がいろいろとあるので、stacktrace欲しい場合とそうでない場合で個人的にベストだと思った方法をまとめました。 エラーハンドリングに求める要件 エラーが発生した箇所を追える エラーの原因によって処理を分岐する (場合による)stacktraceがみれる 結論 stacktraceが不要な場合 fmt.Errorfでラップし、errors.Isで判定する stacktraceが必要な場合 pkg/errors.Wrapでラップし、pkg/errors.Causeで判定する log.Printf("%+v", err)で
この記事について webpack の設定ファイルであるwebpack.config.jsは、TypeScript で書いて Node.js 上で実行できます。しかし、本来であれば TypeScript のソースコードは Node.js では実行できないはずです。 この事が気になった私は、今回その仕組みを調べてみたので、この場を借りてその調査結果を共有したいと思います 💪 参照 記事の概要 概要のみ知りたい人に向けて、以下にこの記事で解説する内容をまとめておきます 👇 webpack-cli では、 rechoir を使って TypeScript を require() できるようにしているよ rechoir は、 ts-node などを使って require.extensions を拡張しているよ ちなみに、 require.extensions は非推奨だよ webpack-cli
この記事は Timee Advent Calendar 2023 シリーズ 2 の14日目の記事です。 qiita.com はじめに TL;DR API HTTP Response Code Definition 2xx 4xx 5xx Errors Problem Details まとめ We’re Hiring! はじめに CTO室に10月に入社した id:cos31 です。 色々とやり始めたばかりで、ネタに苦しいので仕事にもタイミーには全く関係のないネタになります!*1 TL;DR RFC 9457 - Problem Details for HTTP APIs と RFC 9205 - Building Protocols with HTTP をあわせて使うとすっきりする インフラレイヤーとアプリレイヤー HTTP Status code が棲み分けできるステキ感 エラーメッセージ
なぜ Go では何百万もの Goroutine を作れるのに Java は数千のスレッドしか作れないのか? (この記事は Why you can have millions of Goroutines but only thousands of Java Threads の翻訳です) 経験のあるエンジニアならば JVM 言語で次のようなエラーを見たことがあるでしょう。 [error] (run-main-0) java.lang.OutOfMemoryError: unable to create native thread: [error] java.lang.OutOfMemoryError: unable to create native thread: [error] at java.base/java.lang.Thread.start0(Native Method) [erro
Changelog 2021-09-01: Added note about socket bugfix PR 2021-09-01: Added troubleshooting section about port forwarding bug 2021-09-04: Added note about switching to Podman on Windows 2021-09-04: Added update about port forwarding PR 2021-09-04: Added note about M1 Mac support 2021-09-04: Added volume mount limitation 2021-09-04: Added podman-macos utility Docker has recently announced that Docker
AWS 事業本部コンサルティング部のイシザワです。 今回は OSS の AWS CloudSaga を使って疑似インシデントを起こしてみようと思います。 (追記)アイキャッチを変更しました。 CloudSaga とは CloudSaga とは AWS 環境で疑似的にセキュリティイベントを発生させるツールです。 ユースケースとして、自分の AWS 環境でセキュリティイベントを検知するための仕組みや調査するための仕組みがあるかをテストすることが挙げられます。 やってみた まず、マネジメントコンソールから AWS CloudShell を起動します。 以下のコマンドで CloudSaga をインストールします。 $ pip3 install cloudsaga インストールが完了したら、以下のコマンドで現在利用可能なセキュリティイベントのシナリオを一覧できます。 $ cloudsaga --ch
やりたいこと 巨大なコードベースに対して、 .js をとりあえず .ts に書き換えてしまいたい。 だが、素朴な拡張子の書き換えで型違反が出ると jest やその他ツールが止まりはじめて面倒。 なので、エラー行には // @ts-expect-error を自動で付与しながら書き換えたい。@ts-ignore ではなく、@ts-expect-error なのは、型エラーを修正した際に、それが伝搬するようにするため。 方法 ファイルの拡張子を .js から .ts に書き換える typescript service 経由で型を検査し、エラー行を集める エラーが出た行に // @ts-expect-error を付与する コード 書き捨てなので汚いです import * as ts from "typescript"; import { uniq } from "lodash"; import
I’ve seen a few examples of error handling like the following lately: func MightFail(id string) error { err := sqlStatement() if err != nil { return fmt.Errorf("mightFail failed with id %v because of sql: %w", id, err } ... return nil }See the problem? It becomes more clear when you start to use the function: func business(ids []string) error { for _, id := range ids { err := MightFail(id) if err
We experiment with Go as it exists now, to understand it better, learning what works well and what doesn’t. Then we experiment with possible changes, to understand them better, again learning what works well and what doesn’t. Based on what we learn from those experiments, we simplify. And then we experiment again. And then we simplify again. And so on. And so on. The Four R’s of Simplifying During
Error Handling in Rust A guide to error handling in Rust. The first half introduces Rust's language features and libraries for error handling. The second half should help you make good error handling code in your Rust programs.
MySQL5.7のExtended Supportは2023年10月までです。これから始める場合はMySQL8.0を使いましょう。 既存のシステムのMySQLを5.6から5.7に変えて動かしたら、group by を使ったSQLでエラーが発生した。 Error Number: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'dtabase_name.table_name.column_name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by このエラーは s
Errors happen in every application. Devs have to decide: do you write code to handle the error? Suppress it? Notify the user? Report it to the team? In this article, Ayo Isaiah walks us through every aspect of the JavaScript error system. He'll show us how to work with errors and discuss appropriate choices for real-world scenarios. If you've been writing anything more than "Hello world" programs,
As you may have noticed, we mentioned that using usePreloadedQuery will render data from a query that was (or is) being… If you wish to access error information in your application to display user friendly messages, the recommended approach is to model and expose the error information as part of your GraphQL schema. 要するに、ユーザーにわかりやすいエラー情報を表示したければ、Schema の Model 情報としてエラー設計しなさいよ、ということだ。 そのまま Relay のド
Custom software development Tailored software solutions and software augmentation services to meet unique business needs, drive operational efficiency, and stimulate business expansion Read more Development teams Dedicated development teams and professionals that work exclusively on your project and ensure top-notch tailored solutions Read more IT consulting Expert guidance on leveraging advanced
こんにちは! dely 株式会社で iOS を担当している nancy こと仲西です。 本記事は dely Advent Calendar の11日目の記事です。 qiita.com adventar.org 昨日は小林さんが「UI デザイン × PdM で広がるデザインの可能性」というテーマで書いています。 https://dely.design/n/nfbad0dcdec77dely.design UI デザイナーが PdM をやると何がいいのか、 どんな点を心がけるべきなのかといったことがまとまっているので、気になる方はぜひご覧ください! ちなみに、記事内でチラッと私も登場しています(笑) はじめに 本記事では iOS 13以降で使用できる Apple 純正のフレームワークである Combine と、 Combine と似た機能を有する OSS フレームワークである RxSwift
tldr: Rust/coreutils ( https://github.com/uutils/coreutils/ ) is now available in Debian, good enough to boot a Debian with GNOME, install the top 1000 packages, build Firefox, the Linux Kernel and LLVM/Clang. Even if I wrote more than 100 patches to achieve that, it will probably be a bumpy ride for many other use cases. It is also a terrific project to learn Rust. See the list of good first bugs
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く