それマグで!

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

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

2017-03-01から1ヶ月間の記事一覧

正規表現の名前付きマッチで、scanf から卒業する

正規表現の名前付きなマッチを覚えました。 >> ret = '直通特急 阪神梅田行 18:29 発 3番のりば'. match(/(?<type>.+) (?<dest>.+)行 (?<dep_time>.+)発 /) => #<MatchData "直通特急 阪神梅田行 18:29 発 " type:"直通特急" dest:"阪神梅田" dep_time:"18:29 "> >> puts ret[:type] => "直通特急" 名前付きマッチの後方参照はとても楽しい!!便利!!これで scanf みたいなレガシ</matchdata></dep_time></dest></type>…

SQLiteでの alter colmunの代替案

SQLite にはいくつかの機能がない。 たとえば、次の通り。 alter table rename columnがない alter table drop column がない SQLiteでの alter colmunの代替案 いったん別のテーブルにデータを退避する drop table でテーブルを消す create table でテーブ…

ffmpeg で mkv の字幕ファイルをmp4 にする

字幕も含めてコピーしたいな mkvのストリームに字幕が含まれてて、これを維持したまま、mp4 に変換したいな。 h264 / aac はそのままでいいんだけど、字幕はそのまま copy で動かなかったので調査した。 "ffmpeg -i '#{src}.mkv' -y -map 0:0 -map 0:1 -map …

画像がカラーか、白黒かを判別する

カラー画像かモノクロか判別する。 takuya@:$ convert sample.cl.jpg -colorspace HSB -separate -delete 0 -fx "u*v" -blur 2x2 -threshold 30% -format '%[fx:mean]\n' info: 0.693993 takuya@:$ convert sample.bw.jpg -colorspace HSB -separate -delete…

プレイリストのファイル形式を色々試してみる。

プレイリスト扱えると便利 WEBサイトに動画や音声をたくさんおいていると、再生が面倒なのでプレイリストを作って対応したい。どのアプリが、どのプレイリストに対応しているか、そもそもプレイリストのファイル形式はどのようなものがあるのだろうか。 プレ…

pythonでHTMLをパースしてXpathする

python でも xpath したい。 libxml でパースするには、lxml を使うと楽 pip install lxml 使い方。 lxml.html を使うと確実に、パースする事ができる。parse は IO を取るのでStringIOを使うことになる。 lxml.html.parse(StringIO(page.html)) サンプル im…

jq コマンドで json を minify する

jq を使って minify することが出来る cat composer.json | jq -c . または jq -c . < sample.json 任意のJSONをJSONのフィルタを変えて小さくすることが出来る。 サンプル composer.json を小さくする { "repositories" : [ { "type" :"git", "url" : "http…

pythonのORM:SQLAlchemy の基本的な使い方

SQLAlchemy を使ってみる。 目次 SQLAlchemy を使ってみる。 目次 インストール テーブルの作成 手順のおさらい RDBMS への接続 テーブル定義のクラス。 INSERT/UPDATE をする。 INSERT の例 UPDATE について DELETEする。 INSERT・UPDATE・DELETE のキャン…

DBアクセス抽象化で、INSERT と UPDATE でコードを共通化させるハック。

php

困りごと: INSERT と UPDATE の共通化をしたい。 似たようなコードを何度も書くのはめんどくさい。テーブル定義が変わったときにもう鬱陶しい。 共通化したい・・・ function insert( name , date ){ sql = "INSERT INTO table_name VALUES( #{name} , #{da…

phpのリクエストパラメータをサクっと処理する

php

phpのリクエストを読むのに、ブラケットがめんどくさい ブラケット書くのがめんどくさい 此の記述がもはや狂気。

指定したファイルの日付を取得してフォーマットするシェルコマンドdate

date コマンドでファイルの日付を取得する。 指定したファイルの日付を取得するには $ date +'%F %T' -r /etc/aliases 2015-08-02 13:35:20 最終更新日が取得できる。 -r, --reference=FILE display the last modification time of FILE もちろん stat でも…

dateコマンドでiso/rfc日付時刻タイムゾーンをぱぱっとフォーマットして作る

date コマンド便利だけど、フォーマット指定がめんどくさい takuya@:~$ date --date "2017-03-22 + 90days" +"%Y-%m-%d %H:%M:%S" 2017-06-20 00:00:00 ああ、めんどくさいよ%Y-%m-%d 、記号が多くてめんどくさい。 よくつかう日付は、オプションが用意され…

bashで複数行の文字列の代入と、ヒアドキュメントを使わずに変数に格納する方法

bash で複数行の文字列を変数に格納する方法 「改行が入らない」ではなく、「改行が見えない」のです。入らないと思って改行を調べてしまう事例が多いです。注意しましょう その1:一番シンプルなのはそのまま str=" ここは サンプル の複数行文字列 です。…

sendmail でコマンドからメールを送信する。

メール通知のテストに使う。 postfix や exim4 のメールサーバーの設定をしていて、テスト・メールを送信したいときに、手作業でsendmail コマンドを送るのは、ちょっと面倒なのと、どのメールが未到達で、どのメールが到達したか区別するのが大変なのでスク…

sudoersの設定を分割する /etc/sudoers.d を使おう

/etc/sudoers.d で分割できる。 /etc/sudoers.d を使うと、必要なものを覚えやすいファイル名で書いておいてバージョン管理することが出来る。 編集方法 編集方法がめんどくさい。分割して管理できるが、各ファイルを編集するのにvisudoを使う必要があり、こ…

nmtui-connectで無線LAN接続して、NetworkManagerと仲良くなる

Pizeroで無線LANを接続する Wi−Fiにぱぱっとつなぐには、アレコレとコマンドを弄るより network-manager を使うのも楽ちんだと思う。 sudo nmtui-connect 画面が出てくる ssh 経由でも安心 細かいコマンドや /etc/network を使わなくていいので楽ちんですね…

POSIX の メッセージ・キューを作成する(C言語)

POSIXのメッセージ・キューをC言語で扱う コンパイルには gcc -lrt を使う。 まずは送信するところから。 q_push.c #include <mqueue.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> int main(){ int cnt; int ret; char *str; void *pt; mqd_t q; q</string.h></unistd.h></stdlib.h></stdio.h></fcntl.h></sys/stat.h></mqueue.h>…

POSIX の メッセージ・キューを確認する。コマンドで。

POSIX message queue を確認する。 Linux なら /dev に出現する。 takuya@:~$ ls /dev/mqueue/ キューがあるとき /sample という名前でキューを作ったのでキューを確認することが出来る。 takuya@:mq$ ls /dev/mqueue/ sample キューの状態をサクッと確認す…

PythonでPOSIXのMessageQueue を使う。

POSIX の メッセージ・キューを使う。 プロセス間通信などと呼ばれる。POSIXのキューを使ってみる。 プロセス間通信 - Wikipedia プロセスとプロセスのデータのやり取りにメッセージ・キューを使うことで幾分楽になる。マルチスレッド以前に複数プロセスでデ…

シェルで指定文字に文字列を分割して結合する。

文字列をシェルで、指定文字数に分割して結合するには 選択肢になるコマンドは、分割・結合でそれぞれ次の通り 分割 flod grep 結合 paste tr などが使えることがわかった。 分割の例 fold -w2 grep -E -o '.{2}' 文字列を指定文字に分割する。fold コマンド…

Debian/ubuntu のapt自動アップデートのUnattendedUpgradesを設定する

Debian の apt 更新がめんどくさいのでなんとかする。 昔は cron-apt でやってたけど、今時はどうするのかなーと思って調べてたらUnattendedUpgradesがあったのでコレを設定することに。 Debian Wikiに従ってインストール sudo apt install unattended-upgra…

web.archive.org のURLを考える

web.archive.org のURLはどうなってるのかを見てみる web.archive.org のインターネットアーカイブがとても便利。 著作権云々だとかで魚拓サービスはとても使いにくいので、アーカイブから取るのが良い。 基本的なURL 基本的はURLは日付+取得したいURLにな…

バックエンドへのssh のユーザー名で接続先を振り分ける(SSHプロキシ的な踏み台サーバーの作成

ssh

ssh でフロントとバックエンドへの接続を簡単にしたい。 ssh でIP浪費するのもめんどくさい話だし。 バックエンドへの接続をもう少し楽にできたら良いんだけど。 ユーザー名でバックエンドへの接続を切り分ける 発想としていくつかある。 フロント┬────── Ba…

php で終了しないプログラムを書く

php

php はホスティングなどのリソースを上手に扱う関係上、実行時間が限られてる。 なので、終了しない無限ループをキックしようと思うとこんな感じなる。 #!/usr/bin/env php

動画の音声・動画ストリーム情報をJSONで受け取るffprobe json オプション

事の発端:ファイル名変換をミスった この動画なんだっけ?wmv?avi? mpegts ? ファイル名の変換をミスった。拡張子がトンだ。もうしにたい。仕方ないのでコーデック情報見ながら各種データの拡張子を探ることに 動画のストリーム情報の解析がめんどくさい…

qpdfでPDFにパスワードをつけて、編集不可にしたり、閲覧不可にする。

qpdf でパスワードをつける。 qpdf があればコピーを不可、編集不可、閲覧不可などのパスワードをつけることが出来る 使うオプション --encrypt qpdf --encrypt パスワード1 パスワード2 キー フラグ -- in.pdf out.pdf 最後にいれる -- はオプションフラグ…

networksetup 困った。。。ダイアログが何度も出る

networksetup 困った。。。 networksetup が便利なんだけど。これを使うと毎回毎回にダイアログが出る。 /usr/sbin/networksetup sudo すると解決する sudo したら解決するらしい。なんでや。。。 sudo /usr/sbin/networksetup sudo で解決するので、sudo つ…

rubyのSequelをパパと使うサンプル(select/update/create/delete/unique/constrains)

DB にアクセスするなら Sequel が便利 データベースにアクセスしてデータを扱うには Sequel が便利。ActiveRecordもいいんだけどアレはめんどくさい。 SQLに極めて近い構造で余計なことはなにもなく便利でいい。 インストール gem install sequel DBに接続 D…

GNU mc(:midnight commander)でファイラ使うと楽しい。

ようやく名前がわかったので使ってみた。 昔、教授が使ってて、なんやこれ!楽しそうと思ったファイラ。「これDOSですか?」「いいやちがうよ、古い頃から使ってるMS-DOSみたいなもんだな」「なんで?Finderあるじゃないですか?」「コレがいいんだよコマン…

SOAレコードとdig

DNS のSOAレコードについて takuya@:sites-available$ dig soa google.co.jp +short ns2.google.com. dns-admin.google.com. 149484063 900 900 1800 60 ^^^ ^^ ^^ ^^ ^^ │ │ │ │ └ minimun │ │ │ └─ expire │ │ └─ retry │ └─ refresh └─ serial serial シ…