「シンタックス」を含む日記 RSS

はてなキーワード: シンタックスとは

2013-07-30

フジロック1日目

朝は快晴。暑さで起床。日差しが辛い。


・ROUTE 17 Rock 'n' Roll Orchestra

池畑潤二率いるバンドに、ゲストとしてトータス松本甲本ヒロト大江慎也ルースターズボーカル)がゲストとして登場。

グリーンステージ一発目としてお祭りの始まりを飾るに相応しい、愉快なロックンロールバンド

甲本ヒロトがYMCAを歌っていた時に物販列に並んでいたのが非常に悔やまれる。

トータス松本金髪似合ってないからやめたほうがいいと思う。

あと、いつの間にかクリス・ペプラーベース弾いててワロタ


SOIL & "PIMP" SESSIONS

社長はいつも通りガウン羽織ってらっしゃって非常に暑そうだ。

バンド内で社長役割は「アジテーター」となっているが、実際はサックスエフェクターをいじってダブ風にしたりパーカッションをしたりとちゃんと他の仕事もしていた。

クラブジャズバンドであるため、どうしても後に見たJazzanova比較してしまうのだが、Jazzanovaの方に軍配が上がるかな。人数で負けてるし。

からといってカッコ悪いというわけでなく、むしろこの二つはクラブジャズ頂上決戦くらいな感じなので、最高に踊れた。

トランペットの人がソロの後に酸素吸入器使ってて、管楽器って大変だと思ったよ。


怒髪天

普通ロックンロール。ただでさえ暑いのにめちゃくちゃ暑苦しかった。

別に嫌いとかそういうわけじゃなくて、「ゴミ別に参加してタオルをもらおうキャンペーン」列に並んでた時に聞いたので、暑いのが辛かったってだけ。

ちなみに、「ゴミ別に参加してタオルをもらおうキャンペーン」に関しては、タオル目的に参加するとフジロックごみ問題について考えざるを得なくなるという良企画だった。

みんな、リサイクル食器は食べかすが残らないよう綺麗に食べよう。


KEMURI

往年のスカコアバンド

モッシュピットでは若者ではなく、いわゆるエアジャム世代のオッサンたちが大騒ぎ。

今でしょ!と思い人生ダイブに挑戦するも、うまく支えてもらえずしょっぱい感じで前から退場。


THE SEA AND CAKE

今回二番目に楽しみにしてたバンド

ついにJacking the Ballを生で聞ける時が来たか!灼熱のオレンジコート涼しい風が吹き抜ける!と期待が高まるが…

CD音源の方がよかった。てかライブなのに露骨に既成音源使いすぎなんだよ…これ以上何も言うまい

折角二列目で聞いてたけど途中で後ろに下がってしまった。

Twitter見てたら「オッサン感動して泣いてしまったよ」みたいな人が複数いたが、これで感動はさすがにハードル低すぎorノスタルジー効果しかない。


MY BLOODY VALENTINE

2月来日公演を見逃したマイブラ、ついにお目にかかれました。

Twitter小野島大さんが指摘していたが、最初は音が小さく迫力不足だった。なんだマイブラこんなものかと。

音量は徐々に上がっていき、最後の曲くらいになるときちんと轟音と呼べるレベルになったので、ノイズの波に包まれる感覚はちゃんと味わえた。

しかし音量は上がったとはいえ、全体的は音の解像度が低く、音のレイヤーが緻密に重ねられているCD音源に比べるとかなりお粗末なサウンド。

ケヴィン・シールズの後ろには10台ほどのアンプが並び、ギター一曲一曲取り替えていたが、努力虚しくといったところか。

Only Shallowのイントロとかライブだとどうなるのか楽しみだったのにな。

最後の曲で「うおーノイズの雨だ!」とか思ってたら本当に雨が降り始めて、「これはマイブラの演出か!?ハンパねぇ!!」とか感動していたのだが、その後雨は笑えないレベルに。


Chara

豪雨によりレッドマーキーには人が殺到

後ろの方で見るハメになったが、後ろの人達目的Charaではなくテント屋根

静かな曲の時も、隣の外国人が大声で会話をしており勘弁してくれという感じだった。

しかし「やさしい気持ち」は一応聞けたのでよかった。

Charaの声は生で聴く尋常じゃなくハスキーであり、s/n比が大変なことになっていた。

もはやノイズボーカルといっていいレベルであり、非常階段のシャウト担当の人を思い出す。

「やさしい気持ち」サビでは絞りだすような歌い方がさらノイズ成分を増していて、音程かい世界をもはや超越していた。。。

これは是非ライブ聴くべき。前で聞けなかったのが悔やまれる。

参考動画https://www.youtube.com/watch?v=EoUSERsC8VI


フライングロータス

音楽もさることながら、注目を集めたのはその舞台演出だろう。

日見初音ミクオペラTHE ENDと同じ舞台構造で、背景のスクリーンと前面にある半透明スクリーンの間にDJブースがあるという構造

このVJがすごすぎて、ちゃんとみんな音楽聞いてなかったんじゃないの?と思うレベル

というか私自身が音楽に集中できず、あまり覚えていない。

印象的だったのは、インテリジェントなサウンドと裏腹に、フライングロータス本人がかなり頭悪そう(いい意味で)でハイテンションアジテーターだったことw

無駄に「オキナワー!キョウトー!インザマザファカ!」とか叫んでた。


Char

迷うことなく1日目のベストアクト。

ライブはなんとノープランCharが友人ギタリスト及びフジロック出会ったギタリストを順番に招いてひたすらジャムセッションしていくというもの(なんと二時間半も!!)。

ギターを少しでもかじったことがある人なら感動せざるを得ないライブだった。

Charはそれぞれのゲストギターで会話。必要言葉は「キーはDで!」というセリフのみ。

ギターでの会話にはきちんとシンタックスがあり、方言もあった。

奥田民生ソロの後にCharが「おっ、ギター広島弁だねぇ」と言ったのが印象的。

フジロック当日に初めて会ったEddie Roberts(The New Masteroundsのギタリスト)はファンクギタリストであり、Charブルースギタリスト

ジャンルの違いは方言の違いのようなものであり、お互い歩み寄り会話を成立させていく様には全てのギター小僧が感動したことだろう。

Char本人に関して言えば、立ち居振る舞い、声、ギター、何をとっても最高にかっこいい不良中年だった。

ライブ中にタバコは吸うわ、ビール缶を蹴って客席に飛ばすわ、そんでもって58歳にもなってビールを口から友人に噴きかけるやつなんてCharくらいのものだ。

そして、Charゲストたちだけではなく観客との掛け合いも忘れない。

「そろそろ声出しとく?」とライブ中何回もコールアンドレスポンスはさみ、雨でずぶぬれになった観客たちの体を温めてくれた。

最後Warの「Cisco Kid」の替え歌で、全てのギタリスト総出で「Fuji Rock Kid」を演奏

我々観客はサビで「Fuji Rock Kid was a friend mine」と大合唱

裏でやってた(どちらかと言えばCharが裏だが)ナイン・インチ・ネイルズも少し気になったが、Charを選んで本当によかったと思えるライブだった。

佐藤タイジ奥田民生ハードロック鈴木賢司エレキシタール、Eddie Robertsはファンク、CHABOとCharブルースという、もう本当に異種格闘技戦だったわけで。

Char×Eddie Robertsなんてもう二度と見られないだろう。


勝井祐二 and The Magic Caravan

日付も変わってなんと25時からライブ

ピラミッドガーデンという辺境の地でしかも深夜ということもあり、夕方のCharaとは対照的にセレクトされた客層。

どれくらい辺境かというと、メインステージがある方向と反対方面にテントサイトから徒歩20分というレベルなのだが、この場所は勝井さんたっての希望らしい。

まずは勝井祐二×U-zhaan即興演奏。先ほどのCharとはシンタックスこそ異なれど、これまた達人同士による会話が繰り広げられる。

多分彼らは無限に会話を続けられるだろう。こうした即興演奏を見ると、もはや曲という概念がよくわからなくなってくる。

そしてギターボーカルとしてSORA、青葉市子が順番に登場。

青葉市子はポンチョサングラス、箒を振り回しながら登場し、その場にいた全員を困惑させる不思議ちゃんぶり。

青葉市子は弾き語り音源ライブを聞いたことがあったが(翌日にも見た)、そこにエレキバイオリンタブラが加わるとさらに素晴らしい曲に仕上がっていた。

どうせなら三人でやった音源CD化してほしい。

最後はその日が命日であったrei harakamiU-zhaanが共作した「川越ランデブー」を勝井祐二U-zhaan、青葉市子の三人で演奏

大げさな言い方だが、即興演奏の達人たちはもはや死者とも会話していた。

といってもシリアスな感じではなく、曲はむしろU-zhaan特有なシニカルユーモアあふれるものだった。

からYouTube原曲を聞いたが、歌の部分は青葉市子が歌う方が可愛げがあっていいと思う。

しかし、斎藤牛蒡店は自らのやばさに気づいてないあたり、U-zhaanよりもさらやばい

参考動画https://www.youtube.com/watch?v=NICEXdZ2s3o

勝井さんの演奏を見るのはこれで4回目だが、毎度毎度違った印象だ。

一緒に演奏する相手によって音が変わるさまは、まるで多言語話者のようである

この日は以上。お風呂に入っておやすみなさい。

2013-06-16

理想プログラミング言語

http://anond.hatelabo.jp/20130614232508

処理系
  • 見通しの良い非同期処理 → Groovyか?
  • 使える環境はできるだけ多いとうれしい → Groovy
  • 起動速度が速い → Groovyか?
  • 実行速度ができるだけ速い → Groovy
まとめ

Groovy

2013-06-15

http://anond.hatelabo.jp/20130614232508

いわゆる「LL」ではないけど、Scalaを挙げておきたい。希望の要件はおおむね満たしてると思うけど、以下注釈

val users = service.getUsers // 1
val result = users.map { users => users.filter { u =>
  u.name.head == 'T' // 2
}}.flatMap { users => Future.traverse(users) { user =>
  db.write(user.id, user.name) // 3
}}

result.onSuccess { case _ =>
  println("Success!") // 4
}
// '=>'がうまく書けなかったので全角になってる。

http://anond.hatelabo.jp/20130614232508

言語機能として欲しい機能ライブラリ任せでしんどい」と「不必要シンタックスシュガーがない」って完全に矛盾してるな。

C# の await ? あんまり知らないけどブロックせずに同期処理っぽくかける」というの、もしC#みたいに言語機能として取り入れてほしいとおもってるなら「不必要シンタックスシュガー」だと思うぞ http://bleis-tift.hatenablog.com/entry/asyncawaitdis

2013-06-14

理想プログラミング言語

普段Perlを書いているんだけど、言語機能として欲しい機能ライブラリ任せだったりしていろいろしんどい

かいプログラミング言語はないかなーと思っているんだけど、なかなか自分の好みとピタリとくるものがない。まぁ好みにピタリとくるものなんかプログラミング言語に限らずないんだろうけど。

なので夢想してたのを垂れ流してみる。最近OOPディスのエントリとかあったので話題作りになれば。

Web系のエンジニアなのでWebサービス作ることが前提で、範囲広げすぎるとまとまらないので今回はLLを想定してる。

だいたい PHP, Perl, Python, Ruby, JavaScript あたりをイメージしながら、さらにこんな機能があればいいなーと思って書いたよ。

言語仕様
処理系
まとめ

2013-06-12

ミラーリング」は万能か?~その隠された危険

 昨日ゼミの先輩と学食バッタ出会い、とても久々の非ぼっち飯となったのだが、その際「(実名)くんは東浩紀と喋り方が似ている」とのご指摘があった。酒が入るとまんま劣化東浩紀だという自覚はあったが、素面かつ公の場でもあずまナイズされていたとは……。

 敬意や好意を抱く相手の言行と自分の言行とが似てくる現象には「ミラーリング効果」という名前がついているらしい。さらにはこの逆を能動的に解釈した「ミラーリング自分の言行を特定の対象と似せることでその対象の好意を引き出す)」というのがあり、これは対人コミュニケーション重要テクニックの1つとなっているようだ。「それらしい」解説サイトには、「(恐らく動物的なレベルで)自分と同じ言行をする人間を仲間だと思うから」という理由が附されているが、いくら無意識自我の及ばない領域だとはいえ、人間の行動の多くを司る知性を動物の水準にまで落とし、その点のみで理由を探ろうとすることもないだろう。確かにちょっとした言行(会話で応答の際にオウム返しを入れる、同じタイミングで足を組む、同じ物を注文する等々)はそのような理由から来ているのかもしれないが、思うにこれは「(意識無意識にかかわらず)自分のいいところ」が、心身ともに自分とは別の個体である他者の中に見出されたとき、その他者に対して「無意識に」好意的な感情を抱くことにより、理性の管轄外で自己承認を行うプロセスなのではないだろうか。

 だとすればその裏、すなわち「自分のよくないところ」に対してはどうか。シンタックス上は上記したミラーリング効果対偶に当たるので、ミラーリング効果が真ならば「好意的ではない感情を抱く」ということになるが、これだと少々不明瞭なうえ、シンタックス上の真偽は必ずしもセマンティックス上の真偽を保証しない。だが細かい部分を無視し、思い切って「自分のよくないところ」を「自分の悪いところ」に、「好意的ではない感情を抱く」を「嫌悪感を抱く」に置き換えてみると、おぼろげながら見えてくるものがある。「自分の悪いところを他者に見出しとき、その他者に対して嫌悪感を抱く」――これは同族嫌悪理屈を指していると考えることは出来ないだろうか。だとすればミラーリングは、一般に語られない重大な欠陥を抱えているということになる。相手が意識するせざるにかかわらず、「相手の悪いところ」をミラーリングすることで、相手が自分に対して同族嫌悪的な感情喚起する可能性があるからだ。

 そんなわけで、尊敬する人の前ではやや立ちふるまいを意識しなくてはな、と考えた次第でありますおあとがよろしいようで

2013-03-04

はてなブログテーマ投稿があらゆる意味プロ向けすぎて萎え

テーマストアが公開されたので、週末の時間を使ってちょっと作ってみたんだけど、想像以上に手間がかかったのでまだ完成してない。

手引きに「オリジナルテーマ作成は、CSSの知識がある方を対象にしています。」なんて逃げを打ってるけどさ。プロ向けにしたってちょっと投げっぱなしじゃないの?

以下、萎えリスト

スタイル仕様が公開されていない

そのため、気合いで解析する必要がある。保守するプログラム設計書もコメントもないなんて常識だよねー、的な? まあ頑張ってFirebugするわけですが、当然、解析できるのはCSS構造までであり、そのスタイル意図などはわかるはずもないわけで。もしかしてアレですか。Webデザイナであればフィーリングで伝わるようなレベルの問題なんでしょうか。私のような卑しいSIerエンジニアWeb業界転職してから出直した方がいいのでしょうか。

テストの仕組みが提供されていない

テスト用に別ブログ自分で開設し(!)、自分であらゆる表示パターンを網羅するテストページを作成(!!)し、カスタムCSS記述しては保存、各種確認URLを開いて回る、ということを公式に求める始末。なんではてな様のテーマ作成コスト削減にそんな苦労をしてまで貢献しないといかんのですか。ちなみに手引きで紹介されているサンプルエントリーでは何かと不十分。脚注とかないし。シンタックスハイライトじゃないPREないし。コメントとかスターとか自分でつけないとだし。複数ページないとPagerでてこないし。つーか、はてなの公式テーマとか作ったときに使ったテストHTMLテストケースを公開してくれればいいんでないの。・・・あるよね?

この前のトップページデザイン変更もそうだけど((自分場合、横方向の視線移動を求められるようになったのが苦痛で仕方が無い))。使う人のこと、基本的にあんまり考えてないよね、はてな。とにかく、はやりの技術デザインを使ってみたいんだろうね。それがユーザーにとっていいかどうかは二の次なんだろうね。個人の趣味じゃないんだからさ。ねえ。お願いしますよ。こんなんで月980円(だっけ?)もとろうだなんてどうかしてるよ。

公式でも投稿でもいいかはてなダイアリー並にテーマがたくさん使えるようになるのはいつなんでしょう。


あと全然別の話だけどついでに文句書いておくと、スマホはてブWebはなんでわざわざAjaxでPager実装しているの? だって最新ホットエントリー一覧なんて、前のページのコンテンツ保持しておく必要性も薄いじゃない。何が困るって、次ページ読み込み中(■がくるくるしてる状態)に電波切れると(地下鉄とかね)、ボタン押せなくなってるから電波復帰してもどうにもならなくなるのよね。リロードすると1ページ目に戻るし。普通にリンクで次ページ遷移じゃダメなの?

2012-03-14

はてなからTumblrに移るための手引き

要約:Tumblr日記帳としてもソーシャルブクマとしても使えるので、ダイアリーブックマークを止めてTumblr一本にすると捗ります

Tumblrはてなダイアリーの代用になるか?

なります

はてなダイアリーで個人的に便利だと思っていたのは次の4点です。

  1. テキストベースで書ける。
  2. コードシンタックスハイライトが充実している。
  3. はてブされやすくて、他の人に見てもらいやすい。
  4. どうせはてブを使うので、複数のサービスを行き来したりログインしなおす面倒くささがない。

このあたりは Tumblr にしてもだいたい大丈夫というか、むしろよくなります

  1. Markdown記法で書ける。
  2. シンタックスハイライトJavaScriptを使えばいくらでもできる()。
  3. リブログされやすくて、他の人に見てもらいやすい。
  4. Tumblrブクマ役割果たしてくれるので、2つのサイトを行き来する面倒くささがない。
  5. JavaScript が貼れるので、ブログパーツアクセス解析は自由。
  6. 独自ドメインを割り当てることもできる(無料)。
  7. その他、シンプルモダンブログに欲しいものは大体揃ってる。

ブクマポストと区別して整理したい人は、タグ(「日記帳」など)をつけると便利です。

ちなみに日本語タグ普通に使えます

Tumblrはてなブックマークの代用になるか?

ちょっと違いはありますが、なります

私の考えでは、はてブ価値は次の3点に集約されます

  1. 人気エントリお気に入りユーザーブクマが上がってきて、いい情報が簡単に手に入る。
  2. 他の人のコメントを読んだり、他の人にコメントを見せたりできる。
  3. タグ付け機能が充実していて、資料として蓄積し、後で利用しやすい形で記録を残せる。

Tumblrならこうなります

  1. いいエントリはなんどもダッシュボードに上がってくるので、ダッシュボードを一日8時間以上監視する平均的なリブロガーにとっては問題ない。
  2. 他の人のリブログを無言でリブログしたり、たまにはコメントをつけあったりできる。
  3. タグ付け機能や Like が充実していて、資料として蓄積し、後で利用しやすい形で記録を残せる。/archive を見て、後で悦に浸ることもできる。

真面目に付け加えておくと、やはり少し違うものが貼られる、上がってくるという感じはあります

やってみて肌に合わない思った人は、Twitterのほうがいいかもしれません。

ブックマークでは「あとで読む」な使い方もしばしばやりますが、その感覚Tumblrをやると

クォート無しでリブログするとはけしからん」と偉い人から言われたりします。

でも、最初は気にせずガンガンやって大丈夫です。

慣れてくると自然に、リンクだけのリブログが物足りなくなります

具体的な移行方

結論から言うと、

移行するというのがおすすめです。

ダイアリーブックマークからエクスポート

このご時世何が起こるか分からないのでエクスポートはできるうちにしておきましょう。次のページを参考にしてください。

過去エントリを全部Tumblrインポートしたいという人は、頑張ってくださいというしかないです。

どうしてもやりたければTumblr APIを使うか、どこかでツールを探してくればできると思いますが、

面倒だし、実際インポートできても大した実益はなさそうなので、私は諦めました。

インポートできても結局、誰も新しい方を見にはきません。

最近検索エンジンは賢いので、コピーだと認識して相手にしてくれません。

そもそも種類の違うサービスなので、インポートしないほうが後腐れなくていいんじゃないでしょうか。

Tumblrアカウントを作る

まだアカウント持ってなければ作りましょう。

最近日本語I/Fも整備されているので簡単なはずです。

http://www.tumblr.com

Markdown に慣れる

Markdown は GitHub とかでも使えるグローバルスタンダードな感じですし、慣れればはてな記法と大差ないのでこの機会に覚えましょう。

http://blog.2310.net/archives/6

ちなみに脚注記法もあります参考)。

まり知られてなさそうですが、個人的にはよく使ってます

Tumblr で誰かをフォローする

いままでTumblr使ってなかった人は、まずは誰かフォローしないと寂しいと思います

はてなーの皆様におかれましては、まずは http://otsune.tumblr.com をフォローしてそこから芋づる式に増やしたり、

http://mao.s151.xrea.com/tumbrowser/text.html でこれはというリブログをしている人をフォローするのがおすすめです。

ツールをインストールする

公式ブックマークレット http://www.tumblr.com/goodies をとりあえず使ってみましょう。

Tumblr検索性ははてブはてなダイアリーと大差ない(=いまいち)ので、

ifttt を経由した Evernote への自動保存を設定しておくと便利です。

さらにヘビーに使う方には、Tumblr代名詞とも言える秒間10リブログ廃人ツール、

Tombloo (for Firefox) と taberareloo (for Google Chrome) もあります

お好みでどうぞ。

2010-02-15

http://anond.hatelabo.jp/20100215141354

言葉が話せない以前にセマンティクスとかシンタックスという単語を使う必要がない上に、

読んだ一般的な人間からして読みづらい単語使ってるその神経が問題のような気がしてならない

最近言葉が流暢に話せなくなった

頭の中に構築してあるセマンティクスと実際に表現できるシンタックスの繋がりがかなり弱くなってる。

言っても意味が伝わらなかったり、そもそも言葉にできずにあたふたする事が多い。

何これ。若年性アルツハイマー統合失調症?怖い。

2010-02-05

[]http://anond.hatelabo.jp/20100205131149

二重エスケープじゃなくて、エスケープした後にはてなキーワードリンクに変換されている。類似で&というのもある。

あと、化けるのはスーパープレ記法でもシンタックスハイライトしたときだけ。

プラス&が&に化けるおまけ付き

$www = "w" & shift;
$www = "w" & shift;

シンタックスハイライト失敗する。なぜだろうか。

2010-01-05

Macemacsって使いにくくないだろうか?

404 blog not foundの人とか。miobjective-cシンタックスハイライトサポートしてないようなので、はじめてemacsに手を出したのだけどcontrolキーが左側にしかないのでファイル開いたり保存したりするのが大変すぎる。左手の小指がつりそう。ヘビーユーザは一体どうしてるのだろうか?

2009-12-29

SPSSシンタックス 覚書

・各行の1列(桁)目が半角ブランクである場合は継続行記号。

・各行の1列(桁)目が半角アスタリクス“*”である場合は注釈行記号。

ひとつコマンドを終了する記号は行末の半角ピリオド“.”。

変数リスト

 1)ひとつ変数

 2)複数の変数名を半角ブランクまたは半角カンマでくくって指定したもの

 3)ファイル変数順に指定する最初の変数名 to 指定する最後の変数名 ← これで書くとスゴク便利 e.g.)

【便利なテクニック】

・Ctrl + R でシンタックスの実行

・Ctrl + A で全体を選択して、Ctrl + Rで全て実行

***全角スペースは絶対使ってはいけない!バグる!***

2008-12-18

こっそり教えてはてダ中の人

新規投稿・既存変更の上限が1日10KBになってるのは確定?

これは新しい仕様でしばらく変わらない?

----

@2008-12-18 19:16

naoya hatena, diary そんな上限はないですよー。64kb (65,535bytes, EUC-JP日本語で 65,535/2 文字) までいけます。

わあお手数かけまして。…うーん、じゃあなんだろう。

スーパーpre記法シンタックスハイライト使ったときに、表示上でのみいろいろ中身が消えたり途中で切れたりします(1週間くらい前に投稿したときは平気だったと思うのに)。気がついたらどっかに書いたり報告したりするかもしれません。PCメモリ回線の問題だったらやだなあ。

----

やったー消える文章ができたよーみんなメモれコピれー

>|ruby|
agent.get(:url => 'http://example.com/', :referer => referer_uri)
agent.get({:url => 'http://example.com/', :referer => referer_uri})
|

を、

|<

普通に閉じて、d.hatena.ne.jp で投稿またはプレビューする、と、途中で消えます、たぶん…

2008-11-29

スーパーpre記法シンタックスハイライト)を使ってrubyコードを保存しようとすると、proxy errorとやらが出て保存できない。なぜだ!?自分はてダでは出来たぞ!?

シンタックスハイライトを使わないスーパーpre記法だったら大丈夫だった。何だったんだ?

2008-10-30

http://anond.hatelabo.jp/20081025202001

いまさらだがFizzBuzz

1から100まで、3の倍数5の倍数云々って、全部定数の計算じゃね?

というところに気付き、自称メタプログラマー(略してメタグラマー)俺の血が騒いだ。

定数計算なら、それは実行時ではなくコンパイル時に行なわれるべきだ……。

というわけでC++テンプレートメタプログラミング召喚。

#include <iostream>

const int FIZZ_NUM = 3;
const int BUZZ_NUM = 5;
const int BEGIN_NUM = 1;
const int END_NUM = 101;

template<int N> struct Fizz {
    enum {PRINT = 0, NEXT = N + 1};
    static void print() {}
};

template<int N> struct Buzz {
    enum {PRINT = 0, NEXT = N + 1};
    static void print() {}
};

template<int N, bool ForB> struct Number {static void print() {std::cout << N;}};

template<> struct Fizz<FIZZ_NUM> {
    enum {PRINT = 1, NEXT = 1};
    static void print() {std::cout << "Fizz";}
};

template<> struct Buzz<BUZZ_NUM> {
    enum {PRINT = 1, NEXT = 1};
    static void print() {std::cout << "Buzz";}
};

template<int N> struct Number<N, true> {static void print() {}};

template<int N, int F, int B> struct FizzBuzz {
    static void print() {
        typedef ::Fizz<F> Fizz;
        typedef ::Buzz<B> Buzz;
        
        Fizz::print();
        Buzz::print();
        Number<N, Fizz::PRINT || Buzz::PRINT>::print();
        std::cout << std::endl;
        
        FizzBuzz<N + 1, Fizz::NEXT, Buzz::NEXT>::print();
    }
};

template<int F, int B> struct FizzBuzz<END_NUM, F, B> {static void print() {}};

int main(int argc, char **argv)
{
    FizzBuzz<BEGIN_NUM, 1, 1>::print();
    return 0;
}

ifなし%なしループ系なし、しかも実行時オーバーヘッドなし!(多分)

あ、これを見て理解する人間オーバーヘッドは無視ね。

ああ、久しぶりにC++を触ったけど、やっぱC++テンプレートってダメダメだな。20世紀の遺物といわざるを得ない。

君がもし21世紀モテイケメンメタグラマーなら、21世紀プログラミング言語D言語を使うべきだ!

驚くべきことに、D言語コンパイル時に関数が実行でき、その結果をソースコードとして取り込める!

ただし実行できるのは簡単な関数だけだけど……。

以下、それを使ったD言語によるメタプログラミング的実装。

import std.stdio;

// これでFizzBuzzを全部出力するコードを作るぜ!
string makeFizzBuzzCode() {
    string code;
    for(int i = 1; i <= 100; ++i) {
        // 効率? コンパイル時にそんな配慮は要らん!
        if(i % 3 == 0 &amp;&amp; i % 5 == 0) {
            code ~= "writefln(\"FizzBuzz\");\n";
        } else if(i % 3 == 0) {
            code ~= "writefln(\"Fizz\");\n";
        } else if(i % 5 == 0) {
            code ~= "writefln(\"Buzz\");\n";
        } else {
            code ~= "writefln(" ~ static_itoa(i) ~ ");\n";
        }
    }
    return code;
}

int main(string[] args) {
    // おまけで生成されたコードも見せるよ。
    pragma(msg, makeFizzBuzzCode());
    
    // 生成したコードを埋め込む。コピペみたいな感覚
    mixin(makeFizzBuzzCode);
    return 0;
}

// 以下ユーティリティ。このぐらい標準で欲しいな……。

/// 整数文字列変換(コンパイル時)
string static_itoa(int n) {
    if(n == 0) {
        return "0";
    }
    
    // 10で割りながら余りを文字にして追加。桁が逆転した文字列になる。
    string s;
    for(; n; n /= 10) {
        s ~= ("0123456789")[n % 10];
    }
    
    // 桁位置を正常にする。相変わらず効率無視。
    return static_reverse(s);
}

/// 配列リバースコンパイル時)
/// 実行時ならarray.reverseが使えるんだけどね……。
T[] static_reverse(T)(T[] s) {
    T[] result;
    foreach_reverse(c; s) {
        result ~= c;
    }
    return result;
}

// 心配なので静的ユニットテスト(笑)
unittest {
    static assert(static_itoa(0) == "0");
    static assert(static_itoa(10) == "10");
    static assert(static_itoa(999) == "999");
    static assert(static_itoa(9999) == "9999");
    static assert(static_itoa(12345) == "12345");
    static assert(static_itoa(314159265) == "314159265");
}

コンパイル結果

$ dmd -unittest fizz_buzz.d
writefln(1);
writefln(2);
writefln("Fizz");
writefln(4);
writefln("Buzz");
writefln("Fizz");
writefln(7);
writefln(8);
writefln("Fizz");
writefln("Buzz");
writefln(11);
writefln("Fizz");
writefln(13);
writefln(14);
writefln("FizzBu(ry

出力結果は略。

さすがD言語C++JavaC#にできない事を平然とやってのけるッ

そこにシビれる!あこがれるゥ!

というか、

writefln(1);
writefln(2);
writefln("Fizz");
writefln(4);

もうwritefln(出力関数)要らなくね?

修正。

// これでFizzBuzzを全部出力するぜ!
string makeFizzBuzzCode() {
    string code;
    for(int i = 1; i <= 100; ++i) {
        // 効率? コンパイル時にそんな配慮は要らん!
        if(i % 3 == 0 &amp;&amp; i % 5 == 0) {
            code ~= "FizzBuzz\n";
        } else if(i % 3 == 0) {
            code ~= "Fizz\n";
        } else if(i % 5 == 0) {
            code ~= "Buzz\n";
        } else {
            code ~= static_itoa(i) ~ "\n";
        }
    }
    return code;
}

int main(string[] args) {
    // もうコンパイル時のメッセージしか出さない。(笑)
    pragma(msg, makeFizzBuzzCode());
    return 0;
}

コンパイル結果。

$ dmd -unittest fizz_buzz.d
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBu(ry

実行するまでもなく結果が出力された。つまり実行時間ゼロ、ということは……

世 界 最 速

以上、世界最速なD言語宣伝でした。

みんな使おうD言語

D言語リファレンス日本語

http://www.kmonos.net/alang/d/1.0/index.html(1.0。こっちの方が安定してる?)

http://www.kmonos.net/alang/d/2.0/index.html(もっと凄い2.0)

D言語本家配布元(無料コンパイラが入手できます)

http://www.digitalmars.com/

それにしても、ちゃんとD言語シンタックスハイライトを実装しているはてなは偉い。(笑)

2008-05-12

バイト先で使ってるシステム脆弱性を見つけてしまった件

某有名企業の末端で派遣バイトしてもうすぐ一年

つい最近、社内の重要システムに「'」を入れると、SQLサーバから「シンタックスエラー」とか言われる欠陥を発見してしまった。

っていうかこれってSQLインジェクションなんじゃ…orz

あの部分には「'」を入れることは滅多にないから気付きにくい。

そしてこのシステム、恐らくは完全にイントラ用。

社内にはクラッキングできる奴もいなそう。

仮にいたとしても、盗んだ情報を非常に持ち出しにくい(怪しい操作をする人間を特定しやすい)運用をしている。

けどこれってどうなんだ。

日頃から「情報漏洩しないようにがんばろー><」と派遣バイト派遣社員正社員含めてそこに勤務してるみんなが頑張ってる。

けど、これを無茶して(もしくは脅迫などして無茶させて)悪用する奴が現れたら一巻の終わりだよ。

※ちなみに最低でも毎日300人はそのシステムを操作しているし、その問題となる部分は権限上1000人以上の人間が操作可能と思われる。

一応、直属の上司に「これ、ヤバイエラーかもしれないんで、開発元に報告しておいてください」と報告しておいた。

開発元が『きっと大丈夫だよ(運用的な意味で』と判断せず、速やかに対処してくれることを望む限り。

2007-12-20

PukiWikiシンタックスハイライトを入れた

以下から必要なファイルDLwiki/skinに放り込む。

http://code.google.com/p/google-code-prettify/

<?php if (PKWK_ALLOW_JAVASCRIPT) { ?>
  <script type="text/javascript" src="skin/prettify.js"></script>
  <link href="skin/prettify.css" rel="stylesheet" type="text/css"/>
<?php } //** SETTING FOR GOOGLE CODE PRETTIFY! **//?>
<body onload="prettyPrint()">
  Class Pre extends Element
  {
  ...

  function toString()
  {
    return $this->wrap(join("\n", $this->elements), 'pre', ' class="prettyprint"');
  }
  }

define('PKWK_ALLOW_JAVASCRIPT', 1);

2007-11-18

プログラマでない人を見分けるライフハック

プログラマでない人を見分けるライフハック

ライフハック」という単語を知らなければプログラマではない。

プログラマインターネットを徘徊してさまざまな情報を集めるのでプログラマインターネットでよく使われる単語には敏感である。「ライフハック」や「Geek」はその典型であり、これを知っているかどうかでインターネットによく触れているかが判断できる。

対して非プログラマテレビ雑誌しか読まないので、そこで扱われていない「ライフハック」などの単語に触れる機会がない。でも「スイーツ」なら良く知っている。スイーツ(笑)

Yahoo! Mailを使っていたらプログラマではない。

プログラマなら、容量・使い勝手ともに優れていて、送信するメール広告がつかないGmailを知っている。

対して非プログラマ学生は同じく非プログラマの友達から薦められたHotmailYahoo! Mailを使い、送信するメールの末尾にそれぞれのメールサービス広告をつけているのである。FreeMLなんて論外。

アルファベットを全角で書いている人はプログラマではない。

プログラマは全角で書いたスペースや数字・アルファベットを含むコードエラーを起こしたという経験を持っていて、そのトラウマプログラミングから離れたブログ記事などの普通の文章にも現れる。

対して非プログラマにとっては全角か半角かというのは単なる表記の違いに過ぎないのである。

ブログの記事の一部のフォントサイズを大きくしている人はプログラマではない。

プログラマが書くエディタには(シンタックスハイライトはあるとしても)文字を大きくして表示させる機能はない。プログラマが書く何百・何千という行数にわたるコードはすべて単調な同じサイズのフォントで書かれているので、プログラマはそのような単調な文字列に慣れている。また、プログラマは自分の書くコードがどのような書き方をすれば読みやすいコードになるのか、また、自分の書くブログを章立てにすれば相手に自分の言いたいことが伝わるかを常に気にかけている。

対して非プログラマは自分の文章に強弱をつけるためには、文字を大きくするしか方法を知らない。

これであなたの周りにいる偽プログラマを見分けられますね!

追記:

@ujihisaに捧げたこのエントリに多くのブクマありがとうございます。嬉しいです。ちなみに上で書いた「文字を大きくする」というのはhttp://d.hatena.ne.jp/iammg/20071117みたいな書き方のことです。

最後にブクマコメントを参考にして追記です。

このエントリーを信じる人はプログラマではない。

プログラマは細心の注意をはらって情報を集め、自分の考えをまとめる。例えば、新しい話題を見つけようと国内・海外サイトを巡回し、そにかかれていることを試しもせずに自分のブログで紹介するなどといった軽々しいことは決して行わない。プログラマは常に自分のコードに書いてある条件分岐が正しいかどうか、変数の取りうる値は適切であるかどうかを気にけるとともに、自分の考え・行動が正しいかどうかを自分自身で確かめるのである。

対して非プログラマインターネット掲示板ブログに書いてあることを鵜呑みにし、さも自分が特別な情報源を得たかのように他人へ間違った知識を吹聴するのである。

2007-10-03

恥ずかしい思い出を思い切って晒す

ことで、さっさと忘れるという魂胆。

  • ある田舎駅の前の、民家の入り口にずっとおばちゃんが座ってるので、てっきり店かと思って入ってしまった。「炭酸飲料ありますか」と聞いてしまったし

_| ̄|     ((○

  • 歌を一人で熱唱しているのを家族に見られた

_| ̄|○

  • 寝坊という理由だけで、嘘をついて学校を休んだことがある((たまにはつらくても行くときあるけど))

_| ̄|   ((○

  • 駅の立ち入り禁止区域に入ってしまい、運転士に指摘された((もちろん悪意ないし知った時点でその場から離れたけど))

_| ̄|        ((○

_| ̄| ((○

ここからDelphi

  • Delphiをはじめたとき、何も読まずにprocedure Form1.OnClick(Sender: TObject);に「a = "はじめの第一歩"」とか打ってエラーが出たので、やっと調べたが、型と変数の定義という初歩で挫折し、アンインスコしたことがある((ちなみに今では普通に何も読まなくても簡単なメモ帳作れるレベル))

_| ̄|   ((○

  • Delphiの初歩を少し覚えたとき、自分でプロシージャ作ったら、フォームに置いてあるコントロールアクセスできなくて、3日迷って、思い切って2chで質問。そんでもって30分で解決((ちなみにこれが生まれてはじめての2chへの書き込み))

_| ̄|       ((○

ちなみにこんな感じのプロシージャだった

procedure test;

begin

Label1.Caption := 'テストだよん!';

end;

ちなみに語尾が「だよん」だとかのなのは、今もやってる個人的なルールっぽいもの。

_| ̄|  ○

あーすっきりした!

2007-07-22

[]C#にあるようなプロパティもどき

getter/setterを関数で書くと、後ろに()を付けないといけないから格好悪い!!

って人にオススメ

template<typename T>struct _property{

  virtual operator T() = 0;

  typedef T _t;

};

class asdf{

  int foo;

public:

  struct __foo : _property<int>{

    asdf &parent;

    operator _t(){

      printf("親クラス(?)のメンバへのアクセスが面倒...");

      return parent.foo;

    }

    __foo(asdf &p) : parent(p){}

  }y;

  struct : _property<char*>{

    operator _t(){

      printf("ここに副作用付き処理を書ける!?\n");

      printf("この関数が参照を返せばgetもどきも実装できる!?\n");

      return "ふひひひ!やったね!!";

    }

  }x;

  asdf(int v) : y(*this){ foo = v * v - v - v; }

};

void p(char*s){ printf("\n増田はこちらを振り返ると、\n悲しそうな顔をしてこう言った\n「%s」\n", s); }

int main(){

  asdf a(127);

  //生でprintfに渡すと型推論が行われない

  //それ以外の関数だったら問題ないかも

  p(a.x);

  printf("\n");

  //どうしてもと言うならキャストすべし

  printf("\n%d\n", (int)a.y);

  return 0;

}


VC8で動作確認してるよ!

はっきり言って普通にgetter/setter書くよりも手間多いね!

あとcppシンタックス表示使うと文字化けしちゃうから引用ブロックに入れておいたよ!

2007-03-05

ぜんぶかいてみた

http://anond.hatelabo.jp/20070305101151

見出し関連】

見出し記法

みだしきほうをとなえた

◆時刻付き見出し記法

t*じこくつきみだしきほうをとなえた

name属性付き見出し記法

name*ねいむぞくせいつきみだしきほうをとなえた

カテゴリー記法

[はてな]かてごりーきほうをとなえた

小見出し記法

こみだしきほうをとなえた

◆小々見出し記法

ここみだしきほうをとなえた

【その他入力支援】

リスト記法

  • hogehoge
    • hogehoge
  • hogehoge
    1. hogehoge

◆定義リスト記法

hoge
fuga

◆表組み記法

hoge fuga
hoge fuga

引用記法

hoge

◆pre記法

hoge

スーパーpre記法

hoge

スーパーpre記法シンタックスハイライト

$There's @More %Than &amp;One \$Way \@To \%Do *It.

aa記法

                 _,,,.. --- ..,,,__
              ,, r''"        `ヽ、
            /     , .∧     `'、
            //  , i  / ,/ 'i i,  ,   'i
           ',i' ,  /フ'メi_/   '、i_i,_L,, i  ',
       _,,_   ,/ ,,i / ,,r==、,,''  _,,,ニ,,i 'i,i i i,
      ./  'i ./ i. レ'i             `' i/レ'! ',    幸 運 を !
      |.  i i  '、 i    r─---┐    i  i ',
     _,,L,,_ i, i   `'i,.   i      i   ,' /  ',
   ,r''"    `'i'、!    /ヽ,   '、    ノ  ./''"    i
 / -─'''''''‐く ト-、,/   フ-、`ー‐ '",,_-''" ',      i
 i   _,,,,,__ノ ,i.i.  `'ヽー" 'ヽ,  ̄ ̄''ー0'i   ヽ    i
 'i        )i i     `ヽ  `ヽ,,`>、,,,,,,L_  \,,,j
  '、   ─--r' i i          i       ヽ,
   \,,__,,ノ-,i,i           i   0 i ',
    i,    //      ,, -'   i 0    ', i
     \,__//   _,, -ァ'''"       i   0 ', i
        ̄゛゛゛ ̄  i           i 0     ', ',

脚注記法

(( hoge ))

◆改行記法

----ここから----

1行目

2行目

----ここまで----

◆pタグ停止記法

----ここから---- < hoge fuga >

----ここまで----

tex記法

<img src="http://d.hatena.ne.jp/cgi-bin/mimetex.cgi?e^{i\pi}~=~-1" class="tex" alt="e^{i\pi} = -1">

ウクレレ記法

[uke:D7 D7@0202 C C@3345]

http記法

http://www.hatena.ne.jp/

はてな

<img src="http://d.hatena.ne.jp/barcode?str=http%3a%2f%2fwww%2ehatena%2ene%2ejp%2f" class="barcode" alt="http://www.hatena.ne.jp/">

http://www.hatena.ne.jp/

◆mailto記法

mailto:info@hatena.ne.jp

google記法

google:はてな

google:image:はてな

google:news:はてな

amazon記法

[amazon:はてな]

自動リンク停止記法

http://www.hatena.ne.jp/

id記法

id:1234567890

id:1234567890:archive

id:1234567890:about

id:1234567890:image

id:1234567890:detail

question記法

question:1234567890:title

question:1234567890:detail

question:1234567890:image

search記法

search:はてな

search:keyword:はてな

search:question:はてな

search:asin:はてな

search:web:はてな

◆antenna記法

a:id:1234567890

bookmark記法

b:id:1234567890

[b:id:1234567890:t:1234567890]

b:t:1234567890

b:keyword:はてな

◆diary記法

d:id:hatena

d:keyword:はてな

fotolife記法

f:id:hatena:hatena:image

f:id:hatena:favorite

◆group記法

g:hatena

g:hatena:id:hatenadiary

g:hatena:id:hatenadiary:20040501

g:hatena:id:hatenadiary:archive

g:hatena:keyword:はてなダイアリー利用可能タグ

idea記法

idea:182

idea:182:title

i:id:sample

i:t:タグ

rss記法

r:id:sample

◆graph記法

graph:id:sample

graph:id:sample:しなもんの体重

<img src="http://graph.hatena.ne.jp/sample/graph?graphname=%e3%81%97%e3%81%aa%e3%82%82%e3%82%93%e3%81%ae%e4%bd%93%e9%87%8d" class="hatena-graph-image" alt="しなもんの体重" title="しなもんの体重">

graph:t:体重

map記法

map:x139.6983y35.6514

keyword記法

[[はてな]]

[keyword:はてな]

[keyword:はてな:map]

[keyword:はてな:map:satellite]

[keyword:はてな:map:hybrid]

isbn/asin記法

ISBN:9784798110523

ISBN:4798110523

asin:B0009WHOMG

ISBN:9784798110523

◆rakuten記法

[rakuten:rdownload:10285260:image:small]

jan/ean記法

jan:4981254610640:barcode

続きを読む記法

====

スーパー続きを読む記法(これ大丈夫かな…ないと思うけど、以下のエントリ隠れたらごめんなさい)

=====

以上。

(追記)波線が??になっちゃってたので、hoge等に変更しました。

(追記:20070412) 引用記法の書き方間違ってたので修正しました。

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