サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPad Air
qiita.com
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
ペアワイズ法(またはオールペア法)という、パラメータが多いテスト対象のパラメータをいい感じに生成してくれる手法と、その考えをもとにパラメータを生成してくれるPICTというコマンドラインツールがあります。 今回はそのPICTをEmacsから使うパッケージを作ってみたよというお話をしましょう。 Emacs 29以降を使っていればインストールはめちゃくちゃ簡単。 この式を評価するだけでおしまいです。 PICTコマンドは別にインストールする必要がありますが、macOSユーザーなら brew install pict だけで入ります。他のOSのユーザーは各自適当にぐぐってインストールしておいてください。 ペアワイズ法について どんなときにペアワイズ法とPICTが役に立つかは、Web上に情報があるので各自お読みください。 筆者はテストとか詳しくない… 俺たちはプリキュアで学んで雰囲気でPICTを使って
qiita.com/tadsan
あったらいいなとは思ってたけど標準機能にあったことは今日まで知らなかったシリーズ 何がしたいのか バッファ内にある特定の文字列を色付けて強調表示したい。 ユースケースとしてはいくつか考えられるけれど、コードリーディング中に注目したい変数やメソッドなどに色をつけていくなどはわかりやすいかもしれない。 どうすればいいのか 一時的に表示 M-x highlight-xxxxxコマンド 以下のGIFアニメはM-x highlight-symbol-at-pointやM-x highlight-regexpを使ってみたところ。 たぶんいちばん使いやすいのはM-x highlight-symbol-at-pointです。 M-x highlight-symbol-at-point カーソル位置の関数名や変数名のようなシンボルを強調表示します 内部的には "\\_<...\\_> で括られたパターンにな
こんにちは! Emacs Advent Calendarです! メリークリスマス! Advent Calendarの季節なのでみなさんも20個くらい記事を書く羽目になっているのではないかと思うのですが、私も最近いろいろあって執筆環境を整えてモチベを高めようという気になってきました。 EmacsでMarkdownを書くならMarkdown Modeを使うのが定石ですが、長年何も考えずに使ってきてMarkdown ModeのMarkdown Modeらしい使いかたをしてこなかったので長い12月の最初に向き合ってみようかと思いました。 Markdown Modeのインストール Markdown ModeはEmacsに標準では付属していませんが、M-x package-install markdown-modeとかで入ります。Emacs 28以降ではNonGNU ELPAが最初から設定されているの
いろいろあってWindows上にメインの開発環境を構築しています。とはいってもだいたいのものはWSLで動くので楽なものです。ターミナルは最初から入っているWindows Terminalが十分な機能を持っていますし。 Windowsを起動するといきなり全画面のターミナルでDebian GNU/Linuxのシェルが起動しているというのは、なかなかに壮観で20年ほど前のことを思い返すとまさに隔世の感がありますね。GUIのEmacsすら深いことは考えずともGTK付きでビルドすればWSLgで動いてしまいました。 小さな問題はいくつもありましたが、だいたいのことはごにょごにょすれば解決できます。今回Emacsの環境を構築するまでしばらく気にも留めていなかったことですが、GUIのEmacsを使っていてURLをブラウザで開く機会は思いのほか多くありました。 Emacsはこういう場面でもカスタマイズできる
• PSR-1は高度な技術的相互運用性を目的としたコーディング標準 • PSR-2/→PSR-12はプロジェクト内での認知的摩擦を軽減するためのスタイルガイド • PSR-12はPER Coding Styleに進化した PSRとは何か PSRが何ではないかについて下記の記事にまとめたので、あとでゆっくり読んでください。 というか↑の記事にだいたい書いたので、この記事はコーディングスタイルに絞った内容ということになります。 重要な部分だけ抜萃して再掲しましょう。 PSRを管理するのはPHP-FIG (The PHP Framework Interoperability Group、PHPフレームワーク相互運用グループ)です。この組織はPHPのフレームワーク・CMS・ツールなどの開発者の寄合所帯です。 Frequently Asked Questions - PHP-FIGの内容をざっくり訳
みなさんはPHPで書かれたツール類などを、どうやってインストールしているでしょうか。 まあComposerを使うのが基本ではあるのですが、 Phiveみたいなツールもあったり、Composerを使うとしても composer global require を使うとか、composer require --devを使うとか、Composer bin pluginを使うとかの方法がありますよね。 PHPStan開発者のOndřejはこのように言っています。 PHPStanのインストール方法の選択肢については別に記事を書いています。 PHPStanについては上の記事にも書きましたが、composer require --dev phpstan/phpstanでインストールするだけで外部に依存性を持たない状態でパッケージをインストールできます。 Pharファイルを見る そもそもPHPStanのCo
PHPのstringは任意のバイト列を扱えますが、JavaScript/JSONはUnicodeで扱える文字しか扱えません PHPのint / floatはプラットフォーム依存ですが、JavaScriptのnumberは整数と小数を型レベルで区別しません JSONのarrayに対応する型はPHPのarrayのうちリストであるものです PHPは配列(リスト)と連想配列を型レベルで区別せず、どちらもarrayです リストはキーが0からの抜けがない連番になっている要素が0個以上の配列です array_is_list()関数で連想配列とリストを判別できます array_values()で連想配列をリストに変換できます array_filter()の結果はフィルタされたキーがスキップされるのでリストではありませんが、結果をarray_values()に通すことでリストにできます JsonSerial
メリークリスマス! 週末もPHPを楽しんでますか? ところでWebセキュリティはWebアプリケーションを公開する上で基礎中の基礎ですよね! メジャーな脆弱性を作り込まないことはWeb開発においては専門技術ではなく、プロとしての基本です。 中でもXSS (Cross-Site Scriptingクロスサイトスクリプティング)やインジェクションについての考慮は常に絶対に欠いてはならないものです。 現実にはプログラミングには自動車のような運転免許制度がないため、自動車学校に通わず独学で公道に出ることができてしまいます。つまりは基礎知識がないままにWebプログラマとして就職したり、フリーランスとして案件を請けることも現実には罷り通っています。それは一時停止標識も赤信号も知らずにタクシー営業しているようなものです。 このような事情により、体系的な理解のないWeb開発初心者は (時にはn年のキャリアを
名前、つけてますか? PHPにはnamespace(名前空間)という言語機能があります。 原初のPHPにはなかったのですが、PHP 5.3くらいからあるので、まあ平安時代には成立していたということです。それ以前の時代は App_Http_Controllers_User のような _ 区切りの擬似名前空間が用いられていたことがありました。現在では App\Http\Controllers\User のような \ 区切りの名前空間が利用できます。 名前空間付きのコード 名前空間が見慣れないという方のためにnamespaceのあるコードとしてLaravelで自動生成したControllerファイルの例を先に出しておきます。 <?php namespace App\Http\Controllers; use App\Models\Book; use App\Http\Requests\Store
最速LSPクライアント lsp-bridgeを使おう こんにちは! メリークリスマス! LSP使ってますか? 現在Emacsで代表的なLSPクライアントとして使われているのはLSP Mode、Emacs 29から標準のLSPクライアントとしてマージされたEglotがあります。 そんな中、今回紹介するlsp-bridgeは「最速」を謳うEmacsの第三のLSPクライアントです。 このパッケージはMELPAなどには登録されておらず、まだ開発段階の趣きがありますが、非常に快適な実装なのでこの期に紹介します。 特徴 The goal of lsp-bridge is to become the fastest LSP client in Emacs, not a complete implementation of LSP protocol. lsp-bridgeはLSPの全機能を網羅するよりも最
topsyは多くのLispパッケージを手がけているalphapapa氏が開発しているLispパッケージです。 MELPAからインストールできます。 これは現在画面に映っている関数の上端が見切れている場合に、関数のヘッダー行をウィンドウのヘッダーラインとして表示するマイナーモードです。 言葉で説明するよりも実際にGIFアニメで見てもらった方が早いでしょう。 言語ごとの関数ヘッダ行の特定は、 topsy-mode-functions でカスタマイズすることもできますが、一般的には beginning-of-defun-function で十分なはずです。自作のメジャーモードで期待通りに動かない場合は beginning-of-defun-function の設定を検討してみてください。 なお、Emacs組み込みの機能ではwhich-function-modeというマイナーモードがあり、これは画
メリークリスマス! みなさまに愛されたPHP7.x系は2022年11月28日をもってEOLを迎えました さて、標記のAttribute(アトリビュート)とは、PHP 8.0で追加された機能です。 PHP 7.4の命運が尽きたということは、全人類のPHPランタイム環境でもれなくアトリビュートが使えるようになったに違いありません[要出典]。PHP 8.0がリリースされてからも既に2年が経過していますが、Attributeに関してはみなさんあまり納得できてなさそうというか、どうやって実用すればいいのか持てあまされてるように見えるので、この記事では簡単な実装方法を紹介します。
(defun sut (arg) "テスト対象" (let ((a 1) (b 10) (c 100)) (message "sut: %s" (list a b c arg))) t)
メリークリスマス! Emacs Advent Calendar 2021です! 今月頭にはGNU Emacsの次期安定版であるEmacs28のプレテスト版(いわゆるベータ版に相当)がリリースされました。いつもの通り?ならここからEmacs半年かからずにリリース候補版・正式版がリリースされるのではないでしょうか。Emacsの独特なバージョンのルールや過去のリリース履歴などは以下のページでご確認ください。 さて、2021年のEmacs界隈を賑わしていたのが新しいミニバッファ補完UIの潮流でした。 各パッケージの位置付けや比較などは何人もの方が詳細な記事を書いてくださっているので参照ください。 Emacsの次世代ミニバッファ補完UI | 日々、とんは語る。 君はselectrumとEmacsる? - tsuu32 selectrum/consult/marginaliaの設定 - 備忘録 まあざ
このスライドは突発で開催された**PHPerKaigi Online(仮)**でしゃべるために用意されたものです。 前回のあらすじ コードを自在に操るためのPHP文法入門 PHPのソースコードを正確に検査したり、ソースコードの一部を書き換えたいと思ったことはありませんか? PHPにはPHP-Parserという構文解析ライブラリがあり、静的解析ツールのPHPStanやリファクタリングツールのRectorはPHP-Parserをベースにしたプラグインでソースコードを検査したり、ソースコードを書き換えたりすることができます。 しかしながら、構文木を操作するには普段何気なくPHPコードを書く以上のプログラミング言語についての知識が求められます。この発表では構文木を取り扱う前提となるプログラミング言語についての知識、PHP-Parserの構造、PHPStanとRectorそれぞれの拡張方法と実例につ
echo 1, 2, 3; // ← syntax error ではない print 1, 2, 3; // ← これは syntax error echo print 1; // ← syntax error ではない print echo 1; // ← これは syntax error 形式的に言うと echoとprintはどちらも出力バッファに書き込む機能です まれに「標準出力する」と言及されますが、それは間違いです fwrite(STDOUT, $str)の実行結果とは一致しないということです echoは文ですがprintは式です echoは複数の引数をとりますが、printは1つの引数をとります 便宜上関数マニュアルに掲載されているが関数ではありません どれを使えばいいの? 好みで何を使ってもいいと思うのですが、printを使うメリットは特にないのでechoを薦めます。
この数年でPHPでの開発でもCI(継続的インテグレーション)はかなり活発に行われるようになり、PHPUnitなどのテスティングフレームワークのほか、PHPStanやPhanなどのツールによる静的解析も浸透しつつあります。 関数/メソッドの引数と返り値、そしてオブジェクトのプロパティは比較的に型がつけやすいところですが、現状で無法地帯な箇所があります。そうです、配列の内部構造です。実際のところ、PHPDocに @param array や @return array と書くことは mixed と書くのとあまり大きな違いはありません。 ご存じの通り、PHPの配列は、動的配列(可変長配列)と連想配列(ハッシュテーブル、マップ)の特徴を併せ持ったデータ構造であり、配列は変数と同じくあらゆる値を格納することができるからです。 近年の開発が活発なPHPの静的解析ツール(PhpStormを除く)では配列
みんな大好きジェネレータ。クラスとか定義せずにジェネレータだけで綺麗に書けるぞ。 背景 もともとは仕事で書いたコード。先日開催されたPHPerKaigi 2020でジェネレータの事例紹介として出したので、ここで見せます。 要件 データベースから値を取り出してCSVにダンプしたい レコード数 = とにかくいっぱい 全レコードを1クエリで全部取得するのはメモリ量としてもDBの負荷としても許容できない CSVは表計算ソフトで読み込ませる必要がある 表計算ソフトという括りではExcelに限らず65535行以上のCSVを扱えるのは稀なので、ファイルには65534レコードごとにファイルを分割する。 実装 おいらは3重ループとか4重ループとか多重ネストさせるのは絶対に嫌なのでジェネレータで処理を分割しました。 #!/usr/bin/env php <?php /** * 実行すると記事一覧を CSV と
この記事について みなさんここまでついてこられていらっしゃいますでしょうか。この記事はこのPHPがテンプレートエンジンのくせに慎重すぎる (前篇)の続きなので、先に読んで、できれば実際に準備してから来てください。 一気に後篇を書いてしまおうとも思ったのですが、前回は徹夜して書いたので本日は著しく眠いので「Psalmの続き」と「型宣言」と「Phan」の話を書いて私は寝ます。 Psalm/Psalter (前回の続き) さて、PsalterはPsalm同梱の修正ツールです。./vendor/bin/psalter --issues=allで実行するとプロジェクト内のファイルが書き換えられます。 Psalterに限らず、今後ソースコードを自動で書き換えるツールがありますので、実行前にGitでコミットしておいてください。 diff --git a/src/Hello.php b/src/Hello
この記事ではPackagistで公開可能な形式のPHPのライブラリ(Composerパッケージ)を公開するための道具立てを紹介します。あと、現代のPHPerはツールを組み合せてさくっと開発しているんだという自慢です。 タイトルは「この TypeScript が Hello, world! のくせに慎重すぎる」と「この勇者が俺TUEEEくせに慎重すぎる」のぱくr… パロディです。 テンプレートエンジンのくせに型安全なんてなまいきな。 この記事の読みかた せっかくなので手を動かしながら自分でComposerパッケージを作成してみましょう。 今回の題材は「Hello worldを出力する」という革新的機能を提供する、とても画期的な実用ライブラリです。 記事名通り「慎重すぎる」ので、細かく刻んでGitで経過を保存しながら作業を進めていましょう。なんかよくわからない状態になったらgit reset
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? PHP 8から、PHPは「PHP」と「P++」という2つの言語を提供するようになる というキャッチーな紹介をするP++: 静的型付けをめざすPHPという記事がそれなりに話題になり、このニュースは目覚しく革新的な内容で、多くのひとの目を引き付けました。 これは早まった理解であり、ほとんど誤報と言ってもいい内容でした。2019年8月15日には提案者本人も、少くとも「P++」の計画を短期的に実現するととは非現実的であり時期尚早であることを認めています。 この記事では、PHP開発の現状、なぜ野心的なP++計画が提案され、事実上撤回されたかの経緯
PHP 7.4は現在beta1までリリースされたので、今頃はみなさまも12月のPHP 7.4.0正式リリースに向けて遊び倒してるところだと存じます。7.4でPHPに新たに導入される文法はいくつかありますが、その目玉のひとつがArrow Functions 2.0です。 ちなみにこの記事は「アロー関数はすべての無名関数式の代替になるわけではない」として書きはじめたので、今回本当に書きたかったのはそのあたりです。 最初にまとめると、「アロー関数は簡単なことを短く書ける」記法です。 複雑なことをするには既存のfunction式の方が適してます。 前提知識: 式と文 PHPをはじめとするC言語に影響を受けた多くのプログラミング言語では「式 (expression)」と「文 (statement)」を厳密に区別する特徴があります。 雑に言うと、文とは以下のようなものです。 制御構造 if, else
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? どうも、Emacs Lispアドベントカレンダーです。嘘です。 Emacsから外部コマンドを起動する方法として、大別すると「コマンドラインシェルで実行したい文字列(コマンド名と引数をまるごと含む)を渡す関数」 (shell-command系) と、「コマンドとコマンドライン引数を個別の引数として渡す関数」 (process系) の二種類の機能に分類できます。 シェルコマンドの方が使用方法がおてがる、かつポータブル(後述)なので私は特別な理由がない限りは前者のshell-command系の使用を勧めるのですが、これは同時に典型的なバグや脆
EmacsのLispパッケージのロード方法について、あまり周知されてないので書きます。まちがったことを書いてたらごめんね。日本語での説明は@ayatakesiさんの【途中】emacs 24.5のelisp日本語マニュアルより引用します1。 TL;DR package.elとかEl-Getを使ってるなら、init.el から、ほとんどの (require 'hoge) は消しちゃっても動くと思うよ あなたがLispパッケージ作者なら、依存関係はオートロードを期待せずに(require 'hoge)は列挙しないとだめだよ 0. load-path load-pathは、EmacsがLispファイルを読み込むディレクトリ一覧の変数です。もしpackage.elやEl-Getのようなパッケージ管理ツールだけを利用する場合は、この変数を操作する必要はありません。 管理ツールを利用せず手動でLispパ
みなさん正規表現は好きですか? 私は好きです。簡単に脆弱性を作り込めて、とても便利ですからね。 この記事ではPCRE関数(preg_match(), preg_replace()など)を利用して、みなさまにPHP正規表現のバッドノウハウを教示いたします。 先に結論を書きます 単独の文字列のマッチに $ を用いるのは予期しないパターンになるのでやめましょう。^は特に危険ではありませんが、^と$の組み合せではなく**\Aと\zの組み合せ**を覚えましょう。ただし、m修飾子で複数行(マルチラインモード)で、行頭と行末にマッチさせたい場合を除きます。 文字列のマッチに ^ と $ のペアを利用する そうですね、例としてQiitaのようなユーザー登録サイトの表示名 @tadsan のような文字列を登録する前の検査をするとします。 要件としては、使用可能な文字は abcdefghijklmnopqrs
次のページ
このページを最初にブックマークしてみませんか?
『@tadsanのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く