saba1024のブログ

どうでも良い思いついた事とかプログラミング関係のメモとか書いていきます。

RustでFizzBuzz

fn fizz_buzz(n: i32) -> String { match (n % 3, n % 5) { (0, 0) => "FizzBuzz".to_string(), (0, _) => "Fizz".to_string(), (_, 0) => "Buzz".to_string(), (_, _) => n.to_string(), } } fn main() { let result = (1..101).map(|x| fizz_buzz(x)).coll…

Rustでクロージャを使ってカウンターを実装するサンプル

クロージャのお勉強用のお題としてよくある、「ある関数から、実行する度に値をインクリメントして返すクロージャを生成して返す」をRustで実装してみました。 RustのクロージャはちょっとApache Groovyなどと比べると癖が有って難しい印象です...(所有権と…

Apache Groovy 2.6でJava8の文法が使える!

表題の通りなのですが、ParrotブランチでGroovy3を垣間見るで示されている内容が、Groovy2.6(2017/09/06時点ではalpha-1)の時点で利用できるようになりまりた。 ざっくりというと、Java8の新構文(lambdaとか)や、Java7で導入されたtry-with-resourcesが…

Apache Groovyで文章を縦書にする

String str = "Groovyを使い、textを縦書に変換するコマンドを書いたので、今後活用したい。と思う次第であります。" Integer maxCharacters = 8 List<String> eachLines = str.toList().collate(maxCharacters) eachLines.eachWithIndex {List<String> line, Integer i -> i</string></string>…

Groovyでお手軽にカレンダーを生成する

Groovyだと、2つの日付同士のレンジが..で生成できるので非常にお手軽にカレンダーを生成することが出来ます。 うるう年もちゃんと考慮されるので、例えば以下のようなことが出来ます。 String df = "yyyy/MM/dd" // うるう年のある年 Date date1 = Date.par…

Nginx Unitを試してみた

最近リリースされた、Nginx Unitを試してみました。 インストール こういう新しいツールを試すのにはやっぱりDockerですね! とうことで、Docker上にNginx Unitをインストールして見ます。 今回はUbuntuで試してみました。 # デタッチモードで起動 sudo dock…

Rust 1.20の新機能 Associated constants(関連定数)

概要 最近Rustの勉強をしています。 今まで基本的にJava、Apache Groovy畑で生きてきたので新しい概念が多くかなり苦戦しています。 さて、8月31日にRust1.20がリリースされました。この新しいバージョンでAssociated constants(関連定数)という機能が追加さ…

GroovyのGrape/Grabでdownload failedが発生する際の対処方法

Groovyでは、プログラムの実行時にMavenリポジトリから自動的に依存ライブラリのダウンロード、クラスパスの設定まで行ってくれるGrape/Grabという機能が有ります。 使い方自体は簡単で、コードの先頭に、 @Grab('org.apache.solr:solr-core:6.6.0') @Grab('…

Groovyで簡単なS式をパースするサンプル

無駄に複雑なコードになってしまっていますが、一応四則演算は実行できるS式のパーサが出来ました。 間違いなくもっとスマートな方法があるはずですが(普通にググれば10行程度でRubyで実装している方もいらっやいます)、今まで基本的にWebプログラミングし…

Ratpackを使ってJsonBuilderとJsonSlurperを試す

概要 GroovyでJSONを生成する(JsonBuilder)という記事と、 GroovyでJSONをパースする(JsonSlurper) という記事を書きました。 それぞれ独立して紹介しても実際にどういう場合に使うの?というイメージが湧きづらいので、実際にRatpackを使って簡単なWeb…

GroovyでJSONをパースする(JsonSlurper)

概要 JsonBuilderを使えば、Groovy上で簡単にJSONを生成できますが、同様に既存のJSON(テキスト)を解析してGroovyで扱う事も非常に簡単です。 そのためには、JsonSlurperというクラスを利用します。 使い方 本当に簡単なので以下のソースを見て頂ければ一…

Groovyの不思議なメソッド「call」

概要 通常のクラスであれば、インスタンスをnewで生成して、メソッドを呼び出します。 class Hoge { def test(String message) { "${message} in Hoge#test" } } def hoge = new Hoge() assert hoge.test("test") == "test in Hoge#test" Groovyのクロージャ…

GroovyでJSONを生成する(JsonBuilder)

GroovyのコードとしてJSONを生成する 特に難しい内容ではないのですが、自分で使う時に毎回ググっているので備忘録として纏めます。 JsonBuilderというGroovy標準のクラスを利用することで簡単にJSONを生成することが出来ます。 import groovy.json.* def js…

Grails3の本番環境で/dbconsoleにアクセスできるようにする

いつからか分からないけど、少なくともGrails 3.2.8では、production環境ではデフォルトで/dbconsoleにアクセスできなくなっています。(セキュリティ上の理由で) 閉じた環境だしSpringSecurityCoreとか使ってるから大丈夫!という場合は、application.yml…

Grails 3.2.8と3.2.9でSpring Security CoreとDatabase Migrationを利用する際の注意点

前提条件 Spring Security Coreラグインのバージョンは3.1.2です。 Database Migrationプラグインのバージョンは3.0.0です。 また、認証用のドメインを作成するs2-quickstartコマンドを以下のように実行したと仮定します。 s2-quickstart example User Role …

Grails3.2でのCSRF対策

CSRF対策を導入 標準だとGSPのフォームで利用する2重投稿防止用の<g:form useToken="true" ...>を使うことでCSRF対策が出来る。 ただしこの場合、当然コントローラ側でトークンが正しいかどうかのチェックをしないといけないので、 withForm { // OK! }.invalidToken { // トークンがお</g:form>…

いろいろテスト

test test1 続きになるかな?