Syntax highlighter

Showing posts with label computer. Show all posts
Showing posts with label computer. Show all posts

2018-07-16

【備忘録】Windows 10 上である程度まともな開発環境を作る

今月から新しい職場になったのだが、前職と違い開発環境がWindowsであった。噂にはMacが与えられる予定だったらしいのだが、偉いさんの鶴の一声で却下されたとか…まぁ、大企業あるあるだと思って前向きに考えることにした。っで、今日環境がWindows 7からWindows 10にアップグレードされたので、WSLを使ってそれなりにまともな開発環境をこさえる努力をすることにした。

【Ubuntu on WSLを入れる】
Micorsoft Storeが使えればそれをそのまま使えばいい。っが、今回はStoreがブロックされているので直接Zipファイルをダウンロードする方法をとらざるを得なかった。詳細は以下のStack overflowが詳しい:
Is there a way of installing Windows Subsystem for Linux on Win10 (v1709) without using the Store?

Ubuntuのバージョンが16.04だったので、do-release-updateを使って18.04にした。

【VcXsrvを入れる】
まともなターミナルエミュレータを使わないとまともな開発環境は作れない。ここでいうまともの定義は少なくともtmuxがまともに動く程度(だが、Windowsの標準ターミナルだと画面がちらつくのだよ)。いろいろオプションはあるが、Windows側にX11サーバを立てる方法が一番楽かなぁと思いそれにした。

VcXsrvは64ビットバイナリがSourceforgeにあるので、それを落とす。軌道はマルチウィンドウであれば後は適当でもいいと思う。

【xfce4-terminalを入れる】
Gnomeでもいいのだが、軽い方がいいかなぁと思い。

【起動スクリプトを書く】
デフォルトのubuntu.exeではWindows標準ターミナルが開くので、起動スクリプトを書く。こんな感じ。
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "%LocalAppData%\Microsoft\WindowsApps\ubuntu1804.exe run DISPLAY=localhost:0.0 xfce4-terminal --working-directory=/home/takashi -x /bin/zsh -i", 0
Set objShell = Nothing
Storeを使わなかった場合は適当に展開先のパスに置き換える。VBScriptを使ってるのは余計なコンソールを起動したくないから。

【個人的な設定】
tmuxのデフォルトシェルをzshにする。以下を.tmux.confに追加する。
set -g default-shell /bin/zsh

以下は職場で必要だった設定。

【CA証明書の追加】
職場のネットワーク環境は独自のルートCA証明書をもっていて、そいつをTrustedストアにいれてやる。以下のようにする。
$ mv certificate.crt /usr/local/share/ca-certificates/
$ sudo update-ca-certificates
拡張子が.crtじゃないと認識してくれない。

2012-10-06

中置記法

CourseraのScalaコースでScalaで中置記法が書けるということを知った。
こんな感じ
class Foo(x: Int) {
  val v = x
  def +(y: Foo) = new Foo(v + y.v)
  def less(y: Foo) = v < y.v
}

new Foo(1) + new Foo(2)
C++の演算子のオーバーロードに似ているけど、イメージとしては単に関数定義。Scalaは割りと自由にシンボルが定義できる。Schemer好みともいえる。のだが、多分演算子だけを特別視したくなかったんだろうなぁと思うのが、以下の記法。
new Foo(1) less new Foo(2)
SRFI-105でも感じた「うわぁ・・・」感漂う何か。何故かはいまいち分からないけど、どうも読みにくいと感じる。僕の主観だと思うんだけど、これが読みにくいと思うのはあまりにも自然言語に近いからだと思う。僕はあまり国語が得意ではなかったところに起因があるのかもしれないが・・・

それに加えて、中置き記法は評価の優先順位が問題になってくる。まぁ、常識人なら()で囲って優先順位を明確にするだろうけど、なんでそんなことを人間が考えなくてはいけないんだろう?と思ってしまう程度にはLisp脳になっているのかもしれない。(いや、単にものぐさなだけだろう)

コンパイルしてしまえばJavaからでも使えるし、REPLもあって開発効率は高そうなイメージなんだけど、じゃあ仕事で使いたいか?といわれると今のところ微妙な感じ。(でも、Scalaでやるよ~って言われたら喜んで飛びつきそうなくらいにはJavaに飽きている・・・)

2012-05-08

セキュリティについての考察

SSL/TLSのおけるセキュリティの考察。

実装がまったく行き詰っていて、息抜きにふと思いついたことをつらつら書いているとも言う。

以下に記載した内容に基づいて盗聴、改竄を行ったとしても当方は一切責任を取らない。また、この記事はそのような犯罪行為を推奨するものでもない。(お約束の免責事項)

ふと、ひょっとしたらハッキング(世間一般的に通じる言い方、本当はクラッキングと言う。一応)できるんじゃね?と思ったのでその手順。もちろん試してないし、僕にそのようなことが出来る技術はない。ただ仕様書を読んでいて出来そうだと思っただけ。

【用意するもの】
  • 偽のサーバー証明書
  • なりすまし用のルータ
  • SSL/TLSのパケットを作れる技術
【手順】
  1. クライアントが送ってきたCLIENT-HELLOのcipher suitesからDHなsuitesを取り除いてサーバーに送る。このときクライアントの乱数を記録しておく。
  2. サーバーが送ってくる情報のうち、決定したcipher suite、サーバーの乱数、サーバー証明書を抜き取る。また、サーバー証明を用意した偽の証明書と置き換えてクライアントに送る。
  3. クライアントがpre master secretを暗号化したものを送ってくるので、偽の証明書の秘密鍵で複合。master secretを作成する。また、送られてきたpre master secretを本物の証明書で暗号化してサーバーに送る。
  4. 以下、暗号化されたメッセージは手元のマスター鍵で複合したり、MACを合成したりしてなりすます。
【簡単な解説】
  1. Deffie-Hellmanを使われると現在のところ現実的な時間で鍵を手に入れることができないので、クライアントがサポートしているcipherから抜き取る必要がある。
  2. この時点でサーバーの証明書を抜き取ってしまえば、クライアントは成りすまし証明書を検出する方法はない。
  3. クライアントに対してはサーバーの振り、クライアントに対してはサーバーの振りをする。しないと不整合が起きるので。
3番が重要で、まともなクライアントなら偽の証明書にはルートCAがないということで警告を出すはず。でもユーザが構わずOKしたら、う~ん怖い。
もちろん、この程度のことはきっと議論され尽くしているはずなので基本的には問題にならないと思う。っが、RFCだけ見た感じだとそんなこと考えられてなかったので、どうなんだろう?

2012-05-03

SSL/TLSを実装したいの1

2があるかは知らない・・・ついでに、OpenSSL使えよという囁きが頭の中で木霊しているけど無視。

TLS1.1と1.2をSchemeで実装してhttpsとか使えるようにしたい、という願望の元とりあえず資料集めをしてみた。
基本はRFCを読めば全部書いてあるんだけど、分量が多いのと送信データが分かり辛い。2つ目のリンクは最初のネゴシエーションで使うデータが詳しく書いてあって参考になる。解説自体はSSL3.0のものだが、TLSでも基本的な部分は変わらない。違いはRFCを見て吸収。

CLIENT-HELLOを送ってSERVER-HELLOを受け取る事まではできた(データ送ればサーバが送り返してくるから当たり前だが)。っで、気づいたこと。
  • 生のバイトベクターをゴリゴリやるより、クラス作って抽象化した方が楽。
    • ASN.1(というかDER)と同じ方式。
    • パフォーマンスとコード量が気になるが、まぁいいか。
  • サーバーから返ってくるデータをどう処理しよう。
  • TLS1.2(SSL version 3.3)としてハローって言ったのに、TLS1.1でハローって返される。
    • 違いってCipherSuiteだけ?
まだ、最初のハンドシェイクさえクリアしてないからなぁ。先は長そうだ・・・

2011-10-05

Cygwinのヒープ

今更ながらだが、Cygwinのヒープは拡張できることが分かった。
参照:Changing Cygwin's Maximum Memory

何故これが必要だったかというと、SagittariusのビルドをX60で行った際に頻繁にWin32 487エラーが発生していたため。
おそらく原因はここにあるものだろう。LogicoolのWebcamのドライバー入ってるし。
とりあえず、512MBまで増やしてビルド再開。動いている。

2011-01-15

LinuxをUSBからインストール

をするための準備の話。
ちょっと古めのデスクトップが転がってて、OSが入ってない。Windowsはもちろんない。ということで、Linuxを入れようと思ったのだが、現在使ってるノートPCにはCDROMがない。

っでちょっと調べてみたらUSBからインストールできるらしい。ということでブータブルUSBを作成する。
手順。
  1. syslinuxを落としてくる。
  2. DAEMON Tool Liteを落としてインストール。
  3. Linuxのisoイメージを落とす。
  4. 3.を2.のツールでマウントして、中身をUSBドライブにコピー。
  5. USBドライブにisolinuxってフォルダがあるので、それをsyslinuxに変更。
  6. 5.のフォルダの中にisolinux.cfgというファイルがあるので、syslinux.cfgに変更
  7. syslinux.exeを叩く。(syslinux.zipで落としたなら、中のwin32フォルダにある)
    C:\> syslinux.exe -maf F:
    (F: はUSBドライブ名。これをC:とか自分のHDDにすると多分えらいことになる)
    本当は-maでいいんだと思うけど、僕のUSBはリムーバブルと認識されてなくて、強制書き換えの-fが必要だった。
たった(結構あるな)これだけ。

他にも、UNetbootinってツールも試したけど、こいつにはひどい目に合わされた。バージョンが悪いのか(最新版だけど)、そもそもCDイメージをUSBにコピーするだけのツールなのか知らないけど、ブータブルなUSBならない。

これで上手くいったらSSDを買って自分のノートにLinuxを入れよう。
(その前に死んだバッテリーを換えないと。ACアダプタ抜いたら即死ぬノートPCってノートの魅力0なんですけど)

2010-02-02

Linux: UbuntuをVirtualBoxで試してみた

会社のPCでだが・・・

とりあえず、デフォルトでインストール。
ものすごく簡単だった。ネットで調べる必要がないくらいに。
デフォルトのWMがGnomeなので、KDEに変更。
初めて触ったWMがKDEなのでKDE好き(^^;

使用感。
Linuxのディストリビューションなんて、Fedora、Redhat(ほぼFedoraと一緒)、Debianくらいしか構ったことないし、
デスクトップLinuxで本格的に使ってたのはDebianだけなのであまり比較はできないが、
個人的には気に入った。
外側がKDEな上にUbuntu自体がDebianを元に作られてるのである意味当たり前か。
いろいろやるのにsudoしなきゃならないところとか、GUI上だとMaxかよって突っ込みを入れたくなる頻度でパスワード求められるけど。

ちなみに、
DebianをVirtualBox上で試そうと思ったんだけど、インストールが上手くいかなかった・・・
これ実機でもこの調子だとしたら、やっぱりきついよなぁ・・・

次にPC買ったらUbuntuかな。
(OSなしのPCが安く売ってればだけど・・・でもWindows7とかに特に魅力を感じないんだよね・・・)

2009-05-16

RAM Disk

パソコンのメモリーを2Gに増設した。特に不自由を感じてはいなかったのだが、いろいろなことのついでというやつである。

っで、単純に増やしただけだとどうせ体感はないのでということでいろいろやってみた。まず、今まで最大でもメモリ使用量は物理+仮想でも1Gだったので、まぁページファイルはいらんだろうと消してみた。体感はそこそこといったところか?Firefoxとかちょっと速くなったイメージ。
次に、RAM Diskなるものを試してみることにした。ページファイルが本当にいらないかどうか確認していたときに偶然見つけたものだが・・・
RAM Diskって何?と最初に思ったのだが要するにRAM(メモリーのこと)上にある領域をハードディスクのように扱う技術みたい。有名な話で32bitのCPUにはメモリー4Gの壁があって、それ以上は認識してくれないのだが、この技術を使えばOSが認識する4Gのメモリー以外のあまりメモリーが超高速で動く実ディスクのようになるので、メモリーの有効活用ができる、というもの。なのだが、折角増設したし、どうせ1G以上メモリー使うことなんて無いだろうので、1GをOS用、残りをRAM Diskにしてみた。

やり方とかは適当にGoogle先生に聞いてもらえばいいと思う。興味があればだが。

っで、結果だが。とりあえず、使えそうなのはインターネット関連のキャッシュとか、プリントスプーラーのキャッシュなどの一時ファイルくらいかな。いろいろ頑張れば(バックアップようのバッチを組み込むとか)プロファイルとかでも置けそうだけど容量は所詮1Gだし、まぁ一時領域が無難かと。
(理由を説明する必要は無いと思うけど、いわゆる主記憶と呼ばれるメモリーは高速で揮発性のものなので、電源落とすとデータが壊れるんです。なので長期保存用のデータとかは置けないの)
でも、ネットのキャッシュをオンメモリーにしたら格段に速くなった。ちょっと増設した甲斐があったかな。

2008-05-08

WindowsXP SP3

WindowsXP SP3を入れた。
まぁ、別段入れる必要もなかったような気はするが、
一応サポートを2014年まで受けたかったので。

IE7問題が出ていたが、
そもそも、IE7を入れていないので問題なし。
入れてみた感想だが、
別段変わった様子なし。
あまりに情報が少なかったので、
少々以上に怖かったのだが。
ま、少し様子見かなぁ。
いざとなれば抜くだけだし・・・

2008-03-12

fstabの書き方

linuxで外付け(ではないんだけど)のディスクを自動マウントする際に、
/etc/fstabにHDD情報を記載する必要があるらしい。
ということで、google先生にお伺いを立てて、書式を聞いてみた。
こんな感じみたい。
(そもそも、bootディスクが書かれていたので、書式は既にあったけど)
-------------------------
#デバイス名 マウントポイント ファイルシステム オプション
/dev/hdb1 /mnt/windows ntfs rw,user,gid=user,umask=000 0 0
-------------------------
なんでntfsかといえば、もともとはwindowsマシンだったからなのだが…
オプションの後ろにあるのは、ダンプとかパス(パスワードかな)と書いてあった。
ま、特に設定する必要はないので、null値をいれておく。
オプションにrwはいるのかな?要らない気がするが、まぁいいか。

2008-03-06

へたこいた(T_T)

インストールしたDebianにThunderbird入れて、
そこまではよかったのだが、
間違えて設定する前にメールを落としてしまったせいで、
サーバーに残していたメールを全部消してしまった(T_T)

いつもならこんなミスしないのに、
はぁ、ちょっとはしゃいでいたらしい。
かなり凹んだよ。

Debianインストール完了

SATAのHDDが届いたので早速Debianをインストール。
FreeBSDに比べるとかなりインストールが簡単。
が、パーティションの設定がなんか自由度が低い感じ。
ま、そんなに神経質になることもないだろうから、
デフォルトの設定を採用。
ま4つくらいに分かれてれば大丈夫だろう。
最悪OSがトンでもなんとかなるだろうし。

さて、後はFirefox、Thunderbird、
その他ユーティリティのインストールか。
調べながらやるかね。

2008-03-01

OSが死んだ

メインで使ってるデスクトップのOSが死んでしまった。
多分ファイルシステムが壊れたのだと思うのだが、
HDD自体が死んでいたらOS入れなおしても意味がないよなぁ・・・
いろいろデータが入っていたのだが、
いきなり見れなくなってしまった・・・
不幸中の幸いは、OS領域とデータ領域でHDDが違うことか。
少なくとも、OS入れればデータは救い出せるし・・・

これを機に、脱Windowsでもしようかな・・・
でも、メッセンジャーないんだよな、Linux・・・
だれかLinux上で動くメッセンジャー知りませんか?
Windows Live Messenger完全互換のがいいなぁ。

2007-10-06

生きてた

HDD生きてたよぉ(つД`)
死んでるのはPCのUSBの口だった。
お帰り、俺のデータたち。

2007-09-29

ぐわぁぁぁ

USB-HDDが死んだぁぁぁ
俺の編曲データがぁぁぁ
昔作ったプログラムやらがぁぁぁ
その他いっぱいいろんなものがぁぁぁ

(つД`)

2007-02-17

液晶買った

長らく眠っていた譲りもののPCをフルで活用するために液晶を買った。
予算を2万程度で考えていたのだが、意外と高かった。
19インチだとこれくらいするのだろうか?
前に地元で見たときは、19インチが2万弱で売っていたのに・・・(つД`)
さすがに地元まで買いに行く気にはならず、まぁいいかと買ってしまった。
やっぱりでかい画面はいいね。
ただ、キーボードはノートPCの方が打ちやすいと思ってしまうので、
このあたりが問題だが・・・

2006-12-26

情けないなぁ

勉強不足を痛感させられた。
会社でLinuxサーバのFTPを設定していたんだけど、
どうにも仮想ルートの設定が上手くいかない。
ftpaccessを設定して、グループの設定もしたんだけど、
まったく動く気配なし。
(FTP自体は動いてるけど)
おかしいなぁ、と思ってmanコマンドでftpdをみたら、
どうもwu-ftpdでもproftpdでもvsftpdでもないんじゃないかということが分かった。
いや、分かったならいいじゃんというのはあるんだけど、
これに気づくのに1時間半以上かかってしまった。
ってか、もともと入ってるftpdでは仮想ルートができないのだろうか?
(これが分からない時点で情けないのだが・・・)
2時間悩んでわからなかったので、
vsftpdでも入れようかと思ったら、
ソースが落とせん。
じゃあ、とwu-ftpでもと思ったら、これも落とせん。
むかついたので、ほっぽって帰ってしまった。

まぁ、でも一番むかつくのは、
これって俺の仕事じゃないんだけど!!
分からない=俺に押し付けるってやめてよ!!
自分で調べるとかしろっての!!

勉強不足は痛感したので、お家でFreeBSDをもう少し構わないとなぁ・・・

とりとめのない文章になってしまった。

2006-12-23

autoconf

今個人的に開発してるもののソースが多くなってきて、
そろそろMakefileを書くのが大変になってきた。
そこで、自動でMakefileを生成してくれるautotoolを使用しようとしたのだが、
cygwinにautotoolが入ってなかった。
しょうがないので、cygwinにautotoolを入れたら、
なぜかprofileの形式が違ったらしく(ずいぶん古いからなぁ、4年もっと前か?)
cygwinの入れなおしをしてしまった。

何はともあれautotoolが動くようになったので、
早速、Makefile.amとconfigure.inを書いて動かしてみることにする。
いや、忘れてるな、記述方法を。
とりあえず、ネットを調べつつ、昔拾ってきたプロジェクトのMakefile.amを参考にしつつ書いてみる。
ああ、AM_INIT_AUTOMAKE忘れてるって怒られたよ。

何はともあれ、これで少しはプロジェクト管理が楽になると思われる。
・・・多分。
Makefileをしこしこ書くよりは遥かにいいはず。

ちなみに、この辺が参考になる。
http://hp.vector.co.jp/authors/VA022047/linux/autoconf.html
こことか(CppUnitについてがメインだけど)
http://www.ogis-ri.co.jp/otc/hiroba/technical/CppUnit/index.html