Dismiss Join GitHub today GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together. Sign up
基礎文法最速マスターブームにのっかってみる。Ruby基礎文法最速マスターをだいたいEmacs Lisp(elisp)に置き換えてみる。 Emacs LispはEmacsで使われているLisp方言のひとつだ。他の言語をある程度知っている人はこれを読めばEmacs Lispの基礎をマスターしてEmacs Lispを書くことができるようになるかもしれない。無保証ではあるが。 ある程度はCommon Lispにも応用できると思うよ。 更新情報 [2010/02/03] 注釈の誤りを修正。 let*について加筆。 基礎 対話的にEmacs Lisp式を評価する Emacsを起動したときに生成されている、スクラッチバッファ(*scratch*)を使うと、Emacs Lispの式を簡単に評価することができる。M-Tabで補完できるぞ。 式を書いたらC-jを押すと、式の値が出てくるぞ。 (+ 1 3) 4
(setq キライの nil) (defun ハンタイの(p) (not p)) (defun そのさらにハンタイの(p) (not p)) (defun キモチを伝えるのって(p) (if p 'スキ 'キライ)) (defun 何だか難しい(p) p) (defun ハンタイは?(p) (if (not p) 'スキ 'キライ)) (何だか難しい (キモチを伝えるのって (そのさらにハンタイの (ハンタイの (ハンタイの (ハンタイの (ハンタイの キライの))))))) ; => スキ # -*- coding: utf-8 -*- class Object def ハンタイの() !self end def そのさらにハンタイの() !self end def キモチを伝えるのって() self ? :スキ : :キライ end def 何だか難しい() self end def
今更ながら、Emacs のシェルスクリプトモードについて、主に構文入力についてまとめてみます。 便利すぎて手に馴染みすぎて、もはや忘れていますorz でも手が覚えているので、順番に打ってまとめてみました(笑 [重要なこと]anything + auto-complete も有効にしておくと、編集が楽すぎます。 [重要なこと]anything + auto-complete も有効にしておくと、編集が楽すぎます。 大事なことなので、2 回書きました。 ちなみに、当方の環境は VineSeed Emacs 23.2, Vine Linux 5.1 Emacs 23.1 です。 シェル宣言:C-c : sh-set-shell 1行目の Shell: から決めます。 なんちゃら.shを作り始めたら、すぐに手が「C-c :」を動いてしまいます(笑 Shell (default /bin/bash)
2017年08月09日12:27 カテゴリEmacs helm と dumb-jump に首ったけ コード書いとる? 普段からemacsでコードを書いてますが、標準添付のimenuの使い勝手がそろそろ限界で難儀してました。 そこで調べてみたら helm と dumb-jump という良さげなパッケージを見つけたのでシェア!! ちなみに macOS での話です。 dumb-jump は事前ファイルの生成なしに快適なタグジャンプを提供してくれるパッケージです。 dumb は「ばかな・愚かな」という意味の単語ですが、快適すぎて使う側の脳が劣化する感じですw インストールはMELPA経由が一番簡単でしょう。 M-x package-install dumb-jump おいら手動でなんとかするもんね!! という場合、まず以下のパッケージをGitHubから探して.elファイルを自分の環境にコピー。自分
dired で条件を満たすファイルのみを表示する標準コマンドは存在しますが、 フィルタリング機能付きバッファリストの ibuffer をモデルに体系化したのが この dired-filter.el です。 これを使うと、 ディレクトリのみを表示する (/ d) 特定の拡張子のファイルのみを表示する (/ .) 正規表現にマッチしたファイルのみを表示する (/ r) それらを除外する (/ !) などが簡単にできるようになります。 たとえばディレクトリを除外したければ / d / ! と操作します。 フィルタリングはスタック状になっているので ガンガン絞り込めます。 たとえばemacsと244が含まれるファイルに絞り込むには / r emacs / r 244 と操作します。 フィルタリングをすべて解除するには / / です。 条件を満たすファイルをマークする機能もありますが、 フィルタリン
Emacs Lispで、ファイルから入力する処理をCommonLispのノリで書こうとしたら・・・ >(require 'cl) >(with-open-file (in "hoge.txt" :direction :input) (with-open-file (out "fuga.txt" :direction :output) (princ (read in) out))) Debugger entered--Lisp error: (void-function with-open-file) あれ? >(open "hoge.txt") Debugger entered--Lisp error: (void-function open) ・・・あれ? ELispってファイルオープンしてストリームを作ることができないのか・・・。 調べて見たところ、streamとして使えるのは以下のと
連休はEmacs Lispに始まり,Emacs Lispに終わりそう. PerlにおけるStorable,RubyにおけるMarshal,PythonにおけるPickleのようなデータ構造をそのままダンプする仕組みが欲しいというときにはLispは便利.S式をそのまま読み書きすればよい.(S式のバイナリダンプではないので,YAMLと言った方が正確) S式の便利なところはデータ構造 = 記号であること.そのまま出力すればよい. とりあえず,適当にデータとそれを保存する関数と読み込む関数を作ってみる. (setq data '(((name . "hoge") (id . 10)) ((name . "fuga") (id . 11)))) (defun save-data (filename) (interactive "sInput filename: ") (with-temp-buffe
旅をしています。途中経過はgistで はじめに elispは便利な機能がデフォルトでつかえないことが多いです。cl由来の便利ライブラリが使えません。(require 'cl)をする必要があります。それ自体はeval-when-compileで囲めば良いので問題ないです。elispは名前の衝突を避ける仕組み(e.g. 名前空間)が用意されていません。そんなわけで、自前の拡張を作成するときに各自で重複するようなマクロが定義されてます。onlisp由来のマクロなどを良く見かけます(とくにaifを良く見かける)。 今回の目的は2つあります。 各自が個別に定義してきた便利マクロを集めてみるとどの程度の規模になるのか知りたい。 自分用の便利なマクロを集めたライブラリが欲しい。 とりあえず、便利だなと思うマクロを追加してみることにしました。util-macro.elというファイルがそれです。 追加したマ
id:reinyannyan:20070416:p1 (簡易クロージャの実装) で、変数の値を関数式の中にインライン展開することで擬似クロージャを作成する方法を考えました*1。今回はその応用編です。 savehist-mode を有効にして、ミニバッファの入力履歴を Emacs セッションを通じて記憶しておく、というケースを題材にします。 保存された履歴ファイル (~/.emacs.d/history) を眺めてみると、入力内容に重複があることに気付きます。 まずは単純に重複を削除することを思い付くんですが、それだけだと compose や curry の出る幕はありません。 そこで、ファイル名の履歴に注目してみると、入力内容に特徴的なばらつきがあることが分かります。 例えば、ディレクトリ名がスラッシュで終わっていたりいなかったり、"~/.emacs" を "~/work/../.emac
loopマクロでcollect節と一緒にintoを使うと演算コストが非常に大きくなるという話。 原因を探るためにintoなしとintoありのloopマクロをmacroexpandで展開してpretty-printしてみます。どちらの演算式も返す値は同じになります。 ;; intoなし (pp (macroexpand-all '(loop for i from 1 to 10000 collect i))) ;; intoあり (pp (macroexpand-all '(loop for i from 1 to 10000 collect i into x finally return x))) ;; 結果 ;; intoなし (cl-block-wrapper (catch '--cl-block-nil-- (let* ((i 1) (--cl-var-- nil)) (while
pcmpl-args.el: Enhanced shell completion in Emacs というパッケージがあります。ELPA repository に登録されていますので package-install や el-get でインストールできます。 具体的なコードは以下になります。 (require 'pcmpl-args) (defun pcomplete/rake () (require 'cl-extra) (pcmpl-args-pcomplete (pcmpl-args-cached 'rake t (pcmpl-args-make-argspecs (append (pcmpl-args-extract-argspecs-from-manpage "rake") `((argument * (("RAKE-TARGET" (:eval (let ((rakefile
はじめに こんにちは、Misoca開発チームの洋食(yoshoku)です。 私は、Python十年選手な機械学習メンですが、MisocaではRuby小僧なRailsキッズしてます。 データ分析のフィールドでは、RやPythonがメジャーなプログラミング言語ですが、 SciRubyプロジェクトを中心に、 Rubyでもデータ分析やるぜ的なバイブスが上がってきています。 そんなわけで、レペゼンMisocaで、基礎的なデータ分析を試してみました。 DaruとStatsample Daru(Data Analysis in RUby)は、その名のとおり、 Rubyでのデータの操作や可視化を実現するライブラリで、 PythonのPandasに相当するものです。 Statsample は、 統計的な分析・検定手法を提供するライブラリで、 PythonのStatsModelsに相当するものです。 どちらも
Suggest.el v0.4 is now out, and it offers some really interesting new ways of making suggestions. Supplying Constants Suppose the user gives us the input '(a b c d) and desired output 'a. We would already suggest car, but that only gets the first element of the list. They may have wanted elt or nth, which get elements at a specific position. We now try adding constants to the user’s inputs, specif
Recently, I’ve been writing a lot of Emacs Lisp. I’ve been trying to write as many of my own tools as possible in elisp, to see what the language works well at and what it doesn’t do well. Turns out, elisp does many things well. However, there are several libraries that make life much easier. (Disclaimer: I’ve written some of them.) Lists Firstly, dash.el, which describes itself as “a modern list
Emacs will change how you think about programming. Emacs is totally introspectable. You can always find out 'what code runs when I press this button?'. Emacs is an incremental programming environment. There's no edit-compile-run cycle. There isn't even an edit-run cycle. You can execute snippets of code and gradually turn them into a finished project. There's no distinction between your editor and
Second Climacs is an Emacs-like editor that is focused on editing Common Lisp code and that is written entirely in Common Lisp. The project is called Second Climacs because it is a complete rewrite of the Climacs text editor. The (First) Climacs editor gave us some significant experience with writing a text editor, and we think we can improve on a number of aspects of it. As a result, there are so
などといったエラーが発生します。 Emacs では例えば ~/.emacs に以下のようなコードを書くと load-path が参照されます。 load-path は Emacs Lisp の変数です。どんな値が入っているのかは第3回 の方法で調べられます。 load-path には複数のディレクトリが登録されているはずです。 まず先頭のディレクトリについて、以下の順で検査が行われます。第2回 の .emacs と同じですね。 hoge.elc が存在するか? hoge.el が存在するか? hoge が存在するか? 1, 2, 3 のどれにも当てはまらなければ、次のディレクトリが検査されます。 全てのディレクトリで当てはまらなければ、以下のエラーが発生します。 load-path を構成するディレクトリ# デフォルトの設定では、以下の順番に構成されているはずです。 <PREFIX>/sh
Is there an easy way to pretty print random SQL in the (rails 3) console? Something similar to awesome_print, or maybe even Pretty Print. It doesn't have to understand all the dialects possible or be super-advanced. All I really want is to inspect the SQL generated by ActiveRecord easier. Currently I just copy the SQL go online to format it which is obviously a productivity killer. I really want t
(書きかけ)EmacsでSQLの整形(要Ruby) SQL崩しとも言うようです。 すごく適当なメモです。気が向いたら修正などするかもです。 sonota's anbt-sql-formatter at master - GitHub ここからアーカイブをダウンロードして展開して適当なところに置く。 以下では、展開して出てきたフォルダを ~/anbt-sql-formatter となるように置き、 その中に bin, lib, ... がある状態にしたとして進める。 テストがしたければ $ cd ~/anbt-sql-formatter $ ruby setup.rb test しなくてもOK。 動作確認(これも必須ではない) $ cd ~/anbt-sql-formatter $ ruby bin/anbt-sql-formatter sample.sql (サンプルSQLを整形した結果が
Java 仮想マシン (JVM) 上で動く Lisp 系言語 Clojure の入門書を買って一年がたちました.最近ふと Clojure の環境構築だけでもしてみようと思ったのですが,手元にあるのは Windows のみ.ということで,インターネットで検索しつつ Windows 上で Clojure の開発環境を構築しよう……と思ったらいくつか嵌ったのでメモ. 私の環境: Windows 8.1 タブレット (32 ビット) 最終更新日: 2015/01/29 JDK JDK とは JDK (Java Development Kit) はその名の通り Java の開発キットです.とりあえずこれを入れないと話にならないようなのでインストールします. Java での開発をしたことがある等で既に JDK を持っている場合はスキップしてください. インストーラのダウンロード まず Java SE
原文: https://github.com/harrah/xsbt/wiki/Setup 2011年10月21日追記: sbt0.10のときに訳したので、現在では原文の内容と異なっているかもしれません。ただ、現在もほぼsetupの手順は共通のはずなので、こちらはこのままで残しておきます。さらにversionが上がって、この内容がほとんど役に立たなくなるようならば、修正するか削除するかもしれません。 はじめに このページでは、どのようにしてsbtを使用してプロジェクトをセットアップすればいいのかを説明します。基本的な手順は以下のようになります sbtを起動するためのスクリプトを作成します ソースコードを作成して、lib/ディレクトリの配下にjarを入れます ビルドの設定をします 基本的な使用手順を知るにはRunningを読んでください 構成の手順については、Settingsを参照してくださ
sbtはライブラリの依存関係の解決にIvyを使用しています。Ivyはローカルに「キャッシュ」と「リポジトリ」という似て非なるものを持っており、これがsbtを利用するうえでのハマりポイントの一つとなっています。 ちなみにMavenの場合、ローカルリポジトリがローカルキャッシュの役割も兼ねています。Mavenに慣れているとIvyはちょっと面食らう挙動をすることがあります。普通にライブラリを使っているだけであれば意識する必要はないのですが、自分でライブラリやsbtプラグインなどを作成して動作確認のためにローカルリポジトリにpublish-localしたりする場合にはIvyのローカルキャッシュとローカルリポジトリについて正しく理解しておく必要があります。 参照する順番とSNAPSHOTライブラリ Ivyはまずはじめにローカルキャッシュを見に行き、存在しない場合ローカルリポジトリ→リモートリポジトリ
というか始めるsbtを読んで実際やってみたときのメモ。 sbtのインストール Windowsなら公式ページからmsiをダウンロードしてインストール sbtの生成 giter8のテンプレートを使うのが一般的なのかな? なんかインストールしたけどうまく動かなかったので、 sbtは一度使ったことがあるし、自前でやってみる。 始めるsbtに沿ってやってみよう。 ディレクトリの作成 まずはスパイク用ディレクトリを作る scalaファイルをとりあえず置いてみる hw.scalaで置く。 内容は、 object Hi { def main(args: Array[String]) = println("Hi!") } sbtコマンドを実行すれば実行できる、って書いてあるけど、runが必要だった。 バージョンアップで変わったのかな? sbt run まーこれだと普通の定義に従って動くだけらしいけど、通常は
※リモート:インターネットからDLしてきたps1、または別サーバ上のps1 ※署名付きの話は割愛します 今の実行ポリシーを確認するときは以下、 Get-ExecutionPolicy 実行ポリシーを変更するときは上記表の引数を指定して実行します。 (※レジストリを変更するので管理者権限でPowershellを実行してください) Set-ExecutionPolicy 引数 自分のローカルにあるps1を実行するには、RemoteSignedで十分です(`・ω・´) というわけで、上記を踏まえたうえで(なるべく)楽にPowershellを実行してもらうにはどうしたらいいのかをまとめました。 #コマンドラインから実行してもらう コマンドラインから実行してもらう場合のお話。 ただ、普段から使っているならそもそも実行でつまづかないかも… ##powershell編 配布ファイル:「hogehoge.
Rubyで重複する値を排除したい場合は、uniqメソッドを使えばOK。 a = [1, 2, 3, 4, 5, 6, 5, 4] a.uniq #=> [1, 2, 3, 4, 5, 6] 重複している値があるかどうかを調べるなら、uniqを利用すれば簡単にわかる。 a = [1, 2, 3, 4, 5, 6, 5, 4] a.size == a.uniq.size #=> false でも、配列から重複している値を抽出するメソッドは見当たらない(たぶん)。 そこで、配列から重複している値を抽出するスクリプトを書いてみた。 配列から重複している値を抽出する a = [1, 2, 3, 4, 5, 6, 5, 4] a.uniq.map{|v| v if a.inject(Hash.new(0)) {|h, key| h[key] += 1; h}[v] >= 2}.compact #=>
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く