サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
blog.shimabox.net
オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方 オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方 を読破したので、なぜこの本を読んだのか、感想、読んだときのメモを残しておきます。 なぜ読んだのか ネットサーフィンをしているとオブジェクト指向に迷える子羊に対して強い人がこう言っているのをよく見かけます。 “オブジェクト指向設計実践ガイドを読め” と。それが答えです。 自分はこの本を読んで、 何かこの設計はダメだしっくりこない この設計は何かしらんが書きやすいぞビューチフルだ こういった今までの経験でごまかしていた「何か」の部分に対して、「あぁ、ここはXXだから〇〇だよね」と具体的に考えられるようになりました(ふわっとしていたものに名前をつけられるようになるのってスゴく大事なことだと自分は思うので
徘徊 会いに行こう 叱られる時間になる前に (ニガミ17才/町の変態) こういう歌詞を書ける、幼心をいつまでも持ち続けているかのようなセンスに痺れるし憧れます。 さて、前回までにPythonとOpenCVを使った顔認識のサンプル的なものを書きました。 WEBカメラの映像をPythonとOpenCVで顔認識して遊ぶ | Shimabox Blog PythonとOpenCVを使ったまばたき検知ゲームの(プチ)改善 | Shimabox Blog が、いかんせん Python が必要だったりとか python xxx とかうたなきゃならなかったりでサクッと遊べる感じではありません。 できればこういったものはブラウザ上でサクッと試してみたいものです。 そこで調べてみると、jsでも顔認識が出来るぞ!!という情報がオドロくほどあるではないですか。知らんかった。 そんなわけで試しにサンプルを作ってみま
何を作ったのか WEBカメラの映像から顔と目を検出して目にはモザイクをかけるやつ 目をつぶったら close your eyes と表示する 目をつぶったら画面キャプチャを終了するやつ 目が開いている時間をカウントダウン表示 ちょっとしたゲーム感覚 を作りました。 環境 Mac, Windows ともに下記環境で試しました。 3系です $ python -V Python 3.6.6 OpenCV(OpenCVPython) PythonからOpenCVを使うにはOpenCVPythonなるものが必要なようなのでインストールします。 $ pip install opencv-python 確認 $ pip freeze | grep opencv opencv-python==3.4.2.17 カスケード型分類器 顔認識させるにはカスケード型分類器なるものが必要なようなので GitHub
このバッチがきちんと終わったら、あのバッチを動かしたい。なんて事はよくあると思います。今までそのへんの事はcronで制御していたのですが、バッチがクソ増えてきてスケジューリングがつらたん。。という状態になり、こうなったら一連の処理を行うバッチはシェルで制御した方が楽だよね、そうだよね、じゃあ調べてね、ってなった時のことを書きます。 ※ ジョブ管理ツールとかは無しで ※ 制御するとかありますが、そんな難しいことではないです ※ ちょっと回りくどい感じで書いていますので出来れば最後まで読んでみてください やりたいこと バッチA (hoge.php) 実行 ↓ エラー無し → (No) → バッチ終了 ↓ (Yes) バッチB (piyo.php) 実行 やりたいことはこんな感じです。 最初に書いたシェル #!/bin/bash PHP_PATH=`which php` BATCH_DIR="/
前提条件 java selenium-server-standalone 現時点で最新のバージョン(3.7.1.jar)を用意してください facebook/php-webdriver: A php client for webdriver. chromedriver 現時点で最新のバージョン(chromedriver 2.33)を用意してください geckodriver 現時点で最新のバージョン(geckodriver v0.19.1)を用意してください が必要です。 ソース 百聞は一見にしかずなのでソースから。 example_chrome_headless.php require_once 'vendor/autoload.php'; use Facebook\WebDriver\Chrome\ChromeOptions; use Facebook\WebDriver\Remote\
ここ最近ちょくちょくphp-webdriverを試していて、takeScreenshot();で画面キャプチャを撮った時に全画面のキャプチャが撮れないぃ!ムキーッ!!となっていたのですが、色々調べた結果何とかなったので書きます。 まず先にパク参考とさせて頂いた記事を紹介します。 私がSeleniumを使ってスクリーンショットを撮るまでに出会った闇の全て Seleniumで撮ったスクリーンショットがブラウザごとにばらばら問題 – Qiita Chromeでフルサイズのスクリーンショットを撮るためのパッチ – Qiita 記事を読んでみると、Seleniumを使ったスクリーンショットで撮れる範囲がブラウザによってバラバラであるということが分かります。※1 (以前書いた php-webdriverをWindowsのローカルで試す | Shimabox Blog の通りIEはページ全体を撮ってくれ
ちょっと前になりますが、画面にあるリンクのURL(aタグのhrefの値)を全部なめて、期待するURLになっているかどうかをテストしなくてはならないお仕事がありまして、これは人間のやる仕事ではない!これは機械にやらせる仕事だ!とついカッとなってSelenium関連を調べていたら以下の素晴らしいOSSに巡り逢いました。 ※ え、いまさら?とか言わないで facebook/php-webdriver: A php client for webdriver. これは Facebook様が作っておられる Selenium WebDriverをPHPでラップしているのでPHPからWebブラウザを制御できる と、PHPerには嬉しいものとなっております。 私はこれで気の狂いそうなテストを機械に行なってもらうことに成功しました。 ※ テストを書くのはもちろん大変なんだけど 案件において、上記のテストは仮想
そこにペチパー(PHPer)が100人いたら97人はPHPUnitでテストを書く。 と言われている位(適当です)、PHPでは珍しくデファクトとなっているPHPUnit。 なにそうなのか!?と、いざ導入しようとしてwget https://phar.phpunit.de/phpunit.pharから入れたらPHPのバージョンが合っていなくて挫けそうになった経験。あると思います。 何故なら、PHPUnitの最新バージョンはPHP5.6PHP 7以上を求めているからです。 ※ 上記のwget 〜 では最新のPHPUnitが取得されます そして恐らく、みんながみんなPHPのバージョンは最新では無いはずです。 (一番マシなのが5.5系でヘタすれば未だに5.3系なんてとこも??5.2系使っていたら頭おかしい) え、じゃあ僕は5.5系使っているんだけど、どうしたらいいの?私は5.4系よ、どうしたらいいの
ポケモンGo全然興味なかったのにあれやばいっすわー。 というわけで、FuelPHPにおいてPresenterのViewをTwigにしました。 その経緯をメモしておきます。 前提条件 FuelPHPのバージョンは1.7.2でインストール済みである composerの導入も済んでいる Twigのインストールはcomposerを使います 手順 では手順を書いていきます。 composer.jsonの修正 こんな感じで、composer.jsonに"twig/twig" : "1.*"を追記します。 現時点(2016/07/26)では1.24.2-DEVが入ります devが気になる場合、"twig/twig" : "1.24.1"などとバージョン指定をして書けばいいです インストール後、echo Twig_Environment::VERSION;でバージョンの確認ができます "require":
検証結果は(ほぼ((PCのchromeと、iOSのchromeで最大サイズに違いがあるのはビックリ!!)))期待する結果となりました。 4096byte以上の値をセットする時も、値を圧縮して4096byteより小さくなればセットされる事も確認出来ました。※chromeだけじゃなくて、他のブラウザもそれぞれの閾値で確認しました どうやって検証したのか こういうのを作って、ちまちまとやりました。 https://shimabox.net/sample/php_verify_cookie/ 任意のcookieをセット出来る 文字列だけだけど デフォルトで4095, 4096, 4097, 5117, 5118byteの文字列を用意 cookieにセットされている値とセットしたい値(postした値)に差分があれば、差分ありと表示される cookie削除の機能は無いので試した後は適当に消してください
—- 注意 —– この記事は相当昔に書かれたものであり、MAMPのバージョンもかなり古いものを対象にしています。 よって、今は下記方法は通用しないです。 あくまでも、以前はこのように変更できたという情報であるということをご認識ください。 —– 注意ここまで —– せっかくの三連休だけど子供が風邪をひいていて機嫌がすこぶる悪いです。 ※ こういう時って大体パパに冷たくなる気がする 昨今VagrantだとかChefだとかで、MAMP?wwwみたいな声が聞こえてきそうだけど手元でサクッと確認したいならまだまだMAMP(XAMPP)がやっぱり便利かなぁってぼかぁ思うんだ。 PHPのバージョン変えて試したりだとか、なるべくサクッとやりたいですよね。 でも、MAMPってインストールした後だと一番新しいマイナーバージョンとその次に古いマイナーバージョンのPHPしか選べない。 ※ 今現在(MAMPのVer
ここにきて急に近所でも桜が咲き出しまして(と思ったらもう満開を通り越した感ある)。 こんな時、頭に流れるのは森山直太朗のさくらさくらいざ舞い上がれか、コブクロのさくらのはなびら散るたびにか、NumberGirlの桜のダンスをお前は見たかです。 さて、最近案件でFuelPHP(以下fuelと呼びます)を使う機会が多くなってきました。 こういうフレームワークで何が一番最初に便利かなって考えると自分はルーティングを思い浮かべるんですが、どうでしょうか。 基本的なルーティング で、fuelもそりゃあルーティングが結構簡単に書けるわけなんですね。 ルーティング – 概要 – FuelPHP ドキュメント あ、バージョンは1.7.2です。 この中でも、自分は名前付きパラメータが結構便利だなぁって思うんです。 上記のドキュメントにもある通り、fuel/app/config/routes.phpに ret
知らない家の目覚まし時計で目が覚めました。 LaravelはBladeっていうテンプレートエンジンをデフォルトで使います。 ほいで、Bladeって凄いんです。継承とか出来ちゃうんです。 @extends('XXX')とか@parentとかです。 もちろん他にも色々あるんだけど、一番継承がびっくりしました。 ※こう書くと最近のテンプレートエンジンを知らないってバレそう 詳しくは、Laravel4 テンプレート が参考になると思います。 {{{ でもエスケープしたい時、{}を3つも書かなきゃいけないのは面倒だね!! }}} 自分が思うにhtmlをゴニョる時って、ヘッダーとコンテンツとフッターがあって、コンテンツを常にいじって、ヘッダーはmetaタグの中で動的に変わる部分があって面倒くさくて、フッターは別にみたいなイメージです。 あとはサイドバーとかナビバーとかかな。 その中でも、集中して修正し
あっという間に3月も10日過ぎました。 さて、前回に引き続きLaravelの話。 HelloWorld出来たし、何か書こうかなぁと。 んで、今回は開発環境ではスタブを使って値を返したい時について。 例えば、お客さんの環境でしか動かないAPIを使わなきゃいけない時、そんな時どうするか。 自分なりに、調べたり考えてみたので残しときます。 環境設定 まずはこれ。開発環境、本番環境、etc…と環境を区別出来る様にします。 bootstrap/start.phpを見てみます。 $env = $app->detectEnvironment(array( 'local' => array('your-machine-name'), )); この 'local' => array('your-machine-name'), の部分はarrayで渡された文字列に、hostnameの値と一致するものがあれば、
GWですね。こんにちは。 妻と3才の息子が妻の姉家族とイチゴ狩りに行っています。GWですね。 ※自分は4ヶ月の長女とお留守番 最近、phpDocumentorを触ってみました。 いまさら感がもの凄いのですが、上手く活用したら めちゃくちゃ便利やろこれって話を書きますです。 インストール ちなみにCentOSです。 ※バージョンは 6.2 $ cat /etc/redhat-release CentOS release 6.2 (Final) 以下を参考にインストールしました。 madroom project: phpDocumentor 2のインストール手順(Mac/Win/Linux) ※GraphVizをCentOSにインストール GraphVizを入れると、phpDocumentorでクラスの相関図も 出力されていい感じなので入れます。 $ sudo yum install -y g
1年程前にHTML5の音声入力とGoogle翻訳APIを使ってこんなのを作ってみたけど、 HTML5の音声入力とGoogleの翻訳APIを試してみた | Shimabox Blog Google翻訳APIがフリーで使えなくなっていて全然動かなくなってた。。 ※参考記事 Google Translate API v2 有料化と v1廃止に伴って、Microsoft Translatorを使って見る余地はあるかもという話 – くるえるはてなくしょん いやぁ〜、何というファ○ク。でもまぁ、そのままにしとくのも悔しいので、 こちらの記事にある通りMicrosoftの翻訳APIを試してみる事にしました。 Microsoftの翻訳APIは上記の参考記事中にもありあますが、 使ってみよう! Windows Live SDK/API:第38回 使ってみようMicrosoft Translator|gihy
PHP5でXMLを作る時って大体SimpleXML使うじゃないですか。使いますよね? で、SimpleXMLでXMLを作るのって全然楽なんですけど、その作ったXMLファイルを修正しやすい様に見やすくしてくれって言われたのが今回のお話です。 2016/12/21 追記 以下のライブラリを使うと、若干簡単に書けるかもしれません。 https://github.com/shimabox/SMBArrayto ページ下部にサンプルを書きました。 XMLの作成 まずはXMLの作成から。 こんなXMLを作りたいとします。 <?xml version="1.0" encoding="UTF-8" ?> <hoge> <users> <user id='1'> <name>たろう</name> <music>NumberGirl</music> <sex>boy</sex> </user> <user i
shimabox.netではjQuery UI TabsというjQueryのライブラリでタブを利用したシングルページっぽい感じにしています。 それで、作った時はブラウザバックとかでページ遷移した時も勝手に該当のタブを表示してくれてた様な気がしてたんですけど気づいたらそんな事は無かったんどすねぇ。。(もしかしたら最初から?) それだと少しかっこ悪かったので、戻る/進むをした際でも該当のタブ内容が表示される様にやってみたら成功したのでその対処法を書きます。 対処法と言っても、まぁ、タイトルに書いてあるそのままなんですけどね。 タブ押下時にURLにハッシュを付けて遷移させる ハッシュチェンジイベントを利用してごにょごにょする おおざっぱに言うとこんな感じ。 jQuery UI Tabsと、jQuery hashchange eventというプラグインを使います。 ダウンロードやマークアップは以下
先日、GoogleChrome 11が正式リリースされましたね(超はぇー)。 そこで、11から音声入力に対応しているという事だったのでちょっと試してみました。 ただ、音声入力だけだとつまらないかなぁと思い、ついでにGoogleの翻訳APIも一緒に試してみました。 マークアップ <input type="text" x-webkit-speech> マークアップは上記の通り。 これだけでいつものテキストボックスの右端にマイクアイコンが出てきます。 マイクアイコンをクリックすると音声入力が可能になります。 やべー超簡単。 lang属性を変えれば、日本語認識、英語認識切り替えられる様です。 ※以下の書き方はHTML5の例 <html lang="ja"> これだと日本語認識 <html lang="en"> これだと英語認識 試してないですがlang属性を変えれば他の言語でも認識してくれると思い
このページを最初にブックマークしてみませんか?
『blog.shimabox.net』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く