サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
中東情勢
qiita.com/tadsan
PHPのarray_map()とarray_walk()は引数順序の一貫性のなさが槍玉に上げられがちなので、せっかくなのでforeachを含めて、まとめて解説します。 はじめに三行で まあforeachで書くのが簡単じゃね array_walk_recursive()でforeachには手の届かないことができるかもね tadsanのpixivFANBOXもよろしく 早見表 関数/文 操作対象 特徴
自分の環境でCaskが限界に達して僕の力ではデバッグも諦めたのでQuelpaに移住したメモです。 概要 Emacsの標準パッケージ管理ツールとしてpackage.elがあります。これはELPA(Emacs Lisp Package Archive)と呼ばれるパッケージリポジトリからLispファイルをダウンロードして管理するための仕組みです。 package.elを補強するためのツールのひとつにCaskが、私の環境では最近ちょっとエラーがいろいろ出て、日常用途でのEmacsのパッケージ管理には断念せざるを得ない決断をするところまできました。なのでQuelpaに移住します。 注意 この記事はtadsanが一晩で自分のinit.elを動かすためだけにQuelpaを触った範囲で書いたので、事実誤認があったらごめんね。 筆者はまだ二晩程度しかQuelpaに触れてない程度でのメモ書きなので、自分の中で
先日のPHPerKaigi 2018はPHPに興味がある多くのひとびとと直接コミュニケーションがとれる貴重な機会でした1。その中でPSRシリーズへの誤解が聞かれたので一度整理します。 最初にまとめ 「PSRはモダン、準拠しないのはレガシー野郎」といったものではない 相互運用させることを想定しないのなら、100%準拠することに利点はない PSR-2は、それ自身を厳守させるためのコーディングスタイルではない PSRは参考するには値するが、自分たちの事情に合ったものを取り込むべし 後述しますが、筆者の所属するチームではPSR-1, PSR-2を参考にしつつ破って使ってます。 PSRは誰が作ってるの? PSRを管理するのはPHP-FIG (The PHP Framework Interoperability Group、PHPフレームワーク相互運用グループ)です。この組織はPHPのフレームワーク・
PHPDocとは、クラスや関数などのブロックに記述できるDocComment内に記述する書式の通称です。この書式の情報源として時折PSR-5が参照されることがあるので簡単に状況をまとめます。 TL;DR PSR-5の標準化ステータスは昨年10月にABANDONED (放棄・議論停滞)になりました 2018年9月26日にPSR-5とPSR-19が分割され、ともにDRAFT状態に入りました PHPDocを型注釈として利用する各処理系の実装にはばらつきがあり、PSR-5とは相違点があります PhpStormは現在のところ(2018.1 EAP)PSR-5と互換性がありません 特にチーム開発では、対応する型記述の書式について注意が必要です PhpStormに配慮して書く場合、phpDocumentorの仕様を参照する方が安全です PHPDoc リファレンス — phpDocumentor この記事
なんか同じような名前の機能だけど別の機能。 三行で Emacsでの「ローカル」とは、変数にバッファごとに独立した値を保持できることです。 make-local-variableは、本来ローカルでない変数を現在のバッファで一時的にローカルにします。 make-variable-buffer-local は、その変数が常にローカルとしてセットされるようにします。 この両者の関係は、Emacs 24.3で追加された subr.el を見ればわかりやすいです。 emacs-26.0.91より抜萃。 (defmacro setq-local (var val) "Set variable VAR to value VAL in current buffer." ;; Can't use backquote here, it's too early in the bootstrap. (declare
PHPの文脈ではvoidはいくつかの異なる意味で利用されます。 そもそもvoidってなんだ void(ボイド)は、プログラミング言語において、「何もない」といった意味の型などに使われる名前である。プリミティブとしてキーワードないし予約語であることも多い。 (void (コンピュータ) - Wikipedia1より引用) C言語では「引数を受け取らず、引数を返さない」関数のプロトタイプを void f(void); のように記述できますね。 PHPマニュアルにおけるvoid PHP: 本ドキュメントにおける疑似的な型および変数 - Manualに記載があります。 返り値の型が void である場合は、 返り値に意味がないことを表します。パラメータ一覧で void が使用されている場合は、 その関数がパラメータを受け付けないことを表します。 具体的には以下の通りです。 header (PHP
Rubyでは文字列リテラルに任意の式を書いて展開できますが、PHPには単なる変数展開の機能しか存在しないので、同じことを実現するためには利用できないような気がしますが、別にそんなことはなかったぜ。 Rubyでは #{}で囲むことで任意の式1が書けます。
PHPはRFCと呼ばれる1機能提案と投票の制度2によって機能の追加や仕様変更が議論されます。ここでAcceptされた提案は将来のPHPに反映されることになります。 私はあまり頻繁にRFCをウォッチしてるわけではないのでこれを知ったのは昨日のことなのですが、PHP RFC: Flexible Heredoc and Nowdoc Syntaxesが昨年2017年の11月15日まで投票され、受理されました。現状Pending Implementationではありますが、おそらく次のメジャーバージョン3で実装されることでせう。 heredoc/nowdocとは何か ヒアドキュメントはシェルやPerlなどの言語に存在する構文で、複数行にわたる文字列を記述することができます。 PHPにおけるヒアドキュメントにはheredocとnowdocと呼ばれる二種類の記法が存在します。 以下のようなコードがhe
文法 いきなりですがPHPの言語構造は基本的にすべてケースインセンシティブ—— つまり大文字小文字はどちらでも動きます。 それは以下のようなコードも平然と動くことを意味します。 <?PhP と書こうが <?pHP と書こうが動きます。 <?pHP DECLARE(Strict_Types=1); Require_Once getenv('HOME') . '/.composer/vendor/autoload.php'; Const FRUITES = ['apple', 'banana', 'orange', 'mikan']; ForEach (FRUITES AS $f) { echo $f, ' '; If (is_citrus($f)) { EcHO '柑橘系', PHP_EOL; } ElseIF ($f === 'melon') { Echo '野菜', PHP_EOL; }
Composerやクラスのオートローディングの概念がなかった時代に作られたPHPライブラリを、いい感じに管理を試みます。 この記事の前提として、PHPにおける「SDK」とは、概ね外部Webサービスをプログラミング言語から透過的に連携するためのHTTPリクエスト処理と、そのレスポンスをマッピングしたクラスから構成されるものを指すことが多い気がします。 あとこの記事は個人の見解であり、この内容は架空のものです。いいですね? 背景1: PHP 現代的なPHPライブラリはComposerを前提に設計され、ひとつひとつのファイルで明示的にincludeやrequireを書いて読み込む必要も、読み込まれる必要もありません。 そのあたりの話は先月北海道で、Composerの説明と絡めて話してきました。 今回の記事に関連のある点を要約すると、こんな感じです。 Composerやオートロード以前の時代は、ラ
まだ参照渡しで消耗してたの? 僕はPHPerなのでPHPのことしかわからないけど、だいたいPHPで参照渡しのことを気にしても時間の無駄だし積極的に利用するべき場面が極めて限定されることはPHPのリファレンス(参照&)の傾向と対策、あるいはさよならに書いたので読んでほしい。 それとPHPマニュアルでは「参照渡し」ではなく「リファレンス渡し」と呼ぶが、どちらにせよ、わざわざ「渡し (call by-)」を付けて呼ぶ意義は乏しいので、これからは「変数リファレンス」として覚えてほしい。もうちょっと具体的なことはPHP: リファレンスとは? - Manualを読んで。 端的に言うと、PHPでは「オブジェクト引数はデフォルトで引数渡しされる」「オブジェクトのプロパティ(メンバー変数)は参照渡し」のような理解は誤解であり、完全に嘘です。 ふしぎなふしぎなオブジェクト PHPの配列とオブジェクトは、似たよ
コメントを書く必要がないほど読めるリーダブルなコード、つまり名が体を表し、コメントで回りくどく弁解説明の必要がないほどわかりやすいソースコードは極めて理想的なコードではあります。 しかしながら現実には、複数人で運用され続けるコードにはさまざまな文脈や背景が積み重なっていきます。そのような事情をプログラムコードだけで表現しようとすると、情報の共有に困難を生じることがあります。 コード中に適切にドキュメントを記述する習慣を身につけることで、チームでの共同開発において情報共有に役立てることができます。 私見による「よいコメント」の指標とは以下のようなものです 人間がひとめ見てわかりやすい ツールで処理しやすく、相互運用性がある この記事では、チームメンバーにPHPファイルにコメントを書かせる上でのPHPでの背景を順にそこそこ詳しく説明していきます。 対象読者層 PHP中級者 チームメンバーに体系
Composerで依存関係を追加する際に「composer.jsonを編集してrequireに追加してください」といった作業指示が時折見られますが、それはバッドノウハウです。 原則 依存関係を追加・削除するときはコマンドラインから composer require vendor/package で追加 composer remove vendor/package で削除 composer require --dev vendor/package で開発時に必要なものを追加 composer remove --dev vendor/package で開発時に必要なものを削除 本番運用環境と同じバージョン・近い環境で実行する さもなくば、依存パッケージのバージョンを自分で特定しなければならなくなる 依存関係をアップデートするときに引数なしで composer update してはいけない マイ
これは「Emacs実践入門 出版記念イベント」で発表する内容です ヾ(〃><)ノ゙☆ お前誰よ うさみけんた, @tadsan, Zonu.EXE 会社ではPHPとかPHPとかPHPを書いてる 前はRubyとかPythonとか書いてました Emacs-JP, Slackとかに居ます WEB+DB PRESSでPHPの記事とか書いてました ほかでは読めない内容を結構書いたので バックナンバーおすすめ Emacsでは 20個ほどパッケージを公開してる Qiitaにたまに何か書いてる MELPAで新着のパッケージをウォッチしてる 最近PHP Modeのメンテナを引き継ぎました パッケージって何 Emacsの関数・コマンド・マクロなどをひとまとめにしたもの 以前はLispファイルをダウンロードして手作業で配置してた コマンドって難しいんじゃないの 巨大なパッケージはすごい(かなり) @tadsan
日本最大のPHPイベントであるPHPカンファレンス2017は10月8日に大田区産業プラザ PiOで開催されます。このイベントの特徴は入場無料で同時、最大6セッション・1スポンサートーク・1ワークショップが並列で開かれること。 この記事では、各セッションの発表の概要および注目すべきポイント、予習のため発表者の過去のスライドなどを私見でまとめます。 11:00 (6セッション) Apache Kafkaによるスケーラブルアプリケーション開発 大規模なアプリケーション、ビッグデータ処理に欠かせないApache Kafkaを使い、PHPを使った大きなアプリケーションやマイクロサービスアーキテクチャに対してどの様にアプローチすべきか、大きなアプリケーションで起こる問題をどうやって解決していくかを実例を交えながら探るセッションです。 発表者 株式会社アイスタイル 竹澤有貴 @ytake 会場 1F大展
もくじ はじめに 変数 関数 オブジェクトとデータ構造 クラス S: 単一責任の原則 (SRP) O: オープン/クローズドの原則 (OCP) L: リスコフの置換原則 (LSP) I: インターフェイス分離の原則 (ISP) D: 依存逆転の法則 (DIP) 同じことを繰り返すな (DRY) はじめに この記事はRobert C. Martinの本「Clean Code」のソフトウェアエンジニアリングの法則をPHPに適合させたものです。これはスタイルガイドではありません。読みやすく、再利用しやすく、そしてリファクタリングしやすいPHPコードを書くためのガイドです。 ここで挙げられるすべての原則は厳密に守らなくてはいけないわけではなく、少し守らなかったところで一般には許容されます。あくまでガイドラインですが、Clean Codeの著者たちがみな長年に渡って経験してきたことです。 この記事(
PHP書いてたらプロキシ鯖を書きたくなることってありますよね。 要 composer require guzzlehttp/guzzle <?php namespace zonuexe\ZoProxy; use GuzzleHttp\Client as HttpClient; use GuzzleHttp\Psr7; require __DIR__ . '/../vendor/autoload.php'; // ここはいい感じにやってね $host_table = [ 'hoge.example.com' => [ 'host' => 'localhost', 'port' => 3939, 'scheme' => 'http', ], 'foo.example.com' => [ 'host' => 'foo.example.jp', 'scheme' => 'https', ], ];
構成 ソースコードのリポジトリがSDKライブラリと同じものを共有するので、sample/以下に配置。ただしライブラリの利用者がプロダクションにインストールするためには不要なファイルなので.gitattributeに設定することで、パッケージには含まれないようにした。composer.jsonについてはSDK本体と分割することも可能だったが、開発用アプリケーションなので構成の簡便のためにrequire-devに含めた。 ディレクトリ sample/ ├── README.md ├── cache │ ├── pawoo.net.json │ ├── qiitadon.com.json │ └── session │ └── sess_c599lo6g9jpnl2p6rkj4ckirv9 ├── inc │ ├── app.php │ ├── bootstrap.php
これは2017年6月10日のPHPカンファレンス福岡2017懇親会LTで発表したものです。初出は2017年5月19日に社内勉強会で発表したものを大幅に加筆したものです。 これを5分…? 無理ですな。 お前誰よ うさみけんた / GitHub: zonuexe ピクシブ株式会社 (東京) 福岡オフィスできました! CTOが赴任して週明けから稼動するよ PhpStorm普及業の傍らEmacsのphp-mode開発 このスライドはQiitaで公開済みなので、PHPについて知りたい型はゆっくり読んでね せっかくなので自薦のPHP記事を置いておきますね FizzBuzzから始めるコードの再利用性を高めるトレーニング インスパイヤされて掲示板を作りたくなった(1) シンプルなルーティングがしたかった array_mapと部分適用→array_mapにありがとう、さよなら モダンPHPアンチパターン さ
モダンなPHPの依存管理(パッケージ管理)に既に欠かせないものとなったComposerの導入と運用方法について説明します。「仕事で使えるComposer」でもざっくりと紹介しましたが、今回はもうちょっとだけ詳細に書きます。 概要についてざっくりと知りたい型は、先にこちらのスライドをご覧ください。 Composerとは何か ComposerはPHPのパッケージ(ライブラリやツールなど)をインストールするためのツールです。英語ではComposer is a dependency manager.と説明されます。 ほかのプログラミング言語のエコシステムとして、RubyでのgemコマンドとBundlerを組み合せたもの、Node.jsのnpmに相当します。Composerはこの二つと比べても後発だけあって、それらの良いところが取り入れられたものです。 Packagist Packagist (Th
利用しなくていいんだよ、&からは逃げて、全力で。 0. リファレンスとは何か リファレンス (references, 参照とも呼ばれる)はPHPの言語仕様の中では珍しく、説明がめんどくさい方の文法です。用語がいっぱい出てきてめんどくさいってことは、 必要に迫られなければ利用しなくて良い 文法だってことです。 そのめんどくささは、PHPマニュアルにおけるリファレンスの説明の説明が(2017年2月20日時点において)七章に亘ることからお察しください。 (もっとも分量は多くないといふか、むしろ超短いので読んでください) リファレンスとは? リファレンスが行うことは何ですか? リファレンスが行わないこと リファレンス渡し リファレンスの解除 リファレンスの適用範囲 本来であれば「マニュアル嫁」で済むはずで、わざわざQiitaなんかで再説明をするまでもないことなのですが、リファレンスにみなさま興味が
こんにちはこんにちは、PHP書いてますか? include_once してますか? それともキミは require_once 派? ところで、現代的なPHPではクラスファイル(ここではclass, trait, interfaceを含む定義ファイル)では、わざわざファイルをinclude/requireしなくても自動的に読み込む機能をカンタンに構築できる環境があるので、紹介いたします。 この記事は手を動かして動作確認しながら読めるように構成してありますので、斜め読みするだけではもったいないですよ ヾ(〃><)ノ゙ はじめに 今回の記事ではクラスの自動ロード(オートローディング)の概要に絞って解説しますが、名前空間の文法や細かい説明を含めて包括的に解説した記事は、既にWEB+DB PRESS Vol.91|技術評論社にて「PHP大規模開発入門 第12回 名前空間とオートローディング」として発
Emacsを起動した直後に表示される画面をゆっくり見たことはありますか? 私は大好きなので、いままでEmacsを起動したりとか、起動直後になんかする。recentfとかね、みたいなことをやってきました ヾ(〃><)ノ゙ もしかしたら、みなさんこの画面をゆっくり見たことがないかもしれませんので、この機会に説明します。 色 私はEmacs組み込みのカラーテーマではmanoj-darkが好きなので愛用して居ります。 上の方 ロゴ 起動時画面(スプラッシュスクリーン)に現れるEmacsロゴはe1fことLuis Fernandesがデザインしたもので、2001年リリースのEmacs 21から取り込まれました。その経緯はThe Design of the Emacs Logoに詳しく、はじめは1995年にGnusのためにデザインされたものでした。 Welcome to... Welcome to GN
深夜にTwitterでGuzzle(PHPのHTTPクライアントライブラリ)がPromises/A+(日本語訳)のインターフェイスを持ってるって話が出てたので、深夜のテンションでサンプルコードを書いたらこうなった。 とまれーっ うごけーっ pic.twitter.com/8stozzrSyb — ぞぬのフレンズ (@tadsan) February 9, 2017 あと、わーい、すごーいの便乗。 <?php include_once getenv('HOME') . '/.composer/vendor/autoload.php'; use GuzzleHttp\Client; $client = new Client(['allow_redirects' => ['on_redirect' => function () { throw new \Exception(); }]]); $k
めりーくりすます! 昨日は@oubakiouさんのぼくのかんがえたさいきょうのはいれつ 2016 winterでした。私もいろいろ考察して、実装したことがあるので参考にしてみてくださいね。 こんにちは、今年もいろいろ書きたいことはあったんですけどちょっと眠すぎて時間がとれないので、一年ちょっと前にプログラミングのれんしゅうのために作ってたBaguettePHP/UnixCommandの話をします。 実装過程はQiitaにも書いてました ヾ(〃><)ノ゙☆ PHPでコマンドを実装してみる かんたんecho篇 - Qiita PHPでコマンドを実装してみる cat篇 - Qiita PHPでコマンドを実装してみる かんたんseq篇 - Qiita PHPでコマンドを実装してみる cp篇 - Qiita UNIXコマンド? みなさんGNU/LinuxやmacOSなどのUNIX風のOSを利用されま
こんにちは! 片手間JSerの者です! レガシーPHPの方から来ました! みんなPHPで動的な管理画面とか作りたいじゃないですか。私などは怠惰ななまけものですので、動的なページ、特にブラウザ側での動きがあるページを作るのはだるいなあ、とか思ってしまふわけですよ。 きちんと設計したアプリケーションも良いものなのですが、水は低きに流れると申しまして、Vue.jsは雑に動くコードを異常に簡単に書くこともできます。 PHPだけで片手間 スゴイ雑に、こんなページを作ってみます。これは、何かの商品の一覧と説明文を登録する画面ってことにします。 このコードの思想としては、一個づつ追加して保存すると最後に空欄ができるのでJavaScriptがなくてもコンテンツを追加するアプリケーションが実現できる!!! って感じです。 ソースコード: https://github.com/zonuexe/katatema
Emacsでコマンドを定義するとき、(interactive)で入力補完を利用することができる。 (interactive "f")で実在するファイル名、(interactive "a")で函数名が補完できる、といった具合だ。Helmなどの補完インターフェイスを利用すると、さらに入力しやすくなる。(君は誰とEmacsる? (補完インターフェイス紹介篇)を参照) この機能の概要は、Emacsのdescribe-functionでinteractiveを引くと、どんな文字を利用できるのかが一覧できる。(GNU Emacs Lisp Reference Manual: Interactive Codes) さて、では変数名を補完入力させようと思ったら、どうすればいいのか。 v -- Variable name: symbol that is custom-variable-p. vがその文字にあ
こんにちは、今日も一日Emacsを起動してました.emacs Advent Calendar 2016です。 私は記憶力が悪く、特に複雑なキーバインドが覚えられないのでEmacsの操作を単純化する方向をめざしてきました。 だいたいなんですか、たかだかカーソル移動のためにC-nとかC-pとか難しいキーバインド覚えられるわけないじゃないですか。 キーアサインする ものおぼえが悪いことを自覚しながらも、奥の手に手を染める前に基本から攻めていきます。 絶対に鬼軍曹しない あきすてさんのEmacs 初心者はいかにして変態キーバインドを覚えるかみたいな話もあるのですが、これは罠です。鬼軍曹.el(drill-instructor.el)は記憶力の良い人向きです。私は一瞬で諦めました。 初心者がEmacsの得意なひとにそそのかされて、Emacsはふべんだとか、めんどくさいとか感じるのは損失です。私はまっ
みなさまはファイルを開きますか? Emacsの履歴機能、使ってますか? こんにちは、私のEmacsを起動する.emacs Advent Calendar 2016のお時間です。 recentfとは何か テキストエディタの基本的な機能である「最近開いたファイル」を実現するEmacs標準の機能です。標準機能ですがデフォルト設定されてません。 基本的な概念の紹介は@tomoyaton1のEmacs で最近開いたファイルのリストを自動保存する。 - 日々、とんは語る。が参考になります。 私の設定はtomoyaさんの設定を完全にぱくったので、以下のような感じです。 (setq recentf-max-saved-items 2000) ;; 2000ファイルまで履歴保存する (setq recentf-auto-cleanup 'never) ;; 存在しないファイルは消さない (setq rece
次のページ
このページを最初にブックマークしてみませんか?
『@tadsanのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く