サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
WWDC24
qiita.com/tadsan
こんにちは、あなたのEmacsを起動する.emacs Advent Calendarです。みなさまはどうやってEmacsを起動してますか? 本日はinit-loaderを利用しなくなった話をします。「init-loaderが良くない!」って主張ではなく、「めんどくささを感じたのでやめましたよ」ってだけの話です。 現在のファイルはこちら https://github.com/zonuexe/dotfiles/blob/master/.emacs.d/init.el init-loaderとは何か init-loaderは、ディレクトリにある複数の.elファイルを順に読み込むことができるツールです。init-loaderの利点を説明したblog記事はいくつもあるのですが、init-loader:init.elを分割で得られる7つの恩恵や Emacsの設定ファイルをinit-loaderを使って
.emacs Advent Calendar 2016初日です! Emacs Advent Calendarではありません! 私は昨年Emacsを起動するといふ記事を書きましたが、みなさんもEmacsを起動しますよね。 初期化ファイルとは Emacsの起動時に読み込まれるスクリプトのことです。 Emacsはコアの部分こそC言語ですが、テキストエディタとしての多くの機能はEmacs Lispで実装されてゐます。つまり初期化ファイルは単なる設定ではなく、ほかのEmacsの機能と同じようにテキストエディタを形作り一部分を実装することにほかならないのです──。 などとお題目はさておいて、公式マニュアルを読んでみます。 GNU Emacs Manual: Init File GNU Emacs日本語マニュアル: Init File いまはayatakesiさんの最新版のEmacs日本語マニュアルがあ
emacs-tangentsメーリングリストにまとめられたEmacs界隈のニュースに@tadsanが雑にコメントつけつつ紹介していくよ ヾ(〃><)ノ゙☆ 前回: 週刊Emacs News 2016年11月21日 リンクは主にreddit.com/r/emacs、/r/orgmode、/r/spacemacs、Hacker News、planet.emacsen.org、Youtube、Emacs NEWS fileの変更、emacs-develあたりから採られてるよ。 注意 この記事の出典: 2016-11-28 Emacs News 注釈が不要なひとはemacs-news Archives - sacha chua :: living an awesome lifeから読むと良いですよ。 Org Mode Mount org-mode files as FUSE file system
emacs-tangentsメーリングリストにまとめられたEmacs界隈のニュースに@tadsanが雑にコメントつけつつ紹介していくよ ヾ(〃><)ノ゙☆ 前回: 週刊Emacs News 2016年11月14日 リンクは主にreddit.com/r/emacs、/r/orgmode、/r/spacemacs、Hacker News、planet.emacsen.org、Youtube、Emacs NEWS fileの変更、emacs-develあたりから採られてるよ。 注意 この記事の出典: 2016-11-21 Emacs News 注釈が不要なひとはemacs-news Archives - sacha chua :: living an awesome lifeから読むと良いですよ。 ナビゲーション Moving around faster in Emacs 「もっと行移動を速くし
emacs-tangentsメーリングリストにまとめられたEmacs界隈のニュースに@tadsanが雑にコメントつけつつ紹介していくよ ヾ(〃><)ノ゙☆ 注意 この記事の出典: 2016-11-14 Emacs News 見出し以外の文章は出典には存在せず、本文および掲載コードの責任は @tadsan にあります。 ナビゲーション Edit file as another user in Emacs ほかのユーザーとしてファイルを編集するやつ。sudoあること前提。 When a bookmark is a directory, do find-file from there… ブックマーク先がディレクトリだったら、そこからfind-fileするやつ。 Emacsのブックマーク機能についてはEmacsのブックマーク機能 - tototoshi の日記とかGNU Emacsマニュアル: 1
プログラムを書けるプログラマを採用することは難しい、と説明した「どうしてプログラマに・・・プログラムが書けないのか?」といふ有名なエッセイがある。このエッセイによって「プログラムを書けるプログラマ」を見分けるためのテストとして良く知られるようになった「FizzBuzz問題」がある。 1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。 (どうしてプログラマに・・・プログラムが書けないのか?: Jeff Atwood / 青木靖 訳 / 2007年2月26日より引用) もちろんこれは、最低限の能力があるかどうかを図るための質問に過ぎない。いまどき採用面接でFizzBuzzを解かせる会社があるのかは知らないけれど、せめて自信を持って解ける
毎日いっぱいEmacsを使ってると非常にまれに、なにかのコマンドが悪さをして現在のディレクトリ(default-directory)が変になることがある。C-x C-fとかM-x find-fileとかでファイルを開こうとするけど、現在編集中のファイルがある場所とは全然別のディレクトリが選択されてめんどくさいことになってる状態。厄介なので直したい。 わざわざパッケージにするほどでもないかなって気がするので、init.elとかに書く。 (defun my/reset-default-directory-by-buffer-file-name () "Set default-directory by `buffer-file-name'." (interactive) (require 'f) (when buffer-file-name (setq default-directory (f-
科学万能の時代、2016年になってもPHPのリファクタリングは今でも鬼門らしく、現実は厳しい。 PHPをリファクタリングする上で、おそらく一番かんたんであろうクラス名と名前空間のリファクタリングに際しての使用箇所抽出とリネームを実現する上で考慮すべき事柄についてのポエム。PhpStormとかNetBeansとかEclipseとかのIDEがリファクタリング機能を提供してるのは知ってるけど、どの程度確実にリファクタリングしてくれるのかは知らない。 この記事を読んでも現実的な解決手段についての情報は得られない。この記事の情報をもとに実装してくれたら喜んでくれるひとは世の中にいっぱい居ると思ひますよ。 用語 名前空間 PHPのnamespace文で定義できる名前空間のこと。namespace文に属さないクラス定義を「グローバルスコープ」または「グローバル名前空間」と呼ぶ。 FQCN (Fully
microとは何か 最近注目を集めてるような気がするスクリーンエディタ、つまり文字ベースのターミナル(端末エミュレータ)で動作するテキストエディタです。そのようなエディタとしてはviやEmacs、近年ではnanoが知られてます。 microはそのようなテキストエディタの中でも最後発で、目下のところ活溌に開発されてるところです。この記事ではREADME.mdからいい感じに抜萃しつつ紹介します。 microはviやEmacsのような独特な操作体系ではなく、GUIのテキストエディタに近い操作性(キーバインド)を持ちます。SSHなど端末経由でのテキスト編集の必要に迫られたときに、新たな操作体系を覚え直す手間を最小限にしながら作業に取り掛かることができます。 2016年10月20日 追記 #端末(ターミナル)の設定を追加しました。特に、Shift+[←↓↑→]での範囲選択が機能しない場合に参考にして
この場合の枯れたは比較的ポジティブな意味です。筆者はHelmが慣れてるのでこれを使ってますが、Anythingを使ってるひともまだまだたくさん居ますし、これから導入するならIvy/Counselも良い選択肢です。 IDO (ido-mode) IDO(Interactive DoまたはInteractively Do Things)は最少のキーボード打鍵で補完入力できるように設計された補完入力インターフェイスです。Emacsに同梱されてるので、最少の設定で利用する場合はパッケージ導入が不要です。 バッファ切替とファイル名補完が主機能ですが、ido-everywhereを有効化すると、それ以外の箇所でもIDOインターフェイスが利用できます。 idoの設定 .emacsファイル(~/.emacs.d/init.el)に以下のように記述します。デフォルトでは前方一致で利用するので、(setq i
名前空間を活用した【PHP超入門】名前空間(namespace・use)についてが網羅的で良かったので、ふだんから考へてることをまとめたポエムです。結論はないです。 はじめに オブジェクト指向的な設計の観点からはユーティリティクラス(静的メソッドのみを持つクラス)は、均衡を崩すものとして忌み嫌はれる存在であることは意識しておいた方が良いです。関数とユーティリティクラスは禁止 - 株式会社アークシステム(infoARK)のような議論についてはしっかりと咀嚼する価値があります。 …………が、そんな高尚な設計の話をしたり設計の批判をするのは簡単ですが現実世界では動くコードが正義です。オブジェクト指向の大先生にならなきゃプログラムを書いちゃいけないなんてことは断じてありません。あなたの目的を達成するためにプログラミング言語は存在するのだから、利用できる機能はなんでも利用しませう。 そんなわけで、こ
おさらひ この連載のソースコードは https://github.com/zonuexe/inspire-bbs/ にあります この連載に含まれるソースコードはWTFPLなので、煮るなり焼くなり好きにしてください。 許可とか条件とか表示とか要らないし なんだったら著作権表示を外して自分のものにしておk、の意 よくわかんないこと、気になったこと、感想などあればコメントしてくださいね ヾ(〃><)ノ゙ rm cache/db.sq3 sqlite3 ./cache/db.sq3 < ./tests/db/init.sql sqlite3 ./cache/db.sq3 < ./tests/db/seed.sql
この記事の内容は2016年9月現在のものです。 新しい言語を学ぶときに確認することにインスパイヤされて。 Perlを学ぶときに確認すること - Qiita セットアップ方法 バージョンについて 2016年9月現在のPHPの現行安定版は7.0系。学習用途および新しいプロジェクトを開始するときには7系の最新版を利用すること。古い保守版として5.6系があるが、こちらは既存のプロジェクトが7系対応してない場合に選ぶこと。 macOS(OS X) brew tap homebrew/dupes brew tap homebrew/versions brew tap homebrew/homebrew-php # PHP 7.0 (Apache抜き・phpdbg入り) brew install php70 --with-phpdbg --without-apache # よく利用されるモジュール br
文章を読むとき「一時的にフォントを変更したい」と感じることがよくありませんか? 普通の技術文書を読むときはゴシック系のフォントでよいのですが、日本語で小説を読むときなどは明朝体で表示したくなります。 Emacsのフォント一時変更にはフェイス(Faces)とオーバーレイ(Overlays)といふ仕組みを利用するのがお手軽です。 きちんと理解しようとするとめんどくさいのですが、ただ利用するだけならば、あまりめんどくさいことはないです。といふか、「Emacs フォント」とかで検索した結果がめんどくさそうなの良くない。 準備 ov.elを用意します。これはオーバーレイを異常に簡単に操作できるようにするライブラリです。 これがないと生きていけないのでEmacs本体にマージされてほしい 既にパッケージリポジトリとしてMELPAが設定済みなら、M-x package-installでovパッケージをイン
PHPのarrayはすごいです。いろいろできます。以前PHPのlist()はタプル展開のための機能 - Qiitaといふ記事を書いて「配列はタプルだったんだよ!!!!」と力説したのですが、それ以外のデータ構造としての特徴について挙げていきます。 タイトルはてきとー。 (原題: All your data structure are belong to ARRAY. は All your base are belong to us - Wikipediaが元ねた。) この節の内容は再掲です。 PHPの配列は、その名前に反して、実に多様な機能を併せ持ったデータ型です。 PHP の配列は、実際には順番付けられたマップです。マップは型の一種で、 値をキーに関連付けます。 この型は、さまざまな使い道にあわせて最適化されます。 配列としてだけでなく、リスト (ベクター)、 ハッシュテーブル (マップの
みんな、あたらしい言語を覚えたらFizzBuzzを書きたがりますよね。 私も最終鬼畜FizzBuzz大全とかイキがってた時代がありました。現在はまさに約束された誰だって婆だってFizzBuzzが書ける2016年ですが、私は未だに逆FizzBuzzの解法に自信が持てません。 さて、新時代の言語と言へばPHP 7です。未だにオブジェクト指向がしっくりこないstaticおにいさんなのですが、新しい言語で初めてFizzBuzzを書くともなれば張りきってもしまひます。仕事ではがんばってPHP 7導入の準備を進めてるものの、まだ5系に留まってるので、うづうづしてる気持ちもあります。 そんなこともあって、どうせならエンタープライズに耐へうる品質で書きたい! でもデザインパターンがすごく苦手でおぼえられないので、デザインパターン | TECHSCORE(テックスコア)にお世話になってにらめっこしながら、そ
このスライドはヤパチーエイジアハチオウジ2016の「[WIP]あなたがエンタープライズファンクショナルPHPライブラリTeto\Functoolsを採用しなければならない11個の理由」の発表内容です。 関連記事 Functoolsを作った 過剰にスマートなPHPを書こう (無名再帰篇) お前誰よ うさみけんた ぞぬえぐぜ/っどさん GitHub: zonuexe (Pakagistも同じ) Twitter: @tadsan ピクシブ株式会社でpixivってサービスやってる 最近はPHPの静的解析がアツい さて Twitterにて 2016年5月25日 あまり有名ではないのでもしかしたらご存じないかもしれませんが、PHPには高速高機能なforeachってイテレーション機構が言語組み込みにあるので、わざわざarray_mapとか書かなくてもいいんですよ!!!!! — うさみけんた (@tads
Emacsにはバージョン24からewwと呼ばれるWebブラウザ機能が同梱されるようになった。これを利用して、EPUBのような電子書籍フォーマットやdocx(Microsoft Word)のようなリッチテキスト、Markdownやorg-mode、Textile、などの軽量マークアップ言語などのいろんなアレをEmacsで読めるようにする。 つまり、「おめーREADMEファイルをreStructuredTextとかAsciiDocとかTextileとかよくわかんねーフォーマットで書いてんじゃねーよ読めねーだろ」ってときにも安心ですね☆ 追記 @10sr さんの指摘通り、AsciiDocはinputには利用できませんでした。残念… 用意するもの Emacs 24.4+ (libxml必須) Pandoc (Windowsでも動くらしい) http://pandoc.org/installing.
(function(foo){ foo(); })(function(){ (function(x){ (function(bar){ bar(); print(x + x); })(function(){ (function(x){ print(x + x); })(1); }); })(10); }); ふざけた外観をしてるけれど、このコードは静的スコープによって説明できる。 元ねたは@eseharaの変数のスコープを意識することについて、Lisp周辺とClojureのletを利用して考える - Line 1: Error: Invalid Blog('by Esehara' )。素晴らしい記事なので、みなさん読むべき。 練習問題 代入文を使った式を=なしの形式に変換してみよう。 あとがき このコードを理解できれば、一部のプログラミング言語に存在するlet式1をマスターできたと友達に自
この記事は何か 挑発的な文言になってる箇所はあるものの、内容としてはそれなりにまじめに書いたつもり。むしゃむしゃしてやった。いまでは反芻してゐる。 PHPDocは必ず書け あらゆる再利用可能な手続きは、他人が容易に応用できるように型が明示的でなければいけない。メンバー全員が実装コード全てを把握できるものならそれが理想だけれど、残念ながら時間は有限だ。ヘッダだけを読んでメソッドの仕様が理解でき、またはコードを読む助けになるようなコメントが良い。 有名な事実を紹介すると、多くのコードは数か月(早ければ数日!)も経てば、他人が書いたコードに感じられるほど理解できなくなることがしばしばある。もちろん設計の練度にもよらうが、設計判断について注意を要した点などをコメントに残しておくことで、ひいては未来の自分の役に立てることができる。 お前の先輩は「PHPには型がない」などと知ったかぶって意味不明1なこ
もしあなたが書いたプログラム/ソースコードを、「オープンソース」または「フリーソフトウェア」として他者から 自由に 使ってもらうことを意図してるなら、やるべきではない。 注意 この記事を書いてるひとは法律の専門家じゃないよ。詳しいことはべんごし・べんりしなどのせんせいに相談してね。 そもそもライセンスとは 許可とか免許とかそんな感じの意味ですが、オープンソースライセンスを「利用許諾契約書」として解釈するには不可解な点があります。 実際には配布元(作者)から受け取った人への「お約束」だと解釈するべきです。つまり、ライセンスによって提示する条件を守る限りは複製権・頒布権・同一性保持権・公衆送信権の侵害について刑事告訴および利用差し止め、損害賠償請求などの提訴を行ふことはない、といふ約束です。 現行(2016年4月)の日本の法律において、著作権法違反は親告罪——つまり権利者の告訴がなければ刑事裁
Emacs Lispを書き始める前に知っておくと良いLispの基礎について。この記事を読んでもEmacsのスキルは上がりません。あと、話の段取り上、めんどくさい方法から順に説明することがあるよ。 対象読者 むかしの自分 Emacsを使ってるけどLispについてちょっとは知っておきたいひと リスト (りんご ばなな みかん)のように要素を並べたものがリスト。データ構造に詳しくないひとは「配列みたいなもの」だと思ってもいい。厳密には連結リスト(linked list)なのでちょっと違ふんだけど、まあ似たようなもの。(あとで説明します) ちなみに、()の中に要素を空白で区切ってならべるリストの書きかたを「S式 (S-expression)」と呼ぶ。Lispのリストは原則としてこの方式で書かれるけど、べつに覚えてなくてもいいです。 リストによるプログラミング プログラムとして評価したい式を(+ 1
人間は皆誰しも実行時にSQLを組み立ててデータを取り出すことが大好きだ。そしてその行為の危険さもわからぬまま人類は太陽に向かってゆく。 あとこの記事で紹介してるライブラリは私が書いたコードじゃないです ヾ(〃><)ノ゙ はじめに まあ落ち着いて、去年のPHPカンファレンスの徳丸先生1のスライドを読んでほしい。ちなみに私は去年のPHPカンファレンスは風邪でダウンしてたので行けなかった。QiitaにはSlideShareの埋め込みができないので、↓の枠はただの画像リンクだ。 Phpcon2015 from Hiroshi Tokumaru 「うちはO/Rマッパーを使ってるよ」ってひとには、この記事はかんけいない。そう、人類はDoctrineのような叡智を手にしてる。素直に素晴らしいMVCモデルやDBレイヤーを持ったフレームワークを選ぶべきだ。私は使ったことがないので無責任な発言はできないが、L
MELPAは有志によるEmacs Lispパッケージリポジトリです。Emacs標準のpackage.el/ELPAと互換性があり、2016年現在でのEmacs Lispパッケージの配布手段としては主流です。そのあたりの事情は、2015年Emacsパッケージ事情に書いた通り。 MELPAはWebブラウザから簡単にEmacs Lispパッケージを検索することができます。利用者が多いので、自作のEmacs Lispを公開したときに当時にMELPAに登録しておくことでインストールされやすくできます。 特徴としては、「レシピ」の形式でインストール情報を定義することができます。GitHubのプルリクエストでのレシピ投稿はRubyGems.orgやPackagist(PHP)と比べて多少の手間はかかりますが、一定の品質が担保されてゐる強いメリットがあります。 慣れれば簡単、なことではあるのですが、初心者
<?php namespace YourSystem\Model; class User { /** @var int */ public $id; /** @var string */ public $name; public function __construct($id, $name) { $this->id = $id; $this->name = $name; } } <?php use YourSystem\Model\User; $user = new User(39, "Miku"); echo $user->id; // => 39 echo $user->name; // => "Miku" このクラスの問題点は、プロパティを外部から読み出したいがために、可視性をpublicにしてしまってること。 しかし、予期しないデータの書き込みは防ぎたい… 解決策 ゲッターメソッ
以前、private/protectedなプロパティを外部から読み込み可能にするを書いたとき、記事のコメントにて「コレクション(配列)内の要素の型を検証したいよー」「でもそうすると全要素を検証しなくちゃいけないから実行時のパフォーマンスの問題があるよね」って話をしました。 気付いてしまった PHP: 関数の引数 - Manualを読んでた私は気付いてしまったのです。PHP 5.6で実装された機能を巧みに利用すればバリデータが実装可能なことに。 ……そうです。可変長引数です。 PHPの可変長引数とは PHP 5.6で追加された可変長引数は、以前の文法に...を追加することで0個以上の値をまとめて受け取れるようにしたものです。 f("a") // => // string(1) "a" // array(0) { // } f("a", "b") // => // string(1) "a"
composer require zonuexe/simple-routing zonuexe/objectsystem zonuexe/tetosql zonuexe/objectsystem: PHPのクラスに型を付けたり機能追加できるよ zonuexe/tetosql: SQLをちょっと安全に書けるPDOのラッパーだよ zonuexe/simple-routing: シンプルお手軽なURLルーターだよ いちおう、 どれも自作(または自分でメンテナンスしてるやつ)だよ! これらのライブラリの説明についてはQiitaのシンプルなルーティングがしたかったとかprivate/protectedなプロパティを外部から読み込み可能にするみたいな記事に書いたけど、この記事でも軽く説明するので後で読んでくれると良いかも! ファイルの読み込みについて Composerはいかしたライブラリの依存管理ツー
PHP+SQLite3で2ちゃんねるっぽい掲示板を作るにインスパイヤされて。そういや私、いままでの人生でスレッドフロート掲示板とか作ったことない。作ってみよう。 PHPを入れる PHP 7をインストールしよう。それ以下のバージョンはレガシーだ。特に5.4系以下はセキュリティサポートも終了してるので相手にしてはいけない。 Macなら、こんな感じで入れるのがいいです。 WindowsでまじめにPHPやるのとか正直微妙なので、VirtualBoxとVagrant入れてrlerdorf/php7devとか動かしてみるといいです。 やりかたはpixiv/intern2015wとかに書いたので、よくわからなかったらこれが動くようにしてみるのがいいですかね。 Linuxでは… まあよしなにやってください。 Composerを入れる ComposerはPHPのパッケージの依存性を管理するツールです。php
PHP初心者のときに混乱したし、未だに初心者が困ってるのをよく見掛ける。 はやわかり ファイル全体をまるごと読み込みたい→ file_get_contents() ファイルの中身をまるごと出力したい→ readfile() 行単位のテキストファイルを配列として読み込みたい→ file() ファイルをバイト単位で読み込みたい→ fopen()+fread() CSVを読み込みたい→ SplFileObjectクラス オブジェクト指向的に操作したい→ SplFileObjectクラス クラウドとかFTPとかにあるファイルを読み込みたい→ League\Flysystemライブラリ バイナリファイルを操作したいとか事情がない限り、feof()とかfclose()とかの出番はない。 file_get_contents() (PHP: file_get_contents - Manualより抜萃、2
次のページ
このページを最初にブックマークしてみませんか?
『@tadsanのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く