Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#1 2016-07-31 00:41:17

ピヨピヨbird
メンバー
登録日: 2015-04-05
投稿: 78

[終了] 仮案コア: 仮コミット「入出力エンコードUTF-8以外廃止」+「sqlite対応版」+「プラグイン配置変更」

ベース Nucleus 3.x英語版

3.xを使うと間違って使用するので
とりあえずメジャーバージョンを 5 にしました。

私家版派生版からいくつかの機能を取り込みました。
sqlite対応コード:pdo用のコアの細かいsql文はマージしてません。

version 5.0.0 alpha
改定の要点

【重要】入出力エンコードがUTF-8のみになりました。
  国際化の妨げ および 現在UTF-8をサポートしていない一般のブラウザはないと思われるため。
  sqliteは、UTF-8のみサポートのため。
  異なるエンコード間で変換すると欠損を生じることがあるため
【重要】EUC-JP エンコードで使用している場合はNucleus 3.x-ja系列を使用してください。
【重要】Sqliteインストールが追加されました。
        メリット:月100円台のmysqlのない安いレンタルサーバーで運用することができます(笑)
【重要】Sqliteの場合は、バックアップ、復元は動作しません。直接データベースファイルをバックアップしてください。
【変更】インストーラー:メールアドレスに ~@localhost を使用できるように変更しました。
【変更】デフォルトスキンの配色の変更
  暗くていんきくさい色なので、ラベンダー色と明るい青、薄い黄色に変更しました
【新機能】プラグイン配置の追加変更。NP_プラグイン/NP_プラグイン.php として配置しても動作します。
     少しコードの変更が必要です。 plugin/フォルダに プラグインのリポジトリを放り込めます。
【新機能】言語設定に合わせて、自動で日本語、英語ヘルプが切り替わります。

本運用データで使用しないでください。テスト中です。
※ データの破損の恐れがあります。
※ 壊れて困る環境にインストールしないでください。
※ 以前配布されていた SQLite 版 Nucleus とは まったく関係ありません。
   本アップデートでは、SQL文の強引な変換はしません。


【グローバル変数】追加
$DB_DRIVER_NAME : ドライバ名 : mysql , sqlite
$DB_PHP_MODULE_NAME : pdo または mysql (mysqliもmysqlと返します)
(古いハンドラ$MYSQL_HANDLERは、内部で自動変換されます)

【プラグイン改定の要点】

・データベースのクエリを使わないプラグイン
'NotUseDbApi'

public function supportsFeature($feature) {
  return in_array ($feature, array('SqlTablePrefix', 'NotUseDbApi'));
}

オプション取得関数などで間接的にアクセスする場合はこちらになります。

・mysqlに対応させる
'SqlTablePrefix', 'SqlApi'

public function supportsFeature($feature) {
  return in_array($feature, array('SqlTablePrefix', 'SqlApi'));
}

・mysql以外に対応させる
'SqlTablePrefix', 'SqlApi'
+
'SqlApi_SQL92' または 'SqlApi_ドライバ名'

public function supportsFeature($feature) {
  return in_array($feature, array('SqlTablePrefix', 'SqlApi', 'SqlApi_SQL92'));
}

mysql以外のデータベースでドライバに依存しないクエリの場合は、
supportsFeature('SqlApi_SQL92')でtrueを返してください。

・sqliteに対応させる
'SqlTablePrefix', 'SqlApi'
+
'SqlApi_sqlite'

public function supportsFeature($feature) {
  return in_array($feature, array('SqlTablePrefix', 'SqlApi', 'SqlApi_sqlite'));
}

本体側では、セキュリティリスクと速度遅延を回避するためSQL文の強引な変換はしません。
個々のプラグインで対応コードを生成してください。


'SqlApi_SQL92' は、
標準SQLサポートの準拠が遅れているsqliteに合わせました。
MySQL5  : - SQL:2008
SQLite3 : SQL92


【今後必要な変更(徐々に適用)】
・本体のPDOに最適化した専用SQLコードの生成
・日本語版との差分で不足している機能を適用
・Nucleus専用 mysql,sqlite相互コンバートスクリプト
・スキン内の 翻訳関数 <%_(名前)%> の挙動

mysql → sqliteへのNucleus専用コンバートスクリプト
sqliteへ移行して5年間使っていないので正常動作するかわからないのでアップできません。使い方も忘れました。

スキン内の 翻訳関数 <%_(名前)%> の挙動
いい案が思いつかないので当面仮関数コードのまま。
現在、名前部分は、引数として認識されるなら何でも可。一つの文字列として認識します。
不足している機能
・スキン・テンプレートで使えるデフォルトの翻訳ファイルの「読み込み/保存関数」
  xml または、新規テーブル
  (現在は、ソースコードに変換関数を仮実装)
・スキン・テンプレートで使えるユーザーが編集可能な翻訳ファイルの「編集画面」
テーブルに保存(新規テーブルまたは、既存のどこかのテーブルにいれる)

【テスト起動の仕方】
(1) ダウンロードファイルを展開します

私的リポジトリ 仮 Nucleus-5-developは
機能を 私的リポジトリ  仮 Nucleus-3-developに統合したため
配布を終了いたしました。

(2) 展開したルートフォルダ
コマンドプロンプト(シェル)を起動します
展開したルートフォルダに移動します。

(3) phpサーバーを起動します
php -S localhost:8000

(4) ブラウザで http://localhost:8000/ にアクセスします

【対応済みプラグイン】
Multiple Categories  私的リポジトリです

編集者 ピヨピヨbird (2016-08-06 06:25:17)

オフライン

#2 2016-08-01 16:31:27

yama
Administrator
登録日: 2005-07-07
投稿: 1,243
ウェブサイト

Re: [終了] 仮案コア: 仮コミット「入出力エンコードUTF-8以外廃止」+「sqlite対応版」+「プラグイン配置変更」

開発環境にインストールしてみました。特に問題なく動作しています。

オフライン

#3 2016-08-03 21:27:33

ピヨピヨbird
メンバー
登録日: 2015-04-05
投稿: 78

Re: [終了] 仮案コア: 仮コミット「入出力エンコードUTF-8以外廃止」+「sqlite対応版」+「プラグイン配置変更」

yama さんの発言:

開発環境にインストールしてみました。特に問題なく動作しています。

動作確認ありがとうございます。

オフライン

#4 2016-08-03 21:29:39

ピヨピヨbird
メンバー
登録日: 2015-04-05
投稿: 78

Re: [終了] 仮案コア: 仮コミット「入出力エンコードUTF-8以外廃止」+「sqlite対応版」+「プラグイン配置変更」

現在わかっている現象
CYGWINで実行すると インストーラーで表示される
mysqlのバージョンがMySQL: 10.1.14になります。
cygwinのライブラリの問題のようです(MySQL互換製品採用のため)。

$ mysql --version
mysql  Ver 15.1 Distrib 10.1.14-MariaDB, for CYGWIN (i686) using  EditLine wrapper

初耳データベースだったので調べたところ
現在version_compare($mySqlVer, で
'0.0.0'
'4.1.0'
'5.0'
'5.0.7'
が使われていて
MariaDB 5.5までは、mysqlと同じ番号らしいので問題はないと思われます

オフライン

#5 2016-08-06 06:22:19

ピヨピヨbird
メンバー
登録日: 2015-04-05
投稿: 78

Re: [終了] 仮案コア: 仮コミット「入出力エンコードUTF-8以外廃止」+「sqlite対応版」+「プラグイン配置変更」

5の仮案の機能は、
UTF8以外がサポートされている
3.xに統合することができました。
sqliteの場合は、_CHARSETが決定する前に内部でgetLanguage()を-utf8で修正すればいいので
UTF-8以外のエンコードは当面 廃止しないでも、よさそうです。

英語版 仮Nucleus-3-develop に統合されました。

UTF8以外のエンコードを終了した以外は、機能面で差がなくなったため
今回の 5の仮案は、終了とします。

編集者 ピヨピヨbird (2016-08-08 01:23:15)

オフライン

#6 2016-08-07 21:58:45

yama
Administrator
登録日: 2005-07-07
投稿: 1,243
ウェブサイト

Re: [終了] 仮案コア: 仮コミット「入出力エンコードUTF-8以外廃止」+「sqlite対応版」+「プラグイン配置変更」

オフライン

Board footer