トップページ ここは、Programming Place Plus の、アルゴリズムとデータ構造編のトップページです。 各種アルゴリズムとデータ構造に関して、詳細な解説や、C言語を使った具体的な実装例があります(C言語についての情報は、C言語編を参照してください)。 データ構造 整列アルゴリズム 探索アルゴリズム その他のアルゴリズム APPENDIX リンク集 参考書籍
This article's aim is to explain how a modern operating system makes it possible to use shared libraries with load-time relocation. It focuses on the Linux OS running on 32-bit x86, but the general principles apply to other OSes and CPUs as well. Note that shared libraries have many names - shared libraries, shared objects, dynamic shared objects (DSOs), dynamically linked libraries (DLLs - if you
全体目次: 第1歩:しりとりの圏 (このエントリー) 第2歩:行列の圏 第3歩:極端な圏達 第4歩:部分圏 第5歩:変換キューの圏 第6歩:有限変換キューと半圏 第7歩:アミダの圏 第8歩:順序集合の埋め込み表現 第9歩:基本に戻って、圏論感覚を養うハナシとか 付録/番外など: 中間付録A:絵を描いてみた 番外:同期/非同期の結合 中間付録B:アミダとブレイド 番外:米田の補題に向けてのオシャベリ 一部のプログラミング言語の背景として、圏論(カテゴリー論)が使われたりするせいか、以前に比べれば多少は圏論に興味を持つ人が増えたような気がしなくもないような。でも、安直な入門的文書はあまり見かけないですね。もちろん、シッカリした教科書や論説はあるんですが、どうもシッカリし過ぎているような。例えば、圏の例として「コンパクト・ハウスドルフ空間と連続写像の圏」とか言われてもねぇ(この例はいい例なんです
Rubyでランダムソートをしようと思ったら、色々な発見が出来た。試行錯誤の記録。 結論 ランダムソートならsort_by(rand)がいい。 p (1..10).sort_by{rand} #=> [10, 3, 5, 9, 8, 6, 2, 4, 7, 1] シェルスクリプトとして活躍中〜。 % random() { ruby -e 'print STDIN.to_a.sort_by{rand}' } % printf "%d\n" {1..5} | random 2 1 3 4 5かなり便利っす。 では、最適解が出るまでの記録をどうぞ。 ランダムソート sortを使ってランダムに並び替えてみる。 p (1..10).sort{rand(3) - 1} [5, 2, 10, 1, 4, 9, 6, 3, 7, 8] rand(3) - 1だと、並び替える確率が低くなってしまうと思い、(r
Garbage Collection Advent Calendarの25日目の記事です。 ついに、か、完走したぞ!!うぉぉー。はあ、つかれた。もう来年はいいです。 ということで今日の分のスライドもあわせて、まとめてこの記事にはりつけておきます。 (あーあ、はてなダイアリーにslideboom埋め込めないのか…) mrubyのTri-color incremental mark & sweep GC 解説 その1 mrubyのTri-color incremental mark & sweep GC その2 mrubyのTri-color incremental mark & sweep GC その3 しかし、スライドのアニメーションとGCの解説って相性いいですねえ。 Impressでpptを吐いているのですが、それなりにslideboom上でも動いてびっくりしています。ツイートする
はじめに mrubyのエンジンはソースコードを逐次解釈して実行しているわけではなく、専用のバイトコードに変換して保持し、それをVirtualMachineの上で解釈して実行しています。 であれば当然コンパイル済みバイナリファイルというのも存在するわけで、ならば当然どんな仕組みになっているか気になるわけです。 というわけで、大まかなファイルフォーマットについて調べたので今回説明しようと思います。 2013/11/25当時(git hash: f5bd87b9e6d0d8a84cf866b4847c1416e4f5c622 )の物です。 それ以降のmrubyを使用する場合は以下の解説の通りではない可能性があります。 全体の構造 ヘッダーとセッションの配列からなります。 ヘッダーは必ず一つ、セッションは複数個ですが必ず終端セクションで終わります。 ヘッダー C風に書くとこんな感じ ubig8_t
アイコンがずばりラムダ・マーク なid:mindさんが、はてなブックマークコメントで曰く: ぉ! 問題集希望♪ そうですね。「JavaScriptで学ぶ・プログラマのためのラムダ計算」の節ごとに練習問題を入れておけばよかったな、と、ちょっと高階、じゃなくて後悔。このエントリーで練習問題を提供しましょう。JavaScriptの実行環境に関しては「もっともお手軽な対話的JavaScript処理系」を参照してください。 1. JavaScriptの関数リテラル 例に挙げたsquareは、「square(x) = x×x」という中学数学風の関数定義を二通りの方法でJavaScritpに翻訳したものです。同様に以下の関数定義を、JavaScritp関数として二通りの方法で定義してください。 double(x) = 2×x sqsum(x, y) = x×x + y×y 次の式(ラムダ計算の用語では適
「JavaScriptによるテンプレート・モナド、すっげー簡単!」にて: 紙と鉛筆でラムダ計算を実行できることは必要だな、やっぱり。 なんて強調したので、ラムダ計算の入門、いってみよう。 [追記]練習問題集を追加しました。説明を読みながら、あるいは読んだ後で是非やってみてください。→「JavaScriptで学ぶ・プログラマのためのラムダ計算 問題集」[/追記] ※印刷のときはサイドバーが消えます。 内容: JavaScriptの関数リテラル ラムダ式ってなんだ ラムダ計算の体系と適用操作 ラムダ式の例をいくつか β変換 -- ラムダ計算のキモ! β変換を何度か実行してみる 中間まとめ、まだ続きがあるよ JavaScriptの関数リテラル 最初に、JavaScriptに関する知識を確認しておきましょう。なお、JavaScriptの対話的実行環境については「もっともお手軽な対話的JavaScr
Andries Brouwer, aeb@cwi.nl2003-04-01 Some random hacking hints, mainly from a Linux point of view. 1. Preliminary 1.1 Damage 2. Introduction 2.1 Fun 2.2 Profit 2.3 Crypto 3. Discovery 3.1 Tools 3.2 Information leaks 3.3 Flaw discovery 3.4 Social engineering attack 4. Password Cracking 4.1 Common passwords 4.2 Unix password algorithms 4.3 MySQL passwords 4.4 ZIP passwords 4.5 PDF passwords 4.6 Avo
Difficulty: Easy Earth is an easy box though you will likely find it more challenging than "Mercury" in this series and on the harder side of easy, depending on your experience. There are two flags on the box: a user and root flag which include an md5 hash. This has been tested on VirtualBox so may not work correctly on VMware. Any questions/issues or feedback please email me at: SirFlash at proto
Linux 4.7 (pulled from github.com/torvalds/linux on Jul 20 2016), x86_64 Note: 64-bit x86 uses syscall instead of interrupt 0x80. The result value will be in %rax To find the implementation of a system call, grep the kernel tree for SYSCALL_DEFINE.\?(syscall, For example, to find the read system call: illusion:/usr/src/linux-source-3.19$ grep -rA3 'SYSCALL_DEFINE.\?(read,' * fs/read_write.c:SYSCAL
yield って、いまいち分かりにくいですよね。。 わからない⇒調べる⇒忘れる⇒調べる⇒忘れる⇒… のエンドレスループから抜け出すために、自分なりにまとめることにしました。 ブロック いきなり yield じゃないやん!という感じですが、我慢して見てみてください。 …じ・つ・は、Ruby のメソッドはすべて「ブロック」を引数にすることができます。 最近知りました(;ω;)。 def hogehoge( x ) return x + 2 end p hogehoge( 3 ) p hogehoge( 5 ){ p "foo" } ブロックってのは、{ p "foo" } みたいに "{" と "}" に囲まれたやつね。"do" 〜 "end" でもいいみたいだけど。 これを実行すると、 5 7 となります。{ p "foo" } はまるっきりシカトです。 (・∀・) …が、以下のようにすると
git commitを実行あとでコミットをやり直したり、コミット自体を取り消す方法です。 直前にしたコミットをやり直す(git commit --amend) 直前にしたコミットをやり直す場合、「git commit --amend」を使用します。 例えば、直前のコミットログが以下のような状態だったとします。 実は直前のコミットに含めるべきであった「hoge.txt」が含まれていませんでした。 コミットログ(git commit --amend 実行前) $ git log commit cca638b48b4c8be7ad5432f7882497534b04e2b4 Author: mrgoofy <hogehoge@example.com> Date: Wed Sep 8 23:03:57 2010 +0900 2nd Commit.-> New Add File : bar.txtこ
サイトマップ / C言語講座>講座の出入り口>総目次 C言語講座:総目次 この講座の教材をコンパイルするには、拡張子が”c”のファイルにコピペしてからコンパイルして下さい。詳しくは、コンパイルの仕方参照。
Powerful Python One-Liners This page is devoted to short programs that can perform powerful operations called Python One-Liners. You may ask: why should I care? The answer is profound: if you cannot read and write one-liner code snippets, how can you ever hope to read and write more complicated codebases? Python one-liners can be just as powerful as a long and tedious program written in another la
本テキストはJavaScriptでnumberもstringもnewもifもforも配列もプロパティへのアクセスもまったく使わず、ただ1引数の関数の定義と呼び出しを自在に組み合わせることで真偽値をはじめ数値やリストといったあらゆるデータ型を作り出し、それらの値を使って計算を行う手法を紹介するものです。紹介するソースコードはラムダ計算やチャーチエンコーディングと呼ばれているものをJavaScript/TypeScriptで実装したもので、計算の結果を人間に読みやすいよう入出力するためだけに限って関数以外の機能も使いますが、入出力以外のソースコードはすべて関数定義および関数適用のみからできています。まさに純粋のなかの純粋な関数プログラミング、究極のシンプルプログラミングとでも言えるものです。 本テキストでは説明にJavaScript/TypeScriptを使って説明はしていますが、特にこれらの
Benjy Weinberger Craig Silverstein Gregory Eitzmann Mark Mentovai Tashana Landray This style guide contains many details that are initially hidden from view. They are marked by the triangle icon, which you see here on your left. Click it now. You should see "Hooray" appear below. Hooray! Now you know you can expand points to get more details. Alternatively, there's an "expand all" at the top o
どうも。 何か情報発信をするべきなんじゃないかとふと思って久し振りに記事を書こうと思います。 ところで、私は大学1年生だった2011年の6月からWebアプリとiPhoneアプリを開発してきて、今までに16個のアプリをリリースしてきました。 内訳ですがWebアプリが10個、iPhoneアプリ6個で合計16個です。個という単位があっているのかはわかりません。 開発を始めたのは2011年6月で、2011年の3月にとあるWeb系の会社でアルバイトしていた時に「あ、Web楽しい」って思ったのがきっかけで、Webアプリ、そしてiPhoneアプリを作ってきました。 それまではWebといえば、しょぼいHTMLとしょぼいCGIくらいしか書けませんでしたし、あまり興味がありませんでした、というより自分にはできないと思ってました。 ずっとそれまではネットワークとかセキュリティが好きでちまちまPythonでスクリ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く