ページ 55

Re: pup_event_frontend_d

Posted: 09/11/17(火) 20:53
by シノバー
新谷 さんが書きました:単純計算で従来版の3倍時間がかかるっよね
df の実行にずいぶん掛かるようなので、それを1回にしました。次のようなコーディングでいかが?

コード: 全て選択

free_flash_func() { #PUPMODE 3,7,13. called every 4 seconds.
 WARNMSG=""
 # 17nov09 SIZEFREEM by shinobar
 DFM=$(df -m)
 LINERO=$(echo "$DFM" | grep ' /initrd/pup_ro1$' | tr -s ' ' )
 LINERW=$(echo "$DFM" | grep ' /initrd/pup_rw$' | tr -s ' ' )
 SIZEM=$(echo $LINERO| cut -f 2 -d ' ')
 SIZEWM=$(echo $LINERW| cut -f 2 -d ' ')
 [ $SIZEWM -lt $SIZEM ] && SIZEM=$SIZEWM
 SIZEUM=$(echo $LINERW| cut -f 3 -d ' ')
 SIZEFREEM=$(expr $SIZEM - $SIZEUM)
 #SIZEFREEM=`df -m | grep ' /initrd/pup_ro1$' | tr -s ' ' | cut -f 4 -d ' '`
 SIZETMPM=$(echo $LINERW| cut -f 4 -d ' ')

Re: pup_event_frontend_d

Posted: 09/11/17(火) 23:44
by 新谷
お疲れ様です。
えーと、
新谷 さんが書きました:pup_event_frondend_d-1117 の417行目から

コード: 全て選択

 # 17nov09 SIZEFREEM by shinobar
 SIZEM=`df -m | grep ' /initrd/pup_ro1$' | tr -s ' ' | cut -f 2 -d ' '`
 SIZESM=`df -m | grep ' /initrd/pup_rw$' | tr -s ' ' | cut -f 2 -d ' '`
 [ $SIZESM -lt $SIZEM ] && SIZEM=$SIZESM
 SIZEUM=`df -m | grep ' /$' | tr -s ' ' | cut -f 3 -d ' '`
 SIZEFREEM=$(expr $SIZEM - $SIZEUM)
 #SIZEFREEM=`df -m | grep ' /initrd/pup_ro1$' | tr -s ' ' | cut -f 4 -d ' '`

コード: 全て選択

SIZEUM=`df -m | grep ' /$' | tr -s ' ' | cut -f 3 -d ' '`
↑の「/$」の部分には「/initrd/pup_ro1$ OR /initrd/pup_rw$」が代入されるべきなのでは?、ということが言いたかったのであります。

新スクリプトでは、

コード: 全て選択

 SIZEUM=$(echo $LINERW| cut -f 3 -d ' ')
になってるんで、えー....特にありません。
テストしてますが、今のところ不具合はないです。

Re: pup_event_frontend_d のスピード

Posted: 09/11/18(水) 00:35
by 新谷
従来部分と改良版から抽出してテストしてみました。
従来版 (OLD.sh)

コード: 全て選択

#!/bin/ash
 SIZEFREEM=`df -m | grep ' /initrd/pup_ro1$' | tr -s ' ' | cut -f 4 -d ' '`
echo done
改良版 (NEW.sh)

コード: 全て選択

#!/bin/ash
 DFM=$(df -m)
LINERO=$(echo "$DFM" | grep ' /initrd/pup_ro1$' | tr -s ' ' )
LINERW=$(echo "$DFM" | grep ' /initrd/pup_rw$' | tr -s ' ' )
SIZEM=$(echo $LINERO| cut -f 2 -d ' ')
SIZEWM=$(echo $LINERW| cut -f 2 -d ' ')
[ $SIZEWM -lt $SIZEM ] && SIZEM=$SIZEWM
SIZEUM=$(echo $LINERW| cut -f 3 -d ' ')
SIZEFREEM=$(expr $SIZEM - $SIZEUM)
echo done
従来版のスピード

コード: 全て選択

#time ./OLD.sh
done

real	0m0.304s
user	0m0.212s
sys	0m0.092s
....約0.3秒くらいっすか。

改良版のスピード

コード: 全て選択

#time ./New.sh
done

real	0m0.424s
user	0m0.320s
sys	0m0.104s
....約0.4秒くらい。結構早い :o

ところで、

コード: 全て選択

#time LANG=C ./New.sh
done

real	0m0.096s
user	0m0.020s
sys	0m0.076s
....スクリプト中、free_flash_func() だけは LANG=C にするというのは可能でしょうか?

註1: このテストはペン3 597MHzのPCで、Xを終了状態で行いました。
註2: time コマンドでは厳密な測定はできないと思います。
註3: 各数値は5回測定して一番結果の良かったもの。

Re: pup_event_frontend_d のスピード

Posted: 09/11/18(水) 08:14
by シノバー
詳細な検討ありがとうございます。
新旧のdiffは

コード: 全て選択

# diff  pup_event_frontend_d.old pup_event_frontend_d
28a29
> # 17nov09 free_flash_func
416,417c417,427
<  SIZEFREEM=`df -m | grep ' /initrd/pup_ro1$' | tr -s ' ' | cut -f 4 -d ' '`
<  SIZETMPM=`df -m | grep ' /initrd/pup_rw$' | tr -s ' ' | cut -f 4 -d ' '`
---
>  # 17nov09 SIZEFREEM by shinobar
>  DFM=$(df -m)
>  LINERO=$(echo "$DFM" | grep ' /initrd/pup_ro1$' | tr -s ' ' )
>  LINERW=$(echo "$DFM" | grep ' /initrd/pup_rw$' | tr -s ' ' )
>  SIZEM=$(echo $LINERO| cut -f 2 -d ' ')
>  SIZEWM=$(echo $LINERW| cut -f 2 -d ' ')
>  [ $SIZEWM -lt $SIZEM ] && SIZEM=$SIZEWM
>  SIZEUM=$(echo $LINERW| cut -f 3 -d ' ')
>  SIZEFREEM=$(expr $SIZEM - $SIZEUM)
>  #SIZEFREEM=`df -m | grep ' /initrd/pup_ro1$' | tr -s ' ' | cut -f 4 -d ' '`
>  SIZETMPM=$(echo $LINERW| cut -f 4 -d ' ')
旧がdfを2回やっているのに対し新は1回なので、結構早いはず。
*pup_event_frontend_dは基本 LANG=Cで動いてます。メッセージを出すときのみ LANG=$LANGORG

SIZEFREEM=$(expr $SIZEM - $SIZEUM)
第1項は pop_ro1 か pop_rw のどちらか小さいほう
第2項は pop_rw
というのがキモです。pop_rw はリアルタイムに変化するが、pop_ro1はデフォルトで30分おきにしか更新されない。

蛇足ながらフラッシュメモリで動いている場合に限っては pop_rw と / が同じみたいでした。df -m を実行してみるとそうだった。

Re: pup_event_frontend_d のスピード

Posted: 09/11/18(水) 08:35
by 新谷
シノバー さんが書きました:*pup_event_frontend_dは基本 LANG=Cで動いてます。メッセージを出すときのみ LANG=$LANGORG

(中略)

蛇足ながらフラッシュメモリで動いている場合に限っては pop_rw と / が同じみたいでした。df -m を実行してみるとそうだった。
あら :shock: そうでしたか。
こちらの確認不足のようです。
申し訳ありませんでした :oops: :oops:

Re: pup_event_frontend_d のスピード

Posted: 09/11/18(水) 10:10
by シノバー
シノバー さんが書きました: SIZEFREEM=$(expr $SIZEM - $SIZEUM)
第1項は pop_ro1 か pop_rw のどちらか小さいほう
第2項は pop_rw
むむ〜、そんなに単純じゃなかった。

pup_ro1はpupsaveそのものですが、pop_rwはpupsaveに加えて更新分と、解釈していたのだが、そうではなくて
pop_rwはpupsaveからの差分のみ

上記の(新)free_flash_func()だと、セッション中に大きなファイルをいれると、確かにそれが反映されるが……、
再起動すると空きスペースが500MBに戻ってしまう。 :oops:

pup_event_frontend_d / snapmergepuppy ほか

Posted: 09/11/18(水) 14:10
by シノバー
シノバー さんが書きました:むむ〜、そんなに単純じゃなかった。
あきらめてもとに戻り、新谷さんも言われたようにエラーメッセージを強化する方向でまとめてみました。
  1. /sbin/pup_event_frontend_d
    現状フリーエリアのチェックを pup_roとpup_rwの両方について行っており、どちらが足りなくてもエラーメッセージが出ます。
    エラーメッセージとトレイのfree表示との整合を取る意味でトレイのfree表示も pup_roあるいはpup_rwの空きのうち小さいほうを表示するということでいかがでしょうか。
  2. /usr/share/locale/ja/LC_MESSAGES/pmount.mo
    pup_event_frontend_dが使っているメッセージです。少し丁寧にしました。
  3. /usr/sbin/snapmergepuppy
    エラーメッセージをすぐに消えるスプラッシュではなく「OK」ボタンを押すまでは残るダイアログにしました。
    /etc/profileのLANGを参照するという方法で日本語を表示させてます。
    また、rc.shutdownから呼ばれたときのために成功/失敗のステータスを返すようにしました。
  4. /etc/rc.shutdown
    上記ステータスを見て、保存に失敗したときはエラーメッセージを表示するようにしました。
  5. /usr/X11R7/bin/yaf-splash
    メッセージの改行を反映させるために、引数参照のさい「"$@"」とダブル・クォーテーションを付けました。
以上5つをまとめました。

SP3.1118

Posted: 09/11/18(水) 18:41
by シノバー
service_pack431JP-RC-3.1118.pet(SP3.1118) を用意しました。
こちらから

4.3.1JP-RC3に適用してください。
4.3.1JP-RC3リリース以降の修正をすべて含んでいるので、他の修正PETはあらかじめ外しておいてください。
SP3.1118適用後、 /usr/bin/abiword-binは不要です。邪魔なら削除してください。

今回(SP3.1118)の追加
  • USキーボードで「`」(grave asciitilde)がX上で入力できなかったものの修正
  • 個人保存ファイルに/var/run以下のpidファイルが残ることがあったものの修正
  • フラッシュメモリから起動した環境での空き容量表示とエラーメッセージの改善
  • デフォルトの壁紙を4.3.1バージョンに差し替え
  • アプリケーション日本語化の更新(gnumeric)
  • release-4.3.1JP.htm(更新)
SP3.1113, SP3.1114 の内容(SP3.1118に同梱済み)については以下をご覧ください。
viewtopic.php?f=28&t=1444&start=30#p10252

Re: SP3.1118

Posted: 09/11/18(水) 21:16
by きりん
こんにちわ。きりんです。
USキーボードで「`」(grave asciitilde)がX上で入力できなかったものの修正
だいぶ昔、メッセージをアップした、「Xvesaでのかな漢字起動キー」viewtopic.php?f=23&t=387
があるのですが、副作用として日本語キーボードで漢字キーが使えなくなるような・・・。動作確認していませんが、気に掛かったので、お知らせです。

Re: SP3.1118

Posted: 09/11/18(水) 22:03
by シノバー
きりん さんが書きました:
USキーボードで「`」(grave asciitilde)がX上で入力できなかったものの修正
副作用として日本語キーボードで漢字キーが使えなくなるような・・・。
気に掛けていただきありがとうございます。
SP3.1118では /root/.xinitrcでそこのところを処理してます。
36行目から

コード: 全て選択

if [ -f $usermodmap ]; then
    xmodmap $usermodmap
else
  if [ $(readlink /usr/bin/X) = "Xvesa" ]; then
    [ -f $usermodmap.xvesa ] && xmodmap $usermodmap.xvesa
    [ "$(grep '.map' /etc/keymap | tail -n 1)" = jp106.map ] && \
    xmodmap -e 'keycode 49 = Zenkaku_Hankaku'
  else
    [ -f $usermodmap.xorg ] && xmodmap $usermodmap.xorg
  fi
fi
あ、/root/.Xmodmap.xvesaを読むのとxmodmap -eで設定するのと順番がよろしくないですね。次で直しておきます。

追記:RC4での /root/.xinitrcのそこの部分(36行目から)

コード: 全て選択

[ "$(grep '.map' /etc/keymap | tail -n 1)" = jp106.map ] && \
  xmodmap -e 'keycode 49 = Zenkaku_Hankaku'
if [ -f $usermodmap ]; then
    xmodmap $usermodmap
else
  if [ $(readlink /usr/bin/X) = "Xvesa" ]; then
    [ -f $usermodmap.xvesa ] && xmodmap $usermodmap.xvesa
  else
    [ -f $usermodmap.xorg ] && xmodmap $usermodmap.xorg
  fi
fi

Re: SP3.1118

Posted: 09/11/18(水) 22:26
by きりん
シノバー さんが書きました: SP3.1118では /root/.xinitrcでそこのところを処理してます。
了解しました。確認せずですいませんでした。今後とも改良作業よるしくお願いします。
きりん。

Re: SP3.1118

Posted: 09/11/19(木) 00:10
by cygnus_odile
SP3.1118 と英語キーボードとの組み合わせを確認しました。(英語キーボード派ですので)。
これまではいつも、 xmodmap -e "keycode 49 = grave asciitilde" なる内容のスクリプトを起動時に実行させていたのですが、不要となりました。

Re: 4.3.1JP-RC3(+SP3.1118)

Posted: 09/11/19(木) 10:23
by みのむし
シノバーさん、作業お疲れ様でした。
早速、ダウンロードしてアップデートしました。
なお、/root/.xnitrc は初期化されるんでしょうか?
wbar の設定が消えていました。

Re: 4.3.1JP-RC3(+SP3.1118)

Posted: 09/11/19(木) 12:19
by シノバー
みのむし さんが書きました:/root/.xnitrc は初期化されるんでしょうか?
でしたね。ゴメンなさい。