Session情報を失いたくない.
15分間隔にSetTimeoutでタイマー処理してリロードで更新.
setTimeout(function(){ location.reload(); }, 900000)
結局作ったはいいけど,Session使わなくて不要になった.
また同じものを作る機会がありそうなのでメモです.
15分間隔にSetTimeoutでタイマー処理してリロードで更新.
setTimeout(function(){ location.reload(); }, 900000)
結局作ったはいいけど,Session使わなくて不要になった.
また同じものを作る機会がありそうなのでメモです.
環境
変更前は仮想メモリ1910MBでタスクマネージャー>パフォーマンス>メモリのコミット済みは10GB未満でした. RAM8GBでセキュリティウェアが3つ動くとメモリが足りないというエラーが出て困っていました.
仮想メモリを最大化することで今のところメモリ不足が起きていません. 物理メモリの使用率が減ったため,体感で多少の速度低下を感じます.
追記:
Microsoftのメモリリークツール testlimitで検証してみました.
testlimitの使い方は下記のとおりです.末尾でMBを指定(6000MB⇒6GB)
> Testlimit64.exe -d -c 6000
総負荷が物理メモリ未満であれば物理メモリが50%程度になるようにに分けて動かしているように見えます.
総負荷が物理メモリの最大容量に近づくにつれ,物理メモリの負荷が高まり,RAM以上の負荷をかけると物理メモリ側が90%でひっ迫するようになります. (退避は出来ているようで,explorerが停止したりは起きませんでした)
まず速度優先で物理メモリで処理して,徐々に仮想メモリに移しているような動きが見えました.
タブはCHAR(9)で検索可能
SELECT column FROM table WHERE column like '%' + CHAR(9) + '%'
\d schema_name.table_name
で出力可能だがODBCで使えないためv_catalog.columnsからSELECTする.
SELECT * FROM v_catalog.columns WHERE table_schema='schema_name' AND table_name='table_name' ORDER BY ordinal_position;
参考 https://stackoverflow.com/questions/26398989/vertica-describe-table
SHOWコマンドはODBC経由で実行できる.
SHOW FULL COLUMNS FROM schema_name.table_name
EXEC コマンドは通るようだが,期待した列リストが得られなかったので,sys.tablesから取得した.
SELECT s.name as schema_name, t.name as table_name, c.* FROM sys.columns AS c INNER JOIN sys.tables AS t ON t.object_id = c.object_id INNER JOIN sys.schemas AS s ON s.schema_id = t.schema_id WHERE t.name = 'mytable' AND s.name = 'dbo';
pip install -U stweet import stweet as st def try_user_scrap(): user_task = st.GetUsersTask(['shinjo_freedom']) output_json = st.JsonLineFileRawOutput('output_raw_user.jl') output_print = st.PrintRawOutput() st.GetUsersRunner(get_user_task=user_task, raw_data_outputs=[output_print, output_json]).run() if __name__ == '__main__': try_user_scrap()
Google Colab上でも取得できた.
Following,Followerのリストを取得したかったが,対応していないとのこと. 残念.
参考:
Can I get the tweet user's followers and followings · Issue #63 · markowanga/stweet · GitHub
Can tweet2.0 get the user's followers and followings · Issue #83 · markowanga/stweet · GitHub
必要項目埋めれば骨子ができる
言い換えリスト。
あと単純に面白い
For Eachで回せばRecordsetのポインタを意識しなくて済むので良さそうです。
For Each Field In rsObj.Fields Response.Write "<th>" Response.Write Field.name Response.Write "</th>" Next
Field.name
Field.value
Verticaでクロス集計したいときに使えそうなSQL文
salestable
salesdate | prod | sales | return | total |
---|---|---|---|---|
20221001 | name | 1000 | -500 | 500 |
20221002 | name2 | 800 | -100 | 700 |
20221003 | name | 100 | -100 | 0 |
… | … | … | … | … |
20221101 | name | 1000 | -500 | 500 |
… | … | … | … | … |
20221201 | name | 1000 | -500 | 500 |
というテーブルがあるときに月別にクロス集計したい
※salesdateは日付型ではなくテキスト型で持っています
salesを月別に集計したい(+sale集計の千円単位も表示したい)
10月 | sales | sales(千) | 11月 | sales | sales(千) | 12月 | sales | sales(千) |
---|---|---|---|---|---|---|---|---|
... | ... | ... | ... | ... | ... |
SELECT '' as '10月' ,SUM(case SUBSTRING(salesdate,1,6) when '202210' then sales end) as 'sales' --月絞り込み ,round(SUM(case SUBSTRING(salesdate,1,6) when '202210' then sales end)/1000) as 'sales(千)' ,'' as '11月' ,SUM(case SUBSTRING(salesdate,1,6) when '202211' then sales end) as 'sales' ,round(SUM(case SUBSTRING(salesdate,1,6) when '202211' then sales end)/1000) as 'sales(千)' ,'' as '12月' ,SUM(case SUBSTRING(salesdate,1,6) when '202212' then sales end) as 'sales' ,round(SUM(case SUBSTRING(salesdate,1,6) when '202212' then sales end)/1000) as 'sales(千)' from salestable where 20221001 <= salesdate AND salesdate <= 20221231 limit 300000 --負荷軽減
salesdate(日付)がテキスト型ではなく日付型の場合はdate_truncが使えそうです。
SUBSTRING(~)の部分下記のように書き換えでできそうです。
sum(case date_trunc('month',salesdate) when '2022-10-01 00:00:00' then ...
SQL SERVERの基本構文
忘れまくるので忘備録
INSERT INTO table1 SELECT * FROM table2
INSERT INTO table1 SELECT * FROM table2 WHERE column1 = '値'
INSERT INTO table1(colmn1,colmn2,colmn3,...) VALUES (value1,value2,valu3,...)
INSERT INTO table1 VALUES (value1,value2,valu3,...)
UPDATE table1 SET column1 = '値' , column2 = '値' WHERE column0 = '値'
SELECT column1,column2 FROM ( SELECT columnA1,columnA2 FROM table1 WHERE columnB = '値' )
CASE WHEN column1 = '値' Then CASE column2 WHEN '条件値1' THEN '入力値1' WHEN '条件値2' THEN '入力値2' WHEN '条件値3' THEN '入力値3' ELSE '' END ELSE '' END
SQLSERVERではIF文なくてCASEを使う。 CASE 対象のカラム WHEN 条件値 THEN 入力値 の構文
入れ子にしても使える。
DELETE FROM table_name WHERE colmn = val
忘れまくるので忘備録
いつもElseIfの書き方忘れる
If 条件 Then ElseIf 条件 Else End If
Do Until recordSetObj.EOF recordSetObj.MoveNext Loop
For i=0 To UBound(list) Next
Set arraylist = CreateObject("System.Collections.ArrayList") str = recordSetObj("name") ' 変数に格納しないとRecordsetのポインタ格納されるため arraylist.Add str list = arraylist.ToArray()
Select Case string Case "a" (処理) Case "b" (処理) Case Else (処理) End Select
Defaultに当たるのがCase Else。 End Selectはほんとに忘れる。 この手の全部End ~にしてほしかったし、 何ならEND入れなくてもよくしてほしかった。
SQLインジェクション対策で使った。update、UPDATE,Update,upDate.. 大文字小文字を正規表現まで使わなくて変換可能なので楽なのでは。
引数:対象String,変換元ワード、変換後ワード、1文字目から対象に変換(1)、変換個数指定なし(-1)、大文字小文字を区別しない(1)
after = Replace(before,"update","",1,-1,1)
SQL文発行をエラー無視にすると問合せしつづけるようで 重くなるので注意です。
On Error Resume Next (処理) If Err.Number <> 0 Then Response.Write(Err.Description) End If
23/07/18追記 FileSystemObjectについて
Set fso = CreateObject("Scripting.FileSystemObject") FilderPath = "D:\folder" FilePath = "D:\folder\file.png" ' 該当Fileが"存在する"かチェック If fso.FileExists(FilePath) Then ' ファイルが存在する時の処理 End If ' 該当Folderが"存在しない"かチェック ' 存在しない場合,同名の新規フォルダを作成する if NOT fso.FolderExists(FilderPath) Then fso.CreateFolder(FilderPath) End If
fso.DeleteFile FilePath
長くなったので別記事にしました
Verticaはオートコミットが無効になっているため明示的にCOMMIT;を実施しないといけない。
Transactionの理解が不十分
この知識で本番触るの怖いので勉強します・・
Verticaで複数行(multiple)のINSERTをしたいができないらしい
vertica don't worked multiple insert.
INSERT INTO table(column1,colmun2) VALUES (value1,value2,value3) ,(value4,value5,value6) ,(value7,value8,value9);
ということがしたいがsyntax errorとなっておかしいなと思ったら 一行ごとにしないといけないらしい
INSERT INTO table(column1,colmun2) VALUES(value1,value2,value3); INSERT INTO table(column1,colmun2) VALUES(value4,value5,value6); INSERT INTO table(column1,colmun2) VALUES(value7,value8,value9);
VSQLでUNIONで挿入したいVALUEを複数SELECTするか、 copyコマンドでローカルファイル化したCSVを投入するとのこと。
参考: https://forum.vertica.com/discussion/239512/insert-multiple-rows-with-insert-into
batファイルでnet stop ~ net startを設定してサービスを直接停止・起動します。
起動アカウントが違うためかXAMPP画面上からは操作できなくなります
net stop Apache2.4 net start mysql net start Apache2.4
Windowsはtracertでポート指定ができない。
tracertはpingと同じicmpプロコトル通信になるそうです。
PowerShellでTest-NetConnectionを使ってポート接続検証ができます。
Test-NetConnection x.x.x.x -Port 80 -InformationLevel Detailed
ComputerName : x.x.x.x RemoteAddress : x.x.x.x RemotePort : 80 NameResolutionResults : x.x.x.x MatchingIPsecRules : NetworkIsolationContext : Private Network IsAdmin : False InterfaceAlias : Wi-Fi SourceAddress : x.x.y.y NetRoute (NextHop) : x.x.z.z TcpTestSucceeded : True