サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
CES 2025
k-1.hatenablog.com
elixirでは標準でいくつかのプロトコルを提供しているが、あまり目立っていない。そこで、モジュールではなくプロトコルに着目して調べてみた。 Enumerable Enumerableとは、「数え上げることができる」という意味で、主にEnum、StreamモジュールがEnumerableを対象とした操作を行っている。 Enumerableが実装を要求する関数は、count/1, member?/2, reduce/3の3個で、 それらを実装したモジュールはEnumerableになり、Enum, Streamモジュール の恩恵をうけることができる。 とりあえず、フィボナッチ数を生成するモジュールFibを作ってみる。 まず、構造体と初期化子を作ります。これはプロトコルでは要請されていないが、お約束という事で。デフォルトでは無限に生成するようcountは:infinityにしてみる。 defmo
Elixir Advent Calendar 2014 16日目。 またマクロのネタを。 On Lispでは、Common LISPの力の例として、アナフォリックマクロが紹介されている。elixirでも、アナフォリックマクロを作ってみよう。 アナフォリックマクロとは アナフォラ(anaphora)というのは、既出の語をさす事で代名詞の事。アナフォリックマクロというのは、(決まった)代名詞(つまりアナフォラ)で既に評価された値を参照して利用できるマクロである。 文章で書くと分かりにくいが、sedでいうと、fooをfoobarに置換するときのs/foo/&bar/における'&'だし、オブジェクト指向的言語()のselfやthisなどもそうだ。perlはアナフォラが活躍しており、$_は至る所で様々なものを参照することになっている*1。 初めてのアナフォラ さて、どんなものをアナフォラにすると嬉し
久しぶりに開催されたshinjuku.exに参加。今年に入ってからelixir界隈はにぎわってきていて、 Programming Elixir のような書籍が現れてきた。他にもオライリーからも出版されてきている。 そんな背景と関係あるのか無いのか、今回はKDDIウェブコミュニケーションズが会場であった。 SigilかわいいよSigil Sigilとはリテラルの拡張にあたるもので、言語組み込みとしては正規表現の%rやバイナリの%bが存在している。elixirではユーザ定義のSigilを使うことができるので今回はそのネタ。 Sigilの定義の仕方 言語で予約されているSigilは以下のとおり b バイナリ文字列(エスケープあり, ””と同様) B バイナリ文字列(エスケープなし) c 文字リスト(エスケープあり, ''と同様) C 文字リスト(エスケープなし) r 正規表現(エスケープあり)
http://www3.nhk.or.jp/news/html/20130320/k10013333751000.html によると、 韓国で20日午後、主要な3つのテレビ局や大手銀行などで社内のイントラネットがほぼ同じ時間帯から使えなくなり、韓国政府は、「ハッキングにより不正プログラムが流されたことを確認した」と発表し、何者かによるサイバー攻撃の可能性が高いとみて詳しい状況を調べています。 とのことだ。このニュース動画によると"Operating System Not found"という表示が読み取れ、MBRが破壊された物と思われる。 ところで、 http://uni.2ch.net/test/read.cgi/newsplus/1363783710/ によると、Windows7にはアクティベーションの回避技にMBRを使った技があり、この技を使って正規のアクティベーションを回避した状態で
前回はrubyなところを主に説明してきたので、いよいよ今回はLispな所であり、個人的に最もエキサイティングだと感じているメタプログラミングについて記述する。 メタプログラミング プログラムを書くプログラムを書く事をメタプログラミングと呼ぶ。Cのプリプロセッサや、yacc等のコード生成系もメタプログラムの範囲に含める場合があるようだが、Lispが最も有名であり、徹底されている。LispはプログラムがLispのS式で表現されているため、Lispの全能力使ってメタプログラミングが行える。それ故に、Lispは他の言語とは次元の違う強力さを持っている。プログラム言語がデータ構造として表現できる事(homoiconic)と、構文解析とコード生成の間にマクロの層があることがこの強力さの源になっている。 一方、elixirはというと、ruby風味のシンタックスであるにも関わらず、Lisp並のメタプログラ
前回のエントリの続きで、elixirの「ふつうの」言語である側面の説明となる。とはいうものの、関数型言語になじみがない人にとっては新鮮かもしれない。 内容は、Redirecting…とほぼ同じになってしまっている。 データタイプ 基本データタイプ 基本データタイプは以下のとおり。 iex> 1 # integer iex> 1.0 # float iex> :atom # atom / symbol iex> {1,2,3} # tuple iex> [1,2,3] # list 関数 関数オブジェクト(無名関数)もあるが、変数に格納された関数を呼び出すときには、変数と引数をドットで区切る。Erlangではfun() -> body endだが、Elixirではfn() -> body endになる。 iex> x = fn(y,z) -> y + z end #Fun<erl_eval.
erlang/OTP界隈でreiaというrubyフレーバーの言語が開発されて以来、erlang/OTP上で動作する言語がいくつか開発されている(efene, LFE(Lisp Flavoured Erlang)など)。どれも、erlang/OTPの独特な機能である、並行性、動的アップグレード、対障害性などをもっと、「普通の」言語から利用したいという要求だろう。 elixirはそんな中、reiaのすぐ後に独立して開発され、reiaの後継プロジェクトに指定された歴史を持つ。 当初はreiaと同様にrubyフレーバーの言語とオブジェクトシステムを持っていたが、2011年末の0.4-devから大胆に仕様変更を行い、全く別のものとなった。 特徴 近代的なシンタックス ruby風味なので、Prologチックなerlangに比べて取っ付きやすくなっている。 強力なメタプログラミング機能 homoicon
組み込み系やネットワークアプライアンスを創っている人は、linuxでPF_PACKETプロトコルファミリのSOCK_RAWタイプのソケットを創ったことがあると思う。私ももちろんそういうことをしてた。今回はそこで出会った不思議なことをネタに。 典型的な使い方 教科書的には、 いまどきのソケットプログラミング 作者: 波多浩昭出版社/メーカー: 日経BP社発売日: 2004/11/20メディア: 単行本購入: 2人 クリック: 81回この商品を含むブログ (4件) を見るという素晴らしいものがあるのでそちらで。 テンプレート的にはifnameを読み書きしたいイーサネットでバイス名として、 #include <sys/types.h> #include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <netpacke
このページを最初にブックマークしてみませんか?
『k-1.hatenablog.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く