12 Apr 2013, 08:00

Windows上のcygwinからvmware上のUbuntuにtelnetするまでのメモ

Windows上のcygwinからvmware上のUbuntuにtelnetをしようとしてハマったのでメモ。
Ubuntuには、defaultではtelnetができないようで、ツールを入れて設定が必要。

なにもしていないと、以下のように接続拒否される。

$ telnet 192.168.118.129
Trying 192.168.118.129…
telnet: Unable to connect to remote host: Connection refused

Ubuntuでtelnetをするためのツールをインストール

Inetutils-inetdをインストールする

netutils-inetdとはTCP/UDPを受信してプログラムを実行するサーバだそうで。以下のコマンドでインストール 。

Ubuntu 窶錀 hardy の inetutils-inetd パッケージに関する詳細

$ sudo apt-get install inetutils-inetd

tenletdをインストール

telnetdとは、telnetを受信するためのサーバ(デーモン)だそうで。以下のコマンドでインストール。

Ubuntu 窶錀 hardy の telnetd パッケージに関する詳細

$ sudo apt-get install telnetd

接続許可するIPアドレスを設定

/etc/host.allowに許可するIPアドレスを追加する。

$ sudo emacs -nw /etc/host.allow

許可するIPを追加する。追加したIPを後ろについて以下の一行を追加。

in.telnetd: 192.168.101.1

まとめてこんな書き方もできる。

  • クライアントのIPアドレスを指定する場合 in.telnetd: 192.168.XXX.2
  • 同一のネットワーク内のクライアントを許可する場合 in.telnetd: 192.168.XXX

inetdサーバを再起動

以下のコマンドで再起動する。

/etc/init.d/inetutils-inetd restart

これで接続できるようになった。

$ telnet 192.168.118.129
Trying 192.168.118.129…
Connected to 192.168.118.129.
Escape character is ‘^]’.
Ubuntu 12.10
tsunera-virtual-machine login: tu-nera
Password:

参考

12 Apr 2013, 03:22

[TopCoder日記] SRM 576, Division 2

久しぶりのTopCoder参戦 & 悲しい惨敗。。。

C++ の vector配列の使い方がわからず苦戦してた。

vector配列は動的配列なので、vec.push_back(hoge);で初期化する必要があったのだった。

Level1の問題は解けたのだが、Eclipse上ではテストは通ったがarena上ではテストが通らず、時間切れとなった。なぜだろう。

Level1 determineHumidity

N個のパーティションで区切られた空間ごとに水滴を垂らす。

水滴の数は、配列intensityで与えられる。水滴は長さLのスポンジによって受け止められる。

スポンジの位置は配列leftEndで与えられる。

スポンジには上から並べられているので、同じ位置の上下でスポンジがあるときは、下のスポンジには水滴はたらされない。

L個のスポンジにそれぞれたらされる水滴の数を求めよ。

 

10 Apr 2013, 23:05

Eclipseの比較エディタでWinMergeを使うためのメモ

Windowsで差分比較をするための有名なソフトとして、『WinMerge』があります。Eclipseでコードを比較するとき、『External diff Tool』というプラグインを入れることで、Eclipseから外部比較エディタとしてWinMergeを開くことができます。

image

以下、導入をメモ。

External diff Toolプラグインの導入

以下のサイトからプラグインをダウンロードします。

External diff Tool

ダウンロードしたら解凍して、plugins配下にある以下のような名前のファイルをEclipseの起動フォルダにあるplugins配下にコピーします。

  • com.leucht.eclipse.externaldiff_0.1.1

あとは、Eclipseを再起動して完了です。

WinMergeの導入

WinMergeはフリーのWindows用差分比較ツール/マージツールです。日本語化してあるサイトがあるので、そこから落としてくるのがよいでしょう。

WinMerge 日本語版

落としてきたら、インストーラを起動してインストールします。

EclipseからWinMergeを使ってみる

EclipseからWinMergeを使うための設定をします。

image

  1. [ウインドウ] > [設定] > [一般] > [比較/外部ツール]を選択。
  2. 外部diff実行可能ファイルにWinMergePortable.exeを指定します。

あとは、比較したいファイルやフォルダを2つ選択して、右クリックから[比較] > [相互(外部ツール)]を選択すれば、WinMergeが比較エディタとして立ち上がります。

注意することは、Eclipseの現在のワークスペース配下に比較するファイルやフォルダがないと、正しくパスが入力されないこと。あとは、いちいち比較するファイルを選択するのもやや面倒ではあるな。。。

24 Mar 2013, 23:05

[セルゲイ・ブリンのTED]Google Glass が開く未来。人間は無限の記憶力を手に入れられるか?

Googleの創業者の一人であり技術部門担当社長でもある、セルゲイ・ブリン(サーゲイ・ブリン)がTEDに出演してGoogleGlassについて語っている動画を発見した。

情報の元がTEDではなくて、TED Leaksというのがとても胡散臭いが、内容は本物だろう。

Sergey Brin talks about Google Glass at TED 2013

[http://www.youtube.com/embed/rie-hPVJ7Sw?rel=0]

How It Feels [through Glass]

これはGoogleから公開されている動画。TEDの冒頭で使用されている動画と同じもの。

[http://www.youtube.com/embed/v1uyQZNg2vE?rel=0]

Amazing Google Glasses Demonstration by Sergey Brin

別の動画でこんなのも見つけた。30分くらいかけたデモンストレーション動画。

[http://www.youtube.com/embed/fDOfvIzvImQ?rel=0]

想像以上にクールなデバイスだ

GoogleGlass、想像以上にクールでスマートなデザイン。ファッションの一つとしても遜色ない。まあ、初めは異様に見えるかもしれないが、みんなでやれば問題ない。

アイカメラのように、見たものをカメラやビデオに記録することが強調して紹介される。また、視覚情報から検索したりできるらしい。[OK.Glass!]という掛け声が合図のようだ。

iPhoneの登場のように、人々のライフスタイルを根底から変えてしまいそうな魅力を放つ。
2013年には、早くも市場に現れるとも言われている。

『欲しい情報がその時に向こうからやってくる世界、
                                                          それを15年前に思い浮かべた』

ブリン氏は語る。そして、それを実現する最初の姿がこのGoogleGlassだともいう。

自分の存在の証明になるデバイス

記憶は、自分自身が思い出さなければ、忘れてしまう。その瞬間がそこにあったのかどうかも、誰も証明できない。だからこそ、大事なことは何度も何度も、記憶の中で思い出さなければ、そしてその行為は積極的に実施するべきだ。

そんなことを高校生のころから今日まで、ずっと思ってきた。だから日記をつけたり,ライフログを積極的に取るようにしてきた。そんな、自分の昔からの考え方を変えてしまうような衝撃を受ける。

過去はクラウド上に記録されて、蓄積される。人間は実は見たものを全て脳のなかで覚えているという話も聞く。覚えているが、思い出せないだけだという。GoogleGlassを使えば、記憶は無意識のうちに、クラウド上のストレージデバイスに記録される必要に応じて、検索できる。これは、なんと素晴らしいのだろう!

GoogleGlassは人間の記憶力の進化かもしれない。人間はコンピュータを手に入れ、無限の記憶力を手に入れた。

23 Mar 2013, 12:04

Eclipseのチーム同期化ビューのメモ

仕事での版数管理システムについて、今まではClearCaseを使っていたが、先週から社内で開発した新版数管理システムになった(うわっ、ありえない・・・)

ネットで検索してもなにも情報が出てこないし、Jenkinsとか今風のツールとの連携も皆無な,このソフトだが、Eclipseのプラグインがあるのが救い。

このEclipseプラグインは、CVSやSVNと同様なリポジトリとの同期化機能が備わっているようだ。というわけで、Eclipseの同期化について調べてみたので、メモします。

チーム同期化について

Eclipseの同期化機能をつかうと、ローカルリポジトリとリモートリポジトリの同期ができる。CVSの機能を元に調べた用語を書く。

130323_01

同期の種類について

以下の3種類がある。

  • 更新
    リモートリポジトリの更新をローカルリポジトリに反映する。
  • コミット
    ローカルリポジトリの更新をリモートリポジトリに反映する。
  • 同期化
    リモートとローカルの差分をマージする。

同期化のモードについて

image

  • 着信モード
    ローカルからリモートへマージ可能なものが表示される。自動マージ可能
  • 発信モード
    リモートからローカルへマージ可能なものが表示される。自動マージ可能
  • 着信・発信モード
    リモートとローカル相互でマージ可能なものが表示される。自動マージ可能
  • 競合モード
    リモートとローカル相互でマージが必要だが、自動マージできない場合に表示される。
    この場合は、手動マージが必要。手動マージはファイルを開くと比較ビューが現れる。
    手動マージできなく、強制的に上書きマージする方法もある。
  • 上書きして更新
    リモートの修正をローカルに強制マージ
  • 上書きしてコミット
    ローカルの修正をリモートに強制マージ

参考

16 Mar 2013, 03:34

Cygwinでコンソールに表示されるユーザ名を変更する方法をメモ

Cygwinでログインした時のコンソールはこんな感じで表示される。

(ユーザ名)@(マシン名) ~

ここで表示される名前を変更したいと思って調べたメモです。

/etc/passwdを変更する

Linuxでユーザ管理をしているファイルが”/etc/passwd”というファイル。
なので、バックアップをとってから、これを書き換えてやる。

$cp /etc/passwd ~/etc/passwd.bk
$emacs /etc/passwd

なかを開くと文字と数字が並んでいる。
一行一行が、ユーザを表している。プロパティごとに”:“で区切られている。
各プロパティの詳細はここが詳しい。

Linux ユーザー一覧の確認と/etc/passwd ファイル

今回変更したい行を見つける。先頭の文字がユーザ名。(おそらくいちばん最後の行」
今回は、tsu-neraに変更する。

tsu-nera:unused:1000:513:U-TSUNEMICHI-VAIO\TSUNEMICHI,S-1-5-21-2209003112-325970183-628590984-1000:/home/TSUNEMICHI:/bin/bash

Cygwinを再起動すると、変更されたユーザ名が表示された。

13 Mar 2013, 11:45

Eclipseで文字数の線を表示する方法のメモ

コードが横に長くなるのは嫌いなので、一行80文字を意識してコーディングしている。
(長くなったら、一時変数を導入してリファクタリングだ!)

Eclipseで80行目に線が表示されると嬉しいと思い調べた。ちょっとハマったのでメモ。

設定方法は、[ウィンドウ] > [一般] > [エディター] > [テキスト・エディタ] を選択。
[印刷マージンの表示] にチェックを入れて、文字数入力する。

こんな感じで列の80列目に線が表示された。

(`゚Д゚´)ゞ以上!!

07 Mar 2013, 14:33

[TopCoder日記] SRM 572, Division 2

今回は、TopCoderに参加前にEclipseCoderからログインできず、かなりあたふたしたが、なんとか登録完了。

安心して、開始時間までジョギングに出かけたら見事に遅刻したorz。

Level 1: EasyHomework

与えられた配列の要素の積の符号を求める問題。与えられた配列をそのまま計算すると桁あふれするので、1/-1に要約するのがポイント。これはチョロかった。

/*
*  TopCoder
*  SRM       : 572
*  Division  : 2
*  Level     : 1
*
*  Created on: 2013/03/07
*      Author: tsu_nera
*/
#include <string>
#include <vector>
using namespace std;

class EasyHomework {

     public: string determineSign(vector<int> A) {

          // Initialization
          int rslt_integer = 1;
          int now_integer = 0;

          // Search
          for (int i = 0; i < (int)A.size(); ++i) {

               if( A[i] == 0 )     return "ZERO";

               now_integer = ( A[i] > 0) ? 1 : -1;
               rslt_integer *= now_integer;
          }

          // Judge
          return ( rslt_integer > 0 ) ? "POSITIVE"
                                        : "NEGATIVE";
     }

};

 

Level2: NextOrPrev

与えられたstart文字列を規則に従ってgoal文字列まで変形する。

変形までにかかる最小コストを求める。

ただし、変形の過程で文字列の中の文字は一意であることが条件。

反例はわかったのだが、そのアルゴリズムがわからなかった。。。挫折。

/*
 *  TopCoder
 *  SRM       : 572
 *  Division  : 2
 *  Level     : 2
 *
 *  Created on: 2013/03/06
 *      Author: tsu_nera
 */
using namespace std;

#define debug(x) cout << #x << " = " << x << endl;
#define size(a) int ((a).size())

class NextOrPrev {

public: int getMinimum( int nextCost, int prevCost, string start, string goal) {

        int cost = 0;
        int distance = 0;

        for(int i = 0; i < size(start); i++) {
               for(int j = 0; j < size(start); j++) {
                      if( ((start[i] - start[j]) * (goal[i] - goal[j]) ) < 0 ) {
                            return -1;
                     }
              }
       }

        for(int i = 0; i < size(start); i++ ) {
              distance = ( goal[i] - start[i] );

               if( distance == 0) continue;

               if( distance > 0 ) {
                     cost += nextCost * distance;
              }
               else {
                     cost -= prevCost * distance;
              }
       }

        return cost;

}

};

07 Mar 2013, 13:43

Eclipseプラグインのインストール/アップデートでNo repository found containingが出てあたふたする場合の解決方法

昨日、TopCoderに参加しようとしてEclipseからログインしようとしたら、ログインできずに焦った。こんなメッセージが表示された。

class “com.topcoder.client.netClient.ResponseWaiterManager”’s signer information does not match signer information of other classes in the same package
https://code.google.com/p/eclipsecoder/issues/detail?id=40

えっ、まじかよ!アタフタ((ヽ(;´Д`)ノ))アタフタ

ネットでいろいろと調べてみると、eclipsecoderプラグインの不具合であることがわかった。
プラグインを0.3.10以降にすればいいらしい。

Issue 40 – eclipsecoder – Arena version downloaded by Eclipsecoder is too old and doesn’t work – An Eclipse plug-in for competing at the TopCoder online algorithm competition – Google Project Hosting

早速、Eclipsecoder Coreを0.3.12にアップデートしようとしたころ、エラーしてできない。
こんなメッセージが表示された。

インストールする項目の収集中にエラーが発生しました

session context was:(profile=epp.package.cpp, phase=org.eclipse.equinox.internal.p2.engine.phases.Collect, operand=, action=).
No repository found containing: osgi.bundle,org.apache.ant,1.8.3.v201301120609
No repository found containing: osgi.bundle,org.eclipse.ant.core,3.2.401.v20121204-162022
No repository found containing: osgi.bundle,org.eclipse.compare,3.5.301.v20130125-135424
No repository found containing: osgi.bundle,org.eclipse.compare.win32,1.0.200.v20120914-154749
No repository found containing: osgi.bundle,org.eclipse.core.commands,3.6.2.v20130123-162658
No repository found containing: osgi.bundle,org.eclipse.core.databinding,1.4.1.v20120912-132807
No repository found containing: osgi.bundle,org.eclipse.core.expressions,3.4.401.v20120912-155018
No repository found containing: osgi.bundle,org.eclipse.core.filesystem,1.3.200.v20130115-145044
No repository found containing: osgi.bundle,org.eclipse.core.jobs,3.5.300.v20120912-155018
No repository found containing: osgi.bundle,org.eclipse.core.net,1.2.200.v20120914-093638

・・・長いので、以下省略。

えっ、まじかよ!アタフタ((ヽ(;´Д`)ノ))アタフタ

さらに、ネットでいろいろと調べてみるとEclipse上にアップデートサーバの情報がキャッシュされていて、その情報が古いかららしい。キャッシュクリアのためには、以下の方法を試す。

[ウィンドウ] > [設定] > [インストール/更新] > [利用可能なソフトウェア]で、今回ダウンロードしてくるサーバを選択(今回はEclipseCoder http://fornwall.net/eclipsecoder/)し、右の[再ロード]をおす。

これで、解決するはずが・・・直らない!
EclipseCoderをアンインストールしたら、今度はインストールすらできない!

えっ、まじかよ!アタフタ((ヽ(;´Д`)ノ))アタフタ

いろいろと追い詰められた結果、以下の方法で解決した。

  1. [ウィンドウ] > [設定] > [インストール/更新] > [利用可能なソフトウェア] > [エクスポート]で利用可能なソフトウェアのリストをbookmarks.xmlに保存。
  2. 利用可能なソフトウェアを全て削除して、Eclipse再起動
  3. 再度、[利用可能なソフトウェア]にURLを追加
  4. アップデートを実施 -> 成功する
  5. bookmarks.xmlを[インポート]

なんとか間に合ってよかったよかった。

06 Mar 2013, 23:13

ザッカーバーグやビル・ゲイツなど、ブログラミングの夢と希望を語る動画に凄みを感じた

ネット上で、プログラミング教育を啓蒙する動画が話題になっている。
動画の出演者が、facebookのザッカーバーグ、Microsoftのビル・ゲイツ、twitterのジャック・ドーシー、Dropbox創業者のアンドリュー・ヒューストンなど、蒼々たる顔ぶれの方々が、プログラミングの魅力について、活き活きと語っている。

[http://www.youtube.com/embed/nKIu9yen5nc]

曰く、プログラムは、世界のいたるところに存在する。
曰く、ブログラミングは、全ての夢を可能にする。
曰く、プログラミングは、創造的な行為だ。

元気と勇気が出てくる。
影響力のあるビッグな人たちが集結しているので、凄みがある。

この動画は、学校教育でのプログラミングの教育を促進する(必須科目にする?)ことが目的らしい。codeorgというプログラミングの教育団体が作成したキャンペーン動画。

Code.org | Anybody can learn

 

プログラミングを学校で教えることには、大いに賛成だ。それは、自分がプログラミングや数学に今まで時間を費やしてきたからという、利己的な理由からかもしれないけれども。

自分が高校生のころは、すでに数学の一分野として組み入れられてはいるけれども、おまけのような扱いだった気がした(BASIC)。TopCoderのように、数学の問題をプログラミングで解くことが学校でもさればよいと思った。