macのローカルでJavaを実行する方法
デバッグするのにSpringBootプロジェクトを作るのは正直めんどくさい。
できれば、macのローカルで実行したい。
そんな時は、macのターミナルでjavaプログラムをコンパイルし、実行するのが便利です。
例えば、下にデバッグしたいプログラムを用意したとします。
class Hoge{ public static void main(String[] args){ System.out.println("Hello world!!"); } }
hoge.javaファイルと保存して、Hogeクラスを実行したい。
そんな時は、例えば、デスクトップにhoge.javaが保存されていたとして、ターミナルでjavac hoge.java
コマンドを叩くと、Hoge.classファイルが生成されます。
それを同じくターミナルでjava Hoge
と実行すればデバッグすることができます。
Spring Bootで複数のURLのパスを受け取る
前回、Spring BootでURLのパスを受け取る方法を書きました。
その時は、一つのURLに対して、一つのメソッドを結びつける形でしたが、複数の異なるURLを一つのメソッドにマッピングしたい場合にどうすればいいのか調べました。
例えば、/hoge
と/foo
を受け取りたい場合、配列で設定すれば解決できる。
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.stereotype.Controller; @SpringBootApplication @Controller public class TestApplication { @GetMapping({"/hoge", "/foo"}) public String test() { return "test"; } }
Google Apps ScriptからGoogle Spreadsheetsにカスタムメニューを追加
Google SpreadsheetsからGoogle Apps Scriptを実行したい時に、毎回、スクリプトエディターから実行するのが、正直めんどくさい。
そこで、Google Spreadsheetsにメニューを追加して、そこからスクリプトエディターを開かずに実行したい。
幸い、Google Apps Scriptでカスタムメニューを追加してくれるメソッドがあるので、それを使ってアドオンメニューに項目を追加する。
追加前のアドオンメニューの画像を下に添付する。
function testMain(){ console.log("hello") } function onOpen(){ let _ui = SpreadsheetApp.getUi(); let _menu = _ui.createAddonMenu(); _menu.addItem('testItem','testMain').addToUi(); }
Google Apps ScriptのスクリプトエディターからonOpen
関数を実行すると、アドオンにメニューが追加される。
実行した結果の画像を下に添付する。
アドオンメニューに「ファイル名」が追加され、さらにその下にonOpen
関数で実行されたtestItem
メニューが追加されている。
手軽にメニューを追加することができるので便利だ。
参考
GAS実行時に起動時間の最大値を超えましたというエラー
処理の想いGoogle Apps Scriptを実行したら、
「起動時間の最大値を超えました」
というエラーが発生。
原因を調査してみると、どうやらG SuiteのBusinessまたは、Enterpriseは30分で、それ以外は6分なので、重たい処理は、運用方法を変更するか、仕様を変更するか、アルゴリズムを変更するかが余儀なくされる。
Spring BootでURLを取得する
Spring BootでURLを取得するにはどうすればいいのだろうか?
org.springframework.web.servlet.support.ServletUriComponentsBuilder
を使って取得することができるみたいだ。
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.servlet.support.ServletUriComponentsBuilder; import org.springframework.stereotype.Controller; import org.springframework.web.util.UriComponentsBuilder; @SpringBootApplication @Controller public class HogeApplication { public static void main(String[] args) { SpringApplication.run(HogeApplication.class, args); } @GetMapping("/") public String top() { String uri = ServletUriComponentsBuilder.fromCurrentRequestUri().toUriString(); return "top"; } }
Spring Bootでtymeleafのテンプレート先を指定する
Spring Bootでtymeleafを指定したい場合は、return値でstring型の文字列を返すことによって指定することができる。
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.stereotype.Controller; @SpringBootApplication @Controller public class HogeApplication { public static void main(String[] args) { SpringApplication.run(HogeApplication.class, args); } @GetMapping("/") public String bar() { return "bar"; } }
<!-- bar.html --> <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <body> Hello tymeleaf </body> </html>