こいつを回避するには先に
set _JAVA_OPTIONS="-Dfile.encoding=SJIS"
と打っておいてやるといいらしい.
ぶっちゃけよくわからないけど('A`)
参考
set _JAVA_OPTIONS="-Dfile.encoding=SJIS"
import play.data.*が必要とのこと. しかし例ではいきなり必要な部分だけimportしてるし('A`)
Form<Task> taskForm = form(Task.class);を宣言. これにより, ビューとコントローラの間でのデータのやり取りができるほか, 制約を簡単に加えることができる.
@Required public String label;としてやるだけで, やれデータが入っているかー, なんてif文とか書かなくて済むのである.
return ok(views.html.index.render(Task.all(), taskForm));Task.all()はstaticな関数, Taskのリストを返す. これとFormを投げて準備完了.
public static Result newTask() {
Form<Task> filledForm = taskForm.bindFromRequest();
if(filledForm.hasErrors()) {
return badRequest(views.html.index.render(Task.all(), filledForm));
} else {
Task.create(filledForm.get());
return redirect(routes.Application.task());
}
}
さらっと書かれていてコピペしてスルーしてしまいそうなところだが, 実はイロイロ大事な部分が含まれているという罠. チュートリアル汚い.POST /tasks/:id/delete controllers.Application.deleteTask(id: Long)ここで, アクションに引数が持たせられる他, URL部分に「:id」と入れると, 引数に使ったidをURLに埋め込むことができるよ!(・∀・)といったことも.
return TODOとしておくことで, とりあえずコンパイルは通るようになるよ, ということらしい.
return redirect(routes.Application.tasks());と書くことで, 直接conf/routesに飛び, アクションの振り分けから再開できるよ!(・∀・)ってこと.
@import helper._を宣言しておく必要がある.
@form(routes.Application.newTask()){
@inputText(taskForm("label"))
<input type="submit" value="Create">
}
<form action="/tasks" method="POST">
<dl class=" " id="label_field">
<dt><label for="label">label</label></dt>
<dd><input type="text" id="label" name="label" value=""></dd>
</dl><input type="submit" value="Create">
</form>
とこれくらい作ってくれる. idなんかを追加で指定してやることも可能.GET / controllers.Application.index()
public static Result index() {
return ok(index.render("Your new application is ready."));
}
このindex(), これがちょうど先ほどroutesファイルに入ってた右のあいつにあたる.GET / controllers.Hoge.index()になるはず.
@(message: String)
@main("Welcome to Play 2.0") {
@play20.welcome(message)
}
@(message: String)いきなりわけがわからないが, なにやら変数の宣言にも見えなくは無いか.
@main("Welcome to Play 2.0") {
@play20.welcome(message)
}
@play20.welcome(message)
@(title: String)(content: Html)
<!DOCTYPE html>
<html>
<head>
<title>@title</title>
<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
<link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")">
<script src="@routes.Assets.at("javascripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
</head>
<body>
@content
</body>
</html>
play help
play new アプリケーション名名前はお好きに. これでコマンドプロンプトを開いた場所にディレクトリを作成する準備が整う. なので別の場所で作りたいならそこでコマンドプロンプトを開きましょう.
cd 作ったディレクトリ名で移動. 移動できたらとりあえず
playと入力
runこれでPlayがサーバの役割も果たしてくれる(らしい)
exitこれでPlayも終了できる.
play runと打つと直接サーバがrunします. サーバを止めるときも一緒にPlayも止まります.
implements OnGestureListener
@Override
public boolean onFling(final MotionEvent e1, final MotionEvent e2, final float velocityX, final float velocityY) {
float dx = Math.abs(e1.getX() - e2.getX());
float dy = Math.abs(e1.getY() - e2.getY());
if (dx > dy) {
if (velocityX > 0) {
flipper.setInAnimation(slideInFromLeft);
flipper.setOutAnimation(slideOutToRight);
flipper.showPrevious();
} else {
flipper.setInAnimation(slideInFromRight);
flipper.setOutAnimation(slideOutToLeft);
flipper.showNext();
}
return true;
}
return false;
}
GestureDetector gestureDetector = new GestureDetector(this, this);
@Override
public boolean dispatchTouchEvent(final MotionEvent event) {
return gestureDetector.onTouchEvent(event) || super.dispatchTouchEvent(event);
}
ViewFlipper flipper = (ViewFlipper) findViewById(R.id.flipper)
flipper.showNext()/flipper.showPrevious()
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="-100%p"
android:toXDelta="0%p"
android:fromYDelta="0%p"
android:toYDelta="0%p">
</translate>
Animation slideInFromLeft = AnimationUtils.loadAnimation(this, R.anim.slide_in_from_left); Animation slideOutToRight = AnimationUtils.loadAnimation(this, R.anim.slide_out_to_right); flipper.setInAnimation(slideInFromLeft); flipper.setOutAnimation(slideOutToRight);
flipper.setInAnimation(slideInFromLeft); flipper.setOutAnimation(slideOutToRight); flipper.showPrevious();
<ViewFlipper
android:id="@+id/flipper"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ViewFlipper>
<ViewFlipper
android:id="@+id/flipper"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<include android:id="@+id/flipper_child" layout="@layout/flipper_child"/>
</ViewFlipper>
ViewFlipper flipper = (ViewFlipper) findViewById(R.id.flipper); flipper.addView(childLayout)
View childLayout = this.getLayoutInflater().inflate(FLIPPER_CHILD_LAYOUT_ID, null); ListView list = (ListView) childLayout.findViewById(R.id.list); list.setAdapter(listAdapter); list.setScrollingCacheEnabled(false); list.setOnItemClickListener(itemListener);
ListView list = (ListView) parent; Object item = (Object) list.getItemAtPosition(position);
![]() |
| 例えばこんなボタン |
![]() |
| 例えばこんな風 |
setBackgroundColor(int Color)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:drawable="@color/押されたときの色"/>
<item android:state_pressed="false" android:drawable="@color/普段の色"/>
</selector>
android:state_pressed
android:state_checked
android:drawable
android:color
android:background="@drawable/背景用selector" android:textColor="@color/テキスト用セレクター"
android:button="@null"
![]() |
| こいつ('A`) |
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startcolor="@color/color_back_gradient_start"
android:endcolor="@color/color_back_gradient_end"
android:angle="315">
</gradient>
</shape>
android:shape="rectangle"
android:startcolor="@color/color_back_gradient_start" android:endcolor="@color/color_back_gradient_end" android:angle="315"
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter
android:label="@string/app_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
SELECT * FROM table ORDER BY random()
SELECT * FROM table ORDER BY rand()
import android.provider.Settings.System;
System.SCREEN_BRIGHTNESS
System.putInt(ContentResolver, System.SCREEN_BRIGHTNESS, "値");
LayoutParams layoutParams = getWindow().getAttributes(); layoutParams.screenBrightness = "値"; getWindow().setAttributes(layoutParams);
public class BatteryService extends Service {
public static final String ORIGN_ACTION = "orignbatteryaction";
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(final Context context, final Intent intent) {
if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)) {
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
// オリジナルのActionでintentを作成
Intent sendIntent = new Intent(BatteryService.ORIGN_ACTION);
// levelを載せる
sendIntent.putExtra("level", level);
sendBroadcast(sendIntent);
} }
};
@Override
public void onCreate() {
super.onCreate();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(mReceiver, filter);
}
@Override
public void onStart(final Intent intent, final int startId) {
super.onStart(intent, startId);
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(mReceiver);
Log.i("hogeBatteryService", "unregisterReceiver");
}
@Override
public IBinder onBind(final Intent arg0) {
return null;
}
}
startActivity(sendIntent)
sendBroadcast(sendIntent)
public class ResidureBatteryCheckerActivity extends Activity {
private static TextView textView;
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_residure_battery_checker);
textView = ((TextView) findViewById(R.id.hoge_battery_check));
}
@Override
public void onResume() {
super.onResume();
// バッテリー情報更新のサービスを開始する
Intent batteryIntent = new Intent(this, BatteryService.class);
if (startService(batteryIntent) == null) {
Log.e("hogeMakeFirstSetting", "cannot Start Service");
} else {
Log.i("hogeMakeFirstSetting", "Service is Start!");
// ServiceからのBroadcastを受け取るReceiverを立てる
IntentFilter filter = new IntentFilter();
filter.addAction(BatteryService.ORIGN_ACTION);
registerReceiver(orignReceiver, filter);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(orignReceiver);
stopService(new Intent(this, BatteryService.class));
}
public static void changeText(final String message) {
if (textView != null) {
textView.setText(message);
}
}
// オリジナルのIntentを受け取るReceiver
private final BroadcastReceiver orignReceiver = new BroadcastReceiver() {
@Override
public void onReceive(final Context context, final Intent intent) {
if (intent.getAction().equals(BatteryService.ORIGN_ACTION)) {
int level = intent.getIntExtra("level", 0);
String message = "level is " + level;
changeText(message);
}
}
};
}
android.provider.Settings.System.getInt(contentresolver,android.provider.Settings.System.WIFI_SLEEP_POLICY,-1);
import android.provider.Settings.System;しておくと楽かと
android.provider.Settings.System.putInt(contentresolver,android.provider.Settings.System.WIFI_SLEEP_POLICY,values)
android.permission.WRITE_SETTINGS
import android.provider.Settings.System;
System.getInt(getContentResolver(),System.SCREEN_OFF_TIMEOUT)
System.getInt(getContentResolver(),System.SCREEN_OFF_TIMEOUT, -1)
System.putInt(getContentResolver(), System.SCREEN_OFF_TIMEOUT, 設定したい時間(ミリ秒));
System.getInt(getContentResolver(),System.ACCELEROMETER_ROTATION)
System.putInt(getContentResolver(),System.ACCELEROMETER_ROTATION, 0 or 1);
public static final class BatteryReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
// actionの取得
String action = intent.getAction();
// actionの確認. Intent.ACTION_BATTERY_CHANGED以外のintentは排除する
if (!action.equals(Intent.ACTION_BATTERY_CHANGED)) {
Log.d("BatteryReceiver ", "action is " + action);
return;
}
// 状態, 「充電中」等の状態がintで取れる
int status = intent.getIntExtra("status", 0);
// 電池残量, デフォルトは0.
int level = intent.getIntExtra("level", 0);
Log.d("level", level + "%");
}
}
BatteryReceiver receiver = new BatteryReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); registerReceiver(receiver, filter);
unregisterReceiver(receiver);これだけ.
gjslint 解析したい.jsのパス > 結果を出力したい.txtなどへのパス"解析したい.jsのパス"ディレクトリにある.jsを全てチェックし, その様子を"結果を出力したい.txtなどへのパス"に書き出してくれる. あくまで結果を教えてくれるだけ.直すのは自分で.(・д・`)
copy 解析したい.jsのパス C:\js_copy\ gjslint 解析したい.jsのパス > 結果を出力したい.txtなどへのパス fixjsstyle 解析したい.jsのパス
var sinonTestCase = sinon.testCase({
setUp : function() {
this.server = sinon.fakeServer.create();
},
tearDown : function() {
this.server.restore();
},
"test server":function () {
this.server.respondWith("GET", "/some/article/comments.json",
[200, { "Content-Type": "application/json" },
'[{ "id": 12, "comment": "Hey there" }]']);
var callback = sinon.spy();
jQuery.getJSON("/some/article/comments.json", callback);
this.server.respond();
sinon.assert.calledWith(callback, [{ id: 12, comment: "Hey there" }]);
},
});
TestCase("Fakeserver test case", sinonTestCase);
var sinonTestCase = sinon.testCase({
"test with stub" : function() {
var json = [{"hoge":"hoge","foo":"foo","bar":"bar"},
{"hoge2":"hoge2","foo2":"foo2","bar2":"bar2"},
{"hoge3":"hoge3","foo3":"foo3","bar3":"bar3"}];
var stub = sinon.stub(jQuery, "ajax");
stub.yieldsTo("success", json);
jQuery.ajax({
success: function (data) {
assertEquals(json, data);
}
});
stub.restore();
}
});
TestCase("Stub test case", sinonTestCase);
server: http://localhost:42442 load: - js/vendor/jquery-1.7.2.js - js/*.js test: - js/vendor/sinon-1.4.2.js - js/vendor/sinolog.js - test/*.js
@ECHO OFF
For /F "eol=;tokens=1,2,3,4*delims=/, " %%i in ('date /t') DO SET YYYYMMDD=%%i%%j%%k
For /F "eol=;tokens=1,2,3*delims=:, " %%i in ('time /t') DO SET HHMM=%%i%%j
set YYYYMMDDHHMM=%YYYYMMDD%%HHMM%
echo 終了するときは"fin"と入力してください
setlocal enabledelayedexpansion
For /L %%o in (0,0,5) do (
set /p INP="メッセージを入力してください>"
if !INP!==fin (
echo !INP!により終了!
exit
)
set message=!date! !time! !INP!
echo !message! >>record/%YYYYMMDDHHMM%.txt
)
2012/09/19 19:14:15.33 test 2012/09/19 19:14:18.13 (・ω・`) 2012/09/19 19:14:34.85 20120919
for /f "skip="任意の整数"" %%"変数名" in ('dir/b /O-D "対象ファイル名"') do del %%"変数名"
del %%"変数名"
for /L %%"変数名" in ("初期値","増加値","限界値") do TYPE NUL> "ファイル名"
BACKUP DATABASE "バックアップを取りたいDB名" TO disk='"保存先のパス"' WITH INIT
restore database "復旧するDB名" from disk='".bakファイルのパス"'
restore database "復旧するDB名" from disk='"フル.bakファイルのパス" ' WITH NORECOVERY restore database "復旧するDB名" from disk='"差分.bakファイルのパス"'
sqlcmd -U "ユーザID" -P "パスワード" -v buckupdate ="%date:/=%" -i .bakまでのパス
SET /P input="復元に使うファイルの日付を入力してください"
sqlcmd -U "ユーザID" -P "パスワード" -v buckupdate =%input% -i 復旧用.sqlのパス
handlers=java.util.logging.ConsoleHandler, java.util.logging.FileHandler.level=FINEST java.util.logging.ConsoleHandler.level=FINEST java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter #出力の設定 #ログとして出力するログのレベル. このレベル以上のログだけ出力される. java.util.logging.FileHandler.level=WARNING #出力ファイル名. カレントディレクトリから見て場所を指定する.%uと%gは世代番号 #もちろん名前は自由 #この時, ディレクトリがないとエラーになるので, あらかじめ作っておくか, #なかった場合ディレクトリを作成する処理を行うといい. java.util.logging.FileHandler.pattern=Log/OutPut%u.%g.log #フォーマッターの設定, 自作のフォーマッターの宣言も可能 java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter #追記設定, trueなら追記, falseなら上書き java.util.logging.FileHandler.append=true #最大世代番号, この数だけログファイルを作る java.util.logging.FileHandler.count=10 #一つのファイルに書き込める最大バイト数の設定 java.util.logging.FileHandler.limit=2000
/**
* ログ設定プロパティファイルのファイル名.
*/
protected static final String LOGGING_PROPERTIES = "logger.properties";
//Loggerのプロパティファイルの名前
//パスが通ったところに起きましょう
/**
* static initializer によるログ設定の初期化.
*/
static {
File directory = new File("Log");
if (!directory.exists()) {
Logger.getLogger(Logger.GLOBAL_LOGGER_NAME)
.warning("ログディレクトリがありません");
if (directory.mkdir()) {
Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).info("Log folder was made");
} else {
Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).warning("Log folder couldn't make");
}
}
final Logger logger = Logger.getLogger("オリジナルの名前");
// クラスパスの中から ログ設定プロパティファイルを取得
InputStream inStream = "".class
.getClassLoader().getResourceAsStream(
LOGGING_PROPERTIES);
if (inStream != null) {
try {
LogManager.getLogManager().readConfiguration(inStream);
} catch (IOException e) {
logger.warning("ログ設定のエラー");
} finally {
if (inStream != null) {
try {
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} else {
logger.info("設定ファイルがありません");
}
}
//プロパティファイルのローダ
//staticイニシャライザで設定することで, 最初の一度だけ設定を行なう
public static Logger getLogger(){
return Logger.getLogger("オリジナルの名前");
}
HashMap<String, Integer[]> sampleHashMap = new HashMap<String, Integer[]>(){
put("要素A", 値A);
put("要素B", 値B);
put("", null);
}
};
EC2を立てることはできたけど、立てたインスタンスは UTCのままだし設定ファイルとかいちいちscpしてくるのはダルい。 当初UserDataでなんとかしようとしたものの、「書く量がヤバいしメンテしにくい」と悩んでいたところ見かけたのが AWS::CloudFormation:...