問題タブ [ptokax]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 完全なテーブルを更新し、列を交換します
OK、これが私にとっての新しい問題です。以前の質問の1つで述べたように、現在はPtokaXを使用しており、その中でいくつかのボットのスクリプトを作成しています。ここで行う必要があるのは、テーブルを完全に更新し、2つの特定の列の値を交換することです。すべてのユーザーのメインチャット数をという名前のMySQLテーブルに保存していますchatstats
(現在はMyISAMにありますが、テーブルをInnoDBに変更することを考えています)。
テーブルには多くの行(1000近く)があり、ほぼ毎日増加し続けます。私がやりたいのは、毎週(および月、後で説明するように)2つの列の値を交換し、列の値の1つをゼロに設定することです。
私のテーブルのcreateステートメントは次のとおりです。
現在、列名は一目瞭然です。switched
毎週日曜日に、ユーザーのカウントがその月に交換されたかどうかを確認するための列を作成しました(1または0かどうかを確認します)。thisweek
毎週日曜日に、 withlastweek
とthatの値を1回だけ変更したいと思います。現在、私のスクリプトは次のとおりです(LUAおよびPtokaX変数で)
関数datestatは、日付(1日あたりのメッセージ数など)を含むチャットのログを保持するだけです。どんな助けでもありがたいです。現在のUpdateUserStat関数は、値の変更に関して何もしていません(昨日確認しました)。
PS 何か他のものが必要で、私がそれを管理することができれば、私はそれを喜んで供給します。:)
string - 可変長文字列をテーブルとして連結します
SQLからデータの配列をフェッチし、それらを文字列として連結して表示しています。関数は次のようになります。
これにより、次のような出力が得られます。
等々。string.format
次のように表示する関数を使用することを考えています。
しかし、私はこれをどのように持つかについての考えから完全に外れています。私の頭に浮かぶ唯一のオプションは、ユーザー名の文字列の長さをチェックし、それに\t
応じて適用することです。それで、最後に使いたいです。
string - 文字列の連結
可変長のマルチパート文字列の連結について以前の質問(リンク)で尋ねたように、そこでrkhayrovが回答したメソッドを使用しました。現在、私の関数は次のようになっています。
しかし、今でも、の値はscore
必要な順序に従っていません。ユーザー名の最大長は25です。ユーザー名を右揃え%025s
にしたいので、whileループ内で使用しました%-25s
が、単語をUserName
中央揃えにします。
編集
現在の出力:
必要な出力:
フォントの違いによると思いますが、ほとんどのクライアントはWindows 7のデフォルトフォント(11pxのTahoma / Verdana)を使用しているので、少なくともそのための最適な結果が必要です。
mysql - プロシージャまたはループ
ローカルハブのユーザーがメッセージを保存する場所という名前のテーブルがmessages
あります(Webフォーラムのようなものです)。現在、大多数のユーザーが参加しており、毎日30〜50近くの新しいエントリをテーブルに追加しています。
これは過去数年間続いているため、テーブルには100,000行近くのデータがあります。テーブルの構造はこんな感じです。andと(ニックネーム)はどこfid
にありますか。PRIMARY
ip
id
INDEX
私は今までこの種のクエリを使用していました; 次に、このリンクに示すように、luasqlで結果セットを繰り返します。私によると、これは多くの時間とスペース(バッファ内)を消費します。
私の問題は、最近、PtokaXの新しいAPIに切り替えて、読み取りと書き込みのリクエスト数が劇的に増加していることです。最近MySQLの手順について読んだので、これらの手順がこの状況に対処するためのより高速な方法 か、 より安全な方法かを考えていました。
PS
平均して7〜10秒ごとに1つのメッセージを読むという1つのリクエストを受け取ります。週末には、3秒ごとに1つ程度に上昇します。
さらに必要なことがあれば教えてください。
総括する
これは、ストアドプロシージャを呼び出して、より短い時間で最終結果を取得できる方法です。現在のクエリ(およびメソッド)は、データをフェッチして整理するのに3秒近くかかります。
mysql - os.date関数が目的の結果を返していません
os.date()
この関数呼び出しを使用して、MySQLテーブルに文字列変数を挿入しています。
テーブルtSendは、テーブルに挿入する別の関数に転送されます。
これは必要に応じて機能しません。たとえば。2013-01-3100:59:59の代わりに2013-01-3112 :59:59をテーブルに挿入します。それは1159時間後のすべての時間に起こります。
Lua PiLの本によると、
%X
時間を意味します(例、23:48:10)
によって生成された時間はPtokaXのプロパティであり、1.1.1970からの秒単位のユーザーログイン時間NOW()
として指定されているため、クエリで使用できません。Core.GetUserValue(v, 25)
ここで何が問題になる可能性がありますか?シンプルなluaコード
2012-12-15 21:22:57を出力として生成します(ここで、1355586777はCore.GetUserValue
呼び出しから受け取った値です)。
以前は持ってい%H:%M:%S
たのです%X
が、使うことを考えた%X
ので、元に戻さないといけないようです。
string - `sData` が nil 以外の値であるのはなぜですか?
コードの実行はeval.in にあります。
の出力print
は、 mysData
が空の文字列の値であると言います。
この値が ではないのはなぜnil
ですか? sData
そのような場合に備えてプロジェクト全体を作成しましたnil
が、そうではないことがわかりました。
このブロックを使用して問題を解決しました
したがって、私はこれを機能させるための解決策を求めていません。なぜそれがnil
値ではないのですか?