Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
こんにちわ 以前Dockerを直感的に操作できるCUIツールを作成した際に使用した、 CUIライブラリgocuiについての知見を共有できれば良いなと思い、記事を書いていこうと思います。 CUIツールを作る際、ライブラリ検討に役立てればと思います。 対象読者 CUIツールを作りたい方 Goの基礎を理解している方 アジェンダ gocuiの特徴 メリット デメリット gocuiの基本 viewの作成 gocuiが実行されるまでの流れ キーバインドの設定 viewの切り替え viewの更新 編集モード まとめ gocuiの特徴 メリット 用意されている関数と構造体は少なくシンプルなため、学習コストが低い 使用しているプロジェクトが多数あるため、参考情報(ソース)が充実している デメリット マルチバイトが未対応の様なので、日本語表示などの文字が欠けたりする 入力インターフェイスのサポートが不十分なた
今回の目的 前回はTCP/IPの実装法と動作確認を行いました. 今回は, 前回のコードを拡張して複数ユーザが参加可能な簡単なチャットアプリを作ってみたいと思います なお, 今回作成したコードはこちらのリポジトリにコミットされています 構想 チャットなので, 一人の発言者からのメッセージを参加者全員にリアルタイムで配布したいのですが, メッセージの受信と送信を一つのプロセスで行う形のままでは, 受信待ちのたびに処理がブロックされてしまい リアルタイムにメッセージを送信することができません. そこで, 受信と送信を並列化し, メッセージの送信を受信状況に関わらず行えるようにします. イメージ図は以下の感じです. いわゆるオブザーバパターンというやつですね. では, 早速実装していきましょう! 実装 Client コード package main import ( "fmt" "net" "os
目的 Goを使ってWindows端末のデスクトップ壁紙を変更してみます。 DLLの読み込みと実行をGoで試してみたかったのでやってみました。 壁紙の変更方法 Windowsの場合、壁紙変更はuser32.dllのSystemParametersInfoを呼び出すことで変更できます。また、Goはsyscall.LoadDLLでDLLをロードし、DLL.FindProcでDLL内のプロシージャを取得、Proc.Callで実行できます。 package main import ( "syscall" "unsafe" ) func main() { user32, _ := syscall.LoadDLL("user32.dll") defer user32.Release() systemParametersInfoW, _ := user32.FindProc("SystemParamete
YYPHP#57「PHPでマルチスレッドについて聞きたい、php-srcのコミットを日々追っている人を見つけた、オブジェクト指向について話ができたら、Dockerを使ってLaravelプロジェクトを本番デプロイするやり方、他の言語とPHPはどのように違うか、Ubuntu・CentOS・ArchiLinux、アセンブリとOS開発」RubyPHPJavaScriptGoYYPHP これは2018年10月19日に開催したPHPerイベントYYPHP#57のイベントレポートです。 YYPHPは一言で「PHPerの部室」です。PHPについて、雑に、ゆるく、ワイワイ話し合う集いです。毎回お題を決めずに雑談を出発点にいろいろなことを突発的にやります。集まった人でコードリーディングをすることもあれば、一緒に開発ツールを触ってみたり、フレームワークについての情報交換をすることもあります。開催はほぼ毎週、高田
簡単に、Go言語のJSON to struct変換の話 Goは標準APIでJSON文字列と構造体を相互変換できる。 標準APIでは、Go→JSON文字列の変換をMarshal、JSON文字列→Go世界の変換をUnmarshalと呼ぶ。 API Referenceやサンプルのとおり、JSON文字列→構造体にunmarshalする際、JSON側のオブジェクトのキーと、Go側のstructのメンバー変数の変数名が一致していれば、その変数に値が代入される。 そして、リファレンスに記載されているとおり、キーと名前の一致についてはCase Insensitiveで比較する。 この実装が正しいかどうかはRFC7159にも書いておらず(JSON自体の定義なのでそれはそう)、Case Sensitiveな実装もあるし、例えばJSON-RPCだと仕様上case-sensitiveだそう。 疑問 ここから先は、
今回はREST APIを使って、kintoneのデータを 取得 する方法について説明します! レコードを1件取得 とりあえず、一番使うであろう レコード1件 を取得する方法について説明します。 共通項目 レコード1件を取得するための共通項目 (共通項目についてはこちら) は、 URI https://(サブドメイン名).cybozu.com/k/v1/record.json メソッド GET ヘッダー APIトークン認証 リクエストパラメータ アプリID: 100 レコードID: 1 となります。 実装 コマンドライン (curlコマンド)で実行 コマンドラインからレコードを1件取得する場合は、以下のコマンドとなります。 # Windows(PowerShell)の場合 curl.exe -X 'GET' 'https://(サブドメイン名).cybozu.com/k/v1/record.
// 文字列配列から指定したindexの要素を削除する // 注意: runtime error: out of range 発生する恐れ有り func unset(str []string, index int) []string { if index >= 0 { return append(str[:index], str[index+1:]...) } else { return append(str[:len(str)+index], str[len(str)+index+1:]...) } }
今回はREST APIを使って、kintoneにデータを 登録 する方法について説明します! レコード1件を登録 とりあえず、レコード1件 登録する方法について説明します。 文字列1行フィールド (フィールドコード:text) でやります。 共通項目 レコード1件を登録するための共通項目 (共通項目についてはこちら) は、 URI https://(サブドメイン名).cybozu.com/k/v1/record.json メソッド POST ヘッダー APIトークン認証 (APIトークン発行時に「レコード追加」にチェックをしてください) Content-Type: applicatioin/json リクエストパラメータ アプリID: 100 レコードID: 1 (POSTの場合は必要ありません) レコード情報 ※初登場!(↓で説明します) となります。 レコード情報 POST (PUT)
内容 Douglas Peuker アルゴリズムでの曲線間引きがどのくらい時間がかかるのか確認したかった ので、簡単に golang で書いてみた こちらを参考にさせていただいた http://www.trail-note.net/tech/thinout/ だいたいの目安を見るための書捨てコードなのでツッコミどころが多いのはご愛嬌 ベンチマーク $ go test -bench . goos: darwin goarch: amd64 pkg: xxxxxx Benchmark10-4 200000 7125 ns/op -> 7.1 us Benchmark100-4 1000 1234958 ns/op -> 1.2 ms Benchmark1000-4 10 129394222 ns/op -> 0.1 ms Benchmark10000-4 1 2101666871 ns/op
Go言語用のFirebase Admin SDKを使って、Realtime Databaseを操作してみる。多少公式ドキュメントのサンプルコードだと省略されている部分などがあったので、動作確認に必要な一連の流れをここにまとめておく。(2018年10月現在) Firebaseの準備 新しいプロジェクトの作成 Firebase consoleから新しいプロジェクトを作成する。 秘密鍵の生成とダウンロード SDKからRealtime Databaseを操作するには、サービス アカウントの秘密鍵が必要となるので生成してダウンロードしておく。 プロジェクト設定を開く サービス アカウントからFirebase Admin SDKの新しい秘密鍵を生成、ダウンロードする Realtime Databaseの作成 Realtime Databaseを作成する。Cloud Firestoreはまだベータ版なの
AWSでサーバレスなAPIの開発 AWS Lambdaの最大実行可能時間が5分から15分に拡大され、Lambdaを使ったサーバレスな業務ロジックも今後さらに増えていくことでしょう。 今回はAPI Gatewayと組み合わせてエンドポイントを作成し、DynamoDBでデータ管理を行うことで、コストを最小限に抑えたサーバレスAPIをAWS上に構築していきます。 さらにSAM(Serverless Application Model)を利用して、API GatewayとLambdaのデプロイまでをすべてコードで管理していくことを目指します。 シンプルなAPIを高速に開発・管理したいという時の手順にしていただければ幸いです。 今回作成するAPI一覧 リクエストパラメータの情報を返却するシンプルなAPI(hello-world) リクエストボディの情報をDynamoDBに登録するAPI(score-
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く