サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
円安とは
kotaroito.hatenablog.com
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
いわゆる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
MySQL Casual Advent Calendar 2011の13日目を担当するkotaroitoです。どうぞよろしくお願いします。 普段は、Opsの方々が用意してくれたMySQLを使うのみ、Explainの読み方はわかるけどサーバの設定無理、というまさにCasualユーザです。勢いに任せてMySQL Casual Advent Calendarの参加ボタンをポチったものの、紹介できるほどのネタもない...。 ここは開き直って、自分がやりたいことをやろう、ということで「HandlerSocketをインストールして、触ってみる」というテーマで書いてみようと思います。 2日目のxaicronさんとかぶってるけど、OS違うので許してください。 HandlerSocketとは? 恐れ多くて語れないので、DeNAのEngineer Blogからそのまま引用しちゃいます! MySQLデータベース
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
アイドル状態(最後の実行から何もしていない)がN秒続くとMySQLが勝手に接続を切るらしい。 このN秒を設定するのがwait_timeoutである。 まず、デフォルト設定を確認してみる。 mysql -uroot -e'show variables' | egrep '(wait)'; -------- wait_timeout 28800 ということで、28800秒=8時間がデフォルトの模様。 http://dev.mysql.com/doc/refman/4.1/ja/gone-away.htmlにも書いてある。 次にwait_timeoutを10秒に変更してみる。 /etc/my.cnfに以下を追加。 [mysqld] wait_timeout=10 これで準備はOKなので、テストしてみる。 my $dbh = &get_handle my $sth = $dbh->prepare(
I/Oを確認する方法をメモっておく。 リアルタイム sudo iotop または dstat --top-bio --top-io あとから sar -Bb -f /var/log/sa/sa28 -s '13:00:00' -e '16:00:00'
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
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
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
既に語り尽くされてそうな話ではありますが、自分なりにまとめないとアタマに入らないのでドキュメントの整理も兼ねて、ポイントをまとめてみます。 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
よく見かける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
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
cpanmがイイ!という話をいくつかの記事で目にしたので試してみたい。 cpanmをインストール wget http://cpanmin.us/ chmod +x cpanm perl cpanm -l ~/perl5 App::cpanminus 簡単すぎ! 設定 まずはCPANの設定が必要。これはcpanシェル起動して適当に答えておく。 次にcpanmで必要な環境変数の設定。とりあえず、以下を.bashrcに。 export PERL_CPANM_OPT="--local-lib=~/perl5" export PERL5LIB="/home/kotaro/perl5/lib/perl5/i386-linux-thread-multi:/home/kotaro/perl5/lib/perl5" export PATH="/home/kotaro/perl5/bin:$PATH" .ba
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
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 と実行するだけでシーケンス図が出力される。 ま
distinct 指定した列の重複を除くキーワード。データの並べ替えが必要なので遅いらしい。 30万レコードくらいのデータで試してみる。 select distinct user_id, content from data; 299990 rows in set (7.82 sec) select user_id, content from data; 300000 rows in set (1.21 sec) 必要なときだけ理解して使いなさいとのこと(by 初めてのSQL) whereとhaving where節にはデータベースのデータに適用されるフィルタを、havingには集約されたデータに適用されるフィルタを記述する。whereはグループ化の前に評価される。 select user_id, count(user_id) as count from oneword_data where
Hadoopの設定するために必要っぽいのでやってみたところ、ちょっとハマったのでメモ。 同じマシンへのsshなのでセキュリティは問題ない。(本番系でも踏み台サーバが堅ければ、やっても大丈夫そうだがこのあたりはいまいち自信なし) 1.秘密鍵と公開鍵作成 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 2.リモートに公開鍵登録 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys リモートと言いつつ、同一マシンだけども。 3.パーミッションを設定 chmod 700 ~/.ssh chmod 600 ~/.ssh/id_dsa 4.確認 ssh localhost パスワードなしでログインできた!
CPU使用率降順 ps auxw | sort -k3 -nr メモリ使用率降順 ps auxw | sort -k4 -nr
Perlベストプラクティス 作者: Damian Conway,クイープ出版社/メーカー: オライリー・ジャパン発売日: 2006/08/24メディア: 大型本購入: 10人 クリック: 140回この商品を含むブログ (151件) を見るを読んで初めて知ったこと、役に立つと思ったことをまとめてみる。 第5章:変数 5.8 $_の変更に注意 $_は言うに及ばずだが、myにも注意。実はエイリアス。 my @list = (1..5); for my $i (@list) { $i = 1; } printf("%s\n", join q{,}, @list); #1,1,1,1,1 第6章:制御構造 リストの生成 forではなくmapを使う 可読性が高くなる # OK @double_vals = map { $_ * 2 } (1..5); # NG @double_vals = (); f
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
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
Class::DBIに引き続き、温故知新な感じです。Template-Toolkitを使ったことがないのはperlのレベルアップを目指す者としてまずかろうということで触ってみました。 Web+DB Pressのvol9のPerlStyleに出てくるコードを参考にしてます。 WEB+DB PRESS Vol.9 作者: WEB+DB PRESS編集部出版社/メーカー: 技術評論社発売日: 2002/06/24メディア: ムック クリック: 2回この商品を含むブログ (2件) を見る tt.pl #!/usr/local/bin/perl use strict; use DBI; use Template; my $dbh = DBI->connect('dbi:mysql:world', 'mysql', undef, +{ RaiseError => 1, AutoCommit => 0
だいぶ前ですが、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
「:」付き要素を生成したり、キャッシュを使ったり、アレコレ調べて苦労したので、自分用メモとして残しておく。 # 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
いつまで経っても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
同時に複数プロセスから書き込むとファイルが壊れるというが、壊れるというのはどういうことか。 出典: 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
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
HDDが壊れてデータリカバリーをする羽目になり、だいぶ金銭的にダメージを負ったので、再発防止としてフォトストレージを見直すことにした。 構成 写真整理や共有のしやすさを考えて、Google Photoをプライマリーストレージとし、全ての写真を集約することにした。 人的作業ミス(うっかり全削除など)が発生することを考慮し、Amazon Prime Photoをセカンダリーストレージとしている。 ローカルにも保管しておくが、故障や紛失は発生する前提で。あくまで tmp ディレクトリだと考える。 アップロード 自分が所有するスマホからのアップロードは、Google Photo と Prime Photoのクライアントアプリを入れて自動アップロードにした。 デジカメや家族所有のスマホからのアップロードはMacBookに集約する。 MacBookにはGoogle Backup and Sync と
クリックジャッキングとX-Frame-Optionsについて調べたことをまとめます。 クリックジャッキング クリックジャッキング攻撃とは、ユーザを視覚的にだまして正常に見えるウェブページ上のコンテンツをクリックさせ、別のウェブページのコンテンツをクリックさせる攻撃のことである。その結果、ユーザが公開するつもりのないプライバシー情報を公開させられたり、意図しない情報を登録させられたりするなどの被害を受ける可能性がある。 出典: クリックジャッキング - IPA 独立行政法人 情報処理推進機構 PDF 悪意あるサイトはiframe を透明化して、攻撃対象のサイトを読み込みます。 X-Frame-Options レスポンスヘッダを設定することで、対策をすることができます。 X-Frame-Options 3種類の値を設定することができます。 DENY サイト側の意図に関わらず、ページをフレーム内
次のページ
このページを最初にブックマークしてみませんか?
『kotaroito's notes』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く