サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ドラクエ3
kotaroito.hatenablog.com
HDDが壊れてデータリカバリーをする羽目になり、だいぶ金銭的にダメージを負ったので、再発防止としてフォトストレージを見直すことにした。 構成 写真整理や共有のしやすさを考えて、Google Photoをプライマリーストレージとし、全ての写真を集約することにした。 人的作業ミス(うっかり全削除など)が発生することを考慮し、Amazon Prime Photoをセカンダリーストレージとしている。 ローカルにも保管しておくが、故障や紛失は発生する前提で。あくまで tmp ディレクトリだと考える。 アップロード 自分が所有するスマホからのアップロードは、Google Photo と Prime Photoのクライアントアプリを入れて自動アップロードにした。 デジカメや家族所有のスマホからのアップロードはMacBookに集約する。 MacBookにはGoogle Backup and Sync と
AWSでシークレットを安全に管理・配備する方法として、AWS KMSについて調査したので、そのメモを残しておきます。 AWS KMS データの暗号化に使用される暗号化キーの作成と管理を容易にするマネージド型サービスで、S3をはじめ様々なAWSサービスと統合されています。 最初の取っ掛かりとして、この記事が分かりやすいです。 dev.classmethod.jp AWS KMS + S3 Amazon Simple Storage Service (Amazon S3) で AWS KMS を使用する方法 に記載の通り、S3で AWS KMS を使用する方法は、「サーバー側の暗号化: SSE-KMS の使用」「Amazon S3 暗号化クライアントの使用」の2通りあります。それぞれ具体的な方法を見ていきたいと思います。 サーバー側の暗号化: SSE-KMS の使用 AWS SDK, AWS-
I/Oを確認する方法をメモっておく。 リアルタイム sudo iotop または dstat --top-bio --top-io あとから sar -Bb -f /var/log/sa/sa28 -s '13:00:00' -e '16:00:00'
gRPCについては以前から興味があっていくつか記事を斜め読みしてましたが、結局自分で動かしてみないと分からないため、Rubyで動かしてみようと思います。 gRPCとは? Googleの内部で使われていたRPCで、メッセージのシリアライズ方式としてProtocol Bufferを使う。HTTP/2ベース。 Client / Server の内部実装を問わないので、gRPC ServerをGoで書いて、Rubyから使うといったことが可能。 より詳しい説明は公式のWhat is gRPC?を見るべし。 Quick Start gRPCがオフィシャルにRubyによるQuick Startを提供しているので、まずはここから始めました。 お約束のHello Worldです。 grpc.io .proto ファイルにserviceを定義し、grpc_tools_ruby_protoc コマンドでRuby
既に語り尽くされてそうな話ではありますが、自分なりにまとめないとアタマに入らないのでドキュメントの整理も兼ねて、ポイントをまとめてみます。 BigQueryとは何か? Google Cloud Platformでは、"BigQuery is Google's fully managed, petabyte scale, low cost analytics data warehouse." と紹介されており、主要なユースケースとして、大規模データに対するアドホックで試行錯誤を要するインタラクティブなクエリが想定されています。 Technical White Paper: An Inside Look at Google BigQueryに書かれているケースがより具体的です。 Can you imagine how Google handles this kind of Big Data d
GCP BigQueryやAWS Athenaを実際に触る機会が欲しかったので、RailsのログをfluentdでBigQueryやS3に取り込んでみます。 とりあえず触ることが目的で、実用できるかはとりあえず脇においておきます。 なお、fluentd(td-agent)はOS Xに0.14.21 をインストールしています。 Rails fluent logger Railsのログはデフォルトでは log ディレクトリに出力されるため、これをfluentdで扱えるようにする必要があります。 ドキュメント Collecting and Analyzing Ruby on Rails Logs | Fluentd に従って、lograge と act-fluent-logger-rails を使ってみます。 ほぼドキュメント通りですが、以下のように設定しました。 config/applicat
よく見かけるAction Mailer のサンプルはこんな感じだと思います。 mail from: 'noreply@example.com', to: 'foobar@example.com', subject: 'Hi' このケースでは差出人は noreply@example.com となるんですが、時にサービス名などを設定したくなることもあると思います。 今回はActionMailerでどうやるといいの? って話です。 ドキュメント まずはrails/actionmailer at master · rails/rails · GitHubを探しますが、特に方法は書かれていません。 ActionMailerはMailのラッパーなので、GitHub - mikel/mail: A Really Ruby Mail Libraryに目を通すと、それらしきサンプルが見つかります。 mail
staticについては Practical Programming in C - Lec01 で少しだけ書いたけど、おさらいしてみる。 static宣言 使い方は2通り。1つは外部変数や関数のスコープをそのファイルのみに閉じること。もう1つは関数の内部変数に適用し、静的領域にメモリを確保すること。*1 外部変数や関数への適用 まずは関数への適用例を示す。 static.h static int square(int n); static.c static int square(int n) { return n * n; } main.c #include "static.h" int main(void) { square(100); return 0; } これらをコンパイルするとエラーになるので、確かに関数のスコープを限定できてることがわかる。 $ gcc static.c main
TL;DR Unicornをpreload_app=falseで運用してる場合は、 before_exec do |server| ENV["BUNDLE_GEMFILE"] = File.join(project_home, "Gemfile") end の設定をした上で、SIGUSR2 を使いましょう。 capistrano3-unicornを利用しているなら、下記の通りです。 after 'deploy:publishing', 'deploy:restart' namespace :deploy do task :restart do invoke 'unicorn:restart' end end 発生していた問題 新しいgemをGemfileに追加してcapistranoでデプロイするも、なぜか新しいgemを認識してくれない。 ## unicorn.log E, [2016-0
クリックジャッキングとX-Frame-Optionsについて調べたことをまとめます。 クリックジャッキング クリックジャッキング攻撃とは、ユーザを視覚的にだまして正常に見えるウェブページ上のコンテンツをクリックさせ、別のウェブページのコンテンツをクリックさせる攻撃のことである。その結果、ユーザが公開するつもりのないプライバシー情報を公開させられたり、意図しない情報を登録させられたりするなどの被害を受ける可能性がある。 出典: クリックジャッキング - IPA 独立行政法人 情報処理推進機構 PDF 悪意あるサイトはiframe を透明化して、攻撃対象のサイトを読み込みます。 X-Frame-Options レスポンスヘッダを設定することで、対策をすることができます。 X-Frame-Options 3種類の値を設定することができます。 DENY サイト側の意図に関わらず、ページをフレーム内
ES6 + React + Redux + webpack なフロントエンド環境を構築するためのメモ。 packages.json npm install --save react react-dom react-redux npm install --save-dev babel-loader babel-core babel-preset-es2015 babel-preset-react npm install --save-dev webpack webpack-dev-server react-hot-loader npm install --save-dev eslint eslint-plugin-react eslint-plugin-import { "name": "my-env", "version": "1.0.0", "description": "", "scr
Bundlerの仕組みを十分に理解しているとは言い難かったので、深堀りしてみたい。 Bundler.setup http://bundler.io/bundler_setup.html Configure the load path so all dependencies in your Gemfile can be required まず最初にやるべきは依存関係にある全てのgemのロードパスを解決すること。Bundler.setupはまさにこの役割を担う。 少しコードを追って見る。 https://github.com/bundler/bundler/blob/v1.9.2/lib/bundler.rb#L114-L139 def setup(*groups) # Just return if all groups are already loaded return @setup if
sysvinit, upstart, systemd, update-rc.d, insserv の関係性・歴史的背景がよくわからなくていろいろ調べたので、メモしておく。 基礎知識 sysvinit とは? sysvinitはSystemV initの略で,UNIX SystemV(システムファイブ)と呼ばれるAT&T社謹製の古典的なUNIXが採用した起動メカニズムと同じ動作をするように設計されたソフトウェアです。 出典: http://gihyo.jp/dev/serial/01/sc-literacy/0013 upstart とは? Upstart is an event-based replacement for the /sbin/init daemon which handles starting of tasks and services during boot, stopp
「:」付き要素を生成したり、キャッシュを使ったり、アレコレ調べて苦労したので、自分用メモとして残しておく。 # feed.rss.builder xml.instruct! xml.rss version: "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/" do xml.channel do xml.title @site_title xml.description @site_description xml.link @site_url @entries.each do |entry| xml.item do xml.title entry.title xml.description entry.description xml.pubDate entry.created_at.to_s(:rfc822) xml.link en
ActiveRecord における DB との接続確立方法をきちんと理解できてなかったので、pry-byebug を使いながらコードを読み解いてみる。 Railsのversion は 4.2.0 という前提で。 establish_connection blog.livedoor.jp sonots さん解説の通り、Rails を起動すると establish_connection メソッドが呼び出される。 # lib/active_record/connection_handling.rb def establish_connection(spec = nil) spec ||= DEFAULT_ENV.call.to_sym resolver = ConnectionAdapters::ConnectionSpecification::Resolver.new configuratio
autoload_paths について、きちんと調べてみました。 とは言うものの、Autoloading and Reloading Constants — Ruby on Rails Guides にほぼ知りたいことは書かれていたので、重要なポイントを抜粋しておきます。訳は適当です。 autoload_paths の デフォルト require 'erb' Ruby looks for the file in the directories listed in $LOAD_PATH. That is, Ruby iterates over all its directories and for each one of them checks whether they have a file called "erb.rb", or "erb.so", or "erb.o", or "erb
同時に複数プロセスから書き込むとファイルが壊れるというが、壊れるというのはどういうことか。 出典: Advanced Programing in the Unix Environment - Figure3.7 異なるプロセスから同じファイルをopenすると、異なるfile tableエントリー(current file offsetを保持する)が生成される、というのがUNIXにおける仕様とのこと。 #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <string.h> #include "error.h" #define BUFFSIZE 4096 int main(int argc, char* argv[]) { int fd; char buff[BUFFSIZE]; int i; fd = ope
だいぶ前ですが、Rails の config/database.yml で collation を指定し忘れて、全てのテーブルが utf8_unicode_ci になってしまいアタマを抱えるという事件がありました。 なぜこれで困るのかについては、 qiita.com が詳しいです。 対処としては愚直に ALTER TABLE をするしかないですが、そのbashコマンドをメモっておきます。 (tmp/tablesには テーブル名がリストされてます) for t in `cat tmp/tables`; do echo "ALTER TABLE $t CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;"; done > tmp/alter_table.sql for t in `cat tmp/tables`; do mysql -ur
一度きちんと整理しておきたし。 オリジンとは URLのscheme, host, portによって定義される。以下、いずれも違うオリジンになる。 http://example.com https://example.com http://sub.example.com http://example.com:8080 同一生成元ポリシー 英語で言うと、Same Origin Policy。 http://www.w3.org/Security/wiki/Same_Origin_Policy を読むと、いきなり"There is no single same-origin policy." と書かれている。。。が、一般原則はある。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Same_origin_policy_for_JavaSc
本日は、MIT Open CoursewareのLecture14で、socket(2), bind(2), listen(2), accept(2)など。 アレコレ参考にしながら、最もシンプルなサーバとクライアントを書いてみた。 サーバ クライアント socket(2) #include <sys/socket.h> int socket(int domain, int type, int protocol); 通信のためのエンドポイントを作成し、ディスクリプター(descriptor)を返す。 typeはAF_INETならIPv4 インターネット・プロトコルで、AF_UNIXはローカル通信(UNIXドメインソケット)を指す。 socketの戻り値はfile descriptorになるが、確認してみるとsocketになってるのがわかる。 [vagrant@localhost ~]$ ls
PlantUMLは UMLを描くためのJava製オープンソースツール です。 インストール Mac OSには標準でjavaが入ってるはずなので、jarをダウンロードしてくるだけでok。 jarはhttp://sourceforge.net/projects/plantuml/files/plantuml.jar/download からダウンロードして、適当なディレクトリにおけばよい。 クラス図などを描くにはGraphVizが必要なので、こちらもインストールしておく。homebrewがあれば簡単。 $ brew install graphviz シーケンス図を書いてみる @startuml Alice -> Bob: test @enduml とsample.umlに書いて $ java -jar plantuml.jar sample.uml と実行するだけでシーケンス図が出力される。 ま
いつまで経ってもDBIの使い方が覚えられない..(特にselectall_arrrayrefとか)。この機にちゃんとアタマを整理して身につけちゃいたい。 例によってMySQLのサンプルデータ使ってやってみる。まずは準備から。 #!/usr/bin/perl use strict; use warnings; use DBI; use Data::Dumper; my $dbh = DBI->connect( 'dbi:mysql:world', 'mysql', undef, +{RaiseError=>1} ); my $stmt = q{ select ID, Name, CountryCode, District, Population from City limit 3 }; selectall_arrayref まずはこれを試してみます。 print Dumper $dbh->s
いわゆるNoSQLがRDBMSを完全に駆逐することはたぶんないと思うけど、NoSQLの登場によってMySQLでは実現し難かった機能がつくれるんじゃないか、と思う今日このごろ。なのでNoSQLプロダクトは1つずつ触ってみて、特徴を把握することが大事だと思ってる。ということでまずはRedis。 インストール MacBook Airにインストールなので、Homebrewで。 $ brew install redis あとはインストール後に案内された通りに、下記コマンド実行すればセットアップ完了。 $ mkdir -p ~/Library/LaunchAgents $ cp /usr/local/Cellar/redis/2.4.8/homebrew.mxcl.redis.plist ~/Library/LaunchAgents/ $ launchctl load -w ~/Library/Lau
Perl Hackers Hub 第6回 UNIXプログラミングの勘所(2)を読んでいたがよくわからなかったので、Operating System ConceptsやMANなどを読んで一から理解してみる。 Operating System Concepts 作者: Abraham Silberschatz出版社/メーカー: John Wiley & Sons Ltd発売日: 2009/02/13メディア: ペーパーバック購入: 1人 クリック: 39回この商品を含むブログ (4件) を見る open()システムコール The open() system call first searches the system-wide open-file table to see if the file is already in use by another process. If it is, a
MySQL Casual Advent Calendar 2011の13日目を担当するkotaroitoです。どうぞよろしくお願いします。 普段は、Opsの方々が用意してくれたMySQLを使うのみ、Explainの読み方はわかるけどサーバの設定無理、というまさにCasualユーザです。勢いに任せてMySQL Casual Advent Calendarの参加ボタンをポチったものの、紹介できるほどのネタもない...。 ここは開き直って、自分がやりたいことをやろう、ということで「HandlerSocketをインストールして、触ってみる」というテーマで書いてみようと思います。 2日目のxaicronさんとかぶってるけど、OS違うので許してください。 HandlerSocketとは? 恐れ多くて語れないので、DeNAのEngineer Blogからそのまま引用しちゃいます! MySQLデータベース
mod_fcgidとmod_fastcgiは別物という事実にショックを受けつつ、気を取り直してmod_fastcgiをインストールしてみる。 環境 OS: CentOS 5.4 Apache: 2.2.3 インストール 既にyumからapacheをinstallしているので、DSOでインストールする。 ちなみにDSOはDynamic Shared Objectの略で、実行時にLoadModuleディレクティブで読み込めるApacheモジュールのこと。そしてapxsはAPache eXtenSion toolのことである。 wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.6.tar.gz tar zxfv mod_fastcgi-2.4.6.tar.gz cd mod_fastcgi-2.4.6 apache 1.3なら以下でOKらしいが、a
li要素をタップしたら、ほげほげ(アラート出す、ハイライトする、etc)させたかったのでonclickを使ってたんだが、どうも動きがもっさり。ググってみるとこんな記事が。 Remove onClick delay on webkit for iPhone Developing on the webkit for iPhone I encountered a curious delay on onClick events. It seems that the click is triggered with about 300 milliseconds delay. While this is unnoticeable on a standard web page, it can be annoying on a web application. Fortunately the click e
memcachedを本格的に使う必要に迫られたので、ここでちゃんと理解しておくべく色々調べた。 memcachedとは? 本家サイトのイントロダクションから抜粋 Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load. Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, A
CGI/FastCGIの仕組みがわかり、ようやくPlackにチャレンジ。 インストール これでPlack関連のモジュールをまとめてinstallできる。 cpanm Task::Plack Hello PSGI! まずはPSGIの基本形をやろう、ということで以下のコードリファレンスをhello.psgiとして保存。 use strict; my $app = sub { my $env = shift; return [ 200, [ 'Content-Type' => 'text/plain' ], [ "Hello PSGI!" ], ]; }; これをplackupすると、PSGIアプリケーションが起動する。HTTPサーバは指定してないのでHTTP::Server::PSGIが自動的に選ばれた。 kotaro@mdev1:~> plackup psgi/hello.psgi HTTP
次のページ
このページを最初にブックマークしてみませんか?
『kotaroito's notes』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く