サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
WWDC25
qiita.com/kompiro
asdf-vmとは? プログラミング言語及びツールのバージョン管理ツールです。類似ツールに anyenv があります。 anyenv と比較すると、下記の点で優れています。 direnvやsops 等のツールもプロジェクトごとにバージョン管理できる→READMEに記載するインストールセクションをすっ飛ばせる バージョン管理したいツールはプラグインにより拡張できる プラグインはURL指定できるので、 asdf global コマンドを使うと、ユーザーグローバルにツールのバージョン管理ができる ($HOME/.tool-versionsに永続化されているので、dotfilesと相性がいい) 使い方 インストール 基本的に https://asdf-vm.com/#/core-manage-asdf-vm を読んでインストールすればOK。 macOSでhomebrew を使っている場合は
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
この記事で伝えたいこと Docker for Mac が使う Dockerの実行環境 moby vm と LinuxKit Docker は Mac 上ではなく hyperkitという 仮想マシン上で動いている(Docker for Mac の場合) Linux で Dockerを使うときは同じカーネルを使うのでMac環境とかなり異なる volume は仮想マシン上の /var/lib/docker/volumes 配下においている 前回のおさらい 前回はコンテナとイメージ周りのデータ構造を見てきました。イメージは複数の読み取り専用のレイヤで構成され、コンテナはイメージのレイヤをベースに起動し、レイヤとしてcommitするまで永続化されないことを見てきました。では、MySQLのデータのような、コンテナを破棄しても残しておきたいデータはどうしておくとよいでしょうか? 今回は永続化したいデータ
はじめに 1年くらい前にDockerに入門した初心者です。いくつか自分でDockerfileを書いてみて、ある程度知識が得られてきたので、ここらでちょっとまとめてみます。 数回に分けて公開するつもりです。 dockerの主な概念 レイヤ イメージ コンテナ 今日はこのあたりの話をコマンドとともに解説します。 この記事を読むと docker image周りの構造がわかります。 データ領域を別途ボリュームに指定する理由がわかります。 git と docker の類似性 docker には git と似たコマンドがあります。 git commit / docker commit git tag / docker tag git pull / docker pull git push / docker push git log / docker history これらはどれもレイヤを操作するコマン
この記事はSelenium/Appium Advent Calendar 2016の10日目の記事です。 はじめに freee株式会社でアプリエンジニアをしている @kompiro と申します。普段は selenium をガリガリ動かしているエンジニアではないのですが、SitePrism というgemを使って PageObjects パターンを実装してみたら、想像以上に捗ったのでご紹介します。 SitePrism の特徴 SitePrism とは PageObjectパターンをCapybaraを使って実装するためのDSL です。 例えば google.com のページオブジェクトを SitePrism を使って定義すると下記のようになります。 # Pageの定義 class Home < SitePrism::Page set_url 'http://google.com' element
この記事は freee Engineers Advent Calendarの6日目です。 こんにちは。freee株式会社でアプリエンジニアをしている @kompiroです。主に会計freeeの開発に携わっています。 僕には「よりよい機能を、より早くユーザーに届けたい」という信念があります。今日はよりよい機能を、より早くユーザーに届けるためのGit/GitHubを活用する10の方法と題してGitやGitHubの便利な使い方や日々のTipsをお届けします。1 PRのレビュー完了までの時間を最速にするための工夫 freeeではGitHub上でレビューをしながら開発を進めています。レビューをするのもされるのも、うまく進めないと結構時間がかかります。もちろんコードをより良くする作業に時間を割いているのであれば時間がかかるのも致し方ないです。しかし、進め方による問題でも数日〜数週間デプロイが延期されれ
overcommitとは? git hooksの管理と、その拡張を簡単にできるRuby製ツールです。同様のツールにpre-commit by YelpやRailsに特化したpre-commitがあります。overcommitはこれらのツールと違い、pre-commit以外のフックにも対応しています。 リポジトリはこちら overcommitの導入でできること コミットのタイミングでrubocopやeslintなどlintツールをかけられる コードの読みやすさが向上することを期待できます checkoutやpullのタイミングでbundle installやnpm installを実行できる 他の開発者がGemfileやpackage.jsonに追加したらしくなんか動かない問題を回避できる pushする前に変更したファイルのみ対象にrspecを実行できる CIする前に自分が行った変更の結果を
動機 EMF等Eclipseの成果物は、Mavenリポジトリで配布されていない配布されている1。Gradle等を使う場合、Mavenリポジトリが欲しい。EclipseにもJGit等を配布するリポジトリはあるが、そこにライブラリがないのであれば、とりあえず自前のMavenリポジトリにデプロイしたい。ただデプロイするだけでも骨が折れるが、プラグインには依存関係があるので、それも解決したい。プラグインの依存関係は、META-INF/MANIFEST.MFのRequire-Bundleに記述されている。この情報を解析したいが、ここの形式は次のようになっていた。 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0) ",org.eclipse.emf.ecore;visibility:="reexport";bu
エンジニアチームのみんながどんな事に詳しいのかをざっくり知るため、Qiita:Teamをテキストマイニングしてスキルマップを作ってみる、というお話です。 ご挨拶 こんにちは。2015年10月にfreee株式会社にJoinした @kompiro こと近藤寛喜と申します。(本日34歳になりました)普段はフルスタックエンジニアとしてfreeeのユーザーさんにマジ価値を提供すべく日々奮闘してます。 freeeはまだ若い会社ですが猛烈な勢いでサービスが成長しており、結構な量のコードがあります。僕は入社したてということもあり、これまでチームの誰がどの仕事をしてきたのかがわかりません。なにか改善すべき点があったとして、 また、ここまでのAdvent Calendarの流れを見ていただいてもわかるとおり、freeeのエンジニアのみんなには得意技、言い方を変えればとんがっている分野を持っています。freee
概要 SSLを使ったクライアント認証は、特定のクライアント以外からサイトを見せたくない時、非常に便利に使えます。ここではMavenなどJavaのアプリケーションでもクライアント証明書を使う方法をまとめます。 全体の流れ JREに同梱されている証明書ストアcacertsにクライアント証明書を発行した認証局の認証局証明書をインポート 実行時のシステムプロパティにcacertsやクライアント証明書を指定 クライアント証明書が必要な特定のサイトが利用可能に 認証局証明書のインポート JREに同梱されている証明書ストアcacertsにインポートしないと、JREは実行時にインポートした認証局のみ認証されていると勘違いします。指定したファイルにある証明書のみ読み込みます。JREに同梱されているcacertsには主なルート認証局の証明書が入っているので、そこに自前認証局の証明書を読み込みましょう。 JRE
このページは作業ログです。やったことをつらつら書くだけなのでまとめません。あしからず。 モチベーション JavaScript界隈のビルドツールは雨後の筍のように色々あるね。GruntやらGulpやらはたまたmakeを使いましょうっていう記事もある。最近出てきたWebpackがReact界隈だとよく使われているので試してみる。 チュートリアルをやってみる Webpackのチュートリアルはこちら Qiitaに日本語でまとめられた方がいる。そちらを参照することをオススメする。 まず最初は設定ファイル無しから始まる。entry.jsを用意しただけの所からbundle.jsをwebpackで作り、htmlに読ませる。 次も設定ファイルなし。require文を使って他のファイルの内容を読み込んだentry.jsを作り、htmlの読み込ませる。 引き続き設定ファイルなし。npm install css-
このページは作業ログです。やったことをつらつら書くだけなのでまとめません。あしからず。 対象読者 主に自分 今日のゴール jQueryではない方法を使ってajaxを使えるようになっていること Reactのコンポーネントを非同期リクエストで構築できるようになっていること モチベーション React.jsはビューのみをサポートしたライブラリ。サーバーとの通信部分はなんも用意していない チュートリアルではjQueryを使ってサーバーと通信してた。でもjQueryはその他もろもろいろいろ機能がある。Virtual DOMとの相性がありそうなので、jQuery自体導入せずに済ませられるのならそうしたい。 調べてみた A Comparison of JavaScript HTTP Libraries for the Browserという記事によると、Ajaxリクエストを実現するには下記の方法がある。
React.jsと組み合わせるfluxのライブラリreduxを試してみた。 このページは作業ログです。やったことをつらつら書くだけなのでまとめません。あしからず。 対象読者 主に自分 今日のゴール redux-react-routerを使ってページ切り替えを実現する redux-react-routerとは? Reactのラウター(ルーターではない)ライブラリとしてよくreact-routerが使われる。react-routerの機能は十分だが、現在表示しているページという"状態"がアプリケーションに登場する。これもできればstoreに押し込めたい。ということで登場したライブラリ。react-routerをベースにしたライブラリなので、まずreact-routerから見ていく。 react-routerの特徴 ドキュメントの構造とURLの構造をマッピングするライブラリ。最初ドキュメントを読
React.jsと組み合わせるfluxのライブラリreduxを試してみた。 このページは作業ログです。やったことをつらつら書くだけなのでまとめません。あしからず。 対象読者 主に自分 今日のゴール reduxのBoilerplateを試してみる redux-devtoolsを試してみる Boilerplate Boilerplate(ボイラープレート)とは、package.jsonに予め必要なライブラリが定義されていたり、srcやdocs等、基本的なディレクトリ構成が定義済みだったりする、別名テンプレートプロジェクトのこと。 よくしらないけど、YaomenはBoilerplateを生成するツールじゃなかったっけ?と思って、YaomenのGeneratorにreduxのものがないか検索してみたらやっぱり見つかった。 こういうgenerator系のツールは、中身がよくわかってない初心者泣かせな
TL;DR 自動インストールでインストールされるJDKのアーキテクチャは、各Nodeを登録するために起動するslave.jarのJREのアーキテクチャだよ Jenkinsのソースコードは構造のバランスがいい Jenkinsは週次リリースできるソフトウェアのアーキテクチャを学ぶ題材として最適 きっかけ Jenkinsの便利な機能に、JDKの自動インストールがある。プロジェクトに利用するJDKを設定すれば、実行するノードに自動でJDKをインストールしてくれる、という素晴らしい機能だ。WindowsやLinuxだと32bit、64bitのJDKが配布されているので、どうやってインストールするJDKを判定してるんだろう、と思ってコードを読み始めた。 ゴール 自動インストールを実装しているクラスを見つけ、どのように実装されているか理解すること 実装クラスを見つける 実装を見つけるときは、ログを出力し
アナログなKanbanの状態を定時に写真を撮って保存して、上海のチームメンバーと共有するため、Raspberry Piにhubotをいれてアップするこのシリーズ。今回はGoogle Drive Web APIを使って撮った写真を保存するやり方をまとめておく。 参考リンク Google Drive Web APIのトップページ 認証について Google APIの認証には大きく分けて2つある。OAuthとSimple API Key Google Drive内のリソースにアクセスするので、Simple Keyは使えない OAuth2認証 Google APIのOAuth2 にはアプリが対象とする環境によっていくつかやり方がある。 今回はhubotに組み込む。常時HTTPサーバーを立ち上げることもできるが、認証情報はひとつでいい。今回はインストール済みアプリケーションを選んだ。(Youtubu
大事なこと ドングル型無線LANアダプタだと給電性能が足らずに安定稼働しないため、現在は使っていません。 ではどうぞ hubotをRaspberry Piに乗っけてプロジェクトのアレやコレをつぶやかせてやろうとワクワクしてRaspberry Piを買った。Raspberry Piを初めて触っているので、こじ研さんのページを参考にセットアップしていた。こじ研さんのページには無線LANのドングルを適当に買って来ればつながるんじゃないか?と書かれていたので、Elecom WDC-150SU2Mを買ってみて楽しみに挿してみたらウンともスンとも言わない。1000円の買い物なのでそれほど高い買い物ではないけど、なんか悔しい。いろいろ調べたら動作させられたのでまとめておく。 やったこと Raspbianの更新 kernel headerのビルド 無線LANアダプタドライバのソースコード入手&ビルド 実際
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? ユニットテストを書こう! ソフトウェアエンジニアにとって、ユニットテストは重要です。僕はなるべくユニットテストを書くようにしており、ソフトウェアエンジニアはもっとユニットテストを書くべきだ、と考えています。ここで言及している「ユニットテスト」は、単なる「テストコードによる自動化」全体を指すのではなく、「テストから見えてくるグーグルのソフトウェア開発」で登場した用語である「Sテスト」を指します。 「テストから見えてくるグーグルのソフトウェア開発」では、テストコードが対象とするプロダクションコード(製品コード)の規模、S、M、Lとサイズごと
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Pull Request Builder Pluginとは? Jenkins Pull Request Builder Plugin(以下ghprb)とは、GitHubの指定したリポジトリにpull requestが作成されると、予め設定しておいたJobを実行し、実行結果をGitHubに通知し、記録してくれるプラグインです。 pull requestを作成すると導入すると、下記の問題を回避できるでしょう。 間違えてコンパイルエラーが起こるコードをpushしてしまった テストが失敗するコードをpushしてしまった そもそも「上記の問題が起
注:このTipsはRails初心者が書いたものです。ツッコミ歓迎です。 pumaとは http://puma.io/ で公開されているconcurrentなWebサーバー。thinやunicornはワーカー毎にプロセスを立ち上げるが、pumaはワーカー毎にスレッドを立ち上げる。production環境ではサイトのパフォーマンスを上げるため、複数のワーカーを立ち上げるが、thinやunicornはワーカー毎にプロセスが異なるため、排他処理ができない。しかし、pumaはスレッドで動作するため、Mutexでsynchronizeブロックを記述すれば、排他処理を行える。 RailsCast #365 Thread-Safetyで取り上げられていた。ここではpumaの設定等のメモをまとめる。 インストール pumaも他のgemと同様、Gemfileに
チームで以前からTracを利用してます。Tracに色々なプラグインを入れて便利に使っているのですが、ソース管理をGitに移行した後、TracのBrowse Sourceが遅いといった問題にあったり、GitHubのpull requestを利用したコードレビューっていいよね、と言ったGitHubの良さを見てきて、部分的にGitHubに移行できないか調査しました。 探してみると、なんとtrac-githubプラグインというTracとGitHubを連携するプラグインを見つけました。ところがこのプラグイン、ちょっと癖のあるプラグインのため、環境構築等をまとめました。djangoプロジェクトのTracで使われているので、実績はあるといえるでしょう。 リポジトリ このプラグインでできること GitHubに作成したリポジトリにpushすると、Tracのチケットとコミットを紐付けられる チケットに紐付いた
IRCにBotを追加していろんな事をする記事はよく見かけますよね。Skypeでそれをやるにはどうすればいいのか、調べてみました。 Sevabotを選んだ理由 Botの開発には、GitHubでも使われているhubotが有名です。hubotにもSkypeアダプタもあるからこれが良さそう、と思い、まずは試してみました。hubotでもSkypeに追加したBotアカウントに対しコマンドを実行させたりするのは簡単です。しかし、例えばチケットを閉じたイベントをあるチャットルームに流そうと思うと、どのチャットルームに流すのか、チャットのIDがわかってないと指定できません。ちょっと調べてみた感じ、そういうインタフェースが見つかりませんでした。スクリプトで調べようと思えば調べられたりしますが、面倒くさいので今回はやめまました。 少し調べてみると、SevabotっていうSkypeにBotアカウントを導入するため
qiita.com/kompiro@github
注:このTipsはRails初心者が書いたものです。ツッコミ歓迎です。 #pumaとは http://puma.io/ で公開されているconcurrentなWebサーバー。thinやunicornはワーカー毎にプロセスを立ち上げるが、pumaはワーカー毎にスレッドを立ち上げる。production環境ではサイトのパフォーマンスを上げるため、複数のワーカーを立ち上げるが、thinやunicornはワーカー毎にプロセスが異なるため、排他処理ができない。しかし、pumaはスレッドで動作するため、Mutexでsynchronizeブロックを記述すれば、排他処理を行える。 RailsCast #365 Thread-Safetyで取り上げられていた。ここではpumaの設定等のメモをまとめる。 ##インストール pumaも他のgemと同様、Gemfileに
このページを最初にブックマークしてみませんか?
『@kompiroのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く