読者です 読者をやめる 読者になる 読者になる

【fuelphp】Redisでロック・排他制御する方法メモ

APIの実装でクライアントからの2重送信対策にRedisを使ってみた。 MySQLでやろうとも思ったのだが負荷のことを考えるとRedisの方がいいのかなという判断。 $token = クライアントから送られるトークン $redis = Redis::forge(); if (1 === $redis->setnx($to…

【javascript】iPhoneでpagehideが2回呼ばれたときの対応

今回やりたかったことは、ページから離れるとき(リンクとか)にその内容をサーバーに通知したいということ。pagehideで実装したのだが、なぜかiPhoneだとこれが2回呼ばれる現象だった(safari、chromeともに)。以下のようなコードで確認したところ、2回送信さ…

ionic(corodva)info.plistに追記して日本語化対応する - ios

アプリ内から別アプリを開いたら起動したアプリが全て英語だったのでその対応。というかionicで作ったアプリ自体が日本語化されてなかった。xcodeでの開発の場合は、info.plistを直接いじればよいけどcorodva使ってる場合はxcode上で直接編集したものはbuild…

gulp-concatでファイルを新規作成したときに動かなかったときの対応

gulp-concatがうまく動かなかった時のメモ。こんなことでひっかかる人あまりいなそうだけどハマったのでメモしておく。ファイルの更新では上手くいくが、新規作成と削除で上手く動かなかった。ディレクトリの階層が深くなるとダメなのかなとか思ったけど全然…

やっぱりphpのスクリプトはcronに直接設定しないほうがいいかもしれない

また初歩的なことでつまづいてしまった。ありがちなミスで開発中にコマンド上で実行してうまくいってたけどcronに登録したらエラーになってたってやつ。スクリプト内で呼び出す外部ファイルとかフルパスで書いておけば問題ないくらいで最近この形にしてたけ…

【CasperJS】プロキシを使う方法

やりかた違うけかもしれないけどこれだと動かなかった var casper = require('casper').create({ "proxy": "http://proxy.example.com:port", "proxy-auth": "user:password", }); これだと動いた $ casperjs /path/to/myscript.js --proxy=http://proxy.exa…

ionic(corodva)でplugin rmで「Path must be a string. Received undefined」の対応

自作したプラグインを削除しようとしたら以下のようなエラーが発生。rmしてaddし直したかったのだがハマった。。。 Error during processing of action! Attempting to revert... Error: Uh oh! Path must be a string. Received undefined色々試してたらplu…

ionic(cordova)のion-footer-barの高さを変える

やりたいことは画面の下に固定の領域を設けたかった。で、ionicにはというのがあって、これ使えばできた。cssでheight指定すればいいだけだった。。 <ion-pane> <ion-header-bar class="bar-stable"> <h1 class="title">フッターの高さをかえる</h1> </ion-header-bar> <ion-content> ・・・ </ion-content> <ion-footer-bar style="height:200px;"> <div class="row responsive-lg"> </div></ion-footer-bar></ion-pane>

ionic(cordova)でion-tabsで画面ごとに各タブの表示・非表示を切り替える

やりたかったのはページによってタブの中身を動的に変更したり、タブの数自体を変更したり、タブ自体を非表示にしたり。そんな感じです。ionicというよりはangular-ui-routerの使い方になるのかな。いちおうメモしておきます。$stateChangeStartでページが変…

ionic(cordova)でAndroidManifest.xmlへ追加する方法

config.xml <platform name="android"> <config-file target="AndroidManifest.xml" parent="/*"> <uses-permission android:name="android.permission.INTERNET" /> </config-file> <config-file target="AndroidManifest.xml" parent="/manifest/application"> </config-file></platform>

ionic(cordova)でサードパーティSDKのプラグインの実装手順 - Android

先にiOSの内容を書いたのでAndroidも引き続き。ながれは以下のような形。1. SDKを入手 2. SDKのパスとパーミション等をplugin.xmlへ追加 3. プラグインをプロジェクトへ追加(というか更新) 4. プログラムからSDK呼び出せるようになったらひたすら実装 実装 …

ionic(cordova)でサードパーティSDKのプラグインの実装手順 - iOS

はじめに 今回やりたかったことは、ネイティブのSDKが公開されているけどcordova用のプラグインは公開されていないようなケースでそれ用のプラグインの実装手順をメモしておく。プラグインの基本的な作成手順はコチラに書いたのでこれの後にやることを書く。…

ionic(cordova)でプラグインを更新(反映)する

イマイチ開発の流れがわかってないときにつまづいたのでメモ。 開発中のプラグイン(swift、java、javascriptのいずれでも)をいじったら、プラグインを更新してプロジェクトへ反映させなくてはならない。(たぶん) $ ionic plugin rm plugin-sample # 1回削除…

ionic(cordova)でのプラグイン開発のながれメモ

開発のながれ 1. 新規プロジェクト作成(既存のプロジェクトに追加する場合は不要) 2. プラグインの開発 必要なディレクトリとファイルを作成 $ tree plugins-dev/ plugins-dev/ └── plugin-sample ├── plugin.xml ├── src │ ├── android │ │ └── Sample.java…

【javascript】要素が画面に何%見えているか判定する

2度と使わないかもしれないけどメモしておく。 ある要素が画面の何%見えているか判定する処理。 あんまりやる機会ないと思うけど、特定の要素が100%見えたら何らかの処理するとかそんなイメージ。 <script> var target = document.getElementById("contents"); var …

ハイブリッドアプリ開発におけるプログラマーとデザイナーの分業について

はじめに 最近、ハイブリッドアプリで開発してって言うお客さんが増えてる。といっても自分は簡単なものなら作ったことはあるけど、きっちりデザインがあって画面数も多いようなものを作った経験がない。と言う状況で、今回ハイブリッドアプリを作ることにな…

【android】building gradle project infoが終わらなかった時の対応

久々にandroid studio立ち上げて新規プロジェクトの作成と既存プロジェクトを開こうと思ったらどっちも 「building MyProject gradle project info」が終わらず。。。よくわからなかったのだが以下を試した・プロジェクトの作成先を変えてみた ・プロジェク…

スクレイピングするのに調べたことまとめておく

はじめに 最近スクレイピングするスクリプトを書く機会があったので次回のためにメモしておく。・主にHTMLでコンテンツが作られているページ。 ・Javascriptでページを生成しているページ。 この2パターンに対応する必要があった。後者に対応しておけば前者…

【CasperJS】ログインする方法メモ

今回やりたかったのはログインが必要なページの取得。 単純にformをsubmitすればいいページとログインボタンをクリックするとjavascriptが動いてごにょごにょやってログイン処理へと遷移するパターンがあるのでそれぞれ実装してみたのでメモしておく。 form…

【CasperJS】eachThenとthenOpenで順次スクレイピングしてファイル出力する

今回やりたかったのはURLをリスト化しておいて順次サイトにアクセスしてレスポンスを取得するということ。当初はopenとthenを複数書いていたけどURLの一覧を別ファイル化したかったので今回やりたい経緯となった。ついでに取得したHTMLをファイルに保存する…

macでキャプチャを動画で撮れるLICEcap

よく使うのになぜか名前覚えられないのでメモっておく。 LICEcapすごいシンプルでとても便利。 macて書いたけど、windowsもあるのか。 動画って書いたけどアニメーションGif。以上です。

【bootstrap】モーダルが画面からはみ出ないようにサイズ調整する

はじめに bootstrapのモーダル使っててモーダルサイズが画面からはみ出るのが嫌だったので修正したときのメモ。 今回やったのは以下の2パターン ・テキストベースのモーダル ・画像を大きく表示するための画像ベースのモーダル テキストベースのモーダル 修…

【php】Lineアカウントでのログインを実装する

php

はじめに FacebookとかTwitterアカウントでのログインは何回かやったことあったけどLineは初めてだった気がしたのでメモしておく。 といっても、ちょっとしたアカウント情報取得するのはやり方どれも同じような感じですけど。http://milk0824.hatenadiary.jp…

sslの開発環境を作る手順

はじめに SSL環境での動作確認を行うための環境を作る手順をまとめておく。 これをたまにやろうとするたびに検索してオレオレ証明書作って。。。とかやってたけどなんかもともと入ってるみたいで。いちおう今回の環境は、centos6.8でapache2.2 実装 mod_ssl…

【ionic】ion-side-menuとion-tabsを同じ画面で使う

はじめに 今回やりたかったのはこんな画面 スタートテンプレートでサイドメニューとタブのものがそれぞれあるのでそれらを参考にした。 実装 まずはベースとなるHTMLを作る。ion-nav-viewがあるだけ。index.html <body ng-app="starter"> <ion-nav-view></ion-nav-view> </body>app.jsで、 menu.html > tabs.html > conte…

【selenium】facebook/php-webdriverでUser Agentを変更する方法メモ

基本的な使い方は以下のページがわかりやすい http://hchckeeer.hatenadiary.jp/entry/2016/12/30/183039で、ほぼ上のページのとおりだけど、今回はUser Agentを変更してアクセスしたかった。 use Facebook\WebDriver\Remote\DesiredCapabilities; use Faceb…

slack、backlog、チャットワーク、Skypeのメッセージで改行をいれる〜誤送信をなくしたい!

同時に色々使ってると混乱してくる。 メッセージの途中で誤送信することが増えてきた。。。> slack Ctrl + Enter> Backlog Enterのみ> チャットワーク Enterのみ > skype Ctrl + Enter送信はそれぞれで逆で。以上です

【ionic】ionic serveでwatchしてconcatする方法

バージョン1の話です。 ionic startで作られるcontrollers.jsは1ファイルだけど、大きくなると嫌なので分割できるようにしたいというのが今回やりたかったこと。 ひな形をつくる $ ionic start myApp tabs controllersを分割 controllers/_init.js angular.m…

【php】配列を複数条件で検索、絞り込みする方法メモ

php

大した話じゃないけどメモ。 やりたいことは、配列から条件で絞り込むみたいなこと。 array_filter使えばよいみたい。 // 検索対象のリスト $items = [ ["name" => "田中", "gender" => "woman"], ["name" => "高橋", "gender" => "woman"], ["name" => "亀…

【Selenium】facebook/php-webdriverでスクレイピングする方法メモ

centosでseleniumでやる方法探してたらまさにやりたいことがこのページにまるまる載ってました。助かりました。ありがとうございます。 php-webdriverを使用してスクレイピングをした話 - 備忘録ほぼこのとおりにやったらいけました。 一部ちがったところと…

【PhantomJS】clickした後のhtmlを取得する

こちらでとりあえず動かせたのでついでにボタンをクリックした後のhtmlも取得してみたのでメモ。htmlはボタンをクリックしたらテキストがページに追加されていく簡単なもの。index.html <head><title>テスト</title></head> <body> <div id="content"></div> <button id="btn-add" onclick="add();">追加</button><br/> <script> function add() { document.getElementById("content"</br/></body>…

【PhantomJS】ajaxなページをスクレイピングする方法メモ

やりたかったこと 今回やりたかったのはjavascriptでコンテンツを表示するページの解析。 今までもたまにスクレイピング用のスクリプト作ったことはあったけど、wgetやphpのfile_get_contentsで取得したhtmlを解析するようのものしかなかった。ちょっと調べ…

【cakephp】updateAllを呼んでもデータが更新されなかった原因メモ

あまり使ったことのないcakephpの改修でハマった。更新されない $this->MyModel->updateAll(array( "text" => "text", ), array( "id" => 1, ));文字列はクォートで囲むと更新される $this->MyModel->updateAll(array( "text" => "'text'", ), array( "id" =…

【css】javascriptで挿入した要素のz-indexが効かなかった時の原因と対応メモ

css詳しくないのに見よう見まねで書いててjavascriptで生成した要素のz-indexがどうにも効かなくてハマりました。 そのときの対応をメモ。ググってるz-index当てる要素はpositionがrelativeかabsoluteじゃないといけないって記事があってコレが原因って線で…

【android】ActionBarの背景色とタイトル文字色を変更する方法メモ

背景色を定義 res/drawable/actionbar_background.xml <shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="#FFFFFF"></solid> </shape>res/values/styles.xml <resources> </resources>

ffmpegで動画の1フレーム目の画像を取得

コピペ用にメモ。 動画ファイルの1秒から1フレーム目を取得する ffmpeg -i input.mp4 -ss 1 -vframes 1 -f image2 output.png

wgetでページ丸ごと取得するコマンドメモ

たまに調査とかで別のサイトをダウンロードしてサイトが見たいことがある。 毎回調べてるのでコピペ用にコマンドをメモしておく。 # iPhone $ wget -p -H -E http://example.com/ --user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X) Ap…

【onsenui】無限スクロールを実装する

はじめに 今回やりたかったのはよくある無限スクロール。 リストの1番下までスクロールしたら次のデータを取得しにゆきます。 これをAngular + Onsen UIで実装したのでメモしておく。データ数の多いリストはパフォーマンス的にons-lazy-repeatを使うとよいら…

【onsenui】ons-lazy-repeatでセルの高さを自動調整!!

はじめに Onsen UIをいじってみて、無限スクロールのやり方を調べていた。 ドキュメント見ると行の高さを数値で返すという仕様なのだが他にやり方がないかteratailで質問したら最新版だと自動調整してくれるとの回答が来た。 まだ未リリースのため動作保証は…

iOSアプリ申請時に最低限必要な画像

前に用意したことあったけど全然覚えてないしよくわからなかったので次回用に最低限準備しないとならない画像をメモ。 スプラッシュ画像 3125x5571を1枚用意。これ1枚用意して、LaunchScreen.storyboardのViewControllerにUIImageViewを貼り付けてAutolayout…

【android】ActionBarでのSearchViewの基本的な使い方

はじめに 今回やりたかったことは、ActionBarに検索バーをおいて検索すると検索用の画面へ遷移するということ。 最終的にやりたいことは検索バーで検索結果画面を開くところだけど、今回は検索バーをおいてイベントをハンドリングするところまで。 検索バー…

【xcode】AppIconにiPadのエリアがなかった時の対応

またたいした話じゃないけど、アプリの開発をひととおり行ってアプリのアイコンを設定しようとしたらiPad用のエリアがなかった。iPhoneのみ iPhone、iPad両方あり 理由はプロジェクトを作った時にDevicesをiPhoneを選択して作ったから。 あとからUniversalに…

SequelProエクスポート

たまにやろうとすると、テーブルの隣の「S」「C」「D」の記号の意味をいつも忘れるのでメモS :スキーマ C : データ D : drop table if exists xxx以上です

sftpをプロキシ(squid)または踏み台(ポートフォワーディング)経由で使用できるようにする

はじめに やりたかったことはタイトル通りなのですが。登場人物は以下 ・作業用PC ・中継サーバー(踏み台 or プロキシ) ・開発サーバー今回は中継サーバーと開発サーバーはcentos6.5で、作業PCはMacで確認。アクセス制限は以下 ・開発サーバーへのSSHでのア…

sftpコマンドでプロキシ経由で接続する方法メモ

squidでたてたプロキシサーバー経由でsftp使うときのメモ $ sftp -o "ProxyCommand connect -H プロキシのIP:プロキシのポート %h %p" sftpユーザー名@sftpサーバーのIP以上です

【squid】プロキシにパスワード認証を設定する

次回のために作業メモ squidのプロキシにパスワード認証(Basic認証)追加ユーザー作成 # 新規作成 $ htpasswd -c /etc/squid/passwd user # ユーザー追加 $ htpasswd -b /etc/squid/passwd user2 pass # ユーザー削除 $ htpasswd -D /etc/squid/passwd user2/…

【android】Fragment上のListViewに置かれたボタンのonClickを処理する

はじめに 今回やりたかったのは、ListViewのセル上に削除ボタンとかをおいてクリックされたらListViewから削除するようなこと。 ListViewを作るのがActivityとFragmentとでやり方が違うみたい。Activityの場合は以下みたいな形でボタンのイベントが取得でき…

【android】ListViewひな型

試したりするときにとりあえずListView作ることが多いのでコピペ用にメモ MainActivity.java public class MainActivity extends AppCompatActivity { private ArrayList<Item> mItems; private ItemAdapter mAdapter; private ListView mListView; @Override prot</item>…

【android】ViewPagerでタブ毎に戻れる画面を実装する方法

はじめに 今回やりたかったのはこんな画面。 なんでもiOSと比較するのはあれだけど、iOSだとUiNavigationControllerを持つUITabbarControllerみたいなイメージ。 今回はタブは表示していないけどViewPagerをタブ表示するサンプルはたくさんあるので問題なか…

はてなブログで画像を横並びにする方法メモ

なにげに時間かかったのでメモしておく。 ちなみに自分は、はてな記法モードっていうのを使ってる。手順は以下だった ・アップロードした画像のURLを取得 ・tableタグとimgタグ使って整形 やりたかった画面 アップロードした画像のURLを取得 アップロードし…