並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 65件

新着順 人気順

yharaの検索結果1 - 40 件 / 65件

  • 「悪いやつをAIで予測する」のがなぜいけないか - yhara.jp

    「この人、家賃を滞納しそう?」AIが予測 入居審査を45分→16分に - ITmedia NEWS いやーこれはまずい。この件に限らず、「悪いやつをAIで予測する」というのはすなわち 「あなたに似た人が悪いことをしたので、あなたも悪い人と見なします」 ということだからだ。 レストランのランプ たとえばこんな例を考えてみよう。ある街でレストランが強盗に襲われる事件が相次いだ。これを防ぐため、レストランの入口に防犯カメラを設置することにした。このカメラはAIで犯罪者の顔を学習していて、「犯罪を犯しそう」な人間を検知してくれるのだ。 もちろん検知するといってもサイレンが鳴ったりするわけじゃない。あくまで「犯しそう」なだけで、まだ犯罪を犯したわけではないからね。でもキッチンに置いてある赤いランプがピカピカ光って、「要注意人物」が来たことはわかるようになっている。ああこれで安心だ。 …さて、これは本

    • プログラミング言語「PPAP」を作りました - yhara.jp

      I have 80 Pen I have 65 Apple Uh! Put-Pen Uh! Put-Pen Uh! Put-Apple Uh! Put-Pen ソースコード https://github.com/yhara/ppap-lang FizzBuzzも書けます。 宣伝 このような奇妙なプログラミング言語に興味がある人にぴったりな書籍が存在します。 今ならマナティというマイナビのIT系電子書籍ストアから購入すると割引になっており、2,041円でPDFが手に入ります。1月10日までです。これに合わせようと思ったのに年始になってしまった。 マナティ年末年始キャンペーン|Tech Book Zone Manatee Rubyで作る奇妙なプログラミング言語|Tech Book Zone Manatee 言語仕様 「I have」はレジスタの宣言です。以下はPenというレジスタを用意し、初期

      • いろいろな自作キーボード - yhara.jp

        Twitterの#レツプリというタグから、キーボード自作に興味を持った。ものによってはキットがあって、はんだ付け等で組み立てできるらしい。 形状にもいろいろあるようなので調べたものをまとめておく。 Ergodox いま会社で使ってるやつ。これはErgodox EZで組み立て済みのものを購入したのだが、もともとのErgodox自体はオープンソースのハードウェアである。 形状は左右分離タイプ。キー数は普通のキーボードより少ない(例えばPの右に1列しかないとか)。 Gherkin めっちゃ小さいやつ。5列3段×2という構成で、このあたりが実用上の最小構成ではないだろうか。 記号類がないように見えるけど、この手のキーボードは単押しとホールドで別の機能を持たせられるようになっているので、下段キーを押しながら上中段キーを叩くことで数字や記号を入力できる。 Planck 基本の5列3段に対し、左右に1列

        • 「コンピュータの天才 9つのC言語を操る」 - yhara.jp

          というものがあるらしい(画像はググってください)。原文はnine conputer languagesらしいので、翻訳者がC言語のことをコンピュータ言語の略だと勘違いしたのだと思われるけど、C言語を知っている人から見ればなかなかに味わい深いフレーズである。 ところで過去には、Perl、Python、PHPの3つの言語がまとめてP言語と呼ばれることがあった。であれば、頭文字がCから始まる言語のことをC言語と呼ぶことも、もしかして可能なのではないだろうか? そういうわけで自分の過去のブログ記事を漁って確認したところ、「1行でもプログラムを書いて動かしたことがある」言語で、Cから始まるものがかろうじて9個あることが分かった。やったー。これで筆者も9つのC言語を操る男の仲間入りである。 C C++ C# Common Lisp Clojure CoffeeScript Crystal ChucK

          • WebAssemblyとは何であり、何でないのか - yhara.jp

            これはWebAssembly Advent Calendar 2017の1日目の記事です。明日はyamachuさんによるElectronでWebAssemblyを使う話だそうです。楽しみですね。 アドカレ初日記事なので、WebAssemblyとは何か?という話を簡単にしておきます。WebAssemblyはWebのための新しいコンパイルターゲットで、Chrome/Firefox/Safari/Edgeでの動作が既にサポートされています。 Webのためのコンパイルターゲット、とは何でしょうか。WebAssembly以前は、JavaScript以外の言語をブラウザ上で動かそうと思ったらまずJavaScriptに変換してやる必要がありました。近年だとScala.js(Scala→JavaScript)やGopherJS(Golang→JavaScript)というプロジェクトがあり、古くはC/C++

            • Amazon.co.jp: Ruby徹底攻略 (WEB+DB PRESS plus): 角征典 (著), 成瀬ゆい (著), そらは(福森匠大) (著), 田中哲 (著), 笹田耕一 (著), 村田賢太 (著), まつもとゆきひろ (著), 松田明 (著), 後藤大輔 (著), 浦嶌啓太 (著), 高橋健一 (著), 柴田博志 (著), 近藤宇智朗 (著), 大和田純 (著), 白土慧 (著), 原悠(yhara) (著), 伊藤直也 (著), WEB+DB PRESS編集部 (編集): 本

                Amazon.co.jp: Ruby徹底攻略 (WEB+DB PRESS plus): 角征典 (著), 成瀬ゆい (著), そらは(福森匠大) (著), 田中哲 (著), 笹田耕一 (著), 村田賢太 (著), まつもとゆきひろ (著), 松田明 (著), 後藤大輔 (著), 浦嶌啓太 (著), 高橋健一 (著), 柴田博志 (著), 近藤宇智朗 (著), 大和田純 (著), 白土慧 (著), 原悠(yhara) (著), 伊藤直也 (著), WEB+DB PRESS編集部 (編集): 本
              • Rubyで競技プログラミング - yhara.jp

                この記事はRuby Advent Calendar 2016の最終日の記事です。 発端 秋に行われたRubyKaigi 2016のあとのAfter partyで、以下のような発表をしました。 Rubyで競技プログラミング(入門編) // Speaker Deck 内容は、会社の同僚と一緒にRubyでAtCoderをやっているという話でした。AtCoderはオンラインで競技プログラミングができるサイトで、Rubyを含めたさまざまな言語で参加することができ、過去問についても解答を受け付けているため好きなときにチャレンジすることができます。 競技プログラミングではC, C++, C#, Javaといった言語が主流なので、Rubyでは速度が足らないのではないか?と思われるかもしれません。実際、AtCoderでは2秒の制限時間に対し、入力データが10万行を超えることもあります。それでも、適切なアルゴ

                • 日本における技術系アドベントカレンダーの歴史 - yhara.jp

                  12月です。今年もアドベントカレンダーの季節がやってきました。 Web上におけるアドベントカレンダーというのは12/1から12/25までの間、一つのテーマで毎日ブログなどに記事を投稿するイベントで、日本においてはPerlコミュニティから始まったような記憶があったのですが、はっきりとは覚えていなかったのでこの機会に確認してみました。 2008年 JPerl Advent Calendar 2008 2008年12月、日本のPerl界隈でアドベントカレンダーが開催されます。以下の記事によると海外のPerlコミュニティでは2000年から同様のイベントが行われており、それを日本に輸入するという形だったようです。この年は特殊ルールとして、原稿を書いた人が翌日の担当を指名するというバトン式で行われています。 http://web.archive.org/web/20081223001927/http:

                  • レツプリ他自作キーボードまとめ - yhara.jp

                    Nyquist 左右分離型、6列5段 (2018/02) 自作キーボード(Nyquist)を作った(半分)のでビルドログを書くよ! - Qiita (2017/12) Nyquistを組み立てた話。Pro Microもげもあるよ![Nyquist keyboard Build Log] - むっこのブログ (2017/10) Nyquistを組み立てた (パーツ準備) – tamanishi – Medium (2017/09) 惨めなオタク、今日はNyquistを作った (2017/09) Nyquistを作る話 第1話 - 人生の暇潰し (2017/08) Nyquist パーツ購入 - 日々のメモ Nyquistはkeeb.ioで完成品の販売がある。 Viterbi 左右分離型、7列5段 (2018/01) Viterbiビルドログ(前編) - Journal InTime(2018

                    • 自作キーボード用キーキャップの探し方 - yhara.jp

                      Let's Splitなどを組み立てる際のキーキャップの入手方法の解説です。 レツプリ他自作キーボードまとめ - yhara.jp はじめに Let's Splitなどの自作系キーボードは基本的にパーツは各自で揃える方式なので、キーキャップについても通販サイトなどで購入する必要があります。ところが、筆者が最初にチャレンジしたときは以下のようなハードルがありました。 どれが使えてどれが使えないのかわからない DSAとかSAとか何のこと 本記事ではこれらについてざっくり解説します。 なんでもいいから買いたい場合 このへんが安いかな?いろんな色があります。 DSA PBT ブランク キーキャップ (ホワイト/2個) | TALPKEYBOARD -... DSA 無刻印キーキャップ(1個) – 遊舎工房 Let's Splitの場合はどのキーも同じ形ですが、キーボードによってはシフトキーなどに大

                      • GitHub - yhara/myrurema: A helper tool for rurema (The new Japanese Ruby reference manual)

                        You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                          GitHub - yhara/myrurema: A helper tool for rurema (The new Japanese Ruby reference manual)
                        • Kent Beckの 『Implementation Patterns』の翻訳(『実装パターン』)が出るよ, yharaの奇妙なプログラミング言語(単行本) - 角谷HTML化計画(2008-12-08)

                          ■1 Kent Beckの 『Implementation Patterns』の翻訳(『実装パターン』)が出るよ 12/22発売予定。208ページ、2,310円(なんと原著の半額ぐらいで買える!!)。Amazonにはまだ書影がないけど、版元のピアソン・エデュケーションの紹介ページで確認できます。目次もあります。複合メソッド。二重ディスパッチ。 「実装パターン」と聞くと、ひょっとしたら「デザインパターンを実装する本」と思われる方がいるかもしれないけれど、本書は「実装にあたって人と人とがコードの意図を伝えあうために交わす共通言語」をまとめた書籍です。以前の日記にも書いたけれど、本書は: 「良いコードは重要だ」ということを語る書籍であり、 プログラマの責任(responsibility)についての書籍 です。 ちなみに、力不足で私はぜんぜん更新してませんが、ほとんどid:sumimを召喚するため

                          • sedやawkが覚えられないRubyistのための「rbコマンド」 - yhara.jp

                            この記事はRuby Advent Calendar 2018の21日目の記事です。 今年のある日、rubyweeklyで流れてきたのがこれ。どうやらsedやawkみたいなワンラインプログラムが、Rubyで簡単にできるようになるみたいだが…? https://github.com/thisredone/rb -nは覚えられない 一応、Ruby本体にも-nや-pという、ワンライナ向けのオプションがあるんだよな。そう、あることは知っている。でも使い方は覚えてない。 sedやawkも一緒で、使えたら便利なんだろうなーと思いつつ、未だに覚えてない(少なくとも何も見ずに書ける程には)。 そこでrbコマンド? rbコマンドのいいところは、「普段Rubyを使ってるときの感じのままで」ワンライナが書けるところだ。 とりあえず例を見てもらおう。rbコマンドには1行ずつ処理する「lineモード」と、ファイル全体

                            • 君はyhara氏を知っているか (Kanasansoft Web Lab.)

                              yharaさんを応援したいという気持ちとKanasan.JSだけでなく関西の勉強会を応援したいという気持ちとnanto_viさんはもっと前に出て欲しいという気持ち。 そして、これを読んでいて少しでも「いいなぁ」と思った関東圏の人達、地方の人はいつでもそう思っているということをわかってほしい。 イベントや勉強会をもっと中継や録画をしてほしいし、参加者はもっと参加報告をあげてほしい。 インターネットによって確かに距離は縮まったけど、知らなかったから参加していなかったイベントが、知っていても距離によって参加したくてもできないイベントに変わっただけの人が少なからずいるということ。 ほんと、お願いしますよ、マジで。

                              • オブジェクト指向言語をLLVM IRにコンパイルするには - yhara.jp

                                昨年から、Esquisという言語を作っている。Rubyっぽい文法の静的型付け言語になる予定で、実行はLLVM IRを経由して行う。 ということで、(クラスベースの)オブジェクト指向言語をLLVM IRで表現する方法について考えていたので、分かったことをまとめておく。既存の実装としては主にCrystalの生成するLLVM IRを参考にした。 オブジェクトをstructに対応させる LLVMにはstruct型というものがあり、オブジェクトはこれで表現することができる。問題はどのようなstruct型を定義するかだ。 最初に考えたのは、EsObjという型を作って、すべてのオブジェクトを表現するという方法だ。 だがすぐに、この方法では上手くいかない点が見つかった。オブジェクトはインスタンス変数の値を保持する必要があるが、オブジェクトがどのようなインスタンス変数を持つかは属するクラスによって異なるので

                                • LLVM LLにコンパイルされるC風言語を作っています - yhara.jp

                                  LLVMを利用した言語実装の練習として、C風文法の言語を作っています。kaleidoscopeのマンデルブローのサンプルが動くところまでを目標にしています。 実装はRuby + Raccです。.llの出力はruby-llvm gemを使おうかと思いましたが、更新が止まっているようなので、とりあえず文字列処理で頑張っています。 https://github.com/yhara/kareido kaleidoscopeはLLVMオフィシャルの言語実装チュートリアルで(日本語訳)、Kareidoとは以下のような違いがあります。 kaleidoscopeはREPLがあるが、Kareidoは1ファイルのコンパイルのみをサポートする kaleidoscopeには独自演算子の定義があるが、Kareidoでは演算子は組み込みのもののみ kaleidoscopeはパーサが手書きだが、Kareidoはパーサジ

                                  • LLVMで例外を実装するには - yhara.jp

                                    LLVMを使った自作言語に例外を入れることを考えてた。結論からいうとCrystalのソースを真似するのでよさそう。 Crystal → libunwind → _Unwind_RaiseException C++ → __cxa_throw → libunwind → _Unwind_RaiseException _Unwind_RaiseException等の仕様はここ。http://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html 「Itanium C++ ABI」という名前ではあるけれど、Level I, II, IIIのうちのLevel I部分(_Unwind_RaiseException等)はC++に限らない言語独立なAPIになっている。__cxa_throwはLevel IIで、C++用のもの(であるけれど、場合によってはこれが使えるこ

                                    • GitHub - yhara/sinatbbs at magazine

                                      You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                        GitHub - yhara/sinatbbs at magazine
                                      • yharaのブログ(仮) - はじめての確定申告 (本を書いたプログラマ編)

                                        _ [misc] はじめての確定申告 (本を書いたプログラマ編) 今年、はじめて所得税の確定申告を行ったので来年のためにメモ。 3万くらい返ってくるらしい。結構大きい。 確定申告とは何か 所得税は累進課税なので、年収によって税率が変わる。だから、あなたの収入にかかる税率は、1年が終わるまで分からない。 が、年末になってから税金を取り立てるのは大変なので(かどうか知らないが)、毎月の給与や、出版社からの原稿料は、あらかじめ「だいたいこんなもんでしょ?」という額が、税金として引かれているのである!(これが「源泉徴収」) なので、1年が終わったら、実際の年収がどうだったか、税務署に報告しなければならない。これが確定申告だ。 想定より税額が少なければ、取られすぎた分は「還付金」として返ってくる。もちろん逆に不足分を払わないといけないこともある(副業がすごく儲かった場合とかだね)。いずれにしろ、確定

                                        • yharaボタン+LDRの挙動を say.cgiとGreasemonkeyで再現 - はこべにっき ♨

                                          いっしょにSatsuBatsu#2に参加していたid:hitode909がyharaボタンを作ってたので,それをSatsuBatsu#2の合間に適当に作ったsay.cgiとGreasemonkeyを使って再現してみた. 準備1: say.cgi Mac OS Xにはデフォルトでsayというコマンドが使える.このコマンドは, $ say hello とかやると,Macがしゃべってくれるので楽しい.これをJavaScriptから使えるようにするために,CGIでラップする.この記事の最後にソースコードをおいたので,それを保存して/Library/WebServer/CGI-Executablesにsay.cgiという名前で置く.say.cgiに実行権限を与えた後,http://localhost/cgi-bin/say.cgi?msg=hello&voice=Alex にアクセスするとMacがし

                                            yharaボタン+LDRの挙動を say.cgiとGreasemonkeyで再現 - はこべにっき ♨
                                          • Rubyで呼ばれたメソッドを列挙するやつ作った - yhara.jp

                                            Railsで効率的かつ安全に未使用のメソッドを削除した話 - てくすた この記事を読んで、TracePointで同じことができないかと考えた。TracePointはRuby 2.0からある機能で、Rubyのメソッド呼び出しなどのイベントをフックできる。(昔のset_trace_funcに相当する) とりあえず動いたのでgithubに置いた。 https://github.com/yhara/MethodCallTracer こういう適当なa.rbがあるとする。 class A def self.asdf end def foo p yield end def bar # do nothing end end A.new.foo{ 1 } A.new.bar{ 1 } A.asdf

                                            • GitHub - yhara/enumerable-lazy: **Deprecated (Part of the stdlib since Ruby 2.0)**

                                              You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                GitHub - yhara/enumerable-lazy: **Deprecated (Part of the stdlib since Ruby 2.0)**
                                              • Amazon S3 Glacierを写真ストレージとして使う - yhara.jp

                                                長年Flickrを写真ストレージとして使っていたのだが、古い写真を見返すことはほとんどないので、それならばAWS Glacierに保存してしまった方が安いのではないか?と気づいた。 Glacierは一気に取り出すとやばいというイメージがあったが、ピーク転送量課金という仕様は今は無くなっていて、取り出しペースは気にしなくて良いようだ。 ということで具体的に料金を計算してみる。 ソース https://aws.amazon.com/jp/s3/pricing/ 前提 容量は全部で100GBとする ファイル数はそれほど多くないものとする(年ごとにzipしてまとめるなど) 取り出しは基本行わないものとする(バックアップ用途なので) リージョンはオレゴン・プランはS3 Glacier Deep Archive 大容量 金額 アップロード 件数:$0.05/1000件 容量:アップロードに関しては無料

                                                • なるべく移行コストが少ないErgoDoxのキー配置 - yhara.jp

                                                  このエントリはErgoDox Advent Calendar 2016の6日目のエントリです。 今年の5月に仕事用キーボードとしてErgoDox EZ (組み立て済みErgoDox) を購入し、半年が経ちました。ErgoDoxのメリットの一つとしてキーマップのカスタマイズ性の高さがありますが、一方で「Pキーの右にたった一列しか場所がない」という特殊な形状のため、キー配置をどうカスタマイズしても慣れるまでに多少の練習が必要になるという問題もあります。 本稿ではなるべく練習が要らないキー配置について考えます。 ポイント キーボード上にはたくさんのキーが存在しますが、それぞれの使用頻度には大きな隔たりがあります。「%」や「&」など使用頻度の少ないキーは、多少変なところに配置してもそれほどストレスにはなりませんが、EnterやBackSpaceなどの基本的なキーを変わったところに置くと慣れるまで大

                                                  • WASMはじめの一歩 (wastを書いてブラウザで動かすところまで) - yhara.jp

                                                    こんばんわ。今日はWebAssemblyにチャレンジしたいと思います。wasm用のプログラムを書いて、それをブラウザで動かすところまでやります。 用意するもの1:.wat まずはWebAssemblyで書かれたプログラムが必要です。拡張子は.wasmです。あいにくこれはバイナリファイルなので手書きするのは難しいです。一般的にはお好みの言語で書いたプログラムをLLVM経由で.wasmに変換するのだと思いますが、今回はWebAssemblyそのものの例としたいので、wasmのテキスト表現を使います。 以下の内容をsquare.watというファイルに保存します。.watというのはwasmのテキスト表現のための拡張子です。ツールによっては.wastという形式を受け付けるものがありますが、これは.watの非公式な上位互換拡張だそうです。 ;; square(i32 i) -> i32 (module

                                                    • Opalはどうやってmethod_missingを実装しているのか - yhara.jp

                                                      本記事はOpal Advent Calendar 2016の17日目の記事です。 OpalはRubyからJavaScriptへのコンパイラです。今回はRubyの黒魔術の一つであるmethod_missingの実装について見ていきます。 method_missingとは Module#method_missingは、あるオブジェクトに対して定義されていないメソッドを呼び出したときに走るフックを定義する機能です。 class A def method_missing(name, *args) puts "hooked (name: #{name}, args: #{args.inspect})" end end A.new.foo(1, 2, 3)

                                                      • シン・エヴァの封印柱、C言語で操作できることが判明 - yhara.jp

                                                        少し前だが、松江イオンで『シン・エヴァンゲリオン劇場版:||』の字幕版が観れるというので行ってきた。通常版も視聴済みだったが、字幕によって新しく気づいたこともあった。 特に面白かったのがアバンの最後、パリがバーンって復元する直前に アルゴリズム解析 C言語にシフト っていう台詞があったこと。複数人が同時に喋ってるので通常版だと聞き取れなかったんだけど、まさかC言語とは…! その前に まるで8bitのマイコンみたいだ エヴァ同様人外未知の未解明システムですもの、人類の言語じゃ楽に制御できないのよ っていうやりとりがあったので、C言語をアセンブラみたいなlow-level言語にコンパイルして、それを流し込んでるんだよね?封印柱が電気で動いてるとは思えないから、デジタル信号を何らかの人外未知エネルギーに変換するコンバータがあるんだろうなあ。あとさ、これでコントロール可能ってことは封印柱内部のシス

                                                        • LLVMで言語をつくる - yhara.jp

                                                          LLVMで自作言語作るときのTipsなど。 記述はLLVM 3.8.1 or 3.9.1のものです。 つくったもの Kareido Esquis Shiika 準備 LLVMのインストール Macならhomebrewで入る(brew install llvm) 言語バインディングを使うかどうか LLVMはデフォルトでC++, Python, Golang, OCamlをサポートしている。これら以外の言語を使う場合は、LLVMのAPIを扱うためのバインディングがあるかを確認する。 バインディングがない場合、.llファイル(LLVM IRをテキストにしたもの)を生成し、それをlliコマンドなどで実行するという方法がある。Kareidoはこの方式である。 declare i32 @putchar(i32) define i32 @main(){ call i32 @putchar(i32 72)

                                                          • asyncを使わずに並行処理をやる方法はないのか - yhara.jp

                                                            メモです。 What Color is Your Function? – journal.stuffwithstuff.com async/awaitを実装した言語では、asyncな関数とそうでない関数が区別される つまり、async funcを受け取るメソッドにnormal funcを渡すことはできない(逆もしかり) そのために、.mapと.mapAsyncみたいに各APIにasync版と非async版が必要になる https://blog.yoshuawuyts.com/announcing-the-keyword-generics-initiative/ keyword genericsという案 なぜasyncな関数と普通の関数は互換性がないのか async funcはステートマシンにコンパイルされるから (いやまあ別にそういう決まりはないけど、JS/Rust/C#はいずれもそうして

                                                            • Ruby GUIライブラリ 2021 - yhara.jp

                                                              require 'gtk3' window = Gtk::Window.new window.signal_connect(:destroy) { Gtk.main_quit } window.show Gtk.main require 'gtk3' class MyWindow < Gtk::Window def initialize super box = Gtk::Box.new(:vertical, spacing = 6) add(box) button = Gtk::Button.new(label: 'Click Me') button.signal_connect('clicked') { on_click_me_clicked } box.pack_start(button) end def on_click_me_clicked puts '"Click me" but

                                                              • 『定理証明支援系 Coq チュートリアル』に参加した - yhara.jp

                                                                先週の土日にこのオンラインセミナーに参加してみた。 定理証明支援系 Coq チュートリアル - connpass 定理証明は、名前は聞くけど触ったことはなくて、興味はあるけど本を買うほどのモチベーションはないし、誰か詳しい人が要点だけ教えてくれたりしないかな〜。と思っていたところ、まさにぴったりのイベントが。なんていうか、昔ならこういうのは東京まで行かないと参加できなかった気がするけど、家からオンラインで参加できるようになったのは嬉しいね。 日程は5時間 x 2日という長丁場で、説明だけでなく練習問題もあるのでとっても疲れた!でもこういうのって自分で手を動かさないと「わかったような気になった」だけで終わりがちだから、演習があるのはとてもありがたい。 Coqの感想 これまでいろんなプログラミング言語を触ってきたけど、証明とプログラムが一体になった環境は新鮮で面白かった。「整数」「文字列」みた

                                                                • BiwaSchemeのためにCPS(継続渡し形式)でマージソートを実装した話 - yhara.jp

                                                                  本記事は言語実装 Advent Calendar 2016の最終日の記事です。話題が多岐に渡っていて楽しいアドベントカレンダーでしたね。前日はEgisonのリーマン幾何学用記法の話でした。 BiwaSchemeは筆者が作っているJavaScriptによるScheme実装です。先月の話ですが、list-sortという関数を修正し、比較に使うScheme関数を受け取れるように改善しました。BiwaSchemeは中間言語方式(VM方式)かつライブラリを全てJSで実装するという方針になっているため、実装に少し工夫が必要でした。本稿ではそのことについて解説します。 中間言語方式 JavaScriptでScheme処理系を実装する場合、いくつかの方針が考えられます。 インタプリタ方式 (S式を一つずつ読み、評価する) コンパイラ方式 (プログラム全体を等価なJavaScriptに変換する 中間言語方式

                                                                  • Rubyで競技プログラミング - yhara.jp

                                                                    Rubyで競技プログラミングに参加する場合のTips等を書いていきます。 Rubyが使える競プロサイト 日本語あり AtCoder yukicoder 英語 Sphere online judge 入力について 基本(1) 整数の読み込み いろいろなやり方がありますが、筆者はgets.split.map(&:to_i)をよく使います。 Kernel#getsで1行読み込み、String#splitで空白区切りで分解し、String#to_iで整数に変換します。 例:

                                                                    • yhara encodeを公開しました - 日記を書く [・w・] はやみずさん

                                                                      任意の文字列をYharianへと翻訳するyhara encodeを公開しました。 HugeDomains.com - Shop for over 300,000 Premium Domains Yharianについてはこちらが詳しい。 @new_harizonの喋る言語「Yharian」について (Kanasansoft Web Lab.) http://new-harizon.tumblr.com/ 今世紀に入り登場した人工言語Yharianは、習得/翻訳の難易度の高さから長らく敬遠されてきましたが、このyhara encodeにより誰でも容易にYharianを読解、あるいはYharianへと翻訳することが可能となります。yhara encodeによりnative Yharianと意思疎通が可能となった今、人類は新たな高みに達したと言っても過言ではありません。 なお、yhara enco

                                                                        yhara encodeを公開しました - 日記を書く [・w・] はやみずさん
                                                                      • RubyのクラスにWWW::Mechanizeがあります。 http://mono.kmc.gr.jp/~yhara/rubyscraping/?…

                                                                        RubyのクラスにWWW::Mechanizeがあります。 http://mono.kmc.gr.jp/~yhara/rubyscraping/?WWW%3A%3AMechanize このクラスの中にどういったメソッドがあり、どういった戻り値を返すのか、詳細に書かれたページを教えてください。英語のサイトでもかまいません。googleでは少し調べてみましたが、詳しく書かれているページは探せませんでした。 またこのクラスとRubyを使って、Gmailにログインするところまで教えてください。PerlでWWW::Mechanizeを使ってログインする方法は見たことがありますが、rubyではありません。あくまでRubyでのログインスクリプトをお願いします。 参考サイト: http://digit.que.ne.jp/work/wiki.cgi?Perl%E3%83%A2%E3%82%B8%E3%83

                                                                        • 対戦型AIコンテスト Halite-IIIの始め方 - yhara.jp

                                                                          10/16から始まった https://halite.io/ がけっこう面白かったので、始め方を解説します。 Halite-IIIとは HaliteはTwo Sigmaという会社が開催しているプログラミングコンテストで、Halite-IIIはその第三回目になります。 Halite-IIIは2〜4人対戦型のゲームで、海に船を出して海中の"halite"を回収し、一定ターン後に一番たくさんhaliteを蓄えたプレイヤーが勝者となります。試合はAIを投稿するたびに自動的にサーバ側で行われ、勝率によってレーティングが変化します。 開催期間は年明けの2019/1/22までとけっこう長いです。 使用可能な言語 https://halite.io/learn-programming-challenge/downloads に一覧がありますが、C++、Java、Rust、Goなどさまざまな言語で参加するこ

                                                                          • Rustで継承したいときはどうする? - yhara.jp

                                                                            たとえばゲームプログラミングでEnemyとしてスライムとドラゴンがいて…みたいなとき、Rubyなら継承で実装しますよね。 class Enemy attr_accessor :hp # 体力 end class Slime < Enemy end class Dragon < Enemy attr_accessor :breath_power # ブレス攻撃の威力 end

                                                                            • LLVMで動くオブジェクト指向言語を作ってレイトレした - yhara.jp

                                                                              先月のエントリでEsquisというプログラミング言語を作っていると書いたが、あれからいろいろ機能を足して、レイトレーシングのプログラムが動くようになった。 できたもの https://github.com/yhara/esquis/releases/tag/v0.0.1 実行結果 (前エントリと全く同じ絵なのもアレなので、T=10にしてみた) ソース https://github.com/yhara/esquis/blob/v0.0.1/examples/ray.es 見てもらえばわかるけどほぼRubyで、ただし引数に型指定があって、コンパイル前に型がチェックされる。(それって最高じゃん?と思ったあなた、気が合いますね) 今日はついに、「引数の型の変更漏れを処理系が教えてくれる」という幸福な体験をした。 言語仕様はこれからいろいろ変わると思うので詳細は書かない。 経過 2016/10/16

                                                                              • またqmk_firmwareのコンパイル方法が変わっていた - yhara.jp

                                                                                qmk_firmwareをgit pullしたらまたコンパイル手順が変わっていた。開発が活発でありがたいことである。付いていくのが大変だけど。 keyboards/ergodox/ez が、keyboards/ergodox_ezに移動した。 トップレベルディレクトリでmakeする方針になったみたい https://github.com/qmk/qmk_firmware/issues/1659 例えばmake ergodox_ez-defaultとか 試しに、keyboards/ergodox_ez/keymaps/yhara/keymap.cを置いて、qmk_firmware/以下でmake ergodox_ez-yharaしてみる。 QMK Firmware v0.5.130 Making ergodox_ez with keymap yhara avr-gcc (GCC) 4.9.3

                                                                                • Shiika進捗2020 - yhara.jp

                                                                                  このエントリは言語実装 Advent Calendar 2020の4日目のエントリです。昨日はmitsuchiさんのLLVM の Kaleidoscope を育てながら作るでした。 言語実装アドカレ、今年は全日埋まってるんですねえ。処理系Slackのおかげでしょうか?すごいなあ。 Shiikaは私が作っている、Ruby風の文法を持った静的型付けプログラミング言語です。Rubyのような手触りを保ちつつ、型をベースにしたプログラミングを楽しめる言語を目指しています。数年前から開発していて、昨年夏からはRust + LLVMによる処理系実装を始めました。 本記事では今年の主な成果を振り返ってみようと思います。 サンプルの追加 サンプルプログラムとしてマンデルブロー集合の描画、レイトレーシングを追加しました。いずれも、出力がおもしろいわりに比較的少ない言語仕様のみで記述することができ、処理系実装の