山pの楽しいお勉強生活

勉強の成果を垂れ流していきます

Groovyでメール送信

概要

Groovyのスクリプトでメール送信する機会がありました。
AntBuilderで飛ばせる的な記載はありましたが、意外とサンプルそのまま動かせるものがなかったのでメモしておきます。

コード

@Grab(group='javax.activation', module='activation', version='1.1.1')
@Grab(group='javax.mail', module='mail', version='1.4.7')
@GrabConfig(systemClassLoader=true)

def ant = new AntBuilder()
ant.mail(
  from: "from@example.com",
  tolist: "to@example.com",
  message: "本文",
  subject: "タイトル",
  mailhost: "smtphost",
  messagemimetype: "text/html",
)

備考

  • messageを改行する場合は「<br/>」を使用する。
    • Gmailにて確認。
    • message.replaceAll("\n","<br/>")」という形になるか?
  • toが複数人の場合は「,」で繋げる。

参考

2017年の目標

ここ3,4年は目標立ててるものの、blogに書いてなかったので、今年は書いてみる。

基本的に、目標は低く緩く大雑把に立てるようにしています。 性格的に高すぎる目標は諦めてしまうので、やれば(頑張らなくても、時間かけずに)できることをやる。 それってどうでもいいことなんですけど、それを続けることで力になると信じてます。

どんな形でも目標立てると、やらなきゃいけない感がでるのでオススメ。

目標

英語を勉強

  • 具体的な最終目標はなし
  • なるべく毎日何かやる
  • TOEICを3月と12月に受験
    • 1月に受けたかったけど、すぐ申し込んですぐ受けられるというものではないらしい。
    • 1/5に申し込んで3月受験。

何か作る

今週のお題

レッドスターもらえるらしいのでノッてみる。

We Are JavaScripters! @2ndに参加してきた(そして初発表してきた)

はじめに

  • 12月26日(月)に「We Are JavaScripters! @2nd」という勉強会に参加してきた時のメモです。
  • 外部勉強で初めて発表させてもらいました!
    • 緊張する人なので、お酒飲んで発表できるのは凄く助かりました。
    • 発表自体はグタグタでしたが、自分的に大きな一歩を踏み出す事ができて感動!
  • 前回よりレベルが高くなっていて焦りましたが、なんとか自分にもついていけるレベルだったのでよし。
  • 次回も参加したい!

We Are JavaScripters!概要

「JSの勉強会って、登壇する人がハイレベルな人ばっかりだな〜」 と思ったのがきっかけで作った勉強会、「We Are JavaScripters」!

自分が学んだこと/気づいたこと/面白かったこと/失敗したこと/ハマったこと/挑戦したこと/デバッグテクニック/オススメツール・開発環境/お気に入りのライブラリ/オレオレライブラリ/実はこうだった言語仕様/tips などなど、

お酒を片手に、気軽に発信できる場を目指しています^^/

※誰でも怖がらずに登壇できる空気を作りたいだけだけなので、もちろん玄人のみなさんも登壇大歓迎です!!

最初に

  • 前回のまとめ
  • We are javascriptersという名前は外国の方からすると違和感があるらしい。
    • 別名募集中とのこと

LTメモ

LT.1:JSの基本的なことをちょっと掘り下げてみる話 Chapter02. 〜 デバッグ編 〜 - @ta__miyan

LT.3:React.js と TypeScript で趣味に走った SPA 作ってみた - @bird_tummy

  • React.js と TypeScript で趣味に走った SPA 作ってみた
  • 順番変わった?
  • React.jsとTypeScript
  • デザフェスというアートイベントの次回参加する人を探す!という部分をフォローするために作った。
  • infernoという軽いライブラリがある。
  • 開発環境作成が鬼門。
    • 正直、私のようなJavaScript初心者には環境作成のハードルは確かに高いのはわかる。。。
  • 20個位ライブラリを使った。
  • テストは是非書きましょう!
  • moxiosというライブラリでリクエストをモックできる
  • ライブラリ何を使うかは個人の好みによるところが大きい気がする
  • 作りたいもの作ると勉強にもなって凄く良い

LT.2:javascript開発のいろいろ - @chihiro_fujisawa_73

  • sequalizeとnodeの話し。
    • sequalizeはO/Rマッパー
  • データ量がちょっと増えたらめっちゃ遅くなった
    • SQL実行に時間がかかる
      • sequalizeが実際に投げるSQLがわかっていなかった。
    • Promiseの書き方が良くなかったため時々失敗するユニットテストが発生。
    • CIやっぱり重要。

LT.4:JavaScript is universal - @keita_moromizato

  • JavaScript is universal
  • 99%JavaScriptWebサービスを作る
  • Sails.jsはヤヴァイ
  • サーバサイドをTypeScriptで書くのはおすすめしない。
    • JavaScript書いているというより型を書く事になる。
  • サーバレス
  • GASは便利!
  • Yahooが文章の自動レビューAPIを公開しているらしい
  • JavaScript1つ知っていると、クライアント、サーバもできるし、APIも簡単に公開できる
  • システムのほぼすべてをJavaScriptで書くのは現実的になりつつある
  • どこでも動くJavaScriptを書くには若干のコツが必要

LT.5:web会議システムをつくる試行錯誤 - @yuuta_moriyama_1

次発表なので緊張してて、殆ど頭に入らず。。。

  • 汎用的なオンラインビデオ会議システムを作る
  • 元々エンジニアではないが、作りたいので頑張った!

LT.6:electron触ってみた - @yamap_55

LT.7:dexijs - @RyotaSuzuki

発表後なので放心状態。あまり聞けず。

  • Dexiejs
  • indexedDBのラッパーライブラリ
  • indexedDBは辛い
  • indexedDBは辛い
  • indexedDBは辛い
  • Dexi.js使えば読める!

LT.8:リスト処理と関数プログラミング - @chikoski

発表後なので放心状態。

体力のない妻へ

お約束?

この記事は「妻・夫を愛してるITエンジニア Advent Calendar 2016」の4日目の記事です。*1

書くことは特に定めておらずフリースタイルとなっています。 みなさん、それぞれの形で惚気て頂ければと思います。

っということなので、特にまとまりもなく日々の生活やら妻への思いを綴っております。 エンジニア要素皆無ないですが、問題ないでしょうw

体力がないとは

皆様は「体力がない」と聞いてどのようなイメージを抱くでしょうか?

私は、妻と出会った時にそのイメージを砕かれました。 本当の体力がない人は、ご飯を食べる事に疲れるのです。人は物を食べる事に体力が必要で、体力がない人は食べている途中に休憩が必要なのです。

ちなみに、別の原因で病院には通っていますが、病弱という訳ではありません。*2

家事とか

そんな妻ですので、私が家事をする事も多くなります。 私自身が、家庭内の役割(負荷)は対等であるべきという考え*3ですので、その事を気にしてかやたらと色々やろうとしてくれましたが当然体力が持ちません。 その結果、自分の存在意義がよくわからなくなっていた時期もあったようですが、今は元気になることが自分の役割というように理解してくれました。

子どもがいる現在では、朝や夜は何もできないものの、私がいない昼間は子どもの面倒をみつつ、最低限の家事はこなすというところまではきています。

趣味とか

趣味は全然あいませんが、それぞれ自分の時間を持つ、自分の時間を大事にするという点は共通しています。 一緒に居間にいても、妻はファッション雑誌を読み私はPCをいじってる。そんな中、時折興味のありそうな事を見つけたらそれについて声をかける。そんな事ができる妻に出会えて本当に良かったと思います。(子どもが生まれてからはなかなかそんな時間はとれてませんが。。。)

妻と出会って良かったところ

  • 話が合う
    • 基本的に方向性が近いらしく、大体話が合う。
    • あまり人に話せない部分も楽に話せて、自分を一切偽る事なくいられるので楽です。
  • 得意分野、苦手分野が被らない
    • 服とか家具の選択は全てお任せしています。
    • 力仕事など体力が必要な事は私担当。

妻へのお願い

  • もう少しだけ自分の体力向上へ注意を向けて欲しい。
    • 1番やらなければならないのは体力向上!
  • 子育てを頑張る必要はないです。
    • そもそも体力がなければ頑張れないことに気づいてください。
  • 私に気を使う必要はないです。

感謝

土日のどちらかは友人と飲みか勉強会の予定を入れていますが、心良く送り出してくれてありがとうございます。 また、仕事が忙しい事が多く、子どもの面倒をいつも見ていただいて感謝しています。

妻と出会えて、そして結婚することができて、私は本当に幸せだと思っております。 今後ともよろしくお願いします。

*1:1日遅れで申し訳ありません orz

*2:間接的には影響ありますが。

*3:よくある家事を半分という事ではなく、家事だけではなく家庭内でやるべき事全て合わせて100として、それぞれ50をやる。

Gebをはじめる時に遭遇する例外の対処について #gebAdvent

お約束?

この記事は「Geb Advent Calendar 2016」の3日目の記事です。*1

はじめに

私は、少し前にGeb(じぇぶ)を触ったことがありました。
ただ、久しぶりに再び触ってみたらやたらとエラーやら例外に遭遇したので、その例外と対処法を紹介します。

最初に結論

  • 各種関連ツールのバージョンは最新にしましょう
    • Java
    • Groovy
    • ブラウザ
    • Driver

とりあえず始める前に上記をチェック!!
1つ前のバージョンでも動作しなかったりします。

遭遇するエラーやら例外

下記以外のエラーや例外も発生した記憶がありますが再現できませんでした。。。

  • Groovyのバージョンが低い時
    • 2.4.7が最新の際に2.4.4で発生。
    • 1つ前の2.4.6でも発生した記憶あり
Caught: BUG! exception in phase 'conversion' in source unit 'C:\work\github\work\20161118_geb\code.groovy' # Licensed to the Apache Software Foundation (ASF) under one or more
BUG! exception in phase 'conversion' in source unit 'C:\work\github\work\20161118_geb\code.groovy' # Licensed to the Apache Software Foundation (ASF) under one or more
Caused by: java.lang.ClassNotFoundException: # Licensed to the Apache Software Foundation (ASF) under one or more
  • Javaのバージョンが低い時
    • 1.8.0_112が最新の際に1.8.0_20で発生。
    • 1.8.0._60辺りでも発生した記憶ありますが再現せず。
Starting ChromeDriver 2.25.426923 (0390b88869384d6eb0d5d09729679f934aab9eed) on port 29345
Only local connections are allowed.
12 04, 2016 3:47:40 �ߌ� org.openqa.selenium.remote.ProtocolHandshake createSession
����: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
12 04, 2016 3:47:43 �ߌ� org.openqa.selenium.remote.ProtocolHandshake createSession
����: Detected dialect: OSS
Caught: java.lang.VerifyError: Bad <init> method call from inside of a branch
Exception Details:
  Location:
    geb/navigator/SearchContextBasedBasicLocator.<init>(Lorg/openqa/selenium/SearchContext;Lgeb/navigator/factory/NavigatorFactory;)V @91: invokespecial
  Reason:
    Error exists in the bytecode
(略)

*1:遅れて申し訳ありません orz

We Are JavaScripters! @1st #wajs に参加したメモ

はじめに

11月24日(木)に「We Are JavaScripters!」という勉強会に参加してきました。

※メモとってまとめてましたが、blogに書くの忘れてたので1週間遅れながらうpします。

概要

「JSの勉強会って、登壇する人がハイレベルな人ばっかりだな〜」 と思ったのがきっかけで作った勉強会、「We Are JavaScripters」!

自分が学んだこと/気づいたこと/面白かったこと/失敗したこと/ハマったこと/挑戦したこと/デバッグテクニック/オススメツール・開発環境/お気に入りのライブラリ/オレオレライブラリ/実はこうだった言語仕様/tips などなど、

お酒を片手に、気軽に発信できる場を目指しています^^/

※誰でも怖がらずに登壇できる空気を作りたいだけだけなので、もちろん玄人のみなさんも登壇大歓迎です!!

最初

  • JavaScriptの勉強会は初。
  • 会場はかなりカジュアルな感じ。
    • デスクとかない。
    • なんていうか、コワーキングスペース的な?
    • 奥に作業スペースっぽいのがあるけど、ひな壇みたいなとこに座ってプロジェクター見る感じ。
    • っと思ったら「21cafe」というエンジニア向け無料イベントスペースらしい。
    • ギークス株式会社は「21cafe」を運用しているとの事。
  • 開始前に酒を配り、乾杯してからSTART!
  • どっかに写真あがるのかな?
  • swift愛好会というのもゆるい勉強会らしい
  • Facebookでユーザーグループを作るらしい。

LT

  • LT.1:JSの基本的なことをちょっと掘り下げてみる話 ~this編~ - @Tammy

    • 凄いわかりやすいthisの説明。
    • スライドっというか、コード公開されたら見るのオススメ。
  • LT.2:電卓アプリで理解するReact/Redux入門(仮)- @Toshiharu Nishina

  • LT.3:人となりもよく知らないのにnode.jsと付き合ってました。ごめんなさい。 - @Kayoko

  • LT.4:TypeScript?なにそれ?おいしいの? - @Jay Hori
    • TypeScriptはメンテしやすい
    • inferenceはないものとして使うといい感じらしい。
    • typescriptさっぱりなので、ざっくり説明されている良い資料?
      • ただし英語。
  • LT.5:必要な知識はJavaScriptだけ!さくっと作ろうAPIサーバー! - @fukamiiiiinmin

  • LT.6:本当は…仲良くなりたいES2015 - @taka

    • ES2015を取り入れたい時に。
    • ES2015の簡易的な紹介。
  • LT.7:大規模WEBサイト開発でES2015を使ってみた話(仮)- @takanorip

  • LT.8:Introduction to Flow - @yamadayuki

    • Introduction to Flow
    • Flowの話し
    • Facebookが作ってるらしい
    • babelのプラグイン
    • 型を定義できる?のかな?
    • Typeチェックのツール
    • flow checkとコマンド打つとチェックしてくれる(そのまま)
  • LT.9:ポートフォリオにReact(仮)を導入してSPAもどきにしたよ - @atsuco

  • LT.10:JavaScirpt の勉強のために最初にやったこと - @chikoski

デール・カーネギー・トレーニングに参加して

はじめに

2016/03/12 ~ 2016/06/11まで、12回に渡りデール・カーネギー・トレーニングに参加してきました。

約半額を会社に負担してもらったこともあり、自分が学んだこと、感じたことを社内勉強会で発表しました。

せっかくなのでそのスライドを一応blogにも書いておきます。

スライド