プログラミング指南 - Code Knowledge ゲーム制作に関するプログラミング等を主に書き溜めていきます。ただ、どちらかと言えば日記的な書き方が続くと思いますが、そこは温かい目で見て頂ければ。あと、ちょっとしたサンプルやツールのダウンロードも出来るようにしておきます。 レトロPCは最初は安価なカセットテープを記憶媒体として使っていました。その後に登場したのがフロッピーディスク(以下FDと略す)です。カセットテープが何分もロードに必要なところを数秒から数十秒で完了し、かつ、ランダムアクセスが可能なFDは、当時は高価な周辺機器だったにもかかわらず、あっという間に一般に浸透していきました。また、ドライブの価格も一気に値下がりしていったのを覚えています。 ところが、この便利なFDは便利であるが故の問題を抱えていました。それが不正コピーです。ゲームソフトハウスが発売した製品も、簡単に複製でき
Stack Overflowは、私が学習に役立ててきた多くのオンライン・コミュニティと同じように、自然と厳しくなってきました。第一にこれは、自己防衛機能です。子どもが初めて学校や託児所に入ると広大な世界にさらされて、 髄膜炎菌症を発症 して日々くしゃみやせきを繰り返しながら成長するのと同じような免疫システムです。常に好ましいことだとは言い難いですが、生き残るためには必要なプロセスなのです。 2年前に投稿された、下記の質問のことを考えてみてください。 あなたが新しく作ったプログラミングの業界用語は何ですか? あなたが作り、あなたの周りで使われるようになった、プログラミングの用語は何ですか?(他の人が真似して使っているのを聞いた、など)あなた独自の言い方が、職場内でのみ使われていたり、インターネット上で幅広く普及していたりすることもあるでしょう。 独自のプログラミングの用語、単語、言い回しを太
こんにちは、JS です。 今回は、Visual Studio を使ったネットワーク接続でのカーネルデバッグについて、設定の手順を紹介したいと思います。 最近、シリアルポートがない PC が多いため、手軽に利用できるネットワークケーブルでのカーネルデバッグの接続方法に関するお問い合わせが増えております。WinDbg を使った方法は、すでに K 里さんが「ネットワークケーブルを用いたカーネルデバッグ接続の設定手順」で書かれているので、今回は Visual Studio で接続する方法をご案内したいと思います。MSDN ドキュメントにも、「Setting Up Kernel-Mode Debugging over a Network Cable in Visual Studio」の記事が用意されているので、併せてご確認いただければ幸いです。 主な手順は以下の 3 つになります。 1.環境の用意
だいたいの関数は関数プロローグ、関数コード、関数エピローグの3つの部分に分けて考えることが出来ます。コンパイルされた関数のアセンブリコード(x86)を見ると、ほとんどは次のような形になっていると思います。 mov edi,edi push ebp mov ebp,esp これが関数プロローグにあたる部分で、要は関数コードを実行するための準備と呼び出し元へ戻るための情報の退避をしているわけですが、一番最初に出てくるmov edi,ediという命令は、実行しても何ら意味のない命令です。この意味のないmov命令は、プログラムを停止させることなく実行中のコードにパッチを当てる、ホットパッチと呼ばれる機能のためにあります。ホットパッチはmov命令をjmp命令に置き換えて必要な箇所に処理を飛ばすことで実現できます。ただしmov edi,ediは2バイト命令ですので、jmp命令が指せるアドレスは127バ
全国各地から選ばれた若者が、4泊5日でセキュリティ、あるいはプログラミングの専門知識にどっぷり浸かる「セキュリティ&プログラミングキャンプ」が今年も開催されました。このうち、Linuxカーネル組がどんな課題に取り組んだのかを紹介します。(編集部) 富士通株式会社 Linux開発統括部 武内 覚 2010/9/14 恒例になりつつある4泊5日の「キャンプ」 コンピュータが好きでたまらない学生たちが集う、毎年恒例の「セキュリティ&プログラミングキャンプ」が、今年も開催されました。これはお盆の時期にキャンプ地(今年は去年と同じ、千葉の国際能力開発支援センター)に4泊5日でこもりっきりになり、セキュリティ、あるいはプログラミングの高度な専門知識を得るという熱いイベントです。 講師陣も豪華で、各分野について日本を代表する専門家がそろっています。講師リストの中には、誰かしら聞いたことのある名前があるの
本書は、33名のソフトウェア開発者による美しいコードというテーマで執筆してもらったものをまとめたものです。その中の第22章「スプーン一杯の汚水で」は、1999年にSolarisカーネルの重要なサブシステム開発中に起きた問題とその解決の過程について説明されています。 問題を調査するためのデバッグの過程で、生きて実行中のシステムをデバッグする「その場デバッグ」(in situ debugging)とは対照的な「検死デバッグ」(postmortem debugging)を用いたという説明があります。そして、それは次のように重要なスキルだと述べられています。 どんなソフトウェアエンジニアにとっても重要なスキルは、複雑なソフトウェアシステムの失敗を解析し、その解析を厳密に表現できる能力です。そして十分複雑なシステムではしばしば、失敗の解析は法医学的です--つまり、システムが失敗したときの状態のスナッ
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "Hexspeak" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2019年10月) Hexspeakとは、リートスピークと類似の、英語の変わった表記法の一種である。 プログラマは、メモリやデータに「未使用」や「異常データ」といった印をつけるために分かりやすいマジックナンバーを必要としており、この際にHexspeakが作り出された。数字の"0"をアルファベットの"O"に、数字の"1"をアルファベットの"I"に、数字の"5"をアルファベットの"S"に読み替えるといった方法を利用し、16進数の表記に使われる文字 (0123456789AB
Javaアプリケーションの解析をやっていて、やはりJavaバイトコードの知識は必須だと思いました。確かに、jadをはじめ、Javaデコンパイラの性能は良く、ほぼ間違いなくデコンパイルは成功するのですが、問題は、デコンパイルが完了しても「JVM INSTR」(認識できなかったバイトコードが見つかった場合に出力される)が結構頻繁に現れることと、再度コンパイルするために必要となるファイルを、別途用意しなければならない場合が多々あることです。どちらの場合においても、デコンパイルにより出力されたデータに修正、もしくは追加を行う必要があり、また、バイナリにほんの少しの修正を加えたいだけであっても、デコンパイル → 修正 → コンパイルという動作を行わなければならないため、かなりの手間となります。 例えば、「Doorman」というツールがあります。このツールは、HTTPのProxyとして動作し、通信デー
一番右端の立っているビット位置(RightMostBit)を求めるコードで速いのないかなーと探していたら、ものっっっすごいコードに出会ってしまったのでご紹介。2ch のビット演算スレで 32bit 値のコードに出会って衝撃を受けて、その後 64bit 値版のヒントを見つけたのでコードを書いてみました。 この問題は ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか (Google book search で原著 Hacker's delight が読めたのでそれで済ませた) で number of trailing zeros (ntz) として紹介されています。bit で考えたときに右側に 0 がいくつあるかを数えるもの。1 だと 0、2 だと 1、0x80 なら 7、12 なら 2 といったぐあい。0 のときに表題どおりの問題として考えるといくつを返すの?ってことになるので、
iPhoneとAppStoreを巡るソフトウェアの市場についてgdgdゆってる人がめっきり増えました。まず商用ありきで謳っちゃっているけど、フリーソフトウェア作家はどう考えているかがまったく理解できてないですね。 コンテンツプラットホームとしてのiPhoneの設計が間違っている、を読んでhttp://fladdict.net/blog/2009/06/iphone-as-platform.html (続)コンテンツプラットホームとしてのiPhoneの設計が間違っている件CommentsAdd Starkorn_freaksyanbiroadracerfuktommymykichihamatsu1974http://d.hatena.ne.jp/kawango/20090620/1245499403 そもそも手間暇かけずラクして一発当てようとかいう考えが根っこにあるからおかしなことになるんじ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く