ときどきの雑記帖'

最新ページへのリンク
目次ページへのリンク

一つ前へ 2013年7月(中旬)
一つ後へ 2013年8月(上旬)

ホームへ

2013年07月31日

■_

なんかでてたー Oracle Database 12c Release 1 出荷開始のお知らせ と思ったら日本ではまだ? 米オラクル、データベース新版「Oracle DB 12c」をグローバルでリリース - ZDNet Japan 米Oracleは米国時間7月1日、データベースソフトウェアの最新版「Oracle Database 12c」をグローバルでリリースした。日本国内での正式発表は今後予定されている。日本国内ではトライアル版をダウンロードできる。 ということなので気がつかなかったのかな。

■_ The Future of Programming

面白かった The Future of Programming | Hacker News References for "The Future of Programming"

■_

めもめも mrubyのmrb_gc_arena_save()/mrb_gc_arena_restore()の使い方 - Togetter アリーナのかいしんのいちげき - mirichiの日記 Twitter / yukihiro_matz: @anohana いや、ありますね。ありがとうございます。修 ... Matzにっき(2013-07-31) Twitter / mrkn: gc arena って有名なアルゴリズムなのかな?とても頭良 ...

■_

2013年07月30日

■_

来た お待ちかね! 「もつ鍋 わたり」のプロ野球前半戦「激辛総括」2013。(1/5) - Number Web : ナンバー

RubyKaigi のときに近くを通ったなあ 【レポート】300トンの巨大な物体を一晩で設置!! - 卓越した技術に見る日本の建築力 | 開発・SE | マイナビニュース

Birz を探して何軒も。

■_

sed のアレですがやはり意図してああいう動作にしているぽいですねえ。

■_

2013年07月29日

■_

明日はBirz買わないとだわ。

■_ Hash

ハッシュテーブルをハッシュいうな。というアレですが (日本において)「広めてしまった」主な原因が Ruby にあるとしても、 元々はPerl が先にやってたというのはどのくらい知られてるんですかね。 いやまあ Larry をワルモノにしようというわけでもなく。

Perl Programming/Hash Variables - Wikibooks, open books for an open world

"Associative Arrays"

Originally, a "hash" was called an "associative array", but this term is a bit outdated
(people just got sick and tired of using seven syllables). Although it isn't intuitive for newcomers to
programming, "hash" is now the preferred term. The name is derived from the computer science term,
hashtable.

■_ 今日の新言語

Clay – A language designed for generic programming | Hacker News

Clay – A language designed for generic programming | Hacker News

In case anyone else is interested in C-replacement type languages, I've been collecting a list:

  ATS: http://www.ats-lang.org/
  BitC (seems to be dead): http://www.bitc-lang.org/index.html
  Tart: https://code.google.com/p/tart/
  Deca: https://code.google.com/p/decac/
  Cyclone: http://cyclone.thelanguage.org/wiki/Why%20Cyclone/
  Nimrod: http://nimrod-code.org/
  Habit (Haskell adapted for systems programming): http://hasp.cs.pdx.edu/

Plus of course the obvious ones, Go, Rust, D. I don't keep track of these projects' usability, I just write
them down as I come across them.
Clay – A language designed for generic programming | Hacker News

Having such a list myself, I would add:

Myrrdin: http://eigenstate.org/myrddin.html

Pascal: http://www.freepascal.org/

Cyclone is pretty dead.
Clay – A language designed for generic programming | Hacker News

    http://code.google.com/p/june-language/ (java+python)
    http://code.google.com/p/j-rest/ (meta: api creator)
    https://code.google.com/p/szl/ (google data project)
    http://luvit.io/ (nodejs for lua)
    http://sourceforge.net/projects/sisal/

    http://zenlang.sourceforge.net/index.html (in dev)
    http://ufo.wikispaces.com/ (in dev)

Ok, the last one is a joke, but worth sharing, haha really funnny how people spent their time

    http://code.google.com/p/penor-programming-language/ (a joke?)

あ、知らないのが幾つか。

Clay – A language designed for generic programming | Hacker News

This is weird:

    "In Clay, all arguments are passed by reference."

Looks like a nest of bugs waiting to grow as new users try out the language.

This is how the majority of dynamic languages do argument passing (Java/C# etc)


No, it isn't. I mean, it's possible to call what the majority of dynamic languages do "passing by reference",
but it isn't the same thing as Clay does.

In C#, if I do

  int foo(int x) { x += 1; return x; }
  ...
  int x = 3;
  foo(x);

then afterwards the value of x is still 3. In Clay, if I do

  foo(x : Int) { x += 1; return x; }
  var x = 3;
  foo(x);

then the value of x is now 4. I agree with the grandparent: this seems like a really terrible idea. (In fact,
I was going to post a comment saying so until I saw that someone else had got there before me.)

[EDITED to add: By the way, usually "dynamic languages" means "languages with dynamic typing",
and Java and C# would be excellent examples of widely used languages that are not dynamic in that sense. The
question of whether values are passed "by object reference" (my preferred way of describing what they
do) is pretty much entirely separate from whether the language is dynamic. For instance: C++ (not dynamic, not
p.b.o.r.), Java (not dynamic, p.b.o.r.), MATLAB (dynamic, not p.b.o.r), Python (dynamic, p.b.o.r). C# has the
unusual feature that some kinds of mutable objects are passed that way while others -- structs -- are passed by
value, with the object (in principle) being copied when the call happens.]


Yet, in c# if you do

  int foo(obBob o) { o.x += 1; return o; }
  ...
  Car.x = 3;
  foo(Car);

Then Car.x = 4 which has confused a lot of new programmers. More importantly it's a more consice standard for
cube(x) to cube(x) than to say x=cube(x).

Object fields are always passed implicitly by reference (if that makes sense). The value that holds the
reference to the object itself is passed by value, unless you specify the "ref" argument modifier
(in C#).

へー>"In Clay, all arguments are passed by reference."

■_ APL

好きなんですよ(ロクに使ったことないけど) Ruins of forgotten empires: APL languages | Hacker News Ruins of forgotten empires: APL languages | Locklin on science

Ruins of forgotten empires: APL languages | Locklin on science

One of the problems with modern computer technology: programmers don’t learn from the great masters. There is
such a thing as a Beethoven or Mozart of software design. Modern programmers seem more familiar with Lady Gaga.
It’s not just a matter of taste and an appreciation for genius. It’s a matter of forgetting important things.

この辺りは…どうなんでしょうねえ(とお茶を濁す)

■_

以前、(たぶんtwitterで)コードはすべて「技術的負債」だ的な主張を見かけたことがあるんですが そりゃさすがに拡大解釈のしすぎですよねえ。 もちろん「言葉の意味」というのは変わっていくものだという見方はあるでしょうけれど。

■_

2013年07月28日

■_

リストの内容はまあほぼ固まったのだけど、納得いくマップにできないというかこう。

■_ Rust

Rust: low-level programming without the segfaults // Speaker Deck owned pointer とか bollowed pointer とか

■_ sed

なんかですね、入力末尾に改行がついてないと出力のときにもつけてないっぽいのですよ。 GNU sed。

kbk@toybox /cygdrive/c/Users/kbk
$ echo -n foo|sed -n -e 'p'|hexdump
00000000: 66 6F 6F                                         foo

kbk@toybox /cygdrive/c/Users/kbk
$ echo foo|sed -n -e 'p'|hexdump
00000000: 66 6F 6F 0A                                      foo.

kbk@toybox /cygdrive/c/Users/kbk

んが、基本動作の説明を読むとそれでいいのだろうかという気が

sed

In default operation, sed cyclically copies a line of input, less its terminating newline character, into a
pattern space (unless there is something left after a D command), applies in sequence all commands whose
addresses select that pattern space, and at the end of the script copies the pattern space to standard output
(except when -n is specified) and deletes the pattern space. Whenever the pattern space is written to standard
output or a named file, sed will immediately follow it with a newline character. 

Some of the commands use a hold space to save all or part of the pattern space for subsequent retrieval. The
pattern and hold spaces will each be able to hold at least 8192 bytes. 

んでまあコードを見ていくと

  execute.c
	    case 'p':
	      output_line(line.active, line.length, line.chomped, &output_file);
	      break;

line.chomped という怪しげなものが。

/* Sed operates a line at a time. */
struct line {
  char *text;		/* Pointer to line allocated by malloc. */
  char *active;		/* Pointer to non-consumed part of text. */
  size_t length;	/* Length of text (or active, if used). */
  size_t alloc;		/* Allocated space for active. */
  bool chomped;		/* Was a trailing newline dropped? */
#ifdef HAVE_MBRTOWC
  mbstate_t mbstate;
#endif
};

構造体定義でのコメントを見てもそんな感じです。

出力の箇所はこう。パラメータの名前が nl になってますが、これが FALSE だと改行をつけません。

static void
output_line(text, length, nl, outf)
  const char *text;
  size_t length;
  int nl;
  struct output *outf;
{
  if (!text)
    return;

  output_missing_newline(outf);
  if (length)
    ck_fwrite(text, 1, length, outf->fp);
  if (nl)
    ck_fwrite("\n", 1, 1, outf->fp);
  else
    outf->missing_newline = true;

  flush_output(outf->fp);
}

一方入力はどうかというと

static bool
read_file_line(input)
  struct input *input;
{
  static char *b;
  static size_t blen;

  long result = ck_getline (&b, &blen, input->fp);
  if (result <= 0)
    return false;

  /* Remove the trailing new-line that is left by getline. */
  if (b[result - 1] == '\n')
    --result;
  else
    line.chomped = false;

  str_append(&line, b, result);
  return true;
}

ここで、入力末尾に改行がない場合に line.chomped を false にしています。 この関数はさらに ck_getline という関数を呼んでいますが

getline.c

ssize_t
getline (char **lineptr, size_t *n, FILE *stream)
{
  return getdelim (lineptr, n, '\n', stream);
}

さらにもう一段潜って

getdelim.c

/* Read up to (and including) a DELIMITER from FP into *LINEPTR (and
   NUL-terminate it).  *LINEPTR is a pointer returned from malloc (or
   NULL), pointing to *N characters of space.  It is realloc'ed as
   necessary.  Returns the number of characters read (not including
   the null terminator), or -1 on error or EOF.  */

ssize_t
getdelim (char **lineptr, size_t *n, int delimiter, FILE *fp)
{
  ssize_t result;
  size_t cur_len = 0;

  if (lineptr == NULL || n == NULL || fp == NULL)
    {
      errno = EINVAL;
      return -1;
    }

  flockfile (fp);

  if (*lineptr == NULL || *n == 0)
    {
      char *new_lineptr;
      *n = 120;
      new_lineptr = (char *) realloc (*lineptr, *n);
      if (new_lineptr == NULL)
	{
	  result = -1;
	  goto unlock_return;
	}
      *lineptr = new_lineptr;
    }

  for (;;)
    {
      int i;

      i = getc_maybe_unlocked (fp);
      if (i == EOF)
	{
	  result = -1;
	  break;
	}

      /* Make enough space for len+1 (for final NUL) bytes.  */
      if (cur_len + 1 >= *n)
	{
	  size_t needed_max =
	    SSIZE_MAX < SIZE_MAX ? (size_t) SSIZE_MAX + 1 : SIZE_MAX;
	  size_t needed = 2 * *n + 1;   /* Be generous. */
	  char *new_lineptr;

	  if (needed_max < needed)
	    needed = needed_max;
	  if (cur_len + 1 >= needed)
	    {
	      result = -1;
	      errno = EOVERFLOW;
	      goto unlock_return;
	    }

	  new_lineptr = (char *) realloc (*lineptr, needed);
	  if (new_lineptr == NULL)
	    {
	      result = -1;
	      goto unlock_return;
	    }

	  *lineptr = new_lineptr;
	  *n = needed;
	}

      (*lineptr)[cur_len] = i;
      cur_len++;

      if (i == delimiter)
	break;
    }
  (*lineptr)[cur_len] = '\0';
  result = cur_len ? cur_len : result;

 unlock_return:
  funlockfile (fp); /* doesn't set errno */

  return result;
}

入力の途中でとんでもなく長い行があった場合にはメモリ確保できずに落ちるでしょうから、 改行がつかずに戻るのは入力末尾に改行がなかった場合のみと考えてよさそうです。

ChangeLog

2003-07-15  Stepan Kasal  <kasal@ucw.cz>
	    Paolo Bonzini  <bonzini@fnu.org>

	Change the way we treat lines which are not terminated by a newline.
	Such lines are printed without the terminating newline (as before)
	but as soon as more text is sent to the same output stream, the
	missing newline is printed, so that the two lines don't concatenate.

	* sed/execute.c (output_file): Is now struct output; users adjusted
	to access the fp field, call output_missing_newline before, and
	call flush_output afterwards.
	(read_file_line): Set line.chomped FALSE each time we encounter a
	line without the newline terminator, no matter whether this is the
	last input file or not, and no matter whether we are in
	POSIXLY_CORRECT mode or not.

changelog のこの記述を読めば意図的だろうと考えられるのですが、 そうすると opengroup のページにあった記述とつじつまが合っていないような気もするし… さて真相は? メーリングリストに質問投げるのも面倒だなあ。

■_

2013年07月27日

■_

Them Geek の第三章の章題が「船にはキャンプテンが必要」になっててなんじゃそりゃと。 arton さんも特になにもいってなかったし (L'eclat des jours(2013-07-21)) 造語かなあとも思ったのですがそれっぽい解説もないし、 単純な間違いにしてはなあと首をひねる。 キャンプテン - Google 検索 が、オライリーのサイトをみると単純ミスっぽい O'Reilly Japan - Team Geek

デマルコさんの本が電書に。これ Nexus 7 でも読める? (対応端末のアイコンがよくわからん。が、vita のみ対応…はないよねえ) 検索結果 | Reader™ Store - ソニーの電子書籍ストア

これのスライドがダウンロードできない… The Past, Present and Future of Code Generation

■_

ちょっと前の話題ですが…比較するとなんだかなあと。 COBOLで書かれた米国防総省の給与システム700万行、実質的に更新不可能 | スラッシュドット・ジャパン IT The Pentagon's Seven Million Lines of Cobol - Slashdot これがちょっと興味深かった → The Pentagon's Seven Million Lines of Cobol - Slashdot

■_ GCにやさしく

5 Coding Hacks to Reduce GC Overhead | Java Code Geeks

5 Coding Hacks to Reduce GC Overhead | Java Code Geeks

5 Coding Hacks to Reduce GC Overhead
by Iris Shoor on July 23rd, 2013 | Filed in: Core Java Tags: GC, JVM

In this post we’ll look at five ways in which we can use efficient coding to help our garbage collector spend
less CPU time allocating and freeing memory, and reduce GC overhead. Long GCs can often lead to our code being
stopped while memory is reclaimed (AKA “stop the world”).duke_GCPost

で、最初の例が文字列の扱いで

	a = a + b; // a and b are Strings

というのは

The compiler generates comparable code behind the scenes:
	StringBuilder temp = new StringBuilder(a).
	temp.append(b);
	a = temp.toString(); // a new String is allocated here.
	                     // The previous “a” is now garbage.

But it gets worse.

Let’s look at this example -

	String result = foo() + arg;
	result += boo();
	System.out.println(“result = “ + result);

In this example we have 3 StringBuilders allocated in the background – one for each plus operation, and two
additional Strings – one to hold the result of the second assignment and another to hold the string passed
into the print method. That’s 5 additional objects in what would otherwise appear to be a pretty trivial
statement.

最終的にはこう

The solution: One way of reducing this is being proactive with StringBuilder allocations. The example below
achieves the same result as the code above while allocating only one StringBuilder and one String to hold the
final result, instead of the original five objects.

	StringBuilder value = new StringBuilder(“result = “);
	value.append(foo()).append(arg).append(boo());
	System.out.println(value);

理屈はわかるけどなんだかなあ。

2. Plan List capacities 以降は元記事へGo

■_

なんというか日本じゃこういう本書こうという人はいない感じ? Pro Application Lifecycle Management with Visual Studio 2012

application lifecycle と Visual Studio の組み合わせというのが何とも意外に思えたので 詳しい記述を見てみると

Pro Application Lifecycle Management with Visual Studio 2012

You can have the best coders in the world working in your teams, but if your project management isn’t up to
scratch, your project is almost certain to be delayed, to come in over budget, and in some cases to fail
entirely. By taking precise control of your application development process, you can make changes, both large
and small, throughout your project’s life cycle that will lead to better–quality finished products that are
consistently delivered on time and within budget.

Application lifecycle management (ALM) is an area of rapidly growing interest within the development community.
Because its techniques allow you to deal with the process of developing applications across many areas of
responsibility and across many different disciplines, its effects on your project can be wide ranging and
pronounced. It is a project management tool that has practical implications for the whole team—from architects
to designers, from developers to testers. 

24時間限定で電書版が$10.00なんだけどもうーむ

■_ 高速化の話

D の作者がときどき Dr. Dobb's に記事を書いているのですが、 今回はコンパイラーの高速化の話。 Increasing Compiler Speed by Over 75% | Dr Dobb's

Increasing Compiler Speed by Over 75% | Dr Dobb's

The top three time-eating tasks were:

    lexing
    hash table lookups
    storage allocation 

Lexing has always been the succubus leaching the cycles out of a compiler. It's written with that in mind (and
so is D's grammar), and I didn't see much more oil to be pressed out of that olive.

I figured hash table lookups would be high on the list, but not that high. DMD makes heavy use of hash tables
internally. The symbol tables are all hash tables, the template instantiations are (now!), etc. Looking at the
code, nothing too obvious stuck out:

ということで、そのハッシュテーブルのコードが

  if (aa)
  {
      size_t len = aa->b_length;
      size_t i = (size_t)key % len;
      aaA* e = aa->b[i];
      while (e)
      {
          if (key == e->key)
              return e->value; // found
          e = e->next;
      }
  }
  return NULL;    // not found

のようになっていたのを

  size_t i;
  size_t len = aa->b_length;
  if (len == 4)
      i = (size_t)key & 3;
  else if (len == 31)
      i = (size_t)key % 31;
  else
      i = (size_t)key % len;

のように変えてみたら(細かいところをだいぶ端折ってます)、

Increasing Compiler Speed by Over 75% | Dr Dobb's

The smallest bucket has a length of 4, the next larger size is 31. So, for the most common cases, the compiler
is able to generate the fast modulo code because it's dividing by a known constant.

This change alone was worth a 5% speed boost. Not bad for 3 or 4 lines of code!

5% 向上したと。smallest が 4 というのはいかにも小さい気がするんですがそうでもないのかな (akrさん改良後の Ruby のはどうなってたっけか)。

そして結論

Increasing Compiler Speed by Over 75% | Dr Dobb's

Conclusion

Even if you know your code well, you're likely wrong about where the performance bottlenecks are. Use a
profiler. If you haven't used one on your codebase in a while, it's highly likely there's a bottleneck in there
that's fixable with just a few lines of code.

参考 Increasing the D Compiler Speed by Over 75% | Hacker News

■_

■_ 復習するは我にあり

実はノベルティ目当てw

そしてこいつをフラゲ

2013年07月26日

■_

へー、こういう本も出てるんだねえ Pro Windows Embedded Compact 7

Home - "きんぎょばち" コーナー - Teach Me・Teach You - 事前テーマ募集 2013.8.3~4 北海道 定山渓で開催のプログラマ向けイベント 北海道かあ。面白そうなのがあるんだけど

調べものしてたら河野先生(Shinji Kono (shinji_kono)さんはTwitterを使っています) の論文がひっかかった。オチはありません。

■_

■_

ぐでー

2013年07月25日

■_

Short peace 観に行きたいのだけどー(お察しください)

■_ LibreOffice

Logo ついてんのかー最近のは(今月号のsoftware designで知った)。 Playing with LibreLogo / LibreLogoで遊ぼう! LibreLogo の日本語解説を書きました - なるひこの Linux Printing お勉強日記 LibreLogoを使う - M59のブログ

Software Design (ソフトウェア デザイン) 2013年 08月号 [雑誌]
Software Design (ソフトウェア デザイン) 2013年 08月号 [雑誌]

■_

The Essence of Software Engineering: Book Review and Interview with Ivar Jacobson この記事。本の紹介(宣伝)のようなのだけど The Essence of Software Engineering: Applying the SEMAT Kernel
The Essence of Software Engineering: Applying the SEMAT Kernel

The Essence of Software Engineering: Book Review and Interview with Ivar Jacobson

The publication of  “The Essence of Software Engineering” gives visibility for the Software Engineering
Method and Theory (SEMAT) initiative to a larger audience. The actionable kernel described in this book is
something that is useful in software development organizations to understand and improve their way of working.  

SEMAT とかなんか見覚えがあるなあと思ったのでぐぐると ニュース - ソフトウエア工学と方法論の再建を目指す「SEMAT」の日本コミュニティが活動開始:ITpro SEMATカーネル - ソフトウェアエンジニアリングのエッセンス:ITpro SEMATの最初の本が出ました。:An Agile Way:ITmedia オルタナティブ・ブログ といったものが上位に。 日本語訳もすぐに出そうだなw

■_

2013年07月24日

■_

なぜか今日、まつもとさんのアレが話題に。 How Emacs changed my life | Hacker News

巡回リストさくせいちゅー

■_ 今日の人気記事

今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」 | つい全力ツッコミしてしまうエンジニアCEOのブログ | sumyapp と、その関連記事 Ruby on Rails を勉強しない方が良い100の理由 - Hのキーがhellで、Sのキーがslaveだ、と彼は思った。そしてYのキーがyouだ。 プログラミング初心者の落とし穴「Ruby on Rails勉強してます」「CakePHP勉強してます」 - カレーなる辛口Javaな転職日記

内容はおいといて(ぶっちゃけ興味ない)、

今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」 | つい全力ツッコミしてしまうエンジニアCEOのブログ | sumyapp

追記再び: タイトルの「辞める」は別に「止める」でも問題ないです。Google IMEでやめるを変換したら「辞める」が先に
出たというだけです。タイトルはさすがに変えづらいので、変更いたしませんが、辞めるという表現が気になる方にはお詫
び申し上げます。

本当に問題ないのかなあと気になったのでまずは辞書ひくと

やめる【止める/已める】の意味 - 国語辞書 - goo辞書

や・める【▽止める/×已める】

    [動マ下一][文]や・む[マ下二]
    1 続けてきた状態・動作・行為をとめる。終える。「付き合いを―・める」「酒を―・める」
    2 予定していたことをしないことにする。中止する。「旅行を―・める」
    3 病気や癖などをなおす。
    「いみじう病み苦しがる…願立てなどして―・め奉りてけり」〈落窪・二〉
やめる【辞める/罷める】の意味 - 国語辞書 - goo辞書

[動マ下一][文]や・む[マ下二]《「止(や)める」と同語源》職や地位から離れる。退く。「会社を―・める」「教師を―・める」

おお? >「同語源」 でも、こっちの例を見ると使い方は明らかに違うような気がするんですがどうなんでしょうね (深入りはしない) 辞めるの同義語 - 類語辞典(シソーラス) 止めるの同義語 - 類語辞典(シソーラス)

それにしても元記事、ほとんどのコメントにきちんと回答つけてるのには脱帽。

■_ Go

/var/log/bhs — My impressions of Go という記事があって、 Impressions of Go | Hacker News というのが Hacker Newsに立った? のだけど

Impressions of Go | Hacker News

Articles on Go are getting a little boring. The majority are written by people who've spent an afternoon looking
at Go and decide to rehash the same 5 bullet points. In the time it takes to read their "article" I
could learn the same stuff, better, by reading the official Go tutorial.

Some in depth reviews based on actually using it for an extended period of time on a large project would be nice...

ちょっと笑ってしまった。

■_ ここでもJS

PyPy.js: First Steps

PyPy.js: First Steps

I've been spending a lot of time in JavaScript land lately. It's not totally unexpected – when I first applied
for a job with Mozilla, I was warned only semi-jokingly that "they hire all the best Python programmers
and then force them to write JavaScript". I've no deep love or hate for it as a language, but JavaScript
is pretty interesting to me as a platform, as a kind of runs-everywhere lowest-common-denominator environment
that is slowly being molded and coerced into a pretty decent universal runtime. But if "the Web is the
Platform", what's a stranded Pythonista to do?

Port Python to JavaScript, of course!

■_

これ、使ってるグラフの種類がよろしくない気が… The Rising Costs of Aging Perlers: Part 1, The Data | {anonymous => 'hash'};

■_

■_

ああ、Rust のことちょっと書こうと思ってたのにににに

2013年07月23日

■_

これで東横線が止まって大変でした(別ルートで帰るのは簡単でしたが) 都内近郊ですさまじかったゲリラ豪雨の被害画像 - NAVER まとめ

サイズがなー! 絶妙なー! ダンボーのかわいすぎるコイン入れが登場 - ねとらぼ ←を昨日知ったのだけど なにこれ欲しい! ダンボーがバッグになったらかわいすぎた - ねとらぼ ←こう言うのがあったとはーっ 完全受注販売で6月28日まで注文を受け付ける。 あう。○| ̄|_

■_

結構面白いものがあがってた cauldron2013 - GCC Wiki

■_

■_

gdgd な一日であった

2013年07月22日

■_

OSCONにあわせて半額セール。らしい。 Programming - Books & Videos - O'Reilly Media

二ついっぺんにキター 泳ぐやる夫シアター やる夫で学ぶ第一次世界大戦  第三十二夜「休戦」 泳ぐやる夫シアター やらない夫が南北戦争を戦いぬくようです 第9回 出航、連邦艦隊

…2014? COSMOS 2014 Cosmos: A SpaceTime Odyssey (TV Series 2014– ) - IMDb

■_ M○SRA

ちゃんと新しくなっていってるのね。2012とかしらんかった。 An Introduction to MISRA C:2012 MISRA-C 2012 - ReaD & Researchmap MISRA C ADC徹底解説

MISRA C:2012

MISRA C:2012

MISRA is very pleased to announce today that the next edition of MISRA C Guidelines for the use of the C
language in critical systems, to be known as MISRA C:2012, is now available from the MISRA webstore.  PDF
copies are available for immediate to purchase, with print copies available to pre-order with dispatch from 8
April 2013.

MISRA C:2012 extends support to the C99 version of the C language (while maintaining guidelines for C90), in
addition to including a number of improvements that can reduce the cost and complexity of compliance, whilst
aiding consistent, safe use of C in critical systems. Improvements, many of which have been made as a result
of user feedback, include: better rationales for every guideline, identified decidability so users can better
interpret the output of checking tools, greater granularity of rules to allow more precise control, a number
of expanded examples and integration of MISRA AC AGC. A cross reference for ISO 26262 has also been produced.

そうまでして C かという気もかすかに

■_

2013年07月21日

■_

買ってまだほとんど読んでないのだけど (いくつかトピックを拾い読みした)、面白そう L'eclat des jours(2013-07-21) おそるべきTeam Geek

16進ダンプ入力には、テンキー部をごにょごにょするプログラムが必須でしたねw 現役大学生がPC-8001でプログラム入力(「PC-8001の扱い方」改題) - Togetter

■_ 気になる本二冊

Amazon.co.jp: Ultimate Microcontroller Projects: Build 30 Cool Mini Arduino Projects and Gadgets: Don Wilcher: 洋書

Amazon.co.jp: Ultimate Microcontroller Projects: Build 30 Cool Mini Arduino Projects and Gadgets: Don Wilcher: 洋書

This companion book to MakerShed's Ultimate Microcontroller Kit provides 30 clearly explained projects that you
can build with this top-selling kit right away - including multicolor flashing lights, timers, tools for
testing circuits, sound effects, motor control, and sensor devices. With the Ultimate Microcontroller Kit,
you'll find everything from common components such as resistors and capacitors to specialized sensors and
actuators like force-sensing resistors and motors. The kit also features the Arduino UNO Microcontroller and a
MakerShield, the definitive prototyping shield for Arduino. Build 30 cool mini Arduino projects and gadgets
Work on projects that are both instructive and have practical application Get circuit diagrams and detailed
instructions for building each project Understand circuit design and simulation with easy-to-use tools 

Amazon.co.jp: Assumption of Breach: The New Security Paradigm: Jeffrey Carr: 洋書

Amazon.co.jp: Assumption of Breach: The New Security Paradigm: Jeffrey Carr: 洋書


"Assumption of Breach" will explore how we arrived at this point, the latest thinking from the U.S.
Intelligence Community on this topic via interviews with former and current officials, and provide strategic
advice on how companies should establish a ranking system similar to how the U.S. government classifies
documents (Top Secret, Secret, Confidential, FOUO) and place appropriate security controls on their data. 

■_

知恵袋に投げられてるこの質問 C言語において、双方向連結リストの作成で、リストのデータ構造を可変にし、一方で... - Yahoo!知恵袋

C言語において、双方向連結リストの作成で、リストのデータ構造を可変にし、一方で... - Yahoo!知恵袋

C言語において、双方向連結リストの作成で、リストのデータ構造を可変にし、一方で、アクセス関数は共通化したいです。
どのような実現方法がありますでしょうか?

データ構造は任意のメンバーを構成可能な一方、アクセス関数は
共通化した、双方向連結リストの作成を考えております。

typedef struct cell_t
{
struct cell_t *prev;
struct cell_t *next;
int data; ←ここを任意の構造体にしたい
} cell_t;

通常、上記のような形のデータ構造を取るかと思いますが
int dataの部分を、例えば 構造体a, 構造体bと、異なるデータ構造を
とれるようにしたうえで、この連結リストへのアクセス関数を
共通化したいのですが、これはどういう方法で実現するのでしょうか?

構造体a, 構造体bはメンバー構成、サイズは異なります。
こういう場合に、アクセス関数(先頭キューに挿入、任意のキューに挿入、削除)を
共通にする方法を教えてくださいませ。

よろしくお願いいたします。

こいつではいかんのだろか? → linuxカーネルが提供するリストの使い方について - mmitouの日記

■_

これ、気になるんだけどどのブースだろう…

■_

ヴィシー・フランス(山崎雅弘 戦史ノート) - みねこあ twitter のわたしのTLでもヴィシー・フランスどうの言ってる人がいたので ちと気になって見てみると Amazon.co.jp: ヴィシー・フランス (山崎雅弘 戦史ノート) eBook: 山崎雅弘: Kindleストア

Amazon.co.jp: ヴィシー・フランス (山崎雅弘 戦史ノート) eBook: 山崎雅弘: Kindleストア

本書は、第二次世界大戦期にフランスという国家が直面した存亡の危機に真っ向から立ち向かい、身を引き裂かれるような
苦悩や精神的重圧と戦いながら、己の人生を賭けて国を指導したペタン元帥とヴィシー政府の足跡を、コンパクトにまとめ
た記事です。2009年3月、学研パブリッシングの雑誌『歴史群像』第94号(2009年4月号)の記事として、B5判16ページで発
表されました。日本では紹介されることの少ないヴィシー政府の活動とその時代背景を、多面的かつわかりやすく解説して
います。 

おおう、歴群の記事だったか(あまり覚えてないけど)。 他にもこういうのないかなあ。

■_


一つ前へ 2013年7月(中旬)
一つ後へ 2013年8月(上旬)

ホームへ


リンクはご自由にどうぞ

メールの宛先はこちらkbk AT kt DOT rim DOT or DOT jp