信頼はずっと、挑戦はもっと。

お問い合わせ
TEL:03-3496-3888

BLOG コアテックの社員ブログ (毎週月曜~金曜更新中)

LIST OF ARTICLES

記事一覧

  • レビュー

    最近読んだ本

    最近いろいろ大変ですよねー。まあそれには触れないで本のご紹介「ついやってしまう」体験のつくりかた――人を動かす「直感・驚き・物語」のしくみhttps://www.amazon.co.jp/dp/B07VC4N5HW/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1元任天堂企画部の語る、心を動かす体験のデザイン方法。実際のゲームを例に手法が語られるが、まあその多さといい緻密さといい驚く。この本自体内容は大真面目で固いことを話しているにも関わらずスラスラ読める、まるで出来の良いゲームのチュートリアルのように。ゲームをやらない方でもおすすめ。人のために頑張りすぎて疲れた時に読む本https://www.amazon.co.jp/dp/B07M7N5LLT/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1タイトルに惹かれた人におすすめの本。人のために何かしていて上手くいかない、疲れてくる、という人は実は頑張りすぎている、とのこと。疲れた人向けと題してあるだけあって、こちらを否定せず優しくしてくれるのもポイント。ゆるキャン△https://www.amazon.co.jp/dp/B01853H0C4/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1平凡だった日常は一つの出会いをきっかけに、数多の運命を巻き込み色を変えていく。王道ガールミーツガール日常系キャンプ漫画、ここにあり。最近実写化もしたらしい。ではまた次回
  • テクログ

    【E2Eテスト】codeceptjsをテスト環境に導入してから数ヶ月経過

    こんにちは。E2Eテストを導入して数ヶ月経過しました。画面が生きているかの確認や一定のアクションを実行できるかの確認程度のテストを常に実施しています。忘れた頃にテスト失敗通知がChatWorkに届きます。実施していなかった頃に比べると「検知」のスピードは格段に上がっていると感じます。このままテストと仲良くなりたいです。
  • 画像:ブログサムネイル

    テクログ

    wafのサンプルログを定期的にとって、あったら自動でchatworkに通知してほしいというきもち

    どうも、相変わらずいろいろ検証をしています。RDS Proxy はやくGAになってほしいですね。さて、標題の気持ちになったのでLambdaを書きました。ファイル分け?大丈夫大丈夫このくらいなら。冗長だとしてもわかりやすさ優先なのはいつもどおりです。弊社ではcloud9でのserverless frameworkでのデプロイも普通になってきましたね。Lambdaがはかどりますね。さてソースです。こちら、参考URLです。https://dev.classmethod.jp/articles/get-aws-waf-sample-logs/こちらを色々変更し、指定したwaf 指定したルールを 指定した間隔で行うようにしています。環境変数に入るだけ何個でもいけますね。あ、これはCF版ですが、LB版は上のクライアントを変えるだけだと思います。(作って運用しています。増えすぎるのであえてCF版とLB版を分けました)実行はcloudwatch eventsで設定です。slsの設定で。環境変数はこんな感じCHATWORK_API_TOKEN XXあんごうかしたトークンだよXXCHECK_LISTS [{'Name':'ばいたいめいだよ','WebAclID':'aaaa-aaaaとかだよ','WAFName':'わかりやすくするためのwafの名前です','RuleID':'aaaa-bbbbとかのルールID','RuleName':'これも基本わかりやすくするためのルール名'},]INTERVAL 11(とか数字)ROOM_ID 11111111(とかのルームID)# -*- coding: utf-8 -*- #cfのwafのサンプルログを確認し、あれば通知する import os import urllib from datetime import datetime, timedelta import boto3 import sys from base64 import b64decode import ast REGION = "ap-northeast-1" #環境変数 #Chatwork API トークン ENCRYPTED_CHATWORK_API_TOKEN = os.environ['CHATWORK_API_TOKEN'] CHATWORK_API_TOKEN = boto3.client('kms').decrypt(CiphertextBlob=b64decode(ENCRYPTED_CHATWORK_API_TOKEN))['Plaintext'] INTERVAL = int(os.environ['INTERVAL']) ROOM_ID = os.environ['ROOM_ID'] CHECK_LISTS = ast.literal_eval(os.environ['CHECK_LISTS']) #client用意 CF版だよ waf = boto3.client('waf') #### # replace datetime to string #### def time2str(x):     x['Timestamp'] = x['Timestamp'].isoformat()     return x #### #chatworkに通知 #### def postChatwork(message, room_id):   END_POINT_BASE = "https://api.chatwork.com/v2"   END_POINT      = "/rooms/"   ACTION         = "/messages"      headers = { 'X-ChatWorkToken': CHATWORK_API_TOKEN }      data  = { 'body': message }   data = urllib.parse.urlencode(data)   data = data.encode('utf-8')      # リクエストの生成と送信   post_message_url = END_POINT_BASE + END_POINT + room_id + ACTION   request = urllib.request.Request(post_message_url, data=data, method="POST", headers=headers)   with urllib.request.urlopen(request) as response:     response_body = response.read().decode("utf-8")     print(response_body) #### #dictを文字にするだけ #### def makeText(marge_logs):   text = "[info][title]CF版 WAF 検知ログ 直近"+str(INTERVAL)+"分[/title]"      for log in marge_logs:     for key, value in log.items():       text += key + "    " + value + "\n"     text += "[hr]"        text += "[/info]"        return text ### #main ### def lambda_handler(event, context):   #LISTごとに繰り返し   for CHECK_LIST in CHECK_LISTS:     WebAclId = CHECK_LIST['WebAclID']     acl = waf.get_web_acl(WebACLId=WebAclId)          WebACLName = acl['WebACL']['Name']        marge_logs = []     for rule in acl['WebACL']['Rules']:       RuleId = rule['RuleId']              if RuleId == CHECK_LIST['RuleID']:         # get sample requests         r = waf.get_sampled_requests(           MaxItems=3,           WebAclId=WebAclId,           RuleId=RuleId,           TimeWindow={             'EndTime': datetime.utcnow(),             'StartTime': datetime.utcnow() - timedelta(minutes=INTERVAL)           }         )              # check sample count         if 'SampledRequests' not in r or len(r['SampledRequests']) == 0:           #ログのみ           print("WebAclId:" + WebAclId + " RuleId:" +RuleId + " サンプルカウントなし")         else:           # replace datetime to string           logs = list(map(time2str, r['SampledRequests']))           for l in logs:             headers_dict = l['Request']['Headers']                      Host = ''             From = ''             UserAgent = ''             UserAgent2 = ''             Referer = ''             Referer2 = ''             for hd in headers_dict:               if hd['Name'] == 'Host':                 Host = hd['Value']               elif hd['Name'] == 'From':                 From = hd['Value']               elif hd['Name'] == 'User-Agent':                 UserAgent = hd['Value']               elif hd['Name'] == 'user-agent':                 UserAgent2 = hd['Value']               elif hd['Name'] == 'Referer':                 Referer = hd['Value']               elif hd['Name'] == 'referer':                 Referer2 = hd['Value']                          simpledict = {               '媒体名':CHECK_LIST['Name'],               '時間':l['Timestamp'],               'IP':'https://ipee.at/'+l['Request']['ClientIP'],               '国':l['Request']['Country'],               'URI':l['Request']['URI'],               'Headers.Host':Host,               'Headers.From':From,               'Headers.User-Agent':UserAgent + UserAgent2,               'Headers.Referer':Referer + Referer2,               '対象WAF/ルール':CHECK_LIST['WAFName']+' / '+CHECK_LIST['RuleName'],               'Method':l['Request']['Method'],             }             marge_logs.append(simpledict)               # chatwork通知           if marge_logs != []:             try:               print(marge_logs)               cw_text = makeText(marge_logs)               postChatwork(cw_text, ROOM_ID)             except Exception as e:               print(e)           else:             postChatwork("ログないよ", ROOM_ID)#基本ここはないですね ではよいWAF生活を!
  • 画像:ブログサムネイル

    雑記

    日本人に生まれたからには

    とくに生け花やお茶を習っているわけでもなく、セレブでもありませんが年齢を重ねるにつれ、着物に対する憧れが強まってしまい普段着として気軽に着物を着られるようになりたい!という夢を叶えるため今年に入ってから着付け教室に通い始めました。なぜ着物にこんなに惹かれるんだろうとよくよく考えてみると幼少時から好きでよく観ていた時代劇の影響が大きいような。時代物作品にありがちな勧善懲悪の人情溢れるストーリー展開や 殺陣のシーン、役者の存在感等々魅力は沢山ありますが、一番熱心に観ていたのは役者さんが着ている”着物”。着物には四季やTPOに合わせた格や柄デザイン、色や素材があり、柄そのものにも深い意味があってとにかく組み合わせは無限と思えるほど奥が深いので、歴史を学ぶだけでも相当面白いです。また、着物だけではなく、着物を着た人たちの所作の美しさにも日本の美が滲み出る不思議。襖を開けるとき、閉めるとき お茶をたてるとき人とすれ違うとき雨のなか急いで歩くとき座るとき 日常のなんでもない動作ですが、着物を着るだけでガラリと変わり風情と人間の色気のようなものがプラスされる気がします。洋服のほうが圧倒的に手軽で便利ですし身体もラクなのですが着物を着ると、なぜかすごくしっくりと馴染んでずっと着ていたくなるのは、これこそ日本人のDNAなのでは…と感じます。会社のメンバー全員が和服姿で仕事していたら、すごく赴きがあって面白いだろうなぁと ひとり妄想してニヤニヤ。教室ではまず基礎となる10月~5月に着る袷の着物と二重太鼓の帯結びの着付け練習からスタートしました。ようやく自力でなんとか着られるようにはなりましたが、工程が多くてなかなか覚えきれません。時間がかかりすぎるうえ、まだまだ仕上がりが甘いのでもっと短時間で美しく着られるように鍛錬を積もうと思います。ちょうど、今は思うように外出できない非常事態ですので状況が落ち着くまで しばらく教室に通うのをお休みしています。そんなわけですので、自宅の和室に籠って、ひたすら着付けの自主練習に勤しみます。こういう時はインドア派も悪くありません。あ~着物って楽しい♪
  • 画像:ブログサムネイル

    旅行

    フィリピンでは3月4月が一番暑いんだそうです

    Kumusta ka?フィリピン支社で働くティップネシストです。まあ、こっちにはティップネス無いから退会してるけど。でもまあ、心はティップクロス渋谷に有りますので。カテゴリは旅行になってますけど仕事ですから。普通に働いています。でも、二ヶ月近く居るんで観光もしましたよ。あんまマニラは観光名所ないみたいなんですけど。マニラ大聖堂イントラムロススペインが占領していた頃の街並みが保存されているそうで、なんかいい雰囲気でした。また行きたい。フォートサンチァゴ昔の要塞です。旧日本軍も使っていた事があるとか。フィリピンは若い人が多くて(平均年齢は日本の半分)、活気が凄くあります。一方で暖かい地方らしくおおらかでのんびりして適当だったりで、インターネットの回線工事とかも平気で数時間遅れたりすっぽかしたりされます(マニラは交通渋滞凄いので仕方ない部分もあるんですけど)。スーパーなんかでも客待たせて呑気に鼻歌唄っていたり店員同士でふざけたりしているし、コンビニで100ペソ(200円くらい)の買い物で1000ペソ札出すと「なんで、100ペソの物を買うのに1000ペソ出すんだ!?」とか説教されて売ってくれなかったりします。すげぇ。でも、そんな店員さんも顔馴染みになると「あなたジャッキー・チェンに似ているわね(目が細くて垂れ目だとジャッキーらしい)」とか「ウルヴァリンみたいね(頬髭があるとそう見えるらしい)。爪でるの?」とか話しかけてくれて、まあ楽しいなぁと。1000ペソ使わせてくれるともっと嬉しいんだけど。あとご飯が美味しいです。フィリピン料理屋さんって日本じゃネットで調べてもあまり見つからなくて、そんなに美味しくないのかと思ったんですけど美味しいです。安いし。あんまクセがないというか、日本人が馴染みやすくて物珍しさがないから日本で流行らないのかな?とか思いました。ビールも日本円で100円くらいからで買えるし食生活も文句ないですね。ええ、移住したいです。ずっと居たい。ティップネス無いけど。まあ、私の住んでいる所はフィリピンでも一番良いってくらいの所だからってのも大きいでしょうけど(治安悪いところはやはりなかなからしいです)。…って感じで満喫していたんですけど、フィリピンにもコロナ禍が訪れました。日本より患者少ないですけど早速あっさり首都圏をロックダウン(都市封鎖)しちゃいました。スーパー入店待ちで社会的距離を取って並ぶ方々酒を販売禁止にしてみたり(どうも一日二日で解除されたっぽい)酒買えないので仕方なく1ガロンの薬用アルコール買いました(手洗うだけです)。コンビニも同時に3人までしかお客入れません、みたいな。マスクつけてないと入れないよ、とか。平日夕の盛り場近辺だというのにゴーストタウンみたいです。でもまあ、こんだけガチ対策してるんだから早く収まるんじゃないですかね。みんなちゃんと守ってるし。次はもっと楽しいだけの日記にしたいですね、では。Hanggang sa muli.
  • 画像:ブログサムネイル

    イベント

    Eye of the Storm 2

    こんにちは!最近コロナウイルスの影響で軒並みライブが中止・延期になっていてとても悲しいです…なので今回はコロナが日本で流行する前に行ったライブについて。タイトルの通り、今回もワンオクのEye of the Storm JAPANツアー!前回のライブと全く同じやつ。よくある。でもでも前回とは一味違うのですよ!!!なんと!私のなけなしのチケ運が爆発しまして!Aブロしかも最前で見れましたー(泣)神様ありがとう…ありがとう…普段は始まる前に写真なんか撮らないのに嬉しすぎてちゃんと撮ってる笑中に入ったらもちろんToru側へ。1回見てるはずなのに全然見え方が違う!かっこいい…最前ってすごい。Takaのタトゥーの柄まで肉眼で見えるのですよ。最高。目も合っちゃうんですよ。最高。モッシュがすごかったけど、そんなのはどうでもよくなるくらいに楽しかった!Tomoくんに手降ったら「ありがとう」って言ってくれたし。(絶対勘違いじゃないと思う←)とてもよきでした。神様ありがとう…(2回目)念のため誰得のグッズも載せます(興奮してたから若干ぶれてる笑)タイミングよくJAPANツアーは全部無事に開催できてよかった!延期になっていた名古屋とアジアツアーはまた延期になってしまったけれど…中止にしないところが優しい…当分ライブは行けそうにないので家でDVD見ながらおとなしくしてます。早くライブ行って体動かしたい!それでは。