サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
円安とは
qiita.com/kawazu1008
概要 社内で、z-indexの値が可変な要素があったとして、その値に関わらず「それよりも常に全面に任意の要素を表示することは可能か?」という話題になったので調べてみたところ、下記の記事が出てきました。 かなりざっくり言えば、dialog要素をshowModal()で表示すればz-indexの値を超越できるという内容です。 Qiitaにも紹介記事ありますね。 https://qiita.com/nako_n/items/114e51b878753e250ce1#dialog ということで試してみました。 See the Pen z-indexを超越するモーダル by kawazu1008 (@kawazu1008) on CodePen. 詳細 HTMLは、以下の3つの要素を用意。 z-indexを指定した要素 z-indexを指定していないモーダル モーダルを表示するトリガーボタン <di
qiita.com/kawaz
ロードバランサを筆頭に最近のWEB開発の現場では Proxy サーバがよく出てきます。で Proxy サーバが存在するとよく問題になるのが「ユーザの本当の接続元IP」を知りたいという要求で、通常それは Proxy サーバがバックエンドのリクエストに X-Forwarded-For ヘッダを付けてくれることで大体解決します。でその値を更に便利に使えるようにしてくれる mod_remoteip ってのがあって、今まではほぼメリット部分が大きく、その副作用で困ることはあまりなかったんですが、今回ちょっとハマったケースがあったので備忘録としてその内容を記録しておく。 X-Forwarded-For ヘッダの役割と仕組み X-Forwarded-For ヘッダは ip1[, ip2[, ip3[, ...]]] といった構造の値が入ることになっていて、ip1が「ユーザが最初に直接アクセスしたProx
qiita.com/kawazu255
TD;TL Google Speech to Text APIとWeb Speech APIを併用することで実現する 音声検出のみWeb Speech APIを使い、文字起こし自体はGoogle Speech to Text APIを使うことで、ブラウザ文字起こしにおいてリアルタイム感と精度の高さを両立する 発端 現在開発中のプロダクトの中で、Speech to Textの仕組みを導入するために様々な方法を調べていました。 オンライン会議中の会話を文字起こししたり、アジェンダや議事録を一括で管理できるサービス「Telelogger」というサービスなのですが、コアとなる機能が会議中の会話の文字起こしです。 サービスはWebアプリケーションとして提供するため、ブラウザでの文字起こしを想定しています。 対象ブラウザをGoogle Chromeに絞った上で、最初はWeb Speech APIを試し
qiita.com/kawazu191128
Help us understand the problem. What are the problem?
pam_tid.so と pam_reattach.so pam_tid.so は TouchID 認証を利用するための macOS 付属の PAM モジュール。 pam_reattach.so は pam_tid.so が tmux 内だと利用できない問題を解決してくれる PAM モジュール。 これら2つの設定を /etc/pam.d/sudo に追記してやることで、sudo で TouchID が使い放題になる。 設定スクリプト 新しい Macbook のセットアップの際に手順書だと面倒なのでワンライナーでセットアップできるようにした。 元コードを修正した際に Qiita に再貼り付けするのは面倒なのでソース確認したい人は Gist を参照。 # sudoでTouchIDが使えるようにする ( https://qiita.com/kawaz/items/0593163c1c5538a3
tarはアーカイブ作成が最後まで完了しても終了ステータスが 0 以外になることがある! tar コマンドはアーカイブ作成時にワーニングが発生することがあり、ワーニングが起きてもアーカイブ作成自体は最後まで完了してくれるので、簡易なバックアップ用途であれば大抵無視してよいのだが終了ステータスが 1 になってしまうので、終了しないようにしましょう。(ちゃんと考えるならファイルシステムやブロックデバイスレベルでスナップショットを取るところ) なお致命的エラーの場合は 2 とかで終了するのでこれは止まって良いです。 駄目な例 #!/bin/bash set -e tar cfz tmp.tar.gz target/ mv tmp.tar.gz target.tar.gz ↑これだとファイルのアーカイブ中に以下のような状況が起きた際などに最後までアーカイブ作成は完了するが、終了ステータスが 1 にな
# 停止中コンテナの削除(起動中のコンテナはrmがエラーになるので細かいことを気にしなければこれで問題ない) #docker rm $(docker ps -a -q) # 停止中コンテナの削除(少し丁寧版?停止中のコンテナのみを削除) docker rm $(docker ps -f status=exited -f status=created -f status=dead -f status=paused -q) # 不要なイメージの削除(REPOSITORYが<none>の奴) docker rmi $(docker images -f dangling=true -q) # 最近のバージョンでは↓これでOK docker system prune -a # 停止中のコンテナや未使用ボリュームやイメージやネットワークを全部削除する docker system prune -f #
WEBアプリケーションの前段に CDN として CloudFront を使っているとスマホ判定やhttps判定でCloudFront用の特別設定を開発者側にしてもらう必要がある。 具体的には User-Agent が取れない代わりに CloudFront-Is-Mobile-Viewer, CloudFront-Is-Tablet-Viewer, CloudFront-Is-Desktop-Viewer, CloudFront-Is-SmartTV-Viewer などを見るようにする。 また、一般敵なProxyを経由したときのhttps判定では X-Forwarded-Proto を見るところ、CloudFront では CloudFront-Forwarded-Proto というヘッダを見てやる必要がある。 で、多くのアプリでは User-Agent 判定に iPhone/iPad など
最近は lego を使う方がトラブルが少なくてオススメ。特に dns-01 が使える環境だとWEBサーバも不要になるのでとても便利です。そしてlegoもDockerから利用すればインストールの手間がなく便利です。 ↓は今や古い記事です。当時のアレコレの参考文献までに。 元記事 certbot は普通にインストールしようとすると色んなパッケージとかをローカル環境に入れ始めるので気持ち悪い。 証明書さえ手に入れば良いのでプログラムは Docker 内で実行させれば十分。 ドメイン確認に http を使うが /.well-known/acme-challenge/* のパスが通ればよいだけなのでそこだけ Proxy する形が外側の設定がクリーンに保てて楽ちんでよい。 手順 certbot の実行前にホストのWEBサーバに設定しておく。
NEW! 最新のやり方 最新の macOS Shierra 10.12.6 なら特別な設定など不要で ⌘+Shift+. だけでOKです! 過去に頑張った歴史 Mac のファイルエクスプローラーである Finder。こいつはデフォルトでは隠しファイル(ピリオドで始まるファイル名)を表示してくれません、そしてこの隠しファイルを表示させる手順が案外面倒くさいので、僕が納得する使い勝手になるまで色々試してみた記録です。 v1: Finder の設定を書き換えて再起動 Finder で隠しファイル(dotfiles)を表示する方法をググると山のように出てくる方法があります。それは defaults というコマンドで設定を書き換えてFinder再起動するっていう方法です。 ## 隠しファイルON defaults write com.apple.finder AppleShowAllFiles tr
外から自宅鯖に繋ぐ設定について 自宅内に複数のサーバがあって、外からssh出来るように例えば以下のように静的NATの設定をルータにしてあったとする。(この辺の設定は各ご家庭のルータによるので割愛)
昨日リリースされた git 2.9 の新機能のうち Beautiful diffs 関連の設定を自分の gitconfig に足してみたのでそのメモ。 設定ファイル gitconfig diff-highlight が使えない場合は cat にフォールバックするとか、コピペするだけで使えるよう環境に配慮もしてみた。軽く動作確認したところ問題なく動いてる。 diff --git a/config/git/config b/config/git/config index 3b78506..971396f 100644 --- a/config/git/config +++ b/config/git/config @@ -15,6 +15,14 @@ open = browse [core] autocrlf = false +[pager] + log = (diff-highlight 2>
git 2.9 の新機能で core.hooksPath という設定が出来るようになったようだ。 これは何かというと、今まで git のフックスクリプト置き場は リポジトリルート/.git/hooks というパスに固定だったのが、core.hooksPath を設定することでその場所を変えられるようになったというもののようだ。 指定可能なのは以下の3種類のどれか。 絶対パス (e.g. /home/kawaz/.config/git/hooks) ~ から辿れるパス (e.g. ~/.config/git/hooks) 相対パス(リポジトリルートから) (e.g. myhooks が指定してあったら リポジトリルート/myhooks の意味) 僕の事情:dotfiles のパスが不定なん… 大抵の環境では上述した3種類のパス記述で十分かもしれないが、僕は自分の設定を kawaz/dotfi
このエントリの内容は pattern - Vim日本語ドキュメント を見れば全て書いてある。 個人的によく見直すものを自分なりに整理してまとめなおしたものです。 メモ vimの正規表現には \ でエスケープする必要な文字がオプションによって変わる。これには magic / nomagic / very magic / very nomagic と4つのモードがあるけど、vim では magic モードを基本とします。 繰返し制御系(量指定子) a* は0回以上の a の繰り返しにマッチする。(最長一致) a+ は単に a+ という文字列にマッチする。 a\+ は1回以上の a の繰り返しにマッチする。(最長一致) a? は単に a? という文字列にマッチする。 a\? は0または1個の a にマッチする。 a\= は0または1個の a にマッチする。(\? と基本同じだが \? は後方検索
ダメ人間の日常 例えば適当なファイルを一時的に落としてきてちょっと使ったら捨てたいだとか、そんなとき僕はよく mkdir /tmp/a; cd /tmp/a してから何かするとかやってたんだけど、これ良くない点が色々ある。 一時ディレクトリに使う名前のボキャブラリが貧困な上に掃除もサボるので名前が被りまくってmkdirが中々出来ない→結果こうなる 後始末しないで放置も多いのでゴミファイルが増えてディスクの無駄だしパスワードや個人情報とか消すべきセンシティブな情報が含まれてると色々問題。 一時ディレクトリでの作業が終わったら元いた場所に戻りたいけど元いた場所が深いとこだったりすると戻るのが面倒だしそもそも何やってたか忘れてる事も…。 tmpspaceコマンドで解決だ! そこでそんな問題を解決するために以下のような bash 関数を作って、~/.bashrc とかに書いておくことにした。 #
はじめに vim のプラグイン管理ではこれまで NeoBundle がデファクトだったけど、今後は dein.vim を使えってことなので移行してます。 で dein#add で追加したプラグインの設定をどこでどう書くかを色々試した結果、TOML管理機能を使うのが一番よさげ、という結論に至ったので、こうしておくとよさそうという現時点での僕の設定を書いておきます。 設定例 init.vim (neovimじゃない場合は.vimrcと読み替えてOK) は最終的に↓こんな感じに凄くシンプルになった。 if !&compatible set nocompatible endif " reset augroup augroup MyAutoCmd autocmd! augroup END " dein settings {{{ " dein自体の自動インストール let s:cache_home =
# force https RewriteCond %{HTTPS} !=on RewriteCond %{HTTP:X-Forwarded-Proto} !=https RewriteCond %{HTTP:CloudFront-Forwarded-Proto} !=https RewriteCond %{HTTP_HOST} !=unsecure.example.com RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R=301,L] mod_ssl 判定は %{HTTPS} で行う。 ELBなど一般的なリバースプロキシで https してるときは X-Forwarded-Proto ヘッダを見る。 CloudFrontの場合は CloudFront-Forwarded-Proto ヘッダを通す設定をしたうえでそれを見る。 https リダイレ
glibcの脆弱性対策(取り急ぎiptables/firewalldで叩き落とす!)for CVE-2015-7547LinuxSecurityiptablesfirewalldglibc はじめに glibcでヤバメな脆弱性キター! 「glibc」ライブラリに脆弱性、Linuxの大部分に深刻な影響 - ITmedia エンタープライズ Google Online Security Blog: CVE-2015-7547: glibc getaddrinfo stack-based buffer overflow CVE-2015-7547: Critical Vulnerability in glibc getaddrinfo - SANS Internet Storm Center Carlos O'Donell - [PATCH] CVE-2015-7547 --- glibc ge
序文 例えばserver1とserver2でreplica運用しているglusterfsボリュームがあるとする。 # こんな感じに作られたボリュームね gluster volume create vol1 replica 2 \ server1:/media/bricks/disk1/vol1 \ server2:/media/bricks/disk1/vol1
CentOS7のカーネルバージョンは 3.10 で、これだとDocker 1.9 の swarm network で overlay ネットワークが使えません。またデフォカーネルではreiserfsが使えなかったりと色々不便だったので新しくしたい。でも kernel を自分でビルドするのは更新まで考えると面倒なので yum で入れたい。そこで ElRepo です。 ElRepo これはRHELに新しいカーネルやファイルシステムやドライバ等を提供してくれるリポジトリで、ここを使うとより新しいカーネルをyumでインストール出来るようになる。 セットアップ手順は上記URLに書いてある通り以下のようにすれば elrepo-release が入る。 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://w
はじめに 本当は変態補完関数やtty操作系のネタをやろうと思ったんだけど、忙しさにかまけてエントリに纏められなかったのでもう少しライトなネタを探してたら丁度今日↓こんなネタが湧いてきたので、じゃコレを簡単に使うコマンド作ってみよう! Amazon Web Services ブログ: EC2 Run Commandアップデート – Linuxインスタンスで利用可能に てことでアドベントカレンダー18日目は、締切2時間前から突貫で書き上げたネタです。ホントは引数処理とかもう少しだけ足して普通に使えるコマンドにしたかったんですがそれは後日追記ということで…、今日は基本的な実行が出来るまでを作ってみました。 Requirements 必要なもの サーバ側 awscli(最新) amazon-ssm-agent がインストールされたEC2インスタンス パブリックIP(NATとかでも良い、必要なのはs
bashで標準入力を1行ずつ配列変数に入れるのって、なんか色々気にすることが多くて面倒くさいから一つの関数にまとめてみた。 (こんな変態関数作るほうが余程めんどくさいって?うんその通りだと思うわ。でも知見を得たら頭整理の為にも一度書き残しておかないとすぐ忘れるし、もうそういう性なので仕方ない。) こんな関数を作って # 標準入力を指定の変数名に1行1値の配列として読み込む関数 read2arr() { [[ $1 =~ ^[a-zA-Z][a-zA-Z0-9_]*$ ]] || return 1 local IFS= eval "local $1_" eval "$1=()" eval "while read -r $1_ || [[ -n \$$1_ ]]; do $1+=(\"\$$1_\"); done" } $ # 関数を読み込んでおく $ . read2arr.sh $ # テス
追記:openssh-7.3 以降なら ProxyJump や -J が使えます ホスト名を + で繋げることで多段Proxy接続も簡単に、がコンセプトだった本エントリの設定ですが、OpenSSH 7.3 から ProxyJump という設定が使えるようになったので、使えるなら ProxyJump を使う方が健全だし柔軟で使い勝手も良いのでそちらを覚えて帰ることをオススメします。 使い方は簡単で以下のような感じです。多段も行けるし、踏み台ホスト毎にユーザ名やポート番号を変えることも出来ます。 # 1. bastion.example.jp -> internal.example.jp ssh -J bastion.example.jp internal.example.jp # 2. bastion.example.jp -> internal.example.jp -> super-de
前までVPN接続の自動化とかAppleScriptで書いてたんだけど、AppleScriptって結局全然慣れなくて凄い書くのが苦痛だった。そしたらいつの間にかJavascriptで書けるようになってるから試してみたら超簡単になってて歓喜ww 例えばVPN接続とか↓こんな風に2行で終わりだしES6も普通に使えるっぽいし色々捗るわこれww #!/usr/bin/osascript const se = Application('System Events'); se.connect(se.networkPreferences.services["VpnName"]);
1.Windows7/8を入れる Windows7/8のISOを仮想CDドライブにアタッチしてWindows7/8のプロダクトキーを入れて普通にセットアップする。 ※ Windows7/8でWindowsUpdateする必要はない。後で消すので時間とディスク容量の無駄 2.Windows7/8のライセンス認証を行う 「Windows ライセンス認証」を開いてライセンス認証を行う。必要があればインターネットや電話によるライセンス認証を行う。まぁとにかく普通にライセンス認証を完了させる。 これにより現在のParallelsの仮想ハードウェア構成の情報がマイクロソフトに登録される。 ※ Windows7/8でWindowsUpdateする必要はない。とにかくハードウェア情報がライセンス認証と紐付きさえすれば良い。 3.Windows10をクリーンインストールする 一度Windows7/8をシャッ
仕組みとしては Bash の Process Substitution っていう機能を使ってます。 よく「2つのコマンドの出力結果のdiffを取る」とかを例示して紹介される機能ですが、「サブシェルの出力を入力として使う例」はよく見るけど「出力をサブシェルの入力に使う例」はあまり見ないなーと思ったので、僕がたまに使うケースを例に紹介してみた。 Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up
IPがコロコロ変わる人が居て、毎回IP追加のお願いに対応するのが面倒なので、もうIP変わる度に自分でsshの接続元設定を追加削除してくれやー。 でも特定セキュリティグループの設定以外は何もかも出来なくしたIAMユーザを使わせたい、というときに設定するポリシー。 SecurityGroupAccessとか適当な名前を付けて設定する。 { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1393841669000", "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroups" ], "Resource": "*" }, { "Sid": "Stmt1393841669001", "Effect": "Allow", "Action": [ "ec2:AuthorizeSecu
AmazonLinux 2015.03 が出てphp56が使えるようになったのでphp55→php56にあげてみた。 手順 yum swap でパッケージを一気に入れ替える。 packages=($(rpm -qa php55*|sed 's/-[0-9].*//')) sudo yum swap "${packages[@]}" -- "${packages[@]/php55/php56}" ところでyum swapて最近知ったんだけどremove/installするより依存関係の面倒が無くて便利ね。 注意点 /etc/httpd/conf.d/php-conf.5.5.conf は php-conf.5.6.conf に置き換わってるので書き換えしてた場合はこちらの内容確認を忘れないよう注意。 この中で php_value でセッション設定を上書きされててphp.iniの修正が効かねー
去年の11月くらい(?)からスライドシェアでスライドを見終わると「勝手に次のスライドに遷移する」という余計なお世話な超絶にうざい機能が導入されたのだが、いい加減うざすぎるので切れて、寝る前に無効化するChrome拡張書いた。 Chrome拡張 slideshare next-slide disabler 実装は凄いシンプルだけど拡張で簡単導入できたら嬉しい人はいるかと思って公開した。 実装 document_endのタイミングでコレ実行してるだけ。 'use strict'; !function(t){t.parentNode.removeChild(t)}(document.querySelector(".next-container"));
次のページ
このページを最初にブックマークしてみませんか?
『@kawazのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く