読者です 読者をやめる 読者になる 読者になる

slackのOutgoing WebHooksをこにゃこにゃ

SlackのBOT作るのに、適当なネタがないかなぁと思っていたら、
なんか喋ったら末尾に「なっし〜」つけて返信すればOK><と言われ、
それならできそうなのでチャレンジしてみた。

環境

ASP.net MVC + AppHarbor

書いたこと

適当なコントローラに↓書いた。

        Function SlackOut(ByVal val As dtoSlackOutgoingWebHook)
            If val.user_name = "slackbot" OrElse _
               val.user_name = "NassyBot" Then
                Return Nothing
            Else
                Return Json(New With {.text = val.text & "なっし〜"})
            End If
        End Function

これだけ、後はAppHarborにデプロイして、
slackのOutgoingWebHookの設定すればOK

簡単ですね^^

一回返信した自分の投稿にさらに返信してしまい。
無限ループしたのはご愛嬌><

slackに.netのWebClientからつぶやく

Ingressで、お世話になっているコミュニティが、slackになった。
Hubot系はLAMPな方々が頑張りそうなので、
僕は.netからつぶやいてみることにした。

最終的には(Herokuではなくて)AppHorborからつぶやきくことになると思うけど、
とりあえずはローカルのWebClientから。

Imports Newtonsoft.Json

Module Module1

Sub Main()
    Dim strUrl As String = "https://hooks.slack.com/services/XXXXX/YYYYY/ZZZZZ"
    Dim objEnc As System.Text.Encoding = New System.Text.UTF8Encoding

    'メッセージ作る
    Dim strPostMsg As String = JsonConvert.SerializeObject(New With {.text = "Hellow World", _
                                                                     .icon_emoji = ":grin:", _
                                                                     .username = "botbotbot"})

    'メッセージ投稿
    Using objWC As Net.WebClient = New Net.WebClient
        Dim objKV As New System.Collections.Specialized.NameValueCollection
        objKV("payload") = strPostMsg
        Dim objRes As Byte() = objWC.UploadValues(strUrl, "POST", objKV)
        Dim strRes As String = objEnc.GetString(objRes)
    End Using
End Sub
End Module

DapperでORACLEのテーブル定義を抽出する

Dapperを使ってテーブルデータのまるまるコピーバッチを作ってた。
で、コピー元のテーブル定義をコピー先にも反映してよ!!っと言われました。

でも、都合上、DB_LINKが使えない→Create select×

じゃーしょうがないDDL流すか。。。→定義はDB見てね(お約束)

素敵なサイトを発見
http://utsuutsu.blogspot.jp/2010/02/oracle9idbmsmetadatagetddltableindextri.html
DDL取るところまではマルパクリでうまくいきそう。

でもね、この部分、どうやってDapperで流すんだろう。。。

exec DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SQLTERMINATOR', TRUE  );
exec DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE'      , FALSE );

これで出来た^^

        Dim objSql As New StringBuilder
        With objSql
            .AppendLine("begin")
            .AppendLine("   DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE', false );")
            .AppendLine("end;")
        End With
        'ストアド実行
        objDbConnection.Execute(objSql.ToString, Nothing, CommandType.Text)

        objSql.Length = 0
        With objSql
            .AppendLine("begin")
            .AppendLine("   DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SQLTERMINATOR', true );")
            .AppendLine("end;")
        End With
        'ストアド実行
        objDbConnection.Execute(objSql.ToString, Nothing, CommandType.Text)

後は↑の素敵サイトのSQLをまるっと実行すればOK
めでたしめでたし

Fessの検索結果にファイル名を使いたい

(多分)クロールがファイルシステムだけの時しかうまくいかないけど
下記にて対応した。

ファイル:%FessRoot%\webapps\fess\WEB-INF\view\searchResults.jsp

修正前

<h3 class="title ellipsis">
	<a class="link" href="${doc.urlLink}" data-uri="${doc.urlLink}" data-id="${doc.docId}">${f:h(doc.contentTitle)}</a>
</h3>

このdoc.contentTitleがよくわかっていないけど、
ファイルによってうまい事タイトル的なところを抜いてきてくれている感じはあるものの、
今回の案件ではおいしくないところを取ってくる場合が多く、利用者的にはファイル名を出してほしいと。。。

修正後

<h3 class="title ellipsis">
	<!-- 15.02.13 mod START -->
	<!-- タイトルではなくファイル名を出してほしいとのこと -->
	<a class="link" href="${doc.urlLink}" data-uri="${doc.urlLink}" data-id="${doc.docId}">${f:h(fn:split(doc.urlLink,"/")[fn:length(fn:split(doc.urlLink,"/"))-1])}</a>
	<!-- 15.02.13 mod END -->
</h3>

ファイル名を保持しているプロパティを見つけられず。
しょうがないので、urlLink(ファイルシステムなのでフルパス)からファイル名を抜き出して表示

2015-02-11 駿府城公園散歩

近所のお寺のプチ祭りに参加した後に、
駿府城公園にお散歩しに行ってきた。

緑エージェントさんに会うも314のフライヤーは
すでにお持ちでした><

その後青エージェントさん二人組みに会い、
フライヤーをわたすことができました。

2015-02-09 Translator金

ドリプラでハック
外気温2度、風速4mくらい?

水溜り凍ってたし。。。

そんな中でも2人の緑エージェントさんと遭遇したり、
別の緑エージェントさんがP8にRMH&RHSいれにきてくれたり。

寒さに負けずグリフしてたら金とれました^^

2015-02-08 今日のGlyph

■第1部 深夜2時くらい><

Hack数:54
ポイント:560
累計ポイント:4896

■第2部 朝8時〜朝10時

起きると雨降ってない^^
天気予報だと雨だったのに。

Translator金取るまではがんばると決めたので、
自転車で30分ほどのポータル群へ

9:30頃には本格的に降ってきたので、
今日はここで終了。

Hack数:39
ポイント:414
累計ポイント:5310