2017年12月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

パソコン・インターネット

2017年7月 9日 (日)

最近Google Chromeが遅い件について

タイトルの通り、Google ChromeのYoutube再生において、これまで1080p 60HDで再生
できていたものが、最近240p とか144pで再生されてしまう現象が頻発するようになりました。

このままではストレスなので、ネットワーク環境が遅くなっているのか、PC自体が遅くなって
いるのかいろいろ原因を探ってみました。

まず、(1)ネットワークの測定サイトで下りの速度を計測してみました。
確かに光回線の割には30Mbpsしか出なかったりして、近所に光回線を使用する家庭
が増えて混んできたのかなぁとか考えました。これはどうしようもありません。

さらに、(2)Wi-Fiルータのファームウェアが古いのかと思い、最新に更新したりして
みました。しかし、改善されません。

さらに、(3)PCのHDDの空き容量を増やし、デフラグを実施してみました。
Chromeの一時使用領域が不足していたり、HDDのアクセスが遅くなっていることが
原因かもしれないと考えたからです。しかし、改善されませんでした。

さらに、(4)Chromeが遅い原因をネット検索すると、不要なブックマークや拡張機能
を削除するだとか、閲覧履歴を削除するだとか、いろいろ設定を見直す内容が紹介
されていました。不要なものを削除してみましたが改善されませんでした。

その中で、(5)「Google Chromeの設定」⇒「詳細設定」⇒「Google Chrome を閉じた
際にバックグラウンド アプリの処理を続行する」をオフ
にするというものがありました。
これは、Chromeを終了してもChromeのプロセスが残ってしまい、知らず知らずのうちに
メモリを圧迫してPC全体のパフォーマンスが低下してしまうというのです。
この事象を回避するために上記の設定をオフにすると良いというものでした。
一時、この設定をオフにしていたのですが、オンにしてyoutubeを再生したところ
1080p 60HDで問題なく再生されるようになりました。

Chromeを終了してもプロセスは残りませんし、今後はオンのままでいきたいと思います。
解消されてよかったよかった。。。

ちなみに我が家の環境は以下の通り。
 PC :OS Windows8.1 64bit
        メモリ:8GB
        CPU:Intel Core i5
 Wi-Fi (速度:130Mbps)
 NTTフレッツ光
 Chrome Ver.61.0.3141.8(Official Build)

2012年2月11日 (土)

■Word VBA(検索文字列の行を選択 その2)

久しぶりのWord VBAネタです。「検索文字列の行を選択」記事で、繰り返し実行するにはどうすればよいでしょうかという問い合わせをいただきました。
Ifの部分をDo whileにすればよいと書きましたが、実際にやってみると結構変更する部分があったので以下の通り作成しました。サクっと作ったので変なロジックですがとりあえず動くので良しとします。
前回はExcelから操作するケースも作りましたが今回は割愛します。
Do Loopで無限ループしますが、処理の中で最初の検索位置に戻ったらループを抜けるようしました。
それと、検索文字を含む行全体を選択するロジックでしたが、今回はわざと検索文字のみを選択するようにしてあります。これは、一行の中に、検索文字が複数存在する場合に一行選択してしまうと最初の検索文字しか検索しないからです。それでも構わない場合は、コメント部分を外せば良いです。

Sub test1()
    lmoji = InputBox("検索する文字を入力してください。", "検索文字入力", "年度")
    If lmoji = "" Then End
   
    Do
        With Selection.Find
            .Forward = True
            .ClearFormatting
            .MatchWholeWord = True
            .MatchCase = False
            .Wrap = wdFindContinue
   
            If .Execute(FindText:=lmoji, Forward:=True, Format:=True) = True Then
                '位置取得
                Set myRange = Selection.Range
                With myRange
                    '行
                    aa = .Information(wdFirstCharacterLineNumber)
                    '桁
                    bb = .Information(wdFirstCharacterColumnNumber)
                    '頁
                    pp = .Information(wdActiveEndPageNumber)
                End With
            
                '一行選択
'                Selection.HomeKey unit:=wdLine, Extend:=wdMove
'                Selection.EndKey unit:=wdLine, Extend:=wdExtend
                lVal = Selection
            End If

            If a = aa And b = bb And p = pp Then Exit Do
            MsgBox lVal & ": " & aa & " 行 " & bb & " 桁  " & pp & " 頁"
            
            
            If a = "" Then a = aa
            If b = "" Then b = bb
            If p = "" Then p = pp
            
            .Parent.Move Count:=2
            
        End With
    Loop

    Selection.Find.ClearFormatting
    Set myRange = Nothing
End Sub

2011年11月26日 (土)

◆Outlook VBA(メール誤送信防止のためのチェックあれこれ その4)

メール誤送信防止のためのチェックについて、機能を追加してみました。
追加した機能は、送信先のアドレス(To,Cc,Bcc)に自ドメイン以外のアドレスが含まれていた場合、その旨知らせるメッセージを表示するというものです。
以下の要領で実装します。

(1)ThisOutlookSessionのソース(記事:その2)に以下の1文を追加
      ・
      ・
      ・
      lSubject = Item.Subject     '件名
      lBody = Item.Body           '本文
→   gSendname = Item.Session.CurrentUser.Address '送信者
   
      '件名チェック
      ・
      ・
      ・
(2)標準モジュールのソース(記事:その3)に以下の1文を追加
  Public gTitle As String
  Public gAddress
  Public gTempFile
  Public SendFlg As Boolean
→ Public gSendname
      ・
      ・
      ・
(3)ユーザフォームにLabel5を追加。一応警告なのでForeColorは赤にしてみました。
(4)ユーザフォームのソース(記事:その3)の宛先処理を以下に変更
      ・
      ・
      ・
    '宛先
    ldomain = Split(gSendname, "@")
   
    U1.Label3.Caption = U1.Label3.Caption & " 件数:" & gAddress.Count
    Dim lcnt As Integer
    lcnt = 0
    OutFlg = False
    For Each oAddress In gAddress
        lcnt = lcnt + 1
        If Not (oAddress.Address Like "*" & ldomain(1)) Then
            OutFlg = True
        End If
        U1.ListBox1.AddItem Format(lcnt, "00") & "." & oAddress.Name & " 【" & oAddress.Address & "】"
    Next
    If OutFlg = True Then
        U1.Label5.Caption = "自ドメイン (" & ldomain(1) & ") 以外のアドレスが含まれています。"
    Else
        U1.Label5.Caption = ""
    End If
      ・
      ・
      ・

で、実行した結果が以下のようになります。自ドメインは自分の送信者アドレスから抽出しています。
そのドメインと宛先のアドレスのドメインが異なったらメッセージを表示するというしくみです。
Domain_chk_2

2011年10月30日 (日)

◆Outlook VBA(メール誤送信防止のためのチェックあれこれ その3)

メール誤送信防止チェックの最終回です。今回は標準モジュールとフォームです。

(1)Outlookを起動したら、
(2)Alt+F11を押下してMicrosoft Basic Editorを表示します。
(3)どこでも良いですがProject1(VbaProject.OTM)上で右クリックし、メニュー「挿入」→「標準モジュール」を選択し、以下の標準モジュールの内容をコピペします。
(4)(3)と同様に右クリックし、メニュー「挿入」→「ユーザフォーム」を選択。追加されたフォームを下記の画像の通りに作成します。右クリックし、「コードの表示」を選択し、以下のユーザフォームの内容をコピペします。

'------------------------------
' 標準モジュール
'------------------------------
Public gTitle As String
Public gAddress
Public gTempFile
Public SendFlg As Boolean

Sub m_SendCheck(Optional ByVal dummy As String)
    U1.Show
End Sub

User_form

'------------------------------
' ユーザフォーム
'------------------------------
Private Sub CommandButton1_Click()
    SendFlg = False
    Unload U1
End Sub

Private Sub CommandButton2_Click()
    SendFlg = True
    Unload U1
End Sub

Private Sub UserForm_Initialize()
    '件名
    If gTitle <> "" Then
        U1.TextBox1.Text = gTitle
    Else
        U1.TextBox1.Text = "**** 件名なし ****"
    End If
   
    '宛先
    U1.Label3.Caption = U1.Label3.Caption & " 件数:" & gAddress.Count
    Dim lcnt As Integer
    lcnt = 0
    For Each oAddress In gAddress
        lcnt = lcnt + 1
        U1.ListBox1.AddItem Format(lcnt, "00") & "." & oAddress.Name & " 【" & oAddress.Address & "】"
    Next
   
    '添付ファイル
    U1.Label4.Caption = U1.Label4.Caption & " 件数:" & gTempFile.Count
    lcnt = 0
    If gTempFile.Count > 0 Then
        For Each oTempFile In gTempFile
            lcnt = lcnt + 1
            U1.ListBox2.AddItem Format(lcnt, "00") & "." & oTempFile.FileName
        Next
    Else
        U1.ListBox2.AddItem "**** 添付ファイルなし ****"
       
    End If
   
    Set oAddress = Nothing
    Set oTempFile = Nothing
   
End Sub

それでは解説です。
まず標準モジュールのPublic変数は前回解説したThisOutlookSessionモジュール内で設定した内容を
ユーザフォームに渡すものです。またSendFlgは送信か否かを受け取るフラグ変数です。
処理の内容は単にユーザフォームを表示(show)するだけです。
なぜThisOutlookSessionでやらないのかというと、このPublic変数がThisOutlookSession内で定義出来無かった
ので、変数定義だけではつまらないのでm_SendCheckを書いたという理由です。

次に、ユーザフォームです。
まずフォームの作成について何点か補足します。
件名を表示するTextBoxのBorderStyleプロパティでは1を定義しています。
そして、EnabledプロパティにはFalseを定義しています。この設定は処理とは関係有りません、私の趣味です。
■宛先と■添付ファイルのLabelですが、ロジックで件数情報を付加していますので横長に定義しましょう。
キャンセルボタンのCancelプロパティ、Defaultプロパティは共にTrueを設定しています。
今回の誤送信防止チェックのコンセプトはEnterキーで間違って送信しないように、意識的にデフォルトボタンは「いいえ」か「キャンセル」にしています。
次にロジックですが、UserForm_Initializeでフォームを初期表示した際の処理と、送信ボタン、キャンセルボタンが押下された時の処理があるだけです。
宛先のメールアドレスはアドレスと表示名を両方表示できるようにしています。
件名と添付ファイルが存在しない場合は、文言で無いことが一目で分かるようにしています。
あとは大したことはしていませんので解説は不要でしょう。

以上でプログラムの説明が終わりました。
この機能を利用すればある程度チェックが働きますので誤送信防止に寄与するでしょう。私自身も重宝しています。よかったら利用してみてください。
<関連記事>
その1
その2

最後に、以下のサイトを参考にさせて頂きました。ありがとうございました。
http://d.hatena.ne.jp/fyts/20070813/outlook

2011年10月29日 (土)

◆Outlook VBA(メール誤送信防止のためのチェックあれこれ その2)

前回からの続きです。メール誤送信を防ぐために作成した4つの機能について、プログラムを説明していきます。今回はThisOutlookSessionです。

(1)Outlookを起動したら、
(2)Alt+F11を押下してMicrosoft Basic Editorを表示します。
(3)ThisOutlookSessionモジュールに以下の内容をコピペします。

Private Sub Application_Itemsend(ByVal Item As Object, Cancel As Boolean)
    Dim lSubject As String
    Dim lBody As String
    Const cMongon As String = "添付|別添|別紙"    '本文と件名をチェックしたい文言を|で区切って指定する
    Const cCheck As String = "xlsx|xlsm"           '添付ファイルの拡張子をチェックしたい拡張子を|で区切って小文字で指定する
   
    lSubject = Item.Subject '件名
    lBody = Item.Body '本文
   
    '件名チェック
    If Trim(lSubject) = "" Then
        If vbNo = MsgBox("件名が未入力です。本当に送信しますか?", vbYesNo + vbDefaultButton2 + vbExclamation, "件名チェック") Then
            Cancel = True
            Exit Sub
        End If
    End If
   
    '添付ファイル存在チェック
    lLoop = Split(cMongon, "|")
    lTempFlg = False
    For i = 0 To UBound(lLoop)
        If lSubject & lBody Like "*" & lLoop(i) & "*" And Item.Attachments.Count = 0 Then
            lTempFlg = True
            lVal = lLoop(i)
            Exit For
        End If
    Next
    If lTempFlg = True Then
        If vbNo = MsgBox("本文または件名に「" & lVal & "」という文言が含まれています。" & vbCrLf & _
            "添付ファイルを忘れている可能性がありますが送信しますか?", vbYesNo + vbDefaultButton2 + vbExclamation, "添付ファイル存在チェック") Then
            Cancel = True
            Exit Sub
        End If
    End If
   
    '添付ファイル拡張子チェック
    If Item.Attachments.Count > 0 Then
        lLoop2 = Split(cCheck, "|")
        For i = 0 To UBound(lLoop2)
            For Each oAt In Item.Attachments
                If StrConv(oAt.FileName, vbLowerCase) Like "*" & lLoop2(i) Then
                    If vbNo = MsgBox("添付ファイルの中に送信不可の拡張子(" & lLoop2(i) & ")が含まれている可能性があります。" & vbCrLf & _
                                    "本当に送信しますか?", vbYesNo + vbDefaultButton2 + vbExclamation, "添付ファイルチェック") Then
                        Cancel = True
                        Set oAt = Nothing
                        Exit Sub
                    End If
                End If
            Next
        Next
    End If
   
   
    '宛先確認
    gTitle = Item.Subject
    Set gAddress = Item.Recipients
    Set gTempFile = Item.Attachments
   
    Call m_SendCheck
    Cancel = SendFlg
   
End Sub

解説ですが、Application_Itemsendは送信ボタンを押下したときに発生するイベントです。引数のItemは送信しようとしているメールの情報が入っているオブジェクト型の変数です。引数のCancelはプログラムの中でTrueを設定すれば送信中止、Falseを設定すれば送信をコントロールする変数です。
プログラムの中身ですが、cMongonに添付ファイルをチェックする際に使用する文言を定義しておく変数です。他に適切な文言があれば追加してみてください。cCheckには送信前にチェックしたいファイル拡張子を追加してみてください。あとは、順番に件名未入力チェック、添付ファイル忘れチェック、拡張子チェック、宛先確認ダイアログ表示となります。

宛先確認ダイアログは標準モジュールのm_SendCheckを呼び出すことになりますが、長くなりましたので次回とします。それではまた。

2011年10月26日 (水)

◆Outlook VBA(メール誤送信防止のためのチェックあれこれ その1)

久しぶりのOutlookネタです。最近訳あってThunderbirdからOutlookに戻って来ました。
久しぶりに使ってみると、Thunderbirdでは即座に送信されるのではなく、送信前のチェックによって誤送信を防止するための機能が幾つかありました。しかしOutlookでは標準装備されていないことが分かり、使い勝手が悪いのでVBAで作ってみました。
送信ボタンを押下した時に送信メールに対してチェックします。
作成した機能は以下のとおり。

(1)件名チェック
件名が未入力の場合、そのまま送信するかどうかの確認メッセージを表示して次のチェックにいきます。
いいえを押下すると送信を中止することができます。
Subject_check

(2)添付ファイル忘れチェック
本文か件名に添付といった文言が含まれている場合、ファイルが添付されているかチェックします。
添付ファイルが無い場合、そのまま送信するかどうかの確認メッセージを表示して次のチェックにいきます。
いいえを押下すると送信を中止することができます。
Temp_check

(3)添付ファイル拡張子チェック
社内やお客様はまだOffice2003を利用していることが多く、2007/2010形式のファイルを送信しないように拡張子チェックします。とりあえずExcelのxlsxとxlsmが添付されていたら、そのまま送信するか確認メッセージを表示します。
いいえを押下すると送信を中止することができます。
Xlsx_check_2

(4)宛先確認
宛先に設定されているメールアドレスを列挙して、確認を促すダイアログを表示します。
最初、単純にメッセージ表示していたのですが、アドレスが多いと表示文字の制限のために表示しきれないケースがあったので確認用のフォームを作りました。
キャンセルを押下すると送信を中止することができます。
Atesaki_check

VbaProject.OTMを公開しても良いのですが、すでに何らかのVBAを実装している方のためにソースの公開にします。ちょっと行数が多いので次回ということにします。それではまた。

2011年10月15日 (土)

◆Excel VBA(<PC資産管理>使用ソフトウェアのバージョンを管理するツール2)

自分がインストールしているソフトウェアのバージョンを把握するツールであるversion_check.xlsを修正しました。その理由は、ThunderbirdとFireFoxのダウンロードサイトが最近変わって、どこにもバージョン番号が表示されなくなったからです。解決方法としては、ダウンロードサイトのソースに含まれている要素の中にdata-version=というものがあるので、そこからバージョン番号を取得するようにしました。

ツールの右端の列に「取得要素」を増やしました。それと同時にE2000Toolsも要素を取得する機能を追加したわけです。

Version_check2_2

前回の記事はこちら
「version_check2.xls」をダウンロード
E200Toolsはこちら

2011年4月30日 (土)

§PostgreSQL(テーブルが見つかりません、リレーションがありませんエラーについて)

PostgreSQLネタの続きです。
データベースが再構築できたと思い、Javaプログラムからアクセスしたところ、テーブルが見つかりませんというエラーが発生しました。pgAdminではきちんと構築されているように見えます。所有者権限も設定されています。
さらに、psql で\dを実行すると、「リレーションがありません」というエラーが表示されテーブルが表示されません。
リレーション?外部参照のことか?ネットで検索してもなかなか解決方法がわからず本当に挫折になりました。

いろいろ見ていると、psqlのリファレンスの”スキーマ”に、search_pathの初期値は$user, publicとなっているが、自分のスキーマにテーブルを構築している場合はset search_path = 自分のスキーマ, publicとしなさいという記述を見つけました。ひょっとするとこれかなと思い、set文を実行した後に\dを実行するときちんとテーブルが表示されませした。

つまり、デフォルトでは明示的にスキーマ名.テーブル名で検索する必要があるということですね。プログラムのSQL文はスキーマ名を省略して記述しているのでpublicスキーマを検索してテーブルが見つけられなかったということになります。

PostgreSQLが起動した時にsearch_pathの設定を有効にする方法がありました。
PostgreSQLインストールパス\data\postgesql.confの#search_path='"$user",public'を#を削除して、'"自分のschema","$user",public'に変更し、PostgreSQLを再起動すれば設定が有効になります。ただし、管理者ユーザで編集しないと変更が反映されないので注意が必要です。
これ以降、Javaプログラムからも正常にアクセスできるようになりました。
めでたしめでたし。

2011年4月29日 (金)

§PostgreSQL(データベースの再構築(移植)手順について)

久しぶりのPostgreSQLネタです。PostgreSQLで作成したデータベースを、pg_dumpで出力したバックアップファイルを使って別のPCに同じデータベースを再構築(移植)しようとしました。pg_dumpのリファレンスを読む限りCreate DatabaseなどすべてのDDL文が生成されると考えていたのですがそうでもなさそうです。生成されたバックアップファイルはどうも不十分なようです。それを踏まえて、再構築の手順を書いてみたいと思います。

話の前提として、AサーバのデータベースをBサーバに新規に構築するものとします。
OSはAサーバがXP、BサーバがWindows7です。Aが8.4.3、Bは9.0.3です。
(1)まずAサーバでpg_dump -U ユーザ名 -f バックアップファイル名 -C -n スキーマ名 データベース名を実行します。バックアップファイルはbk.sqlとします。
(2)最初に書きましたが(1)の命令では以下の部分が出力されません。その部分を実行するDDLを手で作成します。仮にcre_db.sqlとします。pgAdminⅢなどでDDL文がわかりますのでそれをコピペすれば良いでしょう。ただし、create database文はそのままコピーしてもエラーになるので単にcreate database データベース名 WITH TEMPLATE template0;で作成します。
  さらに、AサーバでProgram files\Postgresql\8.4\data配下にtablespaceを作成していた場合、Windows7(Bサーバ)のProgram files配下には作成できないなどの問題が発生する可能性があるので別のフォルダに作成するように記述することをおすすめします。(Windows7の権限強化の関係です)
 ・Create role user文 ・・・pgAdminⅢの「ログインロール」
 ・create database文・・・・create database データベース名 WITH TEMPLATE template0;
 ・create tablespace文・・・pgAdminⅢの「テーブル空間」
(3)Bサーバではまず、PostgreSQLをインストールし、環境変数Pathにインストール先のbinのパスを通しておきます。
(4)上記(2)のtablespace作成先フォルダが存在しない場合は作成しておきます。フォルダが存在しないままCreate tablespaceを実行するとエラーとなるからです。
(5)psql -U postgres -f cre_db.sqlでユーザ、データベース、テーブルスペースを構築します。
(6)psql -U postgres -d データベース名 -f bk.sqlで残りのテーブルやデータを構築します。データベース名を指定しないと、デフォルトのデータベースに作成されてしまうので注意が必要です。

いろいろ試行錯誤の末この手順に辿り着きました。皆様の参考になれば幸いです。

2011年4月23日 (土)

∇MS-Officeトラブル解決(サーバ上のOfficeファイルが表示できない)

Office2010の不具合ではないかいう事象が見つかりましたので書いてみたいと思います。
どういう事象かというと、Windows2008 Enterprise Serverに共有フォルダを作成して、サーバ上のOfficeファイルを直接開こうとしたところ、
(1)Excel/PowerPointは、「ファイルまたはフォルダが見つかりません」
(2)Wordは何もエラーは表示されず内容も表示さません
となってしまいました。サーバ上のファイルをローカルに持ってくると問題なく表示されます。この現象はOfficeファイルのみで発生し、テキストや画像ファイルはサーバ上で表示できます。
ネットで調べても解消法がありませんでした。ただ、ファイルが存在するにもかかわらずファイルが見つかりませんということは、サーバ上のパスが関係しているのではないかと感じました。

ひとつ思い当たるフシがありました。それは、サーバの共有名を設定した際に、実際のフォルダと共有名をわざと変えていました(例えば、フォルダ名:hoge、共有名:hogehoge)。ということでフォルダ名と共有名を同じにしたところ、なんと!解消されました。

共有名が実体のフォルダと異なるとファイルを探せなくなるとはバグとしか思えません。Office2003ファイルでも発生することから、MS-Officeの長年のバグということになるのではないでしょうか。日本マイクロソフト社は認識していないのかもしれません。

より以前の記事一覧