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

ionic(cordova)にて screen-orientationプラグイン を使って画面ごとに回転時の表示を切り替える

はじめに 今回やりたかったことは 端末を回転したときに画面Aでは縦固定、画面Bでは縦横どちらにも対応みたいなこと。プロジェクトを作成 $ ionic start sample tabs今回は複数画面必要だったのでtabsを使った。プラグインをインストール $ ionic plugin add…

phpで時刻が9時間ずれてたらタイムゾーンを設定した方がよい

php

なにをいまさらな内容。というか愚痴。 サーバーの設定とかいじれない環境での話。こんなコードがあちこちにあった。 $date = date("Y-m-d", strtotime("9 hour"));どっかで1行セットしておいてください。 date_default_timezone_set("Asia/Tokyo"); $date =…

【ionic】ion-side-menusを常に表示する

ionicの仕様?なのかナビゲーションの2階層目以降では消えてしまうようなのだが今回は全画面で表示したかった。よくわからなかったのでcssで無理やり実装。以下を追記したらいけました。 .bar .buttons .hide { display: block !important; }以上です

ionic(cordova)でsqliteを使う - ngCordova

はじめに 今回やりたかったのはsqliteを使う際に共通の処理とかはどこかにまとめておきたかった。接続とSELECT、INSERT、UPDATE、DELETEあたりをまとめられればよいかなという方針で。次回簡単に使えるようにメモしておく。インストール $ bower install ngC…

ionic(cordova)にてngStorageでlocalstorageを使う

bowerでインストール $ bower install ngstorage --saveindex.htmlで読み込む ・・・ <script src="lib/ngstorage/ngStorage.min.js"></script> ・・・今回はserviceで使った。 angular.module('myApp', ['ngStorage']) .service('myService', function($localStorage) { this.getByStorage = function() { return $…

ionic(cordova)で複数人でチーム開発するときのながれメモ

1人でやってるときは問題なかったけど、複数人でやってるときに最初うまくいかずにハマったのでメモしておく。 新規プロジェクト作成の場合 新規にプロジェクトを作成してandroid を追加(iosはデフォルトで登録済み) $ ionic start sampleApp blank -a "アプ…

ionic(cordova)で本番環境、開発環境を切り替える

ionicに限った話じゃないかもしれないけど。 今回やりたかったのは、本番と開発でつなぎこむAPIのURL等を切り替えたりしたかった。今回は少し調べて、node-env-fileというのを使った。 また、gulp-concatも使ってる。今回は以下のようなファイル構成を想定。…

ionic(cordova)で横スクロールするメニューを実装するときのメモ

cssでの実装でこちらを参考にそのままいけました。 Appleに学ぶ、横スクロールナビを組む時のCSSメモ - Qiita Horizontal Scrollable Navigation Sampleが、ionic serveでブラウザで確認したところ問題なかったのだがビルドしてアプリとして確認したところ動…

【mysql】特定のキーワードが入っているレコードでソートする方法メモ

こんなことができたのか キーワードがあるものを上にもってくる。 select id, title from daily order by title like "%キーワード%" desc;以上です

【cakephp】サブクエリを実行する方法メモ

サブクエリのサンプルメモ。 ついでにgroup by した結果のレコード数を求めるサンプル。 $dbo = $this->MyTable->getDataSource(); $subQuery = $dbo->buildStatement(array( "fields" => array("distinct MyTable.id"), "table" => "my_table", "alias" => …

【cakephp】paginateでのorderが効かなかった時の対応

また、たまにしか触らないcakephpではまった。しかもバージョン1 paginateでなぜかorderだけ効かなかったこんな感じの基本的?なもので他では動いていたのに。。。 $this->paginate = array( "fields" => array( "Table.field1", "Table.field2", ), "order" …

【ionic】ionic buildでgulpを実行する

今回やりたかったのは、ionic buildでもgulpが動くようにしたかった。https://codepen.io/leob6/post/quick-tip-using-gulp-to-customize-the-serve-run-and-build-process-for-your-ionic-framework-apps こちらにやり方書いてあった。gulpfile.jsの例 gulp…

git mergeやり直し手順メモ

git

マージし直すときの手順メモ。いちおう今回はマージ先のブランチを残したい場合。で、この例だとgit reset でやり直せるけど今回やりたかったのはpushしたマージをやり直したかったのでこの形になった。最初のマージ $ git branch * dev1 dev2 $ git merge d…

無料で使えるSEOツールまとめメモ

seo

最近、SEOツールを調べる機会があったのでメモしておく。っていっても使いこなせないのだが。。また調べることがありそうなのでそのときのためにメモしておく。 SEOチェキ http://seocheki.net/ ・発リンク数(外部リンク、内部リンク) ・Alexa traffic rank …

【ionic】タブの中に入れ子でタブをいれる方法メモ - ion-tabs

はじめに 今回やりたかったのはこんな画面。 イマイチできるのか不安だったけど無事できた。ionicは海外の情報が多くて「ionic tabs inside tabs」とか「ionic tab nested」ってみんな検索してるみたい。イメージはこんなかんじ アプリ特有?かわからないけど…

【angularjs】$http.postでのjson送信でoptions method not allowedを解決した時のメモ

やりたかったことは、localhostのサーバーで動いてるクライアントHTMLからサーバー上のAPIにPOSTでJSONを送るということでした。 なんかうまくいかなくて色々やってみたけど、結論からいうとangular側は以下のコードでいけました。クライアント側 $http.post…

【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じゃないといけないって記事があってコレが原因って線で…