Organizations

amazonconnect amazonpolly appflow aws books camp childcare client vpn cloudfront cloudwatch codebuild daily datadog docker ec2 ecs eventbridge fargate gas homeserver iot jamf lambda life hack linux mac movie music php program python rds ruby running s3 tech terraform vpc windows wordpress 10km 2016 2018 2ブロック alfred amazonconnect amazones amazonpolly ansible apache api atcoder aws aws認定資格 backlog balmuda band bind boss box brew cakephp centos centos6 chef-solo ci circleci circlecijp cloud cloud sql cloud storage command crkbd cron css database diet digdag disney dlna dns docker docker-compose dockerfile dockertokyo ecr ecs edy eks elasticcloud elasticsearch em embulk ena evernote ezmlm fabric fargate fluentd font found fuzz galeracluster garageband gce gcp geek gem git github goo google google map googlemap gr-citrus gsuite happynewyear hatenatech helix homebrew html ikea infrataster iphone itamae iterm jamf k8s kinesis kintone knife-solo knowledge kpt kubernetes l2tp lancers lenovo let'ssplit linux live lolipop mac macos macアドレス mail mariadb mediatomb memory mfa midi mint60 ml mta mysql namazu nas nginx notion onedrive openssl peco pepabo perl php pixar pmf post python qiita qmail raspberrypi raycast redmine roland route53 rsync ruby ruby on rails salesforce sendgrid_jp sfdc sha2 shakeshack slack so-01j sony split sql sre srelounge srenext ssd ssh ssml stationery team terastation terminal terraform typescript ubuntu22.04 unix vagrant virtualbox visualstudiocode vm vpc vpn vpngate vscode vuls windows windows10 windows8 windowsserver2012 wordpress xperia xtechjaws xtechjaws07 zsh おサイフケータイ たからばこセッティング としまえん はてな アイアムアヒーロー アイアンマン アウトドアアンバサダー アプリ アレクサ インスタンスタイプ インターン インフラ ウィンドウズ ウェディング エフェクター エヴァ オープンソース カンバン キス キーキャップ キーボード ギター コキア コマンドプロンプト コンタクトセンター コース サーバーオペレーション サーバー移行 シェイクシャック シェルスクリプト スクラム スタジオ ステラタウン ストレージ スマホ セキュリティ タスク管理 ターミナル ダイエット チャリティー テックカンファレンス デスクトップ トライダガー ノートpc ハイレゾ ハゼ ハワイ ハンバーガー バイク バックアップ バンド バージョン管理 パスワード管理 パソコン パパ ピアノ ピクサー ピック ファン プロトレックスマート プロビジョニング ペイジェント ペパボ ポストモーテム ミニ四駆 メンタリング メンター メーリングリスト メール ヤフオク ヤマダ電機 ヤマダ電機モバイルドリーム館 ライブ ランニング リモートワーク レアジョブ レジン レツプリ レビュー ログ ロジカルシンキング 上尾 二段階認証 伊那市 会社 保育園 優しい世界 入門 全文検索 分割キーボード 初心者 勉強会 名前解決 外苑前 天キー 太陽 子供 学習リモコン 実写映画 家具 家族 家計簿 家電 小松菜奈 引っ越し 息子 成人式 技術書典 振り返り 新年 新幹線 新海誠 新米 旅行 日帰り旅行 映画 書評 東京湾 東京都知事 東野圭吾 桜台 検証 気分転換 水タバコ 池上彰 海釣り 温泉 漫画 炭酸泉 生産性 登山 監視 目標 確定申告 福島 立会川駅 組立て 経済学 結婚 練習音源 練馬 考える 育児 脆弱性 自作 自作エフェクター 自作キーボード 自宅サーバー 自宅鯖 花見 蕎麦 言葉 誕生日 読書 豊島園 貸し切り 赤外線 趣味プログラマー 転職 退職 選挙 釣り 釣り堀 銭湯 録音 長野県 障害報告 電動アシスト自転車 電動自転車 電子工作 電気工事士 電気工事士2種 電気風呂 露天風呂 養命酒 1歳
  • 概要 最近、CircleCI2.0ではtoriggerという機能でスケジュール実行ができるということを知った。 CircleCI公式ドキュメント まんまこちらの方の記事の通り。 Circle-CI 2.0のcron triggerを使って、定期実行をする 私が実現したかったのは、個人のアプリケーションでサーバーでcronで定期実行させてSlackに通知させているやつを、このtorrigerで実現できないかなと思ったことだった。 今までだとherokuとかのPaaSを使ったり、AWS Lambda、Google App Scriptとかを使うのがよくある方法だと思うのだけど、簡易的なバッチならCircleCIのみでいけないかな?と思い、やってみることにした。 CicleCIへのプロジェクト追加 まず、いつもどおりにCircleCIにログインして、「Add Project」からプロジェクトを追加する。※今回はすでに追加済みだが、tw4-html-parserというリポジトリを例にあげる。 次に「start building」しておく。 このままではCIはなにも実行されずにエラーになるので、下記をリポジトリに追加する。 追加先は、リポジトリ直下に .circleci/config.yml というのを作成して、runの部分に実行させたいコマンドを記載する。 --- version: 2 jobs: build: docker: - image: ruby:2.4 working_directory: ~/repo steps: - checkout - run: bundle install - run: bundle exec ruby htmlparser.rb workflows: version: 2 normal_workflow: jobs: - build schedule_workflow: triggers: - schedule: cron: "1 11 * * *" # UTCで記述。-9 filters: branches: only: - master jobs: - build ポイントはworkflowという箇所。
    CircleCI cron Created Sat, 01 Sep 2018 13:13:10 +0000
  • 前回開発環境を作ってから、ちまちまといくつかのモジュールを試していた。 その中でも面白いのが静電容量式タッチセンサー。 指で触れるとセンサーが反応して、その出力でONOFFスイッチになるやつ。 今回は、タッチしたら青色LEDが光るシンプルなものを作った。 コードはこちら。 #!mruby led = 0 touch = 1 pinMode(led, 1) pinMode(touch, 0) loop do if digitalRead(1) == 1 digitalWrite(led, 0) delay(10) digitalWrite(led, 1) end end とってもシンプルになってる。 pinModeでピンアサインをLEDとタッチセンサーで決めて、digitalReadの値が1だったらdigitalWriteで青色LEDを光らせるというもの。 こんな感じで光る。 <p style=" margin:8px 0 0 0; padding:0 4px;"> <a href="https://www.instagram.com/p/BkAi6A_BWu0/" style=" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;" target="_blank">今日の進捗です。 静電容量式タッチセンサーと青色LED.</a> </p> <p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;"> <a href="https://www.
    GR-CITRUS Created Thu, 14 Jun 2018 14:54:01 +0000
  • みなさんはメールの送受信ってどうやってますか? 普通MacだったらMailなり、ThunderbirdなりのGUIアプリケーションを使用するかと思います。 しかし、インフラをやっているエンジニアだと、telnetなどでメールサーバーにつないで、接続確認を取ることがままあります。 しかし、メールサーバーへ接続するのにtelnetでつなぐと、認証情報をbase64エンコードしたりする場面が出てきます。 これが結構面倒だし、それに加えて手動だとコマンドミスなのかサーバー側の問題かを切り分けしやすいようスクリプト化したいなぁと思ってました。 シェルスクリプトで愚直にexpectも考えましたが、もう少しスマートでメンテナンスしやすいようにできないか調べてたところRubyのmailというgemが簡単そうということを知り、メールの送受信ができるようなスクリプトを作ってみました。 参考にしたサイト 参考にしたはのはこちらのサイトです。 メソッドの使い方などがどのサイトよりも丁寧に書かれていたので、このサイトに書いてあることを参考に下記スクリプトを書きました。 mailscript.rbファイル require 'yaml' require 'mail' require 'date' require 'socket' require 'thor' class EmailScript < Thor desc 'smtp','[Usage] ruby emailscript.rb smtp SMTPPORT MAILADDRESS ENVIRONMENT' def smtp(port, mailaddress, mailenv) pwinfo = YAML.load_file("mailenv.yaml") Mail.defaults do delivery_method :smtp, :address => pwinfo["#{mailenv}"]['hostaddress'], :domain => pwinfo["#{mailenv}"]['hostaddress'], :port => "#{port}", :authentication => :login, :user_name => pwinfo["#{mailenv}"]['user_name'], :password => pwinfo["#{mailenv}"]['password'] end todaydate = Time.now svrhostaddress = pwinfo["#{mailenv}"]['hostaddress'] begin Mail.deliver do from pwinfo["
    Created Wed, 15 Feb 2017 11:41:45 +0000
  • 弊社のmatsumotoryさんが作られたツールrconを試してみました。 http://hb.matsumoto-r.jp/entry/2015/12/02/133448 cgroupを利用したワンバイナリのツールで、IOやCPU、メモリーなどのリソースを制限できます。 cgroupは過去に検証したことがあったのですが、便利だけど、やはり手間がかかるイメージでした。 しかしrconはLinuxコマンドのように扱えるので、便利そうだと思い試してみました。 試した環境 CentOS6.7 Vagrant Ruby2.2.3 事前に入れておくと良いパッケージ 私の環境はCentOSのminimal isoを利用したイメージだったので、色々パッケージが不足してました。最低限下記は必要かと思われます。 $ yum install libcgroup gcc zlib zlib-devel bison autoconf aclocal automake c++ gcc-c++ flex pam pam-devel 導入 導入については、README.mdを見ればすぐに分かるのですが、rakeを使ってビルドすれば、OKです。 README通りにやってみた $ yes > /dev/null yesコマンドを実行すると、そのままCPUが100%食われてしまいます。 rconを使って、実行してみます。 $ rcon --user inamuu --command "yes > /dev/null" --cpu 10 結果 CPU使用率が10%まで抑えられていました。明確に数字にあらわれるので感動します。 また、下記のように既に実行されているプロセスに対しても制限をかけることができました。 $ yes > /dev/null & $ rcon --pids "`pgrep yes`" --cpu 10 今回はテストしませんでしたが、ディスクの読み書きもサイズで制限できるため、あきらかに負荷のかかる作業(ファイルを大量に削除するなど)を実施する場合は、大変便利なツールです。
    Created Tue, 27 Sep 2016 14:59:42 +0000
  • Ocotkit使うにあたって、アクセストークンを直書きしてテストしていたのだけど、例えば複数人が使うのであればそれダメじゃんってなった。 調べてみたらnetrcというのが使えるらしくて、試してみた。 ついでにgistの一覧取得するみたいなのもやった。 .netrcファイルの書き方 [code] $ vim .netrc machine api.github.com login Githubのユーザー名 password ‘取得したアクセストークンをここに書く’ [/code] 認証の書き方 アクセストークン直書き [code] Octokit::Client.new access_token: ‘ここにアクセストークン直書き’ [/code] netrc使うパターン [code] Octokit::Client.new netrc: true [/code] これで良かった。 おまけ:gistの一覧取得 [code] require ‘octokit’ client = Octokit::Client.new netrc: true list = client.gists puts list [/code] おまけ:一番最新のgistのURLを取得 [code] require ‘octokit’ client = Octokit::Client.new netrc: true htmlurl = client.gists[0][:html_url] puts htmlurl [/code] これで、昨日ブログに書いた感じでgist作って、それを↑のような感じでURL取得するみたいなのが一連の流れでできそう。 昨日のブログ [blogcard url=http://inamuu.com/octokit%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%81%9f/]
    Created Thu, 22 Sep 2016 12:53:34 +0000
  • 会社の人にoctokit使うとGHEにログインしなくても色々できるよと教えてもらったので、試してみることにした。 octokitのインストール [code] $ gem install octokit $ gem list octokit *\* LOCAL GEMS ** octokit (4.3.0) [/code] Gistを作成するテスト アクセストークンをGithubで作成して、いい感じに権限を付与してあげる。gistの作成だけだったら、gistにチェックを入れるだけ。 下記がテストしたコード。 [code] require ‘octokit’ client = Octokit::Client.new access_token: ‘Githubの自分のsettings作ったアクセストークン’ client.create_gist({:files => {‘test.md’ => {:content => ‘octokitのテストだよ’}}}) [/code] これで実行してみたらこんな感じでgistが作られてた。これ確かに便利だ〜。 これ使えばチームで使ってるあのツールのあの部分に適用できそう感があるなぁ〜なんて妄想できたのが良かった。 あとでやってみよ。
    Created Wed, 21 Sep 2016 14:59:13 +0000
  • 先日、下記OSSにプルリクエストを出して、マージしていただいた。 [blogcard url=https://github.com/Tomohiro/puppet-mackerel_agent/] Mackerelはファイルシステムの容量監視が行えるのだけど、暫くは特定のファイルシステムを除外することができなかった。 Makcerelの仕様上、複数のファイルシステムがあった場合、最も使用率が高いシステムがアラートの対象となる。※設定画面で特定のファイルシステムのみを容量監視設定することなどは出来ない。 このため、なにかしらの理由で特定のファイルシステムが使用率100%だと、Mackerelで容量監視を設定した直後にすぐにアラートがあがってしまう。 これを回避するには、なにかしら別のスクリプトを用意するしかなかった。 ところが、今年の2/5に特定のファイルシステムを除外するパラメータが追加された。 [blogcard url=https://mackerel.io/ja/blog/entry/2016/02/05/094759] このパラメータでは、例えばramディスクを追加して使用しているような場合やシステムで自動的にマウントされてしまって使用率が100%になってしまっているファイルシステムがあっても、除外することが出来る。 前述のpuppet-mackerel_agentはhieradataでパラメータが管理できるので大変便利で使わせていただいてたのだけど、このファイルシステムを除外するパラメータが含まれていなかった。 そこで折角なのでパラメータを追加するPRを出してみたら、マージしていただけたのだ。 これでこのmanifestを使うことで、除外したいファイルシステムもhieraで管理でき、別途プラグインをインストールすること無く一括で容量監視が出来るようになる。 いやー社外の人にPRをマージしてもらえるってすごい嬉しい。 メンテナーみたいなことが出来るようになるときっと楽しいだろうなと思うので、また色々PRチャンスがあれば出していきたい。
    Created Fri, 19 Aug 2016 14:59:48 +0000
  • 以前シェルでSlack通知のスクリプトを書いていたのだけど、この間書いたRubyプログラムの、 [blogcard url=http://inamuu.com/nokogiri%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B/] これでSlack通知させたくて、Rubyでも書いてみた。 [code] require ‘dotenv’ require ‘slack/incoming/webhooks’ Dotenv.load slack = Slack::Incoming::Webhooks.new ENV[“APIKEY”] attachments = [{ color: “#483D8B”, fields: [ { title: “今日の書籍一覧”, value: “#{str}”, } ], }] slack.post “”, attachments: attachments [/code] APIKEYをGithubで管理しないために、dotenvで.envに書いたAPIKEYを読むようにした。 しかし、他の方々はどうしてるのだろう? ちなみにシェルスクリプトはこれ。 [blogcard url=http://wiki.inamuu.com/index.php?cmd=read&page=%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%EF%BC%9ASlack%E3%81%B8%E3%81%AE%E9%80%9A%E7%9F%A5&word=slack] [code] #!/bin/bash if [ -n $? ];then echo “Usage: ./slack.sh IPaddress” exit 1; fi url=’webhookのAPIで取得したURLをここに記載する。’ username=’ユーザー名として名乗る名称を記載する。なんでもOK’ to="#チャンネル名を記載する" subject="`hostname` : $1" emoji=’:bell:’ <-絵文字。なんでもOK #message="${subject}" message2="$2" payload=“payload={ "channel": "${to}", "username": "${username}", "text": "${subject}",
    Created Thu, 28 Jul 2016 14:35:31 +0000
  • あるサイトでは、電子書籍で発売した漫画の一覧を観ることができる。 そのサイトを見るのが日課だったのだけど、正直毎日確認するのが面倒くさいと思ってた。 そこで、いい感じに一覧を取得できないか調べたところ、いわゆるスクレイピングなどでよく使われるNokogiriを使ってみることにした。 実際に書いたコードはこちら。 [code lang=”ruby”] require ‘yaml’ require ‘open-uri’ require ‘nokogiri’ list = YAML.load_file(“list.yaml”) list[‘siteurl’].each do | url | doc = Nokogiri::HTML(open(url).read) puts “=== Info === " p doc.title doc.xpath(‘//h2[@class=“entry-title”]’).each do | node | puts node.text end end [/code] 見て分かるように大変シンプルなコードで簡単に取得できた。 取得できた情報はこんな感じ。 === Info === 絢爛たるグランドセーヌ 第01-06巻 [Kenrantaru Grande Seene vol 01-06] Ultraman 第01-08巻 ディメンションW 第01-10巻 [Dimension W vol 01-10] ねじ巻き精霊戦記 天鏡のアルデラミン 第01巻 [Nejimaki Seirei Senki – Tenkyou no Alderamin vol 01]
    Created Sat, 23 Jul 2016 14:17:48 +0000
  • いつもやってるatcoderの問題シリーズ。 今回は最新のabc041を解いてきた。 問題はこちら。 [blogcard url=http://abc041.contest.atcoder.jp/assignments] A問題の回答 [code] s, i = STDIN.read.split(?\n) i = i.to_i – 1 puts s[i] [/code] 改行コード区切りで縦に並んだ文字列をそれぞれ変数に入れる。 iという数字を整数の型にセットして、1引く。 文字列sのi番目を表示させる。 B問題の回答 [code] A, B, C = STDIN.gets.split(" “).map(&:to_i) X = A * B * C Y = (10**9) + 7 puts X % Y [/code] スペース区切りで変数にセットし、整数の型にセットする。 AとBとCを積算する。 Yは指定された数字10の9乗足す7を計算している。 そして最後にX割るYの余りを出している。 C問題の回答 [code] N = STDIN.read.split("\n”).map(&:to_s) hash = {} i = 1.to_i N[1].split(/ /).each do | val | hash[i] = val.
    atcoder Created Tue, 12 Jul 2016 00:48:33 +0000
Next