「hoge」を含む日記 RSS

はてなキーワード: hogeとは

2012-01-28

s2jdbc-genが動かない

増田でこんなこと聞いていいのかわからないけど、誰かわかる人教えて欲しい。

seasar公式サイトにある、s2jdbcチュートリアルを試してみたんだけど、entityの生成でいきなり躓いてしまった。

$ ant -f s2jdbc-gen-build.xml gen-entity
Buildfile: /Users/hoge/dev/s2jdbc-tutorial/s2jdbc-gen-build.xml

gen-entity:
[gen-entity] Java Result: 1

BUILD FAILED
/Users/hoge/dev/s2jdbc-tutorial/s2jdbc-gen-build.xml:46: Exception in thread "main" java.lang.NoClassDefFoundError: 
Caused by: java.lang.ClassNotFoundException: 
	at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

動かしている環境

- Mac osx 10.7.2

- java version "1.6.0_29"

- Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-11M3527)

- Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode)

s2jdbc-gen-build.xml:46 っていうのが、classpathに関する記述の箇所なので、動かすのに必要なjarが読み込まれていないからなんだろうなぁ、って思ってるんだけど。

同じ現象で躓いて、うまく解決できた人がいたら、教えて欲しい。

 38   <target name="gen-entity">
 39     <gen-entity
 40       rootpackagename="${rootpackagename}"
 41       entitypackagename="${entitypackagename}"
 42       javafiledestdir="${javafiledestdir}"
 43       javafileencoding="${javafileencoding}"
 44       env="${env}"
 45       jdbcmanagername="${jdbcmanagername}"
 46       classpathref="classpath">
 47         <jvmarg value="${vmarg.encoding}"/>

2012-01-19

Python vs Ruby vs PHP vs HaskellRubyistネクラオタクキモメン」 part2

Python vs Ruby vs PHP vs Haskell プログラミング言語バトル part1

http://anond.hatelabo.jp/20120118220204

441 : デフォルト名無しさん : 2011/12/14(水) 00:34:54.13

Rubyistってなんであんな小学校の図書室で毎日読書してそうな

いじめられっこネクラチビメガネみたいな色黒とかキモオタ

顔面オジサン、オバサンばっかなの?


445 : デフォルト名無しさん : 2011/12/14(水) 00:47:59.11

Javaer: 傲慢プライド高い、土方

Scalaer: 鼻持ちならない、モヒカン

Lisper: マジキチ

Rubyist: ネクラオタクキモメンいじめられっこネクラチビメガネ、色黒、キモオタ、顔面オジサン、オバサン

PHPer: 土方、DQN

Pythonista: イケメンリア充

473 : デフォルト名無しさん : 2011/12/16(金) 22:06:14.45

Python厨のRubyネガキャンは異常だなwww

608 : デフォルト名無しさん : 2011/12/28(水) 09:29:20.74

Rubyブロックが便利すぎて、Pythonをやめたくなった。

いちいちtemporaryな関数作成してから目的関数に渡していたのがばからしくなった。


609 : デフォルト名無しさん : 2011/12/28(水) 09:43:17.83

リストやジェネレータ式の内包表記が便利過ぎて

PythonからRubyには移行できないな

610 : デフォルト名無しさん : 2011/12/28(水) 11:03:14.91

日本人が開発の中枢にいるような言語はやめとけ。

どうせ廃れる。

611 : デフォルト名無しさん : 2011/12/28(水) 11:58:14.38

Pythonさんは、どうしてこう排他的かなぁ

626 : デフォルト名無しさん : 2011/12/28(水) 15:08:51.86

609

リストやジェネレータ式の内包表記が便利過ぎて

おれもそう信じてたけど、Rubyの、メソッド呼び出しを続けて書けるほうが便利だわ。

まるでjQueryみたい。といってもjQueryのほうが後発だけど。

たとえば「xsから0以上のものを選んで、その二乗の和を求める」場合

sum([ x*x for x in xs if x > 0 ])

これだと、後ろから読まないといけないんだよね。でも

xs.select{|x| x > 0}.map{|x| x*x }.sum

これなら頭からひとつずつ読めばいいから、わかりやすいし、考えたとおりに書きやすい。

まさにスクリプトって感じがする。

629 : デフォルト名無しさん : 2011/12/28(水) 15:55:19.77

Rubyメソッドチェーンって内包表記より弱いと思う

ネストするmapとかflattenとかわかりくいよ

Python: [[x,y] for x in xs for y in xs]

Ruby: xs.map{|x| xs.map{|y| [x,y] } }.flatten(1)


632 : デフォルト名無しさん : 2011/12/28(水) 17:25:29.75

いっぽうメソッドチェーンは

orz.sage().hage().hoge().hige() タイプの問題には向いている

まり向いている方向がちがう

(まあHaskellなら hige . hoge . hage . sage と書くだけだというのは置いといて)

強い弱いということで言うと、問題を解くのに必要な一番能力が弱い

(限定された)道具を使うという考え方があるようだよ

ベタ再帰は強い(汎用的)、がそれゆえ読むのに注意を必要とする

foldrは再帰よりは弱いが、foldrで表現可能な問題のクラス(原始再帰)はかなり

広いので、mapやfilterで済むならもちろんそのほうが望ましい

ではこの問題は弱いmapやfilterを結合させるほうがいいかというと、

俺はlist comprehensionのほうが集合表記そのもの=whatを表現していて好きだな

Pythonのlist comprehensionのsyntaxはあまり好きではないが

それは大きな問題じゃない

640 : デフォルト名無しさん : 2011/12/28(水) 19:56:09.23

メソッドチェーンってバグをわかりにくくするだけだと思うなあ。もちろん性能面もあるし。linqとかは良いと思うけど。

642 : デフォルト名無しさん : 2011/12/28(水) 20:28:45.92

同じメソッドチェーンでも、linqなら良いけどrubyなら悪い .....

一言で言うと「俺はRubyが大嫌いなんだぁーー」ということですな

663 : デフォルト名無しさん : 2011/12/28(水) 22:45:30.53

メソッドチェインなんてライブラリ設計次第でどうにでもなる

PythonどころかJavaでもできる

内包表記は構文でサポートしないと難しい(マクロがあれば別だが)


680 : デフォルト名無しさん : 2011/12/29(木) 00:07:41.77

メソッドチェーンが関数型の方法に比べて特に優れている点があるようには思えないが

パイプ順に書きたければ書けるし


682 : デフォルト名無しさん : 2011/12/29(木) 00:30:35.72

680,663

Pythonには関数型として致命的な弱点があるからメソッドチェーンでは簡潔なコードが書けない

たとえば「(1) Rubyは 条件判定が(文ではなく)式」だから以下のようなコードが書ける

 ys = xs.select { |x|

   if test

     if test_1 then test_1_1 else test_1_2 end

   else

     if test_2 then test_2_1 else test_2_2 end

   end

 }

あるいは「(2) Rubyブロック内で局所宣言が可能」だから上のコードを以下のように書き換えてもいい

 ys = xs.select { |x|

   cond_1 = if test_1 then test_1_1 else test_1_2 end

   cond_2 = if test_2 then test_2_1 else test_2_2 end

   if test then cond_1 else cond_2 end

 }

関数型言語であれば「(1) 条件判定(if/case)が式」で「(2) 局所宣言(let .. in .. end)が可能」なの当たり前

ところが残念な事に、どちらもPythonには欠落しているから、上の例はストレートコード化できない

からPythonではメソッドチェーンは使われないし、「酸っぱい葡萄」に見える

684 : デフォルト名無しさん : 2011/12/29(木) 00:37:06.68

Rubyでもリスト内包表記が言語として組み込まれてくれると嬉しい

リスト内包表記はトップダウン思考

メソッドチェーンはボトムアップ思考

だと思う

頭に浮かんだロジックをすばやくコード化するのはメソッドチェーンが適しているし、

じっくり腰を据えてコード設計するならリスト内包表記のほうが美しい

自分は、たぶんこのスレRubyコアの中の人も見ているだろうから

そのうちRubyにもリスト内包表記が実装されるんじゃないかと期待しているw

766 : デフォルト名無しさん : 2011/12/30(金) 10:04:41.40

メソッドチェーンは書き易い

内包表記は見た目が整ってて綺麗、最終的な型がわかり易い

いじょ。

2011-09-01

http://anond.hatelabo.jp/20110901183109

あーいや、「クラスターフォロワーにのみ(中略)“にも”」って言ってるから、その目的メインじゃないのかと思ったよ

あと、「@hogeというBOTを共通フォローしているクラスタ」という人々・関係性自体がいまいちイメージできなかった

(仕組み上どんなことが起こるのかについては理解できるんだけども)

色んな使い方があるのね

http://anond.hatelabo.jp/20110901182853

いや違うでしょ。

「そのメッセージをどの範囲までの人に見てもらいたいか」が違うんでしょ。

元増田にそう明確に書いてあると思うんだけど、どうしてイメージできないんだろう。

@hogeとやると自分hogeの両方をフォローしてる人にしかツイートが見えないという仕様を知らないとか?

2011-05-07

モテる情報女子力を磨くための4つの心得 「ATMを使えない女をアピー

こんにちは技術恋愛戦略学を専攻しているユビキタスです。私は学歴スキルもありませんし偽装請負ですが、情報系の恋愛に関してはプロフェッショナル。今回は、モテる情報女子力を磨くための4つの心得を皆さんにお教えしたいと思います。

 

1. あえて2~3世代前の開発言語スキル履歴書に書いて行く

あえて2~3世代前の言語を使うようにしましょう。そして会社マッチング面談で好みの人事がいたら話しかけ、わざとらしくラップトップを出していじってみましょう。そして「あ~ん! このC○B○L本当にマジでチョームカつくんですけどぉぉお~!」と言って、人事に「どうしたの?」と言わせましょう。言わせたらもう大成功。「オブジェクト志向開発とか詳しくなくてぇ~! ずっとコレ使ってるんですけどぉ~! 使いにくいんですぅ~!ぷんぷくり~ん(怒)」と言いましょう。だいたいの人事は新しい開発案件に流したがる習性があるので、古かったとしても1世代前の案件担当しているはずです

そこで男が「新しいスキルがほしくないの?」と言ってくるはず(言ってこない空気が読めない人事はその時点でガン無視OK)。そう言われたらあなたは「なんかなんかぁ~! 最近C# 5.0が人気なんでしょー!? あれってどうなんですかぁ? 新しいスキル学びたいんですけどわかんなぁぁああい!! 私かわいそーなコ★」と返します。すると男は「C# 4.0でしょ? 5.0はま仕様も決まってないよ。本当に良くわからないみたいだね。どんなスキルが欲しいの?」という話になって、次の営業日にふたりで案件選びのデートに行けるというわけですあなた女子力が高ければ、人事が優良案件を紹介してくれるかも!?

 

2. コードhogeを使うとモテる

「var」とか「temp」などを表現する「hoge」をコードに入れると、コードレビュワー男性SEは「なんかこの子カワイイなぁ」や「指導してあげたいかも」と思ってくれますコード管理ツール上では現実世界よりもイメージが増幅されて相手に伝わるので 「hoge」を多用することによって、男性あなた可憐女の子しい勘違いしてくれるのです。そういうキャラクターにするとほぼ絶対に同僚プログラマに嫌われますが気にしないようにしましょう。

 

3. とりあえず営業には「えー! なにそれ!?  知りたい知りたーい♪」と言っておく

ミーティングなどで営業がSEプログラマに話すことといえば予算話や納期の話ばかり。よって、プログラマにとってどうにもならない話ばかりです。でもそこで適当に「へぇ検収間に合うんですかぁ~?」とか「よくわかんないですけど予算超過しそうですねぇ」と返してしまうと、さすがの営業も「このプログラマダメだな」と気がついてしまいます。ダメプログラマだとバレたら終わりです。そこは無意味テンションをあげて、「えー! なにその業務要件!? 知りたい知りたーい♪」と言っておくのが正解。たとえ理解できない仕様でも、テンションと積極性でその場を乗り切りましょう。積極的に話を聞いてくれる女性に営業は弱いのです

いろいろと話を聞いたあと、「〇〇は〇〇扱いで、〇〇が〇〇になるバグは見なかったことにするんですね! 忘れたぞぉ! メモ廃棄!コメント削除!」と該当コードコメントアウトすればパーフェクト。続けて頭に指をさしてくるくる回しつつ「キュンキュンキュン! キュンキュンキュン!」と言って、「どうしたの?」と男に言わせるのもアリ。そこで「私のバグ発生履歴マスタからレコード物理デリートしているのでありますっ☆」と言えば女子力アップ! そこでまたマネージャーは「この子おもしろくて使えるかも!?」と思ってくれます。私は学歴スキルもありません偽装請負ですが、こういうテクニックを使えば知識がない私のようなバカ女のほうがモテたりするのですマネージャー自己保身に走りたいですからね。

 

4. レストランではATMを使えない女をアピールせよ

客先担当者の男とレストランに入ったら、真っ先にATMなどの銀行SIerを使ったシステムを探して「あーん! 私これ使えないんですよねぇ~(悲)」と言いましょう。するとほぼ100パーセント「どうして? キャッシュカード持ってないの?」と聞かれるので、「カード持ってるし使いたいけど使えないんです><」と返答しましょう。ここでまた100パーセントカードがあるのにどうして使えないの?」と聞かれるので、うつむいて3~5秒ほど間をおいてからボソッとこう言います。「……だって、……だってATM使ったらエンジニアが死んじゃうじゃないですかぁっ! 孫請けプログラマかわいそうですぅ! まだ有給とってないのにぃぃ~(悲)。労災すら降りないんですよ……」と身を震わせて言うのです

その瞬間、あなた女子力がアップします。きっと男は「なんて優しい労働基準監督官のようなコなんだろう! 絶対にゲットしてやるぞ! コイツはうちの担当SEだ!」と心のなかで誓い、あなたに惚れ込むはずです。意中の会社担当することになったら、そんなことは忘れて好きなだけATMを使って大丈夫です。「使えないんじゃなかったっけ?」と言われたら「大丈夫になった」とか「もみ消した」、「そんなこと都市伝説です」と言っておけばOKです

2011-04-13

http://anond.hatelabo.jp/20110413162001

横だけど、元エントリに反応した側ははてな記法が使いづらいかに興味はなくて、増田ダイアリー仕様の違いに興味があるってだけでしょ

かにそこは本題ではないけど、書かれた内容のどこに反応するかは自由だべ

もちろんさらに元増田が「そこに反応してほしいんじゃねーヨ」みたいに返すのも自由なんだけど、キレ気味なのは相当みっともないよ

はてな記法がわかりにくいなら別に使わなくてもいいよ

箇条書きはがんばって><ul><li>hoge<li>fuga</ul><とか書いたらいいよ

p要素は内容にブロック要素を含めてはいけないから、ブロック要素のタグを書くときはpタグ自動挿入されないよう>〜<で囲むのが大事だよ

まあはてな記法は別に難しくないと思っているから、これでわかりづらいってだいぶアレですねと思うのも確かではある

===それはそれとして===

増田ヘルプがあまりにおざなりで笑った。「はてな記法が使えます」とも書いてないんだな

http://anond.hatelabo.jp/help

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-02-26

http://anond.hatelabo.jp/20110223195508

プログラマー」と名乗っている人をあんまり信用しないほうがいいというのはよく言われる話だが最近そのことを痛感している。今やってる仕事の一環として、「ほかのプログラマープログラムを書いてもらって、それをレビューする」という作業があるのだが、この「ほかのプログラマーが書いたプログラム」というのがひどい。クズたいプログラムばっかりだ。

物心ついた頃から不可解で仕方がなかった

たいしたプログラムも書けない そのくせに威張り散らしてる

ってな、黒夢の『C.Y.HEAD』という曲の歌い出しですけど、最近この部分がぐるぐるぐるぐると頭を回るものだよ。

ええ、わかってますよ。仕事相手の悪口を公的な場で言うなんて、問題があるって言うんでしょう。まあ、それもそうなんだけど、たいしたプログラムも書けないくせにプログラマー名乗ってる奴らに本当に腹が立つからせいぜい堂々と書きますよ。

「忙しくってコードの質が下がってる」っていうような事情もあるでしょうが、まともに納品が出来ないなら仕事なら受けるべきでないわけだし、ビジネス世界は「結果責任」を負うものですから、「事情」なんてのは知ったこっちゃないね

……っていうふうにね、「仕事」というのは基本的に「事情」を無視するものなんですね。だから基本的にはあんまり僕は「仕事」が好きじゃない。とはいえ、今いっしょに働いている人たちはかなり「事情」というものを意識していて、おかげでそれほど辛くはないんだけれども。ただ「ほかのプログラマー」みたいな、外部の人たちは、事情を共有することができないので、「あー! クズたいコード送ってきやがって!」ということにしかならない。「事情」を共有できるような、近しい距離の人たちとのみ、仕事をしていたいものですよ。

で、そのコードがどういうふうにダメなのかというと、主に2つの側面がある。

【1】文法が正しくない、プログラムが読みづらい

【2】ソフトウェア目的意識できていない

【1】はもう、そのまんま。文法がおかしいとか、同じ様な処理コピペで5回かいてるとか、1メソッドが長すぎる上に変数が"hoge"とかでわかりにくく、意味を取るのに困難があるとか。「こんなプログラムに金を払わなければならないのか……」と思うとめまいがする。何せ、それを「まともなプログラム」にレビューするのは僕なのだ。で、その作業に対してお金は一銭も入ってこないのだ。

不具合先祖返りなんかは誰にでもあるミスだし、それを点検するために僕がチェックしているわけなので、そのあたりはいい。しかし文法の狂っているプログラムを修正するというのは、時には全体を書き換えなくてはならなくて、非常に労力である。それに、受け取ったコードは「ほかのプログラマー」さんの「成果物であるので、あまり手を加えすぎるわけにもいかない。それが「仕様書」をもとにしたコード場合、あまり修正するとクライアントに「自分はこんなこと言っていない」と思われてしま可能性もある。だいいち、こんな作業にあんまり時間をかけたら、ほかのもっと大切な作業をする時間がなくなってしまうのだ。こういった様々な事情を考え合わせ、うまいことバランス取りながら、修正の妥協点を探していくわけだが、これはとてつもない頭脳労働である。疲れる。

【2】は例えば、「バリデートチェック」のためのコードなのに、「intは2バイト」ということばっかり書いて来るとか。「intは2バイトはわかったけど、いつからバリデートチェックになるのだろう」と思って読み進めても、最後までintは2バイトしかチェックしていない。依頼主であるからSIerは、そんなプログラムに金を払いたがるだろうか?

もっと具体的な例。ゲーム会社が、「我が社のキャラクタ版権を利用して、凄く売れるSNSゲームを作ってくれ」と依頼してきたとする。プログラマーが打ち合わせに行くと、企画者は「動的フラッシュも使って、100万ユーザーが遊べる。。。」という話を延々とする。プログラマーは「了解しました」と言って安請負する。そのプログラムメイン処理だけで1000行というもので、memcachedの「mem」の字もないし、「オブジェクト指向」といった概念も勿論ない。これでは仮にSNSゲームリリースされたとしても、100人さえも遊べない。

このくらいならマシなほうで、ひどいのになるとフリーランス会社から紹介されたプログラマーで、「SQLselect文くらいしかやった事がない」とか平気で送りこんでくる。たった一人で。

また、意味のないコメントも多い。ループ処理に、「イントのiに3を代入する」と書いて、何の意味があるのだ? せめて「処理速度改善の為にIntegerは使わずにプリミティブのintを使う!」というふうに書くのが本来だと思う、まぁ嘘なんだけど。だって、そんなコメントみて、「なるほど」って誰が思いますかね?

コメントには必ず「目的」というものがあって、次にソースを読む人は処理の概要を知りたいのだから、「プログラム」をそのまんまコメントにしてもダメなんですよ。そういう単純で、最も重要なことが意識できないで、どうして堂々と「プログラマー」なんて名乗れるのか知らん、と思うぜ。

一番、腹が立つのは「偽SEですね。「プログラムはだれでもできるでしょ、重要なのは業務知識でしょ!」みたいなのが偽SE。こういうのを本当に思っているのがいる。業務の画面遷移さえ理解してないSEがだよ。

上の例はさすがに大げさでも、「僕は、プログラムが好きでソフト開発者になりました」とか言ってまともにプログラムが書けない奴は、頻繁にいる。自分サーバ建てろよ。自分で簡単なサービスつくる事もできないなら、向いてないから辞めてしまえ。

「オレはサーバエンジニアじゃないかコマンド打てない」みたいなね。

世も末だ!

ここに挙げたのは「最低限」のことで、「より読みやすく」「より自然に」「より美しく」というところを、自分能力限界まで突き詰めてこそ、プロってもんじゃないんかね。もちろん時間や諸々の事情相談してのこととはいえ、「26歳の若造吐き気を催すような拙いプログラム」を送ってくる、30代40代のプロプログラマーってのはいかがなもんでしょう?

身の程を知れというか。

なんでプログラム書けない人がプログラマーなんかやってんだろ?

んで、なんでそういう人に「仕事」があるんだろうか?

世の中ってのは本当にわからんもんです

身の程を知れよ。

自分の欲望ばっかり考えやがってね。

2011-02-25

if(string.Compare(hoge,hige)){}

if(hoge.CompareTo(hige)){}

こういうのってどっち使うべきなんでしょうか

そういうのをどういう基準で選ぶべきなんでしょうか

2010-10-30

人をひとつながりで考えすぎるのもほどほどにしよう

いじめだったら被害者共感し、差別だったら加害者扱いされることに恐怖する。

その捻じれの可笑しさに気付かないものかね?

意味分からん

hogeだったら被害者共感し、hugaだったら加害者扱いに恐怖する。

被害者共感し、加害者になることに恐怖する

これがねじれになるんかいな。

むしろ当たり前のことじゃない?


ねじれが生じてるのはそこじゃないだろ。

なぜ被害者共感したいという気持ちが、加害者になることと両立するのか。

被害者共感したいと思ってる人を

「この無神経野郎め、お前は加害者だ」って言って絡んでいるのは誰なのか。


どうしてこの二つの問題を切り離して考えられないのか。

そのことが本当に理解できない





蛸壺屋の平沢唯が私は愛することの大切さを歌ってますが、

普段はおなかが減っただけで人に怒りを持ったりしますけどね、

みたいなセリフを言ってて納得したことあるけれど、

人間ってそういうもんだと思う。

少なくとも差別はいけないものだってことがみんながわかってれば

誰も差別なんてしないはずだ、なんて理屈よりはずっと腑に落ちる。


なんでも一貫してなきゃおかしいと思うのはどうなんだろう。

まぁ社会的行動においてなら一貫性を求めるのはありだけれど、

内面感情にまで一貫性を持てとか介入してくるのはバカとしか言いようがない。

どう思ってもいいから、差別スンナよ、だけでいいんじゃないの?

考え方から変えようとする人間って自分が正しいって言いたいだけと茶うんか?


そもそも論だが、差別しないのが人間だというのはただの理想だし、差別するのが人間自然だともいえない。

あんまり「人間ってこういうものだ」という部分を無視して「こうあるべきだ」だけ語る人はなんだかなぁ

ましてそれを一貫した態度で求めるとか、もう人間ってものをないがしろにしすぎでしょう。

そういう理論人間をハメる取り組みのがしたいなら会員制のクラブを作ってその中でやればいいのに。

まぁ啓蒙思想限界なんてそれこそ我らがルター先生エラスムスに優越した時からわかってることじゃないか。

世の中を動かす力は理性なんきゃじゃないっての。

そういう理性が多少なりとも力を持つってことは、そんだけ暇を持て余してるってことだ。

大学教授ってのも優雅な職業だけれども、そのありがたみを十分理解したうえで、

一般人が実践できる型を考えるようにしていただきたい。あなたたち標準とかありえないから。

2010-08-27

はてな匿名ダイアリーにおけるhttp記法を修正するユーザスクリプト

アンカータグ内部文字列(<a href="hoge">piyo</a>のpiyo)にはてなキーワードが含まれる場合に、

キーワードリンクが生成されてしまうために、はてな匿名ダイアリーにおけるhttp記法が期待通りに働かないことがある。

この不具合を応急処置的に修正するためにユーザスクリプト作成した。

h‎t‎t‎p‎:‎/‎/‎g‎i‎s‎t‎.‎g‎i‎t‎h‎u‎b‎.‎c‎o‎m‎/‎5‎5‎2‎7‎7‎2‎/‎9‎b‎f‎2‎3‎2‎b‎6‎7‎c‎2‎8‎2‎9‎8‎a‎d‎8‎e‎d‎2‎9‎1‎5‎6‎6‎5‎7‎c‎1‎a‎a‎4‎7‎7‎f‎e‎a‎1‎6‎

(直接インストール h‎t‎t‎p‎s‎:‎/‎/‎g‎i‎s‎t‎.‎g‎i‎t‎h‎u‎b‎.‎c‎o‎m‎/‎r‎a‎w‎/‎5‎5‎2‎7‎7‎2‎/‎5‎6‎9‎7‎8‎7‎c‎e‎0‎c‎5‎0‎a‎3‎4‎f‎f‎6‎1‎1‎6‎0‎5‎b‎4‎9‎3‎2‎3‎6‎e‎c‎a‎6‎d‎8‎5‎1‎3‎1‎/‎a‎n‎o‎n‎d‎_‎h‎t‎t‎p‎n‎o‎t‎a‎t‎i‎o‎n‎_‎m‎o‎d‎i‎f‎i‎c‎a‎t‎i‎o‎n‎.‎u‎s‎e‎r‎.‎j‎s‎)

有効にすると日記を書く画面に「確認する(http修正)」「この内容を登録する(http修正)」という2つのボタンが現れる。



やっていること

アンカータグ内部文字列における各々の文字と文字の間にleft-to-right markが1つずつ挟まれるようにすることでキーワードリンク抑制する。



例1 :title=を入力していない場合

[http★://www.flickr.com/search/?l=commderiv&mt=photos&adv=1&w=all&q=japan+people&m=text]

入力して(★は削除)http修正ボタンを押すと、記事中では

h‎t‎t‎p‎:‎/‎/‎w‎w‎w‎.‎f‎l‎i‎c‎k‎r‎.‎c‎o‎m‎/‎s‎e‎a‎r‎c‎h‎/‎?‎l‎=‎c‎o‎m‎m‎d‎e‎r‎i‎v‎&‎m‎t‎=‎p‎h‎o‎t‎o‎s‎&‎a‎d‎v‎=‎1‎&‎w‎=‎a‎l‎l‎&‎q‎=‎j‎a‎p‎a‎n‎+‎p‎e‎o‎p‎l‎e‎&‎m‎=‎t‎e‎x‎t‎

と表示されるようになる。



例2 :title=を予め入力してある場合 (still buggy)

[http★://anond.hatelabo.jp/20100827093416:title=1日で1,000人にフォローされる地味な作業]

入力して(★は削除)http修正ボタンを押すと、記事中では

1‎日‎で‎1‎,‎0‎0‎0‎人‎に‎フ‎ォ‎ロ‎ー‎さ‎れ‎る‎地‎味‎な‎作‎業‎

と表示されるようになる。



参考文献

h‎t‎t‎p‎:‎/‎/‎a‎n‎o‎n‎d‎.‎h‎a‎t‎e‎l‎a‎b‎o‎.‎j‎p‎/‎2‎0‎0‎7‎0‎3‎2‎8‎2‎3‎4‎7‎2‎4‎

h‎t‎t‎p‎:‎/‎/‎a‎n‎o‎n‎d‎.‎h‎a‎t‎e‎l‎a‎b‎o‎.‎j‎p‎/‎2‎0‎0‎9‎0‎6‎1‎6‎1‎7‎3‎9‎0‎6‎

2010-08-09

めっちゃトンデモいい商売のネタ考えついたぜ

Inspired by これ→ http://d.hatena.ne.jp/DocSeri/20100807/1281152204 ね。

ホメオが根拠無いだとかナンセンスだとか、科学の力で否定するのができるとかできないとかは、まぁどうでもいい。

オレ自身は信じちゃいないが、上のリンク先にあるような話を真に受けて信じちゃってるオツムの不自由な人々が日本だけでも数十万とか、グローバル世界展開したら、たぶん数億人レベル存在するに違いない。そこにカネモウケの匂いがするから、とりあえずビジネスにしてみようぜ、みたいな。


なんたって、そのレメディとやらは、物質的に有効成分が一分子も入ってなくても、なにやら記憶というかパターンというか波動というか、得体は知れないけどなんらかの「情報」が転写されてれば「効果がある」そうじゃないか!

しかも、その情報ネット回線を経由して転送できることが証明されてるそうだし。


すなわち、音楽ビジネスと同じなのだよ。ビニールポリカーボネート円盤を買ってこなくても、ネット配信で入手すればOKだし、ちょっと法的にアレなことに目をつむれば、タダで共有することも可能ってわけだ。

イマドキ流行クラウドバーチャルウェブサービスで、モバイルユビキタス対応するフリーミアムビジネスモデルを構築すれば、受けること間違い無し!



では、どうやってマネタイズするか。

ニコニコ動画と同様に「プレミアム会員」には毎月500円くらい払ってもらう。すると、あなたの生年月日や血液型星座十干十二支生理周期や姓名の画数や手の平のシワの具合や鼻や耳やヘソの形や、あるいは生まれたときの水星冥王星の角度とかまでモロモロの要素を計算して盛り込んだ「あなただけにピッタリのオーダーメードなレメディ(の情報)」を生成してダウンロードできるようになるのさ。


だれか、はまちちゃんだか、えがいひとだか、どこぞのおもしろ法人だか、スーパーハカーなひとがやってくんねーかなー?彼らなら、とりあえず無料部分までなら2〜3日もありゃ構築できるんじゃねーのか。


そんでもって、そういうWebサービスを始めちゃったら、元祖本家のホメオな人たちがどういう文句を付けてくるのか、楽しみで仕方がないなぁ...

音楽だったら著作権法違反がどーたら〜で取り締まれるけどさ、レメディ情報ってヤツらが主張する「客観的な(?)物質波動だかなんだかをそのまま写したもの」だと思うんで、著作物には当たらないよなー。マトモな科学的根拠も無いわけなので特許権も登録できないだろうし、商標登録になってるようなら、そこだけ少し配慮しとけば、法的にはアレなことって無さそうに思えるんだけど。

ヤツらが「そんな画像情報が転写できるなんてインチキだ。根拠がない!」とか言ってきても、そこはもうhogeでfugaでpiyoな方法はオレらが開発した独自の計算式で量子力学に基づく超弦理論波動関数で明らかに証明できてるから間違いないってあくまで言い張ればいいし。


ぜったい、ビッグビジネスになるぜ :-P

2010-07-29

いつも使ってるサイトURLが変わってた

前から運営会社放置してたけど、今回も告知なしで。

以前



http://hogepiyo.jp/



って感じのURLが(hogeとかpiyoってのは実際のサイトを指してるのではありません。悪しからず)



http://mx1.hogepiyo.jp/



になってた。

そんなに使ってほしくないんだろうか。

2010-05-05

twitterで不用意な発言をして大炎上してどうしようもなくなって...

鍵かけてスクリーンネーム変えて逃げたつもりの子の新スクリーンネームを知るには。

まぁ、気づく人はすぐ気づくはずだけど。

  1. 消えたスクリーンネームググる。よほど時間が経過してなければ大体そいつのtwitterはヒットするので、キャッシュ開く。
  2. アドレスバーRSSアイコンが出ていれば大勝利。
  3. そのアイコンクリックしてhoge's tweetを講読する。
  4. まぁprotectなのでnot authorizedとかなるけど気にしない。知りたいのはURLだけだから。
  5. RSSURLは、「http://twitter.com/statuses/user_timeline/00000000.rss」みたいなものなのだが、その「00000000」がそいつのtwitterにおけるID。これはスクリーンネームを変えても不変。
  6. IDがわかったところで「http://twitter.com/users/show/00000000.xml」にアクセスすれば現在スクリーンネームや、書いてればプロフィールやLocationが取れる。
  7. twitterのホームの検索欄に、to:新しいスクリーンネーム、とか入れて検索すると、そいつへのreply検索できたりするのだが、他のやつがそいつに何を言っているかを読むと、そいつが最近どんなことを言っているかは案外分かるものだ。

2010-04-19

http://anond.hatelabo.jp/20100419200230

俺は最初に書く

( → () → (define hoge '3) とか

読みかたは

かっこ でふぁいん ほげ くおーと3 こっか

2010-02-21

俺のhogeがfooしてbarになる

2010-02-13

R基礎文法最速マスター

基礎

外部スクリプトの読み込み

Rコンソールに一行ずつコマンド入力してもいいけど、実際に使うにはテキストファイルコマンドを書いて(ソースコード)一気に実行させる方が楽。

source('hogehoge.R')

hogehoge.Rというのがソースコードを書いたファイルソースファイル)の名前

ライブラリの追加

CRANという、CPANパクリがある。膨大な数のライブラリがあるので、好きなものをインストールするには、

install.packages('hoge',dependencies=TRUE)

とするのが楽。

変数宣言

不要。変数に使える文字も結構多い。日本語でもOK。

> あ<-1
> あ
[1] 1
代入
a<-1
b=2
1->a

どれでもいい。但し推奨されてるのは一番上。Rの人は「束縛」という言葉を使いたがる傾向があるけど、どっちでもいいと思う。

余談だけど、関数引数の中で代入できる、しかもその値をそのあとの引数で使える。これ実は便利。

> sum(a<-1,a)
[1] 2
変数の内容を確認

基本は変数名を入力すれば表示される。

> a
[1] 1
> str(a)
 num 1
> summary(a)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      1       1       1       1       1       1 

最後のsummaryはRっぽい。strっていうのはstringではなくstructの略(だと思ってる)。Rの変数はいくらでも複雑な構造になり得るけど、そのときにぱっと見がわかるように構造を出力してくれる。

ベクトル

Rの基本はベクトル

ベクトルを作る

ベクトルの作り方はいくらでもあるけど、例示するのが早いでしょう。

> x<-1:3
> y<-c(TRUE, FALSE, TRUE)
> z<-c("a","b","c")
> x
[1] 1 2 3
> y
[1]  TRUE FALSE  TRUE
> z
[1] "a" "b" "c"

他にもいっぱいあるし、関数返値ベクトルってこともよくある。

> runif(3)
[1] 0.2200965 0.6391403 0.1089252

一様乱数を三個作った。

ベクトルの要素にアクセス
> x<-letters[1:5]
> x
[1] "a" "b" "c" "d" "e"
> x[2]
[1] "b"
> x[4:5]
[1] "d" "e"
> x[c(1,3,5)]
[1] "a" "c" "e"

こんな感じで、[]の中に添え字でアクセス。1-indexなので注意。2,3番目の例では添え字にもベクトルを使って、複数の要素に一気にアクセスしてる。

ベクトルの要素に代入
> x[3]<-"z"
> x
[1] "a" "b" "z" "d" "e"

でOK。

終わりに

要望があれば続くかも。

2010-02-08

ブクマコメントセルフスターつけてる奴って何なの?

はてブとか見てて、おっ、と思わせるコメントスターがたくさんつけられてるのは、まだ理解できるけどな。

一方で、極論しか語ってないような奴のコメントにやたらとスターが付いてる場合があって、マウスカーソル当ててみるとそいつのIDだったり、クリックすると退会してる会員のIDらしくてスターページ(http://s.hatena.ne.jp/[hoge]/)に行き着けなかったりする。まあおそらく、当のブックマーカーダミーIDなんだろう。頭隠して尻隠さず。自作自演にすらなってない。お笑いぐさにもなりゃしねえ。

だけどこういうのって、スパムとして運営に通報したほうがいいのか?よくわかんねえ。

2009-10-01

http://anond.hatelabo.jp/20091001225251

いや、管理上必要だってのはわかるけど、めんどくさいもんはめんどくさいのよ。

だって



////////////////////////////////////////////////////////

///@brief hogeを返すゲッター

///@return hoge

////////////////////////////////////////////////////////

Hoge* getHoge(){

return this-&gt;hoge;

}



とかだぜ?コードよりコメントのが多いってどうなんだよって感じ。

コード整形のはてな記法を使うとなぜかサーバにはじかれるもんで、見にくくてすみません

2009-09-18

http://anond.hatelabo.jp/20090917163038

会話について

とりあえずあらかじめ質問を考えておいて、それだけを相手にぶつけてるように見える。

相手の答えから流動的に質問を変えることは出来ない?

増田の例を使うなら

今の増田

増田りんごとは何ですか?」

先輩「りんごは赤くて甘いものだよ」

増田「えっ」

先輩「えっ」

増田みかんとはどう違うんですか?」

先輩「みかんは黄色くてすっぱいんだよ」

増田「えっ」

先輩「えっ」

て感じだけど、

増田りんごとは何ですか?」

先輩「りんごは赤くて甘いものだよ」

増田「甘いということは、食べ物ですか?」

先輩「うん、食べ物果物だね。」

増田みかんとはどう違うんですか?」

先輩「みかんは黄色くてすっぱいんだよ」

増田「なるほど。りんごは『赤』く『甘』い。みかんは『黄色』く『酸』っぱい。他にこの二つについて違い(関連性)はありますか?」

…という感じで。

できればノートに簡単な図を書きながら会話を進めていくとモアベター


記憶方式云々について

ツリー型だろうが配列型だろうがデータには変わりないんだから考え方を変えればいいんじゃない

C:\hatena\hoge\anonymous.txtを見て

ととるか、

ととるかは増田のお好みで。

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した。まぁそうだよねぇ。

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