忍者ブログ
雇われるだけの人生から目指せ独立、社会人2年目なゲーム脳SEのブログ。更新頻度=週2~3回。
[1]  [2]  [3]  [4]  [5]  [6]  [7]  [8]  [9]  [10]  [11
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

http通信ではプロキシの後ろからsubversionにアクセスできないという致命的問題がわかりましたので、https通信機能を自宅のサーバに追加いたしました。

Firefox3ではオレオレ証明書を使おうとすると
「Firefox3のオレオレ警告」@水無月ばけらのえび日記
こんなに厳しいご指摘が飛んでくるようになりまして、
スラッシュドット・ジャパン | オレオレ証明書の警告に「セキュリティ上の問題はございません」と解説する銀行が登場
やる気のないシステムを作った地方銀行もこれからオレオレ証明書サーバを作ろうとする私も非常に肩身が狭いのですが・・・まぁ個人用途ですから大目に見ていただきたいです。


ではさっそくやってみましょう。
HOWTO - Apache2 + Subversion + SSL - Ubuntu Forums
Ubuntuのフォーラムに名前からしてそのまんまの記事がありました。中身も非常にわかりやすいですし、これをそのままなぞらえていけば楽勝だろう・・・と考えていた時期が私にもありました。
sudo apache2-ssl-certificate
bash: そんなコマンドないよ♪

sudo apache2-ssl-certificate
bash: だからそのコマンドねーよwwwww
なん・・・だと・・・?
なんということでしょう。apache2-ssl-certificateがないのです。いつぞやのxorgconfが思い出されます(結局あれはdisplayconfig-gtkコマンドと言う別のコマンドがあるということで解決したのですが)。

しらべてみたら
apache2-ssl-certificate: command not found - Ubuntu Forums
Bug #77675 in apache2 (Ubuntu): “[regression] apache2-ssl-certificate has gone missing since feisty” 結構前からUbuntuのパッケージにapache2-ssl-certificateがないみたいです。こまりました。
でもよく見たら、フォーラムにこんな投稿がありました。
#setup

1. sudo apt-get install apache2
2. sudo apt-get install openssl
3. sudo apt-get install ssl-cert

#create ssl certificate:
sudo make-ssl-cert
/usr/share/ssl-cert/ssleay.cnf /etc/ssl/private/localhost.pem

#switch to apache sites configuration:
cd /etc/apache2/sites-available/

#これはバックアップを取るだけなのでどうでもいい
#bakup the default configuration:
sudo cp default default.backup.date

#これもポート設定だけなのでどうでもいい
#be sure to listen the port 80 for the default:
sudo sed -i '1,2s/\*/*:80/' default

#create the ssl configuration:
sudo cp default ssl

#ここから先は別の記事を参考にすればよいので省略

make-ssl-certコマンドで代用が効くらしいので、これでなんとかなりそうです!
試してみた結果、VirtualHostの設定を間違えてSSLヘッダーエラーが出た以外にさしたる問題も無く、一発でうまくいきました!

あとはVirtualBoxとルータのNAT設定をすれば完了です。
WS000155.JPG
ばっちりです!やったね!
PR
まだ私は社会人2年目の若造プログラマなのですが、もろもろの事情により今年入社の08新卒の方々のメンターとして指導する側に回ることになりました。
せっかく教える側に回るのですから、教えられる方々には是非イケてる人になってもらいたいです。
というわけで、新卒の皆様の参考になればと、以前にも書いたようなネタですけど、改めてイケてるプログラマのソースとイケてないプログラマのソースを見比べて、何がその差なのかを調べてみました。

まずは例をいくつか挙げてみます。


○イケてない英語、フランス語
たとえば今の現場ではこんな感じの例があります。

gross
(総計、総合金額)
gloss
(光沢、つや、うわべの飾り)
enquete(アンケート、フランス語) enquate
(何語?)

ほかにも沢山沢山ありますが、省略。

○イケてないコードスタイル
たとえば、インデントがタブとスペース混合。行末に意味のないタブやスペース。
タブを^、スペースを_で表現すると、
^^^^____^^^^____hoge.fugafuga();^^^^^^^^
________________foo.bar(hoge);^^^^
平気でこんなソースが。そこらじゅうに。

○イケてないSQL
0以上5以下の小数(小数点以下2桁まで)の、小数部を取り出すためのロジックが、
TO_NUMBER(SUBSTR(LTRIM(TO_CHAR(var_num, '0.09')), 3, 2)) 
これです。・・・うーん、書いてる本人は必死に作ったものなんでしょうけれども、
これはイケてないですね。


こういうことを書くと、
  • 変数名ぐらいで何ムキになってんの?
  • 動けばいいんじゃね?modとか知らないし意味わかんないし!
という反論が、たいてい、飛んできます。

常々私は周りの人に
「変数名は自分の子供の名前だと思ってつけるものだ!!」
とエラソーに語っています。
自分の息子に太郎やら花子やら、「騎士と書いてナイトちゃん」と読ませるようなセンスのない名前をつける親になりたいですか?なりたくないですよね。
自分の息子に「大輔」と言う名前をつけようとして、手が滑って「犬補」と出生届に書いてしまったら、出生届ごと破り捨てて書き直しますよね?まさか、「アハハハ!いぬほだってよ!これでいくか!!」なんてバカなこと言いませんよね?
なぜなら子供に一度つけた名前は一生消えないからです。一生名づけの親はその名前を見て笑われることになるからです。

変数やクラス名、ロジックだって同じです。

自分が一度書いたソースは(特に大きなプロジェクトでは)5年10年の間、平気で残ります。
「後から誰かが直してくれる」なんてことは、Googleのような一部大例外を除いて、絶対にありません。これは保障します。
5年後に保守に入った人に「何このセンスのないソース・・・読みづらいし意味わかんないし、こんなの保守したくないなぁ・・・」と思われることこそ、プログラマにとって何物にも変えがたい屈辱であります。

にもかかわらずその5年後のことを考えない輩が異常なほど多い。

grossとかenqueteとか、わからないならGoogle先生に聞くなり辞書サイトで調べればいいのに、その手間すら怠っているのです。もしくは、調べたけど何か結果が出てきたから、中身を吟味すらせずに妄信したのかもしれません。
商品の金額に関係するクラスなのに、どうしてgloss(光沢、つや)なんて意味をつけているのか、と疑問に思うことが出来れば、発音は同じグロスでもglossではなくて別のつづりの単語ではないかと思い直すことが出来たに違いありません。

0以上5以下の小数(小数点以下2桁まで)の、小数部を取り出すためのロジック、
これだって、一度書いてみて明らかに変だと思ったなら、

Googleに"Oracle 関数"と検索クエリを投げて(30秒)、

http://www.shift-the-oracle.com/sql/functions/function-base-reference-1.html
このページを見つけ出し(1分)、

関数の内容を吟味して使えそうなものを割り出し(5分)、
http://www.shift-the-oracle.com/sql/functions/mod-remainder.html

手元のSQL実行環境でテストすれば(2分)、
SELECT mod(2.03, 1)*100 FROM DUAL
たったの8分かそこらで、よりよい解決策が見つかるのです。
ページを探すのに時間がかかっても、10分もあれば解決できるのに、
「まぁ、動くからいっか!次次!」
なんて思考停止して次に行くから、こうして数年後に私のような若輩者にコケにされるようなソースになってしまうのです。


と言うわけで結論。
イケてるプログラマと、イケてないプログラマの差は、
  • イケてないコードに気づくことが出来るか
  • イケてないコードを無視しない勇気があるか
  • イケてないコードを修正するために10分考える習慣があるか
この3点ではないかと思います。ではどうすればこの差を埋められるのか?
  • イケてないコードに気づくためには、イケてないコードだと認識できるだけの知識が必要!→勉強するぞ!
  • イケてないコードを無視しないためには、自分の首をかけて「これは間違っている!」と言うだけの熱意と説得力が必要!
  • イケてないコードを見つけたら、どうすれば修正できるのか頭の中だけではなくて実際に調べ検索し試し動かして検証する!
こんな感じで、少しでもイケてるプログラマに近づければ幸いです。
最近は自分へのインプットばかりで、皆さんへのアウトプットを怠り気味だったので、
ここらで一気に貯まった小ネタを放出したいと思います。



https://www.google.com/calendar/embed?src=fvijvohm91uifvd9hratehf65k@group.calendar.google.com
Googleカレンダーを利用したIT関連勉強会一覧カレンダーだそうです。
カバー率がものすごいです。東京はもちろん、大阪や札幌などの勉強会もカバーされています。

http://mycroft.mozdev.org/download.html?name=http%3A%2F%2Feow.alc.co.jp%2F&sherlock=yes&opensearch=yes&submitform=Search
私がもっぱら愛用している英語辞書サイト「スペースアルク」の検索がブラウザ内蔵の検索バーで出来るようになるプラグインです。Firefox2以上とIE7で動きます。SafariやOpera、Sleipnirでもおそらく動作します。
おかげさまで素早く英単語検索が出来て大変重宝しております。

UMLのステートチャート図(ステートマシン図)が、画面遷移図を表現するのに非常に便利と言うことがわかり大変重宝しております。



こんなところでしょうか。思ったより数がありませんでした。
Pythonの細かいプログラミングテク(スーパクラスの呼び出しとかクラスメソッドとインスタンスメソッドの違いとかクラスフィールドとインスタンスフィールドの違いとかsys.pathの使い方とか)については沢山身についてきたのですが、どうアウトプットして良いのか分からず・・・
アウトプットできないということはまだまだ完全に身についていないということなんでしょうねー。

現在家でやっている個人プロジェクトのソースコードを、バージョン管理システムで管理したいと思い立ちSourceForgeのプロジェクトとして立ち上げるとか、Google Codeのプロジェクトとして立ち上げるとかいろいろ考えました。
ですが、SourceForgeのプロジェクトにするとオープンソース化が義務付けられてしまいます。Google Codeも同様?な具合ですし。将来的にオープンにするとしても、今はまだクローズにしておきたいのです。それに、プロジェクトが認められるまで時間もかかります。
というわけで、せっかくの機会ですから、自分でサーバを立てて管理してみることにしました。

バージョン管理システムとして選んだのは、巷で有名の・・・やたら狭い巷ですが・・・とにかく、有名な「Trac」です。すでに何人もの先人の方が自宅で構築されてBlog記事を残してくださっているので、難易度も低そうです。腕ならしということで挑戦してみることにしました。

参考にしたリンクはこちら。
TracInstall – The Trac Project – Trac
Tracをインストールした - 偏った言語信者の垂れ流し 
CentOS5 で Subversion+Trac | cafe chantant blog


○まずはapache2を起動してみる
/etc/apache2/の中身と大格闘です。
自宅サーバの道しるべ【ポート設定(ファイアウォール)】
こんなページもあったのですが、そもそも書いてあることと実際のファイル配置などなどがまるで違うのであんまり役に立ちませんでした。httpd.confとapache2.confという二つのファイルがあったのですが、httpd.confの中身は何故かカラッポで、apache2.confにhttpd.confの中身がすべて書かれていました。どうしてこうなっているのかはわかりません。

設定内容はapache2とsubversionを連携するためにWebDAVパッケージをインストールして、Basic認証をかけたぐらいです。

Ubuntuを使用したので、パッケージのインストールのためにいちいちapt-getコマンドを使う必要もなく、付属のパッケージ管理GUIツールで一発です。DAVで検索すると、うまい具合にsubversion+WebDAV用のパッケージがあったので、そちらを選択してインストール。

それから、デフォルトではapache2はwww-dataというユーザとグループで起動するようになっているのですが、何となく名前が気に入らないという適当な理由から、webというユーザを新たにつくり、webユーザで起動するように変更しました。


○subversionをインストールしてみる
Subversionのインストールと設定(Apache編)
パッケージは例によってGUIからインストール。
リポジトリは/usr/local/svn/repositoryに作成してみましたが、これが後から考えると大失敗でした。
/usr/local/以下の中身はroot権限がないと操作できません。
必然的にディレクトリを作るのもsvnadmin createするのもsudoを使います。
その結果、リポジトリのオーナーがrootになってしまって、apache2からアクセスできないという問題が・・・結局、リポジトリをchown web:webとして解決しましたが、実にスマートではありません。/home/web/svn/repository/というふうに配置するべきでした。

Linux系OSの難しいところって、インストール先を選択する自由度が高いところと、アプリケーションのリソースに対するユーザ権限管理ですねー。としみじみ思い知らされました。

ちなみに設定はhttpd.confの末尾に書けとかmod-webdav.confの末尾に書けとかいろいろ指示があったのですが、/etc/apache2/conf.d/というスニペットコードを置くディレクトリが最初から定義されていたので、そちらにsvn.confファイルを作成してそこで制御することにしました。こっちのほうがアプリケーションごとに設定がまとめられて楽かなーと。


○最後にTrac
最後にTracです。
先ほどのSubversionの失敗を生かすために、/home/web/trac/以下にインストールしてみました。
Tracをインストールした - 偏った言語信者の垂れ流し
まったく内容を理解せずにこちらの方が紹介されている方法をそのままコピーでどんどんインストール。
ただし、Apache2の設定内容だけはコピーできなかった(そのままコピーすると、/svn/repository以下に公開しているリポジトリへのアクセスもtracのWSGAApplicationが拾ってしまうので、リポジトリが見れない)ので、/etc/apache2/conf.d/trac.confファイルを作成し、以下のように設定しました。
WSGIScriptAlias /trac /home/web/trac/trac.wsgi
<location login="" trac="">
#Basic認証の設定
AuthType Basic
AuthName "Trac login password"
AuthUserFile /いえないよ/.いえないよ.passwordfile
Require valid-user
</location>
こうすると、/trac以下がtracに、/svn/repository以下がWebDAVに制御されるので、きちんと両方にアクセスできます。それから、basic認証をLocation /trac/loginに対してかけてみました。
trac-admin permission add akisute TRAC_ADMIN
このコマンド入力によって、私は管理者権限を得る!
あとはユーザ権限の編集や、チケットシステムの設定は、tracトップページのAdminボタンからできるので非常に簡単です。いちいちtrac-adminで全部ユーザ権限を制御したりというのは面倒ですからね。


○VirtualBoxの設定
Ubuntuが仮想マシン上で動いているので、VirtualBoxのネットワーク接続設定を行わないと、いくらルータがポートを開いていてもポート80番にアクセスできません。
404 shin1のつぶやき ないわー NotFound: VirtualBox上のUbuntuの設定(Network)
#181 (Inability to ping from guest) - VirtualBox 
VirtualBoxのホスト<>ゲスト間接続にはNATとホストのネットワーク機器としてブリッジを用いて接続する方法の種類がありますが、面倒じゃないNATを選択しました。NATを使うとPingが通らない(ICMPというプロトコルが使えない)らしいのですが、特に困っていないのでこのままNATで続行です。

設定内容は、ホストの80番をゲストの80番にポートマッピング。これだけです。


○接続チェック
サーバー監視【無料】 
ホームページテスト【外部からの表示確認】
こんなすばらしいサービスがありましたので、さっそく外部から接続できているか試してみます。

WS000154.JPG

できました!!


○ひとまずこれで完成ですが
会社からはプロキシをはさんでいるので、Subversionのリポジトリの取得は出来るのですがコミットが出来ません。
ただのにっき(2005-08-02)
どうやらプロキシが知らないHTTPメソッドを使用するから(HTTP REPORTとか)みたいです。
セキュリティ上の問題もあるので、Subversionに対してHTTPS通信を使えるようにしてみるつもりです。
#3 - Subversion w/ DAV over HTTPS on woody , SSH越しにルータの設定 , RSS関係で細かいところ
日々の試行と実験: subversionやwebdavでSSLを有効にする
HOWTO - Apache2 + Subversion + SSL - Ubuntu Forums


○それでは
気合入れてソース書くぞー!!
手短な更新になってしまいますが・・・
このたび、自分のプロジェクトを管理するために、Ubuntu(Virtual Machine) + apache2 + SVN + Tracという構成で、自宅にサーバを設置してみました。
はじめは仮想マシン上に無線LAN接続で無理矢理つなげたサーバだったので不安定きわまりなかったのですが、LANケーブルを引いたり設定をいじったりと大騒動した結果、土日二日まるまる使って、ようやく安定してきました。
クローズドな鯖なのでURL等の公開はできませんけど・・・

後日、サーバを立てる際に苦労した点などを共有いたしたいと思います。

どうでもいいんですが、そろそろ忍者ブログのブログエディタ、Firefox3に対応してくださいませんかね?
http://www.fckeditor.net/
ここのfckeditorという奴を使っているみたいなのですが、最新のビルドのデモを試してみた結果、バグもなく快適に使えました。外部のエディタなんだからライブラリ差し替えるだけでいいのに、どうしていつまでも対応してくださらないんでしょう?
正式版が17日に出ますので、それが出てもまだ直っていなかったらさすがに文句を言おうと思います。
仕事休んでGoogle Developper Day 2008に参加してきました!

○技術的にためになったこと
なんといってもAppEngine。現在オフラインでの処理(バッチ処理)機能搭載を予定してらっしゃるそうで、非常に楽しみです。
それ以外では、Androidが非常に面白そうでした。Google I/Oで公開されたというデモを実際に見ることが出来たのですが、タッチスクリーン&電子ジャイロ、まるでiPhoneみたいな印象です。その上アプリケーションはiPhoneと違って完全にJava(正しくはSunのJavaと互換がないのでJavaと呼んでいいのか怪しいのですが)自由に作って自由に公開することが出来ます。
AndroidのVMについての講演が非常に印象的でした。メモリ消費量を限界まで削るために、JarをハックしてDex形式というより高効率のファイル形式を独自に開発したり(そのおかげで、同じJavaでもiアプリ等と違って何プロセスも多重起動できるのです)、CPU使用効率を上げるためにアセンブリ言語でハックしたり・・・涙ぐましいとともに執念を感じます・・・
それ以外のAPIについても面白いものが目白押しでした!

○その他ためになったこと
講演者がアメリカ人だのオーストラリア人だのばっかりなので、英語リスニングの良い勉強になりました。勉強になるどころか半分程度しか聞き取れませんでしたが。TOEIC810点(笑)
Google社員の方とも交流する機会がありまして、たくさんGoogle名刺があつまりました。Googleの皆さんの印象としては、「能ある鷹は爪を隠す」という感じでしょうか。さも普通のことのように高レベルな会話をするから恐ろしい。
それから外人さんとも話す機会が!TOEIC810点(笑)の実力を見せてくれよう!!・・・と思ったんですが、それはそれはもうグダグダでした。ああ恥ずかしい。テストの点数なんて何の役にも立たないという好例です。
GWTについての講演を行ってらっしゃった外人さんと話していたのですが、「私はJavaがPretty Goodです」なんて言ってみたら、「JavaなんてC++なんかに比べたら超簡単なんだからPretty Goodじゃだめだよ、Bestにならなきゃね」と言われたのが印象的でした。ううむ、確かに。負けてられないな!
それからGoogle Maps関連の外人さん(密かに私はピザさんと心の中で呼んでいましたが)ともお話しさせていただきました。Google SketchUpやらブラウザ上で動くEarth 3Dについていろいろと。
とにかく楽しかった。普段やらないことをやるのは楽しい!もっともっと会話して英語でしゃべれるようになりたいものです。

○感想
楽しかったけど疲れたー!
難易度高いセッションと難易度低いセッションの差が結構すごかったです。一番難しいセッションだったのがAndroid系で、逆にAppEngineは簡単な印象。
近頃はよくほか弁ことほっかほっか亭の分裂が話題になったりしますが、
私にとって弁当屋といえばオリジン弁当です。
今日は昼頃からどうしようもないぐらいひどい腹痛に悩まされて2時間ぐらい全く仕事が出来なかったので、一体全体どうしてこんなに今日はひどい日なんだろうと思いながら家に帰ってきたら、

「iPhone」について | ソフトバンクモバイル株式会社

なるほどね、虫の知らせだったわけですね。
なんにせよ、ついにソフトバンクがやってくれました。これで何の悔いもなくDocomoからおさらばできます。
ソフトバンクはサービスがひどいとよく言いますが、そういう人に限ってDocomoを一筋10年使っているんだとか、ソフトバンクなんて使ったこともないけどひどそうだから嫌だというチャレンジングじゃない人が多いです。
日本で最初にiPhoneを売るというチャレンジングな目標を達成したソフトバンクの心意気を買う意味でも、私は喜んでソフトバンクに乗り換えてお金を払おうと思ってます。

独占契約ではないので、Docomoがまだチャンスをうかがっているとか言う話も聞きます。昔の私なら素直に喜んでいたのですが、今ではとても喜べません。むしろ、他社の猿マネかと悲しくなります。よほどSoftBankからでるiPhoneの仕様がひどい(GMailやGoogle MapsなどのGoogleのサービスではなく、Yahooのサービスを強制的に使わされるとか)ものでなければ、SoftBankに乗り換えます。それでさんざん嫌な目に遭ったならDocomoに頭下げて戻ってくればいいわけで。ちょっと情けないですけど。

これで3G iPhoneが9日のWWDCで3発表されるのが決定的となったわけですが、今一番の懸念事項が、ジョブズが今回の「リーク」にキレて発表を取り下げたりしないかと心配です・・・w

衝動的にCVSのサーバーが欲しくなったので、このあいだUbuntuを入れたノートマシンをサーバーにしてCVSを立ち上げることにしました。

24時間起動しっぱなしのサーバーにするためには、まずはセキュリティ対策からですよね。

友人の皆様方にサーバーを立てるにあたってのセキュリティ対策についてお伺いをたてると、まずは何はなくともポートを閉じろとのお達しを受けましたので、危険そうなポートを閉じることにしました。
IWindowsで使うポートとセキュリティの落とし穴 
サーバは仮想OS上のUbuntuですがホストOSがWindowsなので、Windowsの危険ポートからまず排除しなくてはなりません。
137-139と445が危険らしいので、真っ先に閉じます。と思ったらルーターの初期設定できちんと閉じられていました。NEC、なかなかやりますね。って、これぐらい基本か。それから135も危険らしいのですが、このポートを閉じてしまうとWindowsはなにも出来なくなる(フォルダの共有もできなくなる?)と友人から指摘されたので、135は閉じないことにしました。その代わり、リモートからのログインを遮断しました。

それから友人Tさん曰く、SMTPとTFTPのポートも危ないらしいので、この二つも閉じておくことにしました。どうせ私はWebメールしか使わないので、SMTPなど不要です。
TCP/UDPポート番号一覧 
SMTPは25、TFTPは69ですね。これもルーターで遮断です。

ポートを閉じましたから、いよいよ次はUbuntuでサーバを起動しましょう。
と思ったら、Linux付属のファイアウォールの設定もした方がいいみたいです。
自宅サーバの道しるべ【ポート設定(ファイアウォール)】 
ここで紹介されているOSはFedoraですけど、たぶんUbuntuにも似たような設定があるに違いありません。
今日はここまでにして後日試してみることにします。

紹介記事をいくつか流し読みしてみた感じでは・・・

やっぱりjQueryでしょうか!

理由は記法がシンプルだからです。
$だの$$だの$Aだの$Hだのprototype.js拡張クラスだのなんだの・・・これじゃあまるで別の言語じゃないですか。それよりも覚えることが少なそうなjQueryを選んでみることにします。
物足りなければもちろんまた考えます!
カレンダー
02 2024/03 04
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
ブログ内検索
最新コメント
[11/13 DSLR-A850]
[08/29 逆援助交際]
[08/23 クンニ]
[08/22 熟女]
[08/19 痴漢]
はてなブックマーク
プロフィール
HN:
akisute
性別:
男性
職業:
システムエンジニア
趣味:
ゲーム・東方・ニコ動。あと散歩。
バーコード
推奨環境

横幅900px以上、Firefox 3, Safari 3, Opera 9.5, Chrome 0.2以上。IE7ギリギリ対応。IE6未対応。

忍者ブログ [PR]