.profile の末尾に
exec /bin/bash
のように記述する
ログインできなくなるといけないので、別の端末でログインできることを確認すること
(1) Excel を開く
(2) Alt + F11 キーを押して VB 画面を開く
(3) Ctrl + G キーを押して"イミディエイト"ウィンドウを開く
(4) イミディエイトウィンドウ内に下記のコマンドを貼り付けて、Enter キーを押す
For Each i In ThisWorkbook.Sheets: debug.print i.name : next i
参照)https://qiita.com/wakayama-y/items/d5f6e3664a34704c397f
@echo off のように、最初に@から始まる場合、そのセルが文字列にならず編集が思うようにいかない場合がある ⇒ '@ でスタートするようにする
直接は関数エラーで動かないけれど、グラフで隠すCellにファイル名のデータを作る
=MID(CELL("filename"), SEARCH("[",CELL("filename"))+1, SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))-6)
例えばそれが L1セルだった場合、
=Sheet1!$L$1
とグラフタイトルを選択して、式のところに入力する
ここでシート名は変更すると自動で更新される
現在のBookとWorksheetを知る
set bk = ThisWorkbook bk_name = bk.Name set ws = ActiveSheet ws_name = ws.Name
ファイルをオープンする
full_name = ThisWorkbook.Path + "\" + file_name set bk = Workbooks.Open(Filename:=full_name,Notify:=False)
オープンしているn番目のファイルを扱う
bk = Workbooks(n)
bk.Activate Application.WindowState = xlMinimized
if Not ws.AutoFilterMode Then ws.Range("A:F").AutoFilter End If
ここでは、A~F列にフィルターをONにする
F列に設定する場合(文字列を入力するイメージ)
key_str = "*" + KEY文字列 + "*" ws.Range("F:F").AutoFilter Field:=6, Criteria1:=key_str
ここで*はワイルドカードの役割
VBAのFindは結構強力
set_pos ~ Range("A1:Z1").Find(What:=key_str,LookIn:=xlValues).Column
これで、key_strと一致する列番号が返ってくる
ここで問題になるのが、”一致”と xlValues
行幅が狭くて全部が表示されない ##### とかになると”値が一致しない"ので、Findできないという落とし穴が・・・
(いや、日付を動的に表示するところで、通常月だとOKだけど、11月とかだと 列幅が足らなくてエラーになった:::)
VBAではExcelファイルがすでにオープンしているかどうかで次の処理が違ってくる
ActiveSheetやIndexに相当する Workbookのプロパティは存在しない
そこで次の関数を作ってみた
Openされていなければ0が帰り、Openされている場合は、WorkBooksのIndex番号が戻る
ここでポイントは、booknameに与えるファイル名はディレクトリー名を含まない普通のファイル名を使うこと
Public Function OpenBookNo(bookname As String) As Integer Dim bk As Workbook Dim no As Integer no = 0 For Each bk In Workbooks no = no + 1 If bk.Name = bookname Then OpenBookNo = no Exit Function End If Next OpenBookNo = 0 End Function
前のシートのZ1セルをを参照する場合:例えば、月単位でシートが分割されている時
=INDIRECT(SUBSTITUTE(INDEX(book,SHEET()-1),"["&doc&"]","") &"!Z1")+1
現在のBOOKのシート番号から1つ少ないシートのZ1セルを指定して、+1しているが増分が1日分になっている
SUBSTITUTE(文字列、検索文字、置換文字、置換対象) という文字の置き換え関数
INDIRECT(参照文字列) ここでセルの指定を文字列で "A"&2 のように指定可能
INDEX(範囲、縦位置、横位置) 指定範囲の特定のセルの値
⇒ ファイル名一覧、から現在のシートの直前にものを取得[文書名]部分を消したシート名のZ1セルを指定している値に+1をしている
ここで定義されている、bookとdoc は
book:(名前の定義で)
=GET.WORKBOOK(1)
1はファイル名一覧を指定
doc:(名前の定義で)
=GET.DOCUMENT(88)
88はActiveBookの名前を指定しています
ROW()を使って現在の行数がわかる
シート名の一覧が行にならんでいる時には、その行数を使って例えば20行めからの場合
=SUBSTITUTE(INDEX(book,ROW()-19),"["&doc&"]","")
参照:
http://excel4macro.blog86.fc2.com/blog-entry-178.html
http://excel4macro.blog86.fc2.com/blog-entry-170.html
https://www.tipsfound.com/excel/01306
JavaはPCで開発したjarファイルを他の環境にバイナリモードでFTPするとそのまま使えたりする
(JDKがなくJREだけというのは結構ある : Linux上のJavaをWindowsで開発もよくある)
jarファイルはそのまま実行できたりもする
Windowsでのコンパイルシェルはこんな感じ
javac -cp ".\jar\*;." %1.java
⇒ ここではライブラリがローカルのjarディレクトリ以下にある
単独のアーカイブを作る場合は下記の様に
jar cvf test.jar test.class
実行する場合は java -cp "./*" test <parameter>
jar xf xxx.jar
⇒ ディレクトリ構成(例えばcom)が作成、classも配置される
該当箇所に、classを追加・差し替える
jar cf xxx.jar com
⇒ com以下がjarファイルに再集結する
jarファイルがある場合、Java Decomplilerを実行、該当jarファイルをOpenすると、
ディレクトリ構成とjavaのソースが表示される。
Java Decomplilerは jar形式で提供されているので、それをダウンロードして起動する
リバースエンジニアリングした結果は
・コピペでテキストファイルに落とすことができる ⇒ そのまま編集して使える
・コメント行は表示されないが、行のカウントには含まれる
・文字コードの関係で化ける場合がある
例えば 0.5msec 以上のトランザクションの平均値を求めるといった場合
sumifの様な1関数だけで処理しようとするとなかなかできない
⇒ フィルターとsubtotalを組み合わせる
対象列にフィルター(0.5msecより大きい)を使い集計結果を subtotal(1,H2:H10000) みたいにする
よくわからない場合は、列を増やして2段階の集計も検討してみる
どんな書式にすればよいかわからない場合はマクロを記録状態にして、オペレーションを実行すると正解が記録される。 すべてのオペレーションが記録されるので、調査対象の処理が終わったら記録を終了させること。 Pivotのグラフ化やソート指定などでは重宝する。、
サーバー側にインストールされている前提で login して、 vncserver を実行 ⇒ 画面番号が表示される
クライアントから vncviewerを起動 先ほど起動したサーバーの画面番号をポート番号としてして指定 passwordを入力してログイン
chk_f=${fil_n%.*}
で、無印ファイル名が作れる(fil_nの変数から、最後の .* を削除したものを chk_fに代入する) ← ${変数名} に加工をしている
if [ ! -e ${chk_f} ]; then <ファイルが無かった場合の処理> fi
参考)http://mapplio.info/flo/flo_lecture2/bash_charpter.html#goto
grep -e "条件1" -e "条件2" -e "条件3"
アンマッチの場合は
grep -v -e "条件1" -e "条件2" -e "条件3"
if [ ! -f <file> ]; then ここでエラーメッセージ出して exit 1 fi
参照) https://shellscript.sunone.me/if_and_test.html
echo "HOGEHOGE" >&2
通常の出力をテキストファイルにRedirectして、レコードカウントやコマンド等を画面表示する場合使用する
let cnt_n++
を使うと早い
d_day前の日付は・・・
today_st=`date "+%Y%m%d"` now_sec=`date -d "$today_st" +%s` ⇒ Universal Secondに dif_sec=`expr $d_day \* 86400` ⇒ 24時間は 86400秒 tgt_sec=`expr $now_sec - $dif_sec` p_day=`date --date=\@tgt_sec +%Y%m%d` ⇒ --date=@Usec で 絶対秒を日付に
p_str=${p_day//\//} ⇒ パラメーラの一部を // で置換 この場合 / を削っている
p_day が 2018/08/05 p_str が 20180805
参照) http://bioinfo-dojo.net/2017/09/15/bash_string/
<関数名> () { 関数本体 } 関数名 引数リスト
subroutineの中では引数の $1 $2 ・・・ が使える
参照) https://shellscript.sunone.me/function.html
while getopts ab:c: OPT do case $OPT in "a" ) <a-operation> ;; "b" ) <b-opertaion> ;; "c" ) <c-operation> ;; * ) <other options> ;; esac done
これで、 $PRG -a -b 2018 -c New といったオプション指定が可能 ⇒ b: c: は引数があることを示す
参照) https://shellscript.sunone.me/parameter.html
M1="HELLO" M2="WORLD" MSG=$M1"\n"$M2 echo -e $MSG
で、
HELLO WORLD
になる。 ⇒ "\n"で連結する、 echo -e で改行を表示する
参照) https://code.i-harness.com/ja/q/3fcec7 ; https://hacknote.jp/archives/21658/
usleepも使えるが・・・
sleep 0.1s で 0.1秒のsleep が可能
#linux だと、 usleep 100000 で 0.1秒だけど、NonStopでは usleepがないから・・・
SUBSTITUTE(ADDRESS(1,A2,4),1,"")
1行 A2列の相対参照文字列の 1 を ””で置き換える ⇒ (1,28) → AB1 → AB
CELL("col",INDIRECT(A5&"1"))
A5の値+1 のCellを参照して、その列数を返却 ⇒ AB → AB1 → 28
VBAのプログラムで実行時に下のバーにメッセージを表示するには
Application.StatusBar = "MESSAGES"
で表示可能
Application.StatusBar = False で終了
手順は、以下のコマンド1行です!
find <LF.txt /V "hogehogehoge" >CRLF.txt
参照) http://ippanse.techblog.jp/archives/2238655.html
PowerShell で
dir | rename-item -newname | $_.name -replace '-SELECT','_SELECT' }
のようにすると、xxx-SELECT.sql とかが一斉に xxx_SELECT.sql に変わったりする。
どうやって消えなくExcelのLinkが残った場合、
そのファイル自体をリンク元のファイルとしてコピーしてしまう。
→ 起動すると、なぜかお化けリンクが消える
→ ファイル名を本来のものに戻して万事解決・・・
http://flying-porco.hatenablog.com/entry/2017/04/01/231924
が決定打!
セルの値で別のセルの色を返ることができるが・・・・
複数のセル(カラム)を同時に色を変えたい場合がある・・・
でも、変更する対象のセルは1つにした方が良い
指定方法としてはRangeを指定できるが、最初のものだけが適用されたり、
色々とご機嫌斜めになることがある
→ 参照先を$Aの様に相対ではない書式で指定して、個別に指定
→ そのセルの書式を延々とコピー
にするとよいかも
set starttime=%date% %time%
xxxx
echo Start: %starttime%
echo End : %date% %time%
これで、msecぐらいまでは処理時間がわかる。
for /F "tokens=1,3 delim=_" %%i in ("%FileName%") DO (
set PG_NAME=%%i
set DAY_STR=%%j
)
このようにすれば、ファイル名から先頭の部分と3番目の日付を分離できる
SORT_HOST_20161231.log のようなファイル名から、
SORTと 20161231 を抜き出すことができる。
変数 i の次が j になっていることも注意。
shift+del でよかった 簡単!
でもファイルのサイズがGBオーダーだと、結構切実ですよ。
start /b /wait /min "" <BatchCmd>
そうすると、画面に淡々と処理が表示される
==============================
@echo off
setlocal
cd /d %~dp0
:REENT
set FileName=%1
if "%FileName%"=="" (
echo "END LOOP"
pause
exit 0
)
start /b /wait /min "" <BatchCmd>
shift
goto REENT
====================
で、このバッチにファイルのリストをDrug&Dropすると、
順番にバッチが処理される。
先頭のcd は同じディレクトリーに実行するBatchがある場合を想定。
あと、バッチファイル側では終了時にExit 0 /B で終わる必要がある。
資格情報で記憶されているパスワードを変更する必要がある。
コントロールマネージャの資格情報マネージャを起動すると、
アクセス先がホストIPで指定されているので、それを編集、
もしくは、削除してから、改めてファイルマネージャーでアクセスをする。
数回失敗するとアカウントロックされる環境では特に注意。
(ブラウザーと違って、パスワードが変わったら聞いてくるなど甘い考えは捨てること)
再起動でF8をひたすら押し続けるとセーフティーモードで立ち上がる
そこで、障害ですぐ再起動するのをやめて、きちんとブルースクリーンを確認
それから次は、正常に起動した構成で立ち上がる を選択するとなんとか起動する
通常のセーフティモードでもブルースクリーンになるときには、試してみる価値あり
→ BIOSはハード、WindowsはWindows なので、ハードがまともでOS設定が壊れたらF8!
レジストリーをみる
reg query HKU\<USERNAME>\Environment
どんなユーザが登録されているかを見る場合は
reg query HKU
S-15-・・・・ 見たいな名前で登録されている。 cygwinとかで実行する場合は、¥が副作用を起こすので、¥¥にする必要があったりする。
サービス名一覧
sc query state= all | findstr /B SERVICE_NAME
プロセス一覧
tasklist
サービスの一覧
tasklis /svc
プリンターにPostScript出力するときには、プリンターのプロパティで、 プリンタプロセッサ → XPS2GDI とRAWからPostScriptエミュレーションを選択する必要がある
HPのプリンターはPCL以外は”無視”してエラーにもならない・・・
パスワードがわからなくなったら → 設定 → 詳細 → パスワードとフォーム で
パスワードを管理 を選択
該当ログインのパスワードを選択 → 表示 にするとパスワードが出てくる
・・・ OSユーザのパスワードを聞かれますが
jstat -gcutil -h5 <pid> 100ms
と、JavaのプロセスIDを指定すると画面に0.1秒単位での推移が表示される。
100ms を 10s とかにすることも可能。 -h5 は5行ごとに項目見出しを入れる意味。 -gcutil は GCの利用率を確認するコマンド
S0 / S1 / E / O / M / CCS / YGC / YGCT / FGC / FGCT / GCT
最初の3つが、From / To /Eden の利用率%
Adblock Plus を導入する
フィルターに */sitejack/* を追加する
→ あら不思議、Netflixのめんどくさい広告(ライフハッカーへの)が消える
ある程度の広告は認めるが、可読性を著しく落とすこのタイプの広告はNG!
7zを入れてみましょう。解凍できます。
QUERY と QUERYEX のオプション:
クエリ コマンドにサービス名が続く場合、サービスの状態が戻されます。 この場合、それ以上のオプションは適用されません。クエリ コマンドに オプションがない場合やまたは以下に一覧に表示されているオプションが 続く場合は、サービスが列挙されます。 type= 列挙するサービスの種類 (driver、service、all) (既定 = service) state= 列挙するサービスの状態 (inactive、all) (既定 = active) bufsize= 列挙バッファーのサイズ (バイト) (既定 = 4096) ri= 列挙の開始を指定するための再開インデックス番号 (既定 = 0) group= 列挙するサービス グループ (既定 = all groups)
構文の例
sc query - アクティブなサービス ドライバーの状態を列挙します
sc query eventlog - イベントログ サービスの状態を表示します
sc queryex eventlog - イベントログ サービスの拡張状態を表示します
sc query type= driver - アクティブなドライバーのみ列挙します
sc query type= service - Win32 サービスのみ列挙します
sc query state= all - サービスとドライバーをすべて列挙します
sc query bufsize= 50 - 50 バイトのバッファーで列挙します
sc query ri= 14 - 再開インデックスを = 14 にして列挙します
sc queryex group= "" - グループにないアクティブなサービスを列挙します
sc query type= interact - 対話型サービスをすべて列挙します
sc query type= driver group= NDIS - NDIS ドライバーをすべて列挙します
fc a b でdiffに相当
fc /B a b でバイナリ
fc /N a b で行番号表示
SkypeがMicrosoftに買収されたためと思われる
該当Updateを右ボタンで非表示にすることができる
Firewallが原因の可能性が大
/sbin/chkconfig iptables off /sbin/service iptables stop
で止めちゃうとログインできるようになりました。 sshでログインできることが前提です
デフォルトでは10個だが、増やしたい場合は、
Registoryを修正
HKEY_CURRENT_USER ⇒
\Software\Microsoft\Internet Explorer\TabbedBrowsing\NewTabPage
にあるキー NumRows を REG_DWORDの型指定で追加・変更する。
デフォルトは2なので、これを例えば3とかにすると、行数が増える。
詳しくは
Internet Exploer 9の「よく使うサイト」をカスタマイズする
を見てください。
下側のアイコンでページ名変更があるので、それをClick
imageディレクトリーの下にファイルをコピーして
skin/pukiwiki.skin.php の $_IMAGE['skin']['logo'] = 'pukiwiki.png'; を修正
Winidowsからのコピーの場合、画像ファイルの拡張子が”PNG”だったりするので、それも正確に
あらかじめFrontPageと同じ内容のページを作っておき
pukiwiki.ini.php の$defaultpage = 'FrontPage';
を新しく作成したページ名に修正する
多分、FrontPageの名前修正とpukiwiki.ini.phpの修正でもいけると思う
構成ファイルの修正を直接するより、ローカルにミラーを作ってFTPでUpload/Downloadがよい。
ただ注意するのはFFFTPではミラーリングは、一覧表示のディレクトリー単位で行うので、
pukiwikiの下一覧を指定しないといけない。
例えば、puiwikiのディレクトリーを一覧で表示してミラーリング実行するとその上のディレクトリーまでコピーされて結構大量のファイルを処理することになる。
for /f %%a in (data.txt) do ( hogehoge [%%aを使います] }
while read v ; do hogehoge [$vを使います] ; done < data.txt
sqlcmd -d DB -S server -i SQL_stm -h-1 -W -s,
なお、SQL文先頭に set nocount on を忘れないでね~
詳しくは
https://technet.microsoft.com/ja-jp/library/ms162773(v=sql.105).aspx
https://msdn.microsoft.com/ja-jp/library/ms189837(v=sql.120).aspx
call を使いましょう。
そのまま呼ぶと、処理が戻ってこない。
あと、先頭に@echo off は忘れないこと。
現在時刻はgetdate() で与える。
日付の単位はExcelと一緒で1日なので、2週間前は getdate() - 14
select DB_NAME(), ・・・;
とすると、明確にDBの名前がわかる。
#だからなんなのという気もするが、データベースの定義が普通と違うから・・・
select count(a),count(b),min(c) from Table;
だと全件、bだけ条件付きでカウントしたいばあいは、
select count(a), (select count(b) from Table where xxxx ), min(c) from Table;
とすれば、少なくともSQLSERVERでは動いた・・・ 少し気持ち悪い
bluetoothの設定をすると、いつでも使える+ Ctrl+Spaceで文字入力の切替ができることを覚えておけばOK!
bluetoothを iphone側でONにする
icleverで Fn+EでiOSモードにする
日本語切替は Ctrl+Space
blutoothの設定をKindle側でONにする(キーボード側もFn+Cでサーチモード)
キーボードがPCと一緒になるので、表示と異なることになり、記号で文字化けする可能性が出る。
ただ、入力切替は Escキーとなり、場所的にはこれもふつうのキーボードと一緒
直接ファイルをDrag&Dropはできないので注意! (わざわざマウントする必要ないのだよ)
Importの機能で、カラムを文字列指定で読み込む必要があります。
データ⇒外部データの取り込み⇒テキストファイル の順でコマンド実施
F12を使いましょう。
たとえば、パスワードが***で使えているのだが、忘れてしまった場合には、F12を押して、password と書かれているタグを検索、typeを password から textに変えると、あら不思議、パスワードが表示されるではありませんか・・・ (取り扱い注意)
ユーザ定義Viewを作成すると、一度に表示し直すことができる。
表示したい状態でユーザ定義Viewを追加・命名
通常不要なシートをすべて非表示にしておく(一括での非表示はなぜかOK)
一斉に戻したいときは、ユーザ定義Viewで、登録済みのViewを選択して、表示すれば出てくる。
Excel起動して、File⇒ 最近使用したファイル ⇒(右下の) 保存されていないブックの復元
をクリックすると、あわてん坊さんの置き土産が一覧表示されるので、胸に手をあてて、これと思うファイルをクリック、起動してから、別名で保存すればある程度戻る
⇐ 自動保存の機能を使っているので、直近までは戻らないかも知れない(がZeroになるよりは全然良い)
=$B2="Cancel" のように、数式指定すればOK
ただし、範囲を絞って指定しないとNG(行全体とかの指定はだめ)
また$B2を$B$2にすると、1セルの設定で全体が変わってしまうので要注意
¥pset pager off
コマンドで実行する場合は
psql -P pager off -U xxxx ・・・ ~
pager の On/Off で moreを使う・使わないを指定可能。
ssh <HOSTID> -t psql -P pager off -U postgres -d hogehoge -c \"show all \" > ./show_all.log~
の様に使うと良い
export PAGER=less
の様にpsql の中でも設定は可能。
¥setenv PAGER less
ssh **.**.**.*** -t sudo cat /var/log/message~
の様に実行する( -tは ssh の直後でもOK)
出力結果を利用する場合、パスワード入力画面が出てこないが、そのまま入力すればOK
⇒ ファイルの先頭にパスワード入力用文字列が書かれてしまうので、必要であれば削除する
ssh-keygen -t rsa でキーを作成~
./ssh/id_rsa.pub を、各ホストの ~/.ssh に authorized_keysという名前で保存すると、パスワード入力が不要になる。
その前に、サーバ側から、クライアント側にsshでログインして、各ホームディレクトリーに .ssh のディレクトリーが作られていることが必要
このファイル(id_rsa.pub or authorized_keys)は盗まれるとログインフリーの鍵ファイルなので、取扱注意!
stat <filename>~
stat *.backup のように指定も可
ls -lt などで表示されるのは 時分までなので、詳細を知りたい場合には、stat を使うと、Micro秒レベルでのアクセス履歴がわかる
ls -lt ./*.backup | head -n 1 | awk '{ print $NF }'~
ls -t がタイムスタンプでソートする
head で先頭行を出力
$NFがカラム数なので、最終列 この場合はファイル名を出力する
NEWER_BACKUPFILE=`ls -lt $ARCH/*backup | head -n 1 | awk '{ print $NF }' pg_archivecleanup $ARCH $NEWER_BACKUPFILE~
で最新のバックアップ以前のアーカイブファイルをクリアできる
ps aux | grep postgres | awk '{ print $6 }' | grep -v "^0" | awk '{ sum += $1 } END{ print sum / NR }'~
最後の / NR を省略すれば合計値。 RSSの値。
cat a.log | awk 'NR%6==1;NR%6==4'| paste - -~
6行単位で、1行目と4行目を使いたい場合
paste はTABでセパレートするので
paste -d',' - - とすると、CSV形式。
- - は2行を読み込む(標準入力から) という意味。
iphone では、2つのボタンを同時に押すと、画面を撮影できる
それをメールで送れるので、便利
フォーマットはpgn
=INDEX(K:K,2+(ROW()-2)*7,1) のようにする~
INDEXで領域を指定して値を引用する
ROWで現在の列数を取得する
あとはタイトルなどに合わせて微調整
1レコード複数行で出力されるsarなどのテキスト出力の合計値だけを使うときなどに有効
select * from pg_current_xlog_location();~
これによって現在のxlog位置がわかる
⇒ 処理の前後で確認すると、1つの処理にどのくらいのログが出力されるかの目安にはなる。
(ただしデータの形は16進表示)
num=`expr $RANDOM % 1000`~
$RANDOM は 0~32767の整数がランダムに代入される
grep all *.sar | awk '{ print $12 }'
先頭行が#でない行を表示するには
grep -v "^#"
ここで、 -v が reverse option で、マッチしない行を表示になります