サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
no-maddojp.hatenablog.com
自分&友人向けメモ。 転職する時英語が基本の会社を受けたので、急いで英語が喋れるようになる必要があった。 実際1か月くらいで英語の面談ができる程度になったのでそんなにやること的外れではないと思っているので、忘れないうちにメモしておく。 前提 わたしはソフトウエアエンジニア 日常的に英語ドキュメントに接していたので読むには問題ない 会話は全然ダメ 大学院生の時、学会発表のために練習しているので全く下地が0ではない 1日の勉強時間は結構多かったよ 楽な方法じゃないよ やったこと 30秒英語スピーチ 自分の状態を考えるに、人と会話できるレベルではなかったので一方的に喋る練習をするべきだと思いました。 世間では瞬間英作文トレーニングという簡単な1文を英語で反射的につくるというトレーニングがあり、自分の英語レベルはそこまでではなかったので1つ身近なトピックを30秒喋り続けるのを目標にスピーキング練習
必要にかられてVSCode縛り開発を一ヶ月やっていたのですが、普通に便利に開発できるようになったのでメモ。 VSCodeでしかできないことがある VSCode を使うことになった主な原因は2つある。 Live Share ひとつはリモート下で密接にペアプロする必要があったため。 その上で Live Share が便利すぎて手放せなくなった。 docs.microsoft.com 多分対面でやっていても、お互い別のマシンでLive Shareでつないでいる方が都合が良いくらい便利。 最近Pythonばかり書いておりますが、Pythonだと値の型とかわからなくなったときに debugger を使うことがおおく、 その際にお互いデバッガーの状態を共有したまま調査ペアプロとか出来るので非常に便利。 Remote SSH もう一つはリモートマシンにログインしてストレス無く開発するのにRemote S
また壊れたんですが、今回は色々睡眠治す実験を繰り返してこれでええやろという方法までたどり着いたのでメモしておきます。 基本的な考え方 実践したこと殆どこれと同じだったのでURLで(このページはいろいろな参考文献にreferしているので面白い)。 www.otsuka.co.jp 睡眠壊れた段階だと、これと同じことができない事が多いのですが 朝起きる・活動し始める時間を固定する 睡眠不足・徹夜でもかならずこの時間から活動し始める 朝起きたら朝日を30分以上浴びる 朝起きたらタンパク質を摂取する 私の場合は朝起きたらランニングに行く習慣を身に付けたので、自動的に朝日を浴びるようになりました。 朝の時間を固定したら、それに合わせて自動的に眠くなるようになります(そうでなければ薬の力で)。 あとは夜に運動することをやめました。 私はよく歩いて会社から帰宅していたのですが、これは結構早いペースで歩い
これはプリッカソン Advent Calendar 2018 2日目の記事です。 僭越ながらプリパラについての記事を書きます。 プリパラは救いの物語である プリパラはオタクにとって救いの物語である。 プリパラは最初から「みんなともだち、みんなアイドル」ということを謳っている。 これは物語の中で体現されている。 プリパラは、お話の中で幾度と無くその存在を脅かされる。例えば初期の頃には校長先生がプリパラを取り締まり、プリチケを没収されてしまう。またあるときはプリパラのシステムが乗っ取られ、選ばれたものしかライブができないセレブのための世界に置き換わってしまう。 そんな中にあっても、SoLaMi Smile, Dressing Pafeなどのプリパラアイドルたちはライブを続け、それらの問題を解決し、彼女らと和解していく。 そう、最後には和解するのだ。 校長先生は自分がプリパラを憎む理由がただのす
老人なのでemacsでプログラムを書いていますが、最近はpythonを少しだけ書く必要があったので環境の話をまとめます。 melpaにアクセスできることを想定してます。 念の為、バージョンに依存するところはないと思いますがpackage.elを使うので24以上、 私の環境は26.1です。 ;;; package.elの初期化 (when (require 'package) (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) (package-initialize) ) elpy M-x package-install elpy 殆どこれで終わる。 elpyはpythonを書くためのパッケージなどをまとめてインポートする全部のせextension。 以下の機能がまとめて入る。
ML Day#2を開催しました。 ML勉強会という名前にしていたときから数えて通算4回目です。 今回もドワンゴさんのセミナー室をお借りしました。 この規模のセミナー室が便利に利用できるのは本当に助かります。 発表の紹介 発表枠6 + LT枠5のあわせて11もの発表がありました。発表者の皆様に感謝です。 他のコミュニティだと割と発表者の確保に苦労しておられるようですがML勉強会からあまり困ったことがありません。 以下の紹介は私の理解ですので何か訂正があったらツイとかで指摘ください。。。 ラベルなしオプション引数のための型システムと型推論 unlabeled-opt-args.pdf - Google ドライブ 最初はSATYSFIでお馴染みの@bd_gfngfnさんの発表でした。 この発表はSATYSFI向けに、オプション引数のための型システムと型推論を考えてみたという話でした。 Latex
徒然なるままに書く側のおかねのはなしをする。技術書典限定かつねこのしっぽさんの数値を使う。 追記: 全体的に500円で売ることを考えた内容になっている気がする。 500円で売ることを考えると、原価に対する印刷費の割合がとても大きく、1000円で売ることを考えると割合はぐっと下がる。 値上げをするというのが良い戦術な気がしてきた。しかし結論として1000円で売ることは大変だよね、という立場は変わらない。。。。 製作コストの感覚 分厚い話を書こうと思ったら40pは必要な気がする。 B5・表紙カラーで白黒の本をすろうと思った場合の、一番安いプランであるオンデマンドでの製作コストは以下の通り。 50部: 19500円 390円/冊 80部: 23900円 298円/冊 100部: 26800円 268円/冊 200部: 42900円 214円/冊 オンデマンドのぱっく(無線綴じ) これに別途、 参
小さな問題を分からないといい続けないでさっさと目の前の問題を解けという声が聞こえる。 パラダイムの議論がしっくりこない よく言われるやつ。 手続き型プログラミング 計算機の内部構造の延長線上にある、アセンブリ言語を構造化したプログラミングスタイル オブジェクト指向プログラミング オブジェクトのメッセージ受け渡しにより処理を記述するプログラミングスタイル。 良くインターフェイスと実装の分離、みたいな利点が言われるけどメッセージパッシングがOOPの本質だとしてどこからインターフェイスの話がでてくるの?*1 関数型プログラミング 関数を最小単位として、小さな式を組み合わせて大きなプログラムを書くパラダイム*2。こういった対比では、それはOOPでも一緒じゃね?と言われたりするので、「できるだけ副作用を抑えるプログラミングスタイル」と説明したりするが副作用があるとインスタンスを複数作れないので不便で
実は8月の頭が最終出社日で、8月で今の会社を退社します。 今週から東京に引っ越しています。 東京の北の方に御用の際はぜひお立ち寄りください。 今の会社では開発環境整備とか、製品の開発を行っていました。 色々苦労してcvsからgitにした話は名古屋のLTで話した感じです。 色々あって山奥もきつくなってきたのと、誘われた話が面白そうだったので転職することにしました。 次は9月からidein.jpにジョインします。 今いる人達はすごいエンジニアばかりですが、 コンパイラマンとしていい仕事が出来るように頑張ります。
C# のHelloworldの基礎を説明できる人、弊社に一発で入社できますよ。ってかんじだ。— きょん@うさみみモード (@kyon_mm) 2017年5月16日 @func_hs 別に言語はとわないつもりですけど、 C# だとうれしい。— きょん@うさみみモード (@kyon_mm) 2017年5月16日 前一度調べたので記事をまとめておく。 OCamlプログラムの初期化は複雑だなぁ思った次第です。 コンパイルコマンド ocamlopt -verboseで実際に動くコマンドが見えるのでまずコレをチェックしておく。 結構色々なことが分かる $ ocamlopt -verbose -o caml_hello hello.ml + as -o 'hello.o' '/tmp/camlasmfdcbdf.s' + as -o '/tmp/camlstartupfccd4a.o' '/tmp/ca
この記事は言語実装 Advent Calendar 2016の1日目の記事です。 2週間前くらいからFortran 90の規格に準拠したパーサーを書こうとして苦労した話を書きます。 あまり大変だよ~という読み物になっており結論はありません。 なお実装は未完成です、、、 GitHub - nomaddo/f90: a tiny subset of fortran 90 written in ocaml. 経緯 SIMDの論文を読んでいたら実験したくなっていい感じのフロントエンドが欲しかった。 が、当初の目的は明後日に行ってパーサーを書いている。 道具 案の定OCaml + Menhirです。 私はヴァリアントのない言語でバグらずに実装できる気がしません。 (最近はCで書かれたコンパイラもよく読むのですが) OCamlでコンパイラを作るというのは僕の中では普通の選択肢です。 世間の皆様はCやC
僕がML情報が集まる会が欲しくて開催しました。 @blackenedgold さん、@khibino さんにご協力頂きましてありがとうございました。 connpass.com 発表一覧 ATSで捕捉されたリアルタイムOSのシステム状態(masterq さん) Real-time OS system state captured by ATS language from Kiwamu Okabe www.slideshare.net リアルタイムOSのChibiOSの紹介とATS2の宣伝(?) ChibiOSは内部的に状態を持っており、API関数を呼ぶときに普遍条件があるけども、 C言語から呼び出すとそれをキャプチャできないのでプログラムが危険になっていました。 それをATS2の依存型を用いて現在のOSのステートを型にエンコードして解決している話でした。 ステートを埋め込むだけならば幽霊型を
この時期大学四年生は卒論の時期で、今まで論文やサーベイだったのが 自分で手を動かすフェイズになっていることでしょう。 その際にバックアップというのは重要になります。 例えば研究用のソースコードを改造していく途中でプログラムを壊してしまって 元に戻したい、別に実装を試してみたくなる場合というのはあると思います。 また壊しても元に戻せるという安心感があればガンガンプログラムを変えていくことができます。 証明や卒論のtexファイルも同様に管理できます。 その際に使えるgitというバージョン管理ソフトの使い方を紹介します。 gitのことはどこかで聞いたことがあるでしょうが、 特にこの記事では一人で使う場合に特化して、手っ取り早く卒研に使えるように説明を絞ります。 (gitは多くのプログラマが使っている道具なので、他の使い方は調べれば簡単にわかるでしょう) gitでできること 一人での作業で有用なと
この記事は言語実装アドベントカレンダー21日目、MLアドベントカレンダー21目の記事です min-camlのJVMバックエンドを作ったという話を前に書いたのですが、 それの詳細を書きたいと思います。 前の話はこの辺にかかれています。 JVMバックエンドに移植するのは大して難しくないというのは上の記事で書きました。 スタックマシンへのコンパイルの方針はほぼ説明尽くしたと思っていますが、 そのへんで説明していないものについて説明します。 基本方針 min-camlのシンタックスというのは以下で表される非常にシンプルなものなのです。 移植する際はこれを直接扱わずに済みます。直接対象にするのはClosure.progです。 min-camlでは以下のように形式が変換されます。 min-camlではまずK正規化され(ここを見てください)、次にクロージャ変換されます。 次の中間言語Asm.progから
この記事はML Advent Calendar 20152日目の記事です。 @eldeshさんたちとSMLの同人誌を書こうという話をしていたのですが、 あえなく冬コミに落ちたので使わなかった記事を公開します(実はもう公開状態なのですが 下のリンクからintro.pdfをダウンロードしてみてください。 github.com 問題点 細かいレイアウトの調整をしていないのでやや見づらい部分がある、はみ出している部分がある 細かいチェックをする前に落ちたことが分かったので記述の内容をそこまで精査してない 目次の日本語が化けている ですがまぁかなり詳しくSMLの機能の気持ちをまとめたと思いますので役に立つと思います。 言語オタク向きです。 pullreq, 間違いの指摘大歓迎ですよろしくお願いします。
言語処理系 Advent Calender1日目の記事です。 初日なのであまりハードルを上げすにライトなネタを。 趣味でコンパイラを作る際に最終的な出力ファイルを何にするのかは悩みどころです。 手づくりの温かみのあるバックエンドでやるのか、LLVMやC--、COINSを経由するのか、 はたまたJVMバイトコードなどのバイトコードにするのか。 CやJavaScriptに出力するのは相対的に簡単そうで実用的だなぁという感触もあります。 今回はそれなりの言語をちゃちゃっと走らせるための対象プラットフォームとしてJVMを検証するために、 min-camlのサブセットのJVMバックエンドを実装してみました。 サブセットと言っているのはクロージャの対応が終わってないからです。実装の見通しは立ってます。 感想としてはJVMバイトコードへのコンパイルはそれほど難しくないけども JVM特有のつらみがあるとい
小ネタ。OCamlの複雑な機能の中にファンクタというものがあります。 これをどういうふうにコンパイルしているのか見てみましょう。 結論からいうと、 OCamlのモジュールというのはただのレコードである。 ファンクタはレコードを受け取ってレコードを返すまさに関数である です。 コード例 実際のファンクタを使ったコードを見て、これがどういうふうに中間コードで表現されるのか見てみましょう。 module type S = sig type t val f : t -> t end module Make (M: S) = struct let h1 = (M.f, M.f) let h2 = (M.f, M.f) end module M1 = struct type t = int let f x = x end module M2 = Make(M1) このコードは、ファンクタMakeをつく
元ネタはこちら TCOと例外ハンドル | κeenのHappy Hacκing Blog これを機械語レベルで理解したく、OCamlで検証してみることにしました。 同じベンチマークコードではなく機械語を読みやすくするためにシンプルな例にしてます。 ちなみになんか当たり前の結果になったので分かってる人は読まなくていいと思います :) 元ネタを振り返ると、末尾再帰の気持ちで書いてたコードの最後の末尾再帰呼び出しのところに例外ハンドラを書くとすごくパフォーマンスが落ちた原因を考えたら多分末尾再帰呼び出し最適化がかからないからだ、というものでした。 SMLで書いていると機械語が読めないのでOCamlで実験します。実験コードは下のようなものです。 ベンチマーク&テストコード 関数loop1とloop2は内部で再帰呼び出しによりループする関数を呼び出していて、その補助関数は引数を1つだけ受け取ってそれ
20150426加筆 RWOの説明を書いた 20150422加筆 より細かく書いた 20210922加筆 もうこれトップに表示されなくてもいいかと思って日時を変更 20150909加筆 以下の内容はDebian 7向けに書かれており古いです! Debian 8ではより簡単にopamをインストール出来るようになっています! 下の記事では重複する部分は書きませんでしたが、インストール方法については下の記事が最新です。 no-maddojp.hatenablog.com なんかちょっとだけOCaml環境構築が面倒みたいな話があったので、構築手順を書く。 大体確かめられた手順なのでよいはず。 Emacsのインストールまで解説しますが、RWOを読み始めるにあたりエディタの設定は必ずしも必要ではありません。 楽しんで下さい。 Real World OCamlとは おそらく最もヘビーにOCamlを使って
話題の関数型ポエム。 関数型言語って言われてるものが好きで、なぜならその方がしっくり来るから。 関数型言語は空想上の理想の関数型言語じゃなくて現実の言語を指します。 多くの関数型言語では安全にプログラミング出来るように設計されて、快適な事が多い。 全てがオブジェクトなのはやり過ぎで面倒くさい。 最小単位が値・関数の方が小さい単位で小回りがきいてしっくりくる。 関数型言語それ自体は手続きもオブジェクトも否定しない。 多くの手続き型言語では関数型プログラミングはあまりしやすくない(と私が感じる)けども、関数型言語で手続き型プログラミングは全然できる。 このパラダイムで書いたほうが書きやすと思った時にそれを選べるのが大事だと思う 関数型言語ははシンプルだとか言われることがあるけど、OCamlを書いているとfunctorだけでも十分に難しい機能に思えるし第一級モジュール・オブジェクト・多相ヴァリア
追記: 冷静に考えて前提知識を求め過ぎなので幾つか追記しました。 OCamlのプラグインであるmerlinの紹介記事です。Linux環境で、Emacs上にてそれを試してみます。 この記事はML Advent Calendar 2014 1日目の為にかかれました。 merlinはauto-completeなどを通して関数名などの補完機能を提供する拡張です。 他にも ある関数が使われた場所からそれの型を確かめたり(merlin-type-enclosing) ocamlの文法上それらしく振る舞うexpand-region.elのようなリージョンエキスパンド機能があったり(merlin-enclosing-expand) ある関数が使われているファイルを探して参照して元のファイルと行き来出来たり(merlin-locate, merlin-stack-pop) mlファイルのセーブ時にエラーチェ
卒論で死にそうです。色々。 PPLのポスター発表に間に合うのでしょうか、その前に卒論発表会に間に合うのか…。 それはさておき、型注釈を色々見ていたら、MLも闇だなぁと思ってたのでちょっとメモしてみます。 追記の追記の追記: @camloebaさんにツッコミをいただきました。型注釈という言葉は不適切ということでした。 毎度ありがとうございます[´・_・`] @no_maddo 型注釈とは言わない。型制限と言う— 星のキャミバ様 (@camloeba) 2014, 2月 17 @no_maddo Parenthesized expressions can contain a type constraint, as in ( expr : typexpr ). それを type annotation と呼ぶところから間違いが始まります— 星のキャミバ様 (@camloeba) 2014, 2月
今年はメインで使っていたノートPCを気が触れてUbuntuにしたら快適かなぁとか思ってうっかりOSをクリーンインストールしたせいでn回(n>10)以上もOSをクリーンインストールすることになりました。 なんだかその都度OCaml環境を再構築していたので、段々手順を覚えてきたしそろそろ快適なOCaml環境を構築する方法みたいなものをまとめて他の人のフィードバックを頂きたいなぁとも思い、記事にまとめてみます。 主に僕が知り合いにここみてねという言う用と、フィードバックを貰いたいための記事です。 より良い方法をご存じの方がいらっしゃったらぜひ教えてくださいませ。 OSXへOCamlの開発環境をOPAMで構築し直した - tmaeda 日記(2012-10-28) を参考にしていますが、4.01.0になりより楽な方法で構築できるようになってますので書き起こしておきます。 扱うのはEmacsを使う前
このページを最初にブックマークしてみませんか?
『type t (* void *)』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く