タグ

ブックマーク / tech.quartetcom.co.jp (12)

  • PHPの浮動小数点(float)の誤差とメモリに格納される仕組み | QUARTETCOM TECH BLOG

    PHPでは、変数に 0.1 を代入すると float 型と判定されます。 sprintf() で表示したところ小数部は53桁あり、それ以降を切り捨てる内容の警告が表示されました。 float 型の 0.1 は、なぜこのような値に変換されるのでしょうか? 浮動小数点がメモリに格納される仕組みを解説しながら理由を探ります。 10進数と2進数の表記(整数) 数値はメモリ上に2進数で格納されます。 2進表記の整数は 右端(一の位) から、2の0乗、2の1乗、2の2乗、2の3乗…を表します。2進数なので、格納される値は「0」または「1」の二通りです。「0」または「1」が格納される領域を「ビット」と呼びます。 10進数の 10 は2進数では 1010 です。「1」が格納されたビット(2の1乗と、2の3乗)の合計(2 + 8)が10進表記になります。 10進数と2進数の表記(小数) 2進表記の小数は 左

    PHPの浮動小数点(float)の誤差とメモリに格納される仕組み | QUARTETCOM TECH BLOG
    okinaka
    okinaka 2024/02/12
  • JMSJobQueueBundleユーザーのためのMessengerコンポーネント移行ガイド(Symfony4時代のasyncジョブ実行入門) | QUARTETCOM TECH BLOG

    JMSJobQueueBundleユーザーのためのMessengerコンポーネント移行ガイド(Symfony4時代のasyncジョブ実行入門) SymfonyでWebアプリケーションを作るとき、HTTPリクエストから直接実行するには重い処理があったらどうするか? 以前の記事 でも書いた通り、非同期処理を実装することが多いですね。 Symfony2時代の非同期処理のスタンダードは JMSJobQueueBundle でした。 JMSJobQueueBundleも一応Symfony4に対応してくれたのですが、不具合があって利用できない時期が長く、メンテナーの方が忙しいようでプルリクエストへの返信も遅れがちでした。乗り換え先をどれにするのが良いかTwitterで聞いてみたところ、 Symfony\Component\Messenger を使うと良いよというアドバイスをもらい、使ってみたらとても良

    JMSJobQueueBundleユーザーのためのMessengerコンポーネント移行ガイド(Symfony4時代のasyncジョブ実行入門) | QUARTETCOM TECH BLOG
  • PHPUnitでオブジェクトの比較 | QUARTETCOM TECH BLOG

    いきなりですが、PHPでオブジェクトの比較をするのって面倒ではないですか? かといってバグ対応の方が面倒なのでテストをサボらずにしぶしぶ書く、そんな毎日でした。 そこで、厳密なオブジェクトの比較を簡単にできないかと考え解決策に至るまでの道のりの話です。 面倒な例 <?php class Foo { private $bar; private $baz; public function __construct($bar, $baz) { $this->bar = $bar; $this->baz = $baz; } public function getBar() { return $this->bar; } public function getBaz() { return $this->baz; } } <?php $fooList = $service->doSomething();

    PHPUnitでオブジェクトの比較 | QUARTETCOM TECH BLOG
  • Symfony4をインストールして

    Symfony Advent Calendar 2017 の5日目の記事です。 開発部の澤井です。新人研修でSymfony4をインストールし、Hello Worldを表示する作業を行いました。今回は、その手順を紹介します。 目次 Symfony Flex/Recipes Symfony4 セットアップ symfony/skeletonでプロジェクトを作成 serverレシピをインストール makerレシピをインストール annotレシピをインストール デバッグパックをインストール Hello World表示 コントローラーを作成 ビューを作成 表示結果を確認 Symfony Flex/Recipes 記事では、各種パッケージをSymfony FlexのRecipes経由でインストールします。 Symfony Flex は、Symfonyアプリケーションを構成する際のパッケージのインストー

    Symfony4をインストールして
  • 複数のWebアプリを1サーバーのDockerを使ってSSL対応のサブドメインで簡単に運用する | QUARTETCOM TECH BLOG

    はじめに エントリーのゴールは以下のような状態です。 (ほぼ)Dockerだけしかインストールされていないサーバーが1つある そのサーバーのDockerで複数のWebアプリがホストされている 各WebアプリはDocker Composeで構成管理されていて、アプリごとに docker-compose up するだけで動く docker-compose up した各Webアプリには、指定したサブドメインが自動で割り当てられて、Let’s Encrypt で取得したSSL証明書が適用される この状態になるまでに必要な作業をできるだけ丁寧に解説していきます。やや長くなりますが、ぜひ最後までお付き合いください。 目次 Ubuntu 16.04のサーバーを用意する サーバーにDockerをインストールする 一般ユーザーを作る Dockerをインストール Docker Composeをインストール

    複数のWebアプリを1サーバーのDockerを使ってSSL対応のサブドメインで簡単に運用する | QUARTETCOM TECH BLOG
  • Deployer + CircleCIでデプロイを自動化する | QUARTETCOM TECH BLOG

    新年明けましておめでとうございます、永井です。 年も「カルテットコミュニケーションズ技術ブログ」共々頑張っていきたいと思いますので、宜しくお願い致します。 はじめに カルテット社内におけるデプロイツールのデファクトスタンダードは、Capistranoです。 機能的には特に不満はないのですが、たまに手の込んだことをやろうとすると途端に躓いてしまった経験が何度かあり、出来ればアプリケーションで利用しているプログラミング言語で良いツールがないかなと思っていました。 そこで今回はDeployerを試してみました。 今回のゴール シンプルなPHPプロジェクト(Silexベース)をDeployerでデプロイする CircleCIを利用して、 特定ブランチが更新された時に自動的にデプロイする Deployerについて DeployerはPHP製のとてもシンプルなデプロイツールです。 公式サイトを見る

    Deployer + CircleCIでデプロイを自動化する | QUARTETCOM TECH BLOG
  • 3年育てたSymfonyプロジェクトの現状 | QUARTETCOM TECH BLOG

    はじめに カルテットで開発しているサービスLisketは、2014年始めにSymfony2ベースに置き換えて以来、3年間Symfonyを使い続けています。この記事では、カルテットで3年間育てたSymfonyプロジェクトの現状の数値や、現場で感じている課題などを整理してみました。Symfonyに限らず、同じようなプロジェクトの悩みを抱えている方々と、苦労しているポイントを分かち合えれば幸いです。 プロジェクトの規模 LisketのメインのSymfonyアプリケーション、バックエンドのアプリケーション、および自社開発の独立コンポーネントを合わせたプロジェクトの規模は、2016年12月の時点で以下のとおりです。 ソースコード行数 PHP:38万行 (*1) JavaScript:6万行+α Symfonyバンドルの数:37(メインアプリ)、11(バックエンドアプリ)、+α 独立コンポーネントの数

    3年育てたSymfonyプロジェクトの現状 | QUARTETCOM TECH BLOG
    okinaka
    okinaka 2016/12/03
    今風の対応策としては、モノリスな構造をマイクロサービス化することかな。
  • Docker Compose + Nginx + SilexでPHPアプリケーションを動かしてみる | QUARTETCOM TECH BLOG

    はじめに Dockerは何となく触ってみてはいたものの、Docker上で格的にWebアプリケーションを構築したことがなかったので、練習も兼ねて趣味プロダクトを以下の構成で作ってみました。 Docker Docker Compose Nginx Silex 恥ずかしながらDocker ComposeもNginxも今回初めて触ったので、いろいろ間違った使い方をしているところもあるかもしれませんが、お気付きの点があれば @ttskch まで一言いただければ幸いです。 ちなみに今回作ったのは audio2video というサービスで、音声ファイルを動画ファイルに変換するだけのものです。サービスの大まかな紹介については Qiitaに記事を書きました ので、よろしければこちらもご参照ください。 なお、今回作ったものはデータの永続化を必要としないアプリだったので、データボリュームの話とかは出てきません

    Docker Compose + Nginx + SilexでPHPアプリケーションを動かしてみる | QUARTETCOM TECH BLOG
  • PHP PhantomJS を使ってPHPでヘッドレスブラウジング | QUARTETCOM TECH BLOG

    はじめに PHPアプリケーションからWebアプリケーションに対してアクセスすることは多々あります。もっともよくあるケースはREST APIなどのテキストのみを返すWebアプリケーションへのアクセスかと思います。しかしまれにGoogle ChromeやFirefoxを操作したときのようにJavaScriptの動作を伴ったアクセスを行いたいときもありますよね。 PHPにはV8jsという拡張モジュールもあるようですが、今回は PHP PhantomJS を利用してその要件を実現することにします。 PHP PhantomJSとは PHP PhantomJSは別途インストールしたPhantomJSをPHPから使うためのインターフェイスを提供してくれるライブラリです。PhantomJSはいわゆる「ヘッドレスブラウザ」というものでGUIを持たないブラウザです。 当エントリでは基礎知識としてPhantom

    PHP PhantomJS を使ってPHPでヘッドレスブラウジング | QUARTETCOM TECH BLOG
  • SymfonyプロジェクトのテストにCodeceptionを使ってみる | QUARTETCOM TECH BLOG

    このエントリーは Symfony Advent Calendar 2015 18日目の記事です。 昨日は tarokamikaze さんの 「Symfony初心者がつまづきがちなポイント」 でした。 はじめに CodeceptionはPHPのテスティング・フレームワークです。今回はこれをSymfonyプロジェクトに適用することを試してみました。 以前からCodeceptionは気になっていたのですが、Using Codeception for Symfony Projects としてSymfony向けの記事が出ていたことから試してみようと思った次第です。 なお、手元で試したSymfonyのデモ・プロジェクトを以下のリポジトリに置いておきましたのでご参考まで。 https://github.com/naoyes/2015-dec-quartetcom-tech-blog-codeceptio

    SymfonyプロジェクトのテストにCodeceptionを使ってみる | QUARTETCOM TECH BLOG
  • イベントディスパッチャーとイベントリスナー | QUARTETCOM TECH BLOG

    イベントディスパッチャーとイベントリスナーの関係を整理しながら、SymfonyのEventDispatcherコンポーネントを使って、簡単な実装をしてみようと思います。 主要なクラス イベント イベントディスパッチャー イベントリスナー イベント 何かしら動作や変更をする(した)タイミングや事象。 こうやって書くと分かりづらいですが、JavaScriptのonClickイベントなどは比較的に目にすることが多いのではないでしょうか。 イベントディスパッチャー イベントを発行する人。 トリガーとか、エミッターという名前が付くこともあります。 イベントリスナー 発行されたイベントを聞く人。 イベントディスパッチャーがイベントを発行するのですが、それを受けて色々処理をするのがイベントリスナーになります。 主要なクラスの関係 これらが以下の様に絡みます。 イベントが発生する(イベントディスパッチャー

    イベントディスパッチャーとイベントリスナー | QUARTETCOM TECH BLOG
    okinaka
    okinaka 2015/12/17
  • GitHub + CircleCI + Capistrano + Slack + Hubot で快適リリース生活 | QUARTETCOM TECH BLOG

    こんにちは、@ttskchです。先日、Symfony Meetup #5のLTでChatOpsについて発表させていただきました。 発表に使用したスライドはこちらにあります。 具体的には、PHP(特にSymfony2)プロジェクトの開発・リリースのプロセスについてのお話しです。 ここでは、その発表の内容をもう少し詳しく解説したいと思います。大きく5つのステップに分けて、一つずつ解説していきます。少し長いですがお付き合いください。 Step 1. CIの導入 Step 2. Capistranoの導入 Step 3. デプロイの自動化 Step 4. リリースPR作成のQA最適化 Step 5. リリースPR作成のChatOps化 Step 1. CIの導入 まず一番初めにやるべきはCIの導入です。弊社ではCIサービスにCircleCIを使っています。 CircleCIGitHubを連携させ

    GitHub + CircleCI + Capistrano + Slack + Hubot で快適リリース生活 | QUARTETCOM TECH BLOG
  • 1