参考にするページ
[séns] tomoyukim’s blog 「Tips : Processing PImageのメモリリーク対策」
観劇の日々
さてさて、春~初夏にかけて、いろいろ観たのでメモっておこう。
宝塚星組「こうもり・The Entertainer」
ぴあの先行予約でチケットが取れず諦めていたのだが、そのぴあから空席のメールがやってきたので、ぷしゃっと空席をみてみたら、悪くない位置だったのでゲット。
桜もほぼ散った時期だったが、芝居もショーも華やかで見応えがあってよかった。
芝居はトップ以下コメディエンヌが揃っている組ならではで非常に楽しめたし、ショーもなかなかのモノだったと思う。
最近の宝塚の問題といえば若手がいまいち育っていないというところだが、とりあえず星組は礼真琴がいるので大丈夫感たっぷり。その下が・・・というところか。
あとはもう少し娘役が注目されるといいなぁと思う。
買っても観ないけどDVDかっとこうかなぁ・・・と密かに思う今日この頃。
(ホント、観ないんだよなぁ)
映画「ズートピア」
1日の映画1000円デーに3Dで観た。
3Dだと1500円ぐらい取られるのでお得感がないし、そもそも3Dで観る必要あるのか?とか、めがねのせいで画面が暗いとか、とにかくいいことNothingな3D鑑賞だったが、観られる時間帯にやっていたのが3Dしかなかったので、諦めて3Dにしたのだ。とほほ。
マジ、二度と「3Dでみない!!」と固く誓った2時間だった。
ストーリーは良くって、なんてったってカワイイ。上戸彩はまぁ声優としてはどうかと思うが、カワイイからもういいのだ!と思ってしまった。それぐらい、みんなカワイイし、面白かった。
動物の世界も大変なのね。
ミュージカル「エドウィン・ドルードの謎」
客席参加型ミュージカルで、結末がなんか複数通りあるんだよねぇ・・・へぇ~・・・ってな感じで行ってみた。
面白かった。芝居観てて、声に出して突っ込んだの初めてだよ。
ほんと、面白かった。
いやぁ、レビューを観てると、あぁきっと台本通りなんだねぇ・・・と思うのだが、アドリブなのかお稽古通りなのか、もうブヨンブヨンのところにいるような感じがよかった。
主演が山口祐一郎と壮一帆とあるが、完全山口支配人と今拓哉が主役。この2人でストーリーの60%は費やしている。サラサラ山口さんとヌメヌメ今さん、いいコンビだ。
山口支配人は、こういう役のほうが合うだろうね。もう、かるーく流す感じの役。
エリザベート観たときは、演歌歌手か!とか思っちゃったもの。
暑苦しいというか、ねちっこい今さんも良かったけど、平井綾もかわいかったけど、保坂千寿さんもすてきだったけど、ヘンにはまったのはコングだった。
いやぁ、あれは笑えるな。声も好き。ちょっと、これから追っかけてみようかな。
ということで、投票した犯人にはならなかったが、楽しめた。よかった。
ということで、この春の観劇日和は、なかなか晴天に恵まれてよかったということで、ハッピーだ。
Excel VBA覚書 CSVファイル読込
久方ぶりの投稿。いろいろあったけど、それはまた別に書くとして、CSVファイルを読み込むときの高速なやり方を探してたらQueryTablesを使った方法というのがあったので、やってみた。
Dim wb As Workbook
Dim ws As Worksheet
Set wb = Workbooks.Add
Set ws = wb.Worksheets(1)
With ws.QueryTables.Add(Connection:="text;mega.csv", Destination:=ws.Range("A1"))
.Name = "megacsv"
.TextFileCommaDelimiter = True
.Refresh
End With
すごかった。30万行一瞬。
Processing3 Javaで動かしてみる
Processingで作成したpdeファイルをJavaにしてみようと思ったが、うまくいかないので、基本的なところから少しずつ試していく。
Processing3を入れて、JRE1.8をいれて、Eclipse上でごねごね。
ネットで調べたとおり、setupのところにsizeメソッドを入れたら怒られて、しょうがないからsettingsメソッドをつくってそっちに入れたら、なんか足りん!と怒られて、こんな感じにしたら、とりあえず斜めに線は引けた。
package test;
import processing.core.PApplet;
public class Test extends PApplet {
public void settings() {
size(600, 600, JAVA2D);
}
public void setup() {
background(200, 50, 60);
smooth();
strokeWeight(5);
}
public void draw() {
line(0, 0, width, height);
}
public static void main(String _args[]) {
PApplet.main(new String[] { test.Test.class.getName() });
}
}
先は長そうだ。
確定申告完了!
日曜日に確定申告に行ってきた。
今回はいつもの医療費控除の他に株の配当の申告もしておこうと思ったのだが、初めてのことだったのでどこにどう入力すればよいのかわからず、結局今回もヘルプ付きの申請書作成コーナーで入力。
1年に1回のことなんで、ほんと、忘れるわ~~~と、情けないところだが、作成コーナーは前年よりだいぶんスムーズに行くようになっていたので、待ち時間もかなり短縮されていた。
(もう、みんな電子化するのね)
「配当まで申告するんですね?申告すると後で修正は無理ですよ?」とかいわれたから、配当とか売買利益とかを入れると納税額が大きくなるんだろうなぁ、と思いつつ、でも「きっちり納税しまっす!」と申告してしまった。
(ヘルプの皆さん、ありがとう。あなた方いないと、私は申告書もろくに書けませんでした。)
お国のために、勤労と納税は義務ですよ、はい。
SQLServer覚書 8桁数値を日付表示に
さて、最近くだらないことをまじめに書いているので、久しぶりに技術的なことを軽くメモ書きしておこう。
8桁数値を日付(yyyy/mm/dd)表示にする方法
SELECT CONVERT(varchar,CONVERT(datetime, CONVERT(varchar,20160223), 112),111)
1つ目(内側から)は文字列に変換、2つ目のCONVERTではDATETIME型に変換するので、出力としては「2016/02/23 0:00:00」というように日付と時間で出力される。
これを「yyyy/mm/dd」形式の文字列で出力させるために3つ目(一番外側)のCONVERTを用意。
これとは逆に日付を8桁数値に変える場合は、データを「yyyymmdd」の文字列で出力した後、INT(またはNUMERIC)型に変えてしまえばよい。
SELECT CONVERT(int,CONVERT(varchar, '2016-2-14', 112))
よろしいですか?
あなたの店の前はあなたの店ではありません。
あなたの店の前はあなたの店の待合室ではないし、喫煙室でもありません。
あなたの店の前はあなたの駐輪場ではありませんし、ましてや駐車場ではありません。
あなたの家の前はあなたたちの駐車場ではありません。
あなたの家の前はあなたたち家族の遊び場ではありません。
道は唾や煙を吐くところではありません。
道はゴミを捨てるところでもありません。
どうして自分の子供の前で吸わないたばこを赤の他人の前で吸うのでしょう?
どうして道路で喫煙して、他人の服や肺をいとも易々と汚すのでしょう?
どうしてゴミを放置したり、ポイ捨てしたりするのでしょう?
それらをきれいにするのはいったい誰なのでしょう?
あなたはペットを子供のようにかわいがりますが、その「子供」は人の家の前で糞尿をしています。
あなたの子供が「人」であるなら、そのようなことは許されるでしょうか?
片付けるからいいではないか?そういう問題ではありません。
これらはすべて意識の問題です。
道路は公共の場所です。
他人に迷惑をかける行為を故意にやる必要はありません。
家でやれることは家でやればよいのです。
家の中で唾を吐き、ポイ捨てすればよいのです。
家の中で煙を吐き、外に出さなければよいのです。
家の中で糞をして、トイレに流せばよいのです。
そう、他の人は関係ありません。
Excel印刷範囲指定+ウインドウ枠固定→チカチカ
印刷範囲指定をしてウィンドウ枠を固定すると、アクティブセルのある領域以外の図形がちらついて見える事象。
Excel2010でしか起きないらしい当該事象だが、さてどうしようかと考えると、結局は印刷範囲指定をやめる結論に至った。
解決作的には根治してもらわなければならないのだが、MSさんが重い腰をあげないので、
自分で腰を上げるとするなら、例えば、印刷ボタンを作って、ボタンを押したときだけ印刷範囲指定→印刷→印刷範囲クリアすればよいのかなぁと考えた。
でも、厳密に印刷設定を行う必要性がないのであれば、印刷の拡大率を設定しておくだけでも何とかなるような気もする。
ExcelVBA覚書 Shellとかリモート実行とか
忘れる前にメモっとく。
VBAからコマンド実行を非同期で行う時に使うShell関数。
第2引数にvbMinimizedNoFocusを設定すると、コマンドプロンプトは非表示になって、裏側で走る仕組みにできるそうな。
Dim cmd_buf As String
Dim res As Double
cmd_buf = "cmd /c sqlcmd -S {DB-Source} -U {DB-UserId} -P {DB-UserPw} -d {DB-Name} " _
& " -Q ""EXEC {プロシージャ名} {*}, '{*}' """
res = Shell(cmd_buf, vbMinimizedNoFocus)
{}書きは環境に合わせて変更
{*}はストアドの引数で、文字列の場合はシングルクォーテーションで囲む。
Shellの戻り値はタスクIDで、「0」がかえってきたら動いていないということらしい。
非同期なので勝手に動いて、勝手に終わる。
終わったらウィンドウをアクティブにするとかすると、終わったことがわかるらしい。
If res > 0 Then Call AppActivate(res)
と、こんな感じかね。
ふむふむ、しかしだね、裏側で勝手に動いているわけで、下手にPCシャットダウンしちゃうと、処理が途中で終わっちゃう!ってところが怖い。
で、次。
リモート環境にあるバッチファイルを実行する方法。
'server:リモートサーバ(user_id/user_pwでログイン)
'exe_name:実行ファイル, exe_position:実行ファイルのパス
Public Function ExecuteRemoteExe(server As String, user_id As String, user_pw As String _
, exe_name As String, exe_position As String) As Boolean
Const AUTHENTICATION_LEVEL_PKT_PRIVACY = 6
Dim obj_locator As Object
Dim obj_server As Object
Dim obj_process As Object
Dim res As Long
Dim pid As Long
On Error GoTo ErrExecute
Set obj_locator = CreateObject("WbemScripting.SWbemLocator")
Set obj_server = obj_locator.ConnectServer(server, "root\cimv2", user_id, user_pw)
obj_server.Security_.authenticationLevel = AUTHENTICATION_LEVEL_PKT_PRIVACY
Set obj_process = server.get("Win32_Process")
res = obj_process.Create(exe_position, Null, Null, pid)
Select Case res
Case 0
ExecuteRemoteExe = True
Case 2
Msgbox "アクセスできませんでした。"
Case 9
Msgbox "パスが正しくありません。"
Case 21
Msgbox "パラメータが正しくありません。"
Case Else
Msgbox "バッチを実行できませんでした。"
End Select
ErrExecute:
Set obj_process = Nothing
Set obj_server = Nothing
Set obj_locator = Nothing
End Function
これでリモートのバッチファイルを実行することができる。
できるんだけど、これもこっち側のPCを切ってしまうと、バッチも終わってしまう・・・
なんとかならんか。
ExcelVBA覚書 Resize
モノを整理するのにモノを買う・・・
という、断捨離しているはずなのにモノを増やす、愚かしいことをやってしまった。
いや、何にせよ、今のままじゃイカン!と、虚無感たっぷりに自分に活を入れつつ。
ExcelのRangeオブジェクトのメソッドにあるResize。起点セルと行列数を指定して範囲指定するのに使っているようだ。
こんなメソッドがあるとは全く知らなかったが、ネットサーフィンしてたらたまたま見つけたので試してみる。
参照サイト:Range,Cells」と「Resize」のセル範囲指定を比べてみる
パターン1:ごくごく一般的な範囲指定
With ThisWorkbook.Worksheets(1)
.Range("C2:E4").Select
End With
パターン2:一般的なはずな範囲指定
With ThisWorkbook.Worksheets(1)
.Range(.Cells(2, 3), .Cells(4, 5)).Select
End With
パターン3:「Resize使って同じことしてみるよ」な範囲指定
With ThisWorkbook.Worksheets(1)
.Cells(2,3).Resize(3,3).Select
End With
パターン4:「Offset使って同じことしてみるよ」な範囲指定
With ThisWorkbook.Worksheets(1)
.Range(.Cells(2,3),.Cells(2,3).Offset(3,3)).Select
End With
パターン1から4まで、すべて同じ範囲が指定される。(つまり、セルC2~E4)
なるほど、少なくともパターン4よりは、パターン3の方がきれいだ。
パターン2と3、どちらを使うかは、周辺のロジック次第。
なお、参照サイトには「Rangeが参照しているシートがアクティブになっていないとエラーになる」と書いてあるが、実はどのメソッドでも同じ。Selectメソッド自体、アクティブシート上にでないと動かないので、ResizeやOffsetとは関係がないと思う。
最近のダメな私
最近の私は本当にダメダメだ。
なんてったって、仕事をする意欲がない。
寒いから外にも出たくない。家事もしたくない。
とりあえず、起きて、食べて、遊んで、寝る、ってなルーティーンをできるだけの財力が欲しい・・・
・・・以下、個人保護のため音声は変えております。・・・
SMAP解散騒動
なんで謝罪するのか意味不明。
お騒がせさせたのはメディアで、騒いでるのはマスコミとファンでしょ。
解散しない方がいいのもよくわからん。
他人の人生に口を挟む理由もよくわからん。
という、わからんことばかり。
社会ってこういうものかしら。
ゲスさん不倫
何がゲスなのかわからん。
そもそも、好きになってしまったらどうにもならんのです。
不倫から始まってうまくいってる夫婦って結構いるし。
それをゲス呼ばわりできる人って限られてる。
でも、男の方はやっぱりゲスかな。ゲスというよりアホってかんじだけど。
次にゲスってるのは男の嫁だと思う。
旦那が不倫してる思いの丈なんて、週刊誌にしゃべるか?
普通そんなことしないでしょ。夫婦のことは夫婦で決着つけてね。
え、そう、そうよ。私には関係のない話。
株
去年持ってる株を全部売った。
年初から日経平均が値下がりしたといっても、私が売ったときよりはまだ高い。
というか、そもそも株価の変動激しすぎ。
一律20%とかでなく、買ってから売るまでの期間によって税率を変えてみてはどうだろ。
投資してほしいというわりに、NISAも中途半端だし、
低金利でお金預けてもたいした利息も付かんし、
今後マイナンバーで管理されるようになれば、結局タンス預金で落ち着いちゃうよ。
所詮外野は適当だわ。
PostgreSQL覚書 DBLINK設定方法
昔やったのに忘れてしもーた・・・
と、Webで調べたDBLINK。
「CREATE EXTENSION DBLINK;とやったら使えるよ!」みたいなサイトがあったからやってみたら、postgreさんに「なんじゃい!」って怒られたので、過去のドキュメントを引っ張り出してきた。
「そもそも、モジュールあらへんやん、あんた」みたいな話なので、
コマンドプロンプトを立ち上げて、
cd /d C:\Program Files\PostgreSQL\9.0
bin\psql -U {USER_ID} -d {DBNAME} < share\contrib\dblink.sql
でPWを入れてDBLINKを使えるようにすると、関数としてDBLINKが使えるようになった。
PostgreSQL覚書 年間日別レコードを作る
1年分の日付データを作りたい。もちろん一括で。
できないものかと探すと、あった。
SELECT arr.i AS date1
FROM
generate_series(
cast('2016-1-1' as timestamp)
, cast('2016-1-1' as timestamp) + '12 months' + '-1days'
, '1days'
) as arr(i)
Series Generating Functions(集合を返す関数)・・・
よくわかりヘンが、generate_seriesの1つめの引数をスタートとして、2つ目の引数まで1データずつレコードを作成してくれる便利なもの。
1,2の引数がINT型であれば、3つ目の引数はなく、+1しながらレコードが作られる。
1,2の引数がTIMESTAMP型であれば、3つ目の引数にインターバル設定をして、インターバル設定分プラスしながらレコードが作られる。(上の例だと1日ずつ)
ExcelVBA覚書 シート保護
シートを保護する、解除するというのは、
Worksheets(“Sheet1”).Protect
Worksheets(“Sheet1”).Unprotect
という、メンバー(サブプロシージャ)でできるのだが、Protectするときの引数に、「UserInterfaceOnly」というのがあり、これをTrueにしておけば、シート保護の解除をしなくても、マクロでシート上のデータを変えられるそうな。
Worksheets("Sheet1").Protect UserInterfaceOnly:=True
なので、いままでわざわざシート保護を解除して処理をしていた自分が情けなくなった。
(何年VBA使ってんだよ!と自分を責めてみる。)
まだまだ知らないことがあるなぁ。
この引数を指定しない場合は、ちゃんと保護解除をしてから触ること。
ExcelVBA覚書 IsMissing関数
Optionalで指定した引数は省略可能だが、設定されて呼び出されているかどうかを確認する関数がIsMissingだそう。
しかしながら、この変数の型がVarient型のときにしか機能しないというお粗末もの。
Private Sub Test (Optional a As Varient)
If Not IsMissing(a) Then
'設定されているとき
Else
'設定されていないときのロジック
End If
End Sub
下のようにLong型にすると、a=0と判断されてしまうので×。
Private Sub Test (Optional a As Long)
If Not IsMissing(a) Then
'全部こちらに入ってしまう
Else
'こっちに来ない
End If
End Sub
ということで、省略時の初期値を設定しておき、条件分岐をする。
Private Sub Test (Optional a As Long = -1)
If a>0 Then
'省略されていないとき
Else
'省略されたとき
End If
End Sub
辞める人、留まる人
年末や年度末になると、退職する人がいて、
「あぁ、仕事ができる人って、辞めていくよなぁ・・・」
みたいに思ってしまう。
なんだか、置いてけぼりを喰っているように感じるのは何故なんだ。
ただ、会社の人が辞めていくのを何人もみたのだが、正直、辞めるときのお作法ってのを知らなさすぎるなぁと思う。
前居た会社だと、アルバイトでも社員でも、転勤やら退職するときは、みんな菓子折ひとつ持ってきて、部署の人みんなに挨拶がてら配っていた。
それが当たり前だとも思ってた。
この会社に来てから、そういうことやる人があまりいないのに、正直ビックリした。
うちの会社は派遣会社みたいなものなので、社員がいろんなところに散らばっている。100人中、身近にいるのは10人ぐらいなもんだ。
だけどだ。
それでも、身近にいるひとにだけでもさ、菓子折一つもって挨拶してまわったらどうよ?
「お世話になりました」ってさ。
それが礼儀じゃないのか?
まぁ、年上の人間がそういう風に辞めていく姿を見ていないと、若い人には伝わらんのかな・・・
常識の範疇だと思ってたけど。
(学生時代、バイト辞めるときでもそれぐらいのことはしたけどな)
と、なんだか古狸か、お局様みたいな感じになってしまったが、そういう意味でまともな「大人」がいない会社だなぁ、と改めて感じてしまった今日この頃。
そして、私はそんな会社に留まっている人なんだけど、さぁどうしましょう。
ExcelVBA覚書 ハイパーリンク
指定したURLを開く。(イベント用)
' url : リンク先
Private Sub GotoLink(url As String)
On Error Resume Next
ThisWorkbook.FollowHyperlink Address:=url
End Sub
セルに指定したURLのハイパーリンクを設定する。
' rng : 設定セル , description : 表示文言, url : リンク先
Private Sub SetHyperlink(rng As Range, description As String, url As String)
On Error Resume Next
rng.Hyperlinks.Add Anchor:=rng , Address:="", SubAddress:=url, TextToDisplay:=.description
End Sub
ハイパーリンクを削除する。
' rng : 設定セル
Private Sub DeleteHyperlink(rng As Range)
On Error Resume Next
rng.Hyperlinks.Delete
End Sub
在庫処分の日
さてもさても、去年の年末より断捨離中。
年末に使っていないストーブや電化製品を売ったけど、トータルで1000円ぐらいにしかならず凹む。
しかし、年始早々に別のものを持って行ったら、「この間持ってきていただいた品がもう売れました!」ってな報告を受けて、まぁ、誰かが使ってくれるのならいいか・・・と思った次第。
(で、いくらで売ったんだよ!と思いながらも聞きそびれた。)
で、連休を利用して、梅田まで衣料品とPCを売りに行った。
梅田に売りに行ったらチョットは高額になるのでは?とか期待した衣料品は結局お金にならず、ほぼほぼただの布扱い。(でも、JUMBLE STOREで1枚10円にはなったので、捨てるよりマシ。本当に布扱いだとグラムいくらになるんだよね。交通費入れたら捨てた方が・・・とか思ってしまう。)
しかし、一緒に持って行った布製の鞄は、1000円近くになったのでヨシとしよう。(捨てなくてよかった。)
次にPC。
いつものところ(Sofmap)に売りに行く。
会社の同僚がMacbook Airが4万円近くで売れたというので、期待大で持って行くと、5万以上になってくれた。もう1つのWindowsノートは2万円台で売れたので、財布はホクホクになった。
相変わらず、Macは値崩れしないので買い換えしやすいなぁと思う。
Macbook Air 1.8GHz Core-i7 11.6inch Memory4GB HDD256GB 買取価格53,000円
(ちなみにキーボードは海外向けのもので、2年ぐらい前に8万ぐらいで購入したはず)
Java覚書 月加算・月末
月末を出すときは、加算前の日を1日にしておいて、加算後-1日するのが自分の常套手段。
(どの言語でも大体このロジックは使えるし)
import java.util.Calendar;
public class Main {
public static void main(String[] args) throws Exception {
// 指定日からnヶ月後の月末を出力
int y = 2012;
int m = 12;
int d = 14;
int n = 2;
Calendar cal = Calendar.getInstance();
cal .set(y,m - 1, d);
dispDate(calendar);
cal .set(y,m - 1, 1);
cal .add(Calendar.MONTH, n + 1);
cal .add(Calendar.DATE, -1);
dispDate(cal);
}
private static void dispDate(Calendar cal ){
int year = cal .get(Calendar.YEAR);
int month = cal .get(Calendar.MONTH) + 1;
int day = cal .get(Calendar.DATE);
StringBuffer sb = new StringBuffer();
sb.append(year + "年" + month + "月" + day + "日");
System.out.println(new String(sb));
}
}
謹賀新年
さて、正月早々いきなりステーキに行ってきた。
いきなり贅沢だが、まぁ自分を発奮させるためには、これぐらい必要かな。
ヘレステーキ200g。ちょっと足りないかなとも思ったが、あとのことも考えて一応セーブ。
今日の第一目標は、「STARWARS」を観ること。
1日なので、映画が1100円で観られる。ということで、映画館でネットで買ったチケットを取って、ジュースを買ってシアターへ入る。
映画の宣伝が15分あって長いのに正月早々ちょっとイラッとしつつ、さっそくエピソード7スタート。
ネタバレになるので内容は書けないけれど、もうなんといっても、
「映画を観た!!」
って感じにさせてくれた映画だった。映像も音楽も圧倒的。それに昔から見ている人たちを裏切らない感じ。
いやぁ、映画ってやっぱりいいですね、って久しぶりに思った。