UltoraDate
https://github.com/hrdaya/UltraDate.js
実は、ライブラリ全体を使わず、和暦年を算出するとこだけを拝借しています。
新しい和暦になっても、一部変更するだけで終了です。
後は、PHPように移植して完了かな。
最後に、moment.jsと併用できるかまたは、置き換えができるかを検証しましょう。
新潟市で個人でコンピュータ相手にシステム開発をしています。確実、安く、素早くをモットーにやっています。
システム開発の時に調べた技術を惜しみなく公開していきます。あまりよろしくない業者についての苦言も為に吐きます。
コンピュータにベッタリというのもどうかと思いますが、やはりこれからは、コンピュータのことを知らないよりは知っていたほうが良いと思いますよ。
$(function() {
$(window).bind("orientationchange", function() {
if(Math.abs(window.orientation) === 90) {
alert("横向き");
}else {
alert("縦向き");
}
});
});
if(!isset($_SESSION)) {
session_start();
}
関連記事DISKPART>list volume Volume ### Ltr Label Fs Type Size Status Info ---------- --- ----------- ---- ---------- ------- --------- -------- Volume 0 Q DVD-ROM 0 B メディアなし Volume 1 R DVD-ROM 0 B メディアなし Volume 2 システムで予約済み NTFS Partition 350 MB 正常 システム Volume 3 C NTFS Partition 79 GB 正常 ブート Volume 4 D NTFS Partition 149 GB 正常 Volume 5 E Windows10 NTFS Partition 238 GB 正常
C:\> bcdedit /create /d “Windows 10” /application OSLOADER
エントリ {0f1a3ed0-4881-11e5-a550-c3b8c8143ee9} は正常に作成されました。
C:\>bcdedit /set {0f1a3ed0-4881-11e5-a550-c3b8c8143ee9} device partition=F:
C:\>bcdedit /set {0f1a3ed0-4881-11e5-a550-c3b8c8143ee9} osdevice partition=F:
C:\>bcdedit /set {0f1a3ed0-4881-11e5-a550-c3b8c8143ee9} path \Windows\system32\winload.exe
C:\>bcdedit /set {0f1a3ed0-4881-11e5-a550-c3b8c8143ee9} systemroot \Windows
C:\>bcdedit /set {0f1a3ed0-4881-11e5-a550-c3b8c8143ee9} locale ja-JP
C:\>bcdedit /displayorder {0f1a3ed0-4881-11e5-a550-c3b8c8143ee9} /addlast
C:\>bcdedit
Windows ブート マネージャー
:
:
Windows ブート ローダー
--------------------------------
identifier {0f1a3ed0-4881-11e5-a550-c3b8c8143ee9}
device partition=F:
path \Windows\system32\winload.exe
description Windows 10
locale ja-JP
osdevice partition=F:
systemroot \Windows
resumeobject {940bff88-4888-11e5-825d-806e6f6e6963}
Bringing machine 'default' up with 'virtualbox' provider... ==> default: Clearing any previously set network interfaces... There was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox. The command and stderr is shown below. Command: ["hostonlyif", "create"] Stderr: 0%... Progress state: E_FAIL VBoxManage.exe: error: Failed to create the host-only adapter VBoxManage.exe: error: Code E_FAIL (0x80004005) - Unspecified error (extended info not available) VBoxManage.exe: error: Context: "enum RTEXITCODE __cdecl handleCreate(struct HandlerArg *)" at line 70 of file VBoxManageHostonly.cpp
DB_TIMESTAMP=`date +%Y%m%d_%H%M%S` DB_HOST=192.168.0.132 DB_USER=XXXXX_user DB_PW=XXXXX_pw DB_NAME=XXXXX_db mysqldump -h $DB_HOST -u$DB_USER -p$DB_PW $DB_NAME > $DB_NAME\_$DB_TIMESTAMP.dump tar cfvj $DB_NAME\_$DB_TIMESTAMP.tar.bz2 $DB_NAME\_$DB_TIMESTAMP.dump rm $DB_NAME\_$DB_TIMESTAMP.dump
if(isset($_SERVER['HTTP_X_FORWARDED_PORT']) && 443 == $_SERVER['HTTP_X_FORWARDED_PORT']) {
Router::fullBaseUrl('https://'.$_SERVER['HTTP_HOST']);
}
するとちゃんと、Router::fullBaseUrl()で「https://ホスト名」を返してくれます。
var sorting = function(f, t) {
var f1 = encodeURIComponent(f);
var t1 = encodeURIComponent(t);
if(f1 > t1) {
return 1;
}else if(f1 < t1) {
return -1;
}else {
return 0;
}
}
var ar = ["オ", "イ", "ア", "ウ", "エ"];
console.log(ar); // ソート前
ar.sort(sorting);
console.log(ar); // ソート後
// 結果(nodejsを使って実行したのですが、文字化けしています)
[ '・スI', '・スC', '・スA', '・スE', '・スG' ]
[ '・スA', '・スC', '・スE', '・スG', '・スI' ]
↓変換された文字を見てカタカナに置き換えるとちゃんとソートされています。
["オ", "イ", "ア", "ウ", "エ"]
["ア", "イ", "ウ", "エ", "オ"]
var ar = [4, 2, 1, 3, 5];
var ar_sort = ar.sort(function(f, t) {return f>t});
console.log(ar_sort);
// 結果
[1, 2, 3, 4, 5]
>mysqldump -u hoge_user1 -p --no-data --skip-triggers hoge_db1 > hoge_db1_20150518_1000.dump >mysqldump -u hoge_user1 -p --no-create-info --skip-triggers hoge_db1 > hoge_db1_data_20150518_1000.dump
>mysql -u hoge_user2 -p hoge_db2 < hoge_db1_20150518_1000.dump >mysql -u hoge_user2 -p hoge_db2 < hoge_db1_data_20150518_1000.dump
echo (int) ((date('Ymd') - 19710608) / 10000);
// 43
参考サイト(というかそのまま) $this->Table1->begin();
$this->Table1->save($data);
$this->Table1->commit();
$this->Table1->begin();
$this->Table1->save($data1);
$this->Table2->save($data2); // ←トランザクション対象外に見える
$this->Table1->commit();
class TransactionComponent extends Component {
/**
* トランザクション開始
*
* @param array $models トランザクション処理するモデルを全て指定する
*/
public function begin($models) {
$this->models = $models;
foreach ($models as $model) {
$model->begin();
}
}
/**
* ロールバック
*/
public function rollback() {
foreach ($this->models as $model) {
$model->rollback();
}
}
/**
* コミット
*/
public function commit() {
foreach ($this->models as $model) {
$model->commit();
}
}
}
AppModel.phpclass AppModel extends Component {
App::uses('Model', 'Model');
class AppModel extends Model {
/**
* トランザクション開始
*/
public function begin() {
$db = $this->getDataSource($this->useDbConfig);
$db->begin();
}
/*
* トランザクションコミット
*/
public function commit() {
$db = $this->getDataSource($this->useDbConfig);
$db->commit();
}
/*
* トランザクションロールバック
*/
public function rollback() {
$db = $this->getDataSource($this->useDbConfig);
$db->rollback();
}
}
HogeController.phpApp::uses('Model', 'Model');
class HogeController extends AppController {
public $uses = array("Table1", "Table2");
public $components = array("Transaction");
private function register($data) {
try {
$this->Transaction->begin(array("Table1", "Table2"));
if(!$this->Table1->save($data)) {
$this->rollback();
return false;
)
if(!$this->Table2->save($data)) {
$this->rollback();
return false;
)
$this->commit();
return true;
}catch(Exception $e) {
$this->rollback();
return false;
}
}
}
これは、CakePHPを使い始めてDBのトランザクションはどうやって扱ったら良いかというのを調査していたらあるサイト(今もあると思いますが忘れました)で一つの解として紹介されていたもものです。
実際の所、ルールなので、複数テーブルにトランザクション処理をするときは、代表のテーブルに対してbegin、commit、rollbackをするということにすればいちいちこんなめんどくさいことをしなくても良いのですけどね。