開発– tag –
-
プレスリリースのエディタにサニタイザーを導入した話
開発
こんにちは。フロントエンドエンジニアの桐澤(@kiririLee)です。PHPのアプリケーションから配信されるプレスリリースがサニタイザーを通るようにしたため、導入するまでに取り組んだことを書きます。 【サニタイザーとは】 HTMLにスクリプトを埋め込んでユーザーのブラウザ上で実行する方法としてまず思い浮かぶのはscriptタグを使用する方法かと思います。ですがこれ以外にもimgタグのonerror属性を使用する方法などHTMLでスクリプト実行する方法は意外と多く存在しています。 悪意のあるスクリプトや不正な HT... -
MySQLのCharsetをutf8mb3からutf8mb4に移行した話
開発
こんにちは。開発本部の23卒の松浦です。今回は、WebClippingで使用しているテーブルの一部のカラムのCharsetをutf8mb3からutf8mb4に移行した話について書こうと思います。 【何が問題か】 前提として移行前の多くのテーブル構成は下記の通りでした。 Charset: utf8mb3 Collation: utf8mb3_general_ci 上記の構成では絵文字(🍣、😭、🍺など)や、特殊文字(𠀋、𠮷など)のUTF-8で1文字4バイトになる文字を保存することができません。上記の設定で保存できるのは1文字3バイト以下の文字のみです。 WebClippingでは... -
PR TIMESのログインシステムにJWTを導入しました
開発
こんにちは、開発本部でインターンをしている田中 湧大です。 今回は認証機能をPR TIMES上で実装し、企業・事業主ユーザーとメディアユーザーでログインするときにJWTを発行するようにしたのでその紹介をします。 【JWT(JSON Web Token)とは】 JSON Web Tokenは以下のようなドットで結合された文字列です。${HEADER}.${PAYLOAD}.${SIGNATURE}で構成されており、それぞれbase64エンコードされています。 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IlRhbmFrYSIsInVybCI6InBydGl... -
AWSとGo言語を活用して、プレスキット一括ダウンロードを構築しました
開発
こんにちは!開発本部のエンジニアのトゥ(codyzard)です。 今回は数ヶ月前にリリースされたプレスキット一括ダウンロードの機能を話したいと思います。 【背景】 2022年2月にプレスキット機能をリリースしました。興味があれば以下の記事を参考してください。 https://developers.prtimes.com/2022/03/09/react-presskit/ https://developers.prtimes.com/2022/03/04/upload-files-using-s3-and-lambda/ しかし、それまでのプレスキットでは1つ1つの素材しかダウンロードできませんでした。いくつも欲しい素材が... -
BFCacheを利用してNext.jsで実装した無限スクロールのUX改善をした話
開発
こんにちは、フロントエンドエンジニアのやなぎ( @apple_yagi )です。 先日、【月間9000万PV】プレスリリース掲載ページの Next.js 移行でやったこと、という記事が公開されました。こちらのブログの最後に軽く触れられていますが、プレスリリース掲載ページより前にキーワード検索ページのNext.js移行を行っていました。 https://developers.prtimes.com/2023/12/13/replace-press-release-page-with-nextjs/ 本エントリーではキーワード検索ページをNext.js移行したモチベーションなどは割愛させていただきま... -
PR TIMES’s Transformation of Ranking and Analytics Systems with Enhanced Logging
開発
Hello, I'm Duc, responsible for the optimization of our press release access logging system. I'm excited to share the transformative journey we embarked on, moving from a traditional log system that recorded every access in our database to a more streamlined and effective approach. 【Background】 Let's begin by examining the challenges we encountered with our previous logging system. Initially, it was a basic setup: each view of a press release page triggered the addition ... -
【月間9000万PVのPR TIMES】プレスリリース掲載ページの Next.js 移行でやったこと
開発
こんにちは!PR TIMES 開発本部フロントエンドエンジニアの岩元 (@yoiwamoto) です。 先日、月間9000万 PV のプレスリリース配信サイト PR TIMES で、もっともアクセスが多い「プレスリリースページ」の実装を、PHP + Smarty + jQuery から Next.js に移行しました。 今回はこれについての詳細や難しかったことなどを共有します。 【背景と目的】 PR TIMES の Web アプリケーションのフロントエンドは、この数年、必要な部分から随時ページ単位で React 実装へのリプレイスが進んでいる状態で、まだ多くのページで... -
ステージング環境にもNew Relicを入れよう!
開発
こんにちは、インフラチームテックリードの櫻井です。 今回はNew Relicを本番環境だけではなくステージング環境にも入れてみるといいことがあるよということを紹介したいと思います。 この記事はNew Relic Advent Calendar 2023の12日目の記事になります。 【New Relic、入れていますか?】 皆さんは運用しているサービスのステージング環境にNew Relicを入れていますか? 本番環境にはNew Relicを入れているけど、ステージング環境には入れていないという人も多いのではないかと思います。 実際に当社でも以前は... -
PR TIMES・ディップ・ピクシブ・グルコースの4社合同のLT大会を開催しました
勉強会
【はじめに】 先日、株式会社PR TIMES・ディップ株式会社・ピクシブ株式会社・株式会社グルコースの4社合同のLT大会を開催しました。 【テーマ】 今年言い残したこと・カンファレンスでは話せなかったことをテーマにしました。 大まかなトピック・内容は以下の通りです。 Webアプリケーション p5.jsを使ったゲーム制作の話 データサイエンス R言語の modernなベクトルの話 ゼロから時系列分析の手法、prophetを再実装した話 セキュリティ 個人サービスを運営していたらDDoS攻撃が来たので戦った話 インフラストラ... -
Fastly Yamagoya 2023に登壇しました! #yamagoya2023
勉強会
こんにちは、インフラチームテックリードの櫻井です。 先日Fastly株式会社の主催するYamagoya 2023に登壇させていただいたので、こちらのイベントについて紹介したいと思います。 【登壇までの経緯】 今までのブログ記事でも何度か紹介していますが、PR TIMESではFastlyのCDN ServiceやImageOptimizerを活用しています。 以前私が執筆したCloudFrontからFastlyへの移行記事をFastlyの方に読んでいただき、Yamagoya 2023への登壇を先方から打診いただいたことで今回の登壇に至りました。 https://developers.prtime...
