タグ

ブックマーク / takezoe.hatenablog.com (57)

  • プロジェクト管理に便利なGitBucketプラグイン - たけぞう瀕死ブログ

    GitBucketはプラグイン機構を持っており、様々な機能をプラグインで拡張することができます。最近プロジェクト管理に便利なプラグインを作成されている方がいらしたので簡単に紹介させていただきたいと思います。 カンバンプラグイン イシューやプルリクエストをカンバン形式で表示できるプラグインです。レーンは特別なプレフィックスを付けたラベルで管理されており、GitBucketの既存の機能をうまく活用していただいていますね。 github.com ガントチャートプラグイン こちらはカンバンプラグインと同じ作者の方によるマイルストーン毎にイシューやプルリクエストの進捗状況を表示してくれるプラグインです。 github.com Excelプラグイン そしてプロジェクト管理といえば何といってもExcelでしょう。このプラグインはまだ開発中ですが、GitBucket上でExcelファイルのブラウズが可能に

    プロジェクト管理に便利なGitBucketプラグイン - たけぞう瀕死ブログ
  • 相対時間で表記した期間をパースするJavaライブラリを作ってみた - たけぞう瀕死ブログ

    正確に言うと自分で作ったのではなく、AirframeというScalaライブラリに相対時間で表記した期間をパースしてくれる機能があるのですが、わけあってこれをJavaにポーティングしてみました。 github.com Maven Centralにdeployしてあるのでpom.xmlに以下の依存関係を追加すれば使えます。 <dependencies> <dependency> <groupId>com.github.takezoe</groupId> <artifactId>jtimewindow</artifactId> <version>1.0.0</version> </dependency> </dependencies> 実際の使い方はこんな感じです。オフセットは基準となる現在日時で、指定しなかった場合はシステム日付が使用されます。期間はZonedDateTimeだけでなくInst

    相対時間で表記した期間をパースするJavaライブラリを作ってみた - たけぞう瀕死ブログ
  • 自動テストでElasticsearchを使うためのJavaライブラリ - たけぞう瀕死ブログ

    その昔、ElasticsearchではEmbeddedモードという、アプリケーションに組み込んで使用したり、自動テストで使用するのに便利な機能がサポートされていました。しかし、この機能はElasticsearch 5.0でサポートされなくなってしまいました。詳しくはElastic社の以下のブログ記事に書かれていますが、Embeddedモードはセキュリティマネージャーや起動時のチェックなどをバイパスしてしまうなど様々な問題があったようです。 www.elastic.co 確かに理由はわからないでもないですが、とはいえ自動テストのためにはやはりEmbeddedモードのようなものがあると便利です。そこで利用できるのがelasticsearch-cluster-runnerというJavaライブラリです。 github.com このライブラリを使うとElasticsearchクラスタをコードから制御

    自動テストでElasticsearchを使うためのJavaライブラリ - たけぞう瀕死ブログ
  • 最終兵器トラックポイント付きメカニカルキーボード「TEX Yoda II」レビュー - たけぞう瀕死ブログ

    最終兵器「TEX Yoda II」 初代を買い逃してから早数年、2代目が発表され入手できる日を心待ちにしていたのですが、先日ようやくゲットすることができました。数日使ってみてのレビューです。 ついに最強のトラックポイントを入手した。 pic.twitter.com/79WaHfi6ME— Naoki Takezoe (@takezoen) 2018年3月8日 Massdropで組み立てキットも販売されていましたが、面倒なので以下のサイトから赤軸、バックライトなしの組み立て済みモデルをオーダーしました。到着まで3週間ほどかかりました。また、関税がかかったため受け取り時に支払いが必要でした(送付先を会社にしていたので社で怒られが発生した)。 mechanicalkeyboards.com 触ってみてまず感じたのはトラックポイントの感度が良すぎるということです。スイッチの高さの分、家Think

    最終兵器トラックポイント付きメカニカルキーボード「TEX Yoda II」レビュー - たけぞう瀕死ブログ
  • スケーラブルで冗長性のあるGitサーバをどう作るか? - たけぞう瀕死ブログ

    GitBucketでの長年の課題の1つがGitリポジトリのスケールアウトと冗長化でした。Gitリポジトリを格納するストレージに分散ファイルシステムを使うというのは1つの解決策になりますが、分散ファイルシステムの運用はなかなか大変です。もっと手軽に使い始めて徐々にスケールできる方法はないものかと考えていたのですが、1つ思いついたアイデアを試すために実験的にコードを書き始めてみました。 github.com 基的なアイデアは普通のGitサーバを複数台用意しておき、リポジトリを分散配置するというものです。例によってScalaとJGitを使って実装されています。 Gitクライアントからのリクエスト(pushやfetch)はフロントコントローラーでルーティングされ、リポジトリの配置されたノードにプロキシされます。リポジトリは全く同じものが複数ノードに存在するので1ノードが落ちても動作を継続すること

    スケーラブルで冗長性のあるGitサーバをどう作るか? - たけぞう瀕死ブログ
  • GitBucket 4.7をリリースしました - たけぞう瀕死ブログ

    4.7にはログイン時のダッシュボードのサイドバーに表示されるリポジトリ一覧にグループリポジトリが含まれないというバグがあったため修正した4.7.1をリリース済みです。こちらをご利用いただければと思います。 https://github.com/gitbucket/gitbucket/releases/tag/4.7.1 Scalaで実装されたオープンソースのGitサーバ、GitBucket 4.7をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/4.7 新しい権限管理システム これまでGitBucketではかなり大雑把な権限管理しかできなかったのですが、このバージョンでより詳細かつ柔軟性の高い新たな権限管理を行うことができるようになりました。 ユーザやグループ毎にGuest、Developer、Administrati

    GitBucket 4.7をリリースしました - たけぞう瀕死ブログ
  • 同僚が「それゆけ!ターミナル部」という連載を始めました - たけぞう瀕死ブログ

    会社の同僚である@tanacasinoがマイナビさんのギークロイドというメディアで「それゆけ!ターミナル部」という連載を始めました。 若干老害の入ったマーティン・シェルスキー先生が若干意識高めの若者タミ夫くんにターミナルのテクニックを教えていくというものです。隔週連載の予定とのことで、すでに第三回まで公開されています。 mynavi-agent.jp mynavi-agent.jp mynavi-agent.jp 最初は環境構築など基礎的なところからのスタートでしたが、第三回はシェルの展開など実用的な内容になってきています。自分もターミナル力低めなのでこれを読んで精進したいと思います。

    同僚が「それゆけ!ターミナル部」という連載を始めました - たけぞう瀕死ブログ
  • GitBucket 4.5をリリースしました - たけぞう瀕死ブログ

    Scalaで実装されたオープンソースのGitサーバ、GitBucket 4.5をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/4.5 テキストエリアにもファイルのドロップが可能に イシューやWikiにファイルを添付する際、これまではテキストエリア下部の細いバーの部分にしかドロップできなかったのですが、テキストエリアの領域にもドロップできるようになりました。 ダッシュボードで表示するイシュー、プルリクエストを選択可能に ダッシュボードでは元々イシューやプルリクエストに対して以下の3種類のビューが提供されていました。 自分が作成したもの 自分がアサインされているもの 自分が言及しているもの しかしUI変更に伴って最近のバージョンでは自分が作成したものの一覧しか参照できないようになっていました。GitBucket 4.5で

    GitBucket 4.5をリリースしました - たけぞう瀕死ブログ
  • OracleのDavid BuckさんによるBytecode Verification - たけぞう瀕死ブログ

    毎週金曜日に開催している社内勉強会ですが、今週は久々の外部ゲストとしてOracleのDavid Buckさんにお越しいただきBytecode Verificationについてお話しいただきました。 Buckさんは今年もサンフランシスコで開催されるJavaOne 2016で3のセッションに登壇されるそうで、そのうちの1セッションの内容を、しかも日語でお話しいただけるという大変貴重な機会でした。 Bytecode Verificationが必要な理由 Bytecode VerificationはJavaVMが不正なバイトコードを検出するための機能ですが、普段その存在を意識することがほとんどないのではないかと思います。しかし実際のところ、以下のように不正なバイトコードに遭遇し得るシチュエーションには様々なものがあります。 バラバラにコンパイルしたクラスファイル群をリンクする場合 JVM言語の

    OracleのDavid BuckさんによるBytecode Verification - たけぞう瀕死ブログ
  • GitBucket 4.4をリリースしました - たけぞう瀕死ブログ

    Scalaで実装されたオープンソースのGitサーバ、GitBucket 4.4をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/4.4 SQLダンプファイルのインポート これまでデータベースのダンプはXMLとSQLで行うことができましたが、インポートはXMLのみのサポートでした。4.4ではSQLでのインポートがサポートされ、代わりにXMLでのインポート・エクスポートが廃止されています。 プライベートリポジトリでもgo getをサポート 4.3まではpublicリポジトリに対してのみgo getのサポートが有効でしたが、4.4からはprivateリポジトリに対しても有効になりました。GitBucketはprivateリポジトリに対して認証のないHTTPアクセスが送信された場合、以下のようなHTMLを返します。 <!DOC

    GitBucket 4.4をリリースしました - たけぞう瀕死ブログ
  • GitBucketプラグインを作ってみよう - たけぞう瀕死ブログ

    GitBucketはプラグインシステムを備えており、プラグインで様々な機能を拡張することができます。このエントリではプラグイン開発の最初の一歩について説明します。内容的には以前GitBucket Newsで書いた以下の英語のエントリと同じものです。 gitbucket.github.io プロジェクトの作成 まず初めに以下の内容のbuild.sbtでScalaプロジェクトを作成します(gitbucketの依存関係は最新のバージョンにあわせて変更してください)。 name := "gitbucket-helloworld-plugin" organization := "io.github.gitbucket" version := "1.0.0" scalaVersion := "2.11.8" libraryDependencies ++= Seq( "io.github.gitbuck

    GitBucketプラグインを作ってみよう - たけぞう瀕死ブログ
  • GitBucket 4.3をリリースしました - たけぞう瀕死ブログ

    Scalaで実装されたオープンソースのGitサーバ、GitBucket 4.3をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/4.3 絵文字のサポート GitBucket 4.3と同時にgitbucket-emoji-pluginがリリースされました。このプラグインは以下の機能を提供します。 Markdownやコミットメッセージなどの絵文字記法を画像に変換する Markdownを編集する際のテキストエリアで絵文字記法のサジェストを行う ユーザ名のサジェスト イシューやプルリクエスト作成時やコメント入力欄のテキストエリアでユーザ名のサジェストが可能になりました。@をタイプするとユーザ名の候補がポップアップ表示されます。 新しいWeb API GitBucketはGitHub互換のWeb APIのサブセットを提供していま

    GitBucket 4.3をリリースしました - たけぞう瀕死ブログ
  • GitBucketをPostgreSQLやMySQLで動かす - たけぞう瀕死ブログ

    GitBucketは標準では内蔵のH2という組み込みデータベースで動作しますが、4.0からはH2の代わりに外部データベースとしてPostgreSQLMySQLを使うことができるようになっています。H2はデータの保全性に問題がありますので業務等の重要な用途にGitBucketを使われるのであればなるべくPostgreSQLもしくはMySQLを利用することが望ましいです(パフォーマンス面でもメリットがあります)。 外部データベースの設定方法は以下のドキュメントに記載されていますが、このエントリでは日語でもう少し丁寧に解説しようと思います。 github.com クリーンインストールの場合 まず、一度GitBucketを起動すると~/.gitbucketディレクトリが作成されるので、いったんGitBucketを停止します。 ~/.gitbucketディレクトリの中にdatabase.conf

    GitBucketをPostgreSQLやMySQLで動かす - たけぞう瀕死ブログ
  • マルチリソース、マルチテナントに対応したDBマイグレーションツール「solidbase」1.0.0をリリースしました - たけぞう瀕死ブログ

    Javaベースのデータベースマイグレーションツールsolidbase 1.0.0をリリースしました。 github.com これは元々GitBucketで使用するために開発したものです。GitBucketではこれまで独自に実装した簡易的なマイグレーションシステムを使用していたのですが、外部データベースの対応やプラグインシステムの導入などに伴ってより汎用的なマイグレーションツールへの移行を検討していました。 Javaで利用可能なデータベースマイグレーションツールにはFlywayやLiquibaseなどがありますが、以下のような要件をすべて満たすものがありませんでした。 データベースだけでなく他のリソースも扱うことができる(任意のマイグレーション処理を実行したい) 1つの定義で異なるDBに対応する(デフォルトのH2だけでなくMySQLやPostgreSQLなどにも1つの定義で対応したい) マル

    マルチリソース、マルチテナントに対応したDBマイグレーションツール「solidbase」1.0.0をリリースしました - たけぞう瀕死ブログ
  • GitBucket 3.13をリリースしました - たけぞう瀕死ブログ

    Scalaで実装されたオープンソースのGitサーバ、GitBucket 3.13をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/3.13 ワイドスクリーンに適した新しいUIへの変更 GitBucketはこれまでなるべくGitHubに近いUIを提供してきましたが、このバージョンからワイドスクリーンに適したサイドバー付きの独自UIに方向転換しました。 この方向転換はGitHubとの類似性を排除するための措置です。詳細については以前のブログエントリを参照してください。 takezoe.hatenablog.com Issue一覧取得APIのレスポンスにpull_requestキーを追加 GitBucketのIssue一覧取得APIはペイロードにpull_request というキーを含まないため、GitHubプルリクエストビ

    GitBucket 3.13をリリースしました - たけぞう瀕死ブログ
  • Apache DrillにJDBC経由で接続してみる - たけぞう瀕死ブログ

    そこそこの分量のJSONデータを手元で検索するのにDrillを使っています。Elasticsearchなどに入れてもいいのですが、Drillにはファイルの状態で検索できること、SQLで検索できること(それなりに複雑な集計を手軽に書けたり、必要に応じて他のデータとジョインしたりできる)というメリットがあり、便利に使っています。 ローカルで使うだけであればdrill-embeddedで対話シェルを使うでもよいのですが、使い慣れたGUIフロントエンドやBIツールを使いたい場合など、DrillにJDBC経由で接続できると便利なのですが、DrillをJDBC接続可能なサーバとして動作させるにはZooKeeperが必要になるようです。 というわけでまずはZooKeeperをインストール。といっても最低限必要なのはダウンロードしたアーカイブを適当な場所に展開し、conf/zoo_sample.cfgをz

    Apache DrillにJDBC経由で接続してみる - たけぞう瀕死ブログ
  • デブサミ2016で「Webエンジニアのための並行/非同期プログラミングの実際とこれから」というパネルディスカッションをしました - たけぞう瀕死ブログ

    先日のデブサミ2016でピクシブの川田さんによるモデレートでGolang(メルカリのbokkoさん) × node.js(古川会長) × Scala(わたくし)という謎の組み合わせでパネルディスカッションをさせていただきました。 event.shoeisha.jp ユーザ層や適用領域が異なる言語ということもあり、噛み合うのか若干不安があったのですが、いい感じにまとまったのではないかと思いますw パネルディスカッションのまとめ 総論としては ハードウェアのリソースを使い切るために並行処理がますます重要になっていく ただし、アプリケーションのレイヤではなるべくそれを意識させないことが重要 という当たり前といえば当たり前の話だったのではないかと思います。ECMAScript7のAsync/Awaitは記述は同期的だけどブロックはしないという意味で理想に近いかもしれません。 普通にWebアプリを書

    デブサミ2016で「Webエンジニアのための並行/非同期プログラミングの実際とこれから」というパネルディスカッションをしました - たけぞう瀕死ブログ
  • JekyllでkramdownのGFMサポートを有効にする - たけぞう瀕死ブログ

    JekyllでGitHub-flavored Markdownを使うために今までredcarpetを使っていたのですが、GitHub Pagesでは2016年5月以降、kramdownのみのサポートになるようです。 kramdownはデフォルトではコードブロックの記法などがGFMと微妙に異なるみたいなのでどうしようかなぁと思っていたのですが、どうやら_config.ymlに以下の設定を追加することでGFMの記法が有効になるようです。 markdown: kramdown kramdown: input: GFM hard_wrap: false GitHub Pagesのドキュメントにもちゃんと書いてありました。 以下のエントリを見るとGitHub PagesのJekyllではMarkdown以外のkramdownへの一化と同時に2016年5月からTextileのサポートも打ち切られるよ

    JekyllでkramdownのGFMサポートを有効にする - たけぞう瀕死ブログ
  • AWS上で動作するアプリケーションをいかにローカルで開発するか? - たけぞう瀕死ブログ

    AWSでは様々な便利なサービスが提供されています。中にはRDSやElasticCacheのように既存のミドルウェアに対するマネージドサービスを提供するものもあり、これらについては既存のミドルウェアを使って開発することができますが、AWS固有のサービスについてはアプリケーションを動作させるには実際にサービスに接続する必要があり、開発環境が制限されてしまいます。 もちろんソフトウェア側で抽象化しておき、DIなどの手法を用いてモックに差し替えるという方法も考えられますが、特にストレージとして利用するサービスなどの場合はインタラクションが必要になるのでモックでは再現しづらいですし、やはり実際に動作するサービスに接続して開発やテストを行うほうが効率的です。 そこで、AWSのサービスを擬似的にローカルで再現することのできるプロダクトを集めてみました。 S3 node.jsで動作するs3-proxyが使

    AWS上で動作するアプリケーションをいかにローカルで開発するか? - たけぞう瀕死ブログ
  • AtomでMarkdownのアウトラインを表示する - たけぞう瀕死ブログ

    nav-panelというパッケージを入れるとエディタの右側にアウトラインを表示することができます。 atom.io デフォルトでMarkdownもサポートされており、こんな感じで表示されます。パネルはエディタのコンテキストメニューやコマンドパレットからNav Panel: Toggleコマンド、もしくはCtrl + Option + Oというキーボードショートカットでトグルできます。 ソースを見ると、他にも以下の言語をサポートしているようです。 langmap = '.coffee': langdef.CoffeeScript '.litcoffee': langdef.CoffeeScript '.rb': langdef.Ruby 'Rakefile': langdef.Ruby '.php': langdef.php '.css': langdef.Css '.less': lang

    AtomでMarkdownのアウトラインを表示する - たけぞう瀕死ブログ