blog


あくなき追求、深追いこそ永遠の目標

メモ Linux活用編

リリース

Linuxに関するカーネル、コマンド、チューニングなどのメモである

コマンド

  • psのSTATの意味
  • R(Run):タスク処理中(実行中)
    S(Sleep):タスクが待機中(CPUの空き待ち)
    D(Disk Sleep):タスクが待機中(Disk I/Oの空き待ち)
    Z(Zombie):タスク終了待ち

  • プロセス内のマルチスレッドの状況を確認する
  • (例:Javaのスレッド)
    ps -elf -L | grep java
    fukaoi  13177  1 24335  0  105  76   0 - 81609 339346 Nov18  bin/java -D
    fukaoi  13177  1 24336  0  105  76   0 - 81609 322561 Nov18  bin/java -D
    fukaoi  13177  1 24337  0  105  76   0 - 81609 322562 Nov18  bin/java -D
    



    用語集

  • プロセス
  • プロセスとは「プログラムの命令」と「実行時に必要な情報」がひとまとまりになったオブジェクト、もしくはインスタンス、タスクとも呼ぶ
    関連リンク
    プロセス

     
    投稿日:2008/12/07 | カテゴリ:メモ | コメント:(0)

    IT業界 プロジェクトマネージャーに求められるスキルとは

    プロジェクトマネージャー

    プロジェクトマネージャーに必要なスキルとは何が思い浮かぶだろうか?たぶんそれは、業界・業種において求められるスキルは異なってくると思うが、ここではIT業界における、プロジェクトマネージャーに必要なスキルについて述べてみよう

    予算管理能力

  • 会社に利益を出すことは当たり前!
  • ビジネスマンである以上、会社から給料という労働の対価をもらっているはずプログラマー・システムエンジニアであっても「このプロジェクト規模は1億円である、我が社にとってビッグプロジェクトである、なんとしても納期に間に合わせるべく一致団結しよう!」という目標をたてれば、普通の人間であればモチベーションが上がり、その目標に邁進するはずである。一方プロジェクトマネージャーの立場であれば、収支・収益を意識することは当然であり最小の投資で最大限の利益をあげるという意識でプロジェクトを実行すれば、必然的に会社に利益をもたらすことができる。エンジニアリングよりのプロジェクトマネージャーなら、コストを抑えるところから、セールスよりのプロジェクトマネージャーなら、売り上げ規模を上げる所から入ると、時間とともに身につけられるスキルである


    コミュニケーション能力

  • ボトムアップも大事
  • IT業界でなくても、常に言われる能力の一つであり、社会人として生きていく上でのスタンダードな能力の1つである。ここでいうコミュニケーション能力は相手に思いを伝えるだけでなく、相手から意見を吸い上げる能力も指している。自分の意見をゴリ通すことを、コミュニケーション能力が高い人間だと思っている人が居るかもしれないがそうではなく、相手から意見を吸い上げる方が重要視される。プロジェクトマネージャーという最高権限者である人(※プロジェクトマネージャーに任命される人であれば、それなりの業界経験をつんでいるはずなので年齢もそれなりに重ねているであろう)の意見が通りやすいのは至極当然。現場で発生している問題点などが開発メンバより吸い上げる事が不十分であれば、プロジェクトを成功に導く事は難しい。なのでトップダウンで指示を出すフローだけでなく、ボトムアップで自由に意見を言いやすい環境を用意することも、コミュニケーション能力の1つである


    スケジュール管理能力

  • 基本中の基本
  • スケジュールに始まり、スケジュールに終わるというように、プロジェクト遂行上、この能力が欠落しているマネージャがいるとしたら致命的である。要件を満たした成果物を納期どおりに、リリースすることは、プロジェクトとして最低の条件であり、ビジネスであれば、顧客との契約条件であるはず。納期にリリースするためには、工程のプロセス(タスク)が重要であり、いかにそのプロセスをマイルストーンどおりに完了していなければ、納期日にリリースすることが厳しくなる。そもそもこの基本中の基本ができないプロジェクトマネージャーなる人物が存在そもそもしているかというと、以外と存在しているものだ。さすがに納期日は覚えているのだが、各工程プロセスの管理を放置しておいて、いざ納期日に近くなると慌てだし、騒ぎ出す人だ。そもそも自分自身が与えられた役割をこなしていないのに、プロジェクトメンバーに当り散らすのは、言語道断である


    技術力

  • ITリテラシー+テクニカルスキル
  • IT業界に身を置く以上、ITリテラシーはプロジェクトマネージャーにはなくてはならない必要なスキルである。というか無い人は仕事になってないと思う。難しいところではあるが、ITリテラシー+テクニカルスキルをもったプロジェクトマネージャーは鬼に金棒である。会社内外の人々とコミュニケーションを取る可能性があるプロジェクトマネージャーはいきなり、テクニカル質問をされ、その場で回答を求められるケースは意外に多い。要件定義・概要設計時にテクニカルスキルが高ければ、プロジェクトメンバーに適切なテクニカルアドバイスを行う事ができメンバーからの信頼度も高まり、今後のプロジェクト運営がスムーズになる可能性がある。それではテクニカルスキルが弱いプロジェクトマネージャーはどうすべきなのだろうか?プロジェクト内における、テクニカルスキルが高いプログラマー・システムエンジニアを技術責任者として抜擢し、プロジェクト内の右腕的存在として自分のウィークポイントを補ってもらおう。ここで気をつけなければならないのは、他のメンバーと同じように開発メンバとしてではなく、システム全体の設計であったり、タスクに遅れが生じたメンバーの、スーパーサブとして考える事である。プロジェクト内の技術責任者に引き上げても、タスク開発に100%従事していたのでは、広い視線でのシステムのアーキテクチャ全体を見渡すことができなくなってしまう。テクニカルスキルが高ければ、年齢・地位に関係なく任命することで、ある意味公平なジャッジになり、他のメンバーも納得しやすい。なによりも技術責任者に任命した当人も、モチベーションを高めて従事してくれるだろう


    リスク回避能力(リスクヘッジ)

  • その他の能力が高くても
  • この能力がプロジェクト成功に導くために1番必要な影の能力であり、1番習得が難しい。仮定のイメージであるが、他の能力が欠けていてどうしようもないプロジェクトマネージャーが存在したとしよう。唯一リスク回避能力が秀でていた場合(※現実的に他の能力が欠如していて、そもそもプロジェクトマネージャーなるもに任命はされないのだが)、この能力だけで無事プロジェクトをリリースする事をやってのけれると思う。プロジェクトが失敗する要因であるスケジュール遅延、メンバの脱落、仕様ミスなど数を上げるときりがないが、これらの要因を事前にキャッチし、避けながらながら進んでいきリリースまではやってのけそうである。実際にそういうプロジェクトマネージャーを見たことがある。ただ、さすがにその後のシステム運用フェーズに入ると、開発フェーズ以上に、予見不可能な事態が発生しやすいので、この能力だけでは切り抜けていることは不可能と言える。リスク回避能力というものは、生まれもっているセンスのようなもので、血液型でいうならばA型の人が多かったりする。A型の人が多いのは、細かい性格であったり、根っからの心配性な性格がリスク回避能力を高めている。心配だから、各タスクに関しては、色々と深く考える、考えるので、不明・不安要素が早期に発見できる。逆に0型の人は楽観主義的な人が多いので深く熟考せずに物事をすすめがちなので、不明・不安要素が後手後手にまわるケースが多かった(※あくまでも自分の経験上であって、血液型で、その人を差別しているわけではない)。ここまで書いてしまうと、この能力自体、身に着けることは諦めるしかないようだが、楽観主義者であった自分が努力して多少なりにも身に着けた方法とは、成功パターンだけでなく失敗パターンも1セットとして、ミクロではタスクレイヤーから、マクロではスケジュール全体に及ぶまで、時間があれば考えるようにした。仕事帰り電車の中とかで「このタイミングでお客さんから、大幅な仕様追加が要望されたらどうしよう?」、「システムエンジニアである○○君が倒れたらどうなるだろう?」などと。これはA型の人に多い不安な状態に自ら陥るようにする、妄想自虐プレイと呼んでいる。いわゆる、プロジェクトリスクシミュレーションで、こうすることにより不安要素が可視化できリスクの早期発見、解決につなげることができる


    5つの能力を列挙したが、書いている途中に思ったことが、自分を含めこれらの能力を満たしているプロジェクトマネージャーに出会ったことがないという事だ。5つは無理だとしても、3つでも持っている人には中々で会わない。逆に実績・能力もないくせに、プロジェクトマネージャーという肩書きを名乗る人が多いということだろう。業界を含め、外見だけでなく、中身もともなっていかなければ、本当に虚無の世界になってしまうだろう

     
    投稿日:2008/09/10 | カテゴリ:IT | コメント:(0)

    Windows Vistaのリモートデスクトップをマルチセッションに対応させる

    Windows Vista

    Windows Vista Business、Ultimate、Enterpriseにはリモートデスクトップサーバ機能を実装しているので、別のPC(リモートデスクトップクライアント)から遠隔ログインでき、Vista上で作業を行うことができる。でも、マルチセッションにVistaのどのバージョンも対応していないため、直接ログインしている状態で、遠隔よりリモートデスクトップログインを行うとすると、直接ログインしている人はログアウトしないといけない。Vistaはデフォルト状態だと、シングルセッションにしか対応していない。せっかくVista用にハイスペックマシンを購入したのに、同時に1人しか利用できないのは寂しい話だ。そうであれば、自宅のVistaをマルチセッションサーバにし試してみよう!
    (※以下の作業は自己責任で)
    (※対象はService Pack 1 があたっているVista Business、Ultimate、EnterpriseのOS)
    (※そもそもリモートデスクトップは何ぞや?という方はネットで調べてみよう)

    作業前に準備する事

  • バイナリエディタの用意
  • システムファイルのバイナリデータを書き換えるために、バイナリエディタが必要。お勧めは、Stirling。無料で使いやすいので、Vectorよりダウンロードしていただきたい

  • リモートデスクトップのシステムファイルをバックアップ を取る
  • C:\Windows\System32\termsrv.dllファイルをバックアップ
    (※termsrv.dllがリモートデスクトップサーバ機能)




    実作業

  • リモートデスクトップのシステムファイルをデスクトップにCOPYする
  • termsrv.dllはシステムファイルの為、C:\Windows\System32\termsrv.dllを直接バイナリエディタで開こうとしても権限をあたえられていないため、読み込めない。そこでデスクトップなどにCOPYして移動しておく

  • バイナリエディタで指定の箇所を書き換える
  • Stirlingを起動させファイル(F) => 開く(O)でtermsrv.dllを読み込む
    stirling

    検索・移動(S) => 指定アドレスへ移動(J)を選すると、16進数でアドレスを入力するボックスがでるので以下のアドレスを入力して置換していく

    [検索するアドレス]: [置換前の値] => [置換する値]
    0005FDF2: 74 => EB
    00064FD7: 8B => B8
    00064FD8: 81 => 00
    00064FD9: 38 => 01
    00064FDA: 06 => 00
    00064FDC: 00 => 90
    00064FDD: 39 => 89
    00064FDF: 3C => 38
    00064FE3: 75 => EB
    000701BA: 01 => 00
    

  • 修正したリモートデスクトップのシステムファイルを元のフォルダに上書きする
  • 指定箇所のデータを修正した、termsrv.dllを元のフォルダに上書きしようとすると、権限がない警告により上書きができない場合がある。そのときは、Administratorでログインしtermsrv.dllにプロパティ => セキュリティ => 編集よりアクセス許可を追加してやると上書きができるようになる



    確認

  • リモートデスクトップクライアントよりアクセスしてみる
  • Windows XP Profesionalなどのクライアントからモートデスクトップ接続してみると、今までシングルセッションでしかアクセスできなかった、Vistaマシンに対して、マルチセッションでログインできるようにあり画期的である


     
    投稿日:2008/06/02 | カテゴリ:Windows | コメント:(0)