インターネットの話」カテゴリーアーカイブ

NEC MultiWriter 5000Nを修理した Brotherと部品の互換

LAN接続のレーザープリンターNEC MultiWriter 5000Nが印刷時に汚れるようになりました。
最初は1度に大量(20枚程度)のプリントをする時だけの症状だったのですが、段々症状が重くなって1枚印刷しても汚れるようになりました。

トナーが古くなったので、汚れるようになったのかなと思ってトナーを交換したら、しばらくは調子が良かったのです。でもしばらくすると、また調子が悪くなりました。
リサイクルトナーだから、不良品だったのかなと思って、またトナーを交換したのですが、症状が改善しません。
トナーが原因で無いとすると次に考えられるのはドラムです。
でもドラムって10000円ほどするんです。リサイクル品もあるのですが評判は良くないんです。
もし10000円で購入して、他に原因があったりすると目も当てられません。

NEC MultiWriter 5000Nの互換トナーを購入すると、BROTHERのトナーが送られてくるので、BROTHERのレーザープリンター(HL-2170W、HL-2140、MFC-7840W、MFC-7340、DCP-7040、DCP-7030」や富士ゼロックスのレーザープリンター(DocuPrint 2020)と部品の互換性があるような感じです。それらは全部、BROTHERで製造しているようです。
それで、メルカリで互換性のある機種の純正ドラムが出品されてないかチェックしていたんですが、メジャーな機種では無いようで、なかなかそれらの機種のドラムが出品されません。

しばらく待っていると、BROTHERのHL-2170Wのジャンク品(紙詰まりするけど400枚程度の印刷)送料込み3000円というのを見つけ購入しました。不要な部分を捨てるのが面倒なので、トナーとドラムだけを送ってもらいました。

さっそくトナーとドラムを取り付けてみようと思ったのですが、NEC MultiWriter 5000Nに挿入できません。
見た感じ同じなんだけどなあ。

でも、よく見ると若干違ったところがあります。
他のメーカーのトナーとドラムを購入しないようにメーカー毎に、形状を若干変えているようです。
画像の下のNEC MultiWriter 5000N用のトナーの裏側には突起物は無いですが、画像の上のBROTHERのHL-2170W用のトナーの裏側には突起物があるのです。リサイクルのトナーはBROTHERのトナーだけど突起物は切ってありました。

ニッパとカッターとやすりで、リサイクルトナーと同様に、突起物を削ったらNEC MultiWriter 5000N用のドラムにも使えるようになりました。

NEC MultiWriter 5000N用のドラムと、BROTHERのHL-2170W用のドラムでは若干形状が違っていて、NEC MultiWriter 5000の蓋が閉じれなくなっていました。
画像の上のNEC MultiWriter 5000N用のドラムは、下の画像の矢印の位置で、蓋の突起物が収まるようになっていて、画像の下のBROTHERのHL-2170W用のドラムだと、その部分が空いていないので蓋の突起物にぶつかるのです。

こちらのほうもニッパーとカッターで画像の下のDR-21Jを画像の上のPR500D-31の矢印のように削りました。ちょっと汚なくなりましたが大丈夫です。

NEC MultiWriter 5000Nに実際に設置しましたが、汚れもなく綺麗にプリントできました。

完全に修理成功です。やったね。

トナーの予備が増えたので、当分トナーを購入しなくても使えます。



Bootstrapはホームページ制作に必須のツール

2019年5月13日

PHPの勉強で「金沢近郊の激安の中古住宅を紹介」という掲示板とデータベースを駆使したサイトを製作したのですが、その時に参考にしたプログラムでBootstrapというものに出会いました。

Bootstrapは、最も有名なWEBフレームワークだそうです。WEBページでよく使われるフォーム、ボタン、メニューなどの部品がcssのテンプレートとして用意されていてモバイル対応にも優れているそうです

Bootstrapの公式サイトからDownload Bootstrapをクリックしてダウンロードして、解凍したファイルをそのままサイトにアップロードします。
必要なファイルは限られているようですが、全部アップロードしたほうが安心です。

jQueryの公式サイトからダウンロードした最新の「jquery.min.js」をJSフォルダにアップロードします。今回の最新のものはjquery-3.4.1.min.jsでした。

これで準備ができます。
もし他のサイトを参考に、そのままソースファイルを使う場合は、Bootstrapのバージョンを合わした方が無難です。バージョンが違っていると正常に動作しない場合があります。

<head> と </head>の間に

<link rel=”stylesheet” href=”https://******.***/css/bootstrap.min.css”>
<link rel=”stylesheet” href=”https://******.***/css/bootstrap-theme.min.css”>
<meta name=”viewport” content=”width=device-width, initial-scale=1″>

を挿入します。アドレス(******.***)は自分がアップロードしたアドレスを記入します。

</body>のすぐ後に

<script src=”https://******.***/js/jquery-3.4.1.min.js”></script>
<script src=”https://******.***/js/bootstrap.min.js”></script>

を挿入します。jquery-3.4.1.min.jsはバージョンによって数字の部分が違っています。
bootstrap.min.jsとbootstrap.min.cssとbootstrap-theme.min.cssは同じバージョンのものを使う方が無難です。今回はバージョン3.3.7を使いました。
https://getbootstrap.com/docs/3.3/getting-started/

サイトを希望の幅にする場合は、<head>と </head>の間に、

<STYLE>
<!–
@media (min-width: 800px) {
.container {
max-width: 800px;
}
}
–>
</STYLE>

を挿入します。

今回は、参考にしたプログラムを修正するだけにBootstrapを調べてみたのですが、いろんなケースで利用できそうなので、もうちょっと踏み込んで使ってみようと思います。

とりあえず、今年作ったシルバーエイジの金沢での生活情報をBootstrapを使って作り変えています。

参考になるサイトは

https://techacademy.jp/magazine/6270
http://proengineer.internous.co.jp/content/columnfeature/12468
http://websae.net/twitter-bootstrap-grid-system-21060224/
https://www.sejuku.net/blog/75031
https://getbootstrap.com/docs/3.4/css/
https://qiita.com/akatsuki174/items/53b7367b04ed0b066bbf

サイドデーブルでメニューなどを入れている場合は下記のようにすると、スマートフォン環境でメニューが下に表示するようになります。

<div class=”container”>
<div class=”row”>
<div class=”col-sm-9 col-xs-12″>
メインの部分を挿入
</div>
<div class=”col-sm-3 col-xs-12″>
メニューの部分を挿入
</div>
</div><!– /row –>
</div><!– /container –>

Bootstrapでサイドバーでメニューを入れる場合、左側にメニューを入れる場合、スマートフォンではメニュー部分は本文より先に表示されて、右側にメニューを入れる場合、スマートフォンではメニュー部分は本文より後に表示されるように決まっているいるようです。

tableの罫線に色をつけるときに
<TABLE  bgcolor=”#fbe48c” >と<TD bgcolor=”#ffffff”>の組み合わせを多用しているのですが、機能しなくなりました。
機能しなくなった原因が分からないのですが、<head>と</head>との間に

<STYLE>
<!–
.line { border-style: solid;
border-color:#fbe48c;}
–>
</style>

を挿入し

<TABLE cellspacing=”1″ bgcolor=”#fbe48c” border=”1″ class=”line”>

で対応することにしました。Bootstrapでは罫線が見えなくなることが多いようです。

スマートフォンでは表示させない部分を設定する場合は下記のページを参考にしました。
http://studio-key.com/Bootstrap/glidDecoration03.html

<div class=”hidden-xs”>
スマートフォン環境で消したい部分を挿入
</div><!– / hidden-xs–>

Bootstrapは便利だけど出来る事は限られていて万能ではないです。特にサイドバーの設置については、出来ることは少ないです。基本的にはサイドバー無しのページを作る場合の便利なツールといえます。
でも利用する価値はあると思います。

メルカリで「Bootstrapファーストガイド : CSS設計の手間を大幅に削減!」を800円で購入しました。

2019年5月15日

シルバーエイジの金沢での生活情報をBootstrapを使って作り変えました。
すっきりとしたページになりました。

2019年5月16日

「Bootstrapファーストガイド : CSS設計の手間を大幅に削減!」は沖縄からの出品だったので、届くのが遅くなると思っていたのですが、意外と早く着きました。

さっと内容を見ると、画像のサイズを自動調整したり、画像の上に文字を入れたり、画像を丸く切り取ったり、表示する画像を入れ替えたり、いろいろ出来るようです。

2019年5月17日

「Bootstrapファーストガイド : CSS設計の手間を大幅に削減!」を読んで、今まで理解できなかった基本的なことが、やっと理解できるようになりました。
やっぱり、ネットだけではなく、ちゃんとしたテキストも必要だと実感しました。

それにしても、読めば読むほどBootstrapは便利です。スマートフォン対応には必須のツールだと思います。今までスタイルシートは避けてきたのですが、スタイルシートの詳しい知識が無くてもプロのようなページが作れます。
特に、一番上に設置するメニューの種類は豊富ですし、テーブルを多用したページをスマートフォン対応にするには最高のツールだと思います。

不動産のページのBootstrapを使った部分を自分好みに変更しようと思います。

2019年5月18日

Bootstrapでラインや背景の色を変更するには<head>と</head>との間に

.form-custom {
background-color: #fef3e2;
color:#fff;
border-radius:0;
border-color: #fbe48c;
}

を挿入して、class=”form-control” のところに class=”form-control form-custom” のようにform-customを挿入します。form-customは任意の名前で良いです。
border-radius:0; は角丸の設定です。

パーツを任意の幅で中央に表示するには、例えば幅を全体の半分にするには
<div class=”col-sm-6 col-sm-offset-3″ >
幅を全体の3分の2にするには
<div class=”col-sm-8 col-sm-offset-2″ >
です。



coreserverがスパム攻撃にあってダウン

今日、午後からサイトの動作が遅くて、どうしたのかなあと思っていたのですが、夕方にメールが届いていました。

「平素は、バリュードメイン、コアサーバーをご利用いただき、誠にありがとうございます。
本日、ご利用のコアサーバーにおきまして、外部からのDDoS攻撃が発生しておりました為、
暫定的にサーバーのIPアドレスを変更いたしました。

つきましては、下記をご覧の上、DNS設定を変更いただきますようお願いいたします。

○日時:

2019/05/10(金) 15:50 ~

○対象:

s197.coreserver.jp

○作業内容:

サーバー IPアドレス一時変更

変更前IP:202.172.28.198
変更後IP:202.172.28.233

○ご対応依頼:

お客様には「変更後IP」のDNSへ一時的なご変更をお願いいたします。
但し、TTLの設定等により15-30分程度要する場合がございます。

※ns**.value-domain.comをご利用の場合は、自動的に変更いたしますので、
作業は必要ございません。
他社ネームサーバーをご利用のお客様は、誠に恐れ入りますが、上記のIPへ
手動にてご変更くださいますようよろしくお願いいたします。

設定の変更について、ご不明の場合はカスタマーサポートまで、お問い合わせください」

要は大量データが送られるDDoS攻撃が発生し、断続的にサーバーの処理に影響したのでサーバー IPアドレスを変更したって事です。

それにしても、「お客様には変更後IPのDNSへ一時的なご変更をお願いいたします。」の1行だけでの説明だけとは、XREAの不親切には呆れます。

「VALUE-DOMAINのコンパネ—マイページ—ドメイン—DNSレコード/URL転送の設定—該当のドメインを選択—DSN情報変更—ターゲットのIPアドレスを変更」
の2行の説明を加えるだけで、随分わかりやすいと思うんだけど。



XREAやCORESERVERAの制限について

PHPやMySQLを使うようになって、現在使っているサーバーCORESERVERについて、仕様による制限によって不便に感じることが多くなって、いろいろ問い合わせをしてみました。

PHPのプログラムについては、不可の大小に関われず、処理時間が長い場合は強制終了されるようです。
実際には待っているという処理でも、時間が長いと強制終了されるそうです。
なお、その時間は、サーバーの負荷状況によりまして、強制終了となる継続時間に差があるそうです。

毎日、この時間にPHPのプログラムを実行したいという場合にcronという機能が、XREAやCORESERVERAにもあるのですが、1時間に1つしか使えないそうです。つまり1つのPHPのプログラムをcron設定すると、次にcronで動作するPHPのプログラムは1時間以上間隔をあけないとダメということです。

質問の回答に「PHP同時起動数の超過等により、サーバー自体の制限としてプロセスが強制終了となる可能性がある」との事だったのですが、具体的な目安を問い合わせしました。
「サイト設定」<「アクセス統計」で1,000pt前後が限界という事でした。
調べてみたら、該当のページにはいろいろな情報が掲載されていました。
2日間の情報しか掲載されていませんでしたが、使っているサーバーのパソコンにおいて、アカウントの負荷率は1日100pt以下で、そのパソコンでは50番目程度でした。たいした負荷はかけていないようです。
ただ、ドメイン毎の転送量は1日に800~900Mバイトで5番目、ドメイン毎のリクエスト数は1日で60000回程度で3番目、ドメイン毎のユニークホスト数は1日で3000件以上あってトップでした。
ユニークホスト数(アクセスカウンター)はweb上でも検出していますが、1日1500程度の検出なので、半分程度でしか検出できていないようです。
同時にアクセスがあった場合は1個分しか検出できていないのだと思います。



Swiperを設置したホームページを作ってみる

2019年4月9日

PHPで検索表示できるページとして激安の中古戸建てのページを試作してみたのですが、一覧表示のページからリンクされた詳細ページにおいて、Swiperを使って複数の画像を手動で入れ替えるようにしようと思っています。

ページによって画像の数が違うので、Swiperを使ったほうが、すっきりしたページになるんです。
せっかくなので、PHPでMySQLからデータを読み込むようにしようと思います。

とりあえず、HTMLでSwiperを使えるようにします。
https://github.com/nolimits4web/swiper/releases
から、swper(今回は swiper-4.4.6.zip)をダウンロードします。
ダウンロードしたswiper-2.7.6.zipを解凍して、swiper.min.cssとswiper.min.jsを取り出しまて、自分のサイトにアップロードします。
<HEAD></HEAD>の間に
<link rel=”stylesheet” href=”アップロードしたフォルダ/swiper.min.css”>
<BODY></BODY>の間の</BODY>の直前に
<script src=”アップロードしたフォルダ/swiper.min.js”>
</script>
を記載します。この部分がちょっと判りにくかったのでメモしておきます。

とりあえずアップロードしたswiper.min.jsとswiper.mini.cssは使わないで、
https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.3.3/css/swiper.min.css
https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.3.3/js/swiper.min.js
にリンクして動作させることにしました。

ここまで準備出来たら、後は https://garigaricode.com/swiper/ を参考に
Swiperのオプション設定(Javascript)の内容を
<script src=”アップロードしたフォルダ/swiper.min.js”>の下に
<script>    </script>に囲んで記入します。
この位置関係が重要です。
俊は

<script>
var mySwiper = new Swiper(‘.swiper-container’, {
loop: true,
navigation: {
nextEl: ‘.swiper-button-next’,
prevEl: ‘.swiper-button-prev’
},
pagination: {
el: ‘.swiper-pagination’,
type: ‘bullets’,
clickable: true
}
});
</script>

を選びました。

HTML内には表示したい場所に

<!– Swiper START –>
<div class=”swiper-container”>
<!– メイン表示部分 –>
<div class=”swiper-wrapper”>
<!– 各スライド –>
<div class=”swiper-slide”>Slide 1</div>
<div class=”swiper-slide”>Slide 2</div>
<div class=”swiper-slide”>Slide 3</div>
<div class=”swiper-slide”>Slide 4</div>
</div>
<div class=”swiper-button-prev”></div>
<div class=”swiper-button-next”></div>
<div class=”swiper-pagination”></div>
</div>
<!– Swiper END –>

を記入します。
<div class=”swiper-slide”>Slide 1</div>
のSlide 1部分は各自で表示したいものに変更します。
画像の場合は
<div class=”swiper-slide”><IMG src=”abare2.jpg” border=”0″></div>
みたいな感じです。

<div class=”swiper-button-prev”></div>
<div class=”swiper-button-next”></div>
は次のページ、前のページに移動するためのボタンで
<div class=”swiper-pagination”></div>
は何ページ目かを表示するためのものです。

2019年4月13日

実際に、動作させてみたのですが、自分のサイトのファイルでも無事動作しました。

https://kimassi.net/hudousan/1/kodate1.php

PHPで工夫が必要なのは、<div class=”swiper-slide”>Slide 1</div>で画像の登録数を確認し登録数に従って記述の数を調整すところかなと思います。
IF文でデータが無ければ、<!– メイン表示部分 –>の処理を止めるという処理でうまくいけば楽なんですけど。
最終的にはカラムにデータがあれば表示するという処理を、10回繰り返す方法を採用しました。

<!DOCTYPE html>
<html lang=”ja”>
<head>
<META name=”keywords” content=”金沢市,石川県,不動産,戸建て,中古”>
<META name=”description”content=”金沢の激安の中古住宅を紹介しています。”>
<META charset=”UTF-8″>
<STYLE>
<!–
.gyou{
line-height: 18pt ;
}
–>
</STYLE>
<STYLE>
<!–
body, th, td{
font-size: 95%;

// 600px以降から、100pxごとに1px大きくなる
@media (min-width: 600px) {
font-size: calc(112.5% + 4 * (100vw – 600px) / 400)
}

// 1,000px以上は、22pxに
@media (min-width: 1000px) {
font-size: calc(137.5%)
}
}

–>
</STYLE>
<STYLE>
<!–

@media(min-width: 600px){p.resizeimage3{
margin-top: 0px;margin-bottom: 0px;width: 720px;
}
}
p.resizeimage3 img{
width: 100%;
}

body,html{
max-width:800px;
margin-right: auto;
margin-left : auto;
}

–>
</style>

<link rel=”stylesheet” href=”https://kimassi.net/hudousan/swiper.min.css”>

<meta name=”viewport” content=”width=device-width,initial-scale=1″>
<TITLE>物件1  :金沢観光情報 【 きまっし金沢 】</TITLE>
</HEAD>
<BODY bgcolor=”#ffffff”>
<CENTER>
<TABLE>
<TBODY>
<TR>
<TD><A href=”https://kimassi.net/” target=”_top”><IMG src=”https://kimassi.net/kimassitoplogo.gif” alt=”金沢観光情報 【 きまっし金沢 】” width=”120″ border=”0″></A></TD>
<TD align=”left” valign=”middle”><H1 style=”font-size:18px; margin:0px;”><FONT color=”#cc0000″>物件1    </FONT></h1></TD>
</TR>
</TBODY>
</TABLE>
<BR>
</center>
<CENTER>
<TABLE class=”gyou”>
<TBODY>
<TR>
<TD ><FONT color=”#000000″>金沢近郊の激安(500万円以下)の中古の戸建てです。<BR>画像の横の矢印をクリックすると他の画像が見れます。</FONT><BR></TD>
</TR>
</TBODY>
</TABLE>

<?php
try {
$dsn=’mysql:host=127.0.0.1;dbname=kimassi_kodate’;
$db = new PDO($dsn, ‘kimassi_kodate’, ‘********’);
} catch (PDOException $e) {
echo ‘DB接続エラー: ‘ . $e->getMessage();
}
?>

<?php
$where=”no=1″;
?>

<BR>

</CENTER>

<CENTER>

<!– Swiper START –>
<div class=”swiper-container”>
<!– メイン表示部分 –>
<div class=”swiper-wrapper”>

<?php
$stmt = $db->query(”
SELECT *
FROM gekiyasukodate
WHERE $where
“);
$result = $stmt->fetch();

$price=number_format($result[‘kakaku’]);
if (empty($result[‘gazou2’])==false){
//<!– 各スライド –>;
echo “<div class=\”swiper-slide\”><p class=\”resizeimage3\”><IMG src=\””.$result[‘gazou2’].”\” border=\”0\”></P></div>\n”;}
if (empty($result[‘gazou3’])==false){
echo “<div class=\”swiper-slide\”><p class=\”resizeimage3\”><IMG src=\””.$result[‘gazou3’].”\” border=\”0\”></P></div>\n”;}
if (empty($result[‘gazou4’])==false){
echo “<div class=\”swiper-slide\”><p class=\”resizeimage3\”><IMG src=\””.$result[‘gazou4’].”\” border=\”0\”></P></div>\n”;}
if (empty($result[‘gazou5’])==false){
echo “<div class=\”swiper-slide\”><p class=\”resizeimage3\”><IMG src=\””.$result[‘gazou5’].”\” border=\”0\”></P></div>\n”;}
if (empty($result[‘gazou6’])==false){
echo “<div class=\”swiper-slide\”><p class=\”resizeimage3\”><IMG src=\””.$result[‘gazou6’].”\” border=\”0\”></P></div>\n”;}
if (empty($result[‘gazou7’])==false){
echo “<div class=\”swiper-slide\”><p class=\”resizeimage3\”><IMG src=\””.$result[‘gazou7’].”\” border=\”0\”></P></div>\n”;}
if (empty($result[‘gazou8’])==false){
echo “<div class=\”swiper-slide\”><p class=\”resizeimage3\”><IMG src=\””.$result[‘gazou8’].”\” border=\”0\”></P></div>\n”;}
if (empty($result[‘gazou9’])==false){
echo “<div class=\”swiper-slide\”><p class=\”resizeimage3\”><IMG src=\””.$result[‘gazou9’].”\” border=\”0\”></P></div>\n”;}
if (empty($result[‘gazou10’])==false){
echo “<div class=\”swiper-slide\”><p class=\”resizeimage3\”><IMG src=\””.$result[‘gazou10’].”\” border=\”0\”></P></div>\n”;}
?>
</div>
<div class=”swiper-button-prev”></div>
<div class=”swiper-button-next”></div>
<div class=”swiper-pagination”></div>
</div>
<!– Swiper END –>

<?php

echo “<table bgcolor=\”#fbe48c\”>\n”;

echo “<tr>\n”;
echo “<td bgcolor=\”#ffffff\” class=\”gyou2\” valign=\”top\”><span style=\”color: #ff0000;\”><strong>価格 $price 円</strong></span><BR>{$result[‘tiiki’]}{$result[‘tyoumei’]}
<A href=\”{$result[‘map’]}\” target=\”_blank\”>地図を見る</a> <BR>
土地面積 {$result[‘totimenseki’]}㎡ 建物面積 {$result[‘tatemonomenseki’]}㎡ <BR>築年数 {$result[‘tikunensuu’]}年  間取 {$result[‘madori’]}
駐車 {$result[‘tyuusya’]}<BR>
セットバック {$result[‘setback’]}   再建築の可否 {$result[‘saikentiku’]}<BR>
<span style=\”color: #ff0000;\”>{$result[‘bikou1’]}<BR>
{$result[‘bikou2’]}</span> <BR>
媒介種別 {$result[‘sennin’]}  登録日 {$result[‘date’]}</td>\n”;
echo “</tr>\n”;
echo “</table>\n”;

?>
</center>
<script src=”https://kimassi.net/hudousan/swiper.min.js”>
</script>
<script>
var mySwiper = new Swiper(‘.swiper-container’, {
loop: true,
navigation: {
nextEl: ‘.swiper-button-next’,
prevEl: ‘.swiper-button-prev’
},
pagination: {
el: ‘.swiper-pagination’,
type: ‘bullets’,
clickable: true
}
});
</script>

</BODY>
</HTML>

後は掲示板を設置と入会登録(さすがに高額な住宅を掲載するのに登録なしというのは具合悪い)のファイルは必要かな?
掲示板の投稿があった時に投稿者にもメールするようなシステムが良いかなと思います。