IT家・挑戦雑記

情報を制する者は世界を制す!

エクセルファイルをPDF化する際、
別シートを含めるPDF化がうまくいかないトラブルの解決方法

━━━━━━━━━━━━━━━━━━━━━━━━━
★状況
 ・エクセルデータを、別シートを含む(もしくはブック全体)PDF化
 ・シート毎にPDF化されてしまう

★環境
 ・WindowsXP SP3
 ・MS Excel 2003
 ・AISOFT pdMaker

★原因
 ・シート毎、ページ設定の印刷品質(dpi)が異なるため

★解決
 ・対象となるシートの印刷品質(dpi)を統一する
 ※この設定は、印刷がプリンタではなくPDFに設定されていて変更可能な項目

━━━━━━━━━━━━━━━━━━━━━━━━━
★状況
 ・Apacheサービスを起動すると以下エラーログ発生

 ◆エラー内容
 The Apache service named  reported the following error:
 >>> httpd.exe: Could not reliably determine the server's fully qualified domain name,
  using 192.168.0.2 for ServerName

 詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。

 ◆エラー内容(日本語訳)
 Apacheサービスは、次のエラーを報告名前:
 >>>のhttpd.exeは:確実にServerNameには192.168.0.2を使用して、
 サーバーの完全修飾ドメイン名を判断できませんでした

 詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。

 ---
 ※イベントログのアプリケーション(Windows2003R2)にて表示
 ※サービスは正常起動(syntax OK)

★環境
 ◆サーバーサイド
  ・OS:Windows2003 R2
   ・Apache:2.2系

★原因
 ・Apacheのconfに「ServerName」が記述されていない。
 ※「httpd.conf」およびvhostがある場合はvhostのconfにも「ServerName」記述が必要

★解決
 ・confファイルに「ServerName」を記述

 ---
 ※例
  ServerName localhost:80

PHPによる日付計算処理

9月-9-2010 By マサ

以下はPHPによる日付計算関数などを利用して算出しています。
とても便利です!
※ソースコードは後ほど掲載予定♪


★今日は今年の何日目??
 今日(2019/12/16)は今年(2019年)の1月1日から349日目です!


★今年もあと何日で終わり??
今年もあと16日で今年も終わります・・・

WordPressを利用していると
このページにアクセスするための十分なアクセス権がありません
と怒られてしまうケースがあります。

私の場合、システムログイン後にこのメッセージが出ました。

その状況や原因を以下にて解説します。

━━━━━━━━━━━━━━━━━━━━━━━━━
★状況
 ・テーブルのprefix名を変更

 DBテーブルとwp-config.phpのprefix名を変更した際、
 WordPressで管理画面にIDとパスワードを入力してログイン後、
 「このページにアクセスするための十分なアクセス権がありません」
 とうい警告メッセージが表示される。
 ※管理画面で操作不可
 ※ブログ閲覧は問題なし

★環境
 ◆サーバーサイド
  ・OS:CentOS 5.5
   ・PHP:5.3.3
    ・WordPress 3.01
   ・Apache:2.2.3
   ・MySQL:5.1.50-1

 ◆WordPressのテーブル一覧(全11テーブル)
  1: (prefix名)_commentmeta
  2: (prefix名)_comments
  3: (prefix名)_links
  4: (prefix名)_options
  5: (prefix名)_postmeta
  6: (prefix名)_posts
  7: (prefix名)_terms
  8: (prefix名)_term_relationships
  9: (prefix名)_term_taxonomy
  10: (prefix名)_usermeta
  11: (prefix名)_users
  ※(prefix名) ・・・ ユーザ指定のprefix名

★原因
 ・DBのテーブルprefixの変更が不十分

★解決
 テーブルprefix名を変更する際には、
  ・DBのテーブルprefix名を変更
  ・wp-config.phpのprefix名を変更
  ・以下の2テーブル内に存在するprefix名を変更
   1.(prefix名)_usermeta ・・・ フィールド:meta_key
   2.(prefix名)_options ・・・ フィールド:option_name

写真を管理できるCMS「Phormer
これをインストールしてみましたのでインストール方法を紹介します。


★配布サイト
 ・http://p.horm.org/er/
 ・最新バージョン:3.33 ※10.08.29現在

★環境
 ◆サーバーサイド
  ・OS:CentOS 5.5
   ・PHP:5.3.3
    ・GD extension
    ・ZIP extension
    ・EXIF extension
   ・Apache:2.2.3
  ※本システムはDBを使用しません。

★インストール方法

Installation Process - Google Chrome 20100829 170656

インストール先のパーミッションが正しくない場合、あるいは上記の3つのPHP extensionがない場合には警告がでますのでインストール・パーミッション設定を行います。
また、必要なディレクトリを作成し、そのパーミッションも設定します。

◆PHP extensionのインストール
  ・GD extension
  ・ZIP extension
  ・EXIF extension

◆ドキュメントルートのパーミッション設定
 chmod 707 ドキュメントルート

◆手動で「data」「images」「temp」のディレクトリ作成
 mkdir data images temp

◆作成したディレクトリのパーミッション変更
 chmod 707 data images temp

◆index.xmlのパーミッション変更
 chmod 606 index.xml

Installation Process - Google Chrome 20100829 211032

Adjust Preferences of My PhotoGallery - Google Chrome 20100829 212644

Administration Region of マサの写真館 - アナザー - Google Chrome 20100829 212655

サイト名等を設定します。
日本語名を使用する際には、ドキュメントルートに以下の.htaccessを設置します。

■.htaccess

<ifmodule mod_php5.c>
  AddDefaultCharset UTF-8
  AddType "text/html; charset=UTF-8" .html .php

  php_value default_charset UTF-8
  php_value mbstring.language neutral
  php_value mbstring.internal_encoding UTF-8
  php_flag  mbstring.encoding_translation On
  php_value mbstring.http_input auto
  php_value mbstring.http_output UTF-8
  php_flag mbstring.encoding_translation Off
  php_value mbstring.substitute_character none
</ifmodule>

マサの写真館 - アナザー - Google Chrome 20100829 215850

これで設置は完了です。

マイクロソフトの仮想化ソフトウェアには、有名なVirtual PCやVirtual Server、Hyper-V Server 2008などあります。
それぞれ、インストールする事によって、OSの中にOSを入れることが可能となります!

これを仮想マシン(バーチャルマシン)って呼んでます。
基本的な仮想マシンの説明:仮想マシン化を実現してくれる「Disk2vhd」

VirtualPCなどをインストールした後、仮想マシンのOSもインストールしなければならないですが、
実は、物理的なマシンをそのまま仮想マシンに変換することが可能なんです!

それがDisk2vhdです!

公式サイト

上記からDisk2vhdをダウンロードしてソフトを起動します。

OSの入っているHDDを選択し、さらにHAL情報とかをVirtualPCに合わせるためにPrepare for use in VirtualPCにチェックボックスを入れてCreateをクリック!

できあがったイメージを利用して仮想マシン向けHDDが完成します。

最近のWindows7には仮想HDDを扱う事が可能です。
ですので、仮想マシン作成以外にもDisk2vhdを利用機会はあるかと思います。

オススメです♪

★状況
 Windowsにおいて、netコマンドを利用してサービスを停止するバッチファイルを作成した。
 そのバッチファイルを実行すると、DOS窓が消えずに無限ループになってしまう。

★環境
 ・OS:Windows(winxp 及び win2003)
 ・バッチファイルのファイル名:net.bat

★原因
 ・バッチファイルのファイル名に問題有り!
  ※「net.bat」と書くと、ファイル名にあるnetコマンドを呼び出してしまう。

★解決
 ・バッチファイルの名前を変更する
  ※バッチファイル名にはバッチファイルのコマンドを使用しない事!

★バッチファイルの内容(net.bat)
━━━━━━━━━━━━━━━━━━━━━━━━━
rem ★IISのサービス(+依存関係のサービス)を停止させる!
rem /yは、依存関係のサービスもstopさせるオプション
net stop /y "IIS Admin Service"

━━━━━━━━━━━━━━━━━━━━━━━━━
★やりたい事
 Accessで、他のDBを参照してリンクテーブルを作成する。

★環境
 ・WindowsXP SP3
 ・Access2003

★リンクテーブルを作成するための関数
 ※以下のオレンジの太文字を環境に応じて変更して下さい。
 ◆備考
  ・リンクテーブルが存在しない場合はリンクテーブルを作成
  ・同名のリンクテーブルが存在する場合は上書き(処理は削除して新規作成)

━━━━━━━━━━━━━━━━━━━━━━━━━
Public Function mk_tbl_link()

  '★参照ライブラリ ・・・ 以下を参照しないと動作しません。
    '・Microsoft ADO Ext 2.8 DLL And Security

  '---------------------------------------------
  '★変数宣言
    Dim cat As New ADOX.Catalog
    Dim tbl() As New ADOX.Table
    Dim linkMDB As String
    Dim linkMDB_path As String
    Dim linkMDB_file As String
    Dim linkTblNames() As String
    Dim i As Integer
    Dim tblNames As Variant

    Dim itemNum As Integer
    'リンクするテーブル数を入力。ただし、配列だから0からスタートに注意!
    itemNum = 6

    ReDim tbl(itemNum) As New ADOX.Table
    ReDim linkTblNames(itemNum) As String

  '---------------------------------------------
  '★値のセット
    linkMDB_path = "D:リンク先のパス"
    linkMDB_file = "リンク先のMDB.mdb"
    linkMDB = linkMDB_path & linkMDB_file
    i = 0
    cat.ActiveConnection = CurrentProject.Connection

    'リンクするテーブル名をセット
    linkTblNames(0) = "リンクするテーブル名1"
    linkTblNames(1) = "リンクするテーブル名2"
    linkTblNames(2) = "リンクするテーブル名3"
    linkTblNames(3) = "リンクするテーブル名4"
    linkTblNames(4) = "リンクするテーブル名5"
    linkTblNames(5) = "リンクするテーブル名6"
    linkTblNames(6) = "リンクするテーブル名7"

  '---------------------------------------------
  '★メイン処理
    For Each tblNames In linkTblNames
    '■各種設定
      Set tbl(i).ParentCatalog = cat
      tbl(i).Properties("Jet OLEDB:Create Link") = True
      tbl(i).Properties("Jet OLEDB:Link Datasource") = linkMDB

      'パスワード ・・・ 参照先DBにパスワードがある場合はここを記入
      'tbl(i).Properties("Jet OLEDB:Link Provider String") = ";pwd=リンク先のMDBのパスワード"

      'リンクしたテーブル名
      tbl(i).Name = tblNames

      'ソーステーブル名
      tbl(i).Properties("Jet OLEDB:Remote Table Name") = tblNames

    '■リンクテーブル処理
      For Each TB In cat.Tables
        If TB.Name = tblNames Then
          'テーブル削除
          cat.Tables.Delete tbl(i).Name
          Exit For
        Else
          '
        End If
      Next TB

      'リンクテーブル作成
      cat.Tables.Append tbl(i)

      'インクリメント
      i = i + 1
    Next tblNames

  'オブジェクトの破棄
  Set cat = Nothing
  Set tbl(itemNum) = Nothing

  '終了メッセージ
  MsgBox ("リンクテーブルの作成/更新が完了しました")

End Function
━━━━━━━━━━━━━━━━━━━━━━━━━

★やりたい事
 Accessで、リンクテーブルの参照先をVBAを用いて変更する。

★環境
 ・WindowsXP SP3
 ・Access2003

★リンクテーブルを変更するための関数
 ※以下の赤の太文字を環境に応じて変更して下さい。

━━━━━━━━━━━━━━━━━━━━━━━━━
Public Function ch_tbl_link()

  '★参照ライブラリ ・・・ 以下を参照しないと動作しません。
    '・Microsoft DAO 3.6 Object Library

  '-------------------------------------------------------------------
  '★変数宣言
    Dim tdf As TableDef
    Dim dbs As Database

  '-------------------------------------------------------------------
  '★オブジェクトセット
    Set dbs = CurrentDb
    Set tdf = dbs.TableDefs("リンクテーブル名")

  '-------------------------------------------------------------------
  '★メイン処理

    'プロパティ値の変更
    With tdf
      .Connect = ";DATABASE=D:リンク先のMDB.mdb;TABLE=リンクテーブル名"
      .RefreshLink
    End With

    '終了メッセージ
    MsgBox "リンクテーブルの変更が完了しました。"

    'オブジェクトの破棄
    Set tdf = Nothing
    dbs.Close: Set dbs = Nothing

End Function
━━━━━━━━━━━━━━━━━━━━━━━━━

★状況
 WordPressで記事を投稿した際に、相手サイトにトラックバックができない。

★環境
 ◆サーバーサイド
  ・OS:CentOS 5.5
   ・PHP:5.3.2
    ・WordPress 3.0
   ・Apache:2.2.3

★原因
 ◆トラックバックの際のタイムアウト(時間制限)
  ・デフォルトでタイムアウトが0.01秒と短めに設定されている。
  ・重たいサーバーの場合、トラックバックに失敗する可能性が高くなる!

★解決
 ◆以下のphpを書き換える
  ■対象php
   /wp-includes/cron.php
  
  ■対象箇所
   「cron.php」の234行目付近
    ▲修正前
     wp_remote_post( $cron_url, array(‘timeout’ => 0.01, ‘blocking’ => false, ‘sslverify’ => apply_filters(‘https_local_ssl_verify’, true)) );
    
    ▲修正後
     wp_remote_post( $cron_url, array(‘timeout’ => 3, ‘blocking’ => false, ‘sslverify’ => apply_filters(‘https_local_ssl_verify’, true)) );
     ※本修正は0.01秒から3秒に修正。