ブックマーク / morizyun.github.io (390)

  • Digdag x Dockerでモダンなバッチ処理環境を構築

    「DigDag」はTreasure Data製のワークフローエンジンのOSSです。ワークフローエンジンを使うことでバッチ処理の依存関係を明確に定義できたり、ジョブの管理をしやすくなります。また、Dockerと組み合わせることで、言語や環境を自由に選ぶことができます。 🤔 紹介スライド2017/6/9に発表したDigdagの紹介LTのスライドです。Web画面からタスクの実行状況がわかったり、再実行ができたりするのは便利です! 🚕 Digdagの特徴 手動で行っている操作をYAML(.dig) で「ワークフロー」に書いて定義できます 依存関係のある複数のタスクを管理・実行しやすくするためのしくみです タスクが失敗した場合、時間内にワークフローが終了しない場合の通知を行うことができます PostgreSQLだけを維持すればDigdagサーバはいつでも立てたり落としたりできる番環境に優しい設

    Digdag x Dockerでモダンなバッチ処理環境を構築
    morizyun
    morizyun 2017/06/09
    Digdagの入門的なブログ記事書きました & LTで発表してきました!
  • 「Digdag x Dockerでモダンなバッチ処理環境を構築」でLTしました!

    「DigDag」はTreasure Data製のワークフローエンジンのOSSです。ワークフローエンジンを使うことでバッチ処理の依存関係を明確に定義できたり、ジョブの管理をしやすくなります。また、Dockerと組み合わせることで、言語や環境を自由に選ぶことができます。 🏈 紹介スライド2017/6/9に発表したDigdagの紹介LTのスライドです。Web画面からタスクの実行状況がわかったり、再実行ができたりするのは便利です! 🍣 Digdagの特徴 手動で行っている操作をYAML(.dig) で「ワークフロー」に書いて定義できます 依存関係のある複数のタスクを管理・実行しやすくするためのしくみです タスクが失敗した場合、時間内にワークフローが終了しない場合の通知を行うことができます PostgreSQLだけを維持すればDigdagサーバはいつでも立てたり落としたりできる番環境に優しい設

    「Digdag x Dockerでモダンなバッチ処理環境を構築」でLTしました!
    morizyun
    morizyun 2017/06/09
    ブログ書きました!
  • https://morizyun.github.io/blog/java-jackson-json-parse-serialize/

    https://morizyun.github.io/blog/java-jackson-json-parse-serialize/
    morizyun
    morizyun 2017/06/07
    ブログ書きました!
  • Javaのプリミティブ型と参照型

    ローカル変数の場合はデフォルト初期値を持たず、未初期化の変数を使うとコンパイルエラーになります。 😸 参照型と変数の関係参照型では変数はオブジェクトの参照(オブジェクトの位置情報)を持ち、変数の名前でオブジェクトにアクセスできます。 下図は概念図です。 出典:改訂2版 パーフェクトJava 🍣 変数の型とオブジェクトの型の規則変数の型はその変数が参照するオブジェクトに対してどんな操作ができるかを確定します。 オブジェクトの型は呼ばれた先の実際の動作を確定します。 変数とオブジェクトの型が一致していれば、オブジェクトの参照を変数に代入できる 変数が参照するオブジェクトに対して行える操作は変数の型で決まる P型と継承したC型の場合、P型の変数にC型のオブジェクトの参照を代入できる C型のオブジェクトはP型のもつメソッドがあることを保証する 出典:改訂2版 パーフェクトJava 🐰 Nul

    Javaのプリミティブ型と参照型
    morizyun
    morizyun 2017/06/03
    ブログ書きました!
  • Java 8のStream API入門

    Java 8のStream APIについての紹介です。Stream APIではラムダ式を使うのでラムダ式を合わせて説明します。 ラムダ式(Lambda)Javaのラムダ式(Lambda)は、クロージャ(Closure)とも呼ばれています。ラムダ式は「関数型インターフェイス」の実装で使います。 @FunctionalInterface public interface IntFunc { public abstract void func(int x); } IntFunc intFunc1 = new IntFunc() { @Override public int func(int x) { return x + x; } }

    Java 8のStream API入門
    morizyun
    morizyun 2017/06/02
    ブログ書きました!
  • Lombokの代表的なアノテーション

    Javaの「Lombok」はボイラープレートをシンプルにしてくれるJavaのライブラリです。getter、setter、toString、equalsなどを自動生成してくれます。 🍣 バリデーションnullチェックを自動生成:@NonNull@NonNullでメソッドの引数をアノテートすると、コンパイル時にnullチェックを自動生成してくれます。 public class Main { public static void main(String... args) { method("hoge"); method(null); } private static void method(@NonNull String value) { // valueをnullチェック System.out.println(value); } } 🐯 メソッドの自動生成ゲッター&セッターメソッド:@Ge

    Lombokの代表的なアノテーション
    morizyun
    morizyun 2017/05/30
    ブログ書きました!
  • DockerでSelenium Gridを使う

    Seleniumは、ブラウザのテスト自動化ツールです。 Selenium Gridは、ひとつのテストスクリプトで複数の実機ブラウザでSeleniumのテストを実施できるしくみです。 ここではSelenium GridのHubとNodeを立ち上げるDocker Composeを紹介します。 version: '3' services: hub: image: selenium/hub:3.0.1-carbon ports: - 4444:4444 chrome: image: selenium/node-chrome-debug:3.0.1-carbon ports: - 15900:5900 depends_on: - hub environment: - no_proxy=localhost - HUB_PORT_4444_TCP_ADDR=hub - HUB_PORT_4444_TCP

    DockerでSelenium Gridを使う
    morizyun
    morizyun 2017/05/25
    ブログ書きました!
  • Javaの日付(Date、LocalDateTime)

    import java.util.Date; public class SampleDate { public static void main(String args[]){ //Dateオブジェクトを生成 Date date1 = new Date(); // date1 をコピー Date date2 = (Date) dt.clone(); //Dateの設定内容を出力 System.out.println("date1を表示 : " + date1.toString()); System.out.println("date2を表示 : " + date2.toString()); //指定された日付の前後を比較 boolean result; result = date2.after(date1); System.out.println("date2はdate1より後の日時か否か

    Javaの日付(Date、LocalDateTime)
    morizyun
    morizyun 2017/05/24
    ブログ書きました!
  • BEMの基本ルール

    BEMCSSの書き方のひとつで、ブロック(Block)、エレメント(Element)、モディファイヤ(Modifier)の頭文字をとったものです。BEMを使うとブロックごとにモジュール化し、名前空間を持たせるようなことができ、わかりやすいCSSを書くことができます。 🐹 BEMの考え方BEMCSSのセレクタの命名規則です。迅速な開発と長期的にメンテナンスしやすいコードとなり、再利用性を容易にします。 🚜 Block, Element, ModifierBEMCSSセレクタをブロック(Block)、エレメント(Element)、モディファイヤ(Modifier)の3つに分けて定義します。 Block(ブロック)Blockは独立したエンティティで、アプリケーションを構成するパーツです。Blockは1つもしくは、複数で構成します。Blockの名前はユニークにして、パーツごとの独立性を保

    BEMの基本ルール
    morizyun
    morizyun 2017/05/23
    ブログ書きました!
  • React.js componentのライブサイクル図

    React.jsのcomponentを理解するために、ライフサイクルを図にしてみました。 🐰 各メソッドの意味ComponentWillMount マウントされる直前に1回だけ呼ばれるので初期化処理に使う setState()するとrender時にまとめて実行される componentDidMount マウントされた直後に1回だけ呼ばれるのでDOMに関わる初期化処理に使う メソッド内で描画されたDOMにアクセスできます componentWillReceiveProps コンポーネントがプロパティ値を受け取る(更新した)時に呼ばれる 親コンポーネントのSateがPropsとして渡されていてその変化で表示以外のことがしたい場合に使う shouldComponentUpdate コンポーネントを更新してもいいかの判断に使う 戻り値がFalseの場合は更新が行われないのでパフォーマンスで描画を

    React.js componentのライブサイクル図
    morizyun
    morizyun 2017/05/21
    ブログ書きました!
  • Dockerの基本アーキテクチャの整理

    Dockerとはコンテナ技術を使い、アプリケーションの開発・実行を行うプラットフォーム DockerではKernelはホストと共有し、複数のルートファイルシステムを実行する Kernelはコンテナを「グループ分けされたアプリケーションレベルのプロセス」と認識する DockerはClient/Serverアーキテクチャ構成。機能面はServer側で実装、Clientが指示を出す 🚕 Dockerの構成要素Dockerイメージ コンテナのひな型、設計図。イメージの作られた履歴が含まれ、状態を容易に再現できる Dockerfileを自作することでオリジナルのイメージを作成できる Base Imageの上に複数のイメージがスタックされるような構成 Dockerコンテナ イメージから作られる実体のようなもの。内部でワーカプロセスを走らせる コンテナには独立したファイルシステムがあり、コンテナ自体が

    Dockerの基本アーキテクチャの整理
    morizyun
    morizyun 2017/05/19
    ブログ書きました!
  • Railsでセキュリティ用ヘッダをまとめて付与secureheaders[Gem]

    SecureHeaders::Configuration.default do |config| config.cookies = { secure: true, # mark all cookies as "Secure" httponly: true, # mark all cookies as "HttpOnly" samesite: { lax: true # mark all cookies as SameSite=lax } } # Add "; preload" and submit the site to hstspreload.org for best protection. config.hsts = "max-age=#{20.years.to_i}; includeSubdomains" config.x_frame_options = "DENY" config.

    Railsでセキュリティ用ヘッダをまとめて付与secureheaders[Gem]
    morizyun
    morizyun 2017/05/16
    ブログ書きました!
  • JavaのテンプレートエンジンThymeleafチートシート

    「Thymeleaf」はJavaの代表的なテンプレートエンジンライブラリです。次の特徴があります。 Webサーバから受け取ったデータを埋め込んで表示できる 定義されたロジックをDOM上でXMLタグ・属性で指定。HTMLを静的に表示できる パースされたフィアルをキャッシュしてI/Oを最適化し、高速に表示 🍄 Thymeleafのデータ指定方法リンク/CSS/JS/画像パスの指定:@{...}リンク/CSS/JS/画像などのパスの記述するために@{...}の書き方があります。

    JavaのテンプレートエンジンThymeleafチートシート
    morizyun
    morizyun 2017/05/14
    ブログ書きました!
  • Hexoのプラグインの作成手順

    ブログのHexoでAmazonへのリンクを気軽に作りたくて「gitbook-plugin-amazon-jp-link」を作ってnpmで公開しました。 ということで今回はhexoのプラグインの作成手順を簡単にまとめておきます。 🐞 Hexo pluginについて「Hexo」はJavaScript製のブログエンジンです。最近このブログもhexoに乗り換えました。 ブログをhexoに乗り換えた理由はpluginをJSで作れるのでJSの勉強にちょうどよいと思ったからです。 🚕 pluginの開発の流れまず、プロジェクトのフォルダを作成します。

    Hexoのプラグインの作成手順
    morizyun
    morizyun 2017/04/09
    ブログ書きました!
  • GitBookのプラグインの作成手順

    GitBookでAmazonへのリンクを気軽に作りたくて「gitbook-plugin-amazon-jp-link」 を作ってnpmで公開しました。すごく単純なスクリプトですが、ほぼ迷うことなくnpmへの公開できました。かなり簡単です。 ということで今回はgitbookのプラグインの作成手順を簡単にまとめておきます。 🚌 GitBook pluginについて「GitBook」はHTMLPDF形式のシンプルな電子書籍を簡単に作成できるサービスです。 このサービス自体は非常にシンプルですので、簡単にpluginを作ってカスタマイズできることが魅力です。 🚕 pluginの開発方法についてまずは「GitBookIO/plugin」公式のプラグインのひな型を取得してきます。

    GitBookのプラグインの作成手順
    morizyun
    morizyun 2017/04/02
    ブログ書きました。GitBookのプラグイン作ってみました。npmのライブラリ作るの簡単でびっくりしました!
  • RubyでMiniMagickを使って正方形のサムネイルを作成

    🐠 ソースコードサンプルソースでは次のことをしています。 (1) サンプルの画像をダウンロード (2) MiniMagickを使って正方形のサムネイル画像を切り出し (3) 画像をファイルに保存 require 'open-uri' require 'mini_magick' class ImageOptimizer class << self def resize(content, width, height, quality, output_path) img = MiniMagick::Image.read(content) w_original = img[:width].to_f h_original = img[:height].to_f # check proportions op_resize = if w_original * height < h_original *

    RubyでMiniMagickを使って正方形のサムネイルを作成
    morizyun
    morizyun 2017/01/15
    ブログ書きました! minimagick のほうが RMagick よりメモリの消費が少ないのか〜
  • Casper.jsでスクレイピング

    // scrape.js var casper = require('casper').create(); casper.userAgent('Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19'); var url = casper.cli.args[0]; var outputPath = casper.cli.args[1]; casper.start(url); casper.then(function() { casper.wait(5000, function() { // Get HTML var html = this.evaluate(fun

    Casper.jsでスクレイピング
    morizyun
    morizyun 2017/01/08
    ブログ書きました。 Casper.js便利!
  • PostgreSQL Tips [テーブルごとのデータ量、 Reindex, NULLSLAST]

    最近いくつかPostgreSQLを使っている中で、勉強になった点のメモです。 PostgreSQLのテーブル/Indexごとのサイズを知る Reindexコマンド ソート順でNULLの位置を制御する 🐰 PostgreSQLのテーブル/Indexごとのサイズを知るDBを使っている時、それぞれのテーブル/Indexを知りたい場合に実行するコマンド。 SELECT pgn.nspname, relname, pg_size_pretty(relpages::bigint * 8 * 1024) AS size, CASE WHEN relkind = 't' THEN (SELECT pgd.relname FROM pg_class pgd WHERE pgd.reltoastrelid = pg.oid) WHEN nspname = 'pg_toast' AND relkind = '

    PostgreSQL Tips [テーブルごとのデータ量、 Reindex, NULLSLAST]
    morizyun
    morizyun 2017/01/07
    ブログ書きました。PostgreSQL 理解を深めたい!
  • https://morizyun.github.io/blog/react-bootstrap-javascript-css-framework/

    morizyun
    morizyun 2017/01/02
    ブログ書きました! react-bootstrap 使うと Bootstrap のコードが読みやすくなります!
  • CSS-ModulesとReact.jsを組み合わせると便利! 

    React.jsでCSS用のためのしくみを提供してくれる react-css-modules の紹介です。 このツールを使うことでReactのClassの中でCSSを紐付けることができます。SASSも扱えます! $ npm init -y $ npm install --save react react-dom $ npm install --save-dev webpack style-loader css-loader sass-loader node-sass extract-text-webpack-plugin $ npm install --save-dev resolve-url resolve-url-loader babel-plugin-transform-decorators-legacy

    CSS-ModulesとReact.jsを組み合わせると便利! 
    morizyun
    morizyun 2017/01/01
    新年第一弾、ブログ書きました!css-module 使うと React の Component が本当に使いやすいっす!