「初期化」を含む日記 RSS

はてなキーワード: 初期化とは

2007-12-10

もしパソコンを修理に出す場合は

パソコンの電源が入らなくなった場合は、以下を参照してください。

http://anond.hatelabo.jp/20071206010507

パソコンが起動しない場合は、以下を参照してください。

http://anond.hatelabo.jp/20071206233539

バックアップは済んでいますか?】

修理に出してしまうと、その作業内容や交換パーツは様々です。

また、壊れていなくても、「見込み交換」という作業が入る事があります。

データを保存しているHDは、壊れやすいパーツであり、交換されてしまう事があります。

また、他のパーツを交換する場合でも、OS初期化する事があります。

さらに、保管中、輸送中の事故災害もあります。

データが確実に戻ってくる保障はありません。

定期的にバックアップを取ってください。

ちょっとした故障でも、修理に出す時は、バックアップを残しましょう。

どうしてもデータを取り出したい場合は、HDが正常そうなら取り出して、外付けドライブ化。

HDがだめそうなら、専門の業者さんへ依頼しましょう。

怪しげなツールを使ったり、冷やしたり、暖めたりは、慣れた人が症状を的確に見抜いて、成功するかしないかというものです。

HDの仕組みについて、正しく理解していないかたはやめましょう。

復帰できるものも、できなくなります。

【時間がかかります】

早いものだと、1週間で返ってきます。

遅いものだと、2ヶ月以上かかることもあります。

まず、症状が曖昧な場合、原因を特定するのに時間がかかります。

原因を特定後、交換作業をします。

年末年始GWお盆などは修理センター休みを取ります。かつ、修理品も増えます。相談や問い合わせも増えます。

とても忙しいので、修理が遅くなります。

また、交換パーツを取り寄せる場合、また時間がかかります。

アセンブリ系のパーツの場合は、海外に送ったり、海外から取り寄せたりとあるので、相当な時間がかかります。

古いパソコンだと、パーツの取り寄せが困難になります。

さらに、見積もり金額を伝えたりする場合に、あなたと連絡が取れないと修理ができなかったりします。

最初に伝えていた金額も、作業を進めるうちに変わることもあります。

あなたの許可無く修理をしても、お金がもらえるかわからないので、連絡がつくまで修理はできません。

時間に関して解決するには、メーカーサポートセンターなどへ直接持ち込まれるのが一番早いです。

ですが、その場ですぐに対応できるかわかりませんので、やはり修理に出す際は時間に余裕を持ってください。

お金がかかります】

基本的に、修理はお金がかかります。

買ってから、半年から数年まではメーカー保証がついているものが基本ですが、メーカー保証が受けられない故障も多くあります。

落として液晶が割れた、ジュースをこぼした、など明らかにあなたが責任の場合は、メーカー保証は受けられません。

買ってその日に落として使えなくなった場合でも、もちろん修理にはお金がかかります。

修理の際には、作業料+パーツ代+中間マージンがあります。

作業料は人の手が入りますので、数時間放置するリカバリでも数千円は取られます。

パーツ代ですが、比較的高額なメーカー純正品しか修理に使わないので、バルクHDメモリなどと比べないでください。

販売店などを通してメーカーに修理に出す場合は、多少のマージンを取られます。

そのため、HD交換で3万円、液晶で5万円、全損を直すと買った時よりも高額になります。(ノートの場合の目安)

数年前のパソコンが壊れた場合は、中古で買ったほうが安い事の方が多いです。

デスクトップの場合は、自作機のチェックなどをしてくれるアセンブリ系の販売店に持っていき、原因究明後にそのパーツを交換したほうが圧倒的に安いです。(但し、メーカー保証は無くなります。)

2007-12-06

もしパソコンが起動しなくなったら

電源が入らない場合は以下を参照してください。

http://anond.hatelabo.jp/20071206010507

電源が入っても起動しない場合について

【最初のメーカーロゴは出ますか?】

出ないのであれば、CMOSクリアしてください(デスクトップのみ)

出ないのであれば、周辺機器などをできる限り外してください(拡張したメモリや、マウスなども出来る限り。ノートであればバッテリも)

ケース内やファン部に埃ヤゴミがたまっていないかチェックしてください。

あれば、キレイにしてください。

直らなければ、ディスプレイを替えてください(デスクトップ

ノートの場合は、とても暗く表示される場合があります(バックライト切れ)。よくみてください。

それでも直らなければ、修理を検討してください。

メーカーロゴが出た後、真っ暗な画面のままの場合】

リカバリを試してください。(データは消えます。マニュアルを参照してください。)

HDDリカバリであれば、最初のメーカーロゴが出た時点で、F9からF12のどれかを押すのが一般的です。(例外もあります)

また、メーカーロゴが出てる時点でF2キー(機種による)を押しBIOSの画面からリカバリをすることもあります。

さらに、Dynabookの場合は、起動時に0キーを押しリカバリすることもあります(マニュアル参照)

CD/DVDからリカバリをする場合は、起動時にBIOSからCD/DVDから起動するように設定するか、F12ボタン(機種による)を押しCD/DVDから起動するようにしてください。

もしディスクを無くした場合はメーカーに問い合わせてください。比較的安価で譲ってもらえる場合が多いです。

もし、メーカーリカバリを依頼する場合、期間は約1週間から10日(前後します)、費用は1万円前後となります。もちろんデータは消えます。

メモリ周辺機器を増設後はそれが原因の場合もあります。

相性、初期不良は珍しいことではありません。

Windowsロゴが出ても起動しない場合】

最初は待ってください。OSアップデートなどとかぶった場合、起動に10分かかってしまうこともあります。

いつもより遅いなと思っても、待ってみてください。20分後に起動した例もあります。

セーフモードを試してください。どうしても起動しない場合、OSの調子が悪い場合があります。

メーカーロゴが出た直後にF8ボタンを押すと、起動メニューが選べます。

その画面でセーフモードを試してください。

セーフモードで起動後に直る事もありますし、バックアップの方法も模索できます。

それでもダメなのであれば、KNOPIXを試してみてください。

http://unit.aist.go.jp/itri/knoppix/

これはCDから起動するもので、OSが壊れて起動しない場合に、ファイルが救出できる可能性があります。

【青い画面に白い文字で英語がいっぱい出てくる】

ブルーバックと呼ばれる症状です。

OSが壊れているか、ハードウェアが壊れています。まれに、相性の場合があります。

まず、リカバリをしてください。

ダメなのであれば、メーカーに修理に出すとよいでしょう。

【「Operating System not found」っぽいエラーが出る。】

OSが見つけられない状態です。

BIOSHD認識しているか確認しましょう。認識していなければ、HDクラッシュしたと思われます。

BIOS認識していて、このエラーが出た場合、OSが飛んだと考えてリカバリをしてください。

【起動時にビープ音が鳴る】

どこかしらのハードウェアに異常があります。

直近に追加したハードウェアを取り外してください。

追加したハードディスクが無く、ビープ音がする場合は修理コースです。

OSの起動メニューが表示される】

(無い部分は飛ばしてください)

まずは、前回の起動時の設定を選んでください。

次に、修復して起動を選んでください。

次に、通常起動を選んでください。

次に、セーフモードで選んでください。

(場合によっては起動時にどんどんファイルが壊れていくこともあるので、症状が深刻そうな場合は最初からセーフモードを選ぶ事もひとつの手です。)

直らなければ、リカバリをしてください。

直らなければ、修理に出してください。

2007/12/10以下を追記

FDCD/DVDはは入ったままではありませんか?USBメモリLANケーブルはささっていますか?】

場合により、FDCD/DVDUSBメモリLANから起動する設定になっている、もしくは、そのようになってしまう事があります。

FDドライブCD/DVDドライブUSBメモリを確認してください。念のため、LANケーブルも抜きましょう。

その設定を変える、もしくは確認するには、BIOS画面で確認します。

BIOSの「Boot」と書かれている部分を確認してください。(メーカーによって違いあり。日本語の場合は、「起動」など)

2007/12/10追記ここまで

2007/12/14以下を追記

マザーボードボタン電池について】

マザーボードについているボタン電池は、マザーボードBIOSデータを保存しています。わかりやすいもので言えば、時計データです。

電池が無くなればそのデータが保存されないだけなので、無くても問題はありません。(特殊な設定をしている場合を除く)

電池が無くなったのであれば、外してください。

また、主電源が入っていて電源ケーブルがささったままなのであれば、電池が無くてもデータが保存できるものもあります。

BIOSの設定がおかしくなった場合は、主電源を切り、コンセントからACケーブルを抜き、電池を外してください。

そうするとBIOSの設定が初期化されます。CMOSクリアです。(BIOSアップデートに失敗した場合は、この方法でも直りません。)

2007/12/14追記ここまで

以上を試してみて、改善しなければ修理を検討してください。

2007-11-08

増田の代償(1)

http://anond.hatelabo.jp/20071108001541

『どんな代償が?

 はりつけ獄門とかそういうの?

 それとも心がだんだん荒廃していく呪いか』

http://anond.hatelabo.jp/20071108024110

暗闇の中に男が一人。モニタの明かりに照らされて、浮かび上がる相貌はやや病的。

人を人とも思わぬ、増田増田とも思わぬその所業。

そう、彼もまたF文芸部員であった。

さて、今日はどんなエントリを投下しよう。

青、白、黒の三色のみにて彩られたモニタは、彼の獣性を目覚めさせる。青は進め、白は進め、黒は進め。創作の泉尽くことなく溢れ、彼の新たなエントリ三色のみにて構成された増田へ、一筋の赤い傷跡を刻むことだろう。

ふと、手が止まる。

はて、今日は新月であったか……

「3...2...1... 突入

窓が砕ける音。

椅子から引きずりおろされ、両腕を一瞬で拘束される。まさにそれこそが彼の命にして武器

ターゲット捕捉、id:xxxxxxxxxxxと確認」

エントリ記入中。現行犯です」

「な、なっ、一体君たちは」

「うるせえこのロリペド野郎! idじゃお上品に振舞ってたようだが」

「君は、本当に増田匿名だとでも? 能天気なことだ」

増田2chじゃねーんだぞコラ!」

「連行しろ」

「はっ」

後に残った闇緑色の覆面の男は素顔をさらし、モニタに向かう。

そこには書き溜められた創作の数々。ひとつひとつに男は目を通し、怒り、悲しみ、涙を流し、大声で笑った。それから淡々HDD初期化作業に移った。

「あんたの創作、嫌いじゃあなかったぜ」

彼らこそ「A.N.O.N.D.((Anti-Nonsense of November Divine scourge))」。

無意味不条理エントリを根源的に抹殺しネット社会平和を守るため、11月1日を以って株式会社はてなに発足した、新サービスである。

http://neo.g.hatena.ne.jp/masapguin/20071130/1196413150

2007-10-21

かこわるい・・・・

PHPをさわってるんだけど

受取側でGETとかPOSTの初期化ってどうすりゃいいの?

なんか、

	$pass = "";
	if (isset($_POST['pass'])) { 
		$pass = $_POST['pass'];
	}

こんな感じのを数個書こうとして、うわぁと思ってしまった。

一行に書けばいいじゃんとかそういうもんだいじゃなくって、

なんか素敵な方法はないのかの?

2007-08-27

http://anond.hatelabo.jp/20070827155401

あまったテレカ無駄メモリ使われたくないなーと思ってさ。

みのもんた初期化する時(出演前?)にテレカの枚数を引数に渡すからそれで入れ出しのつじつまはあってるって事で…

http://anond.hatelabo.jp/20070827154131

みのもんたと言うオブジェクトが、テレホンカードの残量と言うパラメータを持っていて、「あげる」と言う振る舞いが呼ばれると、残量パラメータをデクリメントして、テレホンカードオブジェクト初期化してそのポインタを返すと言うのはどうかな?

2007-08-25

素人探訪今日の素敵 java1.0

配列に格納したものと一致しないものだけをピックアップしたかったのだが、

配列の中にその値があるかどうかの比較のしかたがわからずfor文でまわしました。

なんとなく感覚でequals()と==をつかいわけているが、もしかしたら違うかもしれない。

classインスタンスというかイニシャライズに相当する書き方がわからず、

初期化が必要なクラスをつくることができず、ひとつのクラス内でダバダバ関数を書いている。

} catch(ArithmeticException e) {

System.err.println("エラー" + e.getMessage());

関数ごとにこんな風にいちいち書いてみたが、もっといいやり方があるきがする。

// デバック用出力関数

private void fDebug(String msg) {

if (!DEBUG_FLG){ return;}

System.out.println(msg);

}

挙句、こんな関数を作った。俺はバカかとおもった。

ログ出力用のヤツまでつくってしまった。いったいこれはどういうことだろう。

昔し、配列のsortを教えてもらった記憶があるのだが実はいまだにできない。

しかたが無いのでaddで任意の位置に足しているが、それをやるにもループ配列.size()で分岐しながらなのでカッコワルイ。

勢いでつくった関数にオプショナルで引数を追加したくなったのだが、やりかたがわからなかったので諦めた。

引数初期化ってどうやるんだろう。

Eclipseで一気に複数行をコメントアウトするような方法がわからない。

→わかった! ctrl+/だ! おー、便利。

気持ち悪いループとbreak文だらけになってしまいわかり難いのでラベルをつけた。

「label:」みたいにすればいいらしい。だが根本的に間違っている気がする。

Integerとintみたいなものを区別せずに使っている。実際何が違うのかわからないけど動くからいいやとかおもってしまっている。

@Overrideってなんだろう。

参照が深くなりすぎてしまって、ループの中でわざわざ変数を宣言しなおしている。

DDDDD masuda = AAAA.BBBB().CCCC(ohdeyansu);

ookamiotokoto = masuda.funga() + masuda.hajimeruzamasu();

どうなんだろうか。

何か計算結果がおかしいなとおもったら int * (int/int) で、分母が計算途中で丸められてた。

int * (float)(int/int) こんな回避の仕方をしてしまったのだがいいのだろうか。



たいしたことをしていないのだがやたらとコードが長くなる。

どうにかならんものか・・・。

2007-07-12

迷路成プログラムVC++2005でやってみた。

http://anond.hatelabo.jp/20070711013155 こちらの宿題を作ってみました。

http://anond.hatelabo.jp/20070711080519 で参加を宣言した者です。

#include "stdafx.h"
#include <time.h>
#include <conio.h>
#include <list>

using namespace std;

enum MMError {
	MME_None = 0,
	MME_SizeError,
	MME_MemoryAllocError,
	MME_NotInitialized,
};

enum MMKind {
	MMK_None = 0,
	MMK_Space,		// 通路
	MMK_Filled,		// 埋まってるところ。掘れる。
	MMK_Wall,		// 壁。掘れないところ。
};

//
// 迷路実体管理用クラス定義
//
class CMazeMatrix
{
public:
	CMazeMatrix();
	virtual ~CMazeMatrix();

public:
	virtual bool	Initialize(int nXSize, int nYSize);	// 初期化すると同時に、外壁まで作ってしまう。
	virtual MMKind	GetAt(int nXPos, int nYPos);
	virtual bool	SetAt(int nXPos, int nYPos, MMKind kind);

	MMError	GetLastError() {return m_lastError;}


protected:
	inline	int calcIndex(int nXPos, int nYPos) {return nYPos * m_nXSize + nXPos;}
	bool	finalize();

protected:
	MMKind	*m_pMaze;
	int		m_nXSize;
	int		m_nYSize;

	MMError	m_lastError;
};

//
// 実体管理用クラス実体
//
CMazeMatrix::CMazeMatrix()
{
	m_pMaze = NULL;
	m_nXSize = 0;
	m_nYSize = 0;
	m_lastError = MME_None;
}

CMazeMatrix::~CMazeMatrix()
{
	finalize();
}


bool CMazeMatrix::Initialize(int nXSize, int nYSize)
{
	finalize();

	int nSize = nXSize * nYSize;
	if ((__int64)nSize != (__int64)nXSize * (__int64)nYSize) {
		m_lastError = MME_SizeError;
		return false;
	}
	m_pMaze = new MMKind[nSize];
	if (m_pMaze == NULL) {
		m_lastError = MME_MemoryAllocError;
		return false;
	}

	m_nXSize = nXSize;
	m_nYSize = nYSize;

	int nCnt;
	for (nCnt = 0; nCnt < nSize; nCnt++) 
		m_pMaze[nCnt] = MMK_Filled;

	for (nCnt = 0; nCnt < m_nXSize; nCnt++) {
		m_pMaze[calcIndex(nCnt, 0)] = MMK_Wall;
		m_pMaze[calcIndex(nCnt, m_nYSize - 1)] = MMK_Wall;

	}

	for (nCnt = 0; nCnt < m_nYSize; nCnt++) {
		m_pMaze[calcIndex(0, nCnt)] = MMK_Wall;
		m_pMaze[calcIndex(m_nXSize - 1, nCnt)] = MMK_Wall;
	}
	return true;
}

MMKind	CMazeMatrix::GetAt(int nXPos, int nYPos)
{
#ifdef _DEBUG
	if (nXPos < 0 || nXPos >= m_nXSize ||
		nYPos < 0 || nYPos >= m_nYSize)
	{
		m_lastError = MME_SizeError;
		return MMK_None;
	}
#endif
	return m_pMaze[calcIndex(nXPos, nYPos)];
}

bool	CMazeMatrix::SetAt(int nXPos, int nYPos, MMKind kind)
{
#ifdef _DEBUG
	if (nXPos < 0 || nXPos >= m_nXSize ||
		nYPos < 0 || nYPos >= m_nYSize)
	{
		m_lastError = MME_SizeError;
		return false;
	}
#endif
	m_pMaze[calcIndex(nXPos, nYPos)] = kind;
	return true;
}

bool	CMazeMatrix::finalize()
{
	if (m_pMaze != NULL) {
		delete [] m_pMaze;
		m_pMaze = NULL;
	}
	return true;
}


//
// 迷路作成用クラス定義
//
class CMazeMaker
{
public:
	CMazeMaker();
	virtual ~CMazeMaker();

public:
	bool	Initialize(int nXSize, int nYSize);

	// 力業。ループで回す。メモリは食わない。
	// 美しくない。
	bool	Generate1();

	// 掘った箇所をスタックに積んで、掘れなくなったらスタックを戻す。
	// 綺麗だけれど、迷路のサイズを増やすとスタックオーバーフローが起こる。
	bool	Generate2();

	// Generate2をlistに置き換えたもの。
	// stdを使ってしまったのが心残り。
	bool	Generate3();

	MMError	GetLastError() {return m_lastError;}

protected:
	bool	finalize();
	bool	checkPos(int nXPos, int nYPos, int nXAdd, int nYAdd);
	int		process(int nXPos, int nYPos);
	void	dig(int nXPos, int nYPos);
	bool	makeStartGoal();
	virtual	CMazeMatrix* matrixAllocate();

protected:
	int		m_nXSize;
	int		m_nYSize;
	CMazeMatrix *m_pMatrix;
	MMError	m_lastError;
};


CMazeMaker::CMazeMaker()
{
	m_nXSize = 0;
	m_nYSize = 0;
	m_pMatrix = NULL;
	m_lastError = MME_None;
}

CMazeMaker::~CMazeMaker()
{
	finalize();
}

bool CMazeMaker::Initialize(int nXSize, int nYSize)
{
	finalize();

	m_pMatrix = matrixAllocate();

	if (m_pMatrix == NULL) {
		m_lastError = MME_MemoryAllocError;
		return false;
	}

	if (m_pMatrix->Initialize(nXSize, nYSize) == false) {
		m_lastError = m_pMatrix->GetLastError();
		return false;
	}

	m_nXSize = nXSize;
	m_nYSize = nYSize;

	return true;
}

CMazeMatrix* CMazeMaker::matrixAllocate()
{
	return new CMazeMatrix;
}

bool CMazeMaker::finalize()
{
	if (m_pMatrix != NULL) {
		delete m_pMatrix;
		m_pMatrix = NULL;
	}
	return true;
}


// スタート位置と、ゴールの位置を作成。外壁部分に穴を開ける。
// 今回のアルゴリズムでは、外壁のすぐ内側が通路になっていないことがあるので
// その場合には箇所を移動させる。
// どこをとっても通路が見あたらない場合には、エラーとする。
// (乱数の発生具合がとても意地悪な場合を考えると、可能性は少なくとも0ではない。)
//
bool CMazeMaker::makeStartGoal()
{
	// スタート地点を左の壁の上の方に
	int nCnt = 0;
	for (nCnt = 1; nCnt < m_nYSize - 1; nCnt++) {
		if (m_pMatrix->GetAt(1, nCnt) == MMK_Space) {
			m_pMatrix->SetAt(0, nCnt, MMK_Space);
			break;
		}
	}
	if (nCnt == m_nXSize - 1) {
		return false;
	}

	// ゴール地点を右の壁の下の方に
	for (nCnt = m_nYSize; nCnt > 0; nCnt--) {
		if (m_pMatrix->GetAt(m_nXSize - 2, nCnt) == MMK_Space) {
			m_pMatrix->SetAt(m_nXSize - 1, nCnt, MMK_Space);
			break;
		}
	}
	if (nCnt == 0) {
		return false;
	}
	return true;
}


// 現在位置nXPos, nYPosからみて、nXAdd、nYAddを足した位置に移動できるかをチェック
// 移動先が埋まっている状態で、さらに三方が通路以外に覆われているなら、OKとする

bool CMazeMaker::checkPos(int nXPos, int nYPos, int nXAdd, int nYAdd)
{
	if (m_pMatrix->GetAt(nXPos + nXAdd, nYPos + nYAdd) != MMK_Filled) 
		return false;

	if (nXAdd == 0) {
		if (m_pMatrix->GetAt(nXPos - 1, nYPos + nYAdd * 2) != MMK_Space &amp;&amp;
			m_pMatrix->GetAt(nXPos    , nYPos + nYAdd * 2) != MMK_Space &amp;&amp;
			m_pMatrix->GetAt(nXPos + 1, nYPos + nYAdd * 2) != MMK_Space &amp;&amp;
			m_pMatrix->GetAt(nXPos - 1, nYPos + nYAdd ) != MMK_Space &amp;&amp;
			m_pMatrix->GetAt(nXPos + 1, nYPos + nYAdd ) != MMK_Space)
		{
			return true;
		}
	} else {
		if (m_pMatrix->GetAt(nXPos + nXAdd * 2, nYPos - 1) != MMK_Space &amp;&amp;
			m_pMatrix->GetAt(nXPos + nXAdd * 2, nYPos    ) != MMK_Space &amp;&amp;
			m_pMatrix->GetAt(nXPos + nXAdd * 2, nYPos + 1) != MMK_Space &amp;&amp;
			m_pMatrix->GetAt(nXPos + nXAdd , nYPos - 1) != MMK_Space &amp;&amp;
			m_pMatrix->GetAt(nXPos + nXAdd , nYPos + 1) != MMK_Space)
		{
			return true;
		}
	}
	return false;
}


static const int moveInfo[4][2] = {
	{-1, 0},
	{0, -1},
	{1, 0},
	{0, 1},
};

int CMazeMaker::process(int nXPos, int nYPos)
{
	int digCount=0;
	int aryMove[4] = {0};	

	if (m_pMatrix->GetAt(nXPos, nYPos) != MMK_Space) {
		return 0;
	}
	while (1) {
		int nMoveCount = 0;

		for (int nCnt = 0; nCnt < 4; nCnt++) {
			if (checkPos(nXPos, nYPos, moveInfo[nCnt][0], moveInfo[nCnt][1]) == true) {
				aryMove[nMoveCount] = nCnt;
				nMoveCount++;
			}
		}
		if (nMoveCount == 0) {
			break;
		}
		
		int nMove = ((rand() >> 1) % nMoveCount);
		nXPos = nXPos + moveInfo[aryMove[nMove]][0];
		nYPos = nYPos + moveInfo[aryMove[nMove]][1];
		m_pMatrix->SetAt(nXPos, nYPos, MMK_Space);
		digCount++;
	}
	return digCount;
}


bool CMazeMaker::Generate1()
{
	// 開始点は1, 1から。(ループの先頭
	m_pMatrix->SetAt(1, 1, MMK_Space);

	::srand((unsigned int)time(NULL));
	
	int nXCnt;
	int nYCnt;

	for (nXCnt = 1; nXCnt < m_nXSize - 1; nXCnt++) {
		for (nYCnt = 1; nYCnt < m_nYSize - 1; nYCnt++) {
			while (process(nXCnt, nYCnt) != 0) {}
		}
	}
	return makeStartGoal();
}


void CMazeMaker::dig(int nXPos, int nYPos)
{
	m_pMatrix->SetAt(nXPos, nYPos, MMK_Space);

	int aryMove[4] = {0};	

	while (1) {
		int nMoveCount = 0;

		for (int nCnt = 0; nCnt < 4; nCnt++) {
			if (checkPos(nXPos, nYPos, moveInfo[nCnt][0], moveInfo[nCnt][1]) == true) {
				aryMove[nMoveCount] = nCnt;
				nMoveCount++;
			}
		}
		if (nMoveCount == 0) {
			break;
		}
		
		int nMove = ((rand() >> 1) % nMoveCount);

		dig(nXPos + moveInfo[aryMove[nMove]][0], nYPos + moveInfo[aryMove[nMove]][1]);
	}
}

bool CMazeMaker::Generate2()
{
	::srand((unsigned int)time(NULL));
	int nXStart = ((rand() >> 1) % (m_nXSize - 2)) + 1;
	int nYStart = ((rand() >> 1) % (m_nYSize - 2)) + 1;
	dig(nXStart, nYStart);
	return makeStartGoal();
}

struct PosInfo {
	int xPos;
	int yPos;
};

bool CMazeMaker::Generate3()
{
	::srand((unsigned int)time(NULL));
	int nXStart = ((rand() >> 1) % (m_nXSize - 2)) + 1;
	int nYStart = ((rand() >> 1) % (m_nYSize - 2)) + 1;

	m_pMatrix->SetAt(nXStart, nYStart, MMK_Space);

	list<PosInfo> posList;

	PosInfo info = {nXStart, nYStart};
	posList.push_back(info);

	while (posList.size() != 0) {
		int nXPos = (posList.rbegin())->xPos;
		int nYPos = (posList.rbegin())->yPos;

		int aryMove[4] = {0};	

		int nMoveCount = 0;

		for (int nCnt = 0; nCnt < 4; nCnt++) {
			if (checkPos(nXPos, nYPos, moveInfo[nCnt][0], moveInfo[nCnt][1]) == true) {
				aryMove[nMoveCount] = nCnt;
				nMoveCount++;
			}
		}
		if (nMoveCount == 0) {
			posList.pop_back();
			continue;
		}
		
		int nMove = ((rand() >> 1) % nMoveCount);

		info.xPos = nXPos + moveInfo[aryMove[nMove]][0];
		info.yPos = nYPos + moveInfo[aryMove[nMove]][1];

		m_pMatrix->SetAt(info.xPos, info.yPos, MMK_Space);

		posList.push_back(info);
	}

	return makeStartGoal();
}

//
// コンソール出力用
class CMazeMakerConsole : public CMazeMaker
{
public:
	CMazeMakerConsole(){};
	virtual ~CMazeMakerConsole(){};

public:
	void Output();
};

void CMazeMakerConsole::Output()
{
	for (int nYCnt = 0; nYCnt < m_nYSize; nYCnt++) {
		for (int nXCnt = 0; nXCnt < m_nXSize; nXCnt++) {
			if (m_pMatrix->GetAt(nXCnt, nYCnt) == MMK_Space) {
				printf(".");
			} else {
				printf("#");
			}
		}
		puts("");
	}
	_getch();
}

// 
//
int _tmain(int argc, _TCHAR* argv[])
{
	CMazeMakerConsole maker;

	do {
		if (false == maker.Initialize(75, 50)) {
			puts("Initialize Error");
			return 0;
		}
	} while (false == maker.Generate3()); //失敗するのは、スタート、ゴールが作れなかった場合。偶然そういうことになることもあるので、そうなったら作り直す。


	maker.Output();

	return 0;
}

最初に昔の記憶を頼りにCMazeMaker::Generate1()を作ったけれど、美しくなかったのでGenerate2()を作成。迷路のサイズを増やすとスタックオーバーフローになるので、Generate3()を作成。一応、満足。

###########################################################################
.....##...#.#.##.....##......#....#...#.#.#.........#.##.........##.#.....#
#.#.##..#.#......###..###.##.#.##.#.###...#.#####.#....##.######....##.##.#
#.#..##.#.#.##.###.##.....##...#....#...#.....##..#.##.#..##...####..#..#.#
#.##..###.#..#..##..###.#..###.#.####.###.#####..####..#.##..#....##.##.#.#
#..##.....##.##..##...#.##..#######...#.#.#...#.##....##.#..###.#..#.##.###
#.####.#####.###.###.##..####.......###.###.#.###..##.#..#.##...##.#..#...#
#....###......#..#.#....##....########..##..#..#..#####.######.##..##.##.##
#.##..##.######.##...####..#####....#..##..###.#.##.##..#......#..###..#..#
#..##.#...##....#..#.#..#.##.#...#.##.##..##.....#.....####.####.##.##.##.#
##..#...#..#.#######...##....#.#####..#..#########.##.##.#..##...##..#....#
###.########.##...##########.#...##..##.##.##...####..#....##..###..#####.#
#.#..##...##..#.#.....##.....##.##..##..#...###.#.#..###.####.##...##.....#
#.##.#..#..##.#.#####.#..#####..#..##..##.#.....#...##.#.#....####.#..#####
#..#.#.###.#..#.....#...##.....##.##..##..##.##.#.###....####.#.#..#.###..#
#.##.#.##....######.########.###..#..###.##..#....#.##.#...#..#...##...##.#
#..#.#..###.##.#....#..#.....##..###..#...#.#######....#.#.#.##.#.####.##.#
##.#.##.##...#.#.#####...#####..##.##.##.##......#####.###.#.#..#..#.#..#.#
##....#..###...#....#..#.....#.##...#.#...#.#.##.....#..##.#...###...##...#
#..#####...########.####.##.##....#...#######..#####.####..#####.########.#
#.##.#.###..#.....#....###...###########...###..##...#....##.........##...#
#..#....###...#.#.####..#..#.....#.#.....#..#..##..###.#.##..#######.#..###
##.####...#######...###.##.#.###.#...######.####..##...#.#..##...#...#.##.#
#....####...#...###...#..#.#..####.#....#.....#..##..#.###.##..#.#.###.#..#
####...#..#.#.#..####.##.####......####.#####.##..#.##...#..####.#.#...#.##
##.###.#.##.#.##.#.#...#....##.######.#.##..#.###.######.##...#..#...###..#
#..##..#.####.##.#...#.####..#........#..##....##...##....###...######...##
#.##..##..##..#..##.####..##.#.######.##..####..#.#..##.###.#.#..#.##..#..#
#.##.####.#..##.##..##...###.###...#...##.##.##.####.#..#...####.#..#.###.#
#.#...#...#.###..##..#.#...#..#..#...#..#..#.##..##..#.##.#..##..##.#...###
#...#...#.#...##..##...#.####.####.#######.#..##.#..##..#.##..##..#...#...#
#.###########.###..#####....#...##.#..#....##..#...####.#..##..##.#######.#
#....#....##..#.##....###.#####..#...##.######.#####.##.##.###....#.....#.#
###.##.#.##..##..####..#..#...##.###.##......#...##.....##..########.##.#.#
#.#.#..#..#.####.#..##...##.#.#..#....######.#.#....#.#..##.#...##...#....#
#...#.###...#......####.##..#...###.###...##.#.######.#.##..#.#..##.####.##
#.#.#.#.#####.###.##....#..######.#.##..#..#.#..#.....#..##...##.#...#....#
#.###.#...##...#..#..####.##.#.##.#.#..##.##.##.#.###.##..######.#.#.####.#
#..##.#.#..#.#.####.###.#..#......#...#####..#..#...####.##..#.#.###.##...#
##..#...##.#.#.#........##.#.#.#.####..#....#######..##...##...#..#...###.#
###.######.#.#...####.#..#.#.###.#..##.#.####....###..###..##.###.###...#.#
#...#...#..#####...##.####.#..#....##..#..#...##...##...##......#..####.#.#
#.###.#...##...#####..##...##.#.##.#..###.#.######..##.###########.#....#.#
#..#..##.##..#.#...#.##..######..###.##.#....###.##.##...#.......#.#.#.####
#.##.###..#.##...#.###..##....##........#.##..#...#..#.#.#.###.#.#.###....#
#..#...##.#..#####..##.####.#.##.############...#.##.#.#.#...#.###..##.##.#
##.###..###.##...##.#..#....#..###....##....#######..#.###.###...##..###..#
#...###..#...##.###.#.##.#####...#.##.#..##.#...#...##..#...###.####.#...##
#.#...##...#......#......#.....#...#....##....#...#..##...#...#........#...
###########################################################################

ちなみに http://anond.hatelabo.jp/20070711194709 これを聞いたのは自分。

かなりたくさん書けることがわかりました。

2007-05-04

[]はてブ登録画面が重い件

はてなブックマーク登録時のタグ自動補完が重いという話が出ている。

はてブのタグ自動補完が蝶★重い件について

うちもunDonutブックマークレットで登録しているが、確かに重い。

候補一覧などはそれほどでもないが、毎回JavaScript初期化のためCPU使用率100%のまま5秒近く待たされる。

タグ数400強でこれなのだから、1000近くならそりゃ重くなるだろう。

PCスペックによるだろうが)

http://hatena.g.hatena.ne.jp/hatenabookmark/20070406/1175838568

先日のサーバーメンテナンスシステムリソースに余裕を持たせることができた点、1,000 件では現状にそぐわない点などを考慮いたしまして 5,000 件まで引き上げるよう変更を行いました。

現在は5000件までタグを表示できるらしいが、タグ数に比例して初期化に時間がかかる現状では地獄が待っているだけだ。

サーバサイドよりクライアント側の負荷が高くなりすぎている。

タグ自動補完をAjax化してくれれば、タグ数に関わらず快適にブックマークできるようになると思うがどうかな?

2007-04-29

オブジェクト指向って言葉も大昔からあるよ!

http://anond.hatelabo.jp/20070429155517

えー、IME 任せは微妙だなあ。めんどくさくてもオンオフぐらいしようよ。状況に応じた大文字小文字の選択もしづらい(できない?)し微妙だよ。少なくともそういう入力方法を叩くプログラマーは少なくないと思う。

19世紀はgoto文の時代だと思ってましたよ。

というかあまりオブジェクト指向プログラムってみたことないかも。

goto文不要論なんてもう何十年も議論され続けてるよ。大体 90年代終盤にはそこそこ普及してた Java は既に goto が実装されてなかったでしょ。今でも実装されないままだし。

それから Amazon.co.jp で「オブジェクト指向」を検索して「出版年月日が新しい順番」にソートして一番ケツに飛ぶ80年代オブジェクト指向本なんて山程出てくる。

というかあまりオブジェクト指向プログラムってみたことないかも。

なんかこのご時世におすすめないかな?

学生さんかなんかかな。もしオブジェクト指向の利点がまだ理解できてないなら、この話の増田ツリーのどっかにあったと思うけど、

  1. 関数も使わずベタ書き
  2. ベタ書きに絶望関数で手続き指向プログラミング
  3. スパゲッティ絶望オブジェクト指向プログラミングカプセル化モジュール
  4. 同じインターフェイスなのに姿を変えてしまうモジュール絶望インターフェイス概念に目覚める

ぐらいの経緯を辿ればまあオブジェクト指向の基本は掴めると思う。当然ある程度の大きさのプログラム(あんまり行数で言いたくないけど、せめて 1000行以上)を書かないと、各プロセス絶望を知ることはできないと思うけど。必要は発明の母。あとは平行して適当Amazon.co.jp で評価のいい本を読めばいい。

インターフェイス概念については、一般に知られているものだと C のストリームで理解できると思う。

FILE *fp;
fp = fopen("log.txt", "w");
fprintf(fp, "Starting log...\n");
fclose(fp);

これは log.txt ってファイルログを吐いてるのね。でも fprintf() ってのは次のような使い方もできる。

fprintf(stdout, "Starting log...\n");

stdout ってのは標準出力で、そこに fprintf でデータを渡すと(Windows の場合)コマンドプロンプトに文字列を表示する。ファイル標準出力は全く違うものだけど、インターフェイスが同じだから全く同じように出力処理を書けてるでしょ。これを発展させれば、

FILE *stream;

if (log_kind == LOG_FILE) {
  stream == fopen("log.txt", "w");
} else if (log_kind == LOG_STDOUT) {
  stream == stdout;
}

fprintf(stream, "Starting log...\n"); /* この時点で stream の種類を知る必要が無い! */

if (log_kind == LOG_FILE) {
  fclose(stream);
}

と書くことができる。年賀状大学受験合格通知は違うものだけど、初期化(書き方)が違うだけでインターフェイスポストに投函)は同じ、みたいな。それよりよく考えたら C を知ってるとは限らんよな。めんどくさくなってきた。あとはしりません。

2007-04-12

http://anond.hatelabo.jp/20070412015014

retって普通に使わない?

確かにValまではつけないけど。がんがん使うよ。

つか、retでもretValでもいいけど、そういうの使わないでどう戻り値処理してるの?

毎回違う名前つけてるの?

それの方がよほど信じられないのだけど。

ちなみに、

if (funcA(b)) {

     //

}

個人的にはこう書かれる方が100倍ヤダ。

ちなみにそのバグは別に変数の名前のせいじゃないだろ。

forループに使ったiを初期化しないでwhile文に使いまわすぐらいの行為な気がする。

あ、なんか下のエントリー見てきたけど、なんか荒み気味になってるな。

別にプログラムの書き方なんて方言みたいなもんだからな、東北弁がいいだとか北九州弁がいいだとかそういうのもないと思うんだ。

一応書いておくぞ。

荒んだときはしょうがなく泣いておこう。

にゃー

2007-03-28

warning C4267: '初期化中' : 'size_t' から 'unsigned int' に変換しました。データが失われているかもしれません。

うぜー。

9個もあるし。

pragma書くのも癪だし、キャストしまくるのも面倒だし無駄っぽいし、放置するのもウザいし……どうしよう。

2007-03-25

[][][][][][]

ASCII.jp:「納品をなくせば」の倉貫CEOたちが語る新しいSIへの道 (1/2)

めりくるくるりん: 簡単に人月請求の矛盾を指摘する

どっちの契約でショー!「一括請負」vs「準委任」

Rails Hub情報局: 優秀なエンジニア5人は二流の1000人を完全に凌駕する

404 Blog Not Found:プログラマーって本当に労働者なのか?

例えば、「コード1行につき10円」という取り決めがあったとする。

そしてプログラムの中に要素数1000からなる配列

初期化するルーチンが必要だったとする。

この場合

my @a;

$a[0] = 1;

$a[2] = 1;

# ...

$a[999] = 1;

というコードを書けば

1万10円になるが、

my @a;

for (my $i = 0; $i &lt; 0; $i++){

$a[$i] = 1;

}

と書けば一気に

40円に下落し、

my @a = map { 1 } (1..1000);

と書けばたった

10円になってしまう。

下に行けば行くほど優れたコードなのに、収入も減ってしまうのだ。




論理的思考の放棄 - 登 大遊@筑波大学情報学類の SoftEther VPN 日記

システム業界の詐欺的行為2 - 小学校の算数もできない技術者? --- 生島 勘富 : アゴラ - ライブドアブログ

404 Blog Not Found:博士の異常なアルゴリズム、または私は如何にして心配するのを止めて線形探索を愛するようになったか

アルゴリズムとは何か (研究者向けの解説)

見積りの根拠出してくれっていったら、金くれって言われたよ

2007-03-03

http://anond.hatelabo.jp/20070303152644

>だけど、自分が好意をもっていた人の近況とか元気にしているのかとかぐらいは知りたい。

えーーー!!そっかーーー><でも別れて誰も想う人がいなければそうなのかもねーーー?

>わかれた途端「あなたはもう私の頭の中には居ないの」なんて言われたら、立ち直れないほどショックだよね。

これはなんてわたし><?でも優しさのつもりなんだけどな、

訳:「あなたはもう私の頭の中には居ないの」=お互い真っ白にして歩き出しましょうね!

>なんて女性は難しいんだろう。

>死んでいない証拠にやつの目に触れるぐらいの活躍をしてやろうと心に誓う。

なんかでもこういう考え方は素敵だな。わたしもしばらくして別れた人がニュースに出て

(悪さしたわけじゃないよwww)おお!って思った!けどそれ以上もそれ以下の感情もないよ。

自分のことのようにうれしかったの確かだし!がんばってください><

>Nullで初期化された気分。エラーって吐きたくなるよ。

insert into you (heart) values (new love)

http://anond.hatelabo.jp/20070303090328

俺もほぼ一年前につきあってた子がそうで、わかれた途端俺の存在が消された。

人としてこんな扱いをうけたことがなかったので、激しくショックだった。

ツンデレもわかれりゃ只のツンツンツン!

あれは生きている人間に対する仕打ちじゃない。

自分もストーカーをされた経験があるのでつきまとわられることの嫌さは知っては居る。

だけど、自分が好意をもっていた人の近況とか元気にしているのかとかぐらいは知りたい。

そもそもなんでわかれたのかも自分のなかでは釈然としないんだ。

俺だっていつも余裕があるわけじゃない。むきー!ってなられたら、もういいよってなることもあるさ。

「もう、わかれたい」とかいいながら昔し別の機会に泣かれた姿が頭をよぎったんだ。

わかれた途端「あなたはもう私の頭の中には居ないの」なんて言われたら、立ち直れないほどショックだよね。

故人だってたまに偲ぶだろ。

お盆に帰ってきたら塩なげつけられたら死人の心臓も止まるわ。

というか俺は死んじゃいねぇ!

そういえばわかれるときに、

「他に好きな人でもできたの?」と聞いたら、

「他に好きな人ができたのならとっくにわかれてるわよ」とか言われた。

わかれるときには逢ってもくれなかった。

「わかれた人と会うのは怖い。」って。

メール電話で終わりかよ。

怖いって……。怖いのかよ。。

いい子だとは思うんだけどな。

これから出会う人に失礼か・・・。

いままでに出会った人達にも礼を失しないようにしてほしい。

「ずっとわかれたかったの!」とか・・・いわれた。

やばい、罵倒のかずかずがきこえてきた。涙でそう。

俺あまり人のことを好きになったりしないんだ。嫌いになることもあまりない。

だから嫌われるとどうしていいかわからない。

切れてばかりのブリジットジョーンズを思い出す。

なんて女性は難しいんだろう。

死んでいない証拠にやつの目に触れるぐらいの活躍をしてやろうと心に誓う。

でもやっぱりへこむよな。

Nullで初期化された気分。エラーって吐きたくなるよ。

2007-01-18

MTASCFlash Lite 2のSharedObjectを使う

Flash Lite 2.x ActionScript Language Reference > ActionScript classes > SharedObject

http://livedocs.macromedia.com/flashlite/2/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000749.html

Flash Lite 2.x ActionScript リファレンスガイド > ActionScript クラス > SharedObject

http://livedocs.macromedia.com/flashlite/2_jp/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts_wEcute&file=00000749.html

アプリケーションが要求したときに、データをすぐにデバイスから利用できるようにするため、

Flash Lite 2.0 では、リスナーを設定する必要があります。

との事なのでMTASCの↓に

(インストールフォルダ)\std\SharedObject.as

↓の行を追加する

static function addListener(objectName:String, notifyFunction:Function) :Void;

でサンプル

class SharedObjectRei
{
	static function main ()
	{
		var sor : SharedObjectRei = new SharedObjectRei (_root);
	}
	public function SharedObjectRei (mc: MovieClip)
	{
		mc.createTextField ("tf", mc.getNextHighestDepth () , 0, 0, Stage.width, Stage.height);
		mc.tf.text = "SharedObjectRei\r";
		
		SharedObject.addListener ("Prefs", loadCompletePrefs );
		// 共有オブジェクトを作成することができる
		var Prefs : SharedObject = SharedObject.getLocal ("Prefs");
	}
	function loadCompletePrefs (mySO : SharedObject)
	{
		if (0 == mySO.getSize ())
		{
			// サイズが 0 の場合、データ初期化する必要がある
			mySO.data.name = "Sigismund";
			mySO.data.email = "siggy@macromedia.com";
		} 
		else
		{
			// mySO のすべてのデータトレースする
			_root.tf.text+= "Prefs: " + "\r";
			for (var idx in mySO.data)
			{
				_root.tf.text+= " " + idx + ": " + mySO.data [idx] + "\r";
			}
		}
	}
}

コンパイルは↓を参考に

ActionScript 2.0メモ

http://www.saturn.dti.ne.jp/~npaka/flash/as20/index.html

ログイン ユーザー登録
ようこそ ゲスト さん