月: 2016年1月

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日ずつ)

参考URL:Postgresqlでカレンダーを使わずに日付を列挙する方法(generate_series)

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スタート。

ネタバレになるので内容は書けないけれど、もうなんといっても、
「映画を観た!!」
って感じにさせてくれた映画だった。映像も音楽も圧倒的。それに昔から見ている人たちを裏切らない感じ。
いやぁ、映画ってやっぱりいいですね、って久しぶりに思った。