【本】スピリチュアルマーケティング
- 作者: ジョー・ヴィターレ,白川貴子
- 出版社/メーカー: ヴォイス
- 発売日: 2013/12/19
- メディア: 新書
- この商品を含むブログを見る
タイトルに“スピリチュアル”を冠しているだけあって、
ちょっと怪しい空気感は否めない。
引き寄せの法則の実践メソッドが
著者のヴィターレさんの体験談や聞いた話を盛り込みつつ紹介されていた。
1)自分の望んでいないことを知る
2)欲しいもの、したいこと、なりたいものを知る
3)意識を明晰にする
4)願望が成就したときの素晴らしい気分を味わう
5)流れに身を委ねる
引き寄せの法則は「わたし今日からキラキラOLやめてギラギラします! 絶対達成する人になる方法」の方が、
“スピリチュアル”的ではなく科学的に説明してくれるのでしっくりくる。
「生物と無生物の間」にでてくる“チャンスは、準備された心に降り立つ”にも通じるものがあると思う。
この本のいいところは、読後感?
目標に向かって流れているハズ、と少し気持ちが楽になる?
疲れた時に再読するかもしれない。
わたし今日からキラキラOLやめてギラギラします! 絶対達成する人になる方法
- 作者: 沙絵,横山信弘
- 出版社/メーカー: KADOKAWA
- 発売日: 2016/03/25
- メディア: 単行本
- この商品を含むブログを見る
- 作者: 福岡伸一
- 出版社/メーカー: 講談社
- 発売日: 2007/05/18
- メディア: 新書
- 購入: 56人 クリック: 1,487回
- この商品を含むブログ (1112件) を見る
slackのログをGoogle Driveに保存
Slackを無料アカウントで利用すると、
10,000発言しか残らないらしい。
でも、一括でエクスポートするAPIが提供されているので、
こまめに保存しておけばOK。
GoogleDriveに保存してみた。
GASはじめて触ったけど、クーロン実行もぽちぽちするだけでとっても便利でした。
//*********************************************************************/ // Slackのログを一括保存 //------------------------------------------------- // //*********************************************************************/ function excSaveLog() { // 定数 var SLACK_BASE_URL = "https://slack.com/api"; var SLACK_API_TOKEN = "YourSlackAPI Token"; var LOG_SAVE_FOLDER = "YourSave Folder"; var SAVE_PERIOD_HOR = 2; //処理開始 Logger.log("===== START =====") // var CHANNEL_LIST_URL = SLACK_BASE_URL + "/channels.list?token=" + SLACK_API_TOKEN; var CHANNEL_HIST_URL = SLACK_BASE_URL + "/channels.history?token=" + SLACK_API_TOKEN; var datNow = Utilities.formatDate(new Date() , 'Asia/Tokyo' , 'yyyy_MM_dd_HH_mm_ss'); //チャンネルリスト取得 var objChListJson = getJson(CHANNEL_LIST_URL); //保存 saveAsText("ChannelList_" + datNow + ".json" ,objChListJson ,LOG_SAVE_FOLDER); //チャンネルループ for(var idxCh = 0; idxCh < objChListJson.channels.length; idxCh++){ Logger.log(objChListJson.channels[idxCh].name); var objChHistJson = getJson( getChannelHistroyURL(CHANNEL_HIST_URL, objChListJson.channels[idxCh].id, SAVE_PERIOD_HOR) ); //保存 saveAsText( objChListJson.channels[idxCh].name + "_" + getTimePeriodString(SAVE_PERIOD_HOR) + ".json" ,objChHistJson ,LOG_SAVE_FOLDER); } //処理終了 Logger.log("===== END =====") } //*************************************************/ // JSON取得 //-------------------------------------------- // return Json or false //*************************************************/ function getJson(JSON_URL){ var Response = UrlFetchApp.fetch(JSON_URL); var JsonStr = Response.getContentText(); if (JsonStr.length > 0){ return JSON.parse(JsonStr); } else { return false; }; } //**************************************************/ // JsonObjectをテキストファイルに保存 //**************************************************/ function saveAsText(FileName, JsonObject, SaveFolderName){ var txtfile = DriveApp.createFile(FileName, JSON.stringify(JsonObject), MimeType.PLAIN_TEXT); var folders = DriveApp.getFoldersByName(SaveFolderName); var file = DriveApp.getFileById(txtfile.getId()); if(folders.hasNext()){ var folder = folders.next(); var newfile = file.makeCopy(folder); newfile.setName(FileName); DriveApp.removeFile(file); } } //**************************************************/ // 履歴取得URL //**************************************************/ function getChannelHistroyURL(BaseUrl, ChannelId, PeriodHour){ //LatestTime算出 var latTime = Math.floor( new Date().getTime() / 1000 ); latTime = latTime - (3600 * PeriodHour); latTime = Math.round(latTime / (3600 * PeriodHour)) * (3600 * PeriodHour); //OldestTime var OldTime = latTime - (3600 * PeriodHour); var retUrl = BaseUrl; retUrl = retUrl + "&channel=" + ChannelId; retUrl = retUrl + "&latest=" + latTime; retUrl = retUrl + "&oldest=" + OldTime; return retUrl; } //**************************************************/ // 期間表示用文字列取得 //**************************************************/ function getTimePeriodString(PeriodHour){ //LatestTime算出 var latTime = Math.floor( new Date().getTime() / 1000 ); latTime = latTime - (3600 * PeriodHour); latTime = Math.round(latTime / (3600 * PeriodHour)) * (3600 * PeriodHour); //OldestTime var OldTime = latTime - (3600 * PeriodHour); var retStr = ""; retStr = retStr + Utilities.formatDate(new Date(OldTime * 1000) , 'Asia/Tokyo' , 'yyyy_MM_dd_HHmm'); retStr = retStr + "to" retStr = retStr + Utilities.formatDate(new Date(latTime * 1000) , 'Asia/Tokyo' , 'HHmm'); return retStr; }
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
めでたしめでたし