「テトリス」って1時間で作れるモノなんですね…… 少し前に「ニコニコ動画」で公開された、「【プログラミング】テトリスを1時間強で作ってみた【実況解説】」という動画があちこちで反響を呼んでいます。現時点で再生数は20万回強、寄せられたコメントの数は2万8000件にものぼっており、一時は「総合」ランキングで7位、「科学」ランキング内では1位にランクインしたことも。その他、ブログやTwitterなどでもたびたび話題となっていましたので、すでに見たことがあるという方も多いかもしれません。 動画の内容は、C言語を使ってみなさんご存知の「テトリス」を開発し、その一部始終を実況するというもの。タイトルには「1時間強で作ってみた」とありますが、動画では無料の開発環境をインターネットからダウンロードしてくるところも時間にカウントしているため、実質的な「開発」時間はおそらく1時間を切っているはず。ブロックをフ
Perl › here Perl5.8以降における標準的なPerlの書き方を解説します。 インターネットで検索するとPerl4のころの古い記述がたくさんあります。また書籍などの多くもPerl4の記法で書かれています。Perl4の記法は複雑になりやすく間違いを生みやすいのでこれからPerlを書く人はPerl5の現代的な記法で記述することを強くお勧めします。 strictプラグマとwarningsプラグマ (必須) strictプラグマとwarningsプラグマを有効にします。 use strict; use warnings; use strict;とuse warnings;の2行はスクリプトの最初に必ず記述してください。これらはPerlの文法チェックを厳しくするためのものです。面倒だという軽い気持ちでこれを記述しないと後々本当に面倒なことになります。 use strict;とuse wa
大手SIベンダにてSEやPMやアーキテクトとして勤務したのち,株式会社豆蔵を経て,現在は合同会社シンプルアーキテクト代表社員であり,株式会社匠Business Placeのチーフコンサルタント。主に超上流のプロセスである要求開発やオブジェクト指向,アジャイル開発のコンサルタントとして活躍中。開発の現場にこだわり,開発の現場を少しでもよくしたいと日夜奮闘している。要求開発アライアンス執行委員。著書に『オブジェクト脳のつくり方』や『eXtreme Programming実践レポート』(ともに翔泳社発行。後者は共著)などがある。 Javaなど,オブジェクト指向や手続き型のプログラミングの経験はあるけれど,関数型のプログラミングは初めてという皆様のための,そして筆者自身のための「関数脳のつくり方」シリーズのSecond Season(First Seasonはこちら)。今回は「モナド」を取り上げま
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "シェアードソース共通言語基盤" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2024年2月) シェアードソース共通言語基盤(シェアードソースきょうつうげんごきばん、Shared Source Common Language Infrastructure、SSCLI)は、マイクロソフトによるシェアードソースライセンスでの共通言語基盤 (CLI) の実装である。コードネームはRotor。 そのライセンスにより営利目的の利用はできないが、プログラマが.NETライブラリの実装の詳細を調べたり、ハッカーらがCLIに変更を加えて利用することはで
C言語の char x[] と, char *x の違いを理解するためのコードの解答ですが,ポイントは,「領域」にあります. プログラムは,(色んな分け方がありますが)メモリ上ではいくつかの領域に分かれています. コード領域:プログラムのコード本体が入っている領域 定数領域:定数(リテラル)のための領域 スタック領域:変数や関数呼び出しなどに用いられる領域 ヒープ領域:動的にメモリを確保するとき用の領域 などがあります. ここで, int main(){ char x[] = "hoge"; char *y = "hoge"; x[0]='a'; y[0]='a'; return 0; } の2行目, char x[] = "hoge"; では,文字列"hoge"5バイト分*1の配列xをスタック領域に確保し,そこへ'h','o','g','e','\0'の文字列を格納しています. それに対
Heroku は現在リミテッドβの状態なので、ユーザー登録を行うにはこちらのページでメールアドレスを登録し、招待メールが来るのを待たなくてはなりません。私が登録したときは 2 週間待ちだったのですが、現在はだいたい 1 日以内に招待が来るようです。ちょっと面倒ですが、ぜひサインアップして、 Heroku の素晴らしい世界を体感してみてください。 ・・・どうでもいいけど、サインアップのページにある看板はいったい。 無事にサインアップできたら、さっそくこちらのページから heroku にログインしましょう。すると、最初に以下のアプリケーション管理画面が表示されます。 heroku では同時に複数の Rails アプリケーションが開発できるので、この画面でそれらを管理するわけです。しかし、現在はひとつもアプリケーションが存在しませんので、新たに作成してみましょう。アプリケーションの作成は「Cre
The Next Generation Platform is Coming Introducing the next generation platform built on leading cloud infrastructure services and open source standards. Powerful platform, unparalleled ecosystem Don't reinvent the wheel. Heroku's 150+ third-party add-ons and 380+ open source buildpacks provide a rich ecosystem of preintegrated extensions and services
ある命令をバイト表現でハンドアセンブルしたいとき、Intelのオペコード表の見方を理解していないと非常に苦労する。しかし、Intelのマニュアルはとっつきづらい*1ところがあり、理解するのに時間がかかるので、ヒントとしてまとめていく。ちなみに、小数点系やx64については扱わない。 用意するもの Intel命令セット リファレンス OllyDbg(ハンドアセンブルして確認するため。実際は何でもよい) OllyDbgで適当なバイナリを開いて、命令行を右クリックして表示されるメニューでバイナリを編集できる。 [Assemble...]はアセンブラで記述することができる [Edit] > [Binary edit...]はバイトコードで記述することができる オペコードの表記 バイナリアンが最も好む命令はINT 3、NOP、JMPであることは疑いようがないので、ここではJMPを例にとる。JMPのオペ
GAEのJDOのモデルは、ざっくりいうと4種類の状態があります(本当はもっといっぱいあるけど、4つをおさえておけば普通はOK)。 transient persistent detached hollow モデルをnewして、PersistenceManager#makePersistent()を呼ぶまでは、transientです。 PersistenceManager#makePersistent()がよばれるとpersistentな状態です。persistentなモデルの状態は、PersistenceManagerをcloseするかTransactionをcommitしたときに、データストアに反映されます。 PersistenceManagerをcloseしたときからが、運命の分かれ目。何の設定もしないとhollowになり、lazy loadingされているオブジェクトに触ろうとするとエ
PostScriptはページ記述言語だと思っていた。 一般的な認識もそうだと思う。 でも、実はかなり高度な事ができるらしく、過去には「リバーシ」を実装した人や「Web Server」を実装した人がいるらしい。 これにはかなりショックを受けた。
Windowsで色々な行うようになって不便なのが規定のブラウザの切り替えである。 コンテキスト(URLの中身、現在起動しているブラウザなどなど)によってSlack, DiscordなどのアプリからURLをクリックした場合に起動するブラウザやプロファイルを変更したい。 そういうツールがないか調べたところ Browser Picker というものがあり、やりたいことの8割はできるのでこれでいい感じだった。ただ一点、細かい不満があるとすれば起動が遅いことである。リンクをクリックしたあと、一瞬遅れてブラウザが起動するのでもっさりを感じる。.net とC#で書かれているからだろうか 我慢できないほどではないが、いい機会なので自分で作ってみようと思ったのが以下のものである github.com アーキテクチャ Visual C++ 2022でWindows APIをゴリゴリに使う形でやっている。C/C
8月1日から8月31日までの1ヶ月間、PFI夏期インターンに行ってきました。 はてなインターンの 講義・課題・チーム 形式とは趣を異にして、個々人が何か1つのプロジェクトに取り組む方針で進みました。取り組むテーマは 新たに取り組みたい/今取り組んでいる 内容を前提に、既存の問題の中から近いテーマを見つけます(あるいはこじつける^^;)。 インターンの期間中の1ヶ月か2ヶ月の間に成果を出すのが目標! 取り組むテーマはスムーズに決まりました。何か自社で製品を作っていれば普通かと思いますが、探せば問題はいくらでもあるモノです^^ ちなみにPFIの製品は、全文検索エンジンやレコメンドエンジンなどです。 私は以下の4つのプログラムを実装しました: 既存の実装に代わるRPCフレームワーク MessagePack-RPC for PFI クラスタ管理ツール clx プロセス管理ユーティリティ daemo
型推論によってコンパイル時に決定される型 今までこう書いていたのが vector<int> v; vector<int>::iterator it = v.begin(); こう書けるようになる vector<int> v; auto it = v.begin(); 「vector::begin()がvector::iteratorを返す」なんてことは コンパイラは知っているので、めんどーなことはコンパイラにまかせちゃおうというものです ちなみに、autoにたいして*, &, const/volatileで修飾することもできます int a = 3; auto* p = &a; // int* p = &a; auto& r = a; // int& r = a; const auto& c = a; // const int& c = a; C++0x言語拡張まとめ
さて、前回に引き続き、第2回目のエントリーとなります。 第1回の様子を見てみると、emacsに興味がある人はやはり多いんだなと感じました。今回は実際に立ち上げて、emacsで文章を編集する操作まで行きたいと思います。 emacsを操作する際に使用するキー emacsでは、CTRLキーとMETAキーとの組み合わせを利用して様々な機能を利用します。CTRLキーは馴染みのあるキーです。METAキーはALTキーもしくはESCキーで使用しましょう。私自身は、METAキーは、ALTキーで代用しております。 それでは、それぞれのキーの組み合わせの記述について説明をします。emacsのコマンドはよく以下のような記載をします。まずはこれをみて操作内容を理解できるようにしましょう。 機能 コマンド コマンド解説 左へ移動 C-b CTRLキーを押しながら、アルファベットのbを押す 1単語右へ移動 M-f ME
Google Code Blog - Apollo 11 mission's 40th Anniversary: One large step for open source code... アポロ11号の月面着陸から40周年ということで,最近やたらとアポロ計画関連の話題を見かける。そんな中,アポロ計画にちなんだ話題として Google Code Blog に投稿されたのが上のエントリー。 Google Code 上で公開されている Virtual AGC and AGS プロジェクトの中に, NASA のハードコピーから転記された本物の AGC (アポロ誘導コンピュータ)のソースコードがありますよ……とのこと。 このソースコードには,オリジナルのアセンブリコードに記されていたラベルやコメントまでしっかり転記されている。それらの記述に目を通していると,そのコードを書いた人の考えや気持ちが伝
書いたといっても結構前からあったのですが、いらん所を削ぎ落として軽量Webサーバとして仕立て上げました。 軽量とは言えど、CGIを使って結構色々動きます。 例えば、ソースアーカイブを解凍したらCGIがあって、apacheから見える場所にコピーして...とか面倒くさかったりしますよね。 おれは今すぐWebサーバを起動したいんだ!そして今いるディレクトリのファイルをWebサーバからサーブしたいんだー! って事ないですか?blogソフトウェアをダウンロードして今すぐ試したいけど、apacheインストールされてなかった...とか悲しすぎます。 今回紹介する"tinytinyhttpd"(tthttpd)はそんな、小さい様で大きな問題を解決出来るかもしれないソフトウェアです。 mattn's tinytinyhttpd at master - GitHub tiny tiny httpd http:
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く