2017年12月31日日曜日

xfce4のパネル(タスクバー)の移動

2017 Dec. 31.

・マウスカーソルをパネル上に
・マウス右クリック
・パネルをクリック
・「パネルの設定」をクリック
・「パネルをロックする」のチェックを外す
◎パネルの外枠の点線をドラッグして希望する場所に移す


2017年12月9日土曜日

ruby mysql操作

2018 Sep. 15.
2017 Dec. 09.


mysql2

    query結果の受け取り方
  http://blog.dealforest.net/2012/10/activerecord_execute_return_hash/

  ハッシュで受け取るには
          results.each(:as => :hash) do |result|
            p result.class
          end

apache バージョン、OS情報、ポート番号の非表示設定

2018 Sep. 04.
2017 Dec. 09.

/etc/apache2/conf-enabled/security.conf
    ServerTokens Prod
    ServerSignature Off

2017年11月21日火曜日

xfceデスクトップのウィンドウリサイズ(細いウィンドウボーダーへの対処)

xfceデスクトップのウィンドウリサイズ(細いウィンドウボーダーへの対処)

xfce, window resize, thin border
2017 Nov. 21.

https://xubuntu.org/news/window-resizing-in-xubuntu-and-xfce/
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11112333766

Alt+右クリック

2017年11月19日日曜日

動画連結

2018 Oct. 01.
2017 Nov. 19.
2016 Dec. 31.

$ ffmpeg -i 元の動画1 -i 元の動画2 ... -i 元の動画N -filter_complex "concat=n=N:v=1:a=1" 出力動画
    N個の動画を結合する場合、まず結合する動画を結合する順番に並べ、concatにNを指定する。
    そのあとに続くvは映像を連結するか(1:true/ 0:false)、a は音声を連結するか(1:true/ 0:false)のオプション。


$ ffmpeg -i "concat:FILE150215-122245.ts|FILE150215-122545.ts|...(いくつかのファイル)...|" -c copy "FILE150215-122545.ts"

$ ffmpeg -i "concat:1.mp4|2.mp4|3.mp4" -c copy dst.mp4
$ ffmpeg -f concat -safe 0 -i <(for f in src/*.mp4; do echo "file '$PWD/$f'"; done) -codec copy dst.mp4

$ ffmpeg -i imput1.mp4 -i imput2.mp4 -strict -2 -filter_complex 'concat=n=2:v=1:a=1' output.mp4
    i imput1.mp4 -i imput2.mp4 の部分が入力ファイル。
    filter_complex 'concat=n=2:v=1:a=1' の部分が「入力された動画を連結する」という指定で、concat=n=2の数字の「2」が連結する動画数で、「v=1:a=1」が「画像、音声とも連結する」という意味。
音声がAACの場合は「-strict -2 」オプションも必要。

Brother printer & scanner DCP-J562Nをxubuntu16.04 18.04にインストール

2019 Oct. 14.
2018 Sep. 02.
2017 Jan. 22.
2017 Jan. 09.

プリンタをIPアドレス固定で無線LAN設定する。

ブラザーの「Linux 簡易インストーラー」を任意のディレクトリに
ダウンロード・解凍し、
$ /bin/bash ./linux-brjprinter-installer-2.2.1-1
とするだけで、印刷・スキャン共に可能となる。
その他の作業(cups設定、ポート開放等)は不要。

(インストール作業中に必要な情報)
プリンター名:DCP-J562N
 デバイスURI:リストアップされた中から ipp://BRW606DC719B036.local:631/ipp/print を選択

(Linux 簡易インストーラー入手先)
ブラザーホーム -> サポート -> DCP-J562N -> ソフトウェアダウンロード -> Linux 簡易インストーラー
https://support.brother.co.jp/j/b/downloadend.aspx?c=jp&lang=ja&prod=dcpj562n&os=128&dlid=dlf100889_000&flang=1001&type3=10373


〈以下は不要〉
[ プリンターインストール ]
http://note.kurodigi.com/post-0-30/ より

“/var/spool/lpd”ディレクトリ及び
“/usr/share/cups/model” ディレクトリ
が存在することを確認し、存在しない場合は作成する。

64bit版を使用している場合
  (1) lib32stdc++6 をインストール
         # aptitude install lib32stdc++6
  (2) ”/usr/lib/cups/filter”フォルダがあることを確認し、存在しない場合は作成する。

$ sudo aptitude  install gdebi
$ sudo gdebi dcpj562nlpr-1.0.0-0.i386.deb
$ sudo gdebi dcpj562ncupswrapper-1.0.0-0.i386.deb

lpadmin groupにユーザーを登録する

http://localhost:631 にアクセスして設定

[ スキャナーインストール ]
ブラザーサイトから brscanNxxx.deb をダウンロードする。
  https://support.brother.co.jp/j/b/downloadlist.aspx?c=jp&lang=ja&prod=dcpj562n&os=128

# apt install sane-utils
# apt install libusb-0.1

ファイアウォール設定
  【受信(インバウンド接続)】
    ポート番号: 54925
    プロトコル: UDP
  【送信(アウトバウンド接続)】
    ポート番号: 54921
    プロトコル: TCP

   # ufw allow proto udp from 192.168.1.0/255.255.255.0 to any port 54925
   # ufw allow proto tcp from 192.168.1.0/255.255.255.0 to any port 54921 (送信側なので不要と思うが)
   # ufw reload

# dpkg -i brscanNxxx.deb
# brsaneconfigN -a name=NAME model=MODEL ip=192.168.131.xxx

古いカーネルの削除 purge-old-kernels

古いカーネルの削除 purge-old-kernels

xubuntu16.04LTS, ubuntu16.04派生, linux
2017 Jun. 03.

インストール

# aptitude install byobu

利用

# purge-old-kernels

# purge-old-kernels --keep 3
     :--keep : 残すカーネルの数を指定

shell

shell

shell script, シェル, シェルスクリプト
2017 Dec. 09.
2017 Nov. 20.
2017 Nov. 19.

文字列展開・変数展開

展開の順序
  ブレース展開、チルダ展開、パラメータ ・変数・算術式展開、コマンド置換 (左から右へ)、単語分割、パス名展開。

 引用符を使うと、 特定の文字や単語が持つシェルに対する特別な意味をなくせる。
 引用符を用いると、特殊文字の特殊な扱いを無効にしたり、 予約語が予約語として識別されることを防いだり、 パラメータの展開を防いだりできる。

引用符で囲むのは各種展開をしたくない場合
  " と ' で、抑止される展開の範囲に違いがあるが、展開をしたい場合は囲まない。

 DIR=~/ :引用符で囲んでいないので、展開のルールに従って展開される。チルダ展開が行われる。

 DIR="~/" :二重引用符で囲んであるので、チルダの特殊な意味が無くなっている。チルダ展開は行われない。


 変数展開

${#VAR}     `${#変数名}' とすると変数の値の文字数が得られる

デスクトップ上でフォーカスのある(アクティブな)ウィンドウを取得

xpropを利用する。

デスクトップ上でフォーカスのあるウィンドウを取得した上で、画像を表示し、1秒後にフォーカスのあったウィンドウにフォーカスを戻す例
  activeWin=`xprop -root _NET_ACTIVE_WINDOW`
  activeWinId=`echo ${activeWin} | grep -Eo '0x[0-9a-fA-F]+,' | grep -Eo '0x[0-9a-fA-F]+'`
  display hoge.jpg
  sleep 1
  wmctrl -i -R ${activeWinId}

ファイルの1行ずつの読み込み

cat $1 | while read line
do
  # DO-SOMETHING
  echo $line
done

sedの先頭行番号は1

sedの先頭行番号は1

シェルスクリプト, shell script
2018 Jan. 22.
2017 Nov. 19.


先頭行の番号:1



2017年10月1日日曜日

java Scanner#nextLine()にEnterキーのみを入力すると "" が入る

2017 Oct. 01.

Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
入力待ちにEnterキーのみを押し下げるとlineには "" が入る。nullが入るのではない。


2017年9月14日木曜日

iPhone7内データをlinuxパソコンに。インターネット・クラウド・iTunesを使わずに。windowsでもできる

iPhone7内データをlinuxパソコンに。
インターネット・クラウド・iTunesを使わずに。
windowsでもできる。

2017 Sep. 14.

必要なもの
iPhone7
FileExplorer(iPhoneアプリ)
家庭内無線LAN環境(インターネットにつながっていなくてよい)
IPアドレスが割り当てられ、家庭内LANに加わっているLANポートのあるlinuxパソコン

操作
iPhone7にFileExplorerをインストールする。
iPhone内のコピー元ファイルを、そのファイルのデフォルトアプリ内の「共有」などを使って、FileExplorerで見られるフォルダにコピーする。
iPhoneの設定からWi-Fiを有効にし、家庭内LANに接続する。
FileExplorerを開き、画面右上の「+」を押し、「Linux/Unix」を選択し、IPアドレス・id・パスワードなどを入力してlinuxパソコンと接続する。
FileExplorerでiPhone内のファイルをパソコンにコピーする。
以上

2017年8月20日日曜日

mail 日本語対応

mail 日本語対応

2017 Aug. 20.
mail,日本語,文字化け

msg="sentense"
subject="title"
mailDest="abc@xx def@yy ghi@zz"

echo -e "${msg}" | nkf -j  | mail -s `echo "${subject}" | nkf -jM` $mailDest

postfix設定

2018 Sep. 23.
2017 Aug. 20.

このページは無視して、こちらを参照すればよい。


myhostname = gmeil.com, mydomain = gmail.com と設定したら、gmailへのメールが届かな
い。
no-ipで取得しているドメイン名にしたらgmailへのメールが届いた。
設定後、 # systemctl restart postfix.service。
# systemctl restart postfix ではだめのよう。



[/etc/postfix/main.cf]

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = xxxx.no-ip.info
mydomain = xxxx.no-ip.info
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relayhost = [smtp.gmail.com]:587
mynetworks = 127.0.0.0/8 192.168.1.0/24
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
smtp_helo_name = $myhostname
smtp_sasl_auth_enable = yes
smtp_sasl_mechanism_filter = plain
smtp_sasl_password_maps = hash:/etc/postfix/gmail_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_use_tls = yes
smtp_tls_CApath = /etc/ssl/certs/ca-certificates.crt

2017年7月15日土曜日

pebble time steel

pebble time steel

2017 Jul. 16.
2017 Jul. 15.

日本語化

Pebbleの日本語言語パックを作ってみた( d.hatena.ne.jp/aoshimak/20161228 )から
yahoo.jp/box/ZUeSPB
に行き、スマホにファイルをダウンロードする。
ダウンロードしたファイルを開くとpebbleアプリにインストールされる。
  Acer Z530では、標準添付のファイラで開くとインストールできる。


カレンダーアラームヘルパー通知不可

カレンダーアラームヘルパーからの通知を受けるとpebble timeがリセットする。
https://www.amazon.co.jp/forum/-/Tx1U234NUPFU7GY/ref=ask_ql_ql_al_hza?asin=B00Y2CYYU4

2017年5月21日日曜日

ネットワーク監視

ネットワーク監視

tcpdump, xubuntu16.04LTS, ubuntu16.04派生, linux
2017 May 21.

# tcpdump -i enp0s7 -tttt host not 192.168.1.13 and host not 192.168.1.14 and host not buffalo.setup and host not laika.paina.net and host not timpany.srv.jre655.com and host not s97.GchibaFL4.vectant.ne.jp and host not obp-ZTVshigaML01.bb.kddi.ne.jp and host not fe80::afaa:4698:fdd3:923 and host not dynupdate.no-ip.com and host not 224.0.0.251 and host not ff02::fb > /var/log/tcpdump.log &

tcpdumpのファイル出力ができないので、上記にした。

"ifconfig"が"ip a"に

"ifconfig"が"ip a"に

xubuntu16.04LTS, ubuntu16.04派生, linux
2017 May 21.

ipv6を無効にした

ipv6を無効にした。

ipv6, xubuntu16.04LTS, ubuntu16.04派生, linux
2017 May 21.

( http://l-w-i.net/t/ubuntu/ipv6_001.txt より)
/etc/sysctl.confに追記
  net.ipv6.conf.all.disable_ipv6 = 1
  net.ipv6.conf.default.disable_ipv6 = 1

# sysctl -p

2017年5月20日土曜日

linuxでもandroidでも使える文書暗号化

2019 Dec. 01.
2019 Feb. 16.
2018 Nov. 11.
2018 Aug. 25.
2017 May 20.

openssl

共通鍵方式の暗号化・復号化が可能。

opensslでのaes-256-cbc暗号化

入力したパスワードから共通鍵と初期化ベクトルが自動生成される。パスワード自体が共通鍵ではない。
共通鍵は、パスワードと自動設定されるsaltから生成される。
初期化ベクトルは、パスワードとsaltと共通鍵から生成される。
制裁される共通鍵・初期化ベクトルは、ver1.0まではmd5、ver1.1.1以降はsha256でハッシュされる。
ver1.1.1以降はハッシュ化に -iter N もしくは -pbkdf2 オプション指定が推奨。
Padding 方式には PKCS#5 が使用される。

androidアプリcrNoteで復号できる暗号化例
$ openssl aes-256-cbc -md md5 -e -in FILE -out FILE.x
$ openssl aes-256-cbc -md md5 -e -in FILE -out FILE.x file:./password.txt
        CrNoteと共用するために拡張子は .x にする。

(オプションを付けなければsha256でハッシュされる)
$ openssl aes-256-cbc -e -in FILE -out FILE.x

復号化

共通鍵生成に必要な暗号化時のsaltは、暗号化されたファイルの先頭に書き込まれている。
Padding 方式は PKCS#5。
暗号化方式・ハッシュ化の方式を暗号化時と同じにする。

(md5ハッシュ鍵)
$ openssl aes-256-cbc -d -in FILE.x  -md md5
$ openssl aes-256-cbc -d -in FILE.x  -md md5 -pass file:./password.txt

(sha256ハッシュ鍵)

$ openssl aes-256-cbc -d -in FILE.x
$ openssl aes-256-cbc -d -in FILE.x -pass file:./password.txt

android

CrNote を利用すれば、md5ハッシュ化鍵でのaes-256-cbc暗号化ファイルの復号が可能。

2017年5月6日土曜日

FreeBSDインストール

FreeBSD インストール

2017 May 06.

Release 11.0 CDインストール

インストール先のHDDのスライス(パーティション)は、論理パーティションではインストールできず、基本パーティションとすればインストールできた。

CDインストール後

  qiita.com/whitebell/items/ca5d47dae1f521b7afda より

    portsで使用するミラーFTPサーバー設定
      /etc/make.conf
        MASTER_SITE_OVERRIDE=ftp://ftp.jp.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/

    共有メモリ
      shmmaxは搭載メモリの半分、shmallはshmmaxの1/4096。

      /etc/sysctl.conf
        kern.ikpc.shmmax=1073741824
        kern.ipc.shmall=262144

    FreeBSDのアップデート
      # freebsd-update fetch
      # freebsd-update install

    ports collectionの更新
      ソースコードからアプリケーションをインストールするためのファイル群。
        (初回)
          # portsnap fetch
          # portsnap extract

        (2回目以降)
          # portsnap fetch
          # portsnap update


    pkgのインストール
      コンパイル済みバイナリpackagesの管理ツール。
      # pkg bootstrap
        Do you want to fetch and install it now? (y/N)と聞かれるのでy。

    portsでインストールしたプログラムのアップデート管理
      # pkg install ports-mgmt/portmaster
      # reboot

    ports検索ユーティリティpsearchのインストール
      # pkg install ports-mgmt/psearch


  同時に開けるファイル数上限設定
    /etc/sysctl.conf
        kern.maxfiles=65535

  一般ユーザーの追加
    # adduser

    一般ユーザーを wheel グループに追加する。

xfceのインストール

( silversack.my.coocan.jp/bsd/xfce411x-buildxfce.htm より )

  # pkg install x11/xorg
  # pkg install japanese/font-std
  # pkg install japanese/font-vlgothic
  # pkg install japanese/font-takao
  # pkg install japanese/uim-mozc textproc/uim-gtk
  # pkg install x11-fonts/bitstream-vera

  # pkg install x11-wm/xfce4 audio/xfce4-mixer deskutils/xfce4-volumed deskutils/xfce4-xkb-plugin print/xfce4-print sysutils/xfce4-battery-plugin sysutils/xfce4-mount-plugin sysutils/xfce4-power-manager

  # pkg install x11/lightdm

  # Xorg -configure
    もし、画面が真っ暗になったら # shutdown -r now
    xorg.conf.new がカレントディレクトリにできている。

  # cp xorg.conf.new /etc/X11/xorg.conf

  /etc/X11/xorg.conf
    「Section "Module"」に
        Load  "freetype"

    「Section "Files"」に
        FontPath  "/usr/local/lib/X11/fonts/bitstream-vera/"

    を追記。

  nvidiaドライバのインストール
  ( silversack.my.coocan.jp/bsd/nvidia-driver.html より)
 ドライバ: VGA compatible controller: NVIDIA Corporation C61 [GeForce 6150SE nForce 430] => 304ドライバ

    # vi /etc/rc.conf
      linux_enable="YES"

    # vi /etc/sysctl.conf
      compat.linux.osrelease=2.6.18

    # reboot

    # pkg install x11/nvidia-driver-340 x11/nvidia-settings x11/nvidia-xconfig

    # vi /etc/devfs.conf
      link   /tmp   shm

    # vi /etc/fstab
      linprocfs   /compat/linux/proc   linprocfs   rw   0   0

    # vi /boot/loader.conf
      nvidia_load="YES"

    # nvidia-xconfig

  X window 用デーモン設定
    # vi /etc/rc.conf
      dbus_enable="YES"
      hald_enable="YES"
      polkitd_enable="YES"


( buccya.blogspot.jp/2016/11/loaderconf.html より )
  nVidia設定
    /boot/loader.conf
      nvidia-modeset_load="YES"

  uim mozcの設定の追加
    .xinitrcのファイルに、以下も追加
      uim-toolbar-gtk-systray &

  /usr/local/etc/X11/xorg.conf.d/input.conf を作成する
    Section "InputClass"
   Identifier    "Keyboard Defaults"
   Driver      "keyboard"
   MatchIsKeyboard  "on"
   Option      "XkbRules" "xorg"
   Option      "XkbModel" "jp106"
   Option      "XkbLayout" "jp"
   Option      "XkbOptions" "ctrl:nocaps"
    EndSection


  /usr/local/etc/polkit-1/localauthority/50-local.d/org.freedesktop.consolekit.pkla
    [Local restart]
    Idendity=unix-group:power
    Action=org.freedesktop.consolekit.system.restart
    ResultAny=yes
    ResultInactive=yes
    ResultActive=yes

     [Local shutdown]
    Idendity=unix-group:power
    Action=org.freedesktop.consolekit.system.stop
    ResultAny=yes
    ResultInactive=yes
    ResultActive=yes

    [Local restart - multiple]
    Idendity=unix-group:power
    Action=org.freedesktop.consolekit.system.restart-multiple-users
    ResultAny=yes
    ResultInactive=yes
    ResultActive=yes

    [Local shutdown - multiple]
    Idendity=unix-group:power
    Action=org.freedesktop.consolekit.system.stop-multiple-users
    ResultAny=yes
    ResultInactive=yes
    ResultActive=yes

    [Suspend Hibernate]
    Idendity=unix-group:power
    Action=org.freedesktop.upower.*
    ResultAny=yes
    ResultInactive=yes
    ResultActive=yes


  # pw groupadd power
  # pw usermod [ユーザー名] -G wheel,operator,power

  # startx
    X起動を確認し、exit

  lightDM設定

    # vi /etc/rc.conf
      lightdm_enable="YES"


2017年4月5日水曜日

mysql 各種使い方

2019 Oct. 21.
2019 Jan. 03.
2018 Dec. 31.
2018 Oct. 21.
2018 Aug. 26.
2017 Nov. 23.
2017 Apr. 05.


テキストファイルからの入力

    LOAD DATA INFILE "ファイル名" INTO TABLE テーブル名 FIELDS TERMINATED BY ',(区切り文字)' ENCLOSED BY '"' ( 引用符で囲まれるカラム, .. ) ;


      入力ファイルにおいて数値は二重引用符に囲まれていなくてよい。
      strict-modeに STRICT_TRANS_TABLES または STRICT_ALL_TABLES がセットされていると
      入出力のカラム数が一致しない場合エラーとなる。

    mysql> load data infile "20150822diary.csv" into table diary fields terminated by ',' enclosed by '"' ( date, note, sunrise, sunset, weather, highest_temparature, lowest_temparature, weight, money, people_met, place_visited, about_family, time_awoke, time_sleep_yesterday, note2 ) ;

    mysql> load data infile "20150906postgresql-meibo.csv" into table people fields terminated by ',' enclosed by '"' ( name,kana,kankei1, kankei2, keisyo,heiki_name,heiki_keisyo,mail_adr,job,renrakusaki,bikou,phone_keitai,genjusyo_postal,genjusyo1,genjusyo2,genjusyo_phone,nenga_postal,nengajusyo1,nengajusyo2,nenga_phone ) ;

  postgresqlからcsvファイル経由でデータコンバートする場合は全データを二重引用符で囲み、booleanデータは0/1(整数)に変換しておく

    mysql> load data infile "20150909people.csv" into table people fields terminated by ',' enclosed by '"' ( name,kana,kankei1, kankei2, keisyo,heiki_name,heiki_keisyo,mail_adr,job,renrakusaki,bikou,phone_keitai,genjusyo_postal,genjusyo1,genjusyo2,genjusyo_phone,nenga_postal,nengajusyo1,nengajusyo2,nenga_phone,isneednenga,issendnenga2000,isgetnenga2000,issendnenga2001, isgetnenga2001,issendnenga2002, isgetnenga2002,issendnenga2003, isgetnenga2003,issendnenga2004, isgetnenga2004,issendnenga2005, isgetnenga2005,issendnenga2006, isgetnenga2006,issendnenga2007, isgetnenga2007,issendnenga2008, isgetnenga2008,issendnenga2009, isgetnenga2009,issendnenga2010, isgetnenga2010,issendnenga2011, isgetnenga2011,ismochu2012,issendnenga2012, isgetnenga2012,ismochu2013,issendnenga2013, isgetnenga2013,ismochu2014,issendnenga2014,isgetnenga2014,ismochu2015,issendnenga2015, isgetnenga2015 ) ;



csvファイルからの読み込み

        LOAD DATA INFILE "ファイル名" INTO TABLE テーブル名 FIELDS TERMINATED BY

 ',(区切り文字)' ENCLOSED BY '"' ( 引用符で囲まれるカラム, .. ) ;

      入力ファイルにおいて数値は二重引用符に囲まれていなくてよい。
      strict-modeに STRICT_TRANS_TABLES または STRICT_ALL_TABLES がセットされていると入出力のカラム数が一致しない場合エラーとなる。

    mysql> load data infile "20150822diary.csv" into table diary fields terminated by ',' enclosed by '"' ( date, note, sunrise, sunset, weather, highest_temparature, lowest_temparature, weight, money, people_met, place_visited, about_family, time_awoke, time_sleep_yesterday, note2 ) ;

    mysql> load data infile "20150906postgresql-meibo.csv" into table people fields terminated by ',' enclosed by '"' ( name,kana,kankei1, kankei2, keisyo,heiki_name,heiki_keisyo,mail_adr,job,renrakusaki,bikou,phone_keitai,genjusyo_postal,genjusyo1,genjusyo2,genjusyo_phone,nenga_postal,nengajusyo1,nengajusyo2,nenga_phone ) ;

 postgresqlからcsvファイル経由でデータコンバートする場合は全データを二重引用符で囲み、booleanデータは0/1(整数)に変換しておく
    mysql> load data infile "20150909people.csv" into table people fields terminated by ',' enclosed by '"' ( name,kana,kankei1, kankei2, keisyo,heiki_name,heiki_keisyo,mail_adr,job,renrakusaki,bikou,phone_keitai,genjusyo_postal,genjusyo1,genjusyo2,genjusyo_phone,nenga_postal,nengajusyo1,nengajusyo2,nenga_phone,isneednenga,issendnenga2000,isgetnenga2000,issendnenga2001, isgetnenga2001,issendnenga2002, isgetnenga2002,issendnenga2003, isgetnenga2003,issendnenga2004, isgetnenga2004,issendnenga2005,  isgetnenga2005,issendnenga2006, isgetnenga2006,issendnenga2007, isgetnenga2007,issendnenga2008, isgetnenga2008,issendnenga2009, isgetnenga2009,issendnenga2010, isgetnenga2010,issendnenga2011, isgetnenga2011,ismochu2012, issendnenga2012, isgetnenga2012,ismochu2013,issendnenga2013, isgetnenga2013,ism、ochu2014,issendnenga2014,isgetnenga2014,ismochu2015, issendnenga2015, isgetnenga2015 ) ;


テキストファイルに出力する。

    ユーザにfile権限を付与する。
        $ mysql -p -u root DBNAME

        mysql> grant file on *.* to USER@localhost ;

        mysql> exit

    $ mysql -p -u USERNAME DBNAME

    (カンマ区切り、二重引用符囲みで/var/lib/mysql-files/ディレクトリに出力)
        --secure-file-privが設定された状態であれば
            SELECT @@secure_file_priv; を実行し
            出力表示されたディレクトリにCSVファイルを保存するようにする。

    mysql> select * from TABLE WHERE CONDITION INTO OUTFILE "/var/lib/mysql-files/TEXTFILENAME" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\n";

    (列名を先頭行につけて出力)
    mysql> select 'col1','col2', ... union select * from TABLE WHERE CONDITION INTO OUTFILE "/var/lib/mysql-files/TEXTFILENAME" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\n";
   
        書き込み先はmysqlユーザが書き込み権限のあるディレクトリでないといけない。
        /tmpディレクトリが無難。
        書込先ファイルの上書きはできないので、同名ファイルは削除しておく。

Output csv-file for standard-output.(二重引用符囲み無し。カンマ区切り)
  $ mysql -u USER -p -e "SELECT *  from TABLE" DATABASE | sed -e 's/\t/,/g' > outfile.csv

    (sample)
    $ mysql --user epgrec -p -e 'SELECT path,starttime,title,description,type,channel from Recorder_reserveTbl where complete = 1 and dirty = 0 order by starttime desc' epgrec | sed -e 's/\t/,/g' > ~/video_list.csv

sql結果のファイル出力

  $ mysql -p -u epgrec epgrec > OUTFILE
  SQL文の入力待ちになったところで
  select path from Recorder_reserveTbl order by path asc ;
  \q
  と入力するとファイルが作成される。




データバックアップ リストア

    全データ

        バックアップ
            $ mysqldump -u root -p -x --all-databases > FILE
     
        リストア
            $ mysql -u root -p < FILE


    データベース単位

        バックアップ
            $ mysqldump -u USER -p DB > FILE

        リストア
   データベース作成
    mysqlコマンド起動後、インタラクティブに
    $ mysql -u root -p
    mysql> create database DB ;


    mysql> create database DB default character set utf8 default collate utf8_general_ci; (文字コード、文字照合順を指定する例)
   ユーザーの作成
    mysql> grant all on DB.* to USER@"%" identified by 'PASSWORD' ;
mysql> exit

   リストア
    $ mysql -u USER -p DB < FILE


    テーブル単位(複数テーブルを指定可能)

        mysqldump -u USER -p DB TABLE1 TABLE2 > FILE

    /var/lib/mysqのコピーによるバックアップ
        # service mysql stop
        # rsync -av /var/lib/mysql BACKUP-DIR/
        # service mysql restart

 /var/lib/mysqのコピーによるバックアップ

        # service mysql stop
        # rsync -av /var/lib/mysql BACKUP-DIR/
        # service mysql restart


別のテーブルの値でデータ更新

テーブルmeiboのbikouの値を、id値が一致するpeopleテーブルのbikouにセットする例
  update people, meibo set people.bikou = meibo.bikou where people.id = meibo.id ;


MySQL 5.0の文字コード設定

    以下の内容で、/etc/mysql/conf.d/に character_set.cnfというファイル

    [client]
    default-character-set = utf8

    [mysqld]
    default-character-set = utf8
    "skip-character-set-client-handshake"は無い方がよいらしい

    [mysqldump]
    default-character-set = utf8

    [mysql]
    default-character-set = utf8

my.cnf / my.iniの設定

  skip-networking
    設定されている場合オフにする。

  port
    デフォルト値は3306


/etc/hosts.allow

  許可  mysqld: ALL
        mysqld: 192.168.1.
        mysqld: 127.0.0.1


外部ホストに対しmysqlのポート3306を開く

  # ufw enable
  # ufw allow 3306/tcp
  # ufw allow 3306/udp

  そのポートでLISTENとなっていることの確認
    $ netstat -na | grep 3306
       
    $ telnet -h xxx.xxx.xxx.xxx -P 3306

 TCP/IPソケット有効確認

      $ mysql -h 127.0.0.1 -P 3306 -u root -p

mysql 外部ホストからのアクセス許可/不許可

外部からの接続を制限するには、GRANTコマンドでユーザ毎に指定する。

  /etc/mysql/my.confの "bind-address = xxx.xxx.xxx.xxx"
  外部からのアクセスを許可するには、"bind-address = 0.0.0.0"の1行だけを記載する。
  localhostだけのアクセスを許可するには、"bind-address = 127.0.0.1"の1行だけを記載する。

     "bind-address = xxx.xxx.xxx.xxx" は、
    「サーバが複数の IPアドレスを持っている場合に、特定のアドレスでしか
    待ち受けないようにする」オプション。
    複数行書かれていると、最後の行のみが有効。
    1行に、スペース区切りで複数アドレスが書かれていると、最初のアドレスが有効。
    bind-address行記載が無ければ、サーバーが持っている全てのIPアドレスで待ち受ける。(localhostと192.168.xxx.xxxとか)
    "bind-address = 0.0.0.0" でも、サーバーが持っている全てのIPアドレスで待ち受ける。

GRANTコマンドによるユーザ登録と外部アクセス制御

    mysql> grant all privileges on DBNAME.* to USER@"xxx.xxx.xxx.xxx" identified by 'パスワード' with grant option;
    mysql> flush privileges;

    mysql> grant all privileges on DBNAME.* to USER@"HOST" identified by 'パスワード' with grant option;
    mysql> flush privileges;

    すべてのホストから接続できるようにする
      mysql> grant all privileges on DBNAME.* to USER@"%" identified by 'パスワード' with grant option;
      mysql> flush privileges;

    192.168.1.0/24からの接続を許可する。
      mysql> grant all privileges on DBNAME.* to USER@"192.168.1.%" identified by 'パスワード' with grant option;
      mysql> flush privileges;
   
    example.comからの接続を許可する。
      mysql> grant all privileges on DBNAME.* to USER@"example.com" identified by 'パスワード' with grant option;
      mysql> flush privileges;
     
    全データベースへのアクセスを許可する。
      mysql> grant all privileges on *.* to USER@"example.com" identified by 'パスワード' with grant option;
      mysql> flush privileges;

Strict mode(カラムに不正な値を入れた場合に警告ではなくエラーを返す)の

有効化(ENUM型でリスト外の値をエラーにする)

    debian/ubuntu
        /etc/mysql/my.cnfの[mysqld]セクション内に
        sql_mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
        の1行を記載する。
 

mysqlのユーザー一覧

    $ mysql -p -u root mysql
    mysql>  select user,host from user;

 文字セットと照合順序を指定したデータベース作成

  mysql> CREATE DATABASE DBNAME DEFAULT CHARACTER SET utf8 collate utf8_unicode_ci ;

    collate(照合順序)とは、文字を比較(一致/不一致や表示順)する際のルール。
    mysqlのデフォルトcollateであるutf8_general_ciでは、大文字-小文字を同一視するが、
    utf8_unicode_ciでは、さらに半角-全角も同一視する。

データベースのデフォルト文字コードの設定

    ALTER DATABASE dbname default character set=utf8;


データベース利用開始、データベース選択、テーブル確認

  $ mysql -p -u USER DATABASE
  mysql> SHOW DATABASES;
  mysql> use DATABASENAME;
  mysql> SHOW TABLES;
  mysql> show full columns from TABLE ;

 テーブルの構造を表示

show columns from TABLENAME;

tableの全カラム名取得

    mysql> SHOW COLUMNS FROM TABLE;

    $ mysql -u user -p -Ns -e "DESC table" database | cut -f 1
      -N 結果のヘッダーを非表示にする
      -s mysql特有の枠を非表示にする
 

Epgrecの Recorder_reserveTblテーブルのprogram_idに関し、値が連続していない行(program_id + 1 のprogram_id値が存在しない行)をselectする

    select program_id from Recorder_reserveTbl R1 where ( select count(*) from Recorder_reserveTbl R2 where R2.program_id = R1.program_id + 1 ) = 0 order by program_id;



カラムに連続番号が自動で入力される設定

  1,データ型は「int」型などの整数型を設定する
  2,「auto_increment」を付ける
  3,一意に設定する
      「primary key」に
     
  例)create table renban(a int auto_increment primary key,b varchar(10));
      insert into renban (b) values ('あ');

  自動連続カラムには自動で値が入るので、データ入力時にはこのカラムを無視してよい。



テーブル作成例
mysql> CREATE TABLE diary ( id INTEGER UNSIGNED not null auto_increment primary key, date DATE NOT NULL, note text, sunrise TIME,   sunset TIME,   weather text, highest_temparature INTEGER,   lowest_temparature INTEGER, weight FLOAT UNSIGNED,   money integer,   people_met text,   place_visited text,   about_family text,   time_awoke time, time_sleep_yesterday time, note2 text, index(id));

mysql> CREATE TABLE people ( id INTEGER UNSIGNED not null auto_increment primary key, name text, kana text, kankei1 text, kankei2 text, keisyo text, heiki_name text, heiki_keisyo text, mail_adr text, job text, renrakusaki text,bikou text,phone_keitai text,genjusyo_postal VARCHAR(14), genjusyo1 VARCHAR(80),genjusyo2 VARCHAR(72),genjusyo_phone text,nenga_postal VARCHAR(14),nengajusyo1 VARCHAR(80),nengajusyo2 VARCHAR(72),nenga_phone text,isneednenga boolean DEFAULT false CHECK(isneednenga > -1 AND isneednenga < 2 ), issendnenga2000 boolean DEFAULT false CHECK(issendnenga2000 > -1 AND issendnenga2000 < 2 ), isgetnenga2000 boolean DEFAULT false CHECK(isgetnenga2000 > -1 AND isgetnenga2000 < 2 ),issendnenga2001 boolean DEFAULT false CHECK(issendnenga2001 > -1 AND issendnenga2001 < 2 ), isgetnenga2001 boolean DEFAULT false CHECK(isgetnenga2001 > -1 AND isgetnenga2001 < 2 ),issendnenga2002 boolean DEFAULT false CHECK(issendnenga2002 > -1 AND issendnenga2002 < 2 ), isgetnenga2002 boolean DEFAULT false CHECK(isgetnenga2002 > -1 AND isgetnenga2002 < 2 ),issendnenga2003 boolean DEFAULT false CHECK(issendnenga2003 > -1 AND issendnenga2003 < 2 ), isgetnenga2003 boolean DEFAULT false CHECK(isgetnenga2003 > -1 AND isgetnenga2003 < 2 ),issendnenga2004 boolean DEFAULT false CHECK(issendnenga2004 > -1 AND issendnenga2004 < 2 ), isgetnenga2004 boolean DEFAULT false CHECK(isgetnenga2004 > -1 AND isgetnenga2004 < 2 ),issendnenga2005 boolean DEFAULT false CHECK(issendnenga2005 > -1 AND issendnenga2005 < 2 ), isgetnenga2005 boolean DEFAULT false CHECK(isgetnenga2005 > -1 AND isgetnenga2005 < 2 ),issendnenga2006 boolean DEFAULT false CHECK(issendnenga2006 > -1 AND issendnenga2006 < 2 ), isgetnenga2006 boolean DEFAULT false CHECK(isgetnenga2006 > -1 AND isgetnenga2006 < 2 ),issendnenga2007 boolean DEFAULT false CHECK(issendnenga2007 > -1 AND issendnenga2007 < 2 ), isgetnenga2007 boolean DEFAULT false CHECK(isgetnenga2007 > -1 AND isgetnenga2007 < 2 ),issendnenga2008 boolean DEFAULT false CHECK(issendnenga2008 > -1 AND issendnenga2008 < 2 ), isgetnenga2008 boolean DEFAULT false CHECK(isgetnenga2008 > -1 AND isgetnenga2008 < 2 ),issendnenga2009 boolean DEFAULT false CHECK(issendnenga2009 > -1 AND issendnenga2009 < 2 ), isgetnenga2009 boolean DEFAULT false CHECK(isgetnenga2009 > -1 AND isgetnenga2009 < 2 ),issendnenga2010 boolean DEFAULT false CHECK(issendnenga2010 > -1 AND issendnenga2010 < 2 ), isgetnenga2010 boolean DEFAULT false CHECK(isgetnenga2010 > -1 AND isgetnenga2010 < 2 ),issendnenga2011 boolean DEFAULT false CHECK(issendnenga2011 > -1 AND issendnenga2011 < 2 ), isgetnenga2011 boolean DEFAULT false CHECK(isgetnenga2011 > -1 AND isgetnenga2011 < 2 ),ismochu2012 boolean DEFAULT false CHECK(ismochu2012 > -1 AND ismochu2012 < 2 ),issendnenga2012 boolean DEFAULT false CHECK(issendnenga2012 > -1 AND issendnenga2012 < 2 ), isgetnenga2012 boolean DEFAULT false CHECK(isgetnenga2012 > -1 AND isgetnenga2012 < 2 ),ismochu2013 boolean DEFAULT false CHECK(ismochu2013 > -1 AND ismochu2013 < 2 ),issendnenga2013 boolean DEFAULT false CHECK(issendnenga2013 > -1 AND issendnenga2013 < 2 ), isgetnenga2013 boolean DEFAULT false CHECK(isgetnenga2013 > -1 AND isgetnenga2013 < 2 ),ismochu2014 boolean DEFAULT false CHECK(ismochu2014 > -1 AND ismochu2014 < 2 ),issendnenga2014 boolean DEFAULT false CHECK(issendnenga2014 > -1 AND issendnenga2014 < 2 ), isgetnenga2014 boolean DEFAULT false CHECK(isgetnenga2014 > -1 AND isgetnenga2014 < 2 ),ismochu2015 boolean DEFAULT false CHECK(ismochu2015 > -1 AND ismochu2015 < 2 ),issendnenga2015 boolean DEFAULT false CHECK(issendnenga2015 > -1 AND issendnenga2015 < 2 ), isgetnenga2015 boolean DEFAULT false CHECK(isgetnenga2015 > -1 AND isgetnenga2015 < 2 ),ismochu2016 boolean DEFAULT false CHECK(ismochu2016 > -1 AND ismochu2016 < 2 ),issendnenga2016 boolean DEFAULT false CHECK(issendnenga2016 > -1 AND issendnenga2016 < 2 ), isgetnenga2016 boolean DEFAULT false CHECK(isgetnenga2016 > -1 AND isgetnenga2016 < 2 ),index(id));

mysql> CREATE TABLE people ( id INTEGER UNSIGNED not null auto_increment primary key, name text, kana text, kankei1 text, kankei2 text, keisyo text, heiki_name text, heiki_keisyo text, mail_adr text, job text, renrakusaki text,bikou text,phone_keitai text,genjusyo_postal VARCHAR(14), genjusyo1 VARCHAR(80),genjusyo2 VARCHAR(72),genjusyo_phone text,nenga_postal VARCHAR(14),nengajusyo1 VARCHAR(80),nengajusyo2 VARCHAR(72),nenga_phone text,isneednenga boolean  , issendnenga2000 boolean  , isgetnenga2000 boolean  ,issendnenga2001 boolean  , isgetnenga2001 boolean  ,issendnenga2002 boolean  , isgetnenga2002 boolean  ,issendnenga2003 boolean  , isgetnenga2003 boolean  ,issendnenga2004 boolean  , isgetnenga2004 boolean  ,issendnenga2005 boolean  , isgetnenga2005 boolean  ,issendnenga2006 boolean  , isgetnenga2006 boolean  ,issendnenga2007 boolean  , isgetnenga2007 boolean  ,issendnenga2008 boolean  , isgetnenga2008 boolean  ,issendnenga2009 boolean  , isgetnenga2009 boolean  ,issendnenga2010 boolean  , isgetnenga2010 boolean  ,issendnenga2011 boolean  , isgetnenga2011 boolean  ,ismochu2012 boolean  ,issendnenga2012 boolean  , isgetnenga2012 boolean  ,ismochu2013 boolean  ,issendnenga2013 boolean  , isgetnenga2013 boolean  ,ismochu2014 boolean  ,issendnenga2014 boolean  , isgetnenga2014 boolean  ,ismochu2015 boolean  ,issendnenga2015 boolean  , isgetnenga2015 boolean  ,ismochu2016 boolean  ,issendnenga2016 boolean  , isgetnenga2016 boolean  ,index(id)) ;

2017年4月1日土曜日

動画ファイルからの切り出し

2018 Oct. 01.
2018 Apr. 15.
2017 Apr. 01.

FILE.tsの1,000秒目から300秒間の動画を取り出し、FILE.mpgとして保存する。

  ( qiita.com/kitar/items/d293e3962ade087fd850 参照 )
$ ffmpeg -ss [開始地点(秒)] -i [入力する動画パス] -t [切り出す秒数] [出力する動画パス]
$ ffmpeg -ss [開始地点(秒)] -i [入力する動画パス] -t [切り出す秒数] -strict -2 [出力する動画パス]
    開始地点(-ss)はソースの指定(-i)より手前に置く
    必ずエンコードする(-codec copyとかやらない)
    音声がAACの場合は「-strict -2 」オプションも必要。

    copyオプションを使わず、エンコードを行わないと時間のズレが生じやすい。 

INFILEの200秒目から8秒間の動画を取り出し、H.264で保存する。

$ ffmpeg -ss 200 -i INFILE -t 8 -f mp4 -vcodec libx264 -fpre MYPRESET.ffpreset -r 30000/1001 -aspect 16:9 -s 800x450 -bufsize 20000k  -maxrate 25000k -acodec aac -absf aac_adtstoasc -strict -2 -threads 2  ./OUTFILE.mp4

2017年2月26日日曜日

java

java

2018 Jan. 08.
2017 Feb. 26.

クラス冒頭のフィールド設定では初期化は可能だが代入は不可


  int x;
  x = 1;  // 不可

  int y = 2;  // 可能

  String s1;
  S1 = "ab";  // 不可

  String s2 = "bc";  // 可能

NetBeans設定

コード補完

http://masatoshitada.hatenadiary.jp/entry/2014/06/11/172203
 [エディタ]-[コード補完]と選択し、[言語]で[Java]を選択
 [Java用自動ポップアップのトリガー]に、以下のように入力
  .abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_

2017年2月25日土曜日

環境変数設定

環境変数設定

xubuntu16.04 LTS 64bit, ubuntu16.04派生,linux,.profile,.bash_profile,.bash_login,.bashrc
2017 Feb. 25.

xubuntu16.04では${HOME}に .profileが存在しているのでこれに
  VALUABLE="xxx"
  export $VALUABLE
と書いておく。

2017年2月21日火曜日

rubyインストール

2019 Oct. 12.
2018 Sep. 15.
2018 Aug. 14.
2017 Mar. 12.
2017 Mar. 09.
2017 Feb. 21.

システムワイド rbenvインストール

next49.hatenadiary.jp/entry/20171122/1511350272

ユーザ別 rbenvインストール

# apt install git build-essential libssl-dev libreadline-dev zlib1g-dev

$ cd
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

~/.profile に記述
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

$ source ~/.profile
$ rbenv rehash

rubyインストール

$ rbenv install --list
$ rbenv install 2.0.0-p648
$ rbenv rehash
$ rbenv versions
$ rbenv global 2.0.0-p648


bundlerインストール

$ rbenv exec gem install bundler
$ rbenv rehash
$ rbenv exec bundle config --global path 'vendor/bundle'

$ cat ~/.bundle/config
---
BUNDLE_PATH: vendor/bundle




2017年2月11日土曜日

sambaインスール

2019 Oct. 14.
2017 Feb. 11.

インストール

# aptitude install samba
# ufw enable
# ufw allow from 192.168.1.0/24 to any app Samba

samba再起動

 # systemctl restart smbd.service
 # systemctl restart nmbd.service

(旧)
# service smbd restart
# service nmbd restart


homeディレクトリ公開

インストール直後はコメント行となっている下記からコメントをはずす。
[homes]
   comment = Home Directories
   browseable = no

任意のディレクトリ公開

[SOME-DIR]
   path = /SOME/DIR
   public = yes
   writable = yes
   printable = no

シンボリックリンクの読み込み

[global]
wide links = yes
unix extensions = no

unix/linuxユーザーの登録

( www.atmarkit.co.jp/ait/articles/0901/28/news153.html より)
# pdbedit -a USER

システムのunix/linuxアカウントのパスワードとSambaユーザーアカウントのパスワードの同期

smb.cnf設定
  unix password sync = yes
  passwd program = /usr/bin/passwd %u
  passwd chat = * %n\n * %n\n *

ログイン中のユーザーのパスワード変更

$ smbpasswd

"guest ok ="の意味

Sambaサーバにアカウントを持たないユーザーがアクセスした場合に、それを特定のUNIXアカウント(ゲストアカウント)にマッピングしてアクセスを許可する設定。
yes : ゲストアカウントでのアクセスを許可する。public = yesとしても同じ。


"guest account ="の値で特定の UNIXアカウントに指定する。

"map to guest ="で、 Sambaユーザーとして存在しないユーザーがアクセスした場合にゲストアカウントとして扱う設定にする。
"map to guest =" の値
 Never : 不正なパスワードによるユーザーのログイン要求を拒否する。
 Bad User: 不正なパスワードによるユーザーのログイン要求を拒否するが、指定されたユーザーが存在しなかった場合はゲストログインとして扱う。この場合、guest accountで指定したユーザーとなる。
 Bad Password : 不正なパスワードによるユーザーのログイン要求はゲストユーザーとして扱う。この場合、guest accountで指定したユーザーとなる。

2017年2月5日日曜日

debパッケージ自動更新制御

debパッケージ自動更新制御

xubuntu16.04 64bit, ubuntu16.04派生, linux, apt-get, aptitude, unattended-upgrades
2017 Mar. 25.
2017 Feb. 05.

特定のパッケージのunattended-upgradesによる自動更新禁止

( linux.just4fun.biz/?Ubuntu/Ubuntu%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%A7%E8%87%AA%E5%8B%95%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%82%92%E6%9C%89%E5%8A%B9%E3%83%BB%E7%84%A1%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95 より)


/etc/apt/apt.conf.d/50unattended-upgrades の Unattended-Upgrade::Package-Blacklistの部分を次のように編集する。

  Unattended-Upgrade::Package-Blacklist {
    "vim";
    "libc6";
  };

unattended-upgradesの起動禁止

(www.hiroom2.com/2016/05/12/ubuntu-16-04%E3%81%A7%E8%87%AA%E5%8B%95%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88-%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%82%92%E3%81%99%E3%82%8B/ より)

sudo systemctl disable apt-daily.service # disable boot time run
sudo systemctl disable apt-daily.timer   # disable timer run

システムワイドな環境変数設定/グローバルな環境変数設定

2018 Sep. 01.
2018 Aug. 13.
2017 Feb. 05.

 システムワイドなPATH・環境変数

(/etc/environment ではなく) /etc/profile.d/hoge.sh にPATHを書く。 exportは不要。




一般ユーザ

一般ユーザ個別の環境変数は ~/.profile に記述する。exportは不要。

2017年2月4日土曜日

FFMPEGプリセットファイル

FFMPEGプリセットファイル

xubuntu16.04 64bit, ubuntu16.04派生, linux
2017 Feb. 04.

( https://teratail.com/questions/30148 より)
 i) vpre,apre,spreには「プリセット名」を指定する。
ii) fpreには「ffpresetファイルパス」を指定する。

i)方式の場合、
 (1)環境変数FFMPEG_DATADIRで指定したディレクトリ
 (2)$HOME/.ffmpeg/、(3)FFmpegビルド時に指定したディレクトリ
 の順でプリセット名.ffpresetファイルを探す。

ii)方式の場合、
 -vpreオプションは書かず、-fpreオプションに .ffpresetファイルのフルパスを書けばよい。

2017年1月28日土曜日

NVIDIA GeForce 6150SE nForce 430 の xubuntu 16.04 へのインストール

NVIDIA GeForce 6150SE nForce 430 の xubuntu 16.04 へのインストール

xubuntu16.04 64bit, ubuntu16.04LTS派生, linux
2017 Jan. 28.

# aptitude install nvidia-304

2017年1月15日日曜日

grub2 起動エントリー設定、起動エラー対処

2018 Sep. 15.
2018 Sep. 09.
2017 May 04.
2017 Jan. 15.

デフォルト起動エントリーの変更

エントリーの確認

# grep 'menuentry' /boot/grub/grub.cfg
  menuentry 'Ubuntu, with Linux 4.4.0-31-generic'
  menuentry 'Ubuntu 14.04.5 LTS (14.04) (on /dev/sda10)'
  menuentry 'Windows Vista (loader) (on /dev/sda3)'

デフォルト起動エントリーの設定

/etc/default/grub の GRUB_DEFAULT= に起動エントリーを記述する
  GRUB_DEFAULT='Ubuntu 14.04.5 LTS (14.04) (on /dev/sda10)'
 
# update-grub
 

前回起動したエントリーで起動する設定


/etc/default/grub の GRUB_DEFAULT= と GRUB_SAVEDEFAULT= を次に設定する。
        GRUB_DEFAULT=saved
        GRUB_SAVEDEFAULT=true
    // GRUB_DEFAULT=0 :エントリーの一番先頭がデフォルトで選択される

# update-grub
 

次回起動エントリーの一時的変更

(askubuntu.com/questions/838704/grub-reboot-to-specific-kernel/838835)

エントリーを指定して grub-reboot を実行する。次回起動時の一度だけ有効。

/etc/default/grub の GRUB_DEFAULT を次に設定する。
        GRUB_DEFAULT=saved


# update-grub
# grep 'menuentry' /boot/grub/grub.cfg
    menuentry 'Ubuntu, with Linux 4.4.0-31-generic'
    menuentry 'Ubuntu 14.04.5 LTS (14.04) (on /dev/sda10)'
    menuentry 'Windows Vista (loader) (on /dev/sda3)'

# grub-reboot 'Ubuntu, with Linux 4.4.0-31-generic'
あるいは
# grub-reboot N
    N: menuentry number
 
 サブメニューの起動設定は menu>submenu の書式とする
  # grub-reboot "Advanced options for Ubuntu>Ubuntu, with Linux 4.2.0-16-generic"
  あるいは
  # grub-reboot "1>2"
 

起動エラー対処

起動時にエラーとなりgrubシェルプロンプト画面となった時

grub.cfgファイルの場所を特定する。
  grub> ls (hd0,msdos8)/boot/grub



 
環境変数をセットする
 grub> set prefix=(hd0,msdos8)/boot/grub
  grub> set root=(hd0,msdos8)



 
grubメニュー画面を起動する。
  grub> insmod normal
  grub> normal



 
Linux起動後
  # grub-install /dev/sda
  # update-grub

FreeBSDの起動パーティション番号

# fdisk -l /dev/sda

デバイス   起動     Start 最後から セクタ   Size Id タイプ
/dev/sda1            2048  61382655  61380608  29.3G  7 HPFS/NTFS/exFAT
/dev/sda2        61384702 414670847 353286146 168.5G  5 拡張領域
/dev/sda3  *    414670848 488071167  73400320    35G a5 FreeBSD
/dev/sda5        61384704  83748863  22364160  10.7G  7 HPFS/NTFS/exFAT
/dev/sda6        83750912  92147711   8396800     4G 82 Linux スワップ / Solaris
/dev/sda7        92149760  93220863   1071104   523M 83 Linux
/dev/sda8        93222912 136230911  43008000  20.5G 83 Linux
/dev/sda9       136232960 414668799 278435840 132.8G 83 Linux


grubシェルでのFreeBSDパーティション

 (hd0,msdos6)

/etc/grub.d/40_custom での設定

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

menuentry "FreeBSD" {
  set root=(hd0,3)
  chainloader +1
}





2017年1月9日月曜日

シェルスクリプトで expr "$var" + 1 で数値判定するときの注意点


2019 Apr. 14.
2017 Jan. 09

何も書かれていないサイズゼロのファイルfile.txtから
var=`tail -n 1 file.txt`
とし、
expr "$var" + 1
ret=$?
とした時、
$varを二重引用符で囲むと、戻り値retには文法エラーが入る。
$varを二重引用符で囲まないと、varの値が0と判定され、exprの計算結果は1、戻り値retは0になる。

2017年1月8日日曜日

LinuxでのISO9660ファイルのDVD-Rへの焼き付け

LinuxでのISO9660ファイルのDVD-Rへの焼き付け

linux growisofs dvd+rw-tools ISO9660 DVD-R
2017 Jan. 08.

# aptitude install dvd+rw-tools

$ growisofs -dvd-compat -Z /dev/dvd=ISO-FILE
    DVDドライブの指定は/dev/dvdだけでよい。
    ISO-FILEの部分にISO9660ファイルのパスを書く。

単なるファイルとしてDVD-Rに焼き付ける場合
  $ growisofs -Z /dev/dvd -R -J FILE

2017年1月7日土曜日

onclkds.comへの勝手な接続の禁止設定


2017 Jan. 07.

basix 3.0でirefoxでもchromiumでもウインドウ内の何でもない場所をクリックした瞬間にonclkds.comにリダイレクトされ、さらに怪しいサイトにリダイレクトされる現象が頻発するので、
http://shikouhentai.jugem.jp/?day=20150501
を参考に、
ルーター(Buffalo AirStation WHR-AMPG)のセキュリティ設定のIPフィルタ設定で次の設定をした。
WHR-AMPGでは宛先アドレスにドメイン名を入れられないので、onclkds.comのIPアドレスを入れたが、変更される恐れがある。

動作     方向              送信元アドレス       宛先アドレス      プロトコル
拒否  LAN→WAN    192.168.1.0/24     206.54.163.50      全て

2017年1月4日水曜日

Wikipedia APIで「今日は何の日」データを取得するJavaScript


2017 Jan. 05.
2017 Jan. 04.

送信するURL

  var now = new Date();
  var month = now.getMonth()+1;
  var day = now.getDate();
  var monthDay = month+"月"+day+"日 ";
  var url = 'https://ja.wikipedia.org/w/api.php?format=json&utf8&action=query&prop=revisions&rvprop=content&titles=';
  url = url + monthDay;

取得するJSONデータ構造

  {
      "batchcomplete": "",
      "query": {
          "pages": {
              "4951": {
                  "pageid": 4951,
                  "ns": 0,
                  "title": "1月4日",
                  "revisions": [
                      {
                          "contentformat": "text/x-wiki",
                          "contentmodel": "wikitext",
                          "*": "{{カレンダー 1月}}\n'''1月4日'''(いちがつよっか)は[[グレゴリオ暦]]で年始から4日目に当たり、"
                      }
                  ]
              }
          }
      }
  }

  JSONデータ.query.pages[ pageid[0] ].revisions[0]["*"] に本文が格納されている。

  本文の内容の書式

     次の区切り文字列・順番で記事が並んでいる。
    各記事はアスタリスク(*)で始まり改行文字で終了している。
       == できごと ==
       == 誕生日 ==
       == 忌日 ==
       == 記念日・年中行事 ==
       == フィクションのできごと ==
       == 誕生日(フィクション) ===
       == 出典 ==
       == 関連項目 ==

wikipediaから今日に関する記事を取得し文字列で返すJavaScript

function wikipediaWhatIsToday(countArticle) {  // countArticleに取得する記事数を指定する
  var now = new Date();
  var month = now.getMonth()+1;
  var day = now.getDate();
  var monthDay = month+"月"+day+"日 ";
  var url = 'https://ja.wikipedia.org/w/api.php?format=json&utf8&action=query&prop=revisions&rvprop=content&titles=';
  url = url + monthDay;
  var response = UrlFetchApp.fetch(url);
  var json = response.getContentText();
  var data = JSON.parse(json);

  // get the page IDs
  //   http://stackoverflow.com/questions/30006183/get-wikipedia-pageid-from-title より
    var pageid = [];
    for( var id in data.query.pages ) {
      pageid.push( id );
    }

  // 記事本文を取得
  var content = data.query.pages[ pageid[0] ].revisions[0]["*"];  // キー*の値は["*"]で取り出す

  // 「できごと」を取り出す
  var dekigoto = content.match(/== できごと ==[\s\S]*== 誕生日 ==/);  // 改行文字を含む文字列には [\s\S]* を使う

  // アスタリスクで始まり改行文字で終わる文字列を取り出す
  article = dekigoto[0].match(/\*.+\n/g);  // *の前に\が必要

  // countArticleの個数の記事を取り出す
  var numberArticle = [];
  while (true) {
    var rand = Math.floor( Math.random() * article.length) ;
    numberArticle.push(rand);
    numberArticle = numberArticle.filter(function (x, i, self) {
            return self.indexOf(x) === i;
        })
    if (numberArticle.length == countArticle ) {
      break;
    }
  }

  var outputText = monthDay + "のできごと\n";
  numberArticle.forEach(function(numLine) {
    outputText = outputText + article[numLine] + "\n";
  });
  return outputText;
}