それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

PDFをページ数指定で高速に読み込む。

PDF 読み込み遅んだよ!

PDFってなんでこんなに無駄にページ数多いの。ってなりなす。PDFをMagickで読み込んだら遅いのなんのって。

require 'Rmagick'
name = 'out.pdf'
im = Magick::Image.read(name) # めっちゃ遅い
im.esize #=> 300

PDFが枚数多いとものすごく時間かかるんですよ。メモリも食うしたまったもんじゃない。PDF遅いってなる。

早く読む方法を見つけた

高速に処理できる。なんと、ページ数を指定して読み込むことが出来る。

require 'Rmagick'
name = 'out.pdf[0]'
im = Magick::Image.read(name) # 超早い!
im.esize #=> 1

PDFの各ページに配列のインデックスを扱うようにアクセスできる。便利。

速度を測定してみる。

out.pdf を作る

for i in {1..10}; cp src.png $i.png ; done 
convert *.png out.pdf

とりあえず、10枚程度のPNGを放り込んだPDFで実験する。

速い!

takuya@~/Desktop$ time ruby  while_pdf.rb

real    0m4.624s
user    0m4.132s
sys 0m0.226s
takuya@~/Desktop$ time ruby  one_page.rb

real    0m1.331s
user    0m1.211s
sys 0m0.047s

10枚のウチ1枚だから10%とまでは行かないけれど、4倍くらい速いかった。強い。

参考資料

RMagick で PDF を jpg や png に変換する - happy lie, happy life

cron/crontab で 複数行の実行には波括弧 {} を使う

crontab に書ける機能少なく無いですか?

crontab の限界ってあるんですよ。波括弧使えたらもう少し楽に記述できるのに。

でも出来ないんですよ curly brace が使えない。

使えたらイイのにと思って調べたらとてもカンタンな解決方法が見つかった

やりかた

  • cron で起動するシェルを bashにする
  • bashの機能を用いて複数コマンドを実行する
  • 方法1 波括弧 { cmd_01; cmd_02;cmd_03;}
  • 方法2 && に依る実行 cmd_01 && cmd_02 && cmd_03

cd などで、ワーキングディレクトリを変えて、crontab が実行されるディレクトリを変えるときに便利など。

使う方法

cron のシェルをbash にする。

cron は SHELL=sh で動作しているので SHELL=bash に切り替えてあげる。

記述例

crontab

SHELL=bash

0 12 * * * *  { cd /var/www ; /var/scripts/my_command; } > /dev/null

これで、穏やかにシェルスクリプト実行をCRONで実行できそう.

例えば日付と曜日を条件に入れるなどの処理を書けそうですね。

波括弧で複数行を書くかわりが出来ますね

波括弧を使わない解決方法

スクリプトの実行ディレクトリを書き換える程度であれば、&& で繋いであげれば実現可能

SHELL=sh

0 12 * * * *  cd /var/www && /var/scripts/my_command  

これでも出来ますけど、波括弧使えたほうが楽ですね。

注意点

SHELL=bash
SHELL=sh

とサンプルで指定してるのには意味があって、{ command; command; }はシェルの機能なので、使ってるシェルに依っては動作しなかったりするので注意が必要。私は bash なので特に問題なく動作している。

参考資料

http://stackoverflow.com/questions/24488962/why-cant-i-use-curly-brackets-in-crontab

2018-04-02

セミコロンの抜け修正。あと細かい記述を改訂

crontab で 複数行に渡る、cron ジョブを記述するには

こちらを参照

詳しい内容はこちらに書きました。

cron/crontab で 複数行の実行には波括弧 {} を使う - それマグで!

複数行のcrontab コマンドってかけないのかな

調べたけど、かけないことがわかった。

man によると

The ``sixth'' field (the rest of the line) specifies the command to be run.  The entire command portion of the line, up to a newline or % character, will
       be executed by /bin/sh or by the shell specified in the SHELL variable of the crontab file.  Percent-signs (%) in the command, unless escaped with  back‐
       slash  (\),  will  be  changed  into newline characters, and all data after the first % will be sent to the command as standard input. There is no way to
       split a single command line onto multiple lines, like the shell's trailing "\".

記号 % は改行として、sh に渡されるが、バックスラッシュを渡すようなものはない。って書いてありました。

残念。

ぐぐったら minix のcrontab は出来るっぽいけど、Linuxは無理ですね。

man に書いてないんだから、試すまでもないか

追記:できるっぽいので別エントリに

SlideShareを自動ブラウジングしてJPGからPDFを取出す。

以前作ったSlideShareの保存スクリプトを改良した

Prawn使ってたので、どうしてもA4サイズになっちゃって困ってたので、JPEGをそのままPDFにすることにした

#!/usr/bin/env ruby 
#

require 'rmagick'
require 'mechanize'
require 'open-uri'
require 'pry'

url = ARGV.shift
m = Mechanize.new
m.user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36"
target_size = 'full'

begin

  m.get  url

  xpath = "//img[@class=\"slide_image\"]/@data-#{target_size}"
  # binding.pry
  list =  m.page.search(xpath).map{|e| e.text() }

  f_name = m.page.title.to_s + '.pdf'

  imgs = Magick:: ImageList.new
  list.each{|image_url|
    sub_m = m.clone
    sub_m.get(  image_url   )
    imgs.push( Magick::Image.from_blob( sub_m.page.body )[0] ) 
  }
  imgs.write(f_name)
  


rescue => e
  puts e 
  if target_size == 'full' then 
    target_size ='normal'
    retry
  end
   if target_size == 'normal' then 
     target_size = 'small'
     retry
   end
  raise e 
end

使い方

スクリプトを保存して、URLを引数に起動するだけ。

 ./slideshare~download.rb http://www.slideshare.net/XXX/YYY

SlideShare を見てるだけです。

繰り返しになりますが、Mechanizeはブラウザです。

LTEの回線パケット上限が逼迫するので、仕方なくオフラインキャッシュを作りました。

SlideShareは通信無駄に多過ぎなんですよ!

関連資料

takuya-1st.hatenablog.jp

ruby imageMacick RMagick で 画像からPDFを作る

rmagick で PDFを作るのがちょっと手間だったのでメモ

rubyimagemagick 実装である rmagick が有ります。

RMagick を使えば、magick 関連が使えるbindings で重宝する。

無論、Rubyからmagickを使うには、convert/mogrifyのシェル呼び出しで済むのだ。

だけど、シェル呼び出しだと一時ファイルを作ったり消したりになるので、デバッグが一手間増えるんですよ。

シェル呼び出しは確実なんだけど、パパパパパパッと試したい時に不便だったりする。

RmagicでPDF作成

シェル呼び出しだとこれだけで済むのですが

convert sample1.jpg sample2.jpg out.pdf 

これと同じをRMagickでやるには

#!/usr/bin/env ruby

require 'RMagick'

r = Magick::ImageList.new()

r.push( Magick::Image.read( 'sample1.jpg')[0] )
r.push( Magick::Image.read( 'sample2.jpg')[0] )

r.write('out.pdf')

このようになる。

ポイントはImageListもImageも配列であるということ

ruby から処理を行うと Magick::ImageMagick::ImageList のどちらも、配列風のオブジェクトであるという点にある。

そのため、push しようとしても「配列なんていられるか!バーカ!」と rmagickに怒られることになる。

/Users/takuya/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rmagick-2.15.4/lib/rmagick_internal.rb:1291:in `is_an_image': Magick::Image required (Array given) (ArgumentError)
    from /Users/takuya/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rmagick-2.15.4/lib/rmagick_internal.rb:1729:in `block in push'
    from /Users/takuya/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rmagick-2.15.4/lib/rmagick_internal.rb:1728:in `each'
    from /Users/takuya/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rmagick-2.15.4/lib/rmagick_internal.rb:1728:in `push'
    from rmagick-test.rb:9:in `<main>'

そのため、Imageから先頭を取出す(どうせ要素数1なのに面倒くさい)

image_list = Magick::ImageList.new()

i = Magick::Image.read( 'sample1.jpg')[0] 
image_list.push i

このような一手間増える処理が必要だった。

これを行うことで、JPEGだけから構成されるPDFを作成することが出来る。

画像JPEG だけから構成されるPDFはZipファイルをより管理が容易だし、メールなどで送付する際にも大変便利。

setup.py install したパッケージを消す

setup.py で インストールしたパッケージを消すには

python setup.py install

よく出てきます。よく使います。でも間違ってインストールした時にどうするの

pip list 
pip uninstall パッケージ名

pip 使えば出てきます。

pip がない場合は入れて下さい.

curl で ファイルダウンロード名を自動的につける(disposition 名にする)

ファイルダウンロードURLをcurl した時に、名前が・・・

curl -L -o  'https://docs.google.com/uc?id=0B3X9GlR6EmbnQ0FtZmJJUXEyRTA&export=download'

つらい・・・

takuya@:~$ ls uc\?id=0B3X9GlR6EmbnQ0FtZmJJUXEyRTA\&export=download
-rw-rw-r-- 1 takuya takuya 7805504 2016-07-07 17:02 uc?id=0B3X9GlR6EmbnQ0FtZmJJUXEyRTA&export=download

こんなファイル名いらない・・・・

ファイル名を自動でつけて欲しい

ダウンロード時には Content-disposition ヘッダでファイル名を指定されているのでソレを使ってファイルを使うことにする。

-vLJO   --remote-header-name

これで平和になる。

curl -LOJ  'https://docs.google.com/uc?id=0B3X9GlR6EmbnQ0FtZmJJUXEyRTA&export=download'

参考資料

[curl/wget]Content-Dispositionのファイル名でダウンロードする | Siguniang's Blog

google drive を コマンドから使うgdrive が早くて便利

Google Drive 使ってますか?

はい、私はほぼ無限容量を持っているので、Google Drive が大活躍しています。

Google DriveにログだのVMだの殆どをバックアップ出来て便利。

google drive をコマンドから使いたい

fuse なども色々有りますが、ocamlfuse の google dirve なども試しました。

go で書かれた gdrive が1番使いやすかった

github.com

!!2020-01-28 更新!!

この記事は古いです。

この目的の場合、rclone 使ってください。

rclone については次の記事に書いてあります。

rclone コマンドで google ドライブにデータを転送する(rcloneインストール方法と使い方) - それマグで!

rclone よりgdrive コマンドより使いやすいです。

インストール

macOS X の場合

brew install gdrive 

linux の場合、curl して chmod する

curl -JLO https://docs.google.com/uc?id=0B3X9GlR6EmbnQ0FtZmJJUXEyRTA&export=download 
chmod +x gdrive-linux-x64
mv gdrive-linux-x64 /usr/local/bin
alias gdrive=gdrive-linux-x64

使い方:OAuth キーの取得

とにかく最初に list する

gdrive list 

すると、認証URLを放ってくれるので、URLにアクセスして、認証トークンを頂いてくる

主な機能

  • アップロード
  • ダウンロード
  • フォルダ毎同期

とくに、フォルダ同期が便利で、fsevent に貼り付けてgdrive 起動したら、DropBoxイラネ!ってなる。

macOS X のlaunchdなら手軽にフォルダ監視スクリプトを登録できるから、DroboxやGoogleDriveの機能を手軽に作ることが出来る。

速度が早い

OcamlFuseを使ってたんだけど、gdriveの方が転送速度が早いので、主にコッチを使うことになると思います。

初回起動後のOAuth設定

初回起動し、OAuthを設定したら、ファイルが生成される

~/.gdrive/token_v2.json

これがトークンのファイル。ファイルを消せばもう一度初期設定からやり直せる。

基本的な操作方法

GoogleDriveのファイルの一覧

gdrive list 

list コマンドで、ファイルの一覧をだせる。この結果からわかるのがGoogleDrive特徴です。ドライブではファイルはID管理されていて、KVSになっているという点ですね。つまり、単純なファイルのキーの一覧になりますね。フラットな感じ。

ダウンロード

gdrive download XXxxxXXXXX

Id を指定してダウンロードする。

ディレクトリのダウンロード

ディレクトリのIDを指定して、GoogleDriveディレクトリをダウンロードするには、recursive オプションが必要でした。

gdrive download XXXXXX --recursive

カレントディレクトリにダウンロードできる。ディレクトリの中身がまるっと出てくるので楽チン

アップロード

gdrive upload my-file.rb 

GoogleDrive側のファイルを削除

gdrive delete XXXXXXXXXXXXXXX

目的のファイルが見つからないよ。。。

list してもファイルが見つからないことのほうが多いですよね。 query 使います。

gdrive list -q 'name contains "word" '

詳しくはここ。https://developers.google.com/drive/search-parameters

でも、マニュアル読んでもよくわからないですよね。

とりあえず、最初にこれ

  • name contains 'keyword'
  • modifiedTime >= '2016-07-24'
  • fullText contains 'keyword'
  • trashed = false

を覚えておいて。

この条件を and で繋げばいいんですよ。

とくに、ダウンロードするには trashed = false をつけないと、ゴミ箱のファイルを取り出しちゃうので注意が必要だった。

まとめてダウンロードしたい

検索結果をまとめて取出すには

gdrive list --no-header | cut  -d ' ' -f 1 | xargs ...

--no-header オプションと組み合わせると嬉しい感じ。

sync 同期 アップロード

ローカル→GoogleDriveへの同期アップロードも出来ます。

SyncするにはSync専用のディレクトリが必要なようです。空のディレクトリを作ります。

mkdir my-test
gdrive upload my-test
gdrive list 'name contains "my-test"'

ここで作られたIDを元に、同期したいディレクトリをサーバーへ転送します。

gdrive sync src ID_XXXXXXXXXXX

同期用に指定した空のディレクトリやファイルにはappPropertiesでフラグがたつらしい。このフラグを使って同期対象を識別し、同期処理を行うのに利用するみたいですね。

アップロード上限について

自分のAPIキーを入れることで帯域幅が確保できます。

gdrive 諦めた

gdrive はちょっとくせがあるので、 rclone に移行した

rclone コマンドで google ドライブにデータを転送する(rcloneインストール方法と使い方) - それマグで!

2016-12-21 追記

Google Drive は有料課金するとストレージ容量が無制限になるので、かなり遊べますよ

2019/03/28

追記

2022-04-06

追記

macOS Xのopen や cygwin/cygstart をlinuxでやる

open コマンド便利すぎてヤバイ

mac 使ってると open コマンド便利すてヤバイ

cygwin なら cygstart

alias open='cygstart'

linuxならどうするの

デスクトップで入れてるXのシステムによりますが

gnome 系が多いので

alias open='gnome-open'

または

alis open='xdg-open'

でできる。Openで開くのまじ便利。

/home を別パーティションに動かす

/homeを別パーティションに動かすことにした

linux の /home を別パーティションに動かすことにしてマウントの管理方法を変えた

パーティションをLVMで作成

パーティションの確保には、今回はLVMを使った

sudo lvcreate -L 50G -n my-home VGNAME

作ったパーティションをフォーマット

sudo mkfs.ext4 /dev/mapper/VGNAME-my-home

/homeをコピー

Permissionを維持したままCOPYするのはrsync が便利なので rsync

作業用にマウントする

sudo mount /dev/mapper/VGNAME-my-home /mnt/new-home

/home/USER/内部でさらに mount してたらヤヤコシイので umount もしておく

umount /home/*
sudo find /home/ -type d -exec umount {} \;

コピーするファイルを確認する。

sudo rsync -nav /home/ /mnt/new-home

rsync する場合は必ず自前にチェックすることが大事

チェックして大丈夫ならコピーする

sudo rsync -av /home/ /mnt/new-home

古い/home はマウント切り替えたらアクセスできなくなるのでディレクトリ名を変えておく

sudo mv /home /home.old

fstab を変更する

sudo vim /etc/fstab

fstab でマウントポイントを指定する

# / was on /dev/sdb6 during installation
UUID=xxxxx-f5c0-4456-b31c-xxxxxxx /               ext4    noatime,nodiratime,discard 0       1
UUID=xxxxx-2274-4a63-83cd-xxxxxx /home       ext4    noatime,nodiratime,discard 0       2 # 追加

作業が終わったのでreboot する

sudo reboot

再起動して、問題なければ古いやつを消す

sudo rm -rf /home.old

まとめ

/homeを別パーティションに動かすときは、色々と面倒くさい

なにより、ログインしてる状態では /homeを使っているので、起動中の切替は本当に面倒くさい

/homeは、たくさんのユーザのPermissionが混在するのでPermissionを意識しないとダメだった。

マウントポイントで上書きされちゃうので元パーティションの/homeにアクセスできなくなってしまうので、名前の変更を忘れると削除できないのでチュウが必要だった。

/home はファイルがどんどんたまるので、別ボリュームにしておくほうが管理がやっぱり楽だなぁ

MacでApple ID でトラブって死にかけた時の対処法

icloud や iMessage にログイン出来なくなった。

2016-07-03 iMessageやFactime に iCloud にログイン出来なくなった

現在サインイン出来ません

icloud にログインしようとして、現在サインインできませんばかり。

f:id:takuya_1st:20160703025148p:plain

もちろん iCloud のステータスはグリーン

f:id:takuya_1st:20160703025612p:plain:w300

Appleクラウドサービスの稼働状況はオールグリーンで問題ない。

その他のエラー

Message.app でiMessageにログインしようとしたら、パスワードをアップデートしろと通告が出てくる。

f:id:takuya_1st:20160703025145p:plain

しかしもちろん、問題ない

apple id のサイトや、icloud.com 、itunesMac AppStore 、iOS App Storeは問題なくログインできるし、パスワードの更新を促されることもなかった。

iOS ・WEBサイトでは問題なくログインができる。

しかしMacだけがエラーになる。

f:id:takuya_1st:20160703025152p:plain

原因はコレだと思う。

iCloudのサービスで間違ったパスワードの情報が同期された可能性が高い。

f:id:takuya_1st:20160703025150p:plain

どうやらもろにこの被害を食らった模様。

なぜかというと、FacetimeやiMessageが使えなくなったのがこの時間帯からなのです。

さらにこの日付以前のキーチェーンに戻したら再現しなくなったので、間違いなくこのエラーなのですが、Appleサポート連絡してもOSXを再インストールしろとか無茶を言われて困り果てていました。

対策はキーチェーンを消す。

あれこれ、あれこれ考えてうんうん唸った結果、iMessage や iCloud のログインや証明書などはすべて、キーチェーンに入っている。このことに思い当たった。

Keychain を新しくすれば元通りになった。

キーチェーンのアプリでデフォルトキーチェーンをかえて新しく作ったら、全てがまた動くようになった。

本当に苦労したので、メモしておく。

バックアップがある場合は

バックアップから、キーチェーンを取り出せば元通りになりました。

キーチェーンのバックアップは重要!!!!!!!!!!!!!

キーチェーンは手動でもいいからバックアップとっておくべきですね。

Apple 製品、特にMacはアカウントやデータのバックより再優先でキーチェーンを保存する必要がありますね。

キーチェーンを失うと大変。

キーチェーンには、パスワードだけじゃなく、アプリが自身のデータの暗号化を解除したり、証明書などとても重要なものが含まれているので、キーチェーンが壊れると大変なことになる。。。

キーチェーンだけは、毎週バックアップを直近半年分持っててもいいくらいだわ・・・

本当に苦労した。休み一日消えたよ。。。

Karabiner でMacbookPro 日本語(JIS配列)キーを英語(US配列)キーとして使う

日本語キーボード大好き

USキーボードがいいとか、日本語キーが良いとか、人によって好みはあると思います。

私は日本語キーが大好きです。

でも英語キーボードも好きです!

英語キーボードの記号の入力のしやすさといったら。最高よ。

1つのキーボードで両方使う

英語キーボードも日本語キーボードも両方使いたい!

でも、MacBookのキーボードは日本語キーボードだ。

そうだよ、キー配置だけ英語キーボードのフリをすればいいんだよ。

日本語キーボードを英語キーとして使う

日本語キーとして使ったり、英語キーとして使ったり、柔軟に切り替えて使えると便利だと思いませんか?

日本語キーボードは便利なんだけど、プログラミングを行うときにはやっぱり不便

とくに

  • 「=」イコール
  • 「 ’ 」シングルクォート
  • 「 [ ] 」左右ブラケット

配列、とくにハッシュに代入するときに、シフトキーを押しっぱなしになるのが拷問だと思います。

Karabiner で日本語キーボードを英語キーに

Kabinerを使えば出来ます。

新規プロファイル「USキーボードfake」を作って、use japanese keyboard as US Keyboardを選んでしまえば、英語キーとして使えます。

f:id:takuya_1st:20160703021341j:plain:w300

英語キーとして使う時のポイント

見たママが基本的に英語キーの配列になります。

ただし一致しない項目がある。

次のキーボードのキーは配置が異なるので、覚えておくと便利。

f:id:takuya_1st:20160703020718j:plain

なぜUSキーボードを買わないのか?

だったらUSキーボードを買えばいいじゃないか。

USキーボードを外付けでつければいいじゃないかと言われる方も多いでしょう。

私は、それでも日本語キーボードを買いました。

日本語キーボードを英語キーボードとみなすメリット

日本語キーボードを英語キーボードに看做して使うのが最高よ。どちらも気分転換で使い分け出来る。

英語キーボードを日本語キーボードとして見なすのは難しい。なぜなら日本語キーボードにはいくつかの特徴があるからです。

キーボードのキートップ数が多い

日本語キーを選んでいる理由の1番大きな理由が、キートップ数の多さです。

英語キーボードに比べて3つ多い

3つ多いんですよ。3つ。ココが重要

写真を見て下さい、3つ多いでしょ?

  • 「ろ」
  • 「かな」
  • 「英数」

の3つが多いんです。

f:id:takuya_1st:20160703020823j:plain

3つの多さは大事

日本語を扱う私達は、「日本語入力のオンオフ」を常にすることになります、 Cmd+Space で切り替えているとどうしても不便なんですね。

このうち1つを「全角・半角」のように使ってしまえば残り2つは自由にアサインできます。

karabinerで3つを好きに使う

多い3つ。ここに好きなキーを割り当てれば、最高のキーボードが完成します。

わたしは右Ctrlがないと死ぬひとなので、右ctrlに使っています

多いからこそ出来る特徴:左右両方に cmd / ctrl / option

「かな・英数」のいずれかを「全角・半角」として使ってしまう

すると、下段キーが1つ多くなります。

Karabinerでこのキーを有効活用できます。

余ったキーをOptionやCtrlに割り当ててしまえば、Emacs派のみなさんもVim派のみなさんも仲良くなれると思います。

だって左右のどちらでもCtrl/Option/Cmdが押せるようになるのですから!

シングルクォートは忌しき問題

シングルクォート・ダブルクォート論争に巻き込まれたことが有ります。

英語キーだとシングルクォートが圧倒的に使いやすいです。圧倒的に。

そういう文化的背景を考慮しないシングルクォート論争は無益だと思います。

そして論争に巻き込まれたとしても影響を受けず平然としてられるよう、英語キーとして日本語キーボードを使えるようになると便利だと思います。

バッククォートはマジ打ちやすい。

英語キーで使うと嬉しいのは

  • バッククォート
  • イコール
  • シングルクォート

マークダウンを日常的に書く私たちは、Shift押さずにバッククォートが使えるようになるのもまた便利だと思います。

日本語キーボードの弱点:ホームポジション

タッチタイピング(ブラインドタッチ)を練習した人ならわかると思いますが、

ホームポジションでキーボードが入力しにくいんです。

とくに、「M」キーから右側がやばい

日本語キーボードを使うと、どうしても指が左側に寄ってしまいます。

なので、MBPのように、ど真ん中にタッチパッドが付いてるノートパソコンはトラックパッドが暴発してしまうので、日本語キーボードは不利になります。

もしUSキーボードと日本語キーボードを迷った時は

  • Mキー、。<>・の打ち方や打つ頻度
  • タッチパッドの暴発
  • キー配置の自由な再設定

コレらも考慮して選ぶと良いと思います。

MacBookの場合、タッチパッドの暴発が起きないタッチパッドなので、安心して日本語キーボードを選ぶことが出来ました。

windowsな人は英語キーを日本語キーボードで使うにはレジストリをいじることになるのですが。トラックパッドの問題は解決しないので購入時には細心の注意が必要ですね。

これだけやっても、タッチタイピングで苦労してる今日このごろです。

購入前の練習にちょうどいいかもしれません。

日本語キーボードをUSキーボードとして使う設定は。

ゼロコストでできるので、購入前にUSキーボードの配列を覚えたり、キー配列でどれくらい変わるのか練習するのにちょうどいいと思います。

macOS X のキーボードビューワのサイズを変えることが出来る

Mac の標準キーボードビューワーのサイズを任意に拡大縮小が出来る。

意外と便利です。キー配列を覚えられない時に、ビューワーがあるととても重宝します。

サイズ変更方法の動画。

ことばでは説明しづらいので動画を見てください。

youtu.be

左上をドラッグドロップして表示サイズを任意の大きさに変更していることがわかると思います。

スクリーンキーボードの標示方法。

ソフトウェアキーボードを表示して入力することができます。

f:id:takuya_1st:20191216161713p:plain

キーボードビューワーを選んで表示します。

f:id:takuya_1st:20191216163101p:plain

キーボードが押しづらい時は左上をドラッグドロップするとサイズを変更することができます。が文字そのものを入力することができるものとできないものがあります。

ただしセキュリティには注意すること

打鍵が見られるので、セキュリティには注意すること特にパスワードを打ってる時に、どのキーを打ったか丸見えになります。

2019/12/16

追記・写真を追記してなにをしたいのかわかりやすいように改変

みんな大好き、dig コマンドの使い方(dnsを調べるあれこれ

みんな dig ってますか?

http でファイルが開けない時、真っ先に見るべきは iptable でも、ifconfig でもなくて dig です。

まず、dig を確認するよね。

dig の使い方

dig は名前解決を試みるコマンドです。

名前解決とは何か、、DNSの仕組みについては触れません。コマンドを使っていけばわかると思うし。

dig で 名前解決する

dig t.co

ドメインから、IPアドレスを探す。

dig で逆引きする。

dig -x 8.8.8.8

逆引きすると、IPアドレスからそのIPの持ち主がだいたい分かることが多い

MXレコードを指定する

dig yahoo.co.jp mx

ns レコードを探す

dig yahoo.co.jp ns

txt レコードを探す

dig yahoo.co.jp txt

表示をシンプルにする

結果だけ欲しい時に使う、プログラムと組わせて使うときに便利

dig yahoo.co.jp +short

実行結果

takuya@~/Desktop$ dig yahoo.co.jp txt +short
"v=spf1 include:spf.yahoo.co.jp ~all"

細い指定はいいから全部よこせ

ジャイアン的に、ns / soa/ a /mx など指定はいいからもういいから全部くれ。

dig  ANY flets-west.jp

DNS サーバーを指定する

@DNSサーバー を入れると指定できる。

dig hatena.ne.jp @8.8.8.8
dig xrea.com  @ns1.value-domain.com

DNSコンテンツサーバーに問い合わせるときは、DNSサーバー管理下のドメインの結果が応答される。

DNSキャッシュサーバーに問い合わせるときは、任意のドメインの問合せが出来る。

最近は、キャッシュサーバーはオープンリゾルバ対策がされている、そのため、自プロバイダ網外からは利用不可。

@ に指定するのはIPアドレスでなくても良い。

ルートからDNS辿る

dig www.yahoo.co.jp  +trace

DNSといえばDNSルートドメインから順番に辿るのですが、通常キャッシュから辿ります。 「敢えて」Rootサーバーから順番にたどります。

DNSが反映されないとか「浸透しない」とか言ってないで、まずルートから辿ってみること。

再帰問合せをオフにする

dig www.yahoo.co.jp +norec

DNSキャッシュサーバーに対する再帰問合せをオフにして(RDフラグオフ)名前入解決を依頼する。

IPv6 のアドレスがほしい

dig www-v6.iij.ad.jp aaaa

aaaa を指定しないと出てこない。ANYでもだめよ。

参考資料

  • man dig

みんな大好きman ページ

CentOS で mysql を入れたらroot パスワードどこよ?ってなった

CentOSmysql をインストール

sudo yum install http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
sudo yum install mysql mysql-devel mysql-server mysql-utilities

root パスワードどこ・・・

 mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

パスワードロックかかってんの。どうすればいいの。

ログに書いてある。

sudo cat /var/log/mysqld.log | grep "temporary password"
2016-06-24T23:04:13.579055Z 1 [Note] A temporary password is generated for root@localhost: X3ebeCk*?D6p

インストール後のログを見ると書いてある。

まさか・・・の初期化ランダムパスワード

また、root でインストールした場合

 /root/.mysql_secret 

ココに書いてあることがあるとのこと。

それでも困ったらリセットする

mysql を起動するターミナルを上げておいて

sudo systemctl stop mysqld
sudo mysqld_safe --skip-grant-tables 

別のウインドウを開けてそこから別途接続する

use mysql;
update user SET PASSWORD=PASSWORD("password") WHERE USER='root';
flush privileges;
exit

これでリセットして対応する。。。。

Debianみたく初期インストール時に、パスワード聞いてくれたらイイのに。CentOS面倒くさい

CentOSの古いので試した。

mysqld_safe で起動したときに止める方法は、次の通り。

sudo /etc/init.d/mysqld stop
sudo mysqld_safe --skip-grant-tables 
sudo /etc/init.d/mysqld stop

ちなみに centos 公式の mariadb

rootパスワードなしインストールされた。これはこれで「う~ん」ってなんとも言えない感じになる。

dpkg がいいな、やっぱり。

参考資料

https://www.linode.com/docs/databases/mysql/how-to-install-mysql-on-centos-7

http://blog.manabusakai.com/2013/04/centos-mysql56-install/

2018-11-27 追記

sudo mysqld_safe --skip-grant-tables を起動したあとどうするかがわからなくなるので、追記