正規表現基本

^
行頭(改行コードの後でもマッチする)

$
行末(改行コードの前でもマッチする)

\A
文字列の先頭にマッチ(改行コードの後ではマッチしない)

\Z
文字列の末尾にマッチ(改行コードの前ではマッチしない)
(文字列の最後が改行の場合のみ改行コードの前でマッチする)

\z
文字列の最後も含め改行コードの前ではマッチしない

.
任意の1文字(改行は除くmオプションで改行含む)

|
または

( )
グループ化

文字クラス

[ ]
文字クラス(文字集合)


文字クラス内で範囲

^
文字クラス内で先頭のみ否定(文字集合以外の文字という意味)

数量子

*
0以上(?で最短マッチ)

+
1以上(?で最短マッチ)

?
0 か 1 か

{m,n}
m から n(片方を省略すると以上、以下)

メタ文字

\s
空白(\Sは空白以外)

\n
改行

\t
タブ文字

\w
文字(\Wは文字以外)

\d
数字(\D数字以外)

走査の順番

文字列:abcdefgab
パターン:cf

走査の順番は、走査される文字列(abcdefgab)の先頭(a)から
パターンと照合し、ダメなら次の文字列のbからパターンと照合。
文字列のcまでくると、パターンのcとマッチするので、
パターンは次のfに行く。
そこで、文字列がbでパターンがfなのでマッチが失敗。
走査の対象にパターンと同じ組み合わせがでてこないとダメ。

先読み・後読み

アンカーにマッチする。もとの走査とは別の走査。

・肯定的先読み
foo(?=bar)

走査してbarが見つかると、barの直前にマッチする。
結果、直後にbarがあるfooにマッチする。

・否定的先読み
foo(?!bar)

走査時、全ての位置にマッチし、barがあると直前をマッチから外す
結果、直後にbarがないfooにマッチする。

・肯定的後読み
(?<=bar)foo

走査してbarが見つかると、barの直後にマッチする。
結果、直前にbarがあるfooにマッチする。

・否定的後読み
(?<!bar)foo

走査時、全ての位置にマッチし、barがあると直後をマッチから外す
結果、直前にbarがないfoo(barは含まない)にマッチする。

***

(?)は固定で、?の後に=か!がくる。アンカーをパターンの後ろにしたい場合、
=か!の前に<をつける。

パターンを含む行
^.*abc.*

パターンを含まない行
^(?!.*abc).*

実験(電話番号)

(?=(?:\d-?){10}$|\d{3}-\d{4})(\d{2,5})-(\d{1,4})-(\d{4}$)
の場合
(?=(?:\d-?){10}$|\d{3}-\d{4})
まで先読み。

まずこのマッチは?:を(?:はメモリしない意)外して考える。
(\d-?){10}
これはハイフンは無視して数字が10連続しているかどうか。
NG 123456789
NG 123456789a
NG 123456789a0
OK 1234567-8-9-0
OK 1234567890
OK 123456789-0

\d{3}-\d{4}
を追加して、
(\d-?){10}|\d{3}-\d{4}
とすると。
OK 123-4567
NG 1234-567
NG 12-34567

この先読みでマッチした場合のみ、後ろの、
(\d{2,5})-(\d{1,4})-(\d{4}$)
へ走査が続く。

・参考

文字列を含まない行
^(?!.*name).*

文字列より前
^.*?(?=name)

・カンマ区切り

JavascriptでPOST基本

 

受け取り側

Mouse Without BordersからInput Director

長い間Mouse Without Bordersを愛用していたけどVerupしたら動かなくなってしまった。仕方ないので、Input Directorに変更した。

WifiでLANの帯域を使うとマウスがカクカクしてしまうのはMouse Without Bordersと一緒っぽい。

基本設定

Client Systems>Add
でHostnameに接続したいIPアドレスを入力してOK。

Global Preferences>Reset to Defaults
でリセットできる。

Global Preferences>Run Input Director on startup
Input Director is Enabledに変更。

Global Preferences>Cursor “Water Ripple” effect
チェックを外す。

Global Preferences>Preferred Network Interface
で現在利用しているNICに変更する。

Vim PHPのdic作成

上記をmkvimdic.phpとして保存。

php mkvimdic.php > php.dict

php.dictが作成される。

autocmd FileType php :set dictionary=~/dict/php.dict

.vimrcに追記する。

 

レンタルサーバーにVimとctagsをインストール

レンタルサーバーは自分でコンパイルする必要がある。

./configureをするとmakefileが作られる。ここでオプションを指定することができる。

例えば、–prefix=???とすると、そこにインストールされる。

makeでコンパイルし、make installでインストールする感じ。

Vim

ctags

AndroidStudio インスト~設定 Android(Java)メモ① 

Javaをインストール(必要な場合)

ダウンロードするのは、JavaSE。
JavaSEとは、Java Platform Standard Edition(バージョン5.0までは  J2SEと呼ばれていた)
SEにサーバ向けライブラリをプラスしたのがEEでエンタープライズという感じ。

JDKを保存。JREはランタイムでJDKに内包されている。

Android Studio設定

・設定>ビルド、実行、デプロイ>Gradle>オフライン作業

・gradle.properties

1536から2048に変更。

# org.gradle.parallel=true
コメントアウトを削除し有効化。

・ショートカット変更

タブの移動をVisualStudioと合わせる。

日本語化

http://mergedoc.osdn.jp/
から
Pleiadesのプラグインをダウンロードして、
jp.sourceforge.mergedoc.pleiades

C:\Users\s.okamura\.AndroidStudio2.3
に配置。

Help > Edit Custom VM Options
で新規作成したファイルに
-Xverify:none
-javaagent:C:\Users\s.okamura\.AndroidStudio2.3\jp.sourceforge.mergedoc.pleiades\pleiades.jar
と記入。

Pleiadesにインストーラが付属し基本はインストールするだけ。

実機デバッグ

Tools > Android > SDK Managerで実機のAndroidと同じバージョンのSDKをインストール。
同じ画面の下の方にある、Launch Standalone SDK Managerをクリックして、
別タブにあるGoogle USB Driverにチェックをしてインストール。

実機の端末情報の表示から、ビルド番号を連打して開発者向けオプションを表示させ、
USBデバッグをON。

USBでPCと実機を接続。今回はXperiaZ2なので、
http://developer.sonymobile.com/downloads/drivers/xperia-z2-tablet-driver/
からドライバを入手しインストールする。

新しいプロジェクトを作成するとき、Phone and Tablet で実機と同じバージョンを選ぶ。

ADB(Android Debug Bridge)を利用する場合

パスは以下で、環境変数にパスを通しておく、
C:\Users\s.okamura\AppData\Local\Android\sdk\platform-tools
sysdm.cplで起動し、ユーザー環境変数のPathに追加。

adb devices
adb kill-server
adb start-server

サンプルコード(インテント)

サンプルコード(ダイアログ表示)

サンプルコード(レイアウト生成+トースト表示)

サンプルコード(レイアウト生成+リスト表示)

レイアウトXML(tools)

開発時にのみ使用される情報
xmlns:tools=”http://schemas.android.com/tools”名前空間

tools:context=”.MainActivity”
レイアウトとアクティビティの関連付けによって、レイアウトエディタにテーマが反映される。

レイアウト種類

・FrameLayout > CoordinatorLayout

・LinearLayout > FlexboxLayout
一直線にウィジェットを並べるレイアウト

・RelativeLayout > ConstraintLayout
相対的な位置指定をするレイアウト

・TableLayout
表形式でレイアウト

・GridLayout

・Absolute layout(非推奨)

レイアウトサイズ

・wrap_content
中身に合わせてサイズを調整。

・fill_parent > match_parent
親のサイズと同じ(最大サイズ)。

単位

DP・SP・PX

ConstraintLayoutのwidth / height

・wrap_content
従来同様

・match_parent > Match Constraints
制約のルールを満たす範囲内で指定できる最大限の領域。
実際しているする値はないので、
layout_width=”0dp”
として指定する。

・Fixed
固定値でサイズを指定。

起動ファイル指定

AndroidManifest.xml
より
android:name=”.Test1Activity”
のように指定する。

パッケージ変更方法

・AndroidManifest.xmlを編集する。

・build.gradleを編集する・物理構造を変更する。
MyApplication > app > src > main > java > com > example > mail > myapplication

・ファイルの先頭宣言部を書き換え。

Context

thisとgetApplicationContextで取得できる。

グローバル情報へアクセスするためのインタフェースであり、呼び出してContextが持つテーマを利用したりする。

Activityライフサイクル

・起動する場合。
onCreate
onStart
onResume
アクティビティの表示。

・別のアクティビティを呼び出す場合。
onPause 
別の画面が表示されている状態。
onStop
もとのアクティビティは停止。

・onPauseの時にもとのアクティビティに戻る場合。
onResume
もとのアクティビティ表示。

・別のアクティビティが表示後、
もとのアクティビティに戻る場合。
onRestart
onStart
onResume
もとのアクティビティ表示。

・画面の破棄
onDestroy

アクティビティは停止中に自動で削除される場合もある。

BroadcastとReceiver

・BroadcastReceiver
BroadcastされたIntentに応答する仕組み。Intentを受け取った時にメソッドを実行する。

BroadcastがStickyIntentの場合、BradcastReceiverを登録する必要がなく、
NullをregisterReceiverへ渡して呼ぶだけで現在のバッテリー状態のintentが帰ってくる。

IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);

・StickyIntent

StickyBroadcast発信できるIntentをStickyIntentという。
BatteryManagerなど

・Intent

機能と機能を橋渡しする仕組みで、主にActivityを起動するのに利用。

明示的IntentはActivityを指定し、暗黙的IntentはActivityを指定しない。
暗黙の場合、推測できる情報としてIntentFilterを入れておく。

暗黙的Intentの受け取り手となりうるクラスは、Activity・Service・BroadcastReceiverがある。

・Broadcast
通常のBroadcastとStickyBroadcastがある。

通常のBroadcastは発信したときにBroadcastReceiverがないとIntentが破棄される。

StickyBroadcastは最後のBroadcastがメモリに残っている。
(Intentの配信が終了した後に登録されたBroadcastReceiverにも配信されるIntent)

システムでは非同期にBroadcastIntentを発生させている。

サンプルコード(StickyBroadcastでバッテリー情報取得)

Fragment

Activityに近いライフサイクルを持ったビューのこと。
ActivityはFragmentActivityを継承しダイアログはDialogFragmentを継承する。

サンプルコード(フラグメントダイアログ表示)

PR広報 メモ

ポジション

アカウントエグゼクティブ:クライアント対応(営業)
プロモーター:メディア対応・取材を取ってくる
プランナー/クリエイティブ:中間で、アイデア考える

・BtoB

広報が難しいと言われがち。BotBは営業支援の側面が強い。

クリッピング/モニタリング

・自社以外のプレスリリース:基本不要
・署名記事か、◯◯編集部となっている記事のみ
・個人メディア、コンサル系メディア、タイアップ記事:不要
研究機関からのリリースは要検討。

・考えを語るだけのインタビュー記事:不要
影響力がある人の場合、要検討。
・技術レクチャー記事:不要
・商品/企業にフォーカスしている場合、
潜在的な顧客、ターゲット市場のプレーヤー、導入事例ならOK。
・集計、アンケートの場合、要検討

・まず、タイトルの主語を見る
・想定、想像(~ではないか~だろう)は基本、不要
主語の部分が斬新(切り口が斬新)な場合、※結論に新しい視点・インサイトがある場合、OK

カテゴライズの優先度:業界、内容など複数にまたがる場合、主語を意識する。

メディアアタックリスト

発行部数だけで選択するのは簡単すぎるので、目的があり、この媒体を選んだという説明ができること。

クライアント+商品とマッチしそうなメディアを大まかに集める。
(メディアがターゲットにしている業界や読者をもとに簡単でOK)

各メディアの記事を読んで、方向性が似ているものをまとめ、さらに影響力などで並べ替える。

メディア特性

テレビ:インパクト
新聞:社会性
雑誌:お役立ち
ウェブ:速報性

メディアによってでやすさが違う。
地方メディア>業界紙>雑誌>Web>全国紙>テレビ
出やすいメディアで実績を積むのも大事。取り上げる側としては信用の問題(反社など)もあり、実績があると取り上げやすいし、他のメディアでネタ探ししているのもある。

特定のエリアの場合、全国紙でもそのエリアを担当している支局にアプローチする方法がある。特定の業界の場合は業界紙。

ニュース価値

今までなかった初めてのこと。(初、新、最)
(特定の地域、業界で初めてではないかと考える)
社会の課題を解決したこと。
読者を喜ばせること。
流行、行事に関わること。(なぜ今?に答えられないとスルーされる)
読者が知りたいこと。
正義/悪を暴く。弱者を助けること。
国民全員に関係すること。
意外なこと。以外な事実/ファクトの存在。

プレスリリース

・メディアは情報が欲しい。企業は、新しい情報をメディアからの取材を獲得する目的で送信する。

・宣伝ではない。
記者は宣伝記事は書きたくないが、他で多く話題になっていることは書きたいという心理がある。

・消費者向けではない。
社会正義/意義が存在するかどうか。

・専門用語は使わない。
広告ではないので美辞麗句は不要。

・自分たちである必然性が必要。
このタイトルなら、ここに取材するしかない。メディアは現象を追っているので、現象とその企業でしか言えないことが重なる部分が必要。

・ニュース価値はあるか?

提案型記事

・PRの場合は企画だけで記事を書くわけではないので、構成までは必要はない。素材を考える上で少し意識しておくだけでOK。

・Webの場合、検索へのアンサーというのが前提で、何を答えたいかを考える。
・Webの場合、キーワード選定。

・1トピック1パラグラフで言うところのトピックにあたる素材(事例、説明、解説、理由、根拠、意見など)の部分をいかに提供するかが重要。ライターさんでは作り出せないトピックがいくつかあれば記事にすることができる。

-誰の?(Target)
-どんな悩み・課題?
-何を答える?(What to say) ※シンプルに1つか2つ、商品の特徴などのこと。
-なぜ私たちが? ※ここストーリーを加える。
-どうやって?(How to say) ※ここがクリエイティブ

・読後感に何を与えたいのか。どのような行動を促すのか。別の記事を読む、ブックマークするなど具体的に。

・編集領域には手を出さない。媒体が意見を言う余地を残す。

・xの中でyしました、と一言で言えること。
xは社会問題などを入れる。
yはPRしたいポイント。事実を入れる。

・ストーリ性をもたせる
◯な◯が、
◯のために◯に行き、
◯になる物語。

ニュースリリース

業界的には同義語だが、
導入事例、業界動向、報道関係者以外も含める、告知が目的
と考えることもできる。

記者/ライターさんとの関係

関係があるならSNSなどでフォローしたり、記事を読んで感想を伝える。

・考え
美辞麗句ではなくリアルが見たいと思うのが記者。
これを世の中に知らせる意味はあるのか?
救われる人がいる?
自分が担当している領域の情報はキャッチアップしておきたい。
正義感があるので、コッソリ伝えるとかそういうものは嫌われる。
消費者は自分のこととして情報を見るが、記者は社会への影響を考えている。
埋もれた情報を発掘したいという気持ちがある。
メディア/記事は影響力が大きいので記者は無意識で怪しい情報や誇大広告を嫌い、事実を好む。

広告との違い

企業が社会と良好な関係を作ることが目的
広告はBuyMe、PRはLoveMe。

広告は有料、PRは取材をしてもらう。広告は広告枠、PRは記事になる。
PRは記事なのでメディアに編集権があり、内容の指定も記事のチェックもできない。記事チェック依頼があったら事実関係の確認だけの意味。

メディア側:広告は広告部、PRは編集部。
企業の外注先:広告は広告代理店、PRはPR会社。

マーケティングと広報/PRの違い

マーケティングは消費者、広報PRはメディアが対象。
マーケティングはあなた、広報PRは社会(社会へ役立つ)

成長するために

まずメディア特性をしっておくこと。
競合のプレスリリースを読む。

TeraTerm 起動マクロ

バッチファイルを作って
ttpmacro.exe ttpmacro.ttl
と記入する。

ttpmacro.ttl
に以下のように記入する。

作成したバッチをクリックするとダイアログが表示されるので、該当の数字を入力すると自動で接続される。

VBA Seleniumの操作

SeleniumWrapper Type Libraryの参照設定を追加する。

Linux コマンド

 less

-N
ナンバリング

-F
画面に収まれば自動終了

-R
カラー表示

-X
終了時画面クリアしない

-S
折り返し無し

-s
空白まとめる

-p xxx
文字反転

-O xxx.txt
パイプのみ、閲覧後ファイル保存

less起動後

q
終了

Shift+f (Ctrl+cで通常モード)
自動更新

g, G
先頭、末尾へ移動

j, k
一行の上下

f, b / w, z
一ページの上下

& xxx
xxxのみ表示
&で絞りんこんでShift+fで更新も可能。

/
検索(nで移動)

-S
折り返し無し。(移動は←, →)

テキスト関連

tr -f \r
Win改行を除く

nkf -wd ファイル名
改行をLinux文字コードをUTF-8

nkf -wd –overwrite ファイル名
そのまま上書き

nkf –guess ファイル名
文字コード判定

hexdump -c xxx
改行コード調べる

sed -e “s/,/\n/g”
カンマを改行へ

 apt-get/apt-cache

apt-get update (apt update)
キャッシュの更新

apt-get upgrade (apt upgrade)
ソフトバージョンアップ

(apt upgradeでは新しいパッケージもインストールされる)

apt-get dist-upgrade (apt full-upgrade)
ディストリビューションのアップ

apt-get remove xxx (apt remove)
ソフトの削除

apt-get purge xxx
(apt-get –purge remove xxx)
設定ファイル残らないソフトの削除。

apt-get –purge autoremove
使っていないパッケージ削除(設定ファイルも)

apt-get autoclean
使っていないアーカイブ削除
(キャッシュされているけどインストールしていない.deb)

do-release-upgrade
OSのアップデート

dpkg -l (apt list –installed)
パッケージの一覧

dpkg -L パッケージ
インストールしたファイル一覧

起動関係

shutdown -h now
終了

shutdown -r now
再起動

プロセス関係

ps aux | grep httpd
プロセスのユーザを確認する。

ps -aux | grep apache
これでプロセス名を確認して
kill xxx
でプロセス終了。

pgrep -l apache
でプロセス番号を探すこともできる。

pkill プロセス名
で複数のプロセスを終了することもできる。

find

ドットはカレントディレクトリから全てのサブディレクトリ
find . -name “*.php”

開始ディレクトリを指定することもできる
find /var

lsと同じように表示
find . -name “*.php” -ls

一括変更
find . -type f | xargs chmod 604
find . -type d | xargs chmod 705

SCP

scp ./example.tar user@210.123.45.67:/home/user/
example.tarを210.123.45.67に転送。

scp -r ./test username@example.net:/home/username
testディレクトリをexample.netに転送。

秘密鍵を使う場合、
scp -i 秘密鍵 コピーしたいファイルパス 受取先パス

その他

/etc/init.d/networking restart
IPアドレスが消えた場合。

cd –
戻る

ctrl + u
入力中を消す

xxx &
ジョブをバックグラウンドへ

jobs
ジョブ一覧

kill %1
ジョブを消す

source .bashrc
bashの設定変更後

サイズを調べる

df -h
デバイスのサイズ

du -h /var/
特定フォルダ以下のサイズ(階層指定の場合 du -h –max-depth=1 / )

screen

起動
screen

一覧
screen -ls

デタッチ
Ctrl+a, d

アタッチ
screen -r id

終了
Ctrl+a, \

シェル作成
Ctrl+a, c

シェル一覧
Ctrl+a, w
Ctrl+a, “(ダブルクオーテーション)

シェル移動
Ctrl+a, 1~

シェルを閉じる(screen自体は生きてる)
Ctrl+a, k

ウィンドウ分割
Ctrl+a, |(バーティカルバー)
Ctrl+a, S

ウィンドウ移動
Ctrl+a, tab

ウィンドウ分割終了
Ctrl+a, Q(その他全ての領域)
Ctrl+a, X(現在の領域)