サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
racchai.hatenablog.com
どうもこんにちは。racchaiです。 今日は openssl で独自CAを立てるという、あまり需要のない話をします。 環境は ubuntu 14.04 です。 openssl のインストール CAを作る サーバー証明書を作る CSR の作成 CSR に署名し、証明書ファイルを作成する まとめ openssl のインストール なにはともあれ openssl をインストールしないと始まりません。 $ sudo apt-get install openssl 無事インストールできていることを確認します。 $ openssl version OpenSSL 1.0.1f 6 Jan 2014 CAを作る 基本的には openssl に付属する CA.pl を実行するのみで、あとは聞かれたことに答えていくだけの簡単なお仕事です。 $ /usr/lib/ssl/misc/CA.pl -newca C
小ネタですが、初めて知って感動したので共有させてください。 例えば ローカルサーバに本番のドメインでHTTPアクセスしたい DNS を変更する前に変更後のドメインでHTTPアクセスしたい のようなケースですが、通常 hosts ファイルを編集して解決することが多いと思います。 今回はなんと、curl を使って確認する場合に限り、いちいち hosts を編集しなくても名前解決を操作することができるオプションを見つけてしまいました。こちらです。 --resolve <host:port:address> すごい解決してくれそうなオプション名ですね! 使い方はほとんど見たままなのですが、名前解決したいドメイン&ポートと、解決結果として使用するIPを指定するだけです。 例えば www.google.com へのアクセスをローカルアドレスに向ける場合は、以下のように実行します。 $ curl -v
今日は socat コマンドのご紹介です。 表題の通り、コマンドラインだけで簡易プロキシサーバーを立てることができるというものです。 さっそく見ていきましょう。 インストール 起動してみる SSLを試してみる まとめ インストール 今回は ubuntu 環境にインストールします。 $ sudo apt-get install socat これだけで準備OKです。 起動してみる その前に簡単に使い方を説明します。 $ socat <options> <address> <address> 一つ目の address が入力で、二つ目の address が出力と思ってもらえればいいです。 具体的には以下のように指定します。 $ socat tcp-listen:80,reuse,fork tcp-connect:localhost:8080 これだけで80番ポートで待ち受け、8080へ中継する動
django-rest-framework-jwt については以前こちらの記事でご紹介しました。 racchai.hatenablog.com django-rest-framework-jwt では認証APIを標準で用意してくれているので、通常はそれを使うことになります。 ですが、論理削除されたユーザーの場合は認証を失敗させたりだとか、認証処理をカスタマイズしたい場合は自前で認証してアクセストークンを返す処理を用意する必要があります。 本記事では、企業コード/メールアドレス/パスワードにて認証するケースを想定したカスタマイズ方法についてご紹介します。 Django および Django REST framework が初めてという方はこちらをどうぞ! racchai.hatenablog.com racchai.hatenablog.com では、さっそく始めます。 プロジェクトを作成す
Djangoで認証を行ったりした際に得られる User オブジェクトですが、デフォルトのままだと不要なデータが多かったり、必要なフィールドがなかったりします。 そんなときのために、今回はデフォルトのモデルである django.contrib.auth.models.Userをカスタマイズして、新しい User モデルを作成する方法について解説します。 プロジェクトを作成 データベースの設定 RacchaiUserモデルを作成する 動作確認 ユーザー作成 認証 まとめ プロジェクトを作成 お決まりの racchai プロジェクトを作成します。 $ django-admin startproject racchai django のインストールがまだという方はこちらを参考にインストールしておきましょう。 racchai.hatenablog.com プロジェクトが作成できたら、racchai
JWT とは はじめに トークンを取得してみる トークンを使って認証が必要なAPIを実行してみる まとめ JWT とは Json Web Token の略。一言でいってしまうとJSONに署名したもの。こちらの記事で詳しく解説されています。 JSON Web Token の効用 - Qiita はじめに さっそく環境を作っていきます。最初はお決まりのプロジェクト作成です。 詳しい手順と説明はこちらの記事をご参照ください。 racchai.hatenablog.com Lightweight Django 作者: Julia Elman,Mark Lavin出版社/メーカー: O'Reilly Media発売日: 2014/11/04メディア: Kindle版この商品を含むブログを見る ではプロジェクトを作成します。 $ django-admin startproject racchai $
以前こういった記事を投稿しましたが、今回ハマったのも JWT トークンを使ったAjaxリクエストでした。 racchai.hatenablog.com 状況 CORS 問題 プリフライトリクエスト問題 設定見直し Authorization ヘッダー問題 まとめ 状況 簡潔に状況を説明すると、事前に取得しておいた JWT トークンを Authrorization ヘッダーに乗せてリクエストしたものの、なぜかデータが取得できないという現象に遭遇しました。それも iPhone の Safari でしか再現しないというめんどくさい状況でした。 CORS 問題 サーバーのアクセスログを確認すると、どうやらそもそもリクエストがサーバーに届いていないことが判明。そういえばサーバー側で CORS 関連のヘッダーを設定するのを忘れていたことに気付きました。 そういうわけで nginx に add_head
Django REST framework シリーズです。今回はアクセス権のお話をします。 Django REST framework を使ったことがないという方はこちらをどうぞ。 racchai.hatenablog.com はじめに 認証済みの場合のみアクセスさせたい 管理者のみアクセス可能 管理者のみ変更可能でそれ以外は閲覧のみさせたい まとめ はじめに API を実装する上で欠かせないのが、アクセス権の管理ですね。API 毎に実行可能かどうかをチェックする処理を入れるのは大変ですし、対応漏れも起きやすいです。かといって、自前で共通化するのも大変ですね。 Django REST framework では permission という概念でAPI毎にアクセス権を設定できるようになっていますので、本記事ではよくあるアクセス権を例に挙げて実装方法について紹介してみようと思います。 具体的な
VSCodeやTypeScript Playgroundで使われているエディタを部分的に切り出したものが、Monacoとしてリリースされました。 https://microsoft.github.io/monaco-editor/index.html 今回は npm module としての提供となっています。 なにがうれしいのか Monaco の機能 試してみる インストール HTML作成 動作確認 まとめ なにがうれしいのか 百聞は一見に如かずです。こちらをご覧ください。 Monaco Editor Playground これまではこういった開発ツールを作ったり、Atomのような独自のエディタを作る際には一から自分で作る必要がありましたが、今後は Monaco をベースに開発することが可能となります。 あくまでプログラムやマークアップを記述するためのものだと思いますので、ブログ記事を書い
6月といえば、住民税の通知書が届く時期ですね。みなさんはどのように住民税を支払っていますか?やっぱり口座引き落としでしょうか。 確かに口座引き落としにしてしまえば納付を忘れる心配もないし、一度手続きを済ませてしまえばあとは放っておけばいいので楽でいいですよね。住民税の封筒の中に口座引き落としの申請書も同封されているので、反射的に手続きを進めたくなってしまいます。 でもその手続き、ちょっと待った! 住民税の支払いは WAON でしませんか? WAON とは なぜ WAON なのか ポイントが貯まる仕組み イオンカードセレクトとは どれくらい得をするのか WAONのポイントなんていらない!という方は 最後に WAON とは イオンが提供している電子マネーです。他の電子マネーと同様、事前にチャージしておけば買い物の支払いがスムーズに行えます。 なぜ WAON なのか 住民税をはじめ、収納代行は基
Python を初めて間もない頃、自分も print デバッグしてました。効率の悪さを認識しつつも、IDEを導入してデバッグする方法を調べてセッティングして、という手順が面倒でずっと放置してました。 // 普段は vim で開発してます そうこうしてたら print デバッグではどうにもならないバグにぶち当たり、仕方なくデバッグポイントを置く方法を調べたわけです。するとどうでしょう。 ソースコード中に以下の一文を入れるだけではないですか。 import pdb; pdb.set_trace() たったこれだけで、上の一文を挿入した行で処理が停止し、コンソール上でステップ実行が出来るようになります。最高かよ。 個人的にですが、デバッガー起動中によく使うコマンドとしては以下です。 コマンド 説明 s(tep) ステップイン n(ext) ステップオーバー r(eturn) ステップアウト l(
ここまでのお話。 racchai.hatenablog.com 待ちに待った招待メールが届きました。すぐでしたね。 まずは [Bitbucket Pipelines add-on] をインストールする必要があるそうです。 すべてのリポジトリで有効化するなら、チームアカウントではなく自分のアカウントに Grant access せよとのこと。[Select account] をクリックして、そのようにしました。 おお!なにやら有効化されたっぽいですね。さっそく適当にプロジェクトを開いてみると・・ Pipeline リンクが追加されている!クリックしてみると、まずはセットアップせよとのこと。 [Setup up Pipelines] をクリック。 ふむふむ。[Enable pipelines] にチェックをいれてbitbucket-pipelines.yml を配置するだけってことですね。 言
お店 注文 食す 〆る まとめ お店 今回のお店はこちら。先日できたばかりの東京日本橋タワーB1Fにある『ま石』さんです。 店構えが高そうなので軽くひよりました。いや、メニュー見ると実際高いんですが。。 一部の丼メニューだけはぎりぎり手が届きそうだということで、いざ入店! お昼時にもかかわらず、待ちどころか結構空いてました。みなさん敬遠されてるんですかね。 注文 カウンターのど真ん中に通されて着席。メニューは見ません。実質中落ち丼と上海鮮丼の二択です。これ以外は高くてダメ。。 中落ち丼 1,200円(税抜き) 上海鮮丼 1,600円(税抜き) 今回は中落ち丼を注文することに決めてたので、さっそく注文しました。お客さんがほとんどいないこともあり、注文したらすぐ作ってもらえました。 食す はい、どーん。 ぱっと見た感じ、ぜいたく丼っぽくないですか?鯛の切り身(ゴマダレ)もあります。 ぜいたく丼
よく openssl コマンドを使うのですが、なかなか覚えられないのが悩みです。必要になったら都度調べているのですが、効率が悪いのでそろそろ使う頻度が高いコマンドくらいは覚えてやろうと思い、まとめてみることにしました。 サブコマンドの種類を確認 使い方 ca CRL を作成する 証明書を失効させる ciphers サイファースイート一覧を取得 crl CRL の内容を確認 genrsa 秘密鍵を作成(平文) 秘密鍵を作成(パスフレーズ付き) 公開鍵を作成 pkcs12 pkcs12(pfx)形式にする pkcs12形式から秘密鍵を抜き取る pkcs12形式から証明書を抜き取る pkcs12形式からルート証明書を抜き取る req CSR を作成 CSR の内容を確認 rsa 秘密鍵のパスフレーズ解除 秘密鍵の内容を確認 s_client SSL/TLS での動作確認 証明書チェインを確認 v
受託開発の依頼内容を一通り説明された後、こう聞かれる。 『こういう内容だけど、おいくらくらいですか?』 最初の頃はよくこのように聞き返していた。 『逆にいくらくらいが妥当ですかね?w』 知り合いとはいえ、客に価格を決めさせていた。開発期間も感覚で見積もった。それでもきっとうまくいくと思っていた。社会を舐めきっていたのだ。 結果、こういうことになった。お恥ずかしい限りだ。 racchai.hatenablog.com このままではいけない。そう思い、報酬の決定方法を確立することにした。このとき、開業からすでに4ヶ月が経っていた。 報酬額の計算式 見積もる 月単価 まとめ 報酬額の計算式 これは単純に [人月] × [月単価] とすることにした。考えうる最もシンプルな方式だろう。シンプルであればあるほど、説明がしやすいし納得感がある。 それらしい理由を挙げることができたので、これ以外の方法が全
前回日本橋に来たときはつじ半へ行った。運よく10人ほどしか並んでいなかったからだ。詳細はこちらの記事をご覧いただきたい。 racchai.hatenablog.com 今回も一応つじ半をのぞいてみたが、ものすごい行列だったためあきらめた。 その代わり、ずっと気になっていたよもだそばに行くことにした。友人曰く、カレー屋だそうだ。店名に騙されるなとも言われた。いったいどういうことなのか、確かめてくることにした。 着いてみると、なかなかの列ができている。 だが、つじ半の大行列を見てきた私に死角はない。この程度並んでいるうちには入らないのだ。ディズニーランドの行列を見た後ならラーメン屋の行列など一瞬だ。 そう考えて先日東京駅のつけめん屋に並んだら2時間かかった。一瞬かどうかは並ぶ店次第かもしれないと思った。 話を戻そう。 最後尾に並んでから数分のうちに入店できた。立ち食い形式だから回転率も半端ない
これまでなかなか時間が取れなくて後回しにしてましたが、せっかく 1.0 になったので意を決して試してみました。って言ってる間に 1.0.1 出ましたけど。 electron.atom.io Electron とは サンプルを実行してみる タスク管理を作ってみる 配布してみる まとめ Electron とは JavaScript(node.js)でデスクトップアプリケーションを作成するためのプラットフォームで、Windows, Mac, Linux で動作します。 注目したいのが、デスクトップアプリケーションなのに JavaScript, HTML, CSS というWeb技術のみでの開発が可能という点。なぜそんなことが実現できるかといいますと、Chromiumブラウザを組み込んでおり、そいつがレンダリングしているためです。なるほどですね。 Web系の開発者でもデスクトップアプリが手軽に作れる
5/10 には公式発表が出ていましたね。少し気づくのが遅れてしまいましたが、影響が大きそうなので一応共有しておこうと思います。 https://helpx.adobe.com/security/products/flash-player/apsa16-02.html 要約を転機します。 A critical vulnerability (CVE-2016-4117) exists in Adobe Flash Player 21.0.0.226 and earlier versions for Windows, Macintosh, Linux, and Chrome OS. Successful exploitation could cause a crash and potentially allow an attacker to take control of the affecte
サムネイル作成でお馴染みの ImageMagick にリモートコード実行が可能となる脆弱性が見つかったようです。 本脆弱性には ImageMagick という名前が付けられ(ロゴ画像あり)、以下のサイトで再現方法および対策が公開されています。 ImageTragick 本記事では対策についてだけ簡単にまとめておきます。 Verify that all image files begin with the expected "magic bytes" corresponding to the image file types you support before sending them to ImageMagick for processing. (see FAQ for more info) Use a policy file to disable the vulnerable Imag
どうもこんにちは。racchai です。 Nginxの設定が意図通りの動きにならなくていろいろ調査したので、共有したいと思います。 proxy_next_upstream とは 何が問題なのか proxy_request_buffering を無効にしてみる 解決方法 まとめ proxy_next_upstream とは Nginx を複数サーバー分散構成のロードバランサー(リバースプロキシ)として動作させる際に指定するディレクティブです。 バックエンドサーバーとの通信を行い、何が起きたら次のサーバーへリトライするかを定義するというものになります。 例えば、レスポンスが 500 エラーだったら次のサーバーへリトライというような設定をすることが可能です。 何が問題なのか proxy_next_upstream: error という設定に問題がありました。 これはバックエンドサーバーとの通信中
racchai.hatenablog.com 前回の記事では証明書の自動更新についてはさらった触れただけでしたが、もっと情報がほしいという声を受けて少し補足しようと思います。 ドメイン毎に証明書を更新するにはどうしたらいいの? 新規発行したときのオプションを忘れちゃったらどうするの? オプションの指定ミスを防ぎたい まとめ ドメイン毎に証明書を更新するにはどうしたらいいの? 前回のブログでは以下のコマンドで更新する方法を紹介しました。 $ ./letsencrypt-auto renew ですが、このコマンドは常に全ドメインが対象となるため、別々に更新したいケースには対応できません。 個別に更新したいときはどうするかと言いますと、新規発行したときと同じオプションでコマンドを実行すればよいそうです。 つまり、racchai.com だけの証明書を更新したい場合は以下のコマンドをもう一度実行す
こんにちは。racchai です。 先日、巨大な CSV ファイルを mysql にインポートしたいんだけどっていう相談を受けまして まあデータ入れるだけだしと思って深く考えずに引き受けたわけです。 で、さくっと書いたプログラムがどうも1日かかっても終わらない。。 仕方ないのでバルクインサートするように書き換えてみたものの、やっぱり半日くらいかかっちゃう。 「これデータがでか過ぎるんだよね」とか自分のせいじゃないよアピールをしてみたものの、このままでは恥ずかし過ぎる。。 ということで詳しい人に相談してみたところ 「LOAD DATA INFILE 試した?」 って返ってきた。 「あーはいはい、LOAD DATA INFILE ね。知ってた知ってたーそういやまだだったわー忘れてたわー」 と地獄のミサワ風に知らなかったことを誤魔化し、帰宅後光の速さでググりました。 どうやらプログラム書く必要す
こんにちは。racchai です。 Let's Encrypt がベータを卒業するというアナウンスが出ました。 Leaving Beta, New Sponsors - Let's Encrypt - Free SSL/TLS Certificates なにそれおいしいの?という方は公式の説明を読んでいただくとして、使い方を忘れている方向けに、使い方をおさらいしてみます。 letsencrypt をインストールする 証明書を発行する 証明書を自動更新する 4/18 追記 letsencrypt をインストールする 手元の ubuntu マシンにインストールしていきます。 $ git clone https://github.com/letsencrypt/letsencrypt インストールはこれだけです。 ではヘルプを見てみましょう。 $ cd letsencrypt $ ./letse
今回は Django で rest な API を実装するのに超絶便利な Django REST framework を紹介します。 その名の通り、Django で RESTful な API を作るための framework になります。 APIの開発効率が何倍にも上がる代物ですので、ぜひみなさまにも使っていただきたいと思っています。 はじめに 簡単なAPIを作ってみる Serializer を定義する Articleを全件取得する API を作ってみよう API 経由でArticleを作成してみよう Serializer の機能いろいろ 特定のフィールドは出力したくない 外部キー参照先はキー値じゃなくてオブジェクトとして取得したい 外部キー参照先も同時に作成したい まとめ はじめに 前回作成した racchai プロジェクトをベースに進めていきます。 racchai.hatenablo
こんにちは!racchai です。 最近のマイブームは Django です。 本当に便利なのでみんなもっと使った方がいいのに! ということで、簡単に導入方法などを書いていきます。 なお、これから出てくるコマンドおよびコード類は写経してたら5分で終わりませんので、コピペを推奨します。 はじめに Django をインストールしましょう。 pip を使うのが簡単なので、合わせてインストールしちゃいます。 $ easy_install pip $ sudo pip install django プロジェクトを作る 次にプロジェクトを作成するのですが、これは以下のコマンドを実行するだけ。 django-admin コマンドはさきほどの Django のインストールで入ったものです。 $ django-admin startproject racchai たったこれだけでプロジェクトのひな形が自動生成
このページを最初にブックマークしてみませんか?
『racchai.hatenablog.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く