2013-03

2013-03-03 

俺の手持ちのギターで一番古い奴はJackson starsのKVの下から二番目のモデルで、まあこれは結構良いギターだと思っているんだが、何かネック側のピックアップが低音出すぎでブーミー過ぎるとずっと思ってたんだよな。そんでなまじ古くから持ってるからあんまり分析とかしてなかったんだけど、メンテナンスついでに分解してみてビックリ。

載ってるピックアップはHB-108というSeymour DuncanのOEM品なんだが、これ元になったピックアップはSeymour DuncanのInvaderで、こいつはとにかく中低音が無駄に出まくる超大馬鹿(褒め言葉)なピックアップらしい。HB-108はそれよかもうちょっとDuncan Distortionよりらしいが、いずれにせよ重低音が強烈なピックアップには変わりないっぽいとか。でも直流抵抗を測ったら7.2kΩだったので、やっぱ中身は概ねInvaderじゃねえかなあ。

それでまあいいピックアップっちゃそうなんだが、先に書いた通り歪み系セッティングで使うとブーミー過ぎる気がするのでどうしたもんかなあと。4芯ケーブルなんでパラレル結線にして使う(多少は高域の欠落が抑えられる)ってのもありだが。このギターじゃネックポジションはクリーンサウンドでしか使わない気がするし。


一人でギターを弾いていても基本はツインギターで録音するので、同じPOD X3のセッティングであっても2本のギターで違いがあった方がサウンドに厚みが出る。まあ、組み合わせによっては逆効果になる事もあるかもしれないし、無難に同じギターで弾いちゃうことも多いんだが。でもリードとリズムで分業してる奴だと、それらのギターを変えた方が良い結果になるような気がする。(そういやArch Enemyはリードはそれぞれ違うギター、リズムは同じギターで録音していたとかなんとか。)

2013-03-04 

hplipをアップデートして設定なんぞをやっていたら、いつの間にか自分のアカウントのグループが勝手に書き換わってaudioとwheelから削除されていた。root権限の必要な操作が途中に挟まっていたので、多分それだろうとは思うが、しかしこんな結果が予想できるわけない。素でグループ名決め打ちみたいなバカな処理が走っていたんじゃねえかこれ。でも普通はバックで走らせるコマンドはusermod -a -Gだろうしなあ。謎だ。


まだ製作開始してないけど、とりあえず。リペア中のジャンクギターはちょっとまあいろいろあって放置中。本当に凄い状態だったからな。

2013-03-05 

PythonのジェネレータにはPEP 255にある通りの制限がある。以下のコードはそのPEP 255より。

def g():
    i = me.next()
    yield i

me = g()
me.next() # ValueErrorが送出される

まあ見た感じ明らかにおかしいコードだが、要するにあるジェネレータが動いている間、そのジェネレータの内部からさらにそのジェネレータのnext()を呼ぶことはできないということ。

これ一見すると「こんなコード書くかよ」って感じなのだが、今回はプログラミング言語のインタープリタを書いていてこの制限に引っかかった。いや単にインタープリタの状態の持ち方の作りがジェネレータを考えていなくて、後々にジェネレータを状態として持ったときに問題になったんだが。(Pythonでyieldのような機構を持った言語を実装してみると、これに引っかかる人が出てきそうな気がする。)

2013-03-08 

動的型付き言語vs静的型付き言語の討論って、そもそもの問題は「ソフトウェア開発の各段階でどの程度不完全性を許容し得るか、またどうやって不完全な状態を解決するか」といった観点から語られるべき問題であり、「動的型付き言語vs静的型付き言語」などというゴミにも等しい対立軸で語るべき問題ではないだろう。同じ「静的型付き言語」であってもアプローチは大幅に異なることが珍しくないわけだし、それは動的型付き言語であっても同様だろう。

まあ、Pythonをここ数年メインで使っておいてなんだが、動的型付き言語の利点のかなりの部分はJavaみたいな言語へのアドバンテージで、例えばduck typingなんてstructual subtypingを採用した静的型付き言語には必ずしもアドバンテージにならんでしょうと思う。一方で常に静的型チェックが入ると、現状のCatyの開発みたいに凄い変更がポンと要求されて、それの使い勝手をとりあえず検証しないといけなくて、部分的に不整合があってもそれはまあ順次解消しましょうみたいなプロセスだと結構面倒くさい気がする。マンパワーが足りないとねえ、今この時点で必要とされていない細部の修正は優先の高いタスクの後に時間を取ってやりたかったりするし。

というわけで動的型付き言語からはgradual typing、静的型付き言語からは例えばCatyがやりつつあるような形で不完全性の許容と解決について「今は許容する、しかしいつか解決する、どこが不完全かは把握できる」みたいな方向で型システムの厳密性を制御できるようなアプローチを追求するのが割と有効なんじゃないかと思う。

2013-03-09 

風邪気味で調子悪いので、気晴らしにまあ適当なもんでも。

HTML5のaudio要素使ってオンラインプレイリストみたいなのを手軽に作れないかなあと思ってやってみたら、まあすげえ手抜きだけど簡単にできた。audio要素にaddEventListener("ended", <イベントハンドラ>)でいける。詳細はソース見て。FirefoxとChromeの特定のバージョンでしか動かしていないので他は知らん。

あとこれどうもモバイル版のChromeとかだとclickイベントが発生しないと再生が始まらないようで、その場合はclickイベントを偽装して再生するなど、一手間加える必要があるらしい。ま、モバイル環境で勝手に帯域使うのは流石にちょっとアレなわけだから、そう考えてみりゃ妥当な挙動か。


昨日の話題の補足。メタプログラミングは現状動的型システムの方が有利っぽく見えるっちゃそうなんだが、じゃあ静的型システムで同程度に柔軟に出来ないかというと、まあそうじゃないだろ。現にCatyは型宣言やスクリプトコードに対して

  1. 内部データ型→JSONへのレイファイ(実際には拡張フォーマットのXJSON)
  2. レイフィケーションイメージへの何らかの操作
  3. JSON→内部データ型にアンレイファイ

という操作ができる程度にメタ巡回的であり、また手を加えた前後で整合性が取れているか判定できる程度の型チェック機構を持たせるべく開発を進めている。

2013-03-12 

普段の開発作業で複数Catyのインスタンスを立ち上げる必要があり、それぞれ別のポートをアサインしているのだが、突然うち一つの8081番ポートが"Address already in use"となった。俺別に何もしてないはずなんだがなあ。

つーわけでnmapなどを使って調べてみたが、

~ # nmap localhost

Starting Nmap 6.01 ( http://nmap.org ) at 2013-03-12 14:11 JST
(略)
8081/tcp  open  blackice-icecap
(略)

blackice-icecap? なんぞこれと思ったが、これはwell-knownなサービス名を引いているだけらしい。そして/etc/servicesには以下の記述。

sunproxyadmin    8081/tcp    tproxy      # Sun Proxy Admin Service
sunproxyadmin   8081/udp    tproxy      # Transparent Proxy

なんかproxyの記述がある。というわけでfuserでそれっぽいのを探す。

~ # fuser -v -n tcp tproxy
                     USER        PID ACCESS COMMAND
tproxy/tcp:          chikara   16211 F.... kwrite

お前かkwrite。というわけで解決。

俺はどちらかというとGnomeよりはKDE、というよりはGTKよりはQtって感じなんだが、しかしなあ。knotifyがalsaを占有してjackと衝突したり、あるいはこれみたいに一体何の必要があるのか分からんポートを使用したりというのはどうにも心証が悪い。


まあ、そんなこといいつつも統合デスクトップ環境は使っておらず、fluxboxを使ってんだけどな。

2013-03-14 

まあ最終的にはこれを納得するかどうかの価値観次第ではあり、事実俺もそんなに稼いでいるわけじゃないが(でもまあ俺の場合は結構イレギュラーなので同列に並べるのはダメだな)、しかしフリーランスへの報酬が22〜50万円/月というのはねえ。というわけで、ちょっとフリーランスの生活について金銭面での極めてざっくりした話を書く。とりあえず最低報酬の22万円をベースに考える。またとりあえずその条件で1年働いて、同条件でもう1年というケースだと仮定する。実際のフリーランスはまずそうはならんと思うが、話を単純化するためだ。

まずは親元に住むか一人暮らしかシェアハウスかなどで違うんだが、とりあえず一人暮らしとする。まあ俺が一人暮らしを始めたときはロフト付き1Kで58,000円ぐらいのところだったので、まあ50,000円にしとく。このぐらいの価格でもちょっとアグレッシヴなイベント盛りだくさんの物件だったりするが、まあいいや。そんでネットだの携帯電話だの光熱費だのはまあやっぱバラつきが大きいが(例えば都市ガスかどうかでも根本的に変わるし)、クソ面倒なので25,000円/月ぐらいにしとく。電気ガス水道ネット携帯電話の合計な。もうちょっと低くなるかもしれんが、まあ仮定の話なので。

あとデカいのは市県民税と国民健康保険と国民年金なのだが、国民年金は確か15,200円/月、市県民税は課税対象所得額の10%程度を4期に分けてなのだが、国民健康保険もうそうだが自治体によって計算方法が違うようなので一概には言えんか。とりあえずこの辺は適当に考えておく。いろいろ面倒で計算があってるかどうかの自信ないんで、あくまでも大雑把な話ね。

家賃や光熱費はある程度経費として扱えるんだが、どうも件のリクルートページだと勤務時間が書かれてっからテレワークとかじゃなさげなんだよなあ。というか請負で拘束時間書いてあるってそれ偽装請負臭くねとか思うが、まあいいや。とりあえず自宅で仕事しないならこの辺は経費にならんかもしんない。(まあ、実際にはバレないと思うが。) なので青色申告していた場合の10万円の控除だけを考える。交通費とかは流石に先方から支給されることを期待して(ちょっと甘め)、消耗品費なども考えない。

国民健康保険と国民年金は控除の対象になる。ただし支払った際の控えは取っておくこと。今のところ確定申告でチェックされたことはないけど、なくしてるといざという時にヤバいっぽいからな。で、死ぬほど適当に控除金額を仮定して計算すると課税対象所得額は1,777,600円。所得税は88,880円かな。これは一月あたり7,406円のマイナスと考えるか。

さてここから翌年度の国民健康保険料と市県民税を計算すると、前者はまあ自治体にもよるが多分26,000〜28,000円/月(実際には10回払い)で後者は多分1期あたり44,440円ぐらいかなあ。月あたりだと14,813円ぐらい。いやこの辺は税理士でも何でもないので未だによくわからん。まあ、実際に確定申告してる者の肌感覚としてはこんぐらいじゃねえのと思う。

これで月単価22万円だとどうなるかというと、220000 - (15200 + 14813 + 280000 + 50000 + 25000 + 7406)で手元に残るのは79,581円。そこから食費その他諸々の先に計上しなかった生活費などを差っ引くと、いろいろ端折った甘めの見積りでもかなり苦しい。去年までは普通に稼いで今年この地雷案件踏んじゃったみたいな事になると、まあ赤字の可能性は高いんじゃねえの。そんで数ヶ月この条件で働いて残りの月に仕事ないとかになると、まあなんつーかいろいろ推して知るべし。というか月単価22万円ってのは先の計算をみれば分かるとおり、税金とか差っ引いて正社員の手取りっぽい額に直すと15万円とかそのレベルだぜ。1年目のペーペーでもありえねえ。手取りで15万ってのは、俺の地元(微妙に田舎)の工場の下っ端工員の手取りと大体同じ。そんで俺がかつて勤めてた下請け会社やその周辺でも、流石にもうちょっと1年目から手取りで貰えてたぞ。

というわけでまあ、フリーランスへの最低報酬が22万円というのは舐めすぎ。スキルと業務形態を考えると50万円が上限というのもあまりに低すぎる。そもそも50万円で1年働けば年間の売上が600万円になるけど、必ずしもそうならないのは知っての通りだし、そこからいろいろ差っ引かれるわけだからな。(税制上は正社員の方が概ね有利なはず。) 実際のところ俺みたいにコンスタントに開発作業のある仕事+それ通じた案件が降ってくるとかいうのはもの凄い特殊な事例だ。(ぶっちゃけ俺フリーというよりは書生みたいなもんだし。) なので件の会社は要求スキルとフリーランスとしてのリスクを天秤にかけると、明らかに釣り合ってないよなあ。

結論:死ねや。

2013-03-16 

さてここに3枚のピックがある。一番左はJim DunlopのMax Grip Nylon 1mmで、ここ最近エレキを弾くのは全部これ。去年の9月ぐらいから使ってると思う。オールラウンドに使えるので重宝している。で、真ん中がIKMのティアドロップ3Gのクリーンで、これもなかなかのピックだ。

そんで一番右の奴が1枚600円以上するV-PicksのSmall Point。これの透明な奴も売ってるが、どう考えてもなくしそうだったので少々割高になるが色付きの奴を買った。購入したのは相当前だが、これまであんまり使ってこなかったんだよなこれ。

なんであんまり使ってこなかったかというと、このピックは滅茶苦茶弾きやすい代わりに音がクソになりやすいという大変致命的な欠点があり、具体的にはプレーン弦を弾いたときのピッキングノイズがすごい。普通のピックが「ピキピキ」というノイズなら、こっちはなんというか「ピギャアァァァ」というぐらい。妹に聴かせたところプーって吹いてたもん。

一応ノイズを軽減させる方法はある。といっても弦に対してフラットに当てるとか、あるいはピッキングポイントを変えることで対処するとか、あくまでも基本的なピッキングテクニックをしっかりやることで対処するのだが。

そして今更これを持ち出したのは、Sentencedの古い曲を久しぶりに弾こうとしたらちょっと体力的にキツかったので、まあピックの助けを借りようかと思って。サウンドを考えるならMax Grip NylonとかMax Grip Jazz IIIの方がいいとは思ってはいるんだけどね。

2013-03-19 

偽装請負22万/月みたいなのは相場に疎い連中が騙された結果相場がぶっ壊れると考えれば、そういう会社があること自体がもうとんでもない迷惑だと思うんだけどねえ。同業者であれ擁護してる奴って不毛な価格戦争を受けて立つ気なんだろうか。

なのでまあ、騙してるにしろ天然でバカなのにしろ、あんまり相場観から離れてかつ非道な根付けしてる連中はその都度晒し上げて周知していくしかねえんじゃねえかなと。


もうちょっと生々しい事を書くと、SIerの二次請けで一人頭支払われるのって、例えば銀行相手の某プロジェクトだと50万円/月あたりがまあ基準ラインだったんだよ。まあ、俺が辞めた後にさらに厳しくなってたのでもっと下がってるっぽいけど。

その一人頭の支払額はあくまでも会社間の話なので、そっから各種いろいろ差っ引いて支払い賃金は25万円以下になるのが普通で、例えば俺は覚えている限りじゃ23万円ぐらが支払い賃金でそっから天引きされていくらってところだった。

フリーランスの場合は仕事がコンスタントにあるわけじゃないとか、支払いの滞りとか、その他諸々のリスクを考えると一般的な下請け構造で会社間で支払われるのと同額ぐらいもらってないと厳しいって意見が多いわけだから、その観点からは50万円/月はむしろそっから話を始める最低ラインに近い。この辺は契約内容とか地域とかまあいろいろな要因で変わるが、何を目安にするかは変わらんはずだ。

2013-03-20 

ギター自作キットの製作はあまり進んでいないんだが、まあやっぱ塗装は鬼門だな。ステイン塗装は木の状態が悪くなきゃ楽だが、どうも俺の買った奴はあまり良くないというか、指板に接着剤がこびりついていたあたりからお察しな物だったのでちと厳しめ。いっそ着色ニスにさらにステインを混ぜて塗りたくってやろうかとか考えている。

あとボディに追加のルーティングが必要だったのも誤算ではある。なんで弦アースが取れないようになってたんじゃ。テレキャスターキットなんかはブリッジの形状的にザグる必要ないし、ストラトキャスターキットも同様。SGやレスポール何かのキットは弦アースが取れないかもしれん。

まあ、ギターの作りをより知りたいみたいなのも製作の動機の一つなんで、イマイチ釈然としないもののまあこんなもんかと思うことにする。

2013-03-22 

プログラミングをとりあえず経験しようと書いてあるのは悪くないどころか良い事なんだが、それの目的が概ね面接対策ってのはいただけないなあ。というかプログラミングのタスクを相当割り振られることを考えると(プログラミングすらできないSEとか混乱の原因でしかねえもん)、むしろそこでガッツリとプログラミングを体験しておけよ。プログラミングほど独学でかなりのレベルまで学びやすい専門知識・技能ってそうそうないぞ。俺の仕事に関わる範囲だと、例えば数学の勉強と比べてみればもう学びやすさのレベルが全然違う。理論的な部分は独学じゃ辛いかもしれんが、まあそういう知識は後からでも良いっちゃ良い。

何よりそのプログラミング学習への態度から専門的な仕事それ自体へのモチベーションがみえないのが気になるところではある。志望動機なんかはまあ「お金欲しいし、食いっぱぐれなさそうだし」とかで良いんじゃねえのというか、実際問題俺だって情報系を志した理由は「食いっぱぐれなさそう」で、そこから気がついたらこんな事になってるんで、まあ最初の動機なんてプリミティブな欲望直結でも悪くないんじゃねえの。どんな綺麗事言ったって興味ないやる気ないじゃ続かないし、逆にそれらがあるなら最初の動機がなんであろうと関係ないでしょ。あるなら未経験者でも伸びた奴を知ってるし、ないとお互い目を覆わんばかりの惨状になる。だから興味とやる気を本当に持っているかこそが問題。

2013-03-25 

先日余裕で保証期限切れのWindows機がぶっ壊れたのでちと痛い出費だが買い換えたのだが、しかしなんでこんなマゾい環境で開発作業をできるのかさっぱりわからん。いやまあ俺も大学の時は使ってる物が物だけにWindows機で作業していたのだが、GUI使った代物からWeb系に鞍替えした時はLinuxにスパッと切り替えたからなあ。

何がダメって、もうバッチでガーッと処理を流せないことの多さが本当にダメだ。開発環境にしたってUnix系OSなら、例えばaptやemerge、portsあたりの機構で簡単に整う物が、Windowsだとインストーラーをダウンロードしてきて実行してウィンドウをクリックしていって、そんで目当てのプログラミング言語の処理系が入ったから必要なモジュールをインストールしようとなったときに、「VCが入ってないので格調もジュールがコンパイルできません(実際のエラーメッセージはもっと不親切)」となるわけだ。ふざけんな。

2013-03-26 

最近というか昨日今日の話だが、Caty Scriptに加わった新しい構文。まずは平行オブジェクト構文。いわゆるfunctional record updateみたいな雰囲気というか、まあそういうもんだと思って。これまではオブジェクトの更新というか元のオブジェクトをベースにした新しいオブジェクトの構築は結構煩わしいものがあったが、大分簡潔になった。

caty:root> {"a":1, "b":2, "c":3} | ={"a":pass}
{
    "a": 1
}
caty:root> {"a": "x", "b": "y"} | ={"a": text:toupper, *:pass}
{
    "a": "X", 
    "b": "y"
}

これの配列版もあるが、まあ大して変わらん。

caty:root> ["a", "b", "c"] | =[pass, *text:toupper]
[
    "a", 
    "B", 
    "C"
]

存在しないプロパティや配列要素は一律undefinedとして扱い、またundefined値の要素はないものとして扱うので、以下のようなコードも書ける。

caty:root> {"a":1, "b":2, "c":3} | ={"a":undefined, *:pass}
{
    "c": 3,
    "b": 2
}
caty:root> {"a":1, "b":2, "c":3} | ={"a": pass, "d": pass}
{
    "a": 1
}

この辺は普通に要素が無い事を示すエラーが良いように思えるが、

caty:root> ... | ={"a": pass, "d": when {undefined => 4, * => pass}}
{
    "a": ...,
    "d": 4
}

などとまあ、結局設計全体の一貫性を守った方が得だった。

2013-03-27 

フリーソフトウェアを支持している癖に大した理由もなくフリーでないOS使ってる連中はデスクトップLinuxでDAWとか動画編集とかやってる俺を少しは見習えと書こうと思ったが、そういや一部のプラグインがプロプライエタリだった。まあ、そのプラグインの収益の半分はフリーなDAWの決定版である(ってか他に選択肢がない)ardourに寄付されるということなのだが。

そのardourはいつの間にやら3.0が正式バージョンになったようなので、ちとアップデートしてみるかな。αの時に使った限りでは、2.x系統よりも全面的に便利になっていたわけだし。

2013-03-28 

これはとても良いニュースだ。ようやく独自ライセンス構想などというものから足を洗ってくれるか。何しろ対象がソフトウェアに限定されるフリーソフトウェアの世界も独自ライセンスなどと言い出したら大抵は「死ね」と言われるのに(いや実際万死に値する愚行だろう)、広く著作物一般を扱うライセンスでCCじゃない独自ライセンスを策定とか勘弁してほしいからな。俺も独自ライセンスについて考えたことがないわけではないが、結局「CCの方が1兆倍マシ」という結論にしかならなかった。

でまあ、その文化庁のやってた事として、CLIPシステムの構想の前に自由利用マークがあった。

一言で言えばイディオットだし、それ以上の言葉を費やす事自体が無駄なので、CLIPシステムに行こう。これについて文化庁の2010年の報告書に目を通……す必要ねえかもしれない。

好意的に捉えようとしてもやっぱ「CCじゃダメなのか?」「相互互換性がないとまずいんじゃないか?」となってしまう。もっと早くそう結論付けろよと言うのが本音っちゃそうだが、まあいいや。


ところでCCについての懸念点の一つとして「作者の意向に沿わないor作者の名誉を害する改変をさせたくない」というのがあるが、これはFAQにしっかりと項目がある。

要するに、例えば自分の作品をベースにヘイトスピーチまみれの二次創作を作られたらそういうのは流石に止められるし、そこまで酷くなくても自分のクレジットを外すように要請する事は可能だということ。前者はそもそも著作人格権の枠内で十分対処可能だそうだ。


なんかtwitterでネタが流れてきた。ちと古いページっぽいけど。

特許が云々のところは本来特許は特許の出願者に利益を与えることでテクノロジーの公開を推進する制度だったんじゃとか、そもそもフリーソフトウェア支持者はソフトウェア特許に反対だったりするぞとか、なんつーかネタで書いてるにしてはそのネタを成立させるための下地作りに手を抜き過ぎで舐めてるし、ガチなら単なるバカ。

2013-03-30 

これをつかった演奏動画とかは、まあそのうち。まだピックアップはショボい付属品だし、さらに改造しないと使い物にならんし。