「初期化」を含む日記 RSS

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

2011-12-12

コンピュータプログラミング概念技法モデル」の目次

第1章 プログラミング概念入門
	1.1 計算器
	1.2 変数
	1.3 関数
	1.4 リスト
	1.5 リストについての関数
	1.6 プログラムの正しさ
	1.7 計算量
	1.8 遅延計算
	1.9 高階プログラミング
	1.10 並列性
	1.11 データフロー
	1.12 明示的状態
	1.13 オブジェクト
	1.14 クラス
	1.15 非決定性と時間
	1.16 原子性
	1.17 ここからどこへ行くのか?
	1.18 練習問題

第1部 一般的計算モデル

第2章 宣言的計算モデル
	2.1 実用プログラミング言語定義
		2.1.1 言語の構文
		2.1.2 言語意味
	2.2 単一代入格納域
		2.2.1 宣言的変数
		2.2.2 値格納域
		2.2.3 値生成
		2.2.4 変数識別子
		2.2.5 識別子を使う値生成
		2.2.6 部分値
		2.2.7 変数の,変数への束縛
		2.2.8 データフロー変数
	2.3 核言語
		2.3.1 構文
		2.3.2 値と型
		2.3.3 基本型
		2.3.4 レコード手続き
		2.3.5 基本操作
	2.4 核言語意味
		2.4.1 基本概念
		2.4.2 抽象マシン
		2.4.3 待機不能な文
		2.4.4 待機可能な文
		2.4.5 基本概念再訪
	2.5 メモリ管理
		2.5.1 末尾呼び出し最適化
		2.5.2 メモリライフサイクル
		2.5.3 ガーベッジコレクション
		2.5.4 ガーベッジコレクションは魔術ではない
		2.5.5 Mozartのガーベッジコレクタ
	2.6 核言語から実用言語へ
		2.6.1 構文上の便宜
		2.6.2 関数(fun文)
		2.6.3 対話的インターフェース(declare文)
	2.7 例外
		2.7.1 動機と基本概念
		2.7.2 例外を持つ宣言的モデル
		2.7.3 親言語の構文
		2.7.4 システム例外
	2.8 進んだ話題
		2.8.1 関数型プログラミング言語
		2.8.2 単一化と内含(entailment)
		2.8.3 動的型付けと静的型付け
	2.9 練習問題

第3章 宣言的プログラミング技法
	3.1 宣言的とはどういうことか?
		3.1.1 宣言的プログラムの分類
		3.1.2 仕様記述言語
		3.1.3 宣言的モデルにおいてコンポーネントを実装すること
	3.2 反復計算
		3.2.1 一般的図式
		3.2.2 数についての反復
		3.2.3 局所的手続きを使うこと
		3.2.4 一般的図式から制御抽象へ
	3.3 再帰計算
		3.3.1 スタックの大きさの増加
		3.3.2 代入ベース抽象マシン
		3.3.3 再帰計算を反復計算に変換すること
	3.4 再帰を用いるプログラミング
		3.4.1 型の記法
		3.4.2 リストについてのプログラミング
		3.4.3 アキュムレータ
		3.4.4 差分リスト
		3.4.5 キュー
		3.4.6 木
		3.4.7 木を描画すること
		3.4.8 構文解析
	3.5 時間効率空間効率
		3.5.1 実行時間
		3.5.2 メモリ使用量
		3.5.3 償却的計算量
		3.5.4 性能についての考察
	3.6 高階プログラミング
		3.6.1 基本操作
		3.6.2 ループ抽象
		3.6.3 ループ言語的支援
		3.6.4 データ駆動技法
		3.6.5 明示的遅延計算
		3.6.6 カリー化
	3.7 抽象データ型
		3.7.1 宣言的スタック
		3.7.2 宣言的辞書
		3.7.3 単語出現頻度アプリケーション
		3.7.4 安全抽象データ型
		3.7.5 安全な型を備えた宣言的モデル
		3.7.6 安全な宣言的辞書
		3.7.7 資格セキュリティ
	3.8 宣言的でない必要物
		3.8.1 ファイルを伴うテキスト入出力
		3.8.2 グラフィカルユーザインタフェースを伴うテキスト入出力
		3.8.3 ファイルとの状態なしデータI/O
	3.9 小規模プログラム設計
		3.9.1 設計方法
		3.9.2 プログラム設計の例
		3.9.3 ソフトウェアコンポーネント
		3.9.4 スタンドアロンプログラムの例
	3.10 練習問題

第4章 宣言的並列性
	4.1 データ駆動並列モデル
		4.1.1 基本概念
		4.1.2 スレッド意味
		4.1.3 実行列
		4.1.4 宣言的並列性とは何か?
	4.2 スレッドプログラミングの基本的技法
		4.2.1 スレッドを生成すること
		4.2.2 スレッドブラウザ
		4.2.3 スレッドを使うデータフロー計算
		4.2.4 スレッドスケジューリング
		4.2.5 協調的並列性と競合的並列性
		4.2.6 スレッド操作
	4.3 ストリーム
		4.3.1 基本的生産者消費者
		4.3.2 変換器とパイプライン
		4.3.3 資源管理し,処理能力改善すること
		4.3.4 ストリームオブジェクト
		4.3.5 ディジタル論理シミュレーション
	4.4 宣言的並列モデルを直接使うこと
		4.4.1 順序決定並列性
		4.4.2 コルーチン
		4.4.3 並列的合成
	4.5 遅延実行
		4.5.1 要求駆動並列モデル
		4.5.2 宣言的計算モデル
		4.5.3 遅延ストリーム
		4.5.4 有界バッファ
		4.5.5 ファイルを遅延的に読み込むこと
		4.5.6 ハミング問題
		4.5.7 遅延リスト操作
		4.5.8 永続的キューアルゴリズム設計
		4.5.9 リスト内包表記
	4.6 甘いリアルタイムプログラミング
		4.6.1 基本操作
		4.6.2 ティッキング(ticking)
	4.7 Haskell言語
		4.7.1 計算モデル
		4.7.2 遅延計算
		4.7.3 カリー化
		4.7.4 多態型
		4.7.5 型クラス
	4.8 宣言的プログラム限界拡張
		4.8.1 効率性
		4.8.2 モジュラ性
		4.8.3 非決定性
		4.8.4 現実世界
		4.8.5 正しいモデルを選ぶこと
		4.8.6 拡張されたモデル
		4.8.7 異なるモデルを一緒に使うこと
	4.9 進んだ話題
		4.9.1 例外を持つ宣言的並列モデル
		4.9.2 さらに遅延実行について
		4.9.3 通信チャンネルとしてのデータフロー変数
		4.9.4 さらに同期について
		4.9.5 データフロー変数有用性
	4.10 歴史に関する注記
	4.11 練習問題

第5章 メッセージ伝達並列性
	5.1 メッセージ伝達並列モデル
		5.1.1 ポート
		5.1.2 ポート意味
	5.2 ポートオブジェクト
		5.2.1 NewPortObject抽象
		5.2.2 例
		5.2.3 ポートオブジェクトに関する議論
	5.3 簡単なメッセージプロトコル
		5.3.1 RMI(遠隔メソッド起動)
		5.3.2 非同期RMI
		5.3.3 コールバックのあるRMI(スレッド使用)
		5.3.4 コールバックのあるRMI(継続のためのレコード使用)
		5.3.5 コールバックのあるRMI(継続のための手続き使用)
		5.3.6 エラー報告
		5.3.7 コールバックのある非同期RMI
		5.3.8 二重コールバック
	5.4 並列性のためのプログラム設計
		5.4.1 並列コンポーネントを使うプログラミング
		5.4.2 設計方法
		5.4.3 並列性パターンとしての機能的構成要素
	5.5 リフト制御システム
		5.5.1 状態遷移図
		5.5.2 実装
		5.5.3 リフト制御システムの改良
	5.6 メソッド伝達モデルを直接使用すること
		5.6.1 1つのスレッドを共有する複数のポートオブジェクト
		5.6.2 ポートを使う並列キュー
		5.6.3 終点検出を行うスレッド抽象
		5.6.4 直列依存関係の除去
	5.7 Erlang言語
		5.7.1 計算モデル
		5.7.2 Erlangプログラミング入門
		5.7.3 receive操作
	5.8 進んだ話題
		5.8.1 非決定性並列モデル
	5.9 練習問題

第6章 明示的状態
	6.1 状態とは何か?
		6.1.1 暗黙的(宣言的)状態
		6.1.2 明示的状態
	6.2 状態とシステム構築
		6.2.1 システムの性質
		6.2.2 コンポーネントベースプログラミング
		6.2.3 オブジェクト指向プログラミング
	6.3 明示的状態を持つ宣言的モデル
		6.3.1 セル
		6.3.2 セル意味
		6.3.3 宣言的プログラミングとの関係
		6.3.4 共有と同等
	6.4 データ抽象
		6.4.1 データ抽象組織する8つの方法
		6.4.2 スタックの変種
		6.4.3 多態性
		6.4.4 引数受け渡し
		6.4.5 取り消し可能資格
	6.5 状態ありコレクション
		6.5.1 インデックス付きコレクション
		6.5.2 インデックス付きコレクションを選ぶこと
		6.5.3 その他のコレクション
	6.6 状態に関する推論
		6.6.1 不変表明
		6.6.2 例
		6.6.3 表明
		6.6.4 証明規則
		6.6.5 正常終了
	6.7 大規模プログラム設計
		6.7.1 設計方法
		6.7.2 階層システム構造
		6.7.3 保守性
		6.7.4 将来の発展
		6.7.5 さらに深く知るために
	6.8 ケーススタディ
		6.8.1 遷移的閉包
		6.8.2 単語出現頻度(状態あり辞書を使用する)
		6.8.3 乱数を生成すること
		6.8.4 口コミシミュレーション
	6.9 進んだ話題
		6.9.1 状態ありプログラミング限界
		6.9.2 メモリ管理と外部参照
	6.10 練習問題

第7章 オブジェクト指向プログラミング
	7.1 継承
	7.2 完全なデータ抽象としてのクラス
		7.2.1 例
		7.2.2 この例の意味
		7.2.3 クラスオブジェクト定義すること
		7.2.4 クラスメンバ
		7.2.5 属性初期化すること
		7.2.6 第1級メッセージ
		7.2.7 第1級の属性
		7.2.8 プログラミング技法
	7.3 漸増的データ抽象としてのクラス
		7.3.1 継承グラフ
		7.3.2 メソッドアクセス制御(静的束縛と動的束縛)
		7.3.3 カプセル化制御
		7.3.4 転嫁委任
		7.3.5 内省
	7.4 継承を使うプログラミング
		7.4.1 継承の正しい使い方
		7.4.2 型に従って階層を構成すること
		7.4.3 汎用クラス
		7.4.4 多重継承
		7.4.5 多重継承に関するおおざっぱな指針
		7.4.6 クラス図の目的
		7.4.7 デザインパターン
	7.5 他の計算モデルとの関係
		7.5.1 オブジェクトベースプログラミングコンポーネントベースプログラミング
		7.5.2 高階プログラミング
		7.5.3 関数分解と型分解
		7.5.4 すべてをオブジェクトにすべきか?
	7.6 オブジェクトシステムを実装すること
		7.6.1 抽象図
		7.6.2 クラスを実装すること
		7.6.3 オブジェクトの実装
		7.6.4 継承の実装
	7.7 Java言語(直列部分)
		7.7.1 計算モデル
		7.7.2 Javaプログラミング入門
	7.8 能動オブジェクト
		7.8.1 例
		7.8.2 NewActive抽象
		7.8.3 フラウィウス・ヨセフスの問題
		7.8.4 その他の能動オブジェクト抽象
		7.8.5 能動オブジェクトを使うイベントマネージャ
	7.9 練習問題

第8章 状態共有並列性
	8.1 状態共有並列モデル
	8.2 並列性を持つプログラミング
		8.2.1 さまざまな手法概観
		8.2.2 状態共有並列モデルを直接使うこと
		8.2.3 原子アクションを使うプログラミング
		8.2.4 さらに読むべき本
	8.3 ロック
		8.3.1 状態あり並列データ抽象を構築すること
		8.3.2 タプル空間(Linda)
		8.3.3 ロックを実装すること
	8.4 モニタ
		8.4.1 定義
		8.4.2 有界バッファ
		8.4.3 モニタを使うプログラミング
		8.4.4 モニタを実装すること
		8.4.5 モニタの別の意味
	8.5 トランザクション
		8.5.1 並列性制御
		8.5.2 簡易トランザクションマネージャ
		8.5.3 セルについてのトランザクション
		8.5.4 セルについてのトランザクションを実装すること
		8.5.5 トランザクションについてさらに
	8.6 Java言語(並列部分)
		8.6.1 ロック
		8.6.2 モニタ
	8.7 練習問題

第9章 関係プログラミング
	9.1 関係計算モデル
		9.1.1 choice文とfail文
		9.1.2 探索木
		9.1.3 カプセル化された
		9.1.4 Solve関数
	9.2 別の例
		9.2.1 数値例
		9.2.2 パズルとnクイーン問題
	9.3 論理プログラミングとの関係
		9.3.1 論理論理プログラミング
		9.3.2 操作意味論理意味
		9.3.3 非決定性論理プログラミング
		9.3.4 純粋Prologとの関係
		9.3.5 他のモデルにおける論理プログラミング
	9.4 自然言語構文解析
		9.4.1 簡単な文法
		9.4.2 この文法に従う構文解析
		9.4.3 構文木を生成すること
		9.4.4 限定記号を生成すること
		9.4.5 パーサを走らせること
		9.4.6 パーサを「逆向きに(backward)」走らせること
		9.4.7 単一化文法
	9.5 文法インタプリタ
		9.5.1 簡単な文法
		9.5.2 文法のコード化
		9.5.3 文法インタプリタを走らせること
		9.5.4 文法インタプリタを実装すること
	9.6 データベース
		9.6.1 関係を定義すること
		9.6.2 関係を使って計算すること
		9.6.3 関係を実装すること
	9.7 Prolog言語
		9.7.1 計算モデル
		9.7.2 Prologプログラミング入門
		9.7.3 Prologプログラムを関係プログラム翻訳すること
	9.8 練習問題

第2部 特殊化された計算モデル10グラフィカルユーザインタフェースプログラミング
	10.1 宣言的/手続き的方法
	10.2 宣言的/手続き的方法を使うこと
		10.2.1 基本的ユーザインタフェースの要素
		10.2.2 GUIを構築すること
		10.2.3 宣言的座標
		10.2.4 リサイズ時の宣言的振る舞い
		10.2.5 ウィジェットの動的振る舞い
	10.3 対話的学習ツールPrototyper
	10.4 ケーススタディ
		10.4.1 簡単なプログレモニタ
		10.4.2 簡単なカレンダウィジェット
		10.4.3 ユーザインタフェースの動的生成
		10.4.4 状況順応時計
	10.5 GUIツールを実装すること
	10.6 練習問題

第11章 分散プログラミング
	11.1 分散システムの分類
	11.2 分散モデル
	11.3 宣言的データの分散
		11.3.1 オープン分散と大域的ネーミング
		11.3.2 宣言的データを共有すること
		11.3.3 チケット配布
		11.3.4 ストリーム通信
	11.4 状態の分散
		11.4.1 単純状態共有
		11.4.2 分散字句的スコープ
	11.5 ネットワークアウェアネス
	11.6 共通分散プログラミングパターン
		11.6.1 静的オブジェクトモバイルオブジェクト
		11.6.2 非同期的オブジェクトデータフロー
		11.6.3 サーバ
		11.6.4 クローズド分散
	11.7 分散プロトコル
		11.7.1 言語実体
		11.7.2 モバイル状態プロトコル
		11.7.3 分散束縛プロトコル
		11.7.4 メモリ管理
	11.8 部分的失敗
		11.8.1 失敗モデル
		11.8.2 失敗処理の簡単な場合
		11.8.3 回復可能サーバ
		11.8.4 アクティブフォールトトレランス
	11.9 セキュリティ
	11.10 アプリケーションを構築すること
		11.10.1 まずは集中,後に分散
		11.10.2 部分的失敗に対処すること
		11.10.3 分散コンポーネント
	11.11 練習問題

第12章 制約プログラミング
	12.1 伝播・探索法
		12.1.1 基本的考え方
		12.1.2 部分情報を使って計算すること
		12.1.3 例
		12.1.4 この例を実行すること
		12.1.5 まとめ
	12.2 プログラミング技法
		12.2.1 覆面算
		12.2.2 回文積再訪
	12.3 制約ベース計算モデル
		12.3.1 基本的制約と伝播子
		12.3.2 計算空間の探索をプログラムすること
	12.4 計算空間定義し,使うこと
		12.4.1 深さ優先探索エンジン
		12.4.2 検索エンジンの実行例
		12.4.3 計算空間の生成
		12.4.4 空間の実行
		12.4.5 制約の登録
		12.4.6 並列的伝播
		12.4.7 分配(探索準備)
		12.4.8 空間の状態
		12.4.9 空間クローン
		12.4.10 選択肢を先に任せること
		12.4.11 空間マージすること
		12.4.12 空間失敗
		12.4.13 空間計算を注入すること
	12.5 関係計算モデルを実装すること
		12.5.1 choice文
		12.5.2 Solve関数
	12.6 練習問題

第3部 意味

第13章 言語意味
	13.1 一般的計算モデル
		13.1.1 格納域
		13.1.2 単一代入(制約)格納域
		13.1.3 抽象構文
		13.1.4 構造的規則
		13.1.5 直列実行と並列実行
		13.1.6 抽象マシン意味との比較
		13.1.7 変数導入
		13.1.8 同等性の強制(tell)
		13.1.9 条件文(ask)
		13.1.10 名前
		13.1.11 手続抽象
		13.1.12 明示的状態
		13.1.13 by-need同期
		13.1.14 読み出し専用変数
		13.1.15 例外処理
		13.1.16 失敗値
		13.1.17 変数置き換え
	13.2 宣言的並列性
		13.2.1 部分停止と全体停止
		13.2.2 論理同値
		13.2.3 宣言的並列性の形式的定義
		13.2.4 合流性
	13.3 8つの計算モデル
	13.4 よくある抽象意味
	13.5 歴史に関する注記
	13.6 練習問題

2011-08-17

http://anond.hatelabo.jp/20110816191339

■異性の好みを探る簡単な方法

これは私の長年の統計学経験論なのだが(つまりいい加減てことですね)

異性の好みや接し方を簡単に推測する方法がある。

それは、

「どんなゲーム機が好き?」

って聞いてみることだ。


好きなゲーム機は?と聞いて「任天堂機」(但し64DDバーチャルボーイを除く)を挙げる人は、かなり保守派だ。

堅実派、浮気しない人、安定した職業についた人、配水管の技術者を好む傾向がある。

また平均的な異性を好む。必ずしも美人(イケメン)である必要はない。逆に派手な異性は苦手。


セガ機」あるいは「ソニー機」「ピピンなんとかかんとか」「パナソニックのやつ」等をメーカー名や国名で挙げる人は、

基本的にブランド志向なので、他人から見て自分恋人がどのように見えるかをとても気にする。

男性なら高収入医師弁護士などの職業が優先事項。ルックスは良いに越したことはないがそれよりも財力と権力(役職とか)

女性ならモデル体型で背丈があり、彫りの深い顔立ちが有利。


PC」「xbox360」を挙げる人は、

女性なら体育会系のがっしりした男性を好む。自分より背の低い男性は基本NGマッチョOK

男性ならバストの大きさをとても気にする。基本的に巨乳好きというか貧乳は許せないタイプである


セガサターンの黒」とか「四角ボタンの頃のファミコン」みたいな一般人はあまり知らないような特定の固有の機種名を挙げる人。こういう人はあまり特定の傾向がなく、好きな異性タイプピンポイントである。たとえば女優のAは大好きだが(顔の似ている)Bは生理的ダメ、とか言うことがよくあるのでその微妙な違いが他人にはよくわからない場合もある。ただし好きなものはとことん好き、という人である


また、特に男性場合ゲーム機の扱い方と女性の扱い方はとても良く似ている。


新品にこだわる人、これは処女にこだわる。中古ばかり乗っている人はその点はおおらかである

ひとつゲーム機を長く長く使う人。これはパートナーの異性をとても大事にする。基本浮気はしない。女性場合は重すぎることも。

頻繁にあれこれとゲーム機を買い換える人。こういう人は異性も簡単に乗り換えるし浮気が多いので要注意である

メモリーカード初期化ばかりしてる人や、ファームウェアに改造をたくさんする人は、ある意味独占欲が強いのだろう。暴力傾向があるのでこれも要注意。パートナーをとても大事に(誰にもちょっかいを出させない、縛る)するが、ひとたび浮気でも疑われると暴力沙汰になりたいへんな思いをする。


補足2

ゲーム機に興味がない、ゲーム機なんて遊べれば何でもいい。という人は、恋愛においても受け身。基本的に自分から告白しない。逆に押し続ければ落ちるタイプである。異性にこだわりがない代わりに、自分を愛してくれる人、が好き。基本的に自分が一番大事なわりに自分に自信がないのだと思う。


補足3

変にハデでなくて、オタク臭くなくて、コントローラーが持ちやすくて、空冷がそれなりにちゃんと効いて、音楽動画もそこそこ楽しめるゲーム機がいい。

という人は、基本的に相手を道具としてしか見ていない。ちゃんと稼いで浮気もせず家に帰ってきてくれればそれでいい、亭主元気で留守がいい、というタイプである。こういう人はスペックで相手を見るので、決して高スペックは望まないが堅実でしっかりした職業の人、それもできれば家柄がいいほうがいい、というタイプ。自身も庶民であるか、逆に超お嬢様で世間知らずな人かのどちらかである

2011-07-30

成り行きで、あるゲーム機をタダ同然で手に入れた。勿論中古だ。

最近ゲーム機ネットに繋ぐためにアカウントを作る必要があるようで、Twitterで使ってる名前を入れようとしたら既に他人に使われているようで無理だった。

そのことをTwitterでぼやいたら、普段殆ど接触のないフォロワーの一人が「実はあなたのためにとっておいたんですよ!メール下さい!パスワードと一緒に送りますから!」といきなり絡んできた。

すんげー怖い。何が怖いってマジ怖い。既に適当名前タグ登録したがTwitterで呟いてしまったので慌てて本体初期化して全く違う名前に変えた。ほんと怖い。

2011-07-06

最近よく使う英単語勉強ツールまとめ

パソコンの前でPSSいわゆるゴッド)をやる時間を確保しにくくなった自分のやり方メモ

勉強の場は電車の中やらその辺。下準備はPC上で行う。

■Super英単語30000を中心にしたもの

・Super英単語30000(iPoneアプリ)

の一日分のテストで瞬間的に意味がでてこなかったものtxtに書き出し、ある程度量がたまったら

自分場合10日分ぐらい)

・apsse(PSS問題作成補助ソフト)

に覚えられない単語を突っ込んで問題ファイル(.csv)を生成。

単語の羅列だけいれても、和訳までちゃんとついてcsvファイルになる。

・i暗記(iPoneアプリ

インポートし、好きなモードで覚える。

ここは問題の共有ができるけれど、apsseで作成した問題を再配布するのは禁止されてるから注意。

再度Super英単語30000でテスト

あとは忘却曲線理論とか思い出しつつ適宜復習。

復習時は最初に作ったi暗記用の「初期の自分がわからなかった単語カード」が結構役に立つ。

Super英単語のいいところは、クリアした章でもすぐに初期化して最初からテストできること。

自分殆どその機能しか使っていない。


■ずるっこ!を中心にしたもの

・ずるっこ!http://zurukko.jp/

に登録されている単語→覚えているものと仮定

・apsse

の無視リストにずるっこ!から引っ張ってきた暗記済み単語リストをいれる。

そのままのコピペだと行頭の数字邪魔から

http://www.vector.co.jp/soft/win95/util/se270425.html

この辺のソフトを使って整形してから追加。

あとは適当に覚えたい単語リストをapsseにつっこめば、ずるっこ!に登録された単語は除外された問題ファイルができる。

そのファイルとi暗記にいれてぽちぽちやる。

ずるっこ!にあまり簡単な単語が登録されていなくて、レベルの低い単語でも問題が生成されて煩わしい場合

http://d.hatena.ne.jp/softether/20110129

http://d.hatena.ne.jp/softether/20110204

開発者が公開してくれたこのリストが非常に役立つ。クリックしまくる。

単語リストとしては

読書猿さんがまとめてくれた記事が役立つ。

http://readingmonkey.blog45.fc2.com/blog-entry-413.html

他、多少古いけど

北海道大学英語語彙表

http://icarus.imc.hokudai.ac.jp/jugyo/huvl/

なんかは大学教授からの「願い」を感じるリストで眺めていて非常に感じ入るものがある。

★(単語リスト)-(ずるっこ登録リスト)=覚える単語リスト

覚える単語リストが「覚えた単語リスト」になったら、もちろんapsseの無視単語リストに追加。

数回繰り返すと、ずるっこ!との連携がしんどくなってくるかも?


i暗記じゃ音声がでないって?この方法じゃ発音記号もでないって?

そうなんだよ。

リスニング教材には好きなpodcastや市販の教材をあてるべきだと思う。

でも、隙間時間ボキャビルやってみたいって人にはちょっとおすすめしてみたい。いろいろ応用効きます

なんかいろいろ便利になってるなーと実感した今日この頃

今i暗記セール中で115円。Super英単語30000も通常価格で115円。

他にあげたツールは無料だし、この機会に200円投資して英単語に取り組むのも悪くないんじゃないですかね。

2011-06-09

.NET Framework 3.5 / 4 野暮ったいインストール過程

俺が知らないだけなのかもしれないが

.Net Framework 3.5や4をインストールしようとすると

必ずネットから最新版をダウンロードor最新版の確認をしようとする。



で、そのダウンロードサイト転送速度がやたら遅い。

もしくはとても不安定。経験上、たまたまはなくていつもそう。

まるでマイクロソフト.NET Frameworkを使ってほしくないみたい。

こいつ1つセットアップするために、もう30分待っている。

経営者からしたらM$は時間給泥棒だ。

ちなみに

俺は残業代休出代も出ない(しか管理職でもない)から

仕事も進まんし、段どりがくずれて萎えさせられるし、個人的にも腹立たしいわ。



2.0では、Fullインストール版があって

インストールに必要なファイルは既にすべて含まれていて

わりとすぐにインストール完了できた。



今だに2MB/73MB。

転送速度は0kB/秒です」「500kB/秒です」「接続初期化しています」を繰り返す。

なので、2.0のFull版に切り替えることにする。

M$のどの部門が担当しているのかね、あほくさ

2011-03-21

http://anond.hatelabo.jp/20110320223445

ペロペロ

1. htmlのはき出しがあるやつは?>を書いたほうがいいよ。それ以外は最近はかないのがはやりだねさらに昔はevalとかで書いてた

2. configこれはwwwやpublic_html以下にしかconfigを配置できないクソサーバーがあるので、phpにしておいたほうが安全。なぜなら丸見えにしてあれこれパスをさらけ出すバカがいるかもしれないからだ。オープンソースなら特に。

3. コメント挨拶だ。必要以上に挨拶を繰り返す必要もないし、それ以上でも以下でもない。

4. eclipseのせいと、phpとかが出始めたころのコーディング規約がスペースにするように求めた。{を改行してから書くか、続けて書くかのこれは宗教戦争だ。だが正直スペースは気に食わない。LLのくせに何バイトつかってるのだとおもう。あとスペース2文字インデントのやつは旅立て!

5. phpの0と""の違いは緩すぎる。そういう意味ナンバーの取り扱いにだけは気を配るべきだ。あとはtmpでもbufでもretでもなんでもいい。

6. nullはつっこむな、nullで初期化はすんな。初期化されてないからnullなんだ。issetは有効につかえ。とくに$_系の変数

7. 本当はerrorprocをかけといいたいがLLにそこまで望んでもしゃーない。エラーを投げると鯖ログにまで場合によっては落ちたりしてやっかいからfalseを返せばいいというものでもないが、trueで初期化するやつは滅びていいと思う。あとarrayを返すようなfunctionの場合phpのなんだっけisarray?だっけ?がクソすぎて萎え

8. つかダブルクオートのなかに$を書くコードは滅びていい。コンストはすべて大文字でという昔ながらのルールだけ守ってくれればいい

9. 出力系のラップ関数ぐらいつくっておこうぜ。あと、var_dumpとかのほうが見やすい。あと、get_defined_varsとかをラップしておくと便利

10. 三項演算子はつかうな。ifの{}を略すな。可読性がおちるのとしんたっくすで原因の特定がめんどくさい。

11. phpの==ほど信用ならないものはな

12. ++iなんていうコードを書くな。あと、roopの条件文で計算すんな

13. むしろこういうのは文字列の連結以外で使うようなスチュエーションをつくっちゃだめ

14. あら上で言っちゃったよ。ここまでやるんだったらlogファイルに吐き出すところまで拡張しとけば?

15. んー。エラーメッセージを定数化するとき外国版をつくるあてまである時だけだな

16. これも上でいってしまったな。あとリロードされてもいいように初期化クリアしておくといいぞ。

17. ああそうだな、関数が1スクロールに収まらないときは大抵正規化に失敗してる。つくりをみなおせ

18. えー、こんな風に書くのはどうかしている。public二つチェインで呼び出すぐらいなら、内部でprivateを呼び出すか、継承させてparentにしておくべきか、それともシステムとして共通のstaticで呼び出せるかにしてくほうがいいのでは?$this->setThis()でいいじゃないか。なぜpublic functionをそういくつも定義する必要がある? 外部から入り口出口は絞れ

19. グローバルなラッピング関数は最低限にとどめるべきで他は機能ごとにクラスつくってメソッド化しとけ。p(var)じゃねぇよDEBUG::p(var)とかにしとけってことだ

20. 眠くなったからねる。つまりはそんなもんだってことだ。気に病むな。満足してもらえるもんをしっかりつくればいいだけだ

2011-03-20

より良いPHPerにならないための20Tips

http://1-byte.jp/2011/03/20/20_tips_you_need_to_learn_to_become_a_better_php_programmer/

良いPHPerだって?そんなものは丸めゴミ箱にでも捨ててしまった方が資源の再利用になる分いくらかマシだ。

つまり俺たちがしなくちゃならないことは「より良いPHPerにならないため」に何ができるかってことなのさ。

それじゃ、始めよう。

1. ?>を使うな

?>なんて使っちゃいけない。そう俺たちはBAD PHPer。

無駄ホワイトスペースの出力に悩まされるくらいなら対称性なんて丸めゴミ箱にでも捨てた方がまだマシだ。非対称性こそが賛美。

2. 設定ファイルPHPで書くな

require_once("config.php");

未だにこんなことやってるやつがいるのかいベイベー。絶対にダメだ。この一行を見たら俺は悶絶する。

ダメだ、早く何とかしないと。

大抵このconfig.phpの中身はこうなっている。見て絶望だ。

$hoge_path = '';
if (!LOCAL) {
    define('FOO_FLAG', 1);
    if (HONBAN) {
        define('HOGE_FLAG', 1);
    }
    else if (TEST) {
        define('HOGE_FLAG', 2);
    }
}
else {
    $hoge_path = '/local';
    define('FOO_FLAG', 2);
    define('HOGE_FLAG', 3);
}

define('HOGE_URL', $hoge_path.'/hoge/');

こういうのが延々と続くわけだ。もういやだ。もう見たくない。

本番環境テスト環境でどういう値の違いがあるのか、ローカル環境だとどうなるのか、まったく把握できる気がしない。

なまじPHPな設定ファイルのせいで処理をついつい書いてしまう。そしてどんどん複雑になってしまう。

やはり設定データは基本的にYAML等のデータしか定義できない形式のもので用意すべきだ。そして環境ごとに設定ファイルを分けるべきである

そうすることで何にどういう違いがあるのかすぐにわかるし、diffすれば一度にすべて把握することができる。

# 本番環境設定ファイル
foo_flag: 1
hoge_flag: 1
hoge_url: '/hoge/'
# テスト環境設定ファイル
foo_flag: 1
hoge_flag: 2
hoge_url: '/hoge/'
# ローカル環境設定ファイル
foo_flag: 2
hoge_flag: 3
hoge_url: '/local/hoge/'

3. コメントを信用するな

そう、あなたはこんな状況に遭遇したことがあるんじゃ?

// ここで後の処理のためにhogeメソッドを呼び出しておく
$q->foo();

// $a['foo']はここに来る時点で真のはず
// 2010-03-10 判定がおかしいので修正
// 2010-06-21 やっぱり値が入ってる方が正しい
if ( !isset($hoge[0]) ) {
}

コメント保守されない。そう、それは真実。こんなコメント発見したら即効削除しよう。コメントは基本信じるな。

俺たちにちょっとしたヒントと大きな損害を与えてくれる、それがコメントの役割なのだ。

4. タブとうまく付き合うしかない

わかる。いいたいはとてもわかる。俺たちはしばしばインデントにスペースを使うはずだ。一方でIDEのしっかりした言語ではタブも使うことがある。しかし悪いことに、両者を混同しているプログラマも一定数いるのだ。

タブを画面上で認識しにくいエディタが世の中には存在する(何とは言わないが)

そして画面上で認識しにくいことを理由にタブを気にしないプログラマがいる。

この二つの条件が重なると、タブとスペースの交じり合ったインデントが完成する。もうぐちゃぐちゃだ。これは永遠に続く戦いだ。

私たちが勝利を掴むためにできることなどせいぜい、常にスペースしか使わない。タブを見つけたらその都度スペースに変換する。そういった地道な活動が明日へとつながるのだ。

5. 変数名に時間をかけるな

われわれがプログラムをするとき、何に一番時間がかかってるか。実は変数の命名なのである。ここで拘り過ぎて時間をかけ過ぎては何も進まない。

御託はイイからさっさと書け、だ。しかしとはいっても変数名は重要。日頃からどういうときにどんな名前を使うかを決めておくといい。

そして変数名に型はまったく必要ない。型宣言のないPHPにおいて、型の変数名をつけること自体ナンセンスだ。

コンパイラ様に保証されてない状態での

$iNumber = 'aaa';

になんの意味もない。コメントを信じるなでも言ったが、これはプログラマを混乱させるだけの害悪なものだ。

6. 変数初期化場所

変数を使う前に初期化するのは、警告を出さないという意味でも良い癖だ。しかし具体的にどこでやるかが問題だ。

$foo = null;
$foo = $q->foo();

こんな初期化意味はない。よくあるのはやはり、if文で値を振り分けるケースだろう

$foo = null;
if ( $hoge ) {
    $foo = 1;
}
else if ( $bar ) {
    $foo = 2;
}

このとき初期化はとても有効だ。もしnullの初期化を忘れたまま$fooを使うと警告が出るが、ちゃんと初期化してるので出ない。基本中の基本だ。

7. 不正なら常に死ね

function getStatus() {
    $bReturn = false;
    if ($i == 2) $bReturn = true;
    return $bReturn;
}

(中略)

もし、何かしらの理由で、あなたの書いたif文が間違っていたら?

この書き方をしていれば、間違った値に対して、常にfalseが返る。

私たちが、PHPでsensitiveなデータを取り扱うなら、正しいデータ入力されるまでは、動かないコードを書くべきだ。

trueとfalseの条件がいまいち明確ではないが、本当に動かないコードを書けというのであれば以下のようにすべきだ

function getStatus() {
    $bReturn = false;
    if ($i == 2) $bReturn = true;
    else if ($i == 1) $bReturn = false;
    else throw new Exception("bad status! $i");
    return $bReturn;
}

中途半端にfalseを返して生存させる必要性はまったくない。今すぐ死ね

8. 連想配列キーアクセスする場合

単なる配列に対して数値をクオートで囲う必要はない。

連想配列キーを指定する場合だけ定数と間違わないようにクオートで囲まなければならない。そして逆に定数を使いたい場合はクオートで囲ってはいけない。

更に後世のプログラマ処理を見たときに、定数が使いたかったのか、文字列が使いたかったのかを明確にした場合はconstantを使うと良い。

// 定数のFOOを使うよということが明確になる
print $a[constant('FOO')];

9. echoよりもprintfを使え

もし、文字列変数の値と一緒に出力するときPHPではコンマの代わりにprintfを使うことが使える。

なぜ?コンマを使うよりも可読性がグッとあがるから

printf( “Hello, my name is %s“, $sName);

以下の代わりに上記のコードを使う。

echoHello, my name is “, $sName;

出力すべき変数が増えれば増えるほど、有効になっていく。とにかく迷ったならば、printfを使え、だ。

10. 三項演算子は一回まで

三項演算子はとても有効だ。しか優先順位に難があるせいで三項演算子ネストしようとすると以下のようなコードになってしま

$n = (($i == 1) ? 2 : (($i == 2) ? 3 :$i));

括弧だらけで読みにくいったらありゃしない。三項演算子を使うなら一回まで。約束守れないやつは丸めゴミ箱にでも捨てちまえ。

11. 真偽値のチェックは生でいけ

if ( $flag ) {
}

仕様をちゃんと把握しているなら真偽値のチェックなどこれで十分。

もし事前にbool型だというのが確定してるのなら「$flag === true」を使えばいい。

12. ++と--の演算子を見極めろ

インクリメント、デクリメント演算子は前に付くか後ろに付くかで意味が変わるので慣れるまでは非常にややこしい

けがからなくなるくらいなら初めから使わないほうが良い。見極められないなら使うな。それがPHPerなのだ。

13. 代入演算子を使え

文句なしだ。これは文句がない。

他にも色々あるので覚えておこう

$a %=  1;
$a &=  1;
$a |=  1;
$a ^=  1;
$a <<= 1;
$a >>= 1;

14. 変数dump関数はより便利に

てっとり早く画面に表示する際にpreはよく使うが、デザインの関係上画面の文字が見えないときがある。

なのでdivを使って以下のようにしとくと便利だろう。

function p($var) {
    echo "<div align='left' style='background-color:white;color:black;'><pre>";
    print_r($var);
    echo "</pre></div>";
}

15. 定数から手を洗え

君らが通常作るアプリケーションなんぞに、定数なんぞ必要ない。いいか、もう一度言う、お前ら程度のもんが、定数使おう何ぞ、おこがましいわ!

大丈夫。なんでもかんでも定数にする必要はない。結局設定ファイルに定数をずらずら作りまくってわけがからなくなってるパターンが多い。

貴様たいなもんに、定数は制御できん。いいか設定ファイルYAML等のデータで持つようにし、その連想配列データ構造を一つ持ってるだけで定数の変わりになる。

このメリットに比べれば、定数だと書き換えられなくて良いという利点などこの歯のカスほどのものだ。そんなものは丸めゴミ箱へ捨ててしまうといい。

認識を改めろ。俺たちはより良いPHPerにならないために努力している。

16. $_GETと$_POSTを生で使うな

できれば何かしら簡単なクラスでもいいのでラップしろ。

class Request {
    private $parameters;
    private $method;
    function __construct () {
        $this->method = $_SERVER['REQUEST_METHOD'];
        if ( strtoupper($this->method) === 'POST' ) {
            $this->parameters = $_POST;
        }
        else {
            $this->parameters = $_GET;
        }
    }
    function param ($key) {
        return isset($this->parameters[$key]) ? $this->parameters[$key] : null;
    }
}

これだけでもいい。たったこれだけでもとても便利だ。ここから拡張してGETやPOSTを明示的に取るメソッドとかも作ってみるといい。自分の手を動かすのだ!

17. 関数だのオブジェクトだのの問題ではな

例が良くない。こんなのは引数20個ある関数からset20回呼ぶオブジェクトに変わっただけではないか

そもそもこの20個の引数はなんなのか。何かのデータ構造なんであれば連想配列にして引数一つとして渡すべきだし、それぞれまったく異なる用途の変数なのであればWindowsプログラミングじゃあるまいし20個も引数取る時点設計が間違えている。

何がいいたいか。別に関数でもオブジェクトでもどっちでもいいということだ。

そんなことで悩んでる暇があったら設計を見直せ。

18. メソッドチェインを愛用せよ

スキあらば自分自身を返せ。スキあらばオブジェクトを返せ。配列はArrayObjectのARRAY_AS_PROPSで返せ。

ひたすらメソッドチェイン。来る日も来る日もメソッドチェイン。とにかくメソッドチェインを使い続けろ。そこに未来はある。

19. コードの汎用化は慎重に

どんなコードも繰り返すな。もし、少しでも同じコードを書いていたなら、それは関数に置き換えてしまえ。

・・・と、いうのはやめなさい。

一見同じように見えた処理でも前後の流れでまったく違うものということが往々にしてある。

まとめ方にも問題があるケースもある。何でもかんでも関数化すると、関数が膨大に増えていく。君は見たことがあるだろうか。common.phpやfunction.phpの恐ろしさを。

かに細かく関数化はされているが、適切に関数化していないのである。結合度が非常に高い。なんでもかんでも盲目的にまとめれば良いという話ではないのだ!

20. 結合度は適切に減らし、適切に結合せよ

あまりに極度に意識しすぎると、プログラムそのものができなくなる。そういう状態に陥る。

気を抜いて。そう気を抜いて。所詮あなたコードなんてすぐに消えてなくなるよ。きっともっと偉い人が作り直すよ。だからまずは思うが侭にやるといい。

結合度を減らすというのは非常に難しい何度何度も失敗し続けて、ようやくここは分けた方が良かったんだなと気付く。次に活かそうと心に決める。そしてまた同じ過ちを繰り返していくわけだ。

まずは実装することだ。これが一番の早道だ。まずはがっつり結合した関数をあえて作るといい。何も考えずに作ろう。

そしてその後に、一部分使いましたいとおもうことがあるはずだ。その時に関数に切り出そう。それを繰り返すといい。そのうち初めから分けた方が良いと気付く。

何事も経験が必要である経験を積まないプログラマ丸めゴミ箱に捨ててしまえ。

さて、先の例で言うならば、私ならadd_result_outputという関数を作ってしまうだろう。だってaddとresultを連続して呼ぶのはめんどくさいんだもん。一連の流れをいつも使うのなら、その流れをやってくれる関数を作ればいいじゃないか

function add_result_output ($iVar, $iVar2) {
    $r = add($iVar, $iVar2);
    echo result($r);
}

もっと言えばクラス化してしまってもいいかもしれない。どんな感じになるかは君の手を動かして確認しよう!


最後

このTipsはとてもわかりにくく、ニッチ過ぎる部分も多いかもしれない。

しかしもう一度タイトルを確認してほしい

あくまでも「より良いPHPerにならないための20Tips」なのだ。

君はこの記事を鵜呑みにしてはならない。PHPPHPと見抜けないPHPerはPHPを使うのは難しい


おまけ

もし、あなたPHPプログラマなら、公式のPHPドキュメントあなたのケツの穴を拭くための紙になるだろう。

私は、それぞれのセクションを眺めて、各関数でどんなことが出来るかなんぞ、歯クソのゴミ程に役に立たないとおもっている。動けばいい。はは。

あなたは、PHPで用意された既製関数で多くのことが実現できることに、(俺の仕事を減らすなと)驚くはずだ。

この記事があなたの役に立たない事を。

どんなコメントでも待ってます

ふざけんな!


個人的な感想

この記事に書かれている内容は、丸めゴミ箱に捨てた方が良いレベルです

もしここまで読んでしまったら、丸めゴミ箱に捨てましょう。



プログラ増田のあなぐら

2011-01-16

http://anond.hatelabo.jp/20110116135718

PGのコンディションがアレな状態で書かれたコードで時々見かけるよ。

どこの何なのかもよく分からないポインタがいつの間にかint型になってて、それが超重要な処理(しくじったら数日はそこの業務が止まる)の開始に絡んでるので迂闊にいじれなかったりとか、「削除禁止.dat」って0バイトファイルの有無で処理開始の可否を判定していて(削除すると初期化スキップされてしまうので前回起動時のデータのまま起動してしまう)、コードを書いた本人に理由を聞いても「分からない…何故だろう…?」としか返ってこなかったりとか。

2010-10-30

コンピュータ用語を丁寧に漢語や和語に置き換えていたのはいつまでのことだろう

接続

設定

検索

お気に入り

圧縮

変換

ゴミ箱

保存

上書き

置換

範囲選択

切り取り

やり直し

再起動

履歴

挿入

実行

自己解凍形式

壁紙

初期化

新規作成

……

90年代末期くらいから、どうでもよくなってカタカナだらけになったよな。

2010-07-28

Pixela StationTVで録画番組を復活させる方法

StationTVとはpixela謹製TV番組レコーダーです。普段はなかなかいい奴なのですが、何かの調子に、例えばOSアップデートドライバ更新、録画HDDボリュームベルの変更などがあると急に不機嫌になります。

ここでは今まで録画した番組再生できなくなった場合の対策を書こうと思います。

  1. StationTVを終了させる
  2. 保存ディスク直下のDTVAppディレクトリ名前を変える
  3. StationTVインストールディレクトリにある、ClearDBDataTool.exeを実行する
  4. [保存ディスク]:\DTVAppx中にある録画情報情報を書き換える
  5. StationTVを再起動する
    • ここでStationTVを再起動します。再起動するとStationTVの再設定を要求されますので、設定情報入力していきます。
  6. StationTVを完全に終了する
    • 初期化が終わったらStationTVをまた完全に終了させます。つけたり消したり大変ですが、録画番組復元する前に設定を初期化する必要があります。そうしないと「今までの録画番組を削除し再初期化しますか? そうしなければ今後、録画機能を使うことができなくなりますがよろしいですか?」などというふざけたメッセージが出てきますw
  7. 保存ディスク直下のDTVAppディレクトリ名前を元に戻す
  8. StationTVインストールディレクトリにある、RecordManageTool.exeを実行する
  9. 録画番組が見られるか確認する
    • この時点で録画番組はちゃんと復元されているはずです。

注)

ドライバアップデート直後や上の操作を間違えたりすると、たまに「今までの録画番組を削除し再初期化しますか? そうしなければ今後、録画機能を使うことができなくなりますがよろしいですか?」というおかしなメッセージが出てくることがあります。その場合、そのメッセージが表示された状態で、すべてのDTVAppディレクトリ名前を変更しましょう。その後、初期化するを選ぶと録画番組ファイルはそのままで、設定だけ初期化されます。ディレクトリ名を戻した後、RecordManageTool.exeを実行すると番組リスト復元されているはずです。

注)

この操作の実行後に、番組リストは復活しているが番組再生に失敗する、という状態になることがあります。OSサービスパックデバイスが原因と言われていて、Windows Vistaサービスパックを2から1に戻したら上手く再生できるようになったという話もありました。

2010-07-17

HDD増設→パーティション移動・移行方法(WINDOWS XP)

現在HDD1個に2つのパーティーションを切り、

[C:Program][D:Data]という名前を付けており、OSはC側に、データはD側に入っており、データ領域のD:Dataを新HDDに移動させたい場合

(CドライブOS側の移動方法は不明)

【α-HDD増設】

α-1/ SATAHDDを買ってくる。

α-2/ HDDデータケーブル・電源ケーブルマザーボードと繋ぐ。

    →ケーブルはマザーボード購入時に付いている。なければ購入。

α-3/ 起動中にBIOS画面を出し、HDD認識しているかチェック。

α-4/ OSを起動し、[マイコンピュータ]を右クリック→[管理]

    で、[コンピュータ管理]画面を出す。 ([スタート]ボタンからも可能)

α-5/ [コンピュータ管理]画面。

    記憶域→ディスク管理

α-6/ 今繋いだHDD右クリックフォーマット

α-7/ よくわからないが、種類は[プライマリ]でいいようだ。

α-8/ 長くて6時間程度でフォーマット(初期化)終了。

    ドライブレター(CとかDとか)は自動でつけられる。ここでは仮にH:とつけられたとする。

【β-パーティション移動】

β-1/ Partition Wizard Home Edition (freeware)

    をDLし、インストールする。

    参考: http://gigazine.net/index.php?/news/comments/20090815_partitionwizard/

β-2/ Partition Wizard起動。

    現在パーティションに、以下の操作を加える。

    ・今取り付けたHDDの領域を[Delete]し、Unallocatedの状態にする。

     →α-8でせっかく初期化したのに、とも思うが、それとは別かもしれない。

      論理フォーマット(ローレベルフォーマット)とディスクフォーマットは違う・・・筈。

      でも、もしかしたら、α4~α8までの作業は必要ないのかもしれない。

    ・前のHDDのD:Data領域を[コピー]し、今取り付けたHDDペーストする設定にする。

    ・左上の[Apply]ボタンで開始。その前に常駐ソフトは終了させたほうがいいらしいが、

     消さなくても問題はなかった。

【γ-ドライブレター変更】

γ-1/ 念のため、現状できちんと起動するかチェック。この時点では単に新しいHDDに、旧HDD内のDパーティションを新HDDコピーしたにすぎず、旧HDDのDパーティションは残っているので、

何の問題もなく起動する筈。 ついでに新HDDにきちんとコピーできたかチェック。

γ-2/ [コンピュータ管理]画面を出し、[ディスク管理]で、現在HDDにある、D:DataのドライブレターをD以外(Iなど)に変更する。

 →この時、同時に新HDDパーティションをDにしたいところだが、残念ながら一度に1つのドライブレターしか変更できない。

γ-3/ 再起動する。この時、旧HDDexeファイルのあるアプリケーションプログラムは起動しない。

    よって、この方法はOSの入っているCドライブには使えないことになる。

    →しかし、CD起動などの方法があるのかもしれない。

γ-4/ [コンピュータ管理]画面を出し、[ディスク管理]で、新HDDにある、H:DataのドライブレターをDに変更する。

    →新HDDパーティションがD:Dataとなる。

γ-5/ 再起動する。D:Data内のexeファイルがきちんと実行されたか、Dドライブデータを置いていた場合、Cドライブアプリからきちんと読めたかどうかチェックする。

【σ-旧HDDパーティション削除、パーティション拡張

σ-1/ Partition Wizard起動。旧HDDのかつてDパーティションだった領域は、現在I:Dataとなっている。

    →右クリックパーティションDeleteする。

σ-2/ Deleteした領域がUnallocatedになっているので、Cパーティションの領域の端を引っ張り拡張、旧HDDいっぱいに拡張する。

σ-3/ Applyを押してパーティション変更を確定。

σ-4/ 再起動をかけ、デスクトップなど若干レイアウトが崩れた部分を手で修復。

2010-06-08

http://anond.hatelabo.jp/20100608134429

パソコンと同じで、リカバリ的なことすれば初期化されて非アクティベーションな状態に戻る。

もしかしたら読み取れない領域に履歴とか残ってるかもしれんが、まあその情報を取れるとしたらapple中の人だけだから気にする必要はないと桃割れ

2010-05-18

http://anond.hatelabo.jp/20100518163655

だったらそれを明らかにすればよい。

自分でなにもかもやるんじゃなくて、第三者の手を借りればよい。

知人友人ではなく、まったくの赤の他人。できれば全国展開しているような規模の大きいところ。

コンプライアンスの関係でそういうところは縛りが多い)



パソコン関係だけ言ってみると、

パソコンだけ、ネットワークだけ、と五月雨式にやっても意味がない。

弱いところから入り込まれる。一度に一気に全部やるのが鉄則。

ルータは正しく設定すれば外と隔離できる。(原理的に外から入り込めない)

ルータには強固なパスワードかけて他からアクセスできないように。

無線LANなんて危ないものはやめて、すべて有線でつなげ。

パソコンにはバックドアを仕掛けられないように、すべて初期化。できればデータもすべて捨て。

ウィルス対策も万全に、ファイアウォールルータがあればいらないけど心配ならつけても害はない。

一人暮らしであっても、自動ログオンは厳禁。OSだけでなく、BIOSレベルパスワードをかける。

http://anond.hatelabo.jp/20100518162918

なんで監視カメラを取り除かないの?

以前に発見機は買ったんだけど、ひっかからない。

業者を呼ぶ金の余裕がない。

なんでパソコンを完全に初期化しないの?

とっくの昔にさんざんやった。

なんでセキュリティの穴をふさがないの?

対策しても突破してくる。

なんでノートPCネットブックにして片時も手放さずに持ち歩かないの?

IPアドレスがバレているとルータ経由でも

ネットに繋いだ時点で入ってくる。俺個人を狙って本気で侵入してくるから防げない。

なんで新規契約にして片時も手放さずに持ち歩かないの?

とっくに新規契約はした。

番号を変えて、別の携帯電話会社に変えても、すぐにバレた。

24時間いつでも?そんな金誰が出すの?

糸井。こんな事に使わずに、人助けにでも使えばいいのにな。

金が余ってるんだろう。

なんで新車に乗り換えないの?

その内、乗り換えたい。

http://anond.hatelabo.jp/20100518160958

住所も知られていて、家の中に監視カメラがつけられているし、

なんで引越しないの?

なんで監視カメラを取り除かないの?

なんで外泊しないの?

パソコンハッキングされて完全に相手の支配下になっている。

なんでパソコンを完全に初期化しないの?

なんでセキュリティの穴をふさがないの?

なんでノートPCネットブックにして片時も手放さずに持ち歩かないの?

携帯電話も全てが盗聴されて筒抜けになっているし、

なんで新規契約にして片時も手放さずに持ち歩かないの?

外に出かければ雇われた業者につけまわされる。

24時間いつでも?そんな金誰が出すの?

車の中にも盗聴器があるだろうし、

なんで新車に乗り換えないの?



はっきり言うとね、迷惑なんですよ。しばらく前からログ元増田のわけわかんない日記でどんどん埋まっていく。

掲示板アドレスなんて、知らない人には教えようがないし、知っている人は教えようとしていない。

ネットの向こうの誰かに呼びかけるにしても、「ハッキングされたパソコン」で呼びかけたら相手に筒抜けだし、

万が一、誰かが教えてあげてもいいかなと思っても、この執拗な書込み見たら「かかわらないほうがいいかも」と引くよ。

そんなことも判断できないほど精神的にやられているのか? そうだとしたら、ちゃんと病院に行ったほうがいいよ。

2010-05-01

Javaから呼び出し元のJRuby環境を利用する

Tomcat上のJRubyから呼んだJavaプログラムから呼び出し元のJRuby環境(Runtime)を使いたいときにどうすればいいのか?

方法が1つわかったのでメモ

(追記2:こんなめんどいことしなくてもJRuby.runtimeで取れたみたい)

イメージ的には以下の感じ

Java

↑↓

JRuby(on Rails)

Java(Tomcat)

※注意:warblerでwar化したRailsアプリ場合

JRubyは1.4.0、jruby-rack.jarは0.9.7、warblerは1.0.1

プログラム

まずは必要なクラスをimport

import org.jruby.Ruby;
import org.jruby.rack.PoolingRackApplicationFactory;
import org.jruby.rack.RackApplication;
import org.jruby.rack.RackServletContextListener;

ServletContextをどっかから取ってくる(Listener作ってfieldに埋めるとかして)(追記:$servlet_contextで取れる[JRuby-Rack使うから])

ServletContext context;//=~~~

warblerでwar化するとweb.xmlRailsServletContextListener(extends RackServletContextListener)が登録される。

そのListener起動時にFactoryがServletContextに登録されるので、それを取得する

PoolingRackApplicationFactory factory = (PoolingRackApplicationFactory)context.getAttribute(RackServletContextListener.FACTORY_KEY);

PoolingRackApplicationFactoryapplicationPoolを取ってくる

(protected fieldなのでリフレクションを使用)

Field poolField = factory.getClass().getDeclaredField("applicationPool");
poolField.setAccessible(true);
Queue<RackApplication&gt; pool = (Queue<RackApplication&gt;)poolField.get(factory);

poolからRubyランタイムを取得

RackApplication ap = pool.peek();
Ruby ruby = ap.getRuntime();

呼び出しもとのJRuby環境を使ってRubyコードを実行できる

ruby.evalScriptlet("p 'test'");
memo

実際に使うときは、applicationPoolにちゃんと入っているかなどのチェックが必要になる。

初期化タイミングなどが影響して取得できない場合、Threadなどを使ってポーリングして入っているか確認する

2010-03-22

http://anond.hatelabo.jp/20100322042642

ほんと、そのへんが、プログラマの領域だと思う。

俺はそうは思わない

コンパイラの賢さを考えると、人間が注力すべきは、プログラム全体のアルゴリズムであって、姑息最適化じゃない

コンパイラが出力するコードは、人間が書くコードよりも、圧倒的に賢い

 

まず、基本ブロックの入れ替えが起るような、大域的な最適化は、手じゃ絶対に無理

例えば Lazy Code Motion (PLDI '92) を手でできる人はいないだろうし

partial redundancy elimination が扱っている冗長性を理解している人すら、あまりいないだろう

 

それに、局所的な最適化でもコンパイラ(を書いた人)のほうが賢い(ハードウェアに詳しい)

ターゲットマシンx86 で、レジスタを0で初期化するときに、gcc最適化オプション付けると

xorl %eax, %eax

ってなるけど

subl %eax, %eax

でも

movl $0, %eax

でも無く、xor が一番速い理由を知ってるやつとか、なかなかいないだろう

しかし、gccx86machine description を書いた人間は知っている

2010-01-03

http://anond.hatelabo.jp/20100102235955

乱数適当な長さの文字列を作って、それに初期化するようなシステムにすれば良いんじゃない?

パスワードを忘れた人には

「○○様 日頃は弊社サービスをご利用頂き誠にありがとうございます。

 新しいパスワードはxyeaksdfed12です。次回ログイン時にパスワードの変更を求められますので、ご対応をお願いいたします。

 これからも末永いお引き立てをお願いいたします」みたいなメールなり手紙なりを送る。

というか、そういう実装って枚挙に暇がないような。。。

2009-09-06

中途半端ワナビーこそがサポートの最大の敵である、という話

  • i.softbank.jpが使えなくなってサポートに相談したらもう一生受信できない状態になりますねといわれた(解決) - だらだらぶろg DaDaDa!

なんかスゲー話題になってるみたいなので、一応サポートで飯を食ってる人間として(上の例で言えば、オペレーターが相談してる上司社員にあたる立場になる)一枚噛んでみる

未熟なサポートと困ったユーザーはどうしたって無くならない訳で。サポート屋としては、実は元記事のような客はそんなに困らない。

対応の巧拙はあっても結局は同じ結果になったはずだし、後日素直にリセット処理にも応じてる。「気が動転してました」と自分の非についてもある程度反省しているようだし。(ただ、散々ごねた上に「法務を出せ」とまで言い、ブログdisった挙句に勘違いでした…・・・って逆に訴えられても仕方ないレベルじゃないか?)

一番厄介なのが、ブコメに見られる中途半端に知識をかじったワナビーども。

コイツラは何かと言うとゴチャゴチャ話をややこしくする。初期化すれば済むだけの話を「そもそもIMAPとは(キリッ)」なんて言い出すから始末に終えない。いいから初期化しろよ!そうすりゃ直るんだから!

さて、まずは元記事の症状からざっくりと問題を判別してみよう。

8/31 22:00過ぎから、i.softbank.jpへの接続ができなくなりました。エラーメッセージは「ユーザ名またはパスワードが正しくありません」なのですが、IMAPアクセスしているiPhone側もPC側もユーザ名もパスワードも変更していないので、急にこの挙動になってしまったのが理解できませんでした。


アカウント情報を削除して登録しなおしてみたり、MySoftbankメールアドレスパスワードを変更してみても症状は全く変わりませんでした。その後、自分のi.softbank.jpメールを送ってみると、


550 Invalid recipient:


メールが戻ってきていることが判明しました。受取先が無効ですエラーってことは、アドレスが存在していない扱いになってしまっています。しかし、MySoftbankにはログインできていることから、


iPhoneの端末側の問題ではなく、IMAPサーバ側の問題である

という見解に至りました。

じぶんの経験で言えば、ユーザー側でここまで切り分けてくれた時点で御の字であるw有償サポートでも、いや、だからこそか、ここまでやってくれる人はいない。

"MySoftbank"のアカウントメールアカウントが同一であるかは分からないが、IMAPサーバ「側」の問題(iPhone本体ではない、という意味)であることは確かだ。

ところで、"550 Invalid recipient:"のエラーIMAPではなくSMTPエラーである。

これが、例えばSMTPは問題ない、つまり「送信できるけど受信できない」状態であればIMAPサーバーが悪いと言える。

しかし「送信できない」となると、IMAPは全く関係がない。

理由については「IMAP」でぐぐると最初のページに出てくる記事だがこのページ辺りを参考にして欲しい。

あと、設定方法をぐぐってみると、

IMAPサーバーSMTPサーバーは別になってるようなので、「IMAPサーバー」の問題ではないことも容易に分かる。

つまりどういうことかというと、メールアカウント自体が消えてしまっているか、ロックされているか、見えなくなっているかということ。

結論としては、IMAP被害者に過ぎない。

加えて言えばSMTPサーバー被害者の可能性があり、アカウント管理しているLDAPサーバーのようなものが原因だった可能性のほうが高い。

したがって

iPhoneの設定確認やリセット処理など一通り試てもらった後、iPhoneを復元してみますとのこと。復元後メール設定をしてみると、なぜかメール受信ができるようになってました。

アカウントリセットするのはマニュアルどおりのテキトーな処置ではなく、むしろ論理的な問題判別に基づいたアクションといえる。「なぜか」じゃねーよw

関連記事を見ると、同じ症状の方もいるようだ。

あと「IMAPならPCでもiPhoneでもできるはず」っていう意見に対する反論はこの辺の記事が参考になる。

ここまで分かれば、ブコメIMAP(笑)がいかに見当違いなことを言ってるかが分かると思う。

IMAP」という言葉過剰反応して問題が見えなくなってる。

覚えたての言葉を使いたがる子供ですか?IMAP言いたいだけちゃうんかと。

最後にブクマのバカなコメントに突っ込んでおこう。こういう輩を放っておくと、第二第三の被害者が出かねないからな!サポート的な意味で!


http://b.hatena.ne.jp/entry/d.hatena.ne.jp/iwa/20090904/1252016930

b:id:satomi_hanten 良く分からんのですがマジメな話鯖側ちょいと直せば済む話ですよね・・?

「良く分からん」のに「鯖側ちょいと直せば済む」と言い切るエスパーぶり!具体的にどこをどう「直せば」いいんですか?

b:id:pokutuna PCからだからダメとかメールプロトコルの話なんだからダメとか無いだろ

メールプロトコルの話」ではないでしょ、プロトコル以前のサーバー側の問題なんだからw知ったか乙www

b:id:mnemo プロトコルの問題なのに PC という語に過剰反応する、このサポートレベルのぶこめが多くてびっくり。

プロトコル以前の問題なのに IMAP という語に過剰反応する、このサポートレベル以下のぶこめにびっくりwww

b:id:noraora サポート外もなにも、IMAPなんだから今まで正常だった機能が使えないってことはPCiPhone関係なしにIMAPサーバ側の問題だろ

IMAP(キリッ)だっておwww

b:id:sy0ta PCアクセスするのはおかしいとかコメントしてる人は頭おかしいの?PCからIMAPアクセスしておかしくなるってことは、それはIMAPじゃないってことだろ。できて当たり前のことをサポート外と言い切る姿勢がおかしい。

日本語でおk。どこにIMAPをフルスペックサポートする、なんて書いてあるんですかwwwそもそもIMAPが悪いなんて誰も言ってねーしwww

b:id:hirok73 わかんないので詳しい人教えてください:iPhoneでしか読めない(特定のMUAでしか読めない)状態でIMAP対応と名乗るのはありなの?

どこの公式情報に「IMAP対応」なんて書いてある?あとRFCをフルスペックサポートしてないMUAMTAなんていくらでもあるよw代表的なのがoutlook様だw



もちろんブコメもバカな意見ばっかりじゃなくて、まともな意見もある。

b:id:maakunh iPhoneアカウント設定が壊れていたのかな?壊れた状態で何度もアクセスすることで、サーバ側で不正アクセスと判断され、アカウントロックされたとか・・・

b:id:z0rac ん?それIMAPの問題じゃなくメールボックスアクセス不能になってる。/つうかアカウント消えてね?

サポートの立場としては、「こういうことが起こってる可能性が高い」と説明し、コンセンサスを取った後初期化処理を行うべきだった。その点では、お互い不幸な事件ではあったのだ。

2009-08-12

http://anond.hatelabo.jp/20090812140622

やっと理解した。

何回か実行して平均とっれて話ですね。

規模の大きい関数だと

1回目は初期化が走るので遅くて、

2回目以降は速いことがある。

f1()は1回目の実行が10ms以下なので

2回目以降早くなるとかも誤差範囲で考慮いらないですね。

2009-08-09

http://anond.hatelabo.jp/20090809205114

ホント、アレげコードサーセン

元々アレげコードだがなぜか投稿が失敗するのでコード削ったら、

さらに何が言いたいコードかわからなくなった。

私がC++コーディングするとき気にしてたのは以下のポイント

  • メソッドが処理続行可能か条件チェック文が複数ある場合、インデントを深くすると読みにくいのでエラー条件に該当したら、その時点でメソッドをリターンする。
  • そのメソッドで確保した領域は漏れなく解放する

なので、なるべく以下のようにコーディングしていた。

多分、C言語勉強した時によんでいたココのページ(10章)の影響。

http://www.kojima-cci.or.jp/fuji/mybooks/cdiag/index.html#mokuji10

shared_ptr使えば、解放漏れはふせげるんですね。勉強になりました。

2009-07-31

C++ の std::list でpush_backする時にコピーコンストラクタを使いたくない

C++ の std::list にデフォルトコンストラクタが無いclassを使おうと思って気づいたのだけれど、コピーコンストラクタとか代入演算子定義してやらないと駄目なのかな。

いやまぁ、それで動くんだからいいじゃんという話とか、ポインタにして自分で new すればいいじゃんというのもあるのだけれど、

class hoge {
public:
  hoge(int dummy);
  hoge(const hoge &amp;other);

private:
  char buffer[1000];
};

std::list<hoge&gt; hogeList;
</pre&gt;
	

とか定義してる時に、

hogeList.push_back(hoge(0));

って書いた時、auto変数の領域かなにかに領域が確保されて、hoge(int dummy) が呼び出されて何かの初期化が一回入って、その後、hogeListが確保した領域に、コピーコンストラクタでその値が上書きされるということになって、ぶっちゃけ最初のhoge(int dummy)呼び出しは無駄なんじゃないかなーというか、なにやらでかいバッファを持ってる奴とかだったら、それが全部copyされると考えるとなんか無駄だなーとか細かいことが気になった。

で、これでコピーコンストラクタを呼び出されないようにする方法っていって自分が考え付いたのは、

std::list<hoge *&gt; hogePointerList;
</pre&gt;
	

として、自前で new するってのなのだけれど、まぁアレですよ。できれば自前で new とかしないですむ「俺楽チン」なステキ手法はないものか、と愚痴ってみただけです。ハイ。

つか、それくらいやりかたありそうなもんだけど、無いのかなほんとに。そういうもん?

一応試してみたcodeはこんなん。

#include <stdio.h&gt;
#include <list&gt;

class hoge {
public:
  hoge(int dummy);
  hoge(const hoge &amp;other);

private:
  char buffer[1000];
};

hoge::hoge(int dummy){
        printf("hoge initialized. this: %p\n", this);
}
hoge::hoge(const hoge &amp;other){
        printf("hoge copyed. this: %p\n", this);
}

int main(int argc, char *argv[]){
        std::list<hoge&gt; hogeList;

        hogeList.push_back(hoge(0));

        return 0;
}
</pre&gt;
	

結果はこんなん。

hoge initialized. this: 0x22c8c0
hoge copyed. this: 0x6c0210

で、蛇足的に、

hogeList.push_back(0);

みたいな書き方をしてみたら、

hoge initialized. this: 0x22c8c0
hoge copyed. this: 0x6c0210

となった。あぁ、これは

hogeList.push_back(hoge(0));

に読み替えてくれたんだね。賢いなぁC++は。

ということで、hoge(int dummy) の方に explicit をつけてみたら、muchするfunctionが無いよとcompile errorした。まぁそうだよねぇ。

2009-07-08

本当にnewっていらない子

なんかPerlのblessっぽい。

JavaScriptのnewって本当にいらない子?(http://d.hatena.ne.jp/jdg/20090706/1246840565)

というよりperlのnewっぽい。なぜか。

classクラス定義してnewでインスタンスを生成する言語を「一般的オブジェクト指向言語」とすると、

つまり、javascriptでnewを(直接)使わず、class(のようなもの)を作ればperlっぽくなる。

そもそもnewって何するの?

オブジェクトを作る。オブジェクトを作るには3つの動作が必要である。

  1. 領域を作る
  2. クラスと結びつける
  3. 初期化する

通常は言語仕様でこれらを行う"new"という命令が用意されている。しかし、必ずしも必要な物ではない。perlでは言語仕様としてはnewが用意されていない。new関数が存在するのはコーディング規約に従っているからに過ぎない。代わりにblessが用意されている。なぜこのようになっているのか。理由はいたって簡単だ。perlオブジェクトの実態はリファレンスだ。初期化を行うコンストラクタはどの道定義せねばならない。だから必要なのはリファレンスパッケージを結びつけるおまじないblessだけだ。コンストラクタで好きなリファレンスを用意し、好きなように初期化してblessすればよい。コンストラクタ名前コーディング規約でnewと決めた。一方javascriptはnewを用意した。{}でオブジェクトは作れるし、どの道コンストラクタは作る必要があるのに。

そもそもblessって何するの?

オブジェクトクラスを結びつける。しかし、javascriptクラスを持たないので必要はない。代わりに必要なのは、継承元との結びつき、プロトタイプチェーンの構築だ。

そもそも継承って何するの?

既存のクラスの性質や振る舞いを流用する。default状態を与える。一般的オブジェクト指向言語ではクラス定義時に継承元となるクラスを指定する。javascriptではクラスの代わりにオブジェクトを指定する。

そもそもクラスって何するの?

クラスとはオブジェクトの性質・振る舞いの定義だ。しかし、ダック・タイピングではオブジェクトの性質や振る舞いはオブジェクトの持つメンバにより決まるため、そのような環境ではオブジェクトに初期値と継承関係を与えるのが主な仕事となる。

そもそもコンストラクタって何するの?

コンストラクタオブジェクト初期化を行う。javascriptではクラスがないため継承コンストラクタによりオブジェクト初期化される。

つまりコンストラクタ継承すれば良いんじゃね?

var object = function(o) {
  var F = function() {};
  F.prototype = o.prototype;
  return new F;
};

JavaScriptのnewって本当にいらない子?(http://d.hatena.ne.jp/jdg/20090706/1246840565)

個人的には

var object = function(o) {
  var F = function() {};
  F.prototype = o;
  return new F;
};

で良いんじゃね?って思う。

更に、コレでは初期化しないから

var object = function(o, n) {
  var F = function() {};
  F.prototype = o;
  f = new F;
  if (n) for (var i in n) f[i] = n[i];
  return f;
};

みたいな。

さらにせっかくだからメソッドにして

var object = function(o, n) {
  var F = function() {};
  F.prototype = o;
  f = new F;
  if (not f.inherit) f.inherit = function(n) {object(this, n)};
  if (n) for (var i in n) f[i] = n[i];
  return f;
};

とか。



しかし、なんでこんなに今の継承機構は使いづらいのか。

2009-06-26

http://anond.hatelabo.jp/20090626182556

爆発の基準点はわからないが、男は一度爆発したら初期化されて全部忘れる、女は爆発しても多少圧縮されるだけで初期化されずスタックは積み上がり続ける、といった感じかと。

2009-06-09

この上なく簡易なアラームが欲しい

諸氏は、下記のような事をどうしているのだろうか。

時間がきたら、メッセージボックスを出すだけで良い

・ただし、時刻の登録にマウスを操作するような煩雑さは、断じて許容できない

・常駐すんなボケ

とりあえず、if文なんて高尚なものを使ったことなかったけど、バッチファイルでやってみた。

@echo off
REM 1-31の日付でしか登録できない低能アラーム
REM 時刻は必ず入力されるものとみなす
REM よって、組み合わせはDAY×MESGのみで考える。

REM 変数初期化
SET yotei_day = 0
SET yotei_mesg = ""

SET /P yotei_time="アラームを表示する時刻 :"
SET /P yotei_day="アラームを表示する日付(1-31で指定、省略した場合は今日) :"
SET /P yotei_mesg="表示するメッセージ(省略時は、予定チェック) :"

REM 条件分岐。バッチのelseはしょぼすぎる。複数条件指定できない??
if "%yotei_day%" == "0" goto :NO_DAY
if "%yotei_mesg%" == "" goto :NO_MESG

REM 指定したもの -> DAY,MESG
echo %yotei_day%日の%yotei_time%に通知します'
at %yotei_time% /NEXT:%yotei_day% net send pc_Name "%yotei_mesg%"
goto :SLEEP


:NO_DAY
REM 分岐: + NO_MESG
if "%yotei_mesg%" == "" goto :NO_MESG_NO_MESG
REM 指定したもの -> MESG
echo 次の%yotei_time%'に通知します'
at %yotei_time% net send pc_Name "%yotei_mesg%"
goto :SLEEP


:NO_MESG
REM 分岐: + NO_DAY
if "%yotei_day%" == "0" goto :NO_DAY_NO_MESG
REM 指定したもの -> DAY
echo %yotei_day%日の%yotei_time%に通知します'
at %yotei_time% /NEXT:%yotei_day% net send pc_Name "予定チェック"
goto :SLEEP


:NO_DAY_NO_MESG
REM 指定したもの -> なし(時刻のみ)
echo %yotei_day%日の%yotei_time%に通知します'
at %yotei_time% net send pc_Name "予定チェック"
goto :SLEEP

REM 終了
:SLEEP
ping 127.0.0.1 -n 2 > nul:

これに適当名前をつけて、ランチャのfenrirで起動させる。

キーボードのみの操作で済むので、とても快適ではあるものの、見ての通りnet sendを使うため、

Windows messenger serviceを起動させるという、常駐ソフトの方がマシな本末転倒なウンコーな一品である。

ActiveDirectoryとかグループポリシーでmessenger制限されてたら使えないし。

VBWSHなら色々できそうだけど、これ以上機能はいらんのよね。いっそ、メッセージはtxtに書き込んで、それを開くだけにするか・・・・。

### しかし「>」を表示させるのに、数値参照文字じゃないとダメとか・・・。

### &#62;を半角にしたら>になりますよっと。。。

- 転職ならen
- 派遣ならen
3ページ中1ページ目を表示(合計:52件)