サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
kanonji.info
UMLとかER図とか、必要なのは分かってたけど図を書くのは面倒でちょっと敬遠してました。 でも最近その必要性が自分の中で高まってたので、段々と書かざるを得なくなってきています。 ただ、マウスを使って図を描いたり、要素が増えてドラッグしてレイアウトしたりとかがやっぱり面倒で、テキストで書けるPlantUMLなんかを少し使っています。 PlantUMLは完成度も高く、最近はDocBase.ioやesa.ioなんかでも対応してたりと、流行ってる感じもしてます。 でも、名前の通り基本的にはUMLなので、ER図なんかは得意じゃ無いです。 クラス図を流用してなんとなくそれっぽいのは出来るかもだけど。 そこで、他にも無いかなと思って探して見つけた、テキストで図が書けるツールを並べておきます。 まだ全部試すまでは出来てないので、評価や紹介というレベルにはなってません。 UML PlantUML UML図を
harksys/npmvet: A simple CLI tool for vetting npm package versions JavaScriptのパッケージマネージャーnpmの、インストール済みパッケージのバージョンと package.json に書いてあるパッケージのバージョンを、見比べるコマンド npmvet を試してみました。 もちろん npmvet もnpmパッケージです。 インストール済みパッケージのバージョンだけなら npm list --depth=0 で見られます。インストール済みパッケージより新しいバージョンがあるかどうかなら npm outdated で出るけど、更新がないパッケージは表示されない。という感じで、どちらもちょっと使いにくかったので、 npmvet が見たいとこをちゃんと見せてくれて良さそうです。 実行結果 $ npmvet ╔════════
毎回忘れてしまって時間を無駄に食ってしまうので、PHPのちょっとしたライブラリを作る時の、主にComposerとPHPUnitの設定と、ディレクトリ構成なんかを、まとめておきます。 つい先日作った kanonji/php-array-looper の構成を例に使います。 ディレクトリ構成 $ tree -L 1 . ├── .editorconfig ├── .gitignore ├── .travis.yml ├── README.md ├── composer.json ├── composer.lock ├── phpunit.xml # PHPUnitの設定ファイル ├── src # ライブラリのコード ├── tests # 自分で書いたテストコード └── vendor # Composer installしたパッケージが入っている ほぼ最小限でこれだけです。 compose
Syncthing オープンソースでサーバーを用意しなくても、Dropboxのような使い方でファイル同期が出来るツールです。 中央サーバーが無いので、Dropboxのクローンとは言えないけど、指定のフォルダにファイルを置くと、そのうち同期されてるという使い方は、とても似てます。 Dropboxも便利だけど、割と大きいファイルを同期する時とか、ちゃんと計った訳じゃないけど遅い気がしてて、容量の上限とかもあるし、その辺を気にしなくても良いものを探してて見つけました。 同じく計ってないので体感だしたまたまだったかもだけど、大きいファイルの同期速度も早いと感じました。 その時は、ローカルネットワークだったからかもだけど。 特徴 オープンソース マルチプラットフォーム(Win/Linux/Mac/Android) 中央サーバー無し ユーザー登録無し GUI無しの運用も可能 細かい設定が出来る
javascript:!function(){var a=document.getElementsByTagName("body")[0],b=a.parentNode;b.removeChild(a),b.appendChild(a.cloneNode(!0))}(); EventListener削除 <- bookmarklet JavaScriptでの右クリック禁止を解除する | kanonjiのブログ ペースト禁止を解除する雑なbookmarklet(2) | kanonjiのブログ 今まで右クリック禁止の解除、ペースト禁止の解除なんかを必要に迫られてやったりしたけど、実はこれらの解除方法は完璧じゃないです。 右クリック禁止の解除は、HTML属性のイベントを消してるだけなので、EventListenerを使っての禁止だと解除出来ないし、ペースト禁止の解除も、一応jQueryによるペ
javascript:!function(){var a=document,b=["userSelect","khtmlUserSelect","MozUserSelect","MsUserSelect","WebkitUserSelect"];Array.prototype.forEach.call(a.all,function(a){a.style&&b.forEach(function(b){a.style[b]="auto"}),a.onmousedown=a.onmousemove=a.onmouseup=a.onselectstart=""}),a.onmousedown=a.onmousemove=a.onmouseup=a.onselectstart=a.oncontextmenu=a.body.oncontextmenu=""}(); 右クリック、テキスト選択解放 <-
PSR-4 Improved Autoloadingという、PHPのオートロードの勧告を全然知らなかったので調べてみました。 オートロードの勧告といえばPSR-0 Autoloading Standardだと思ってたんだけど、いつの間にか非推奨となり、PSR-4に置き換わってました。 PSR-4 — Autoloader guttally.net :: PSR-4 (日本語版) 規格とかなんか小難しそうだなと思ってたけど、見てみたらすごい短かったです。 ただ、短いとはいえ、PSR-4とPSR-0を比較して、違いを網羅的に間違いなく説明出来る自信も無いので、自分の書きたい事だけ書きます。 完全修飾クラス名(fully qualified class name)の構成 \<NamespaceName>(\<SubNamespaceNames>)*\<ClassName> 完全修飾クラス名は
$ php -r 'var_dump((array)"foo");' array(1) { [0] => string(3) "foo" } 見ての通り、 'foo' を配列にキャストすると ['foo'] が得られます。 ちょっとした小技すぎるけど、CakePHP3のコードを見れる時にみつけて、初めて知ったので書いておきます。 使用例 /** * @param string|array $list 文字列か添字配列 */ function foo($list){ if (is_string($value)) $list = [$list]; foreach($list as $value){ //Do something } } 配列を受けて処理する関数だけど、要素が1個の時は文字列をそのまま渡しても動くようにしたい時、こういう事をすると思います。 /** * @param strin
YAPC::Asia Tokyo 2015のElectron: Building desktop apps with web technologies – YAPC::Asia Tokyo 2015を聴いて、Electronに興味が出てきたので、サンプルアプリケーションを作って起動するまでやってみました。 とりあえず、ウィンドウのあるアプリケーションと、メニューバーにアイコンをだしてクリックするとウィンドウが出るアプリケーションが、すごい簡単にできました。 アプリケーションといっても、ウィンドウが出ただけですが。 electron-starter -> electron-prebuilt THIS REPO IS DEPRECATED This repo represents the "old way" of creating and publishing Electron applic
Mac OS XはもうEl Capitanが出てるけどYosemiteでの話です。 数ヶ月前にYosemiteのMacを使う様になって、いつものようにVimを使ってたら、Vim が不意に落ちる様になってしまいました。 $ vi config/Migrations/20151013* -o 11 files to edit Vim: Caught deadly signal ABRT Vim: Finished. Abort trap: 6 タイミングとしてはsplitで複数ファイルを開いてる時:qで閉じたタイミングで、落ちる事があるとう感じです。 閉じる時に必ず落ちるというわけじゃないのが、切り分けが出来なくてややこしい所です。 使ってるプラグインの何かが、悪さをしてるのかもだけど、プラグインのバージョンは最新にしてもダメで、仮に特定できたとしても、そのプラグインが使えないと困りま
$ rsync --version rsync version 2.6.9 protocol version 29 [snip] $ brew info rsync Error: No available formula for rsync http://kanonji.info/blog/2013/08/19/grunt-rsyncとgrunt-watchを使って開発サーバーをローカルと同期/で設定したgruntのタスクで同期してるけど、最近rsyncが同期を終えるまで待つのが辛くなってきました。 Mac OS Xに最初から入ってるrsyncのバージョンが2.6.9で、どうやら3系だと早いらしいので、Homebrewからrsyncの新しいのを入れようとしたら、なんかありません。 Homebrew Dupes $ brew search rsync grsync librsync hom
Sassがあって、Compassが出てきたんだと思うけど、自分が触り始めたのは2013年からで、もうSassを使うならCompassでって感じになってたと思います。 既にCompassが採用されてるプロジェクトで使い始めたので、細かい事は置いといてcompass watchしたら動いてるという、動いてるからこれで良いっぽいという手探りな使い方をしてます。 ただ、Sassはhttp://sass-lang.com/でsassというコマンドもあるのに、なんでサイトも別にhttp://compass-style.org/にあるCompassを使うのか、SassとCompassってどういう関係なのか、ちょっともやっとしてました。 なので、今更ながら、SassとCompassはどう違うのかを、これまた手探りで調べてみました。 今回色々調べて、SassとCompassの立ち位置が分かった気になっ
Kitematic Kitematic(説明動画によると「カイトマティック」と発音するようです)はMacOSで簡単にDockerを導入、操作できるツールです。 KitematicはDockerの実行環境となる仮想マシンのVirtualBoxとLinuxをMacOS上へ自動的にインストールし、GUIからDocker Engineのコンテナで起動するアプリケーションの一覧をDocker Hubから取得して一覧表示、クリックすればすぐにDocker上でアプリケーションを起動できるというもの。 DockerをGUIで簡単利用できるKitematic、Dockerが買収。Windows版が5月か6月に登場予定 - Publickey 自分で書くより確実に分かりやすい、端的な説明があったので引用で。 ページのタイトル通り、Dockerに買収されて、Windows版も出る様ですが、今の所はMac
エリック・エヴァンスのドメイン駆動設計 ソフトウェアの核心にある複雑さに立ち向かう(Eric Evans 牧野祐子 和智右桂 今関剛) | 翔泳社の本 去年の秋ぐらいから設計に悩む事があり、エリック・エヴァンスのドメイン駆動設計、いわゆるDDD本を買ってました。 なかなか通しで読む時間が取れず、気になる所をつまんで読んでたので、ちゃんと理解出来てないなと思っていた所、読書会をすると言う知り合いが居たので混ぜてもらいました。 折角なので記憶に新しいうちにメモして置こうと思って書いてるけど、理解がふんわりしてるまま、もしくは勘違いしたまま書いてる可能性もあります。 あと、議事録ではないので、あくまで読書会で話した結果、自分が思った事を書いています。 なんか書いてたらすごく長くなっちゃったけど、次回以降もこんなに書けるか分かりません。 今回読んだ範囲 まえがき 第1章 知識をかみ砕く 第2章
現時点で最新のFuelPHP 1.7.2にはBootstrap 3.0.0が組み込まれてます。 Bootstrapの方は現時点で3.3.2が最新で、さすがに3.0.0は古いし、実際にバグで表示が崩れたりスタイルが反映されない事もたまにあるので、最新のBootstrapを入れ直す事にしました。 ついでに、Bootstrapに手を入れたくなる事を考えて、Sass版を入れてCompassでコンパイル出来るようにします。 あとFont Awesomeも。 方針 Bootstrap Sass, Compass, Font AwesomeはBundlerを使って入れる。 Compassはともかく、Bootstrap SassとFont Awesomeはいろんな入れ方があるというか、インストールに使ったパッケージマネージャーや、FuelPHPみたくテーマ/テンプレートに組み込まれてたりするなど、場
サブクエリーはなるべく書かなくて済む様にと考えてたけど、どうしても使いたいところが出てきました。 FuelPHPでサブクエリーの方法を調べると、DB::query()でSQLをベタ書きするか、DB::expr()でサブクエリー部分だけはベタ書きする方法しか見つからず、それだとクエリービルダーを使ってる意味が無い様な気がして、公式ドキュメントを見てみたら、今度は良いのが見つかりました。 クエリービルダーからSQL文字列を得る Query Builder Select – クラス – FuelPHP ドキュメント $sql_str = DB::select()->from('examples')->where('foo', $foo)->compile(); execute()の代わりにcompile()すると、実行せずにSQLを文字列で返してくれます。 public function co
App::uses()って何となく使っていて、何がどうなっているのかよく知らなかったので調べました。調べたのは結構前だけど。 App::uses()周りの処理の流れ App::uses()で使いたいクラスを登録する。ここでは読み込みはせずAppクラス内の連想配列に入れるだけ。 new Foo()で未定義のFooクラスを使おうとする。 __autoload()の実装として設定されたApp::load()が呼ばれ、App::uses()で登録したクラスをincludeする コードで見る public static function uses($className, $location) { self::$_classMap[$className] = $location; } https://github.com/cakephp/cakephp/blob/2.4.3/lib/Cake/Core
AWSのサーバーを使うようになって、あまり気にしてなかったMySQLのタイムゾーンが気になるようになってきました。 というのも、今やってるプロジェクトでは、AWSのインスタンスに入れたOS(Linux)のタイムゾーンは、UTCのままにしておく事に決まっていて、そうするとMySQLのタイムゾーンもUTCのままの方が良さそう。もしかしたらタイムゾーンの変更が出来ないAmazon RDSのMySQLを使うかもしれないし。 なので、ちょっとMySQLのタイムゾーンがUTCだとどうなるか、調べてみました。 Amazon RDS for MySQLでタイムゾーンを設定するのはやめたほうがいいかもしれない – Qiita ちなみに、Amazon RDS(MySQL)のタイムゾーンの変更は、一応いくつか方法があるみたいだけど、トラブルの元にもなるみたいなので、UTCのままで使う方を検討した方が良さそう
まず前提となる環境はこんな感じです。 コード内というのは、例えばイベント用のページを作った時、指定の日時まではアクセス出来ないようにする用な事を、まぁコードにハードコードする際に、OSがUTCだとしても日本時間で書きたいという事。 # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. config.time_zone = 'Tokyo' rails_project_dir/config/application.rb デフォルトから上記だけ設定を変更する。 Timeは使わずにActiv
最近Ruby on Railsを使い始める事になり、RailsとRubyを覚えるのに四苦八苦してます。知らない事ばっかりなので全部ブログに書きたいけど、全然その余裕がなくって書けてません。 RubyもRailsも触れ始めの事はだんだんと忘れていくし、このままだと何も書けないので、Rails始めてからの最初としては変かもだけど、Active Adminというgemの中身について書きます。 なお、まだRubyやRailsの理解も全然なので、勘違いとかも色々あると思います。 Active Admin | The administration framework for Ruby on Rails The Ruby Toolbox – Rails Admin Interfaces Active Admin is a Ruby on Rails plugin for generating adm
JSON内のマルチバイト文字列によく見かける\u3042とか\u304BとかのUnicode escape sequenceを、デコードして文字列にしたいなって事がありました。 $subject = '\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa'; $decoded = preg_replace_callback('|\\\\u([0-9a-f]{4})|i', function($matched){ return mb_convert_encoding(pack('H*', $matched[1]), 'UTF-8', 'UTF-16'); }, $subject); echo $decoded; //あいうえおアイウエオ \uを取り除いた16進数の文字列を、packして文字コードを変換すると、Unicodeエ
MacにSphinxをインストールしたメモ | kanonjiのブログで使い始めたSphinxで、やってみたかったPDF生成を試して気がついた事をメモします。 プロジェクトを作る :: ドキュメンテーションツール スフィンクス Sphinx-users.jpからSphinxでPDFファイル作成 :: ドキュメンテーションツール スフィンクス Sphinx-users.jpを参考にしました。 index.rstはスペース3個 Contents: .. toctree:: :maxdepth: 2 expert_python art_of_community http://sphinx-users.jp/gettingstarted/make_project.html#id2 いきなりはまったのがインデントのサイズ。index.rstに目次というかTOCを書いて、そこに書いたファイルがビルド対
共有ライブラリのバージョンの確認ってどうやるの?OpenSSLのHeartbleed bugでrbenv(ruby-build)の対策中の疑問 OpenSSLのHeartbleed bugの対策で情報を集めてたら、どうやらrbenv+ruby-buildで入れたrubyも対策が必要っぽい事が分かりました。 [OpenSSL library updated to 1.0.1g #547] ruby-buildプラグインで別にopensslを入れた場合は対応が必要 plugins/ruby-build下でgit pullしてrbenv installしなおす http://d.hatena.ne.jp/nekoruri/20140408/heartbleed ちなみに、上記引用元は、Heartbleed bugについてかなりまとめてくれています。 Rubyを入れてるのはほぼRubyで作ら
http://kanonji.info/blog/2014/02/05/webサイトに設定するfacebook向けのogpについての雑多なメモで、よくわからないところも残りつつ調べたけど、ふんわりしてたところが少し分かったので、もう1回まとめます。 今回はOGPというより、app_idを中心に調べました。 前提 例えばお店や会社などで、専用のWebサイトとFacebookページがある状態。もしくはこれから作ろうとしている。 WebサイトにはFacebookページのLike Boxを設置したい。 また、Webサイトの各ページがいいねされると、いいねした人のアクティビティとしてその人の友達のウォールに表示される。ようにしたい。 加えて、Webサイトのいいねの数や、それがどのくらいの人のウォールに流れたかを、Facebookインサイトで見たい。 発端 Like Boxを設置しようと、埋め
bash --login -iを設定して、この辺りの理解がふんわりとしてるなと思ったので、ログインシェルとインタラクティブシェル(対話的なシェル)について調べてみました。 書いておかないと忘れちゃうので書いてますが、他で見て実行して確認してない事もあるので、間違いとか勘違いとかも有るかもしれません。 ログインシェル(login shell)とは、0 番目の引き数の最初の文字が – であるシェル、または –login オプション付きで起動されたシェルのことです。 http://linuxjm.sourceforge.jp/html/GNU_bash/man1/bash.1.html bash --login su - ssh somehost bash --loginで起動はそのままその通り。sshでサーバーにログインした場合やsu -した場合は「0 番目の引き数の最初の文字が – であ
OSが入ってるブート可能なSDカードを、もし壊したりしたらやり直しが出来る様に、SDカードのクローンを作る事にしました。あまりddコマンドを使った事がないし、次やる時また忘れてそうなので、やり方をメモしておきます。 途中に書いてあるけど、Macだとddコマンドの使い方とかじゃなく、恐らくハード的な理由で書き込みが出来なかったので、仕方なくLinux(Fedora)での書き込みに切り替えました。 注意 ddコマンドは、間違えるとSDカードのデータを壊したり、実行してるPCのHDDのデータを壊したりする可能性があります。 ここで書いてるコマンドも、万が一間違えているかもしれないので、他の情報源も合わせて参照して欲しいです。 SDカードから吸い出す MacでSDカードから吸い出す $ df Filesystem 512-blocks Used Available Capacity Mounte
$ composer require phpunit/phpunit:3.7.* # requireに追加 $ composer require phpunit/phpunit:3.7.* --dev # require-devに追加 npmで言う所のnpm install foo --saveやnpm install foo --save-devは、Composerではinstallとは別にrequireというサブコマンドが用意されてます。 composer installはcomposer.jsonから専用で、パッケージ名を指定してインストールするのはcomposer requireを使うっぽいです。 http://getcomposer.org/doc/03-cli.md#require 補足 流石に短いので、Composerのインストール周りのオプションをもう少し調べてみました。
$('#input').keydown(function(e){ console.log(e); }); var code = 13; # Enterキー $('#input').trigger( jQuery.Event( 'keydown', { keyCode: code, which: code } ) ); jQueryのEvent Objectを作り、それを.trigger()に渡すと、自分の作りたいEvent Objectをイベントハンドラに渡せます。 第1引数はどのイベントを発火させるかを書くけど、キー入力系ではkeydown, keypress, keyupのどれでも指定出来るし、それに限らずどのイベントでも指定できます。 http://api.jquery.com/category/events/event-object/ var code = 65; # 'a' $
http://example.com/foo #<- アクセスすると、 http://example.com/foo/ #<- にリダイレクトされる。 スラッシュが無いとリダイレクトされるので、ディレクトリへのURLはスラッシュで終わるのが正しいと聞いた事はあったけど、どうやらmod_dirの挙動が理由でした。 なお http://servername/foo/dirname という URL へのリクエストがあった際に、dirname というディレクトリがあれば、「最後にスラッシュをつけた形」の URL へのリダイレクトを送出します。 ディレクトリへのアクセスはスラッシュで終わっている必要があり、 mod_dir は、http://servername/foo/dirname/ へのリダイレクトを送出することになります。 http://httpd.apache.org/docs/2.2/
次のページ
このページを最初にブックマークしてみませんか?
『kanonji.info』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く