サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16e
s8a.jp
Vue CLIでは、デフォルトでパッケージマネージャーにYarnを使用します。 ですが、開発環境や本番環境でのミドルウェアの制限等により、Yarnではなくnpmで管理したいプロジェクトもあるかと思います。 そんなとき、Vue CLIでどのようにプロジェクトを作成すればいいのか、解説します。 npmとはnpm(Node Package Manager)はNode.jsで利用されるパッケージマネージャーで、通常Node.jsをインストールすると一緒にインストールされるデフォルトのパッケージマネージャーです。 Node.jsさえインストールしてしまえばそのまま使えるので、何も考えなければ普通はこちらのパッケージマネージャーを使いますし、多くのライブラリではnpmを使う前提でドキュメントやチュートリアルが書かれています。 YarnとはYarnはnpmに代わるパッケージマネージャーとして発表された後
Reactで作成したフロントエンドのWebアプリを、GitHub上で管理して、masterブランチにコミットされた変更を自動でAmazon S3にデプロイ(適用)させる方法を解説します。 本記事では、S3をCloudFront経由でインターネット上へ公開し、名前解決をRoute 53で行う形とし、開発者はGitHub上のmasterブランチに変更をマージさえしてしまえば、後は勝手に公開されているソースコードが変更される仕組みにする方法を紹介します。 最も手間が少ない(と思われる)シンプルな構成を解説しますので、参考にしていただいて、後は自分のアプリケーションに合わせて自由に応用してもらえれば、と思います。 本記事で使うサービスGitHubAWS CodePipelineAWS CodeBuildAmazon S3Amazon CloudFront(使わない人は読み飛ばしてください)Amaz
Vue.jsで作成したフロントエンドのWebアプリを、GitHub上で管理して、masterブランチにコミットされた変更を自動でAmazon S3にデプロイ(適用)させる方法を解説します。 本記事では、S3をCloudFront経由でインターネット上へ公開し、名前解決をRoute 53で行う形とし、開発者はGitHub上のmasterブランチに変更をマージさえしてしまえば、後は勝手に公開されているソースコードが変更される仕組みにする方法を紹介します。 最も手間が少ない(と思われる)シンプルな構成を解説しますので、参考にしていただいて、後は自分のアプリケーションに合わせて自由に応用してもらえれば、と思います。 本記事で使うサービスGitHubAWS CodePipelineAWS CodeBuildAmazon S3Amazon CloudFront(使わない人は読み飛ばしてください)Ama
/usr/local/opt/[email protected]/bin/mysql.server start /usr/local/opt/[email protected]/bin/mysql.server stop インストールしたバージョンのMySQLを起動・停止します。 $ sudo mysql.server start Starting MySQL ... SUCCESS! 起動成功すれば対処完了です。 原因2: MySQL5.7の設定が残っている以下と同様のエラーログが出ていた場合の対処法となります。 $ sudo cat /usr/local/var/mysql/*.err | grep ERROR | tail yyyy-MM-ddTHH:mm:ss.ffffffZ 0 [ERROR] [MY-011071] [Server] unknown variable 'innodb_large_prefix=
CakePHP 3系にて、アソシエーションを利用する場合に便利なmatchingメソッド。 便利に活用させていただいていたのですが、利用していく上で、複数の条件を指定する場合において少し悩んだので、備忘録として。 使い方まずは通常の使い方から。 matchingは、多対多(belongsToMany)の関係を持つ2つのテーブルにおいて、片一方のテーブルに紐づくデータによって、もう片一方のテーブルから取得するデータをフィルタリングするメソッドです。 例えば、ブログの記事情報を格納するPostsテーブルとブログのタグ情報を格納するTagsテーブルが存在する場合、この2つのテーブルは多対多の関係(ブログは複数のタグを持ち、タグは複数のブログに割り当てられる)となりますが、特定のタグを持つブログのみを絞り込んで取得したい場合などに、このmatchingメソッドの出番となります。 特定のタグを持つブ
「react-router-redux 5.x」をサンプルの通りインストールすると、場合によってはブラウザの戻る/進む操作によって画面の状態がおかしくなることがあります。 2018年1月現在、react-router-redux 5.xの最終バージョンがv5.0.0-alpha.9なので、まだドキュメントが整備されていないだけかもしれませんが、詳しい情報の記載がないため、どう修正すればいいかわからない方も多いかと思いますので、備忘録を兼ね紹介しておきます。 現象react-router-redux 5.xをインストールした環境において、ブラウザの戻るボタンを連打すると、画面の状態が戻ったり戻らなかったりし、更に進むボタンを押すと、更に進んだり進まなかったりし、結果的に画面の各コンポーネントにおける状態がズレたりします。 例えば、特定の画面を開いたときアクティブな<NavLink/>に特定の
Internet Explorer(IE)は何かと他のモダンブラウザと違う挙動が多く、苦労させられることが多いです。特に近年SPAの需要が高まってきており、IEには困らされてばかりです。 今回は、そんなIEの11で、JavaScriptのHTTPクライアントライブラリからAPIを叩こうとした際に、頑固なキャッシュが機能してしまう問題を回避する方法を記述します。 jQueryの場合jQueryのajax()等のAjax系メソッドを利用している場合は簡単です。次のスクリプトを最初に一度実行するように、追加しましょう。
最近、GoogleのGoogleドライブ関連のアップデートが多く、中でもGoogleドライブファイルストリームは、Googleドライブを利用する上で必要不可欠と言えるほど便利で、私も活用させていただいています。 なのですが、macOSにてGoogleドライブファイルストリームをインストール直後、OS自体がフリーズしまくってうまく動作しないという問題に直面しました。 同様の現象に困っている人がいるかもしれないので、私の環境における解決方法をシェアしておきます。 現象Googleドライブファイルストリームをインストールすると、「GoogleDrive」という名称でボリュームがマウントされます。 Finderでマウントされたボリュームを参照し、何かしらの操作(ファイルを開く・コピー・リネーム等)を行うとフリーズします。 しかも、このフリーズ、アプリケーションだけではなく、OS自体(Finder)
Laravel Passportは、Laravel上にOAuth2によるAPI認証を簡単に実装できるライブラリです。 この、Laravel Passportを利用すると、自身のWebアプリケーション上に実装したAPIを、外部へと簡単にセキュアに公開できます。 しかしながら、自身のWebアプリケーションの画面上でも同一のAPI利用したい場合があるでしょう。そんな場合もいちいち認証処理を経由するのは面倒なので、Laravel Passportでは自身のJavaScriptからAPIを利用する方法が用意されています。今回はそれについて紹介します。 今回紹介している方法は、一部公式ドキュメントに方法の記載がありますが、そのとおりにやってもトークンの渡し方に不備があり認証が通らないことがあったので、その点を踏まえ公式ドキュメントよりも詳しく解説していきます。 前提公式ドキュメント(日本語翻訳サイト)
はっきり言って1ミリも価値ないです。 知識労働者であるということITエンジニア(システムエンジニア・プログラマー)は、知識労働者です。知識労働者とは簡単にいうと、知識を持ってそれを使うことを職業とする言わば「専門家」のことです。 知識を生業とし、知識をもって何事かを成し遂げることを欲する、エンジニアはそういう職業の一つです。 別に休日まで返上して勉強をしろということではありません。仕事中に色々と得られることもあります。 仕事でも休日でも何でもいいから、自分の知識が間違っていたり、自分の知識よりもより良い知識があったりすることに気づくことが大事であり、周りの優秀な人間の知識やインターネット上のより深い専門的な知識を自分のものにできるかどうかが、重要になってきます。 Webデザイナー上がりのエセプログラマー悪い例を挙げます。 Webが流行り出して、業務で初めてHTMLを触りだしたWebデザイナ
JavaScriptで正規表現を利用する際、生成したRegExpオブジェクトが思いどおりに動かない場合があります。 それは、もしかしたら正規表現で利用する特別な文字列がエスケープされていないのが原因かもしれません。 時々、正規表現へ動的な文字列を突っ込みたくなる時があるので、備忘録として正規表現文字列をエスケープする方法を記載します。 利用ケースJavaScriptで文字列を正規表現RegExpを使って検索する場合、検索したい文字列に正規表現で利用する特別な文字が含まれていると正しく検索できません。 例えば、以下のような場合です。 var searchText = '詳しくは[こちら](https://s8a.jp/?tag=JavaScript)。'; var url = 'https://s8a.jp/?tag=JavaScript'; var regexp = new RegExp(
通常のWebページの場合、Google Analyticsは単一のJavaScriptコードをHTML内に埋め込むだけで利用できます。 しかし、シングルページアプリケーション(SPA)の場合、そのままでは最初の1ページしか記録してくれませんので、ページ遷移ごとにGoogle Analyticsへ情報を送信する処理を追加する必要があります。 今回は、シングルページアプリケーション(SPA)の場合に、どのようにしてGoogle Analyticsを使うかを解説していきます。 シングルページアプリケーション(SPA)とはSPA(Single-page application)は、単一ページアプリケーションとも呼ばれ、最初にページを読み込んで以降は画面遷移を全てAjax(非同期通信)で再現し、JavaScriptで従来のページ移動をエミュレートしているWebサイト・Webアプリケーションのことです
TwitterのBotと言われるような自動ツイートシステムや自動フォロー返しなどの仕組みを、PHPを用いて実装するための基礎知識を備忘録として書き残します。 注意事項当記事の情報を利用して、Twitterルールに違反する行為(不正利用やスパム行為)を行い、いかなる損害を受けたとしても、当ブログは一切の責任を負いません。作成したコードは全て自己責任で利用してください。 特に、不特定多数のユーザーに対する自動フォロー・自動リプライ・自動リツイートなどは、一部の例外を除いて、原則禁止されています。禁止されている行為を働いた場合は、アカウントが凍結される可能性がありますので、注意しましょう。 アプリケーション登録まず、Twitterに自作アプリケーションを実行するための登録を行います。 Twitter Application Managementにアクセスし、「Sign in」のリンクから自動操作
現在、数多くのPHPフレームワークが登場しています。 ですが、私の周りでは、新規案件においては大体「CakePHP 3」か「Laravel 5」の二択になっています。この二つのフレームワークは、日本において、今現在PHPフレームワークの二強といってもいい存在ですね。 私はどちらのフレームワークもある程度使った経験があります。 そしてその結果、私の中では「CakePHP 3」よりも断然「Laravel 5」の方が優れているという結論が出ましたので、その理由を解説していきます。もちろん、好みの問題もありますので、フレームワーク選定の参考にしようとされる場合は、案件やチームのスキルを鑑みて総合的に評価してください。 自由なディレクトリ構成これはチームによってはメリットにもデメリットにもなりうる要素ですが、基本的にLaravelは、PHPのソースコードを配置する際のディレクトリ構成(名前空間の構成
近年、様々な目的のITシステムが開発されてきており、その多くはデータベースへデータを格納しています。 しかしながら、そのデータベースの内容を然るべき役職の人間が正しく「分析」できている現場はあまりないのではないでしょうか。 きちんと分析できる画面を持つITシステムならば、分析すべき人間がきちんと分析しビジネスに反映できますが、実際にはデータの分析というところまでは至っていないシステムも多いと思います。 そこで今回は、非エンジニアの人でもデータベースを分析目的で閲覧できるツール「Metabase」を紹介したいと思います。 なお、今回紹介する「Metabase」は、2017年2月現在、まだ日本において実用に至るほどの完成度ではないと考えています。ですが、開発が活発で、期待できるコンセプトですので、今後開発状況を追っていきたいプロジェクトとして、紹介させていただきます。 「Metabase」とは
JavaScriptにおいて、文字列の中に特定の文字列が含まれているかどうかを調べる方法はいくつかあります。 時々、どの方法が最適か知りたくなるときがあったので、今回はそれらの方法のおさらいと、それぞれの方法におけるベンチマークを取ってみます。 なお、今回は以下の7つの方法を検証します。 String.prototype.indexOf()メソッドを利用する方法String.prototype.includes()メソッドを利用する方法Lodashライブラリに含まれるincludes()メソッドを利用する方法String.prototype.search()メソッドを利用する方法String.prototype.match()メソッドを利用する方法RegExp.prototype.test()メソッドを利用する方法RegExp.prototype.exec()メソッドを利用する方法各方法に
JavaScriptで閲覧者のブラウザやOS等のプラットフォームを判定するのに、皆さんはどうしてますでしょうか。 それぞれ独自にユーザーエージェントから推測するコードを実装している方も多いと思います。 しかし、現在様々なプラットフォームが存在するため、正確にプラットフォームを推測するのは、個人の実装では難しいところがあります。実装できたと思っていても、想定外のユーザーエージェントによって正しくブラウザ名やそのバージョン情報を取得できていない場合もあるかもしれません。 そこで今回は、できる限り正確に、そしてラクにプラットフォーム判定を実装したい人向けに、ユーザーのプラットフォームを判定するJavaScriptライブラリ「Platform.js」を紹介します。 「Platform.js」とはPlatform.jsは、ほぼすべてのJavaScriptプラットフォームで動作する、プラットフォーム検
LaravelなんかのPHPフレームワークでは、デフォルトで.envファイルを用いて環境設定(Dotenv)するようになっています。 CakePHP 3は、デフォルトでDotenvが利用できる形にはなっていないので、ライブラリを導入してDotenvで環境設定ができるよう実装する手順を解説していきます。 ※ CakePHP 3.5以降では、Dotenvライブラリーのサポートが、アプリケーションスケルトンに追加されました。従って、バージョン3.5.0以降では本記事の手順を踏むことなく利用できます。 Dotenvとは?Dotenvとは、もともとRuby界隈で考えられた仕組みで、.envというファイルに環境情報(データベース接続情報やメールサーバー接続情報など)をまとめて記述して、それをロードすることで環境設定を行う仕組みです。 通常、.envはGit等のバージョン管理の対象外とし、デプロイする際
JavaScriptでは、フォント関連の操作が上手くできないことが多いです。インストールされているフォントの一覧の取得など、現在実用的な方法がないような場合も多いです。 今回はその中でも数少ない、フォント関連でJavaScriptができることの一つ、特定のフォントがインストールされているかどうかを調べる方法を紹介します。 定義以下のJavaScriptを読み込むことで、特定のフォントがインストールされているかどうかを調べるグローバル関数isInstalledFont()が定義されます。 (function (w, d, f) { var defaultCheckString = "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"; var reg
Node.js(JavaScript)で一般的に利用されるパッケージ管理ツール「npm(Node Package Manager)」は、普通に使うと、パッケージのバージョンを固定しません。v5.0.0からはパッケージのバージョンを固定するためのpackage-lock.jsonがデフォルトで出力されるようになりました。v5.0.0以上をお使いの方は、以下の設定はせずとも、パッケージのバージョンは固定されます。 例えば、1月1日に自身のプロジェクトをテストし、1月2日にそのプロジェクトに含まれるパッケージの1つがアップデートされた場合、1月3日にデプロイ作業でnpm installを実行するとすると、1月1日にテストしたパッケージとは違うバージョンのパッケージ(アップデートされた後のパッケージ)がインストールされることになります。 多くの場合、package.jsonでメジャーバージョンは固
LaravelでAPIを実装・構築後、API認証(Passport)を利用した上で、更に自身のJavaScript(同一サーバー)から構築したAPIを利用したい場合、CreateFreshApiTokenミドルウェアを利用することで簡単にAPIを利用できるようになります。 同一サーバーから構築したAPIを利用するのに、わざわざOAuth認証を経由するのは面倒です。 そこで、CreateFreshApiTokenミドルウェアは、laravel_tokenという名称のCookieを、送信するレスポンスへ付加します。このCookieは、JavaScriptアプリケーションからのAPIリクエストを認可するために使用する、暗号化されたJWTを含んでいます。 そのため、OAuthの手順を踏むことなく、APIへのリクエストを作成できるようになります。(別途X-CSRF-TOKENヘッダー及びX-Requ
Webを徘徊していると、JavaScriptを利用した様々なアニメーションやスムーススクロール等を見る機会も多いと思います。 今回は、モダンなJavaScript開発環境において、アニメーションやスムーススクロールを実装するのに最適なライブラリ、「anime.js」を紹介します。 「anime.js」とは「anime.js」は、オープンソースのJavaScriptのアニメーションライブラリ(MITライセンス)です。 特徴として、柔軟で軽く、シンプルなAPIを搭載しています。v2.0.0では10.7KB程のサイズしかありませんが、高機能で「CSS」「CSS Transform」「SVG」「DOMの属性」「JavaScriptオブジェクト」のアニメーションに対応しています。 また、anime.jsはつい最近、最新版であるv2.0.0がリリースされました。それに伴い、更に高速化が図られ、ドキュメ
JavaScriptにおける便利な関数の詰め合わせであるライブラリ「Lodash」。JavaScript(Node.js)での開発をしている人の多くは利用したことがあるでしょう。 今回はそのLodashを使う上で、ライブラリを導入後のファイルサイズを削減する方法を紹介します。 なお、今回当記事で紹介するにあたり、検証にモジュールバンドラーツール「webpack」を利用します。ですが、webpackを利用しない場合においても同様の方法でファイルサイズは削減できます。 ユースケースLodashに限らず、比較的高機能なJavaScriptライブラリは、場合によっては性能面や容量(ファイルサイズ)の面で、1機能特化のミニマルなものに比べ劣ることがあります。 例えば、そのライブラリの全ての機能のうち1つの機能しか使わなかったとしても、全ての機能分のファイルサイズを消費し、全ての機能を読み込んでしまい
JavaScriptのフレームワークである「Vue.js」、皆さんは使ってますでしょうか。 学習コストの低さ、小規模案件での導入のしやすさ、大規模案件にも対応できる拡張性の高さから、最近はVue.jsばかりいじっています。 今回は、そんなVue.js上で、すぐに高機能なUIパーツが使えるようになるコンポーネント詰め合わせライブラリ「Element」が予想以上にスゴかったので、紹介したいと思います。簡単に高機能なUIが実装できるので、Vue.jsを使ったことがない人も、一読していただき、「Vue.js使ってみよう!」となってくれると、嬉しい限りです。 Vue.jsとは知らない人のために、Vue.jsの紹介をしておきます。 Vue.jsはJavaScriptフレームワークの一つです。 他の一枚板のフレームワークとは異なり、初めから少しづつ適用していけるように設計されています。他のライブラリや既
JavaScriptでは、以下のような関数の再帰呼び出しをすると、ブラウザごとに定義されている最大コールスタック数を超えたとき、エラーが出ます。 var i = 0; function recurse() { i++; recurse(); } recurse(); // Uncaught RangeError: Maximum call stack size exceeded // InternalError: too much recursion 手元のGoogle Chromeでは、上記のコードでiが20888まで増加したところでエラーが出ました。 このエラーを一般に、「スタックオーバーフロー」と言います。 スタックオーバーフローの回避JavaScriptにおいて、このエラーは、再帰的に呼び出す関数を非同期的に呼び出すことによって回避できます。すなわち、以下のようにすることで、スタッ
現在JavaScriptは、ブラウザで使用されるのはもちろんのこと、サーバーサイドでWebサーバーとして動作したり、はたまた開発者のPCで各種開発ツールとして動作したりしており、様々な場面で利用されています。 そこで今回は、そのどちらでも使える、Node.jsとブラウザJavaScriptの両方に対応した画像処理ライブラリ「Jimp」を紹介したいと思います。 「Jimp」とはJimpは、外部またはネイティブの依存関係が全くない、完全にJavaScriptで記述されたNode.js用の画像処理ライブラリです。ライセンスはMITライセンスで、オープンソースで開発されています。 以下のnpmコマンドでインストールできます。 var Jimp = require("jimp"); // "lenna.png"を開く Jimp.read("lenna.png", function (err, len
最近、デザインされたQRコードを見る機会が多くなりました。QRコードの真ん中にアイコン等が配置してあるものを見たことがある人も多いと思います。LINE等でQRコードを生成すると、真ん中にアイコンが表示されますね。 今回は、高度にQRコードに画像を埋め込んで生成できるツールを発見したので、紹介します。 なお、こちらで検証はしていませんが、アイコンを中心に配置するだけのQRコードに比べ、画像や読み取り端末によっては読み取り成功率が低下する可能性がありますので、実際に使う際には十分検証の上、ご利用ください。 「CuteR」とはCuteRは、Python製の画像を埋め込んだQRコードを生成できるコマンドラインツールです。 以下のような画像から、 モノクロなら以下のようなQRコードを生成でき、 カラーなら以下のようなQRコードを生成できます。 使用するにはPythonが動作する必要があります。また、
Laravelには、ヘルパー関数(Helper Functions)という、便利なグローバル関数が複数定義されています。 このヘルパー関数の多くはフレームワーク自体で使用されていますが、ユーザーがアプリケーションに含むこともでき、自由に使用できます。 しかし実際には、標準のヘルパー関数だけではなく、自分で独自のヘルパー関数を自作・追加し、各ファイルから呼び出したい場合もあるでしょう。しかしながら、Laravel公式には、自作のヘルパー関数を追加する方法は用意されていません。 そこで、Laravelへ自作のヘルパー関数を追加する、最適な方法についていくつか例を挙げて検討してみます。 独自のヘルパー関数を実装したい方は、以下を参考に、自分のプロジェクトに最適な方法で導入してみてください。 Composerでオートロードする方法独自のヘルパー関数を定義した、以下のようなapp/helpers.p
iframeを利用する上で、最も障害となるものの一つに、ページ間のJavascriptの連携のしにくさが挙げられます。 通常のWebページでは、windowオブジェクトは1つですから、何も考えることなく普通にwindowオブジェクトを使えば良いです。しかし、iframeを利用したWebページでは、iframeタグを記述した呼び出し元Webページ(親フレーム)と、iframeによって呼び出された呼び出し先Webページ(子フレーム)の、2つのwindowオブジェクトが生成されます。よって、それぞれを組み合わせて簡単に呼んだり変更したりといった記述が通常に比べ難しく、更に記述が煩雑になりがちです。 当然、iframeを使うと、親ページ内で一貫して利用しているイベントが、iframeのページ内でのみ、動作しなくなります。例えば、以下のような場合、子フレーム内でどれだけマウスを動かしても、親フレーム
次のページ
このページを最初にブックマークしてみませんか?
『ある蜜柑の上にアルミ缶。』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く