ラベル

Server (108) work (77) Idea (68) Car (31) PC (29) DAW (28) other (19) MakingWEBsite (18) 趣味 (18) health (13) CentOS (11) drupal (11) (9) android (4) スマホ (4) communication (3) drupal7 (3) hint (3) meno (3) モバイル (3) 歯医者 (3) 第二種電気工事士 (3) 英語 (3) PC Server (2) drupal8 (2) ms access (2) uwp C# (2) めし (2) 整備 (2) 音楽 (2) MIDI (1) diy (1) 会計 (1) 動画再生 (1) 生活 (1) 郵便 (1) 食べ物 (1)

2014年12月28日日曜日

PC モニタ dell Eizo FlexScanL567

ノートパソコンとか、ディスクトップPCとか、それぞれのPCがマルチモニターになると、何かと便利なので、あっちこっち繋ぐために

パソコン側 DVI-D(オス)
モニター側 DisplayPort(メス、モニターからきているオスのDisplayPortケーブルに繋ぐ。)

で繋ぎたい状況があったのだけど、変換アダプタが知られているメーカーから出てない。
ちゃんと使えればいいのだけど、しっかりと動くものはなさそう。

マザーボード側でDisplayPortがついていればよかったのだけど。
素直にDVI-DでPCとモニターを繋ぐことにする。


U2412M 24インチワイドモニタ
モニタサイズ:24インチ 
モニタタイプ:ワイド 
解像度(規格):WUXGA 
ピッチ 0.27
入力端子:D-Subx1/DVIx1/DisplayPortx1
20800円送料込み

FlexScan:L567
ピッチ0.264
1280x1024

Windows8 のダウンロード版 Windows8.1のダウンロード インストール直後の設定

自分、2013年1月にWindows8 Pro(アップデート用)のダウンロード版を3300円で買った。
そのWindows8のダウンロードがうまくいかなかった。

一応、解決した。
まず、先に結論から

自分のような人はWindows8のインストールはできないということで、
8.1をインストールするようにMSの相談センターの人から言われた。

http://windows.microsoft.com/ja-jp/windows/downloads

ここからWindows8.1Proをダウンロードして、DVDに焼き、Windows8Proのプロダクトキーを使って8.1Proをインストールする。


それがわかるまでの経緯。

Windows8がでた当時、マイクロソフトの乗り換えキャンペーンで安かったのでWindows8へのアップグレードライセンスを2ライセンス分買ったのだけど、何となく面倒で、今までインストールせずにきてしまった。
最近、Windows8ではなくては使えないソフトなどがあり、そうなると、8を入れてみようかなぁ。ということになったのだが、

Windows8-Setup.exeを使って、ダウンロード、インストールができない。
うん?

https://www.mswos.com/

ここから入ってダウンロードし直す。
が、やってみたけどうまくいかない。
その他、ネット上にあるいろいろな方法をやったけど、うまくいかなかった。

で、MSのサポートへ電話した。

そしたら、Windows8.1をダウンロードできるから、そこからダウンロードして、DVDに焼き、Windows8のプロダクトキーを使ってインストールしてください。
といわれた。
そのサイトは
http://windows.microsoft.com/ja-jp/windows/downloads
以前は8.1をダウンロードできるサイトはなかった。と思うのだが・・・。


インストール後の設定
自動サインイン(これをしないと起ち上げ時にパスワードの入力が必要になる。)[Windows]+[r]キーか、[Windows]+[x]キー
[ファイル名を指定して実行]
netplwizか、control userpasswords2を入力。
ユーザーがこのコンピューターを使うには、ユーザー名とパスワードの入力が必要」のチェックを外す。
自動サインイン、にユーザー名とパスワードを入れる。


自動でロックをしない設定(ロックをしてしまうと、解除するのにパスワードを入れる必要があるから、それが面倒なので)。
[ファイル名を指定して実行]

gpedit.msc
と入力。
コンピューターの構成]-[管理用テンプレート]-[コントロール パネル]-[個人設定]を選択し、右ペインで[ロック画面を表示しない]をダブルクリックして開く。
ここで[有効]を選択する。

スリープから復帰するときにパスワードの入力を省略する。
[Windows]+[x]キー
の後、「電源オプション」
「スリープ解除時のパスワード保護」
「現在利用可能ではない設定を変更」
「パスワードを必要としない」
「変更の保存」

2014年12月27日土曜日

MS ACCESS EXEL VBA ActiveXコントロール関係がうまく動かなくなる

船積みの書類をエクセルで提出するように言われている乙仲がある。
そのエクセルの型は乙仲から提供されている。

で、アクセスのデータをVBAを使ってそのエクセルへ流し込んでいたのだが・・・。

今までは普通に使えていたのに、今日はアクセスのVBAからエクセルのチェックボックスにチェックをつけるところでエラーが出てしまう。

エラーが出るエクセルを単体で立ち上げて、そのチェックボックスを普通にクリックでチェックしようとしてもチェックが入らなくなっている。

どうしたんだ?
どうせまた、セキュリティ関係の問題なのだろう・・・。

と思って調べていると、同じような問題が起きている人がいた。

「Windowsの2014/12/10の更新プログラムをインストールした後、ActiveXコントロール関係がうまく動かなくなる。」
http://oshiete.goo.ne.jp/qa/8854280.html

それによると、解決方法は
「Cドライブ内を「*.exd」で検索し、検出されたファイルをすべて削除します。」
だけ。
.exdはtempフォルダ内にあるもので、消しても影響ないらしい。
自分の場合、検索をかけたら
MSForms.exd
が1つだけ見つかった。
削除するのも怖いので
MSForms.exd.bak
としておいた。

それをやると、全てが解決。
また新たに
MSForms.exd
が作成されていたがちゃんと動いている。
解決方法提供者に感謝、感謝。
良かった。

-------------------------------------------------------------
VBAをいじるのは久しぶり、Excel 2013でいじるのは初めて。以前は2003を使っていた。
Excel 2013で今回、知ったこと。

「開発」タブを表示させていろいろといじる。
「開発タブ」はディフォルトで非表示になっている。

デザインモードは開発タブ以下にある。

いろいろなコントロールは「開発タブ」>「挿入」から選ぶ。
「フォームコントロール」、「ActiveX コントロール」と2種類あり、VBA関係でコントロールするときはActiveXの方を使う。
------------------------------------------------------------



2014年12月6日土曜日

rakuten 楽天 Edy

楽天Edyリーダー USB型を買った。
RC-S360/S

Windows7
USBに刺すとドライバが自動でインストールされる。

それだけでは、Edyの残高確認をすることはできないみたいだ。
FeliCaランチャーが必要らしい。
これは自動でインストールされなかったので、検索かけて
ソニーのページ
http://www.sony.co.jp/Products/felica/consumer/download/felicalauncher.html
からインストールした。
--------------------------------------
インストールが終われば
USBをPCに挿してその上にEdyカードをかざせば立ち上げられるソフトの一覧が自動で立ち上がる。
Edyカードの残高確認、履歴、チャージなどをしたいときは
Edy Viewer
を立ち上げる。

---------------------------------------
ネットからEdyリーダーを使って支払いをするときは
Internet Explorerからのみ支払い可能。
ChromeとMS Edgeから支払いをしようとしたけどエラーが出てしまった。(2017/08/07)

WLtoys RCヘリ V911-2 ジャイロ搭載 4CH 2.4GHz ラジコンヘリコプター フルセット

もらった。

フルセットで5000円くらい。
あとは送信機の電池を買えばすぐに飛ばせる。

メインローターは固定、自分のはモード1だった。
モード2もあるらしい。

完成品で、トリムの調整だけで結構ちゃんと飛ぶ。
父親も始めた。
ぶつけても落としても壊れない。

すげー。
こうなると可変ピッチの安くて壊れない電動ヘリが欲しくなった。
(持っているけど、かなり前に買ったやつで、まだ飛ばしていない。)


2014年12月3日水曜日

drupal7 パス取得 get path Global変数

drupalのインターネットルートパスを取得するには
<?php print $GLOBALS['base_url']; ?>
http://hogedomein/hoge

インターネットドメイン名までを取得するには
<?php print $GLOBALS['base_root']; ?>
http://hogedomein

ルートフォルダ名だけを取得するには
<?php print $base_path; ?>
/hoge/





2014年11月18日火曜日

drupal 8 のテーマ 7から8になって、themeやその他、わからないことばかり。

drupal 8 のテーマ。

インストール後のエラー
Trusted Host Patterns has not been configuredエラーが出ているときは、
\sites\default\settings.phpの最後に、自分のホスト名を入れておく。

$settings['trusted_host_patterns'] = array(
'^localhost$',
);

これで一応、エラーは消える。example.comを使っている時は 上のlocalhostの上に
'^example\.com$',
その後に続くアドレスがあればそれを入れて範囲を狭めてもいいみたいだし、いろいろなアドレスを使っているときはそれら全部をいれる。

オリジナルテーマの場所core/themes

オリジナルページテンプレート(page.html.twig)の場所
core\modules\system\templates\page.html.twig

カスタマイズしたものやオリジナル以外のテーマの置き場所
themes/

ここで最低限必要な(フォルダと)ファイルは、
themes/テーマの名前/namae.info.yml
"namae"のところはどういう名前の付け方のルールになっているのかよくわかっていない。
上段フォルダーの名前と一致させているみたいだ。
このテーマはなんの飾りつけもないcoreが吐いたテーマの表示がされる。

Responsive Designになった
と書いてあるけど、
viewport
を使っているだけなのか?
それとも他に何か仕組みがあるのか?
viewport
の設定をしているのなら、どこで設定をしているのか。
core\lib\Drupal\Core\Page\DefaultHtmlFragmentRenderer.php
ここか?
コアに組み込まれた。
ということか?
あとは、普通にCSSに設定を書いていくだけか?

Twig
http://twig.sensiolabs.org/documentation

コメントアウトは-----{# #}

値、変数の出力は---{{ }}

{{ logo }}
とか、
{{ site_name }}

Used to execute statements---{% %}
は、
{% if logo %}
とか、
{% endif %}
とか変数以外の実行ステートメントが入る。

フィルター
変数の後にパイプ"|"を記述しその後にフィルターを記述する。
パイプを複数つなぐこともできるそうだ。
{{ 'Site header'|t}}
{{ 'Home'|t }}
{{ 'Tabs'|t }}
ここでの"t"はdrupal独自の関数で
drupal7での
<?php print t('Home'); ?>
と同じ意味の"t"だそうだ。
異なる言語に対応させる関数。

yml
.infoが.info.ymlに変わった。
中の書き方も変わった。

その他
drupal8はclean URLsがデフォルトでonになっている。
これをoffにすることはできないそうだ。
https://www.drupal.org/getting-started/clean-urls#enabling-8

2014年11月8日土曜日

昨日の夜からこのブログの表示ができなくなった。

DNSサーバーで問題が発生している可能性があります。
だって。

www.blogger.comから書き込みはできのだけど・・・。

あ、今(2014/11/08 21:51)、みたら復旧していた。

とりあえず、バックアップを取っておいた。
設定>その他>ブログをエクスポート

バックアップされる日付はアメリカ時間になるようだ。

2014年11月3日月曜日

drupal 8 beta 2 インストール 失敗 (beta 3は難なく成功)

環境
Windows7
wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b

インストールの途中で失敗する。
モジュールのインストールをやっているところでエラーが出る。

The installation has encountered an error.
Please continue to the error page

An AJAX HTTP request terminated abnormally. Debugging information follows. Path: http://localhost/hoge/core/install.php?langcode=en&profile=standard&id=1&op=do_nojs&op=do StatusText: error ResponseText: ReadyState: 0


そう言われたので、そのパスをみてみると
Notice: Undefined index: #title ininstall_display_output() (line 937 ofcore\includes\install.core.inc).install_display_output(Array, Array) install_drupal()

ネットのどこかで
php.iniのmax_execution_time = 120
を300に伸ばすと解決するみたいなことが書いてあったのでやってみたが、解決しなかった。

言語を英語でインストールしてみたりしたけど、だめだった。

CentOS環境だとうまくいくのかなぁ。
後で時間があったらやってみる。

2014年10月31日金曜日

Runkeeper Runtastic     RunkeeperはGPSの情報をGPXとKMLでエクスポートできる

近所の山を歩くのに、10月初めからl-01fでRuntasticを使い始めた。

GPSがうまく動かなくてヘアピンカーブの山道などは直線につながってしまう。

l-01fでナビアプリなどを使うとそういうこともないのでRuntasticがそういうアプリなのかもしれない。
(後にRunkeeperやNike+を同じ機種、l-01fで同じコースを歩いたけど、どちらも(ヘアピン無し)山道一週で2.1km、Runtasticだと1.69とか、1.7kmになってしまう。)

いろいろとやってみると、ヘアピンカーブの端近くでRuntasticから写真を撮るとそこを記録するために(だと思う)ちゃんとGPSが点を打ってくれる(記録を取ってくれる)。

で、今朝、RunkeeperをiPhone4sに入れて、l-01fのRuntasticと同時に歩いてみた。

地図の軌跡を見ると、iPhone4sのRunkeeperの方がちゃんと軌跡を追ってくれていて、
歩いた距離は4.42km
Runtasticの方は3.44km(ヘアピンカーブの頂点で写真を撮りながら歩いたときは3.77km。)


どっちが正しいとも言い切れないのだけど、ヘアピンカーブを追っていないで直線でつながってしまっているRuntasticが正しくないのだろうなぁ。

それと、4分歩いてやめてしまうと、GPSをとらえていても0kmの時がある。かと思うと2分くらいで止めても、ちゃんと80m(0.08km)などと表示されることもある。

まぁ、いろいろな要素があると思うので、Runtasticがだめだと決めつけるわけにはいかないし、今後、訂正されるかもしれないから、今後の様子見。

RuntasticはGPSの軌跡をGPXやKMLで取りだすことができない(と思う。)。
RunkeeperはGPXとKMLでエクスポートできる。
これは自分にとっては大きな違い。

l-01fでもRunkeeperを使ってみようかな。

2014年10月13日月曜日

Windows 7 apache MariaDB PHP phpMyAdmin 個別にインストール mysqlからmariadbに移行した。 (後述:このやり方ではdrupalは今のところ正常に動いていない。自分の見解は最後に書いた。)

Windows7   

apacheのインストール。

http://www.apachelounge.com/download/win64/
httpd-2.4.10-win64.zip

ダウンロードしたファイルを解凍してapache24フォルダを適当な場所に適当な名前(自分はそのままapache24)で設置。
C:\www\apache24

次にhttpd.confファイルの編集
C:\www\apache24\conf\httpd.conf

--------------------------------------ここから
# apacheの場所
ServerRoot "C:\www\apache24"

# ポート
Listen 127.0.0.1:80

# 一応、適当にメールアドレスを入れとく。
ServerAdmin admin@example.com

ServerName localhost:80

DocumentRoot "C:\www\apache24\htdocs"

#webディレクトリの設定
<Directory "C:\www\apache24\htdocs">

 AllowOverride All

</Directory>

#mod_rewriteを有効にする。(drupalのモジュールのリダイレクトを効かせるため。)
LoadModule rewrite_module modules/mod_rewrite.so

# 必要ならCGI として実行する拡張子など(自分は必要じゃないから入れなかった。)
# AddHandler cgi-script .cgi .pl .py .rb

# ファイルではなくディレクトリにアクセスされた場合に表示するファイル。(自分はcgiは入れていない。)
<IfModule dir_module>
    DirectoryIndex index.html index.php index.cgi
</IfModule>

#ここからPHP用の設定。最後に付け足した。
#php.iniの場所指定
PHPIniDir "C:/www/php"
#PHPモジュールの場所指定
LoadModule php5_module C:/www/php/php5apache2_4.dll
#PHPをPHPとして認識させる。
AddType application/x-httpd-php .php

-------------------------------------ここまで

ここで、試しにapacheの本体
httpd.exe
をダブルクリックして立ち上げてみる。

うまくPHPなどが動かないときは(今回、apacheはhtmlを表示させることができたが、PHPが動かなかった)。
Microsoft Visual C++ 2010 SP1 Redistributable Package (x64)
(Visual Studio 2012 更新プログラム 4 の Visual C++ 再頒布可能パッケージ)
vcredist_x64.exe
を入れる。

apacheをサービスに登録する(サービスを登録するのは、MariaDB、PHPなどがちゃんと動いたのを確認した後。それまでは単独でexeファイルをダブルクリックをして起動。)。
コマンドプロンプトで登録。
コマンドプロンプトを立ち上げるときに、右クリックから"管理者として実行"から実行するのを忘れないように。
C:\www\apache24\bin\httpd -k install

C:\www\apache24\bin\httpd -k install -n "Apache2.4"
その後起動
C:\www\apache24\bin\httpd -k start
アンインストールするには
C:\www\apache24\bin\httpd -k uninstall

スカイプが起動しているときはポートがかぶるので注意。だそうだ。先にapacheを立ち上げてその後でスカイプを立ち上げればスカイプがポート80以外を使って立ち上がるらしい。

次にMariaDBのインストール
https://mariadb.org/
mariadb-10.0.14-winx64.zip
をダウンロード。
展開した
mariadb-10.0.14-winx64

C:/www/
にコピー。その後適当な名前mariadbに名前変更。
C:/www/mariadb

my.iniを作る。
my-small.ini

my.ini
に変更。

my.iniの中のsocketの位置を
[client]と[mysqld]、共に
socket = c:\www\maria\mysql.sock
へ変更。

mysqld.exeをダブルクリックでMariaDBが立ち上がる。
サービスへ登録したければ、
Windowsコマンドプロンプトで、
C:\www\mariadb\bin\mysqld --install MariaDB10.0
登録解除は
C:\www\mariadb\bin\mysqld --remove MariaDB10.0
ただ、登録してもうまく立ち上がらない。
手動なら立ち上がるのだけど・・・。

次にPHPのインストール

http://windows.php.net/download/
ここからダウンロード。
php-5.6.2-Win32-VC11-x64.zip

64bit版が2種類あって、
VC11 x64 Non Thread Safe
VC11 x64 Thread Safe

IIS版がNon Thread Safe
Apache版がThread Safe
と言う事みたいだ。

インストール場所は
C:\www\php
にした。

自分の場合、何でもいいのだけど、一応php.ini-developmentからphp.iniを作った。

php.iniの編集
date.timezone = Asia/Tokyo

extension_dir = "./ext"
log_errors = On
error_log =  "C:\www\php_error.log"

次のextensionのコメントアウトを外す。
# 何故かphpMyAdminを動かすためにphp_mbstring.dllが必要(入れないとエラーが出る。どの道日本語を使うときには必要。)。
php_mbstring.dll

php_mysqli.dll
php_mysql.dll

下の二つはdrupalに必要。
php_gd2.dll
php_pdo_mysql.dll

引き続き、php.iniの設定。
PHPからメールを送れるように設定をする。(drupalなどを使うとき、何らかの方法でメールを送る手段が必要なため。)
;SMTP = localhost
;smtp_port = 25
上の2行をコメントアウト。
sendmail_path = "\"\www\sendmail\sendmail.exe\" -t -i"
fake sendmailを使うために上の行を追加。

fake sendmailのインストール。
メールクライアントのように働きメールを送信するソフト。
sendmailと言ってもサーバーではなくて、簡単なメール送信ソフト。
sslを使わなくていいのならfake sendmailを使わなくてよくて
php.ini

[mail function]
へ使いたいメールサーバーとポートを設定すればいいだけなのだろう。

http://glob.com.au/sendmail/
ここからダウンロード

C:\www\sendmail
ここに置いて、

sendmail.iniの編集
smtp_server=smtp.gmail.com
smtp_port=587
smtp_ssl=auto
error_logfile=error.log

auth_username=hoge@gmail.com
auth_password=hogenopassword

force_sender=hoge@gmail.com

編集後
sendmail.exe
をダブルクリックして立ち上げ。
その後で、送信されたかどうかのテスト。
utf-8で書くのを忘れずに。

<?php
if (mb_send_mail('auction654321@gmail.com', 'TEST SUBJECT', 'TEST BODY')) {
    echo 'Seikou成功';
} else {
    echo 'Shippai失敗';
}
(これはhttp://log.noiretaya.com/139を丸写しさせてもらった。)

このPHPをドキュメントルートへ置いて、アクセスする。

phpMyAdminのインストール
http://www.phpmyadmin.net/home_page/index.php
ここからダウンロードしてAphacheのドキュメントルートへ置く。
これだけで動く。
(以前はconfigファイルを設定しないと動かなかったよなぁ。)

rootからパスワードなしてログインできるように設定する。
config.sample.inc.php

config.inc.php
へ置き換えて、
$cfg['Servers'][$i]['AllowNoPassword'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = true;
へ書き換える。


ここまでやったが、drupalがちゃんと動かない。
Chromeブラウザからだとログインできない。
IEだと最初は動くけど、だんだん動きがおかしくなる。
WAMPを後から入れてみたらChromeからログインできるから、たぶん、ブラウザが悪いわけでもないみたいだ。
何かが足りないんだろう。
Apacheの全モジュールとPHPの全エクステンションをロードしてみたけど、うまくいかなかった。
ソースからビルドしたときのオプションに問題があるのかなぁ。(自分でビルドしたわけじゃないけれど。PHPはてんこ盛りオプション付ビルド版とかがあったから、それを入れれば動くかなぁ。)
それとも、PHPのバージョンに問題があるのかなぁ。(WAMPは5.5、自分で入れたのは5.6)

とにかく、今、新しいバージョンのWAMPを入れたら、これが調子いいから、ここは後回しにする。
新しいバージョンのWAMP
wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b.exe
を入れたら、以前のバージョンで動きの悪かったphpMyAdminがスムーズに動いているから、
とりあえずまたWAMPを使うことにした。





2014年10月12日日曜日

MFC-7840Wの無線LAN設定

MFC-7840Wの無線設定。

しばらく使っていないときで、うまくつながらないときは設定を最初からやり直してつなぎ直した方がうまくいく。

メニュー>5>2>2
無線接続ウィザード
無線LAN オン
SSID検索中の後でSSIDを選択するか新しいSSIDを設定する。

その後、インフラストラクチャを選択。

暗号化方式でwepを選択。

mfc-j960dwnも同じ。

今回、今までつながっていたMFCがつながらなくなった原因は2つある内のルーターの1つが調子悪くなっていて、そのルータにMFCをつなぐ設定になっていたことが原因だった。最終的にはルーターの再起動で直った。

ということで、最終的にはプリンター側の問題ではなかったのだけど、調子よく動いていた方のルーターに切り替えることでとりあえずその場の解決にはなった。

2014年10月11日土曜日

iphone 4s を買った。

yahooオークションでiphone4s 32G, ソフトバンク、(中古)を今、買った。
16001円。
14000円くらいで買えると思ったけど、丁寧に使っていたみたいで、きれいそうなものだったのでこの値段でも買ってしまった。

iphone4sのsimはマイクロSIM。
自分のT-01Aのfomaのsimは標準SIM。これをマイクロsimに変えて、iphone4sにはめて使う予定。
Docomoに頼むと2000円ちょっとするみたいだ。

自分で切ればタダ。
簡単に切れるようにsimの大きさに合わせたガイドラインが書かれたものがネット上にある。それを印刷してカットラインに合わせてはさみかカッターで切る。

切る機械もある。アマゾンで売っている。押し切る切り方なので、切り口はあまりきれいではないそうだ。

もしかすると通話するだけなら刺し変えるだけで大丈夫なのかもしれないけれど、
たぶんsimを刺し変えるだけではだめで、simロックを解除するために下駄を履かせるとか何かをする必要がある。んだと思う。

iphone4sのようなは3G回線だけの機種はあまりややこしくはないみたいだ。
下駄を履かせればiOS8.0.2でもsimフリーになるらしい。


メモリの解放
iPhoneは言語の設定を日本語>English>日本語のようにするとメモリが解放されるそうだ。

連絡先の同期 iOS Android Windows Mobile間の連絡先コピー。

T-01Aのアドレス帳をl-01fを介してiphone4sへコピーした。その時の方法。
T-01Aの電話帳コピーツールを使ってSDカードへコピー。
そのSDカードからl-01fのUSBカードリーダーを使ってAndroid l-01fのgoogleの連絡先へインポートし、l-01fのandroid設定をgoogleと同期するにする。
その後、Windows7PCでgoogleの連絡先へアクセスして同期されていることを確認する。
その時の同期フォルダーは、googleの連絡先の「その他の連絡先」に同期されていた。
そのままではiPhoneと同期しない。
iPhoneと同期させるために「その他の連絡先」から、「Myコンタクト」へ、同期したい電話番号、メールアドレスを移動しておく。

iPhoneの設定はgoogleアカウントへログインして、そのgoogleアカウントの連絡先をonの状態にしておく。

2018/03/18にバッテリー交換。
バッテリー代が1350円だったかな。
必要な工具は
頂点が5角形の星形ペンタローブドライバ。0.9って書いてある。
(トルクスは頂点の形が6角形だから使えない。)
手元にあったのが0.8だったけども、これでいけた。

小さめのプラスドライバ#0x 100って書いてあるのでいけた。小さすぎるとダメみたいだ。
車の部品を剥がすのに使うリムーバーで電池を剥がした。



2014年10月8日水曜日

Windows メーラー Shuriken 2014 設定


Shurikan2014の説明で

「・Shurikenアテンション
あらかじめ見出しや差出人を設定することで、メールの見逃しを防ぎます。重要なメールや、即時に対応しなければいけないメールなどポップアップしてお知らせします。」

と書いてあって、それが便利そうだったから買ってみた。
自分の場合、通販で買ったところなど、宣伝メールが増えすぎて困っている。
この前、整理して、宣伝メールの解約をかなりした。それでもまだまだ来る。
大切なメールが埋もれてしまってけっこう見逃してしまう。
この前は自動車保険の更新を見逃す所だった。
で、この機能が便利そうだなぁ。と思って買ってみた。
設定は
「ツール」-「Shurikenアテンション」-「設定」


後は、付箋機能が他のメーラより便利そう。

・インストール直後の設定。
デフォルトのビューアはJS htmlビューアになっている。これをIEに変える。
「表示」>「htmlビューア切替」

後述
OS再インストール後に、この設定にした。が。JS htmlビューアに戻っているときがある。
・ 「設定」>「共通の設定」>「表示・動作」>「HTML設定」
で、一番上と2番目をIE HTMLビューアにしたら戻らなくなった。



オリジナル設定は、html文は一発で表示できなくなっている。
一発表示に変える。
・ 「設定」>「共通の設定」>「表示・動作」>「ビューア内表示」>「アイコン表示にするファイル種類」>「アイコン表示にしない」

・ 「設定」>「共通の設定」>「表示・動作」>「ビューア内表示」>「ネットワークからの画像のダウンロードをブロック」>「しない」

見出しを複数行表示にするには

「設定」-「表示項目」の設定
から設定する。

2010からのバージョンアップ。
ダウンロード版15%引きキャンペーンで1836円。
このキャンペーンも、宣伝メールで知ったのだけど(笑。


2014年10月3日金曜日

MariaDB MySQL CentOS7

CentOS7からデータベースサーバーがMySQLからMariaDBになった。

なんだなんだ、どうしたんだ。
と思ったけど、どっちの中身もほとんど同じらしい。

去年、googleがMysqlからMariaDBに切り替えた。
という去年のニュースがあった。その辺の出来事が大きいのかなぁ。

名前がMariaって、なかなかなじめない。と思って調べるとMySQLのMyも人の名前(開発者の娘)なんだそうだ。


それはそれで置いといて、そうなると、MariaDBがMySQLの完全に置き換えができるのかどうかが問題になってくる。

CentOSのdrupalがMariaDBでも動くかどうか?
drupalのインストール時に自動で認識してくれるかどうか?

Mysqlで使っていたその他の物のバックアップはMariaDBで使えるのかどうか?

いろいろとネットでチェックしてみた限りではほぼ互換みたいだ。

Windows用として、
は今(2014/10/03)のところの最新版
mariadb-10.0.14-winx64.zip
又は、
mariadb-10.0.14-winx64.msi
https://downloads.mariadb.org/mariadb/10.0.14/

がでている。
これからは、MariaDBにしようかな。



2014年9月29日月曜日

windows apache mysql php mysql

windows上でのdrupalの開発環境に

wamp
http://www.wampserver.com/en/
Wampserver2.4-x64.exe

を使っていたのだけど、なんだか調子が悪い。

wamp自体に原因があるのだか、その他にあるのだか・・・。
phpmyadminもちゃんと動くときと動かないときがある。
それだけならいいのだけど、この前、mysqlのデータが全部吹っ飛んでしまった。
wampがいいとか悪いじゃなくて、まとめてインストールすると原因の切り分けが難しくなるのかな。
と思った。
新しいwampのバージョン、
wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-32b.exe
もでているから、これを使えば、もしかすると調子が良くなるのかもしれない。

XAMPP for windowsをインストールしてもいいのだけど、どうなのだろう。

気軽、手軽なのがいいのだけど、個々別々にインストールした方のがいいのかなぁ。

まぁ、どうするにしても何かをやるときにはバックアップをちゃんと取っておけってことだよなぁ。

2014年9月27日土曜日

剱岳 剣岳 下調べ つるぎだけ tsurugidake

 今年(2014年)の剣山荘の営業は10月11日の宿泊までだそうだ(電話で聞いた)。
昨年行こうとして、10月の下旬頃調べたら既に閉まっていた。
今年は早く行こうとしたが、ぎりぎりだ。

----------------------------------------------------------------------
10月8日に、立山観光協会に聞いたら、昨晩、室堂で5cmの積雪だそうだ。
こりゃ、今年も剱岳は無理みたいだなぁ。
剣山荘のFaceBook
https://www.facebook.com/kenzanso
にも、昨夜雨が雪になったと書いてあった。
9月の末に行きたかったが、いろいろとちょこちょこ用が入ってしまって行けなかった。
くそー。来年か。
----------------------------------------------------------------------


とりあえず、最初は一般的、と書かれているルートから、

一般的なルート。
車で行くとなると、立山駅を目標にして行き、周辺駐車場(1000台分の無料駐車場がある。その他、500台分の臨時駐車場もある。)に止めて、そこからケーブルカー、バスを乗り継いで室堂。そこから登山。

登山コース 室堂から別山尾根

登山口 室堂 黒部アルペンルートの最終駅

立山駅-室堂駅  2430円 往復4310円
立山駅から美女平まで"館山ケーブルカー"。
美女平から室堂まで"高原バス"。
http://www.alpen-route.com/access/vehicle/index.html

時刻表
http://www.alpen-route.com/book874/index.html#page=2

宿泊場所としては1泊2食付きで1万円くらいが相場、素泊まりだと6千円位か。
山頂付近
剱山荘
剣御前
剣沢小屋
仙人池ヒュッテ(要予約)

室堂付近
みくりが池温泉
立山室堂山荘

ちょっと離れているけど、よさげなことが書いてあった。
雷鳥沢ヒュッテ
内蔵助山荘

2014年9月26日金曜日

ETC ETCマイレージサービス ETCプラザ 「ハイカ・前払」残高管理サービス

2つのサービスがある。
昔からあったETCプラザ「ハイカ前払い」残高管理サービス。
と、ETC用にできたETCマイレージサービス。

ETCプラザの方はハイカ用のサービス。今も使えるけど、基本的にこれは今は必要なくなった。
今はETCマイレージサービスの方だけ登録をしておけばOK。
http://www.smile-etc.jp/index.html

IDとパスワードは忘れると面倒。
ETCマイレージサービスに電話をして住所や年齢や、いろいろ確認をするとIDは教えてもらえる。

ETCマイレージサービス 2つのETCカードを登録している。
ETCプラザ 「ハイカ・前払」残高管理サービス 1つのカードを登録している。

-------------------------------------------------------
もう一つ。
利用した履歴の紹介。
ETC利用照会サービス
http://www.etc-meisai.jp/index.html
登録に必要なもの
ETC車載機番号(両面テープで止められるなどして番号が確認できなくても、声の出るETCならば、声で教えてくれる機能がついている。)
ETC車載機に登録されいる車のナンバープレートのナンバー
(中古で買った車でナンバープレートが変わってしまった車のETCを正式に使うには現在の車のナンバーを、再セットアップする事によって車載機に登録しなおしてから使わなければならない。ということらしい。)
ETCカードナンバー
それらにプラスして、
「ご登録には、ETCクレジットカード、ETCパーソナルカードの場合は過去15ヶ月以内に少なくとも1回、ETCコーポレートカードの場合は過去62日間に少なくとも1回、 ご登録されるETCカードを使用して、ETC無線通行により高速道路を利用していることが必要です。」
だそうだ。

車 移転登録

手数料 500円
ナンバープレート料 1520円
計 2020円

2014年9月17日水曜日

公開している公共データ

nhkのクローズアップ現代
でやっていた。

公開している公共データをビッグデータとして使う。


2014年9月14日日曜日

windows コピーコマンド ディレクトリをタイムスタンプを含め完全にコピーする robocopy /copyall musql 5.6.12 InnoDB 破損

「タイムスタンプなどを完全にコピーをできる方法」は、真ん中より少し下。


Windows上で開発中のdrupalのmysqlのデータが壊れた。
まずい。正常時のバックアップが取ってない。
(結局いろいろとやったがInnoDBの回復はうまくいかなかった。ファイル自体が壊れたのかな。でも、全てのデータベースのテーブルが1142エラーになるということは、壊れたところがどこか大元の1ヶ所なのだろう。MyISAMならもう少し構造が簡単でうまくいきそうだけど、InnoDBはデータベースの移動をすると整合性がとれなくなるらしい。)


最初は、wampのランプが緑にならなくなったところから始まった。
この時点でmy.iniのmax_allowed_packet(クライアント(PHPなどmysqlを使っている方)からmysqlへ送れるパケット量)をもっと大きい数字に書き換えていれば、それで解決したかもしれなかった。
(今となってはそれが有効だったかどうかはわからない。この最大値は16Mbで、それ以上に設定をしても意味がないということだ。)

だが、あせって、あまり調べもしないうちにwampの上書きをしてしまった。
すると、wampのランプは正常に緑になったけど、
上書きをする以前のテーブルをmysqlが認識しなくなってしまった。

phpMyAdminでテーブルは表示されるが、中身が表示されない。
MySQLのコンソールを使って調べても同じ、
ERROR 1146 (42S02)がでる。
全てのデータベース、すべてのテーブルのリストは表示されるのに、そのフィールドを表示させようとするとそんなテーブルはないと言われてしまう。
概存データベースに新しく付け足したテーブルは正常に表示される。

具体的にはこんな感じ。データベース名"hoge"、テーブル名"users"を調べてみると・・・
mysql> use hoge;
mysql> show tables;
ここにはずらずらとテーブル名が表示される。
mysql> show fields from users;
ERROR 1146 (42S02): Table 'hoge.users' doesn't exist

Windowsのエクスプローラーで見ると、データ自体はちゃんとあり、壊れているようには思えない。
mysql-bin.*というファイルが178も作られていて、それだけで1.35gbもある。このファイルの数と大きさが原因のような気がする。


調べていくと
mysqlのデータが壊れてなければ新しく作ったmysqlのデータフォルダにぽん付け+αで復旧できそうだ。
まぁ、今となっては無理だろう。
いったんここでギブアップして、新しい環境を新規で作り直すが、解決方法があとで見つかるかもしれないから、これをコピーをして取っておくことにする。
その方法だが、

タイムスタンプなどを完全にコピーをできる方法を調べてみた。

Windowsコマンドプロンプトから
robocopy /copyall
でいけるらしい。

実際にやってみると、
C:\wamp\bin\mysq> robocopy mysql5.6.12 mysql5.6.12bup20140916\ /copyall
エラー : 監査管理のユーザー権利がありません。

管理者アカウントでログインしているのに何故だ?

と思ってその事について検索をかけるとadobeのwebサイトにに
「Windows では、コンピュータに管理者アカウントでログインしている場合でも、コンピュータを使用するユーザ全員に影響する変更がユーザによって行われるのを防止するため、通常の操作は標準アカウントと同じ権限で実行されています。
とあった。
知らなかった。
それをさけるために、管理者権限で操作する。
コマンドプロンプトを立ち上げるときに右クリック。
「管理者として実行」を左クリック。

あと、オプションが/copyallだけだとファイルしかコピーしない。
空フォルダを含めサブフォルダとファイル全部をコピーするには/Eオプションをつける。
C:\wamp\bin\mysq> robocopy mysql5.6.12 mysql5.6.12bup20140916\ /copyall /E
たぶんこれで大丈夫。

あと、robocopyの結果の表示のところでスキップって出てくるときがある。どういうときにそうなるのかと思ったけど、同じファイル、同じフォルダがあったときに、スキップするそうだ。

補足
小さいファイルはコピーをするのにすごく時間がかかる。
同一lan上の異なるpcにコピーをするときは、特にものすごく時間がかかる。
小さいファイルはzipなどでまとめたのちにコピーをするか、
TreeSizeFreeなどのソフトを使って、小さいファイルの多いフォルダを探して、削除できる小さいファイルは削除する。



2014年9月11日木曜日

自分のdrupal を再構築するときのためのメモ

最初にclean URLsがonになっているかどうかの確認して、offならばonにする。
(clean URLsは、URLをわかりやすい短いURLに直して表示してくれる機能。今回は、pathautoを使うときにこれが必要。)
Home » Administration » Configuration » Search and metadata

sites/all/themes/テンプレート名/templatesフォルダの中の自分で作った*.phpテンプレートを全てコピーペースト。

drupalのページテーマを自分のテーマに変えた後で
admin/structure/menu/settings
で、Main linksとSecondary linksを非表示にさせる(Secondary linksはログインなどを表示させてもいいかなぁ。と、今、考え中)。
Taxonomy menuモジュールがMain menuとしかリンクできないしMain linksにTaxonomyを表示させると親の表示はできるが、子の表示ができないことからMain menuはTaxonomy menuモジュールを使っても親子表示のできるSidebar firstを使う。

admin/structure/blockで
「Sidebar first」へ
Main menu

「Sidebar third」へ
Management
Navigation
User login
User menu
を持ってくる。

「Header」へ
「Search form」
を持ってくる。

「Footer」の
「Powered by Drupal」
を外す。

次にSearchのpermissionを設定、Indexをつける。
admin/people/permissions
(Home » Administration » People)
Administer searchはADMINISTRATORだけオン。
Use searchはANONYMOUS USER、AUTHENTICATED USER、ADMINISTRATORを全部オン。
Use advanced searchは、AUTHENTICATED USERとADMINISTRATORをオン。

searchをちゃんと動かすにはコンテンツの文字にIndexをつける。
まず、
admin/config/search/settings
(Home » Administration » Configuration » Search and metadata)

Minimum word length to index
を、
「3」から「2」へ変更。
(2文字の検索をしたいことが多いから2文字にしたが、PCへの負担が多いようなら後で3に戻しておくこと。)
次に
INDEXING STATUS
を見て、
100% of the site has been indexed. There are 0 items left to index.
と、100%となっているのかを確認。
なっていなければ、
Re-index siteというボタンを押して、
admin/config/system/cron
(Home » Administration » Configuration » System)
のcronを走らせる。

次に、モジュールのアンインストール。
Toolbar
Overlay
の順にモジュールをオフにする。


次にモジュールのインストール

Forum(これはデフォルトでインストール済み、チェックを入れるだけ。)

Taxonomy menu
これは、main menuにForumのTaxonomyリストを表示させるために使う。
これだけだと、main menuのForumのTaxonomyのリストをクリックしたとき、アドレスは
Taxonomy自身のアドレスになってしまい、フォーラムが表示されない。

具体的な例として
フォーラムを表示したいのなら、
/forum/8
とアドレスが表示されなければならないが、
/taxonomy/term/8
と表示されてしまう。

それを避けるために、Pathautoモジュールを使って、Taxonomyのアドレスが表示されたときに、それに対応したForumを表示するように設定する。

上の例でいうと、
/taxonomy/term/8
と表示されたときに、/forum/8のフォーラムを表示させるようにする。
(もう少しスマートな方法があればいいのだけど。今のところ他のモジュール、他の方法はうまくいっていない。drupal8を導入時に、自分でモジュールを作りたい。)

ということで、Pathauto moduleのインストール。
Pathauto module を動かすためにToken moduleのインストールが必要(ctoolsも必要。)。
これは、今書いたように、自分の場合は、Taxonomyで表示されるアドレスをフォーラムへ振り替えるために使用する。
Pathautoをインストール後、
admin/config/search/path/patterns
に書いてあるパターンは全て削除。
その後、
admin/config/search/path

ALIASが作成されていないかをチェック。
されていれば、全て削除。
その後、
admin/config/search/path/patterns

FORUM PATHSへ
taxonomy/term/[term:tid]
を追加。
その後、
admin/config/search/path/update_bulk
でForum Pathsにチェックを入れて
Updateする。
admin/config/search/path

ALIASが追加されたのを確認する。

admin/config/search/path/patterns
での設定を一回しておけばこの後、自動でALIASを作っていく。

これでForumの一覧をTaxonomy_menuモジュールを使ってサイドバーに表示させることができる。
admin/structure/taxonomy/forums/edit
(Home » Administration » Structure » Taxonomy » Forums)
で、
Menu locationの「= DISABLED =」を「Main menu」へ変更。

admin/structure/menu/manage/main-menu
で、「Home」リンクをdeleteする。

Main menuの題を
「Main menu」から「Forum list」へ変える。
ファイル、
includes\menu.inc
の中の、
    'main-menu' => 'Main menu',

    'main-menu' => 'Forum list',
へ変更する。
上のやり方みたいにファイルを書き換えなくても書き変えることができた。
(だから、Forum listをMain menuに戻しておいた。)
admin/structure/block/manage/system/main-menu/configure
(Home » Administration » Structure » Blocksのmain menuのconfigure)
で、Block titleへタイトルを入れるとそのタイトルが表示される。
今はMemos listForum listになっている。

次に、自分で作ったオリジナルのノードページUsers sorted by workを表示させる。

最初に
admin/structure/taxonomy
で、
Add vocabulary
からvocabularyを追加。名前は適当で大丈夫。
自分はthingstodoにした。
そこに、Export Carsとか、適当にいくつかのタームを追加。

次に
admin/config/people/accounts/fields
(Home » Administration » Configuration » People » Account settings)
で、
Add new fieldをする。
node--1.tpl.phpのdb_queryでyooを使ってしまったので、
ここではLabel名はyooにして、マシン名をfield_yooにしておく。
マシン名がfield_yooに決定されれば、Label名は表示させたい名前に変えてかまわない。
FIELD TYPEはTerm reference。
WIDGETはCheck boxes/radio buttons。
saveして、
Vocabularyは先のボキャブラリthingstodoを選ぶ。
それをsaveして、
次の画面で
Number of valuesはunlimitedを選択。
これで下準備は完了。

ここで、適当にTitleをUsers sorted by workにしたコンテンツを作ると、それがnode1になって、node/1が表示される。

次に、node1コンテンツををメニューに加える。
modules/node/node.tpl.phpがノードのテンプレート。
これが全ノードのテンプレートになるわけだが、例えばnode/1だけ自分のオリジナルテンプレートを適応させたい場合。
まず、admin/contentで、コンテントを追加する。
そのコンテントのノード番号が1なら、
node--1.tpl.php
のテンプレートが適用される。
(自分の場合は、このテンプレートはこの文の最初の方で既にコピーペースしてある。)

これをmenuに追加する。
admin/structure/menu

Information
というメニューを追加する。
その後、
add linkから、

Menu link titleを
Users sorted by work

Pathを
node/1

に設定する。
このInformationを、sidebar thirdに登録する。

次はユーザー毎に仕事などを表示するコンテンツを作る。
これは、viewsモジュールをインストールしてviewsで作る。
これはその場その場で適当に作ればいいだけ。
完成したコンテンツの追加方法は上と一緒。
Permissionの設定は、
PAGE SETTINGS

Access
で、
Role
を選び、
その後で表示される所で、許可をするユーザーを選ぶ。


あとから付け足し
admin/config/system/site-information
で、
Default front page

forum
にする。

サイトのユーザー欄にそのユーザーのSNS、webページを載せられる用にする。
admin/config/people/accounts/fields
Add new fieldに
My web site, My SNS

FIELD TYPEに
Textを選択。
あとは、saveして、適当に設定を進めていく。
(Required field
Display on user registration form.
にチェックを入れて
Number of valuesは3)

2015/04/07現在のBlockの状態
Header
Search form
System help

Content
Main menu

Sidevar first
Main menu
Management
Navigation
User Login
User menu

Sidebar second
Information

Sidebar third
Recent comments
Recent content

2017/05/25 付け足し
forumにおいて、
登録した一般ユーザーの
新しいコンテンツの作成許可。
自分自身のコンテンツの訂正と削除
の許可をする。

admin/people/permissions
Home » Administration » People » permissions

node
Forum topic: Create new content
Forum topic: Edit own content
Forum topic: Delete own content

AUTHENTICATED USER
にチェックを入れる。




2014年9月9日火曜日

drupal 7 admin メニュー 表示させない

drupal7をインストールした後、アドミニストレーターでログインすると上に現れる黒いバー、ツールバーを消すには、
モジュールの
Toolbar
をオフにする。

それをオフにした後でモジュール
Overlay
もオフにする。
これは、adminnistrationで表示させたときに、回りが黒くなって表示されたものが上に浮いたような感じになる。
表示が遅くなるし、自分にとって、これはいらない。

2014年9月7日日曜日

drupal 7 mysql データベース接続情報

sites/default/settings.php
の中に
$db_url = 'mysql://ユーザー名:DB接続パスワード@データベースサーバー名/データベース名';

2014年9月6日土曜日

Putty 設定 トンネル Tunnels設定     EUC-JPからUTF-8への設定

トンネル設定

Connection > SSH > Tunnels
で、
例えば
Source port : クライアント、Windows側のローカルポートの番号を入力する。
ローカルポートをVNCなどで15901などを使いたいときには
15901
などと入力する。
Destination : サーバーのローカルアドレス : ポート
192.168.1.150:5901
などと入力する。

Source Portは、
well- known(0-1023)
登録済みポート番号、registered port number(1024-49151)
動的/プライベート ポート番号 (49152–65535)

というような感じらしい、well-knownとバッティングしないように1024以上65535以下を使っておけばいいとおもう。


EUC-JPからUTF-8への設定

自分の設定がある場合はセッション項目であらかじめ自分の設定を読み込んでおいて、

ウィンドウ > 変換 > 文字コードの設定

からUTF-8に設定する。

VNC インストール 使い方 CentOS 6.*  リモート画面

インターネットと自宅LANの間に入っているルーターの設定を自宅LAN内のサーバーから行いたかったけど、サーバーのsshコンソール画面から操作しようとしたらルーター画面がjavascriptで表示されているため、それを表示できなくて操作できなかった。

それで、VNCを使えば、firefoxを使うことができるから、そこからjavascript表示のルーターが操作できそうだ。と思って、VNCサーバーを使ってみた。
VNCは通信が平文なので、SSHのトンネルを使った。

後述---インストール後の普段でVNCがつながらないときは、大概CentOS側のVNCサーバーの起動忘れ。

サーバー側へのインストール
# yum install vnc-server

(CentOS7の場合は
yum install tigervnc-server)

クライアント側のソフトの準備
http://www.realvnc.com/download/viewer/
より
VNC Viewer for Windows ZIP 64-bit 5.2.1
をダウンロードする。

VNCサーバーの起動
# vncserver -geometry 800x600

自宅から太い回線でつなぐときは、
例えばx220の場合、
# vncserver -geometry 1366x768
でも余裕でいける。

初回起動時はパスワードの入力がある。

続いてクライアント側のソフト
VNC-Viewer-5.2.1-Windows-64bit.exe
の起動

sshを使ってトンネルさせるためにPuttyを起動。
Puttyの設定は
http://yasutam.blogspot.jp/2014/09/putty-tunnels.html

Puttyを立ち上げてログインした後で、

VNC Viewerに
localhost:15901
と入力。
その後、ユーザーのパスワードでログイン。


サーバーの停止は
vncserver -kill :1
とか、
vncserver -kill :2
と、立ち上がっているディスプレイナンバーを入れてそのディスプレイを停止させる。
今立ち上がっているディスプレイナンバーの確認は
vncserver -list
で、確認する。


2014年9月5日金曜日

winscp SFTP FTP

winscpはインストール版とzip解凍すればそのまま使える版の2つががある。
機能は同じ。ということなので、自分はレジストリもいじらないし、アンインストールは削除すればいいだけのzip解凍すればそのまま使える版を使ってみた。

SFTP(SSH File Transfer Protocol)はSSH v.2に標準で含まれている。

WinSCPはSFTPをサポートしている。

鍵の保存は、
Advanced Site Settings > Authenticatjion >Private key file

SSHがインストールされているサーバーはSFTPも一緒にインストールされている。
ということだから、Winscpの一般ユーザーでサーバーにつないだ後
su -
のようなやり方でルート権限に変更できるのかと思ったけどできないらしい。
(ルートのアクセス権やらパスワードありなしの設定を変えれば可能のようだ。)

winscpを使って接続するユーザーでも扱えるように、扱うファイルの権限を(sshで事前に)一時的にそのユーザーでも扱えるように変えてやるのが一番無難で安全かな。

まだ試していないけど、
FTPをSSHのトンネル使ってつないだ方がいいのかなぁ。
でも、その場合、FTPのユーザーがFTPなのだろうから、結局同じような事にになるのだろうなぁ。

エラー。
原因不明のエラーが出た。
エラー番号は4番。
何の事はない。ただ単に、hddがいっぱいなだけだった。

centos コンソール webブラウザ

今、大阪にいる。
ここから栃木自宅のサーバーをいじっているのだけど、

サーバーとプロバイダーの間に入れているルーターがsshのポートを30秒くらいで閉じてしまう。
それが不便。

で、栃木自宅のルータの設定を大阪からつないだ栃木自宅のcentosから無制限につなげるように設定の変更をしたい。と思った。
自分が使うときだけでも閉じない設定に変えたい。

サーバーにsshで外からつないでそのコンソール画面用ブラウザからルーターの設定画面を見たいのだか・・・。

最初に、有名なw3mでやって失敗。
理由はルーターの設定画面がjavascriptで動いているがw3mはそのjavascriptを表示できない。
ログインまではできたけど、その後が使えない。

javascriptが制限ありだけど使えると書いてあったelinksもだめだった。

elinks
w3m
links2
Lynx

これらがだめだとすると
vnc
を使うしかないのか。
vncは平文で通信するらしい。
それに、今はルーターのvncで使うポートが閉じているわけだし、
vncをsshのトンネル経由て使うのが、普通なのかな。

2014年9月4日木曜日

Android からの SSH クライアント ConnectBot 鍵が使える

UserName@HostName:PortNumber

の形式でそのユーザー、そのサーバー、そのポートにつながる。



TAB、ESC、Ctrl、上下キーを使うためには
Hacker's Keyboard
をインストールする。
Hacker's Keyboardの設定は

"Full 5 rowlayout"
を選択する(4-row Gingerbread layoutではなくて)。



2014年9月2日火曜日

centos hdd 追加 増設 parted fdisk

fdiskは2Tまで
それ以上はpartedを使うということらしい。

あと、
2T以下ならMBR、それ以上ならGPT。

# parted -l
で、全hddの情報表示。


その他便利なコマンド類

容量表示。
#df -hT
Tはファイルシステムの表示。
自分は古いhddはext3、2年くらい前からext4を使っている。


マウント情報は。
# mount

LVM関係コマンド。
その前にLVM関係メモ。

centosはインストールするときのデフォルトはLVM。
いくつかのハードディスクを一つのハードディスクのように扱うことができる。

PV(Physical Volume、物理ボリューム)--実際の一つ一つのハードディスクのパーティションを管理。

VG(Volume Group)--上のPV(物理ボリューム)をくっつけてひとまとめにしたレイヤー。

LV(Logical Volume、論理ボリューム)--上のVGを一つのハードディスクとして仮想パーティションを作るレイヤー。

PVの表示)
# pvdisplay

VGの表示。
# vgdisplay

LVの表示
# lvdisplay

既存の論理ボリューム名を変更するには、
# lvrename


例えば、現在のPCが壊れて、その壊れたPCのhddを新たに作ったPCに追加する場合(救出する場合)、論理ボリューム名が重なると追加できない。(まぁ、新たに作るPCのhdd名を変えればいいだけのことだけど。)
レスキューモードで名前を変更するのは、使えるコマンドが限られているから、それを使い慣れてない自分にはちょっときつい。
だから、OSのインストール時や新しいhddでパーティションを作るときはデフォルトの名前を書き替えて独自の名前をつけておいた方が安全。

lvmはhddが壊れた時に復旧が困難になる。RAID1などでミラーリングしておけばいいのだろうけど、そうでなかったら、lvmは使わない方がいいかもしれない。
とりあえず、インストール時は緊急でhddを付け足す必要がでたときのためにlvmでインストールして、後から付け足すhddは普通に追加していった方がいいかもしれない。

で、parted を使ってみる。
# parted /dev/sdd
GNU Parted 2.1
Using /dev/sdd
Welcome to GNU Parted! Type 'help' to view a list of commands.

hddの情報を表示させる。
(parted) print

mbrかgptかの選択。
(parted) mklabel
New disk label type? gpt

パーテーション関係の設定。
(parted) mkpart
Partition name?  []? hoge20140906
File system type?  [ext2]? ext4
Start? 0%
End? 100%

partedから抜ける。
(parted) quit


フォーマットをする。
# mkfs -t ext4 /dev/sdd
mke2fs 1.41.12 (17-May-2010)
/dev/sdd is entire device, not just one partition!
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=1 blocks, Stripe width=0 blocks
183148544 inodes, 732566646 blocks
36628332 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
22357 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848, 512000000, 550731776, 644972544

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

マウントポイントの作成
# mkdir /hdd3tb

マウントの実行
# mount /dev/sdd /hdd3tb

正しくマウントされているかどうかの確認
# mount

fstabに登録する。
# vi /etc/fstab
したの1行を追加
/dev/sdd       /hdd3tb     ext4 defaults 1 2

上で「マウントの実行」をしていなければ
# mount -a
で、fstabに書かれたとおりにマウントをする。

確認
# df -hT



partedのhelpを表示してみる。
(parted) help

align-check TYPE N                        check partition N for TYPE(min|opt) alignment
  check NUMBER                             do a simple check on the file system
  cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another partition
  help [COMMAND]                           print general help, or help on COMMAND
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
  mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on partition NUMBER
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file system
  move NUMBER START END                    move partition NUMBER
  name NUMBER NAME                         name partition NUMBER as NAME
  print [devices|free|list,all|NUMBER]     display the partition table, available devices, free space, all found
        partitions, or a particular partition
  quit                                     exit program
  rescue START END                         rescue a lost partition near START and END
  resize NUMBER START END                  resize partition NUMBER and its file system
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
  unit UNIT                                set the default unit to UNIT
  version                                  display the version number and copyright information of GNU Parted


2014年9月1日月曜日

centos apache httpd.conf Directory 設定 2 Basic認証

basic認証。

/etc/httpd/conf/に作った.htpasswdファイルの内容を
/etc/httpd/conf/httpd.conf
または
/etc/httpd/conf.d/*.conf
の設定で反映させたい所に反映させる方法。

新しく.htpasswdファイルを作成する場合
#htpasswd -c -b /etc/httpd/conf/.htpasswd user1 password

既にある.htpasswdファイルにユーザを追加する場合
#htpasswd -b /etc/httpd/conf/.htpasswd user2 password


/etc/httpd/conf/httpd.conf
または
/etc/httpd/conf.d/*.conf
に設定を書く。
<Directory "/var/www/html/hogebasic">

AuthUserFile /etc/httpd/conf/.htpasswd
      AuthGroupFile /dev/null
      AuthName "Basic Auth"
      AuthType Basic
      Require valid-user

#    AllowOverride All
      AllowOverride None

      Order allow,deny
#     Allow from 192.168.1.
      Allow from all
</Directory>

設定変更後の再起動
/etc/rc.d/init.d/httpd restart

cubase キャンペーン 期間メモ

9月30日までcubaseがキャンペーン価格でアップグレード。

例えばCL2+に付属で付いてきたCubase Essential 5も対象だそうだ。
税抜き43,143円、税込み、46,594円でcubase 7.5にアップグレードできる。

http://steinbergverup.yamaha.co.jp/versionup/cubase.html

今、cubase 7.5を普通にサウンドハウスで買うと、
税込み60,264円

ビッグカメラ楽天、
税込み59,799円。

ハ音記号 ト音記号 ヘ音記号 オーケストラ daw dtm 楽譜

トレモロ
音符の棒に斜め線を引き、音符の長さ分だけ、斜め線の旗を付けた音符を連打。
例えば、2分音符に斜め線一つで、8文音符を4回連打する。
同じように、スタッカート、3連符などがある。

--------------------------------------------------------------------------------

ハ音記号は、記号の真ん中がハ音、C3音になる。


4分音符にななめ3本線ーたとえば1本線なら8分音符が2つ。2本線なら16分音符が4つ、3本線は36分音符が8つ。

3X
2X
3Xなら、3回目の繰り返し時にそこを演奏する。
2Xなら、2回目の繰り返しの時に、そこを演奏する。


----------------------------------------------------------------------
単前打音
複前打音

単前打音って、音符に斜め線が入っているのがあるのだけど、入れても入れなくてもいいのか?
-----------------------------------------------------------------------

アウフタクト 弱起 不完全小節

最初の小節の不完全な拍数を最後の小節で補って書く必要は必ずしもない。

2014年8月28日木曜日

2014年8月27日水曜日

総当たり攻撃、 Brute force attack、 DoS、 DDoS 攻撃 対策 hashllimit ssh iptables 設定

とりあえず、今の攻撃を止めたい場合。
iptables -I INPUT -s 222.186.190.6 -j DROP
service iptables save


(2017/07/16ここから)
最近、一日に一万回以上のアタックをしてくるところが何か所かある。それ自体はほとんどがrootでやってくるから、何万回やられても大丈夫なのだけど、tailでsecureログを見てると目が回るしなんとなくそこまでやられると怖いものがあると思って真面目にそれらを止める気になった。(ほんとに危険なアタックがログに埋もれるし。)
hashlimitが入っているのに何でこんなに来るのかとよーく考えてみたら、hashlimitはポート22を監視しているのに、攻撃側はいろいろなポートを変えながら来ている。だからhashlimitは無駄に多く来るアタックを防ぐのには役に立たない。だからと言ってhashlimitでtcm全体を規制にかけてしまうと他に影響が出てしまう。でも、自分のsshのポートをついてきてほんとに危ない時には守ってくれるから、hashlimitは絶対に入れておいた方がいい。


無駄に多く来るアタックを確実に止めるにはアタックしてくるipを登録して遮断するのが一番いいみたいだ。自動で登録できるようにスクリプトを書いてもいいし、logwatchを見て目立つipをdropに登録してもいい。
logwatchで目立つipを見つけるのには
秀丸検索窓にでもコピーして、正規表現
\d{3,5} time
秀丸マクロでは
searchdown "\\d{3,5} time", nocasesense, regular;
(マクロで使うときは\dの前にエスケープ文字\が入る)
をすると3桁から5桁の間でアタックしてきたアドレスを簡単に探せる。

とりあえず2つ登録しただけでだいぶアタックが少なくなった。
と思ったら、少し間をおいてみてみたら、ほかのipからのアタックが始まった。
なにこれ?連携しているのか?
2,3分静かになった後でまた、他のipからのアタックが始まる。
しばらくは、アタックをしてくるアドレスの登録を自動でしないとダメか。

自動登録は他の人のスクリプトを使わせてもらって、それを少し改造した。
下の方に書いた。

でも、こういうのは少し怖い。これをwebサイトのログインに仕掛けられたらたまったもんじゃない。(drupalなどは何もしなくとも単純なアタックには対策が取られている。)
(2017/07/16ここまで)

ここから下はかなり前に設定したhashlimitの設定。

iptablesを使って対策をする。
(自分はCentOS6を使っている。先月7月7日にCentOS7が公開されて、7ではiptablesがfirewalldという物になったそうだ。iptablesがfirewalldに含まれるということらしい。)

まず最初に、
/etc/sysconfig/iptables
が存在するかどうかの確認をする。
なければ、
#system-config-firewall-tui
(以前はsystem-config-secutitylevel-tui)
で、iptablesを有効にすると、iptablesが作成される。

現在の設定の確認。
#iptables -L
ついでに、ファイルも確認。
#vi /etc/sysconfig/iptables

次に、iptablesが、全部のパケットを受け入れる状態を作っていく。
(自分の場合は、外からの通信はルーターにファイアーウォールを任せてあるので、内側にあるサーバーはパケット全部をacceptするのが基本になっている。)

#service iptables stop
としてiptablesを止めて、全てのチェーンの削除。
#iptables -F

その後、念のため、ユーザー定義チェーンの削除。
#iptables -X

確認
#iptables -L

この設定は、今現在の一時的な設定で、保存をしないと/etc/sysconfig/iptablesが書き換えられないから、
#service iptables save
として/etc/sysconfig/iptablesに保存しておく。

次に、sshのbrute forceアタック等のパケットの制限--DOS的パケットをフィルタリングするための設定に移る。

コマンドiptablesを実行する。
次の3つ。
確立された接続はそのまま継続させる。
iptables -A INPUT -j ACCEPT -p tcp --dport 22 -m state --state ESTABLISHED,RELATED

sshのacceptする条件。(/proc/net/ipt_hashlimit/にout_sshファイルが作られる)
iptables -A INPUT -j ACCEPT -p tcp --dport 22 -m hashlimit --hashlimit 3/minute --hashlimit-burst 3 --hashlimit-name out_ssh --hashlimit-mode srcip,dstip --hashlimit-htable-expire 60000

iptables -A INPUT -j DROP -p tcp --dport 22

out_sshファイルの場所は
/proc/net/ipt_hashlimit/out_ssh

(この3つの設定は、8年くらい前から
http://dsas.blog.klab.org/archives/50208645.html
に書いてあったものを使わせてもらっている。
一つ一つの解説もそこに書いてある。)

その後、
#service iptables save
#service iptables start

確認
#iptables -L
又は
#vi /etc/sysconfig/iptables
一応、こっちも確認。
#chkconfig --list iptables
-----------------------------------------------------------------
例えば、下の設定は、他のサイトにあった設定なのだけど、このようにicmp(ping)に対してならばうまく動いている。

hashlimit.sh

# HASHCHECK チェインの作成
iptables -N HASHCHECK

# HASHLIMITを使用して接続数の制限実施し許可する
#  -m hashlimit ・・・hashlimitモジュールを使用
#  --hashlimit-name hashcheck_t ・・・ハッシュテーブル名を「hashcheck_t」とする
#  --hashlimit 1/m ・・・時間あたりの接続数を「1/分」に設定
#  --hashlimit-burst 30 ・・・バースト値(上記--hashlimit値を無視して接続できる数)を「30」に設定
#  --hashlimit-mode srcip,dstport ・・・制限対象を「送信元IPアドレス」と「宛先ポート」で識別する
#  --hashlimit-htable-expire 120000 ・・・ハッシュテーブル中のレコード保持期間を「120000ミリ秒」に設定
iptables -A HASHCHECK -m hashlimit --hashlimit-name hashcheck_t \
         --hashlimit 1/m --hashlimit-burst 30 --hashlimit-mode srcip,dstport  \
         --hashlimit-htable-expire 120000 -j ACCEPT

# 許可されなかった通信をログに記録する
iptables -A HASHCHECK -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES HASH DROP] : '

# 許可されなかった通信をDROPする
iptables -A HASHCHECK -j DROP

# チェインを適応
iptables -A INPUT -p icmp  -j HASHCHECK #サンプル ICMPを制限
実際に使用する場合は、HASHLIMITでの制限を行う前に以下の処理を行ったほうがよいでしょう。

信頼できるIPアドレス/IPアドレス帯からの通信を許可(誤爆防止)
確立済み通信[ELATED,ESTABLISHED]の許可(確立済みの通信に対してhashlimit実施することは余り無いように思えます)

-------------------------------------------------------------------
man iptablesのhashlimiの部分

hashlimit
       hashlimit uses hash buckets to express a rate limiting match (like  the
       limit  match)  for a group of connections using a single iptables rule.
       Grouping can be done per-hostgroup (source and/or destination  address)
       and/or  per-port.  It  gives  you the ability to express "N packets per
       time quantum per group":

       matching on source host
              "1000 packets per second for every host in 192.168.0.0/16"

       matching on source prot
              "100 packets per second for every service of 192.168.1.1"

       matching on subnet
              "10000 packets per minute for every /28 subnet in 10.0.0.0/8"

       A hash limit option (--hashlimit-upto, --hashlimit-above)  and  --hash-
       limit-name are required.

       --hashlimit-upto amount[/second|/minute|/hour|/day]
              Match  if  the  rate  is below or equal to amount/quantum. It is
              specified as a number, with an optional time quantum suffix; the
              default is 3/hour.

       --hashlimit-above amount[/second|/minute|/hour|/day]
              Match if the rate is above amount/quantum.

       --hashlimit-burst amount
              Maximum  initial  number  of  packets to match: this number gets
              recharged by one every time the limit  specified  above  is  not
              reached, up to this number; the default is 5.

       --hashlimit-mode {srcip|srcport|dstip|dstport},...
              A comma-separated list of objects to take into consideration. If
              no --hashlimit-mode option is given, hashlimit acts like  limit,
              but at the expensive of doing the hash housekeeping.

       --hashlimit-srcmask prefix
              When  --hashlimit-mode  srcip  is  used,  all  source  addresses
              encountered will be grouped according to the given prefix length
              and  the  so-created subnet will be subject to hashlimit. prefix
              must be between (inclusive) 0 and 32. Note that --hashlimit-src-
              mask 0 is basically doing the same thing as not specifying srcip
              for --hashlimit-mode, but is technically more expensive.
  --hashlimit-dstmask prefix
              Like --hashlimit-srcmask, but for destination addresses.

       --hashlimit-name foo
              The name for the /proc/net/ipt_hashlimit/foo entry.

       --hashlimit-htable-size buckets
              The number of buckets of the hash table

       --hashlimit-htable-max entries
              Maximum entries in the hash.

       --hashlimit-htable-expire msec
              After how many milliseconds do hash entries expire.

       --hashlimit-htable-gcinterval msec
              How many milliseconds between garbage collection intervals.


------------------------------------------------------------------
filterテーブルをファイルに直接書くときは
行頭に「*(アスタリスク)」を付けて、最後を「COMMIT」で指定。その間に書かれた設定がfilterテーブル。

------------------------------------------------------------------
iptables -F はポリシーの変更は行わない。
ポリシーがrejectになっていて、それに続くルールでsshをacceptとして動作させているときには注意。
その場合、iptables -Fをやったとたんにsshが切断される。

それをやってしまった時の対処、対策
この場合iptablesファイルの書き換えはされていないので、
PC本体が近ければ、(pcにモニターとキーボードがついていれば直接操作できるけど・・・)pcの電源を切って再起動させればiptables -Fをやる前のiptablesファイルのセーブはされていないので、それを読み込んで立ち上がる。

もし、pcから遠いところでsshをやっているときは保険をかけておく。

atコマンドに/etc/init.d/iptables restartを登録しておくか、

(sleep 60; /etc/init.d/iptables restart) &

などとしておくか。
----------------------------------------------------------------
自ローカルアドレスをACCEPTしておくには
# iptables -I INPUT -s 192.168.1.0/24 -j ACCEPT

ipアドレス123.45.67.890を拒否したいとき
# iptables -I INPUT -s 123.45.67.890 -j DROP

123.45.67.*を全て拒否(123.45.67.0~123.45.67.255)
# iptables -I INPUT -s 123.45.67.0/24 -j DROP
もしくは iptables に下記を追加
 -A INPUT -s 123.45.67.0/255.255.255.0 -j DROP
----------------------------------------------------------------
iptablesのルールを一行だけ削除したいときは
まず、ルールの行ナンバーを調べる。
iptables -L --line-numbers

次に、チェイン名に続いて行ナンバーを入力する。
iptables -D INPUT 1
----------------------------------------------------------------

さくらサーバーの解説を元に最後に自分に必要なルールを付け足した。
最初にDROPから入る。この方が自分の使っているのよりも安全。

# (1) ポリシーの設定 OUTPUTのみACCEPTにする
*filter
:INPUT   DROP   [0:0]
:FORWARD DROP   [0:0]
:OUTPUT  ACCEPT [0:0]

# (2) ループバック(自分自身からの通信)を許可する
-A INPUT -i lo -j ACCEPT

# (3) データを持たないパケットの接続を破棄する
-A INPUT -p tcp --tcp-flags ALL NONE -j DROP

# (4) SYNflood攻撃と思われる接続を破棄する
-A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# (5) ステルススキャンと思われる接続を破棄する
-A INPUT -p tcp --tcp-flags ALL ALL -j DROP

# (6) icmp(ping)の設定
# hashlimitを使う
# -m hashlimit                   hashlimitモジュールを使用する
# —hashlimit-name t_icmp  記録するファイル名
# —hashlimit 1/m               リミット時には1分間に1パケットを上限とする
# —hashlimit-burst 10        規定時間内に10パケット受信すればリミットを有効にする
# —hashlimit-mode srcip    ソースIPを元にアクセスを制限する
# —hashlimit-htable-expire 120000   リミットの有効期間。単位はms
-A INPUT -p icmp --icmp-type echo-request -m hashlimit --hashlimit-name t_icmp --hashlimit 1/m --hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-htable-expire 120000 -j ACCEPT

# (7) 確立済みの通信は、ポート番号に関係なく許可する
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

# (8) 任意へのDNSアクセスの戻りパケットを受け付ける
-A INPUT -p udp --sport 53 -j ACCEPT

# (9) SSHを許可する設定
# hashlimitを使う
# -m hashlimit                   hashlimitモジュールを使用する
# —hashlimit-name t_sshd 記録するファイル名
# —hashlimit 1/m              リミット時には1分間に1パケットを上限とする
# —hashlimit-burst 10       規定時間内に10パケット受信すればリミットを有効にする
# —hashlimit-mode srcip   ソースIPを元にアクセスを制限する
# —hashlimit-htable-expire 120000   リミットの有効期間。単位はms
-A INPUT -p tcp -m state --syn --state NEW --dport 22 -m hashlimit --hashlimit-name t_sshd --hashlimit 1/m --hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-htable-expire 120000 -j ACCEPT

# (10) 個別に許可するプロトコルとポートをここに書き込む。
# この例では、HTTP(TCP 80)とHTTPS(TCP 443)を許可している。
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
-A INPUT -p tcp --dport 110 -j ACCEPT
-A INPUT -p tcp --dport 25 -j ACCEPT
-A INPUT -p tcp --dport 465 -j ACCEPT
-A INPUT -p tcp --dport 587 -j ACCEPT
-A INPUT -p tcp --dport 993 -j ACCEPT
-A INPUT -p tcp --dport 995 -j ACCEPT
-A INPUT -p tcp --dport 53 -j ACCEPT
-A INPUT -p udp --dport 53 -j ACCEPT
-A INPUT -p tcp --dport 20 -j ACCEPT
-A INPUT -p tcp --dport 21 -j ACCEPT
-A INPUT -p tcp --dport 4000:4029 -j ACCEPT

COMMIT
-------------------------------------------------------------
hashlimitはicmp(ping)を規制するのにも使える。
-------------------------------------------------------
secureログ、その他のログからからアタックしてくるIPアドレスを探してそれをiptablesに登録してくれるシェルスクリプトを
Brute Force Attack対策+α(iptables) 20160117
という題のサイトのページで公開してくれている(CentOS6用iptablesだと思う。)。
ちなみに、
Brute Force Attack対策+α(Firewalld) 20170517
という、(たぶん)CentOS7用のファイアウォール版もある。
自分は、それを一日に一回くらいcronで回そうと思っている。
27 03 * * * root /usr/local/bin/brute_force_attack_iptables.sh
そのサイトの人は一分間隔で回しているみたいだけど、自分の場合は一日一回、cronで回しておけば、大丈夫だと思う(環境は人それぞれだから、1分でも間に合わない人もいるのだろう。)。
それで、そのスクリプトをそのまま使うと一回のアドレス登録で一回のメールが来る。
つまり、一回のスクリプトの実行で10個アドレスの登録があると、10通のメールが来てしまう。
一分間隔でcronで回すための設計なのでそれでいいのだけど、自分の場合はそれを一日に一回か二回cronで回す予定なので、
それをまとめて一回のメールで配信するように少しだけ自分用に変更させてもらった。

http://ry.tl/brute_force_attack_iptables.html
こちらを使わせてもらった。
------------------------------------------------------------------------------
#!/bin/sh

# 自分用設定 一時ファイル作成ディレクトリの指定/tmp から /dev/shm
# 自分用設定 メール送信先アドレス rootからhoge@hogepeke.comへ変更。
# 自分用設定 TMP3="$TMP_DIR/brute_force_attack3.tmp"を追加。

export LANG=ja_JP.UTF-8

# Ver 20160115

# 攻撃判断回数(デフォルト10回以上)
NG="10"

# ログ監視の有効化設定 「no」で無効。(デフォルトは全て有効)
# 自分用設定 FTPは未インストール、DNSはキャッシングサーバーとして外からは受け入れていない。named.logも作成していない。
TELNET_CHECK="yes"
SSH_CHECK="yes"
FTP_CHECK="no"
MAIL_CHECK="yes"
HTTP_CHECK="yes"
DNS_CHECK="no"

# 監視ログファイル
SSH_LOG="/var/log/secure"
FTP_LOG="/var/log/vsftpd.log"
MAIL_LOG="/var/log/maillog"
HTTP_LOG="/var/log/httpd/error_log"
HTTP_LOG2="/var/log/httpd/access_log"
DNS_LOG="/var/log/named.log"

# HTTP監視除外ディレクトリ及びファイル設定(デフォルトでは「/home」ディレクトリ 以下に存在するファイル全て)
#DIR="/home"
DIR="/var/www/html"
# 攻撃を検知した際に自分にメールを送信するか否か。「no」で無効。(デフォルト有効)
MAILMESSAGES="yes"
# メール送信先アドレス。(デフォルトroot宛)
MAILADDRESS="hoge@hogepeke.com"

# 動作ログのファイル名
BR_LOG="/var/log/brute_force_attack.log"

# ホワイトリストファイルの指定
WHITE_LIST="/root/allow_ip"
# ブラックリストファイルの指定
BLACK_LIST="/root/deny_ip"
#BLACK_LIST="/etc/hosts.deny"
# →TCP Wrapperを使用する場合は後者

# 一時ファイル作成ディレクトリの指定
TMP_DIR="/dev/shm"

# 以降設定不要

# タイムスタンプ設定
LOG_DATE=`date '+%Y/%m/%d %k:%M:%S'`
# 一時ファイル設定
TMP="$TMP_DIR/brute_force_attack.tmp"
TMP2="$TMP_DIR/brute_force_attack2.tmp"
TMP3="$TMP_DIR/brute_force_attack3.tmp"
# フラグ管理
UP_FLAG=0

function_CORE()
{
        if [ $1 = "TELNET" -a $TELNET_CHECK = "yes" ] ; then
                SYSTEM_NAME="$1"
                grep "login:" $SSH_LOG | grep "FAILED LOGIN" | grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" > $TMP
        elif [ $1 = "SSH" -a $SSH_CHECK = "yes" ] ; then
                SYSTEM_NAME="$1"
                grep "sshd" $SSH_LOG | grep "Invalid user" | grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" > $TMP
                grep "sshd" $SSH_LOG | grep "Failed password" | grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" >> $TMP
        elif [ $1 = "FTP" -a $FTP_CHECK = "yes" ] ; then
                SYSTEM_NAME="$1"
                grep "FAIL LOGIN" $FTP_LOG | grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" > $TMP
        elif [ $1 = "MAIL" -a $MAIL_CHECK = "yes" ] ; then
                SYSTEM_NAME="$1"
                grep "authentication failure" $MAIL_LOG | grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" > $TMP
                grep "auth failed" $MAIL_LOG | grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" >> $TMP
        elif [ $1 = "HTTP" -a $HTTP_CHECK = "yes" ] ; then
                SYSTEM_NAME="$1"
                DIR_LIST=`ls $DIR`
                grep "error" $HTTP_LOG | grep "File does not exist" | grep -v "$DIR_LIST" | grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" > $TMP
                grep "error" $HTTP_LOG | grep "script" | grep "not found or unable to stat" | grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" >> $TMP
                grep "\.\./" $HTTP_LOG2 | grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" >> $TMP
                grep "//" $HTTP_LOG2 | grep -v http:// | grep -v https:// | grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" >> $TMP
        elif [ $1 = "DNS" -a $DNS_CHECK = "yes" ] ; then
                SYSTEM_NAME="$1"
                grep "denied" $DNS_LOG | grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" > $TMP
        else
                touch $TMP
        fi

        cp -p $TMP $TMP2

        if [ -s $WHITE_LIST ]; then
                WHITE=`cat $WHITE_LIST`
                grep -v "$WHITE" $TMP2 > $TMP
                cp -pr $TMP $TMP2
        else
                touch $TMP
        fi
        if [ -s $BLACK_LIST ]; then
                BLACK=`cat $BLACK_LIST`
                grep -v "$BLACK" $TMP2 > $TMP
        else
                touch $TMP
        fi

        LIST=`cat $TMP`
        for IP in $LIST
        do
                COUNT=`grep -w "$IP" $TMP | wc -l`
                if [ $COUNT -ge $NG ] ; then
                        if [ -s $WHITE_LIST ]; then
                                if [ `grep -w "$IP" $WHITE_LIST` ] ; then
                                        WHITE_FLAG=1
                                else
                                        WHITE_FLAG=0
                                fi
                        else
                                WHITE_FLAG=0
                        fi
                        if [ -s $BLACK_LIST ]; then
                                if [ `grep -w "$IP" $BLACK_LIST` ] ; then
                                        BLACK_FLAG=1
                                else
                                        BLACK_FLAG=0
                                fi
                        else
                                BLACK_FLAG=0
                        fi
                        if [ $WHITE_FLAG -eq 1 -o $BLACK_FLAG -eq 1 ] ; then
                                :
                        else
                                echo "["$LOG_DATE"] ""[$SYSTEM_NAMEログ監視] IP をブラックリストへ登録:"$COUNT "回 ["$IP"]" >> $BR_LOG
                                echo $IP >> $BLACK_LIST
                                iptables -I INPUT -s $IP -j DROP
                                UP_FLAG=1
                                if [ $MAILMESSAGES = "yes" ] ; then
#                                        echo -e "[$SYSTEM_NAME]ログ監視にて、"$COUNT"回の不正なアクセスログを確認。\n対象ホストのIPアドレスをiptables及びブラッ クリストファイルへ追加しました。\n\nIPアドレス [$IP]"| mail -s "$0" $MAILADDRESS
# 自分用設定
                                         echo -e "\n[$SYSTEM_NAME]ログ監視にて、"$COUNT"回の不正なアクセスログを確認。\n対象ホストのIPアドレスをiptables及びブラッ クリストファイルへ追加しました。\nIPアドレス [$IP]">> $TMP3
                                fi
                        fi
                fi
        done
# IPTABLES更新時に設定を保存
        if [ $UP_FLAG -eq 1 ] ; then
                /etc/rc.d/init.d/iptables save
        fi
# 一時ファイル削除
        rm -rf $TMP $TMP2
}

# 実行
function_CORE TELNET
function_CORE SSH
function_CORE FTP
function_CORE MAIL
function_CORE HTTP
function_CORE DNS

# 自分用設定
if [ $MAILMESSAGES = "yes" ] ; then
#TMP3ファイルはdropするファイルがないと作成されない。TMP3ファイルが存在しない場合。
  if [ -e $TMP3 ]; then
    cat $TMP3| mail -s "iptable drop 登録" $MAILADDRESS
  else
    echo "対象IPアドレスはありませんでした" | mail -s "iptables drop 登録" $MAILADDRESS

  fi
fi
rm -rf $TMP3
# 自分用設定 ここまで

----------------------------------------------------
if [ -s /tmp/hoge.txt ]; then
  # 1バイトでも中身があれば何もしない
else
  # 0バイトだったら消す
  rm /tmp/hoge.txt
fi
-------------------------------------------------
2桁の数字だけを検索したいとき [0-9][0-9]
1桁か2桁の数字だけを検索したいとき [0-9]+
参考:桁数を指定する場合。
\d{2,5}
この場合は、2桁から5桁の間。
-----------------------------------------------------
20170726追加
blackリストには登録されるのに、iptablesファイルには登録されないIPが出てきてしまう。
そうなると、そのIPはいつまでたってもブロックされない。
iptablesコマンドが機能しない時があるってことだよなぁ。

iptablesコマンドで登録するのに時間がかかるのが原因なのか?
2重に使うと2回目のコマンドがきかなくなるのかなぁ。
シェルスクリプトはコマンドの処理が終わらないうちに次のコマンドを実行しないと思っていたけど、そうではないのか。
waitとかsleepで前のiptablesコマンドの実行が終わるのを待たせてから次のiptablesコマンドを使うようにすればいいのか?

ブラックリストを作るのをやめて、iptablesファイルをブラックリストとして使えばいいんじゃないか。
スクリプトを実行する前にブラックリストを全部消して、iptablesファイルからip部分だけをコピーするか。
そうしておけば、iptablesコマンドがたとえ失敗したとしても次回の網にかかる。


20170726以前追加
うまく動かなくなったときはブラックリストとiptablesに登録してあるリストを全部削除するとまた動き出す。
: > /root/deny_ip
(:このコロンは何もしない、空のという意味。)
iptables -F
service iptables save
/etc/init.d/iptables restart
(自分のうまく動かなくなった理由は、たぶん、cronでスクリプトを動かしたときにiptablesコマンドだけが動いていないときがあった。だから、ブラックリストにipアドレスが書き込まれて、iptablesのテーブルにipアドレスが書き込まれない状態になった。ブラックリストに書き込まれたアドレスは重複しないようにiptablesに書き込まないから、iptablesコマンドが動かないときにブラックリストに登録されたipアドレスは永遠にdropされない状態になる。たぶん、多く攻撃してくるアドレスは連動している。dropされると次のipアドレスに移るのだけど、dropされなければずーと、そのアドレスが攻撃を続ける。だから、そのipアドレスが生き続けたのかな?)

上のスクリプトの設定で
BLACK_LIST="/root/deny_ip"
#BLACK_LIST="/etc/hosts.deny"
# →TCP Wrapperを使用する場合は後者
の3行があるが、
hosts.denyなどを制御しているTCP_wrapperライブラリはかなり古いものだそうだ。
だから、sshdなどがそれをサポートしていれば使えるのだそうだけど、機能しないこともあるらしい。
iptablesはOSのカーネルの一部として動いているので、速くてより広い範囲でサポートしているらしい。
速いことは速いらしいがiptablesは処理が増えてくるとアクセスができなくなったり、いいことはないらしい。
iptablesには、あまり規則がたまらないようにスクリプトを書き換えた方が自分にはいいのかもしれない。





2014年8月26日火曜日

centos apache httpd.conf Directory 設定 1

apacheのバージョン
#httpd -v
で確認すると、
Server version: Apache/2.2.15 (Unix)

デフォルト設定ファイルの場所は。
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
(conf.d以下へ自分の作ったルールを切り離して保存できる。)

設定。
/var/www/htmlへのアクセスを全てのIPから拒否して
/var/www/html/hogehogeへのアクセスを全てのIPから許可させたいとき。
(メモ:AllowOverrideは、主に.htaccessの許可、不許可。
drupalなどでclean ursを使いたいときは
LoadModule rewrite_module modules/mod_rewrite.soコメントを外して使うが、その動作に関しては.htaccessに書かれる。だからAllowOverrideをAllにしておかないと、drupalは動かない。)
--------------------------------------------------------
<Directory "/var/www/html">

#      AllowOverride All
       AllowOverride None

#       Order allow,deny
#     Allow from 192.168.1.
#     Allow from all

      Order deny,allow
      Deny from all

</Directory>

<Directory "/var/www/html/hogehoge">
#    AllowOverride All
      AllowOverride None

      Order allow,deny
#     Allow from 192.168.1.
      Allow from all
</Directory>
--------------------------------------------------------

httpd.confの中にごちゃごちゃと自分のルールを書いていくと、後でわからなくなる。
自分の付け足したルールを切り離して別のファイルに保存したいときは
-----------------------
#
# Load config files from the config directory "/etc/httpd/conf.d".
#
Include conf.d/*.conf
-----------------------
と、httpd.confに書いてある通りに、自分で作ったルールを別ファイルにして保存する。

設定変更後の再起動
/etc/rc.d/init.d/httpd restart

再起動でエラーが出たりするときは、設定文に全角文字、全角スペースが入っていないかの確認。


dhcp server 割り当て一覧

dhcp割り当ての一覧が記録されているファイル。

/var/lib/dhcpd/dhcpd.leases

趣味別に情報、ニュース発信

山のタイムリーな情報、ニュース。
特に山は時間と共に状況が変化するから・・・。

車、
自転車、
バイク

2014年8月25日月曜日

centos ssh version 2 設定

SSHの設定

最初にリモートログインをホスト名を使ってつなげるようにする。
/etc/hosts.allow

sshd:ALL
と記述。
(ホスト名ではなくてIPアドレスで指定すれば、sshd:ALLと記述しなくてもつながる。)

次に鍵セットを作っていく。
(ここではユーザー名をUserNameとする。)

SSH プロトコル・バージョン2の鍵セットは2種類あり、自分はRSAを使う(rsa1はバージョン1用)。

鍵セット、RSAとDSAの違い。

RSA--ユーザ認証と通信の暗号化を行う。
DSA--ユーザー認証の暗号化だけを行う。
一般的にはRSAが使われるらしい。

自分はRSAを使っている(自分の昔のメモを見て知った。設定をしたときは知っているけど、作り終えればすぐに忘れてしまう)。

レンタルサーバーを使っている場合は、クライアント側で鍵ペアを作る。
今回はサーバー側で鍵を作ってクライアント(Windows)に秘密鍵を移動し、puttyで使用する。

最初に鍵を作りたいユーザーでログインする。
     ここでユーザーを新しく作るときは
          # useradd UserName
          # passwd UserName

ユーザー名が表示されないとき(自分の場合は何故か表示されなくなってしまった。-bash-4.16などと表示される。何故だ?後述: ユーザーディレクトリをsambaで共有させるとそうなってしまうみたいだ。sambaの共有を解除したら正常になった。どっちみち公開サーバーにはsambaは使わない。)は
whoami
でユーザー名表示
現在の場所は
pwd
で確認できる。

---------------------------------------------------------------------------------
今はrootになる必要はないが、suに"-"をつけたときとつけないときの違いを見つけたので一応メモ
"su"  rootユーザに切り替わるがrootユーザ環境にはならない。

"su -"  rootユーザになりrootユーザの環境を使用する(ユーザーとディレクトリ、共にrootに移動)。

ユーザーの切り替えも同じ
"su UserName"
"su - UserName"
正確な違いがわかない。"-"をつけとけば無難。
---------------------------------------------------------------------------------

次に、鍵の作成。
$ ssh-keygen -t rsa
ここで、保存場所とパスフレーズを入力。
(このパスフレーズはスペースも使える。)


できた秘密鍵と公開鍵がそれぞれ
UserName/.ssh/id_rsa
UserName/.ssh/id_rsa.pub
になり、
公開鍵、id_rsa.pubを
UserName/.ssh/authorized_key
に追加する。(authorized_keyはテキストファイル。存在しなければcatで付け加えるときに新たに作られる。)

$ cat /home/UserName/.ssh/id_rsa.pub >> /home/UserName/.ssh/authorized_keys

公開鍵をユーザ自身だけにアクセスできるように変更。
#chown UseName:UserName /home/UserName/.ssh/authorized_keys
#chmod 600 /home/UserName/.ssh/authorized_keys

公開鍵の削除
#rm -f /home/UserName/.ssh/id_rsa.pub

ここから先はWindows側
puttyから操作をするように設定をする。

秘密鍵をWindows側にFTPを使うなりなんなりして適当なWindows側フォルダーにコピーをして
puttyが使える形に秘密鍵を変換するためのputty付属のputtygen.exeを立ち上げる。

「File」 > 「Load private key」
で秘密鍵を読み込んで、
パスフレーズを入力。

「File」 > 「Save private key」
で適当な名前をつけて、適当な場所に保存。
ここで、puttygen.exeを閉じる。

次にputty本体を立ち上げて
「Category」 > 「Connection」 > 「SSH」 > 「Auth」
で、秘密鍵の場所の指定をする。

SSHの公式ポートは22/TCPになっている。
そこいら辺は空いてるポートを適当に。


以下、
/etc/ssh/sshd_config
の編集。

rootでのログインを禁止しておく。
#PermitRootLogin yes

PermitRootLogin no

通常パスワードを禁止しておく
#PasswordAuthentication yes

PasswordAuthentication no

空パスワードを禁止しておく。
#PermitEmptyPasswords no

PermitEmptyPasswords no

最後にSSHの再起動。
# service sshd restart

2014年8月17日日曜日

泊まるところ。

それぞれの人が地元の安く泊まるところの紹介。
健康ランドも含む。
他県の人へ。
他国の人へ。

2014年8月12日火曜日

電気屋さんのネットワークを作る

電気屋さんと言っても、配電盤などの工事をやる電気屋さん。

仕事別に必要な資格、許可、免許の一覧みたいな物

drupal 7 コンテンツを追加できなくなってしまったとき。

コンテンツを付け足そうとしたら、

You have not created any content types yet. Go to the content type creation page to add a new content type.

と言われて既に作られているコンテンツが追加できなくなってしまった。


解決方法。
Home » Administration » Structure

「Navigation」の「list links」をクリックする。
(/admin/structure/menu/manage/navigation)

ここで、ENABLEDにチェックを入れる。
ここのチェックを外した覚えはないのだけど、外れていた。
少し前のdrupalをアップデートしたときに、ここのチェックが外れたのかな?

最後にセーブするのを忘れないように。

(後述、drupalをアップデートしていないのに、また同じ現象が起きた。何がきっかけでこうなるのだろうなぁ?)

2014年8月10日日曜日

drupal 7 favicon ファビコン override

下のやり方は正しくない。
http://yasutam.blogspot.jp/2017/06/favicon.html


misc/favicon.ico
に大元のファビコンがある。
これをオーバーライドするために自分のテーマのディレクトリ以下に
自分で作ったfavicon.ico
を置く。
faviconのサイズは16x16ピクセル。

BMP形式で保存して、icoに書き換えた。

2014年8月7日木曜日

Kensington Expert Mouse OpticalBlack トラックボール マウス

昨日、

Kensington
Expert Mouse OpticalBlack
が届いた。
楽天ソフマップ
価格 8,400円 (税込 9,072 円) 送料込
ポイントアップ 5倍 420ポイント

昔は
SlimBlade Trackball 72327JP
が欲しかったのだけど、デザインの好みがExpert Mouseに変わってきたんで。
届いてから気がついたのだけど、SlimBadeはトラックボールでスクロールができる。
そういう効率的な所を知ってしまうと、SlimBladeでも良かったのかなぁ。とも思う。



drupal-8.0.0-alpha14 インストール

インストール途中の必要条件の検証(Verify requirements)の所でalpha13にでなかったエラー(Error)が出た。
自分の環境は
Windows7
WAMP
PHPのバージョンは5.4.12

エラー文は、
「PHP extensions Disabled
Drupal requires you to enable the PHP extensions in the following list (see the <a href="http://drupal.org/requirements">system requirements page</a> for more information):<div class="item-list"><ul><li>fileinfo</li></ul></div>」(英語文)

「PHP拡張 無効
Drupalを使用するには、以下のPHP拡張を有効にしてください (詳しくは <a href="http://drupal.org/requirements">システム要件ページ</a>を参照してください):<div class="item-list"><ul><li>fileinfo</li></ul></div>」(日本語文)


PHP拡張が無効って言われてもなぁ。
もうちょっと具体的に言われないと、自分にはわからない。
システム要件ページを参照って言われても広すぎるし・・・。

と思っていたら同じエラーのことを言っている人がいる・・・
https://www.drupal.org/node/2315033

それによると、
php fileinfo extension libをインストールすればいいとのこと。
でも、PHP5.3以上はデフォルトでONになっている。と、どこかに書いてあったが。。。
と思いながら自分のPHPの設定を見てみるとオフになっていた。
ONにして、インストールを再開するとエラーもなく完了。

Drupal 8。調子いい。
もうそろそろリリースしてもいいんじゃない?
Comming soon.とは書いてあるけど・・・
来月あたりかな。

2014年7月31日木曜日

一人じゃできないことのプロジェクト。

車とか、バイクのレース。
月まで行く。
トレールラン。
電気自動車。

2014年7月30日水曜日

drupal Forum module フォーラムモジュール テンプレート css

テンプレートとかCSSとかをいじる前に、
Home » Administration » Structure » Content types » Forum topic
のMANAGE DISPLAYタブなどから自分の思うように設定変更が可能かどうかを確かめる。

以下、自分用メモ

modules\forum\forum-list.tpl.php          フォーラムの表紙。フォーラムのリスト。
Forum
Topics
Posts
などの表示はここでしている。
フォーラムを入れ子にしたときも、ここの表示が使われる。

modules\forum\forum-topic-list.tpl.php    フォーラム次ページ。フォーラムトピックのリスト

modules\node\node.tpl.php                    フォーラムのトピックページ。
ただ、このnode.tpl.phpはフォーラム用に書き換えると全てのノードコンテンツに反映されてしまうので、フォーラムのトピックだけに反映させるために、ファイル名をnode--forum.tpl.phpに書き換えてテンプレートフォルダにコピーする。node--forum.tpl.phpのforumはコンテンツのタイプのマシンネーム(Home » Administration » Structure)。

modules\comment\comment.tpl.phpの2つフォーラムトピックの「Add new comment」「reply」のコメント。テーマへのオーバーライドはcomment--node-forum.tpl.phpに名前を変えてフォーラムだけへ適応させる。

modules\comment\comment-wrapper.tpl.phpは「Add new comment」「reply」をくるんでいる外側。
comment-wrapper--node-forum.tpl.php
に書き変えて、自分のテーマのテンプレートに貼り付けて編集。
comment-wrapper.tpl.phpの
    <h2 class="title comment-form"><?php print t('Add new comment'); ?></h2>
    <?php print render($content['comment_form']); ?>
この2行を
<!--    <h2 class="title comment-form"><?php print t('Add new comment'); ?></h2> -->
    <?php print render($content['comment_form']['comment_body']); ?>
    <?php print drupal_render_children($content['comment_form']); ?>
に変えて
comment-wrapper--node-forum.tpl.php
にし、オーバーライドさせる。
ここでは、['comment_body']以外にも
['author']
['field_email']
['actions'['submit']
などがある。
(上の方法でやるとsaveボタンを押してもそれが反映されない。ということで取りやめた。Add new commentのh2をh3に変える程度にした。)

テンプレートはコピーペーストしたファイルを書き換えるだけでオーバーライドされるけど、cssファイルはそれを自分が使うテーマに移動した場合、自分のテーマの.infoファイルでその場所の指定をする必要がある。
ファイルを移動したあとは、それを反映させるためにキャッシュクリアをする必要があるみたいだ。

forum.css訂正箇所。

#forum td.created,
#forum td.posts,
#forum td.topics,
#forum td.last-reply,
#forum td.replies,
#forum td.pager {
  white-space: nowrap;
}
で、
white-space: nowrap;
だと自動で折り返しを禁止してしまう。
そうすると、自分の場合はかなりはみ出してしまうので
white-space: normal;
と、禁止しないノーマルモードに戻しておく。

2014年7月29日火曜日

替芯 替え芯ホルダー ボールペン

ボールペンの替芯を替え芯ホルダーを使って使えるそうだ。

ボールペンの替え芯

ビクーニャ
ジェットストリーム
コレト
シグノ


FABER CASTELL
製図用ホルダー 3.15mm芯用 TK-9400(ファーバーカステル)

Cross Century II, Sterling Silver, Selectip Rolling Ball Pen (HN3004) クロス ボールペン

クロスのボールペン

Cross Century II, Sterling Silver, Selectip Rolling Ball Pen (HN3004)

をプレゼント用に注文したのだけど、

Refill 替え芯は、どのくらい互換性があるのだろ?

このボールペンの説明に
ジェルインク8523 黒が標準装備
以下の替芯もご使用できます。
●ボールペン(油性ジャンボサイズ)8562-1黒(M・中字)、8562-3青(M・中字)
●ジェルインク 8521 青、8013 赤、8014 紫
●ポーラス芯(水性) 8443 黒(M・中字)、8444 黒(F・細字)、8441 青(M・中字)、8442 青(F・細字)
●ドキュメントマーカー(水性)8017 黄
とある。

クロスの中に何種類かの互換性のないリフィルがあるらしくて、HN3004はマイナーなリフィルを使っているみたいだ。
昔はCross of Japanで取り扱っていたけれども、今は扱っていないようだ。

メジャーな方だったら、三菱の替芯 SK‐8なども使えるそうだけど、HN3004はそっちのリフィルではないらしい。

細め油性のペン先リフィルが欲しいって言っていたんだよなぁ。
細めの水性ならあるのだけど・・・。

ま。また、別の機会にもう一つプレゼントすればいいや。

後述
楽天の一番安く売っているところ(15033円)で聞いたら、取り寄せるのに3ヶ月くらいかかるかもしれないと返信があった。
他に聞いても同じようですよ。とのことだったのでアメリカのアマゾンを見たら、$99.95(10570円、在庫あり)で売っていた。送料が$19.9(2104円)で、計$119.85(12674円)。
アマゾンには「この商品は日本には送れません。」と書かれていたので、アマゾンのマーケットプレイス?から頼んだ。こっちは、個人のお店だから?か、日本に送ってもらうことができた。ここに書いてある値段もそのマーケットプレイスのもの。

Cross Century  IIは、同じ形でいろいろな種類があった。知らなかった。
CROSS クロス CENTURY2-Collection クローム 3504                6,426円(税込)
CROSS クロス CENTURY2-Collection クラシックブラック 2504          7,560円(税込)
CROSS クロス CENTURY2-Collection メダリスト                             7,560円(税込)
CROSS クロス CENTURY2-Collection 10金張 4504 10金張             16,632円(税込)
CROSS クロス CENTURY2-Collection スターリングシルバーHN3004  18,144円(税込)
(楽天のお店から)

7月29日に注文して8月5日に郵便受けに入っていた。
アマゾンの予定は
Shipment #1:1 item - delivery estimate: August 13, 2014 - August 22, 2014
だった。



2014年7月24日木曜日

drupal 7 テンプレート db_query


複数職を持っている人を職業別に分類

-----------------------------CSS部-------------------------------------
span {
display: inline-block;
width: 9em;
}

------テンプレート部 (この後このテンプレートはは訂正した。訂正分はこの直後)-----------

<?php

print '<hr>';

$result = db_query('SELECT taxonomy_term_data.name as tagname, users.name as uname FROM ({field_data_field_yoo} LEFT JOIN {taxonomy_term_data} ON field_data_field_yoo.field_yoo_tid = taxonomy_term_data.tid) LEFT JOIN {users} ON field_data_field_yoo.entity_id = users.uid');
$ygrp = "hogehoge"; //最初に適当にあり得ない職業の名前をつけておく。(かっこ悪いけど、こんなやり方しか今のところ思いつかない。)
foreach(
$result as $item) {

if ($ygrp !== $item->tagname){      //もし$item->tagnameが最初に出てきた職業名ならばトップに表示をする。
print '<hr>';
print "<p><span>".$item->tagname."&nbsp;"."</span>".$item->uname."&nbsp;&nbsp;&nbsp;"; //<span>はユーザーの先頭の文字をそろえるため。cssで、10文字文下がったところから表示させる設定にしてある(display: inline-block; width: 10em;)。&nbsp;はスペース。
}
else
{  print $item->uname."&nbsp;&nbsp;&nbsp;";  //もし、$item->tagnameが2度めならば、職業名は表示させない。
}

$ygrp = $item->tagname;             //$ygrpの値をここで更新。

}

?>


------------------テンプレート 訂正 (ユーザー名にリンクを張った)-------------------
<?php

print '<hr>';

$result = db_query('SELECT taxonomy_term_data.name as tagname, users.name as uname, uid FROM ({field_data_field_yoo} LEFT JOIN {taxonomy_term_data} ON field_data_field_yoo.field_yoo_tid = taxonomy_term_data.tid) LEFT JOIN {users} ON field_data_field_yoo.entity_id = users.uid');
$ygrp = "hogehoge"; //最初に適当にあり得ない職業の名前をつけておく。(かっこ悪いけど、こんなやり方しか今のところ思いつかない。)
foreach(
$result as $item) {

if ($ygrp !== $item->tagname){      //もし$item->tagnameが最初に出てきた職業名ならばトップに表示をする。
print '<hr>';
print "<p><span class=yspan>".$item->tagname."&nbsp;"."</span><a href=\"http://localhost/dtest/user/".$item->uid."\">".$item->uname."</a>&nbsp;&nbsp;&nbsp;"; //<span>はユーザーの先頭の文字をそろえるため。cssで、10文字文下がったところから表示させる設定にしてある(display: inline-block; width: 10em;)。&nbsp;はスペース。
}
else
{  print "<a href=\"http://localhost/dtest/user/".$item->uid."\">".$item->uname."</a>&nbsp;&nbsp;&nbsp;";  //もし、$item->tagnameが2度めならば、職業名は表示させない。
}

$ygrp = $item->tagname;             //$ygrpの値をここで更新。

}

?>


drupal 7 login logout は User menu

ページで、ログイン、ログアウトのページが消えてしまった。
消えてしまったというか、以前、まっさらな状態にしたときに消してしまっていて、そのままになっていた。(のだと思う。)

structureのblock、
admin/structure/block
で、
User login
を付け加えたけど、表示されなかった。

User menuを付け加えたら表示された。

User loginは必要ないのか?
何のためにあるのか?

後述---User loginは必要。User menuとセットで設置しておかないとログアウトした後でログインメニューがでてこない。

2014年7月17日木曜日

インプラント 歯

母親がインプラントを入れる。

前歯の何本かと下の歯の何本かがすでにインプラントなのだけど、その中の上の前歯がだめになってしまった。この前手術して、古いインプラントの土台を抜いてしまった。

その時、そこの口腔外科の先生は、骨がうすいからもうインプラントはできない。といっていたのだそうだ。
だからインプラントにはもうできないとあきらめかけていたのだけれど、大阪の結構な数をこなしている歯医者さんに相談したら、できそうだということで、お願いすることになった。

インプラントは前歯の一部とか、部分的に入れると、そこだけに負荷がかかるから持ちが悪いらしい。
入れるならいっぺんに入れると長持ちするらしい。
と言うことで今回は上の歯を全部インプラントにすることになった。

父親は20年以上前に地元で上下全部をやったのだけど、いまもしっかりしている。と言っている。
母親のだめになったインプラントも父親と同じ所でやったものだ。
技術が悪いというよりも部分的に入れていたから負荷がかかってだめになってしまった。というのだと思う。もう、入れてから10何年かたっている。
先日抜いた前歯は、2本の土台で3本の歯を入れていたそうだ。