メニュー
プロフィール
最近の記事
カテゴリ分類
記事一覧
FOR ENGINEERS

Redhat Enterprise Linux 7.0のサーバーを導入した。

主に大容量のファイルを保管するためのストレージ・サーバーが目的で、いつも通りにSAMBAを使ってWindowsとファイル共有する。

しかし、SAMBAの共有フォルダをWindowsのエクスプローラから参照する時に、
「\\192.168.0.1」
のようにアクセスすると表示がとても遅く、5~10秒程度かかる。

↓いろいろ調べた結果

①あるWindows7(A)端末・・・Windows 7 Professional SP1(32bit)
Windows側の「Remote Registory」サービスを開始するとスムーズにアクセスできるようになった。
しかし他のWindows 7端末では相変わらず遅い。
参考:Windowsファイル共有でリソースの一覧が遅い

②あるWindows7(B)端末・・・(A)と同じ
「Remote Registory」サービスを開始しても遅い。
ログインしているユーザーでレジストリを操作する事ができないため・・・?
(A)と(B)は、IPアドレスのセグメントも同じ、もちろんtracertの結果も同じ。
さらに調べた結果
「net use \\192.168.0.1\IPC$」を実行し
事前にリソースにアクセスしておけばよいとわかった。
参考:WindowsからSambaに繋ごうと思ったらクソハマった話
さらに、クライアントのWindows側で自動切断しないようにレジストリを編集する必要がある。
「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters\autodisconnect」
またはコマンドプロンプトで
net config server /autodisconnect:-1
のようにする


| IT-ソフトウェア関連::Linux | 08:58 AM | comments (0) | trackback (x) |
Windows 2016 Server Standardに PostgreSQL Server 10.4.1(x64)をインストールした。

Windowsのサーバー内でDBをメンテナンスしようと思ってPgAdmin4を使おうと思ったら、IEが立ち上がって、以下のエラーが発生した。

Unauthorized

The server could not verify that you are authorized to access the URL requested. You either supplied the wrong credentials (e.g. a bad password), or your browser doesn't understand how to supply the credentials required.」

回避策を探したけど簡単に見つからず、以下を参照して解決できた。
EC2のWindowsのIEから信頼済みサイト以外にアクセスする方法

| IT-ソフトウェア関連::PostgreSQL | 01:58 PM | comments (0) | trackback (x) |
MACファイル名のNFC変換
WindowsとMacをファイルサーバーを経由してファイル共有していると、
Mac側で使ったファイルのファイル名のコード体系がMAC-UTF-8に変わってしまった。

具体的には「文字化け」ではないが、「ファイル名の濁点・半濁点が1文字になる」という感じ。
例えば「サーバー」というファイル名の場合、Windowsでは通常は4文字だが、MACを使ったら「バ」が「ハ+゛」のようになってしまう。
見た目は「バ」だが、Windows側で「BackSpaceキー」を使ってファイル名を後ろから修正しようとすると
「バ」-(BackSpace)⇒「ハ」-(BackSpace)⇒「」
のようになって2回DELを押さないと文字が消えない状態。

一番の問題は、このファイルを含んでいるフォルダ配下を一括圧縮しようとした時に、「フォルダ全体が圧縮できない」となってしまう点。
「unzip.dll」の仕様でしょうか。

そのため、ファイルが1個や2個なら都度ファイル名を変換すればよいが、フォルダが深い階層になっていて、しかも大量のファイル名でコードが変わってしまっているため、1個づつ濁点・半濁点を含んでいるファイルやフォルダを探して、手作業でファイル名をリネームするのは現実的でない!

サイトをいろいろ確認してPHPで一括変換する方法がよさげなので、以下のように一括変換することにした。

参考
PHPで UTF-8-MAC?
hiroy/PHPでのUTF-8-MAC対応例
Mac OS X ファイル名の濁点を変換 (PHP)


まずはPHPを使えるようにする。

てっとり早いのはCENTOSなどをインストールする時にPHPを使えるようにする。
またはWindowsでPHPをインストールし、コマンドラインから使えるようにする。

Linuxの場合は以下のような手順になる。

コマンドラインでphpを使える状態になっている事を確認する。
root$ which php
/usr/bin/php


PHPでI18N_UnicodeNormalizerを使えるようにするため、以下のようにpearを実行してインストールする。
root$ pear install I18N_UnicodeNormalizer
downloading I18N_UnicodeNormalizer-1.0.0.tgz ...
Starting to download I18N_UnicodeNormalizer-1.0.0.tgz (2,265,011 bytes)
.....done: 2,265,011 bytes
install ok: channel://pear.php.net/I18N_UnicodeNormalizer-1.0.0


phpにmbstringがインストールされていなければインストールする
root$ yum install php-mbstring


次のようなスクリプトを作って実行する。
<?php

include("I18N/UnicodeNormalizer.php");

function mac_conv($dir) {
if (!is_dir($dir)) return false;
try {
if ($dh = opendir($dir)) {
$normalizer = new I18N_UnicodeNormalizer();
$dirs = array ();
while (($file = readdir($dh)) !== false) {
if ($file == "." || $file == "..") continue;
$fn = $dir."/".$file;
if (is_dir($fn)) {
echo "[D]".$fn."\n";
$dirs[] = $fn;
} else {
$nfc_iconv = $normalizer->normalize($file, 'NFC');
if ($nfc_iconv != $file) {
rename($dir."/".$file, $dir."/".$nfc_iconv);
echo " ".$fn."->[".$file."]\n";
} else {
echo " ".$fn."\n";
}
}
}
closedir($dh);
foreach ($dirs as $d) {
mac_conv($d);
$nfc_iconv = $normalizer->normalize($d, 'NFC');
if ($nfc_iconv != $d)
rename($d, $nfc_iconv);
}
}
} catch (Exception $e) {
die($e->getMessage());
}
}

$dir = "/target/parent/dir/";
//↑ このパス配下のサブディレクトリを再帰的にファイル名をNFC変換する

if (is_dir($dir))
mac_conv($dir);

?>

スクリプトを実行する。
any$ php conv.php

このスクリプトの場合「/target/parent/dir」の配下に格納しているフォルダを再帰的に検索し、ファイル名・フォルダ名の文字コードをNFC変換してリネームする。


| ネット関連::PHP | 11:50 AM | comments (0) | trackback (x) |
【PHP】エラー
気が付いたらこのサイトのトップページで以下のエラーが発生していた。
「Warning: Unknown: Unable to allocate memory for pool. in Unknown on line 0」


PHPの「Unable to allocate memory for pool.」というエラーの対処法
参考にして、/etc/php.d/acp.iniの設定を編集する。
apc.shm_size=64M

apc.shm_size=128M


apacheを再起動して解消した。
service httpd restart


| ネット関連::PHP | 12:07 PM | comments (0) | trackback (x) |
Pro*Cで開発しているとき、エラーが発生した。
ORA-01791:SELECT式が無効です。

SELECT DISTINCT ....
のように「DISTINCT句」を使うとNGらしい。
SELECT ...
のようにDISTINCT以外は同じSQLはエラーが発生しない。

試してみた結果、ORDER BYに含まれているカラムがSELECTしているカラムに含まれない時の問題だった。

つまり、DISTINCTを使わない場合は、
SELECT a, b FROM ... ORDER BY c ・・・OK
のようにカラム「c」をSELECTせずに「ORDER BY」指定する事はOK。
でもDISTINCTを使うとNGらしい。
SELECT DISTINCT a, b FROM ... ORDER BY c ・・・NG

Oracleを10年以上使っていたけど、今頃になって知った。

| IT-ソフトウェア関連::Oracle | 03:16 PM | comments (0) | trackback (x) |
PAGE TOP ↑