Meteorでログインシステム構築
数ページのWebアプリケーションを書くことになったのでMeteorでやってみることにした。環境構築の説明してるサイトはいっぱいありそうなのでログインシステムを構築してみる。(ログインシステムの構築もたくさんあったけど・・・)
Meteorのバージョンは1.4.1.2
下準備
meteor add accounts-password
ソースコード
main.js(client)
import { Meteor } from 'meteor/meteor' import { Accounts } from 'meteor/accounts-base' Template.Register.events({ 'submit .enter': function(event) { event.preventDefault(); var target = event.target; if(target.name.value && target.email.value && target.password.value) { Accounts.createUser({ username: target.name.value, email: target.email.value, password: target.password.value },function(err){ if(err) { console.log(err); } else { console.log("submit"); } }); } }, 'submit .login': function(event) { event.preventDefault(); var target = event.target; if(target.name.value && target.password.value) { Meteor.loginWithPassword(target.name.value,target.password.value,function(err){ if(err) { console.log(err); } else { console.log("login"); } }); } } });
main.html
<head> <title>Login_System</title> </head> <body> <h1>Hello World</h1> {{#if currentUser}} <button type="button" onclick="Meteor.logout();">ログアウト</button> {{else}} {{> Register}} {{/if}} </body> <template name="Register"> <h1>登録</h1> <form class="enter"> <p>ユーザ名:<input type="text" name="name"></p> <p>メールアドレス:<input type="text" name="email"></p> <p>パスワード:<input type="password" name="password"></p> <input type="submit" value="登録"><input type="reset" value="リセット"> </form> <h1>ログイン</h1> <form class="login"> <p>チーム名:<input type="text" name="name"></p> <p>パスワード:<input type="password" name="password"></p> <input type="submit" value="ログイン"><input type="reset" value="リセット"> </form> </template>
メールアドレスって書いてあるけど実質どんなテキストでも保存ができる。
Meteorの公式ドキュメントはかなり親切だと思った。
JVM言語で正規表現してみた
レポートにC言語以外のプログラミング言語における正規表現の扱い方を調べてC言語と比較せよって項目があったのでJVM言語でやってみた
C言語 (今回実装する機能*1 )
#include <stdio.h> #include <regex.h> int main(int argv, char* args[]) { char str[] = "C言語で正規表現"; char regex[] = "正規表現"; regex_t preg; if (regcomp(&preg,regex, REG_EXTENDED | REG_NEWLINE ) != 0) { printf("Error"); return 1; } if(!(regexec(&preg, str,0,NULL,0) != 0)) { printf("Match: %s\n",str); } else { printf("No Match: %s\n",str); } regfree(&preg); return 0; }
参考
Java
import java.util.regex.Pattern; import java.util.regex.Matcher; class Regex{ public static void main(String args[]){ String str = "Javaで正規表現"; String regex = "正規表現"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(str); if(m.find()) { System.out.println("Match: " + str); } else { System.out.println("No Match: " + str); } } }
matches,findの違いについて
Scala
val s = "Scalaで正規表現" val r = "正規表現".r if(r.findFirstIn(s).nonEmpty) println("Match: " + s) else println("No Match: " + s)
Kotlin
fun main(arge: Array<String>) { val str = "Kotlinで正規表現" val regex = Regex("正規表現") if(regex.containsMatchIn(str)) println("Match: " + str) else println("No Match: " + str) }
参考
Clojure
(def text "Clojureで正規表現") (print (if (re-find #"正規表現" text) "Match: " "No Match: " ) text "\n") (print (if (re-seq #"正規表現" text) "Match: " "No Match: " ) text "\n")
雑感
Kotlinを除き若い言語ほど正規表現を使うのが手軽になってきていると思った。(小並感)
正規表現は取っ付きづらいイメージがあったけど実際に使ってみるとそうでも無かった。パターンは書くのめんどくさいけど・・・
Groovyの
=~
は初めてみるやり方だったので感心した。Haskellとか他の言語にも実装されているらしいけどね。(正規表現を全く使わないので分からず)
*1:本当はしっかりパターンを記述するべきだろうけど・・・
Minecraft ModをKotlinで書いてみた
Gradleが使えるので簡単にMinecraftも動かせると思ったのでやってみた
kotlinlang.org
まだ考えて書けるレベルまでできてないので今回はこれで変換したコードを動かした
try.kotlinlang.org
対象のコード(初期のコードを変換させただけ、名前空間のところは削ったけど)
package com import net.minecraft.init.Blocks import net.minecraftforge.fml.common.Mod import net.minecraftforge.fml.common.Mod.EventHandler import net.minecraftforge.fml.common.event.FMLInitializationEvent @Mod(modid = ExampleMod.MODID, version = ExampleMod.VERSION) class ExampleMod { @EventHandler fun init(event:FMLInitializationEvent) { System.out.println("DIRT BLOCK >> " + Blocks.dirt.getUnlocalizedName()) } companion object { const val MODID = "examplemod" const val VERSION = "1.0" } }
Gradle
gist.github.com
英語サイト見るまでランタイムがないってことがわからずとても苦労した。
まだGradleの使い方が理解できてない・・・