DCとマーベルのロゴをCSSで作ってみた

かんちゃん の影響下もあり、自分も何らかのロゴを作ってみようと考えた。

そこで日頃自身の趣味としているアメコミの会社のロゴをCSSで作ってみようと思い立った。

 

・DC

See the Pen DC Logo by 🦇瑞守🤡 (@smells_burton) on CodePen.

 

・MARVEL

See the Pen MARVEL logo by 🦇瑞守🤡 (@smells_burton) on CodePen.

 

これを作る以前にSuperManのロゴを作ろうと思って挫折しました(^ ^;

上の頂点が欠けるダイヤ型作る部分が出来なくて・・・

今月読んだ本の感想

今までエンジニアとして読むべき実用書をほとんど読んでいなかったので、今回時間に余裕のある状況である程度読むことにしてみた。

下記はそれに関する感想である。

 

1.リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

 

ひと昔前に読んだことのある『プログラミング作法 』に似ているが、こちらの方がわかりやすくどの言語にも対応が利いていて実現が可能だと思われる。

特に修正するべき箇所にコメントを書くということは引き継ぎを頼むにしても後任者も分かりやすくなり、プロジェクトを離れていても非常に効率がよくなると思われる。

2.リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法 

リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法

リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法

 

達人のプログラマーの思考になる為に実現する為の本だが、生憎努力義務のように習慣づけしないと実現できない内容も少なくない。

しかしメモを常に持つなどの実現可能な習慣もあるのでそちらは実践してみたいと思っている。

3.Team Geek ―Googleギークたちはいかにしてチームを作るのか

Team Geek ―Googleのギークたちはいかにしてチームを作るのか

Team Geek ―Googleのギークたちはいかにしてチームを作るのか

 

 この本の特に後半に書かれてある内容は下請けとして働くエンジニアとしては重要なことが書かれてあると思う。

欧米の働くエンジニアの事情はよくわからないが、少なくとも日本の場合は(この本における)悪い環境職場が多いと思われるのでその状況を切り抜ける上でも一読だと思われる。

 

久しぶりの更新だが、今後も読んだ本の感想を書き込めればと思っている(少なくとも技術関連の内容書くよりは簡単だし)

 

 

 

JMockitでprivateメソッドを呼ぶ方法

出向先でJunitを使う機会があったので、コンパイルエラーしやすい箇所をここで備忘録として書き込むようにしておく。

 

package test;


public class Test1  {

 

       String runSample() { String runSample() {
              // 未実装
              return null;
       }
  private int numberReturn(int a,int b) {
    int result;
    result = a + b;
    return result;
  } void main() {
    int sum = 0;
    sum = numberReturn(2,3);
  }

}

 

Test1.javaこのソースにおけるnumberReturnメソッドをモック化して一度呼び出したい場合

package test;
import static org.hamcrest.CoreMatchers.*;

import static org.junit.Assert.*;
import org.junit.jupiter.api.Test;
import mockit.Mock;

import mockit.MockUp;
class Test1Test {

  @Test

  public void test_numberReturn() {

    new MockUp<Test1>() {

    @Mock()

    public int numberReturn(int a,int b) {

       return a+b;

      }

    };
    Test1 s = new Test1();

    int a = s.numberReturn(3,4);

    assertThat(a, is("1"));

    }

}

 

 上記のように記載すると37行目のs.numberReturn(3,4);でメソッドが不可視ですというエラーが出力される。

この場合privateメソッドはモックとして呼ばれないので、対象となるprivateメソッドをgetDeclaredMethodでインスタンス化してからsetAccessibleでアクセス出来るように設定させる。

その後はインスタンス化したprivateメソッドをinvokeで呼び出すようにする。

こうすることでprivateメソッドをモックとして呼び出すことに成功できる。

 

package test;
import static org.hamcrest.CoreMatchers.*;

import static org.junit.Assert.*;
import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;
import org.junit.jupiter.api.Test;

class Test1Test {
@Test

 public void test_numberReturn() throws     

 NoSuchMethodException,

 IllegalAccessException,

 InvocationTargetException    

 {

  Test1 s = new Test1();

  Method method  = Test1.class.getDeclaredMethod

("numberReturn", int.class, int.class);

  method.setAccessible(true);

   int a = (int)method.invoke(s,3,4);

  assertThat(a, is("1")); 

 }

}

 

追記:このgetDeclaredMethodメソッドはアクセス権限が制限されているメソッドをアクセスする為に使う。

似たようなメソッドとしてはgetDeclaredConstructorメソッドでこちらはprivate修飾子が付いたコンストラクタをインスタンスとして生成するのに使われる。

Oracle Dev Tour Japan 2018 in Sapporo 報告署

 

一週間後少しの報告になるが、前回のカンファレンスを理解できた部分だけ報告しようと思う。 

セッション1

 前回とほぼ同じ内容。

今回もJDKのバージョンに関する説明がメイン。

最後少しだけJava EEに関する内容で少し差異があったように思えたが、若干急ぎ気味で話が聞き取りづらかった。

セッション2

Javaのパフォーマンスに関する内容。

全編英語で分かりづらい部分もあったがJavaそのものは経験があるので、

セッション内容そのものは理解できた。

Javaのパフォーマンスに関する内容は下記の三つの項目として出された。

コンパイル時間

・画像サイズの縮小化

・PCに優しい環境

 

コンパイル時間に関してはクラスデータの共有(CDS)による手段が早くなるとされているが、事前コンパイルAOTを並行して使うと更に30秒ほど時間が縮まることがわかった。

画像サイズに関して言えばjlinkをコマンドで流すことにより、より画像サイズの縮小化が可能であることがわかった。

 

今回の技術はJavaコンパイルする際にも使えそうなので、CDSの扱い方や事前コンパイルの技術もより深く学んでいこうと思った。

 

またセッション3以降は未経験のDockerの話題もあって付いてこれなかったので、割愛。

いずれDockerの技術も学びたいとは思う。

 

 

本日は以上。

 

 

 

 

 

Java One 2017 報告会 in 札幌 感想

この報告会よりcompassからのカンファレンスは二回目となる。

こういう報告会に参加すること自体余り経験がなかったことと当日思ったことも忘れていることから感想もやや少なめに書いておく。

 

セッション1

JDKリリースモデルが変更になるらしい・・・

無償版のOpenJDKと有償版の二つにバージョンアップされるらしく、

以前よりもアップデートの頻度も多くなる模様・・・

それ以上に一番知っておいてよかったことはJava9、10がこの一年くらいにアップデート停止するということ!!

Javaユーザにとっては重要なことでこの話聞いてよかったと思っている。

 

セッション2

モジュール移行の課題

余り機会はなかったが、バージョンアップすることで起動できなくなるモジュールもあるということ。機会はなかったが今後起こりうることとして学んでおいて損はないと思っている。

セッション3

G1GCの勘所

本日もっとも聞いてよかったと思えるセッション

実際の仕事でもガーベッジコレクションのことはかかわる内容も多いので、

今回ガーベッジコレクションがどのような挙動でメモリを解放するのか確認することができてよかったと思われる。

この件に関してはいつか別途で書き込もうかとも思う。

 

本日は以上。