サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
blog.kteru.net
TL;DR ユニット設定ファイルに LimitNOFILE を書く /etc/systemd/system/<unit>.d/override.conf に書くとなおよい 経緯 CentOS 7 に MariaDB を構築していて、my.cnf に下記設定を入れていました。 open-files-limit = 65536 しかし、プロセスの Limit を調べてみると 1024 になっていて、ログにもその旨が出ています。 # cat /proc/`pidof mysqld`/limits | grep -i "max open files" Max open files 1024 4096 files # tailf /var/log/mariadb/mariadb.log ...snip... 150712 16:48:49 [Warning] Could not increase n
閉域ネットワークに設置されたサーバのメンテ中、サーバから外にアクセスしたいなと思いました。 閉じたネットワークに、MBP を有線でつないでいて、MBP からはポータブル Wi-Fi 経由で外に出れる状況です。 ------+------------+--------- 閉域ネットワーク | | +----+----+ | | サーバ | ... | +---------+ | 有線 | +----+----+ | MBP | - - - >> ポータブル Wi-Fi - - - >> [インターネット] +---------+ というわけで、下記のような感じで MBP に nginx でフォワードプロキシを立てました。 [MBP]$ brew install nginx [MBP]$ vi /usr/local/etc/nginx/nginx.conf ------------------
検証や開発のために OS X ローカルで dnsmasq を使うとき、 リゾルバの向き先を変えるためにいちいちネットワーク環境設定を開くのが面倒 (コマンドでもできるけど) 指定ドメイン名以外は通常通り名前解決したい と思っている人のために。 TL;DR /etc/resolver 配下に指定ドメイン名でファイルを作れば良い。 方法 指定ドメインのリゾルバを変更 設定 $ sudo mkdir /etc/resolver $ sudo chown <USER>:wheel /etc/resolver $ echo 'nameserver 127.0.0.1' > /etc/resolver/example.com OS X では /etc/resolver 配下にドメイン名でファイルを作る (書式は resolv.conf と同じ) と、そのドメインの DNS サーバを変更することができる
[FreeBSD 10.0-RELEASE] bsdinstall でも自由なパーティションレイアウトで Root on ZFS あらすじ FreeBSD 10.0 からインストーラで ZFS が選択できるようになりました。 僕の自宅のストレージサーバは、8.2 の頃から Root on ZFS になっていたり、freebsd-update で数回メジャーバージョンを渡ってきていたりするため、そろそろ一度クリーンインストールしてスッキリしたいと思っていました。 早速 Partitioning の項目で ZFS を選択してインストールしたはいいものの、パーティションと ZFS の切り方は下記のようになっていました。 # gpart show -l => 34 209715133 vtbd0 GPT (100G) 34 1024 1 gptboot0 (512K) 1058 4194304 2
ようやっと daemontools から Supervisor に乗り換えました。 ナウくていいですね。 ちょっとポイント書いていきます。 (バージョン: supervisor 3.1.2) pip でインストール # yum install python-setuptools # easy_install pip # pip install supervisor epel リポジトリにもありますが、若干古いので pip で入れることにしました。 EPEL5/6 だと 2.1、EPEL7 だと 3.0 が入りました。 (2014/10/21) 基本設定と起動 メイン部分 (Supervisor 自体) の設定と、管理する子のプログラムの設定はファイルを分けるのが僕のポリシーです。 /etc/supervisord.d 以下に置いた conf ファイル 1 つにつき [program:x]
配列をマージしたり差分をとったりしたいとよく思うのでメモ。 ハッシュ便利だなあ。 和集合 A∪B my @array_a = qw/1 2 3 4 5/; my @array_b = qw/3 4 5 6 7/; my %cnt = (); my @array = grep { ++$cnt{$_} == 1 } (@array_a, @array_b); 積集合 A∩B my @array_a = qw/1 2 3 4 5/; my @array_b = qw/3 4 5 6 7/; my %cnt = (); my @array = grep { ++$cnt{$_} == 2 } (@array_a, @array_b); 差集合 A-B my @array_a = qw/1 2 3 4 5/; my @array_b = qw/3 4 5 6 7/; my %cnt = (); m
proxy_set_header の動きがちょっとおかしいなと思ったのでメモ。 バージョン nginx 1.2.6 リバースプロキシを使う際、下記のような感じで、お決まりの proxy_set_header を http コンテキストで設定しておくと思います。 http { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Real-IP $remote_addr; upstream backend { server 1
お仕事で、数百台のサーバに対して、多少時間のかかる処理をする必要があった。 1 つずつ実行していては、さすがに日が暮れてしまう。 そうなるとスレッドで並列実行したいが、対象のサーバの分、数百個スレッドを生成すると逆に重くなってしまう。 というわけで、スレッド数に上限を設けて実行した、という話。 雛形はこんな感じ。 #!/usr/bin/ruby -Ku # -*- coding: utf-8 -*- # # 20120619 # thread template # require 'thread' def job(arg) sleep rand(0) print "#{arg}\n" end def main # スレッド数上限 thread_max = 3 # キュー jobqueue = Queue.new (1..10).each do |n| jobqueue.push(n) en
05/19 に、qpstudy 2012.05 に参加してきました。 内容は、「エンジニアのためのハードウェア徹底入門」というものでした。 一週間たってしまいましたが、ブログを書くまでが勉強会なので、書きます。 やさぐれギンガさんのアーキテクチャ入門 (@kuwa_tw さん) やさぐれギンガさんのアーキテクチャ入門(ためしてガッテン)(仮) コンピュータの 5 大要素である、入力・出力・演算・記憶・制御について、 寸劇を交えながら説明されていました。 ーーー 正直なところ、僕は 5 大要素がパッと浮かばず、 大学の情報系の学科で勉強してきた身として、「これはヤバイ」と思いましたが、 寸劇が印象的だったので、もう忘れないでしょうw この 5 大要素はノイマン型コンピュータが基礎なっている。 ノイマン型の最初のものは EDVAC であり、それから 60 年程経つが、 現在も変わっていない。
研究室の NAT 配下に一時的に置いたサーバを外から弄りたい。 でも、一時的なものだし、担当の先輩にポート開放頼むのもめんどくさいな。 と思ったので、ssh の逆方向のポートフォワードを使った。 弄りたいサーバ (以下 server) にて以下のコマンドを実行しておくと、example.com の 127.0.0.1:8022 が server の 127.0.0.1:22 に転送され、example.com で ssh localhost -p 8022 すると server につながる。 NAT 配下なので、ServerAliveInterval を設定して接続が維持されるようにしている。 # ssh -o ServerAliveInterval=30 -N -R 8022:127.0.0.1:22 example.com -l user さらに、研究室のネットワークは、ネットワーク機
freebsd-update コマンドを使って 8.2-RELEASE から 9.0-RELEASE へアップグレードした時のメモです。 FreeBSD 9.0-RELEASE Installation Instructions 事前準備 1. アップデート 9.0-RELEASE にするために必要なアップデートを行う。 (freebsd-update コマンドが変更される。) # freebsd-update fetch # freebsd-update install 2. デーモンの設定 ports で導入したソフトウェアに関する /etc/rc.conf 内の記述をコメントアウトする。 3. 再起動 # shutdown -r now アップグレード実行 4. 差分の取得・設定ファイルのマージ # freebsd-update upgrade -r 9.0-RELEASE Look
シェルスクリプトで引数の処理をしたい場合は、getopts が便利ですね。 使い方を忘れてしまいがちで、かつ、決まった形式で使うことが多いので、メモついでに雛型を作っておきます。 雛型 #!/bin/sh # # 20111207 # getopts test # PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/sbin:/usr/sbin export PATH # # usage # _usage() { #(*1) echo "usage:" echo "${0} -a -b HOGE [-c] [-d FOO] [BAR]" exit 1 } # # getopts # while getopts :ab:cd: OPT; do #(*2) case ${OPT} in a) ENABLE_a="t";; b) ENABLE_b
Google Chrome のエクステンション、Chrome Keyconfig の設定が、再起動すると消えてしまう事への対策です。 拡張機能の設定ファイルを直接編集することで、解決できました。 設定が消えてしまう時の環境 Windows 7 Home Premium SP1 32bit Google Chrome 11.0.696.60 unknown Chrome Keyconfig 1.11.0 1. 拡張機能の ID を調べる chrome://extensions/ にて、"デベロッパーモード" に切り替えると、拡張機能の ID を見ることができます。 この場合、okneonigbfnolfkmfgjmaeniipdjkgkl になります。 ここで、Chrome を終了します。 2. 設定ファイルを編集する C:\Users\<USER>\AppData\Local\Google
このページを最初にブックマークしてみませんか?
『blog.kteru.net』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く