MACでディレクトリ一括差分チェックする方法をメモ
windowsであればwindiffがあるが、macはあまり対応ソフトが少ない。diffコマンドでも可能だがGUIのほうが見やすいので使いやすいものをピックアップ。
いくつか使用したがstory + p4margeの組み合わせがディレクトリ差分と日本語差分に対応できるのでいいと思う
ただ差分ファイル名を取得するだけとかならdiffコマンドが楽
差分ファイル名取得コマンド)diff -rq ディレクトリ名1 ディレクトリ名2
storyをダウンロード・インストールする
公式サイトより
Japanese OSX PPCをダウンロードし実行する
p4margeをダウンロード・インストールする
公式サイトより
Visual Clientをダウンロードし実行する
Applicationsディレクトリへ移動しておく※次のパス指定で使用する
storyのdiffツールにp4margeを設定する
story.appを起動し下記に移動する
メニュー > 環境設定 > デフォルトアプリケーション
「テキスト差分ツール」に「別のアプリケーションを使用する」のラジオボタンをチェックして
「/Applications/p4merge.app/Contents/Resources/launchp4merge」を設定する
※p4margeをApplicationsへ保存した場合
storeを起動して差分実行
storeを起動して「ディレクトリの比較」ダイアログで比較対象のディレクトリを指定して「比較」ボタン押下で実行可能。
あとはwinmargeと殆ど変わらずファイルの差分がチェックできる
関数型・メソッド型でプラグインを実装する方法をメモ
プラグインを自作する場合に対応する内容をメモ
プラグインには2種類の提供方法があり、$から呼び出す関数型、$()で呼び出すメソッド型とある。
それぞれ実装方法がことなるため使い分ける必要がある。
関数型・メソッド型の実装
alert(“hello world”);を実装する例)
// 関数型プラグイン
$.test = function(){ alert("hello world"); };
// メソッド型プラグイン
$.fn.test = function(){ alert("hello world"); };
関数型プラグインの実装とコール
関数型の場合は$のプロパティに直接関数を代入する
実装
$.test = function(a,b){ return a + b; }
コール
alert($.test(10,10));
メソッド型プラグインの実装とコール
メソッド型の場合は$.fnのプロパティに関数を代入する
実装
$.fn.test = function(a,b,c){ console.log(a,b,c,this); }
コール
$('#id').test(1,2)
githubで新規リポジトリ作成のあとのpushコマンドについてメモ
githubにリポジトリを生成しファイルをアップするときに必要となるremoteとpushコマンドについて。
Create a new repository on the command line
下記コマンドをそのまま実行する事でリポジトリにファイルをpush(アップ)することが可能
touch README.md git init git add README.md git commit -m "first commit" git remote add origin [サーバリポジトリURL] git push -u origin master
分かりにくいのは最後の二行かな
git remote add origin [サーバリポジトリURL] git push -u origin master
git remote add origin [サーバリポジトリURL]
のoriginはエイリアスでサーバのURLに別名を付けるために実行する。
別名を付けなくても良い場合にはこれはそもそも実行する必要なし
git push origin master
はorigin(サーバリポジトリ)へmaster(ローカルブランチ)をアップを実行する
masterをプッシュする場合には「-u」オプションを入れなくても良し
push = サーバへアップロード
origin = サーバリポジトリURL
master = デフォルトのブランチ名 (svnのtrunkと同じ)
git remote add で
エイリアスを付けない場合は
git push [サーバリポジトリURL] master
これで良い
masterの正式な形はmaster:masterのため
git push [サーバリポジトリURL] master:master
の形でも良い
端末全体のシステムログを取得するためのコードをメモ
システムログを取得するためにはマニフェストファイルにandroid.permission.READ_LOGSパーミッションが必要
端末内のインストールされている標準出力のログも出力するため、アンドロイドのセキュリティチェックに使える
アプリを作るときも標準出力が読み取られることをセキュリティとして知っとく必要あり
try { Process process = Runtime.getRuntime().exec("logcat"); BufferedReader reader = new BufferedReader( new InputStreamReader(process.getInputStream())); String line = reader.readLine(); //1出力毎にループ while(line != null) { } } catch (Exception e) {}
ActivityA,B間でA画面からB画面を立ち上げB画面をfinish()しA画面を再読み込みする方法をメモ
いままではA画面からB画面を立ち上げるときにA画面をfinish()してB画面からA画面を改めて呼んでいたけど、
こんな非効率じゃない方法があった。
onRestort()メソッドで再読み込みメソッドreload()をコール
public void reload() { Intent intent = getIntent(); overridePendingTransition(0, 0); intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); finish(); overridePendingTransition(0, 0); startActivity(intent); }
エラー改善案をメモ
Androidからローカルサーバにアクセスするときにlocalhost指定の場合、
「org.apache.http.conn.HttpHostConnectException: Connection to http://localhost refused」エラー
となる。※127.0.0.1も同様エラー
IPアドレスを指定
ローカルPCには、10.0.2.2を指定する
macでEclipse補完を行うためのメモ
「CTRL(^)+SPACE」はmacのspotlight検索のショートカットに割り当てられているため、Eclipseの補完ができないため対応
Eclipseのコード補完のキーバインドを変更する手順
「Eclipse」→「環境設定」→「General」→「Keys」で”Content Assist” 「CTRL(^)+SPACE」を好きなキーバインドに変更すれば完了
opauthライブラリを使用してFacebook認証を実装する手順をメモ
[FuelPHP]opauthライブラリで速攻SNS認証(Twitter,Facebook,Google etc)で投稿しているopauthライブラリの実装方法について。
opauthはPHPのフレームワーク毎にパッケージ化されており、FuelPHPも既にパッケージ化されている。
https://github.com/andreoav/fuel-opauth
※バグ改修、コードリファクリングで何度か更新されているっぽい
一度大元となるFuelPHPのopauthパッケージをプロジェクトに導入すると、あとは各ストラテジのファイルを入れ込むだけで簡単に各種SNS認証が導入できる。
2013/1現在のFuelPHPのopauthパッケージには、既にFacebook,Twitterの二つのストラテジは入れ込まれている。
今回はとりあえずFacebookの認証を動くところまで試す。取り込み手順はREADMEのHow to use の4手順。
プロジェクトフォルダ(プロジェクト名)は「basedemo」としてローカル環境で試す
導入手順 ※導入はおよそ10分程
手順1.Facebook管理者ページの設定
Facebook開発者ページからアプリ登録を行い、「App ID」「App Secret」を取得する。
https://developers.facebook.com/apps
[Facebookでログインするウェブサイト]の[Webサイト]には手順5で作成するController_AuthクラスのAction_Loginメソッドにストラテジ文字列を引数としたアドレスがログインページとなるので以下のようにする。
http://[サイトパス]/auth/login/facebook/
※ローカル環境の実行の場合はlocalhostで問題なし
今回は「http://localhost/basedemo/auth/login/facebook/」を設定する
この[Webサイト]パスを間違えると下記のようなエラーが出るので注意
—————————————————————————————————————————————
API Error Code: 191
API Error Description: The specified URL is not owned by the application
Error Message: Invalid redirect_uri: 指定されたURLは、アプリケーションの設定で許可されていません。
—————————————————————————————————————————————
手順2.プロジェクトにopauthライブラリをgitからclonesで取り込む ※How to use の1
cd basedemo/fuel/packages/ git clone git://github.com/andreoav/fuel-opauth.git opauth
※zipファイルでダウンロードしてフォルダをパッケージ配下に配置しても同様
手順3.opauth.php設定ファイルの作成 ※How to useの2
opauth/config/opauth.phpをbasedemo/fuel/app/config/にコピーする ※新規作成でも良い
<?php 'path' => '/basedemo/auth/login/', 'security_salt' => 'testtesttest', // デフォルトで設定されている値と違うものにする ※同じ場合動作しない 'callback_url' => '/basedemo/auth/callback/', 'Strategy' => array( 'Facebook' => array( 'app_id' => 'APP_ID', // 手順1で取得した「App ID」の値を設定 'app_secret' => 'APP_SECRET' // 手順1で取得した「App Secret」の値を設定 ), ),
security_saltはデフォルトと違う値かどうかをコード上チェックしているため、別の適当な値を設定すること。
今後ストラテジを追加する場合にはFacebookと同様に追加して記載する。
Twitterの場合:
'Twitter' => array( 'key' => 'KEY', 'secret' => 'SECRET' ),
pathとcallback_urlについてはサイト直下に作成している場合は「How to useの2」に記載されている通りpath[/auth/login/]、callback_url[/auth/callback/]でいいが、今回はlocalhost直下ではなくlocalhost/basedemoなので[/basedemo]を付け忘れないこと。今回ここで4時間ぐらい無駄にハマった・・・
それぞれController_AuthクラスのAction_Authメソッド、Action_Callbackメソッドを呼び出している。
手順4.config.phpの設定 ※How to useの3
opauthをパッケージとして読み込む設定をする
<!--?php 'always_load' =--> array( 'packages' => array( 'opauth', ), ),
手順5.コントローラファイルの作成 ※How to useの4
auth.phpを[/fuel/app/classes/controller]へ新規作成する
あとは「How to useの2」のコードをそのままコピペ
<!--?php class Controller_Auth extends Controller { private $_config = null; public function before() { if(!isset($this--->_config)) { $this->_config = Config::load('opauth', 'opauth'); } } /** * eg. http://www.exemple.org/auth/login/facebook/ will call the facebook opauth strategy. * Check if $provider is a supported strategy. */ public function action_login($_provider = null) { if(array_key_exists(Inflector::humanize($_provider), Arr::get($this->_config, 'Strategy'))) { $_oauth = new Opauth($this->_config, true); } else { return Response::forge('Strategy not supported'); } } // Print the user credentials after the authentication. Use this information as you need. (Log in, registrer, ...) public function action_callback() { $_opauth = new Opauth($this->_config, false); switch($_opauth->env['callback_transport']) { case 'session': session_start(); $response = $_SESSION['opauth']; unset($_SESSION['opauth']); break; } if (array_key_exists('error', $response)) { echo '<strong style="color: red;">Authentication error: </strong> Opauth returns error auth response.'." \n"; } else { if (empty($response['auth']) || empty($response['timestamp']) || empty($response['signature']) || empty($response['auth']['provider']) || empty($response['auth']['uid'])) { echo '<strong style="color: red;">Invalid auth response: </strong>Missing key auth response components.'." \n"; } elseif (!$_opauth->validate(sha1(print_r($response['auth'], true)), $response['timestamp'], $response['signature'], $reason)) { echo '<strong style="color: red;">Invalid auth response: </strong>'.$reason.". \n"; } else { echo '<strong style="color: green;">OK: </strong>Auth response is validated.'." \n"; /** * It's all good. Go ahead with your application-specific authentication logic */ } } return Response::forge(var_dump($response)); } }
動作確認
「http://localhost/basedemo/auth/login/facebook/」を実行してfacebookのログインページに遷移すればOK。あとはログインして完了すると「OK: Auth response is validated.」が表示されれば成功。
画面上はfacebookからのレスポンス情報が表示されているはず。
最後に・・・
単に配置しただけで認証のみは簡単に行えた。あとはDBに情報格納やらプロジェクトにあったコールバック処理、遷移に変えればよさそう。
その他ストラテジの追加は下記公式サイトよりストラテジファイルをダウンロードして配置して、config設定を行い多少修正すれば、おそらくすぐに実装が可能。
公式サイト:http://opauth.org/
あれ、ログアウト処理ないね。。セッション値を削除すればいいかな。
サンプルデモアプリ「BaseDemoプロジェクト」を公開
FuelPHPをでサービスを作るとして必要となるであろう機能のベースを勉強しながら作成している。途中過程をGitHubへアップ。前回の投稿記事「[FuelPHP]独自オリジナル認証ドライバをsimpleauthを参考に実装する」反映済み
機能としてはログイン(オリジナルドライバ)、サインアップ、アカウント管理機能を実装
※SNS認証についてはアップ段階では未実装。今から直ちに実装予定。
GitHubリポジトリ:
https://github.com/y-matsumoto/BaseDemo.git
※README参照
機能詳細
1.認証ログイン
下記、投稿記事コードを実装
[FuelPHP]独自オリジナル認証ドライバをsimpleauthを参考に実装する1
[FuelPHP]独自オリジナル認証ドライバをsimpleauthを参考に実装する2
[FuelPHP]完成?:独自オリジナル認証ドライバをsimpleauthを参考に実装する3
2.サインアップ
画面:
一般ユーザ権限で作成可能。管理ユーザは画面上作成不可 ※コンソールから作成
権限:
Admin/Userのみ ※権限により処理(画面など)をswitchしてる
管理画面[controller/admin]・一般ユーザ画面[controller/user]を継承
3.アカウント管理(プレビュー)
新規・編集
※スキャフォールドをベースに作成してるため、あまり使えるViewではないのかもない
導入手順
1.clone作成
$ git clone git://github.com/y-matsumoto/BaseDemo.git
2.db関連
プロジェクト直下database.sqlを実行
3.ファイルバーミッション設定 ※やらなくてもいい
$ oil refine install //or [oil r install]
4.apache設定
basedemo/public/をhtdocsへ置く // or シンボリックリンク
5.account作成(admin権限) ※signupで作成する場合は一般ユーザ権限のみ
•[oil console]コマンドでコンソール上からcreatメソッドをコール
$ oil console // start
>>> Auth::create_user(‘admin’, ‘password’, ‘test@test.co.jp’, 100); // create user execute
1 // complete
>>> exit; // end
※導入手順は未確認のため、なにかあればご連絡ください。
よければ・・・
その他、ソースコードの指摘やフォルダ構成の指摘、全体アドバイスなど
もらえると参考になるのでコメント期待!
身近にスキル上、レビューできる人がいないのでコードが煩雑かも・・・
さてSNS認証つけよっと。
GooglePlayに企業研修で卒業制作として作成したカメラアプリをリリースしています。
普段だいたい1日1500インストールくらいのアプリですが下図の通り12/25のクリスマスは一気に伸びました。アプリをリリースして初めての3500超え。下の図だと分かりにくいですが飛び抜けているところがクリスマスです。
統計情報から人間観察ができて面白いなと思ったのでアップ
coffee-break
Don't write code that useless.
1日5杯はコーヒー、カフェオレ飲みます。狭心症のため安静にします☆松本 雄貴
Kotlinでサービスリリース目指す!
iOSでチャットアプリ作成中。自然言語解析LSIを習得中
Mac / Android・iOS / Rails / Oracle
2017年 Lpic L2取得
2012年 Android技術者資格取得
2010年 OracleMasterGold10g取得
2008年 CCNAQiitaもたまに投稿
https://qiita.com/y-matsumoto東京近郊で常駐開発探してる方はこちらよりご連絡ください
SES企業でパートナー会社を探している企業様はこちらよりご連絡ください
スプリットカメラ iOS / Android
音声認識で聞いた日付から曜日当てアプリ Android
ソーシャルタイマー Android
カテゴリー
- ActiveRecord (2)
- Android (52)
- AndroidStudio (10)
- Ansible (1)
- AWS (1)
- Bash (18)
- Blog (7)
- BootStrap (1)
- CentOS (16)
- Chef (1)
- css (2)
- Eclipse (5)
- error (1)
- Facebook (2)
- Firebase (1)
- FuelPHP (16)
- Git (22)
- GitHub (3)
- Gradle (2)
- GraphAPI (1)
- Grunt (1)
- heroku (2)
- illustrator (1)
- iOS (17)
- Java (4)
- Jenkins (1)
- jQuery (3)
- Kotlin (2)
- Mac (22)
- nginx (1)
- Node.js (3)
- peco (1)
- php (5)
- Python (1)
- Rails (16)
- Ruby (11)
- shell (1)
- SNS (1)
- Swift (2)
- tmux (2)
- Vagrant (6)
- Vim (6)
- windows (2)
- WordPress (3)
- zsh (4)
- フリーランス (1)
- ライブラリ (1)
- 勉強会 (2)
- 宣伝 (1)
- 未分類 (2)
最近の投稿
- [MAC]HighSierraでgitプッシュエラー「Unable to negotiate with xxx.xxx.xxx.xxx port xx: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se fatal: Could not read from remote repository.」
- [iOS]iOS11からFacebook,Twitter連携(シェアなど)廃止の対応方法
- [iOS]速報2017AppleSpecialEventのiOS11、iPhone8など発表内容について
- [iOS][Firebase]The default Firebase app has not yet been configured. Add `[FIRApp configure];
- [iOS]2017年9月リリースのiOS11で開発者が対応するべきこと
- 今人気の現金化サービスCASH(キャッシュ)を使ったレビュー
- [Pandoc][Mac]pandocでmarkdownからwordファイル作成
- [Android]映画サマーウォーズの聞いた日付(誕生日)から曜日当てをアプリ音声認識で簡単に実現
- [Android]起動しているActivityを取得するadb shell コマンド
- [Android][Kotlin]kotlin学習で参考になるサイト一覧
2023年6月 月 火 水 木 金 土 日 « 5月 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 アーカイブ
- 2018年5月
- 2017年9月
- 2017年8月
- 2017年7月
- 2017年6月
- 2017年5月
- 2017年2月
- 2017年1月
- 2016年12月
- 2016年7月
- 2016年6月
- 2016年1月
- 2015年12月
- 2015年11月
- 2015年10月
- 2015年9月
- 2015年8月
- 2015年7月
- 2015年6月
- 2015年5月
- 2015年4月
- 2015年3月
- 2015年2月
- 2015年1月
- 2014年12月
- 2014年11月
- 2014年6月
- 2014年5月
- 2014年4月
- 2014年3月
- 2014年2月
- 2014年1月
- 2013年12月
- 2013年11月
- 2013年9月
- 2013年8月
- 2013年7月
- 2013年6月
- 2013年5月
- 2013年4月
- 2013年3月
- 2013年2月
- 2013年1月
- 2012年12月
- 2012年10月
- 2012年5月
- 2010年6月
エントリ