2011/07/29

spモードメール「メッセージR」フォルダ不具合の原因 その2

spモードメール「メッセージR」フォルダ不具合の原因 のつづき

docomo(アプリックス) の時系列対応・後手後手

7月28日(木) ver.4700 配信
「メッセージR」フォルダを f_id 8,9 に作成 f_id=8, 9 へユーザーフォルダが存在した場合、そのフォルダを「メッセージR」へ書き換えてしまい、以下の問題が発生
  1. 「メッセージR」フォルダから他のフォルダへ移動不可
  2. 「メッセージR」フォルダからSDへのエクスポート不可
  3. フォルダへの振り分け設定がそのまま残っているので、受信したメールがフィルタにより「メッセージR」へ移動してしまう
7月29日(金) ver.4800 配信
  • 「メッセージR」フォルダの振り分け設定を削除する 4700 で、上記3の問題を解消
7月31日(日) ver.4900? 配信予定
  • 「メッセージR」フォルダのメールを「受信BOX」へ移動させる予定


7月31日に配信予定の修正は「メッセージR」のメールを移動するというもので、ユーザーが作成したフォルダを上書きしてしまうのを修正するわけではないんじゃないかと悪い期待をしてしまう
その場合、4700より前のバージョンから、4900?へアップデートを行っても、「フォルダ + 振り分け」の消滅は続くのかも

なお、4900においても f_id = 10, 11 のフォルダ(f_id 200以下のユーザーフォルダ)については、何も対応しておらず、システムの予約フォルダが増えた場合、同様の問題(たとえ受信BOXへメールの移動が行われても、フォルダ名と振り分けが消える)を起こす事になるだろう

2011/07/28

spモードメール「メッセージR」フォルダ不具合の原因

spモードメールのアップデートがあり 4700 となった

「メッセージR」フォルダの追加で、既存のフォルダを押しつぶしたりと、あいかわらず やらかしている様子

/data/data/jp.co.nttdocomo.carriermail/databases/CarrierMail を覗いてみた

(上記環境では、メッセージRが既存フォルダへ被る症状は出ていない)

青で囲った所が、ユーザー作成のフォルダで、赤で囲った部分が、アップデートにより追加されている

フォルダを作成→削除→作成 を行うと、f_id(index) に 206 で作成、206 が削除、207 が作成 という形をたどるため、私自身が8, 9 のフォルダを作成して、たまたま削除していたので難を免れた可能性がある
また、f_id が 200以下の場所へ作成されたユーザーフォルダが、いつのバージョンで作成したのかは覚えていないが、本来はこの場所へユーザーフォルダを作成できないハズなのでは?
※メッセージが消失したという方は、ゴミ箱の「メッセージR」へ移動している可能性有り

メッセージRのフォルダが、DBのどの位置にあっても構わないと思うが、インデックスの自動インクリメントを利用していない等、謎が多い。ちなみに f_id にインデックス + インクリメントのフラグが立っている

原因は 「f_id の 200番以下は、システムで予約したつもり」だろう
アップデートのたびに、おかしな仕様変更や不具合を起こすのはどうかと...


2011-7-29 追記

バージョン 4800 というアップデートが出ているが「メッセージR」への振り分け設定を削除させただけの模様

フォルダを強制的に上書きしている状況では、元のフォルダ名などは消失しているのだろうが、「メッセージR」が開始される前だからこそ、それらのメールのフォルダIDを「受信BOX」へ付け直すくらいはやってもいいんじゃないのだろうか
(「メッセージR」フォルダのメッセージは、移動や SDへの吐き出しが出来ないなどの問題が残る)

CarrierMail ファイル mail テーブルの m_folder_id 8 のレコードを → 1 に付け直す(SQL一行で済む)だけ
メッセージR を配信する前に、4900 で行うべき


上記「フォルダid上書き」が原因とされる場合の対応方法
(4800で、メッセージRへの振り分けフィルタが解除されているため、内容を修正)

index 8, 9 を自前フォルダが使っているかどうかを確認する方法は root + sqlite を使う以外にないため
  1. 自前フォルダに振り分けたメールを受信BOXへ移動
  2. ver 4800へアップデート
  3. メッセージRへ変化したフォルダがあれば、それを再作成 + 振り分け設定
  4. 振り分けを再適用
※上記は、あなたのメールを確実に守るとは限りません。苦情はドコモへお願いいたします...




2011-8-2 追記
最終対応とされる 4900 においても f_id 200番以下のユーザーフォルダについて、対応は行っていないようなので、次にシステムフォルダが増えた場合は、フォルダ名と振り分けの消失を起こす可能性が残っている

spモードメール「メッセージR」フォルダ不具合の原因 その2

Android Market で、有料アプリを購入しようとすると、ログインし直して下さい→続行 を繰り返す

Android Market で、有料アプリを購入しようとすると、チェックアウトへログインし直して下さい→続行 を繰り返す

https://checkout.google.com/ を一旦開いて、その後購入へ向かう

2011/07/26

KORNET のIPアドレス範囲

spam送信元で有名な KORNET ホスト名が入ってないとか、逆引きできないとか色々と問題がありそーで、対応も無さそーな

KORNETのアドレス範囲
http://whois.hansode.org/range/netname/kornet

面倒なので、IPアドレスから正規表現を作成
http://www.google.co.jp/support/googleanalytics/bin/answer.py?answer=55572
※最初と最後に、開始(^)、終了($) が付きます

んで、出来上がった 17ブロックの正規表現
59\.([0-9]|[1-2][0-9]|3[0-1])\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))
61\.(7[2-7])\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))
61\.(7[8-9]|8[0-5])\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))
118\.(3[2-9]|[4-5][0-9]|6[0-3])\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))
119\.(1(9[2-9])|2([0-1][0-9]|2[0-3]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))
121\.(1(2[8-9]|[3-8][0-9]|9[0-1]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))
125\.(1(2[8-9]|[3-5][0-9]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))
168\.126\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))
211\.(2(1[6-9]|2[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))
211\.(2(2[6-9]|3[0-1]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))
218\.(1(4[4-9]|5[0-9]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))
220\.(7[2-9]|8[0-7])\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))
220\.(8[8-9]|9[0-5])\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))
220\.(1(1[6-9]|2[0-7]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))
221\.(1(4[4-9]|5[0-9]|6[0-8]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))
222\.(9[6-9]|1([0-1][0-9]|2[0-2]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))
112\.(1([6-8][0-9]|9[0-1]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))
コピペしてご利用下さい

管理するサーバは、海外(韓国)とのメールやりとりもしているので、スコアの付け方が難しいんだけど、そこは meta なんかの組み合わせで乗り切る

2011/07/25

Google ツールバー Firefox5 以降、対応無しを受けて

Google ツールバー Firefox5 以降、対応無し を受けて
Google ツールバーのアドオンを無効にしてみた

実際の所、検索やハイライト表示くらいしか使っていなかったよーな

まずは、ハイライト表示アドオン SearchWP を入れてみる
Googleツールバーの時は、ハイライトと検索で、ツールバー一行使っていたのが、検索バー内で済むが、検索バーのサイズが変更できなければ、幅が足りなくなったりするので、ツールバーのカスタマイズでサイズ変更可能スペーサーを入れる。が、サイズを変更できない → アドレスバーと隣あわせにないとサイズ変更できないらしい(スペーサーは不要)

次に使っていると、検索バーから検索した場合、ハイライトキーワードが表示されるが、その後 検索結果(ブラウザ内)から更に検索を続けた場合、検索バーのキーワードへ反映されない。ということで SearchBox Sync を入れて、ブラウザ内の検索キーワードと検索バーのキーワードを同期させる

Google翻訳は、ボタンを配置

なんとなく代替え?

2011/07/22

東京高裁 高木俊夫 裁判官

東京高裁 高木俊夫 裁判官

【東電OL殺人事件】
2000年12月22日 無期懲役(逆転有罪) - 東京高裁 高木俊夫 裁判長

【狭山事件】
1999年7月7日 再審請求棄却 - 東京高裁 高木俊夫 裁判長

【足利事件】
1996年5月9日 控訴棄却(無期懲役) - 東京高裁 高木俊夫 裁判長

2011/07/21

Firefox の Cookie 表示ウィンドウで、Cookieが削除されてないように見える

Firefox の オプション → プライバシー → Cookie を表示 で表示されるウィンドウについて
このウィンドウ、モーダル表示ではないので、表示したままに出来る → チェックに便利~

そして、ブラウザから Cookie を書き込むと、一覧に追加されるが
表示したままだと、追加はされるが、何故か削除されない

そのため、同じ名前の Cookie が次々追加されたり、削除しても表示されっぱなしのヮヶヮヵ状態になる
一旦閉じて再度開き直すと、正しく表示されるらしい (なら、モーダル表示にしてくれよ)

ちなみにPHPから削除は
setcookie('hoge', '');

2011/07/20

spモードメール ファイル配置

docomo Android spモードメール ファイル配置

/data/data/jp.co.nttdocomo.carriermail/ 配下
パス or ファイル名備考
app_muatmp/
cache/
cache/webviewCache/
databases/
    CarrierMailSQLite 基本、フォルダ、履歴、プレビュー
    PrefCarrierMailSQLite
    webview.dbSQLite
    webviewCache.dbSQLite
files/
    *.emlメールデータ
    reserved.dat15MB null ファイル送受信に使用?
    reserved2.dat10MB null 添付ファイル処理に使用?
    _fileio_tmp_
    _mailexport_tmp_
    _mailview_tmp_
files/temp/
    *.tmpメールデータ(旧バージョンから変換に使用?)
html_template/
lib/
    libAuthNative.so
    libmuabase.so
shared_prefs/
    AuthInfoPref.xml認証情報
    HtmlTemplateTitle.xmlテンプレートタイトル一覧
    jp.co.nttdocomo.carriermail.service.AppLinkProvider.xml
    jp.co.nttdocomo.carriermail_preferences.xml
    jp.co.nttdocomo.spmode.preferences.folder.1.xml
    jp.co.nttdocomo.spmode.preferences.folder.2.xml
    jp.co.nttdocomo.spmode.preferences.folder.3.xml
    jp.co.nttdocomo.spmode.preferences.folder.4.xml
    jp.co.nttdocomo.spmode.preferences.folder.5.xml
    jp.co.nttdocomo.spmode.preferences.folder.6.xml
    jp.co.nttdocomo.spmode.preferences.folder.7.xml
    jp.co.nttdocomo.spmode.preferences.folder.9.xml
    jp.co.nttdocomo.spmode.preferences.folder.10.xml
    jp.co.nttdocomo.spmode.preferences.folder.11.xml
    jp.co.nttdocomo.spmode.preferences.folder.200.xml
    jp.co.nttdocomo.spmode.preferences.folder.201.xml
    jp.co.nttdocomo.spmode.preferences.folder.202.xml
    jp.co.nttdocomo.spmode.preferences.folder.203.xml
    jp.co.nttdocomo.spmode.preferences.folder.205.xml

Delphi/C++ Builder の MessageDlg をフォームの中央に表示

MessageDlg っぽくて、指定(メイン)フォームの中央に表示

位置を指定できる MessageDlgPos が存在するものの、表示しようとしているダイアログのサイズが分からなければ、位置を決められないわけで...
function MsgDlg(AMessage: string; DlgType: TMsgDlgType = mtInformation; Buttons: TMsgDlgButtons = [mbOK]; AForm: TForm = nil): TModalResult;
var ARect: TRect;
    MsgForm: TForm;
begin
    if (AForm = nil) then begin
        if (Application.MainForm <> nil) then begin
            GetWindowRect(Application.MainForm.Handle, ARect);
        end
        else begin
            Result := MessageDlg(AMessage, DlgType, Buttons, 0);
            Exit;
        end;
    end
    else begin
        GetWindowRect(AForm.Handle, ARect);
    end;

    MsgForm := CreateMessageDialog(AMessage, DlgType, Buttons);
    try
        MsgForm.Top := ARect.Top + (ARect.Bottom - ARect.Top - MsgForm.Height) div 2;
        MsgForm.Left := ARect.Left + (ARect.Right - ARect.Left - MsgForm.Width) div 2;
        // MoveMouseCursorToDefaultButton(MsgForm);
        Result := MsgForm.ShowModal;
    finally
        MsgForm.Free;
    end;
end;
既定のボタンへカーソルを移動するには、MoveMouseCursorToDefaultButton 関数を併用します



デフォルトが設定されているので、メインフォーム中央の場合、フォームを指定する必要はありません
MsgDlg('処理が完了しました'); // Information アイコンで OK ボタンのみ
みたいに利用します

Delphi/C++ Builder で、「既定のボタン」へマウスカーソル移動

Delphi/C++ Builder で、既定のボタンへマウスカーソル移動

コントロールパネルの情報「ポインタを自動的に既定のボタン上に移動する」がチェックされている場合、指定されたフォームから Default == True のボタンを探して、マウスカーソルを移動する関数↓
procedure MoveMouseCursorToDefaultButton(AForm: TForm);
    var I: Integer;
        MoveCursor: Integer; // Delphi XE2 アップデートにより、例外が発生するようになったため Boolean → Integer へ変更
begin
    if SystemParametersInfo(SPI_GETSNAPTODEFBUTTON, 0, @MoveCursor, 0) and (MoveCursor <> 0) and (AForm <> nil) then begin
        for I := AForm.ComponentCount - 1 downto 0 do begin
            if (AForm.Components[I] is TButton) and TButton(AForm.Components[I]).Default then begin
                with TButton(AForm.Components[I]) do begin
                    SetCursorPos(ClientOrigin.X + (Width div 2), ClientOrigin.Y + (Height div 2));
                end;
                Exit;
            end;
        end;
    end;
end;
※横に長いのでコピペして見て下さい

この関数は、フォームの位置が決定していないと、ボタンの絶対位置を正しく取得できません
フォームの Position プロパティで、位置を決定している場合は、CM_SHOWINGCHANGED を利用して
private
    procedure CMShowingChanged(var message: TMessage); message CM_SHOWINGCHANGED;
//    :
procedure TForm1.CMShowingChanged(var message: TMessage);
begin
    inherited;
    if Visible then begin
        Update;
        MoveMouseCursorToDefaultButton(Self); //
    end;
end;
等とするとよいです

また、ダイアログの場合は FormActivate が一度しか呼ばれないため、そこへ記述すると簡単です
procedure TForm1.FormActivate(Sender: TObject);
begin
    MoveMouseCursorToDefaultButton(Self); //
end;

2011/07/13

消費者庁ロゴ

2011-03-06 消費者庁、シンボルマークを公表 - 伊豆倉 靖 プロフィール / Facebook
2011-07-13 消費者庁シンボルマーク修正へ 米団体の登録商標に酷似

応募する方も、選んだ方も、どうかしてますな

2011/07/12

Android spモードメール認証情報? - AuthInfoPref.xml

Android spモードメールの認証情報らしき記述のある AuthInfoPref.xml (root)


    
    
    
    
    
    

(preタグの関係で long, int は閉じタグを記載しています)

項目予想される内容
sMailAddressspモードメールアドレスを base64 エンコードしたもの
sExpire有効期限・マイアドレスチェックから 90日目の日付(UNIX形式)
sSerial不明(int)
sUserNamespモードメールアドレスの @ より前の部分を base64 エンコードしたもの
sSimSerialNumberSIM の ICCID を base64 エンコードしたもの 8981100 で始まる 19桁の数字
sPassword不明(base64 でエンコードしたデータに見える。デコード後はバイナリ)

その他、メールボックスや振り分け設定は Sqlite 形式のデータベースファイルで管理されている

2011/07/11

Google Toolbar for Firefox5

Google Toolbar の Firefox5 対応が遅い

未対応のアドオンを有効にするアドオン(導入後、アドオンマネージャーを覗いてみる)

既に Firefox6 がカウントダウンに入っているのに
なんだか、Google Chrome を使えという嫌がらせのよーな感じがするんだけど

2011/07/08

Delphi/C++ Builder 2009以降 Byte配列→String, String→Stream

UTF8で記述されたファイルを TFileStream 等で Byte配列に取り出したまではよいが、そのデータを 2009以降 の String型へ変換する所で躓く

SetLength と CopyMemory の組み合わせや PChar 等でバイト配列のポインタをキャストしても上手くいかない(SJIS のファイルで、AnsiString の場合は、単純な配列なので、上記方法でも可能だったりする)
また、SysUtils.StringOf を利用すると、デフォルトエンコードで変換されてしまう

UTF8 のまま Byte配列を String型へ変換するには
var ByteArray: TBytes;
begin
    // :
    S := TEncoding.UTF8.GetString(ByteArray);
end;
※UTF8で記述されたテキストファイルは、BOMが入っている可能性もあるので、そちらも注意が必要

逆に 2009以降の String型を UTF8 のままファイル等へ書き込むには
var ByteArray: TBytes;
begin
    ByteArray := TEncoding.UTF8.GetBytes(S);
    Stream.Write(ByteArray[0], Length(ByteArray));
    Stream.Position := 0;
end;
という形で、バイト配列へ変換してから書き込む

2011/07/04

DELL Latitude D520 メモリ増設(交換)

DELL のノートD520 のメモリを増設(交換)

空きスロット2(うち1に512MB実装)
最大容量 2GB
最大容量を搭載するため、1GB×2枚を各スロットへ装着予定

バッファローの D2/N667-S1G あたりが動作確認済みで、1枚3,000円弱、2枚で6,000円弱か~とか思いながら、プリンストンのメモリ検索から KVR533D2S4K2/2G にたどり着く
(他にもメモリ検索があるが、何故か上記のだけ KBR型番のが出てくる)

KVR533D2S4K2/2G = 1GB×2枚組の商品で、3,000円弱(なぜか上記メーカーの半額)

取り外し、取り付け方法は、このサイトを参考にさせて頂きました
(3)のキーボード奥のカバーを外すのは、力を入れつつ慎重に(丸いヒンジの一部が付いてきて正解です)

fon FreeWLAN

今更ながら fon へ FreeWLAN を入れてみた

昔、送料だけで買った(もらった?) fon FON2100 シリーズ
ネット回線へ繋いで放置状態だったが、Wi-Fiから同一ネットワークのLANへ接続する必要が出来たので、FreeWLAN を入れてみた
配布側のサイトが枯れていたりと、なんだか情報通りに自動インストールされなかったので、メモ
基本的に、まとめサイトの情報を利用したが、その抜粋
  • fon を放置していたので、当然バージョンは、上がっていた状態
  • 再起動(電源Off→On)で、Wi-Fiが有効になるのに2,3分かかるのでじっと待つ事
  1. リセットスイッチを 30秒押しで、出荷時バージョン (0.7.1.r1未満)へ
    (WAN回線に繋ぐと、勝手にバージョンが上がるので繋がない)
  2. 0.7.1r1ファームファイルをダウンロードして、Wi-Fi経由でWeb設定から、バージョンを 0.7.1r1 へ
    DNS を 188.40.206.43 へ設定して再起動→ネット接続して、3日ほど放置したが変化無し
  3. SSHからアップするため、PCと直結してココの手順を踏む。が 13番の vi で /bin/thinclient を編集しようとするも、ファイルが無い模様
    11番で、iptables を書き換えてるから、WAN側からSSLで入れるんじゃね~の?
  4. ということで、常用しているSSHクライアント Poderosa からSSL接続したら、すんなり入れた
    アカウント: root パスワード: admin
  5. SSH から wget にて FreeWLAN インストール
    wget -q -O - http://addons.freewlan.info/installer/install.sh|sh
  6. めでたく、再起動後にWebへ接続すると FreeWLAN を導入完了
  7. ブリッジモードに設定

Zeam Launcher 3.0.0 のアップデートで、Action Shortcuts が無くなる

軽いホームアプリ Zeam Launcher が 3.0.0 へアップデートされた

画面一番下の Dock にワケのワカランアプリケーションが大量に登録されていた以外に、アクションショートカットが削除されている
元のアクションショートカットは、Action Bindings(画面を Swipe Up, Down、Double tap 等)でしか呼び出せなくなった模様

画面ページ切替のため Dockへ Screen previews を登録していたので、不便になった
この機能を削除するのって、何か理由でもあるのだろうか...

2011/07/01

ソフトバンクの「おとくライン」局内交換機

ソフトバンクテレコムの提供している「おとくライン」の局内交換機について

  • アナログ回線は、契約に関係なく PB(プッシュ)も DP(ダイヤル)も受け付ける
    有料オプションの「プッシュ電話サービス」として、存在しているのは不明
  • デジタル回線(BRI INS64)は、極性反転(レバース)を交換機側で補正可能なので、端末側が±を逆に接続しても問題ない
    外線の保守作業で、1L2Lが入れ替わっても問題が出ない点は、優秀である。また、先行配線を行っても極性を気にする必要がない
  • 市内局番が違っていてもダイヤルインを組むことが出来る
    元々デジタルとアナログ回線のモデムダイヤルインは、全桁の着信番号を通知できるので、技術的に可能であるが、NTTの加入回線は、アナログ回線のPBダイヤルインへ切替を想定(NTT法?)してか、局番相違を一つのダイヤルイン群へ束ねられない。ちなみに、NTTひかり電話は可能(BRI、モデムダイヤルインのみ)

全ての交換機がそうとは限らないかもしれません

悲惨な地方のクーポンサイト

なんだか、流行のクーポンサイトだが、地方で限定したり、ご当地クーポンサイトは悲惨なものがある

いくつか覗いてみると、チケット枚数10枚が、販売枚数1枚とか 0枚で終了とか

成立枚数が記述されていないサイトもあったりするが、そもそもクーポンって運営側が「20枚買い取るからこの値段でお願い。みたいなのが基本だと思うのだが、これじゃ運営できないだろ。と突っこんでみたりする

一年持たずに閉鎖されるサイトが多数出てくるんだろう