Dramsuko_wiki
Program
目次
Android アプリ開発 †
開発ソフト †
eclipse †
Android 開発のサポートが2015年12月で終了することが発表されています。
Android Studio †
Eclipse 亡き後、無料の開発ツールはこちらにシフトしていくように感じます。
Windows,Mac,Linux 全てのOSに対応しているため、Eclipse 同様使い勝手は良さそうです。
Android Studio(Ubuntu) †
Install †
- 2020/8/29
- 事前準備
sudo apt install openjdk-11-jdk
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1
libbz2-1.0:i386 adb
sudo apt install qemu-kvm
sudo adduser $USER kvm
- Android Studio のダウンロード
- ファイルを展開(path名は適宜変えて下さい)
mkdir ~/androidStudio
mv android-studio-ide-193.6626763-linux.tar.gz ~/androidStudio
cd ~/androidStudio
tar zxfv android-studio-ide-193.6626763-linux.tar.gz
- studio.sh を実行
android-studio/bin/studio.sh
- 過去の設定を読み込むか聞かれる。とりあえず「Do not import settings」を選択。
- (このあと固まってるようだったので ctrl + c で一度キャンセル、再実行した)
- Data Sharing
- 自分はとりあえず「Send usage statistics to Google」を選択。
- 無料で使えるソフトは開発元にフィードバックしてお礼したい。
- (このあと固まってるようだったので ctrl + c で一度キャンセル、再実行した)
- しばらくすると「Next」ボタンが出てきたので押した
- Install Type「Custom」を選択してみる。
- Select default JDK Location.
- Select UI Theme。自分は「Light」を選択して「Next」ボタン。
- SDK Components Setup。選択できる所はすべて選択して「Next」ボタン。
- Verify Settings。「Next」ボタン。
- Emulator Settings。「Finish」ボタン。
- Download中。しばし待つ。
- 「Finish」ボタン
- その後、何度か Ctrl + c を押してから再起動したら起動した。
初期設定 †
- 右上の「SDK Manager」を押して持っているAndroid のバージョンをチェックしダウンロード。
ショートカットキーまとめ †
- 全般
- エラーの対策候補の表示:Alt + Enter
- クイックフィックス:Alt + Enter
- ハイライトされているエラーへ飛ぶ:F2 or Shift + F2
- Refactor Rename:Shift + F6
- メソッドパラメーターの表示:Ctrl + P
- 使ったファイルの履歴からファイルを選択:Ctrl + E
- ナビゲーションバーを開く:Ctrl + Home
- コード生成メニューの表示:Alt + Insert
- 「ビュー」の選択を表示:Alt + F1
- 置換:Ctrl + R
- 囲む(TryCatch?など):Ctrl + Alt + T
- Introduce Variable:Ctrl + Alt + V
- コメント(行):Ctrl + /
- コメント(ブロック):Ctrl + Shift + /
- 検索:Shift,Shift
- Compile:Ctrl + F9
- 自動Import:Ctrl + Alt + O
- ソースの畳み込み:Ctrl + Numpad -
- ソースの展開:Ctrl + Numpad +
- デバッグ
- ブレークポイント:Ctrl + F8
- デバッグの実行:F9
- デバッグの停止:Ctrl + F2
- プログラムの再開:F9
- ステップオーバー:F8
- ステップイン:F7
- ステップアウト:Shift + F8
- カーソル位置まで実行:Alt + F9
- 定義
- 定義へジャンプ:Ctrl + B
- 参照されている箇所の表示:Alt + F7
- ローカル変数の定義:Ctrl + Alt + V
- フィールドの定義:Ctrl + Alt + F
- 定数定義:Ctrl + Alt + C
- メソッドの定義:Ctrl + Alt + M
- strings.xml へ書き出し:Alt + Enter -> Extract string resource
- エミュレーター
- Android:Home ボタン
- Android:Menuボタン
- Android:Startボタン
- Android:Backボタン
- Android:発信・通話ボタン
- Android:終話ボタン
- Android:検索ボタン
- Android:電源ボタン
- Android:ボリュームアップボタン
- Android:ボリュームダウンボタン
- Android:カメラボタン
- Ctrl + Numpad 5, Ctrl + F3
- Android:横レイアウトへ切り替え
- Ctrl + Numpad 7, Ctrl + Numpad 9
- Android:前のレイアウトに切り替え
- Android:次のレイアウトに切り替え
- Android:方向ボタン
- Android:方向ボタンの真ん中
Android 開発の基本 †
ソースのディレクトリ構造 †
- java
- Mainソースの場所
- app -> src -> main -> java -> (domain name) -> MainActivity?
- レイアウトの場所
- Main レイアウト
- app -> src -> main -> res -> layout -> activity_main.xml
- 横向きレイアウト landscape
- app -> src -> main -> res -> layout-land -> activity_main.xml
- constant(定数)
- 文字列のConstantファイル(定数設定ファイル)の場所
- app -> src -> main -> res -> values -> strings.xml
- 日本語文字列のConstantファイル(定数設定ファイル)の場所(初期は無いので作成)
- app -> src -> main -> res -> values-ja -> strings.xml
- 数字のConstantファイル(定数設定ファイル)の場所(初期はないので作成)
- app -> src -> main -> res -> values -> integers.xml
- AndroidManifest?.xml の場所
- app -> src -> main -> res -> AndroidManifest?.xml
エミュレーター †
カメラをエミュレートする †
その他 †
Log.d 種類 †
- Android Monitor, Logcat で表示
Log.e(TAG, error);
Log.w(TAG, warn);
Log.i(TAG, info);
Log.d(TAG, debug);
Log.v(TAG, verbose);
実行中のメソッド名を取得 †
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
for (StackTraceElement stackTraceElement : stackTraceElements) {
System.out.println("-----------------------------");
System.out.println("ClassName : " + stackTraceElement.getClassName());
System.out.println("FileName : " + stackTraceElement.getFileName());
System.out.println("MethodName : " + stackTraceElement.getMethodName());
System.out.println("LineNumber : " + stackTraceElement.getLineNumber());
System.out.println("-----------------------------");
}
インテントについて †
- インテントとは「機能」の呼び出しのこと。
例えばウェブブラウザーを呼び出すときは、
ブラウザーの名前を指定すること無く、
ウェッブラウザーの「機能」を呼び出す。
すると、ウェブブラウザー機能を持ったどのソフトを起動するか、
選択画面が表示される。
- またインテントはアクティビティー切り替えにも利用される。
独自Classの getString について †
Context を引数渡ししてあげればいい。
そうすると
argContext.getString(R.string.logdRunnning);
などで引ける。
全体的には
public void outputLogSummary(Context argContext,
Integer argMethodNo){
String logComment = argContext.getString(R.string.logdRunning);
this.outputLogSummary(argContext,argMethodNo,logComment);
}
呼び出し元は
private CommonCls pCommonCls = new CommonCls();
pCommonCls.outputLogSummary(this, METHOD_NO_MAIN_ACTIVITY);
Activity の追加 †
AndroidManifest?.xml に追加するのを忘れないようにしよう。
また追加は「新規」-「Activity」-「Brank Activity」で
追加するとレイアウトも一緒に追加されて便利。
以下はAndroidManifest?.xml
<activity
android:name=".Sample0501"
android:label="@string/title_activity_sample0501"></activity>
USB Developer options, 実機のデバッグ, 認識しない場合, debug †
- 最初にUSBケーブルでPCと接続
- Android studio を起動しておく
- [Developer options]-[USB debugging] をオン、オフする。
R.id.IntentRequestGeneral? †
- クイックフィックスから、[Create ID value resource] を選択してids.xmlを作成する。
- 値は1でOK。
その他 †
Android Studio(Windows) †
Download and Install †
Download †
Install †
ADVの作成 †
- Kitcat 4.4 API 19で作る。
- CPUがIntelの場合、あたり前だがCPU/ABIは x86を使用。
- The emulator process for AVD xxxxx was killed. が表示されて、すったもんだ1時間以上悩んだが、CPU/ABIがarmになってた。。。orz
PHP: Hypertext Preprocessor †
http://www.php.net/
- 日本PHPユーザー会 (Japan PHP User Group)
PHP,エディタ,IDE †
Eclipse †
Atom †
Microsoft Visual Studio Code †
- 最近はこれを使ってる。Linuxでも動く。
- 最近のMicrosoftは変わってLinuxと親和路線。良い感じ(^^)
- Install
- ubuntuへインストール
- Visual Studio Code公式ページ
- 以下のコマンドでインストール(例)
sudo dpkg -i code_1.51.0-1604600753_amd64.deb
- 日本語化
- プラグインのインストールから以下を検索
- File -> User setting -> plugin -> 「Japanese」で検索
- 「Install」をクリック
- その他プラグイン
- PHP IntelliSense?(ほぼ必須)
- PHP Debug(お好みで)
- Eclipse Keymap(お好みで)
- Ctrl + Hが変なところに割り振られるが、
以下から変更することで元に戻る。
- 「ファイル」->「ユーザー設定」->「キーボード・ショートカット」->「Ctrl+H」で検索。
- 不要なものを削除。
- PHP Debugの使用方法
- PHPのインストール
sudo apt-get update
sudo apt-get install php php-mysql
- Apache2のインストール
sudo apt-get install apache2
- PhpInfo?の表示方法
- 以下のファイルを作成
/var/www/html/phpInfo.php
- 中身はこんな感じ
<?php
phpinfo();
?>
- 表示
- PhpInfo?の全内容を以下のサイトにコピーして「Analyze my phpinfo() output」ボタンを押す
- download xdebug-2.9.8.tgz
- PreInstall?
sudo apt-get install php-dev autoconf automake
- 解凍
tar xzfv xdebug-2.9.8.tgz
- ディレクトリの移動
cd xdebug-2.9.8
- 以下のコマンドを実行
phpize
./configure
make
- 以下のコマンドの日付っぽい数字は各環境で変わります
sudo cp modules/xdebug.so /usr/lib/php/20170718
- 「/etc/php/7.2/apache2/php.ini」ファイルの編集
sudo vim /etc/php/7.2/apache2/php.ini
- 以下の行を最後に追加
; xdebug
zend_extension = /usr/lib/php/20170718/xdebug.so
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_autostart = 1
- apache2の再起動
sudo service apache2 restart
- 使用方法
- Visual Studio Code上
PHPコードの適当な所
ブレークポイントを設定(標準ショートカットはF9)
- Visual Studio Codeの左側のアイコン、上から4つ目,実行アイコンをクリック
- 「launch.jsonファイルを作成します」のリンクをクリック
- 「PHP」を選択
- 作られれば「launch.json」ファイルは不要なので閉じます。
- 「実行」->「デバッグの開始」を押します。
- Web Browser(Chromeなど)でアクセスします。以下は例
http://localhost/test.php
- Visual Studio Code 上で止まることを確認します。
phpで、Nikonのカメラで撮ったjpeg画像から、レンズ情報を抜き出す方法 †
mbstringの設定 †
mbstring の install †
yum install php-mbstring
mbstring の設定 †
[mbstring]
; language for internal character representation.
; http://php.net/mbstring.language
mbstring.language = Japanese ← コメント(;)をはずします。
; internal/script encoding.
; Some encoding cannot work as internal encoding.
; (e.g. SJIS, BIG5, ISO-2022-*)
; http://php.net/mbstring.internal-encoding
mbstring.internal_encoding = UTF-8 ← コメントをはずし、内部エンコーディングをUTF-8へ。
; http input encoding.
; http://php.net/mbstring.http-input
mbstring.http_input = auto ← コメント(;)をはずします。
; http output encoding. mb_output_handler must be
; registered as output buffer to function
; http://php.net/mbstring.http-output
mbstring.http_output = UTF-8 ← コメントをはずし、エンコーディングをUTF-8へ。
; enable automatic encoding translation according to
; mbstring.internal_encoding setting. Input chars are
:
; enable automatic encoding translation according to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
; portable libs/applications.
; http://php.net/mbstring.encoding-translation
mbstring.encoding_translation = On ← コメントをはずし、Onに。
; automatic encoding detection order.
; auto means
; http://php.net/mbstring.detect-order
mbstring.detect_order = auto ← コメント(;)をはずします。
CentOS6 に PHP5.6 をインストール †
EPELとRemiリポジトリを追加 †
旧PHPの削除 †
yum remove php-*
PHP5.6のインストール †
sudo yum install --enablerepo=remi,remi-php56 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt
php-mysql のインストール †
sudo yum install -y http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
sudo yum install phpMyAdmin?
そのたダメおしインストール †
sudo yum install -y --enablerepo=epel libmcrypt libtidy
sudo yum install -y --enablerepo=remi,remi-php56 php php-devel php-pear php-mbstring php-xml php-mcrypt php-gd php-pecl-xdebug php-opcache php-pecl-apcu php-fpm php-phpunit-PHPUnit php-mysqlnd
php.iniを編集 †
date.timezone = "Asia/Tokyo"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8
mbstring.http_output = pass
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_charset = none
php5 -> php7 へマイグレーション(CentOS7へのインストール) †
Apacheのインストール †
sudo yum install httpd
mysqlのインストール(CentOS7) †
php のインストール(CentOS7) †
sudo yum install --enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-gd
sudo yum install --enablerepo=remi,remi-php70 php-mysqlnd
mysql関連のソースコード変更 †
- 参考リンク(外部) : mysqlをmysqli(手続き型)に書き直した時のメモ
- $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD);
- -> $con = mysqli_connect($DBSERVER, $DBUSER, $DBPASSWORD);
- 「i」を付ける
- $selectdb = mysql_select_db($DBNAME, $con);
- -> $selectdb = mysqli_select_db($con, $DBNAME);
- 「i」を付け、$con と データベース名を逆にする
- $col = mysql_fetch_array($rst)
- $rst = mysqlmysqli_query($con, $sql);
- -> $col = mysqlmysqli_fetch_array($rst)
- 「i」を付ける
- mysql_affected_rows()
- $con = mysqli_connect($DBSERVER, $DBUSER, $DBPASSWORD);
- $rst = mysqli_query($con, $sql);
- -> mysqli_affected_rows($con)
- 「i」を付ける
- ONLY_FULL_GROUP_BY の制限
- 参考リンク(外部) : 脱!ゆるふわMySQL
- group by する際, select で指定している項目は全て書かなければならない。
- 以下はエラー
select columnA, columnB, columnC, columnD from tableName group by columnA
- 以下へ修正
select columnA, columnB, columnC, columnD from tableName group by columnA, columnB, columnC, columnD
その他 †
バージョンアップ(for zabbix) †
バージョンアップ前後のバージョン †
install されている php 関連パッケージを確認 †
rpm -qa | grep php
epel のインストール †
sudo yum install epel-release
remi のインストール †
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-6.rpm
旧PHPの削除 †
yum remove php*
libwebp のインストール(したコマンドのエラー対策) †
yum install libwebp --enablerepo=epel
バージョンアップ・コマンド †
yum install --enablerepo=remi,remi-php71 php php-pdo php-mbstring php-common php-cli php-mysql php71-php-bcmath php-gd php-xml php-gd
エラー表示 †
リンク †
PHPファイルで設定 1 †
<?php
// エラーを出力する
ini_set('display_errors', "On");
?>
PHPファイルで設定 2 †
<?php
// エラーを出力する
ini_set( 'display_errors', 1 );
?>
httpd.conf or .htaccess †
php_flag display_errors off
php.ini †
display_errors = Off
PHP,その他 †
fopen, fgets, したハンドルをリセットする †
- ファイルポインタの位置を先頭に戻す
- 例
<?php
$handle = fopen('output.txt', 'r+');
fwrite($handle, 'Really long sentence.');
rewind($handle);
fwrite($handle, 'Foo');
rewind($handle);
echo fread($handle, fil
PHP Warning: PHP Startup: Unable to load dynamic library './ext/php_exif.dll' - 指定されたモジュールが見つかりません。 †
- 参考
php_exif.dll | EXIF 関数 php_mbstring.dll。 php.ini で php_exif.dll は php_mbstring.dll の後で読み込まれる必要がある。 |
- php.iniの場所を確認
- Windows(以下のコマンドの結果と同じPathにある)
where php
- Linux
which php
- /bin の場合
- php.iniで以下、修正
extension_dir = "./ext/"
extension=php_mbstring.dll
extension=php_exif.dll
今さら「PHP 5.2.1」「Apache 2.2」「MySQL 5.0.51a」+「Visual Studio Code(VS code)」でデバッグ環境(XDebug)を作る。 †
Apacheのダウンロードとインストール †
- 以下のサイトからダウンロード
- MSIファイルを実行してインストール
- conf ファイルの編集
- 自分の場合のpath
- "C:\php\Apache2.2\conf\httpd.conf"
- 変更箇所1
- 変更後
#Listen 80
Listen 20080
- 変更前
Listen 80
- 変更箇所2
- 動作確認
- 一応 Apacheは再起動
- Windows PCで以下のURLにアクセス。
「It works!」と表示されればOK。
- サービスの自動起動停止(ここはお好みで)
- Windows + x -> コンピューターの管理 -> 下の方の「サービス」から変更。
- Monitor Apache Servers の自動起動も停止
- Ctrl + Shift + Esc -> 「スタートアップ」タブから無効化
PHPのインストール †
- ダウンロード
- 解凍する。php-5.2.1-Win32.zip
- 解凍したものを自分は以下のフォルダへコピー
- php.iniファイルの作成(templateからコピー)
- 元ファイルについて
- php.ini-recommended
- php.ini-dist
- なので php.ini-dist をコピーして名前を以下に変更
- もう一度、apacheのconfファイル編集
- 動作確認
- phpinfo.php というファイルを以下のフォルダへ作成。
- "C:\php\Apache2.2\htdocs\phpinfo.php"
- ファイルの中身は以下な感じで作成。
<?php
phpinfo();
?>
- 確認
- PHP Version 5.2.1 などの青っぽい画面が表示されればOK
ebugger のインストール †
- 以下のサイトからダウンロード
- https://xdebug.org/download/historical
- PHP 5.2 に合うXDebuggerはピンポイントで以下。
- 「Xdebug 2.1.2」「PHP 5.2 VC6 TS (32bit)」
- TS はスレッドセーフ(Thread Safe)の略。
- 対義語はNTS(Not Thread Safe)
- ダウンロードするとわかるが、dllのファイルにNTSが付いてない=TS
- ダウンロードしたdllファイル(php_xdebug-2.1.2-5.2-vc6.dll)を以下のフォルダへコピー。
- php.iniの編集
- インストールされたか確認
- 一応Apacheは再起動
- コマンド・プロンプトから以下のコマンドで確認
php -v
- 以下の表示で認識したことを確認
- C:\Users\metal>php -v
PHP 5.2.1 (cli) (built: Feb 7 2007 23:11:26)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
with Xdebug v2.1.2, Copyright (c) 2002-2011, by Derick Rethans
- 注意:phpinfoには反映されません
VS code(Visual Studio Code) †
- PHP Debugのインストール
- 左側のテトリスみたいなマークをクリック。
- 検索のテキスト・ボックスに「PHP Debug」を入力し検索する。
- 検索結果を選択し右側の「インストール」ボタンを押しインストール。
- PHP Debugの設定
- 左側の虫と再生マークをクリックする。(下から2番目)
- 「launch.json」のリンクをクリックする。(「実行とデバッグ」の下)
- 「PHP」を選択。
- その前に「ワークスペース」と出る事もある。
- 以下のように編集
"launch": {
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug 2 (Legacy)",
"type": "php",
"request": "launch",
"port": 9000
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000,
}
]
}
- PHP Intelephenseの設定確認
- 左側、テトリスみたいなマークをクリック
- 「PHP Intelephense」の歯車マークをクリック
- 「拡張機能の設定」をクリック
- どこかにある「settings.jsonで編集」をクリック
- 以下2点、合っているか確認し、違っていれば修正
"php.validate.executablePath": "C:\\php\\php521\\php.exe",
"php.executablePath": "C:\\php\\php-521\\php.exe",
- 動作確認
- 一応Apacheは再起動
- VS code で先程作った phpinfo.php を開く。
- 「phpinfo();」 の左側をクリックしブレークポイントを設定。
- 実行前に「Launch currently open script」を選択する。
- F5キーで実行
java †
servlet の 405 エラー †
- doGet メソッドに super.doGet(req,resp); を含めてはいけない。
Subversion †
参考サイト(Linux-UbuntuでのSubversionのインストールと使い方)
Install †
Subversion の設定 †
リポジトリの作成 †
sudo mkdir /home/svn/
cd /home/svn/
sudo svnadmin create test
作成したファイルの権限変更 †
cd /home/svn/
sudo chown -R www-data:www-data test
ElipseへSubversion client をインストールする。 †
Android studio, Subversionの設定(中身なし) †
- [バージョン管理]-[Enable version control integration...]
- [Subversion]を選択しOK
- 最初にチェックアウトを行う
- [バージョン管理] - [バージョン管理からのチェックアウト]-[Subversion]
UML図 †
シーケンス図(Sequence Diagram) †
- 自動で書けるツールを色々と探してたが見つからなかった。
ただし以下のソフトはとても良かったので紹介。