Submit Search
Upload
ある戦いの記憶から探るPHPの闇と戦うコツ
•
3 likes
•
1,005 views
F
FAL_A
Follow
PHP Apocalypse LT
Read less
Read more
Technology
Report
Share
Report
Share
1 of 44
Download now
Download to read offline
Recommended
Shougoの開発環境
Shougoの開発環境
Shougo
neobundle.vimについて+おまけ
neobundle.vimについて+おまけ
Shougo
Ultimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vim
Shougo
Phpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみた
Akira Kaneda
C# から Ruby に乗り換えた
C# から Ruby に乗り換えた
Hideaki Miyake
初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発
Daisuke Kikuchi
モジュール開発におけるぼくの試行錯誤
モジュール開発におけるぼくの試行錯誤
karupanerura
modern X86 environment
modern X86 environment
Shougo
Recommended
Shougoの開発環境
Shougoの開発環境
Shougo
neobundle.vimについて+おまけ
neobundle.vimについて+おまけ
Shougo
Ultimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vim
Shougo
Phpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみた
Akira Kaneda
C# から Ruby に乗り換えた
C# から Ruby に乗り換えた
Hideaki Miyake
初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発
Daisuke Kikuchi
モジュール開発におけるぼくの試行錯誤
モジュール開発におけるぼくの試行錯誤
karupanerura
modern X86 environment
modern X86 environment
Shougo
VimとRubyのアツい関係
VimとRubyのアツい関係
Misao X
非同期系統の基礎
非同期系統の基礎
segayuu
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
Shougo
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014
Sugoi Kanari
Webページで学ぶJavaScript2013 第7回
Webページで学ぶJavaScript2013 第7回
京大 マイコンクラブ
Java初心者がJava8のラムダ式をやってみた
Java初心者がJava8のラムダ式をやってみた
Aya Ebata
Vimはこわくない
Vimはこわくない
Yuichi Watanabe
2021 01-25 lt sho kato
2021 01-25 lt sho kato
katosho1
5回目Java script構文
5回目Java script構文
Takuya Shishido
mrubyで作るマイコンボード
mrubyで作るマイコンボード
kishima7
Introducing hhvm hack-async
Introducing hhvm hack-async
Kenjiro Kubota
Botと対話する
Botと対話する
Yuki Ishikawa
負荷テストについて
負荷テストについて
Takahiro Ishida
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
Hiroshi Tomioka
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
More Related Content
What's hot
VimとRubyのアツい関係
VimとRubyのアツい関係
Misao X
非同期系統の基礎
非同期系統の基礎
segayuu
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
Shougo
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014
Sugoi Kanari
Webページで学ぶJavaScript2013 第7回
Webページで学ぶJavaScript2013 第7回
京大 マイコンクラブ
Java初心者がJava8のラムダ式をやってみた
Java初心者がJava8のラムダ式をやってみた
Aya Ebata
Vimはこわくない
Vimはこわくない
Yuichi Watanabe
2021 01-25 lt sho kato
2021 01-25 lt sho kato
katosho1
5回目Java script構文
5回目Java script構文
Takuya Shishido
mrubyで作るマイコンボード
mrubyで作るマイコンボード
kishima7
Introducing hhvm hack-async
Introducing hhvm hack-async
Kenjiro Kubota
Botと対話する
Botと対話する
Yuki Ishikawa
負荷テストについて
負荷テストについて
Takahiro Ishida
What's hot
(13)
VimとRubyのアツい関係
VimとRubyのアツい関係
非同期系統の基礎
非同期系統の基礎
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014
Webページで学ぶJavaScript2013 第7回
Webページで学ぶJavaScript2013 第7回
Java初心者がJava8のラムダ式をやってみた
Java初心者がJava8のラムダ式をやってみた
Vimはこわくない
Vimはこわくない
2021 01-25 lt sho kato
2021 01-25 lt sho kato
5回目Java script構文
5回目Java script構文
mrubyで作るマイコンボード
mrubyで作るマイコンボード
Introducing hhvm hack-async
Introducing hhvm hack-async
Botと対話する
Botと対話する
負荷テストについて
負荷テストについて
Recently uploaded
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
Hiroshi Tomioka
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
Recently uploaded
(9)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
ある戦いの記憶から探るPHPの闇と戦うコツ
1.
ある戦いの記憶から探る PHPの闇と戦うコツ
FAL
2.
ある戦いの記憶から探る PHPの闇と戦うコツ
タイトル変えました…すみません FAL
3.
自己紹介 ●
HN:FAL ● Twitter:@fal_aqua04 ● PHPは仕事で2年、趣味ではもっと前から。 ● 最近は、スマホ向けサイト構築がメイン。 ● PHPの前はWeb系Java屋でした。 ● Objective-C, Python等も触ったり。 ● 見た目は真っ黒!中身はおっさん!
4.
ある戦いってなーに?
Imagick というPECL拡張モジュールと私との戦いです。
5.
PECL::Imagickってなんぞや? ●
PHPで画像処理をするライブラリ ● 公式Manualの「画像処理および作成」参照 ● GDより高機能&高画質。ただし重い。 ● 実際は、ImageMagickAPIのWrapper
6.
PECL::Imagickってなんぞや? ●
PHPで画像処理をするライブラリ ● 公式Manualの「画像処理および作成」参照 ● GDより高機能&高画質。ただし重い。 ● 実際は、ImageMagickAPIのWrapper アニメGIFの編集という案件のため、利用開始
7.
大変でした。 ● メソッド多すぎ
8.
大変でした。 ● メソッド多すぎ
9.
大変でした。 ● メソッド多すぎ
まだまだあります…
10.
大変でした。 ● 癖が強い
11.
大変でした。 ● 癖が強い(特にアニメGIF関係)
○ イテレータの概念とか。 ○ 画像出力の方法の差とか。 ○ 画像処理前に各コマをバラして、合成後に最適化する、 とか。
12.
大変でした。 ● 癖が強い(特にアニメGIF関係)
○ イテレータの概念とか。 ○ 画像出力の方法の差とか。 ○ 画像処理前に各コマをバラして、合成後に最適化する、 とか。 正直、PHPを書いているというより、 PHPでフォトレタッチソフトを触ってるイメージですね。
13.
大変でした。 ● ImageMagickのバージョンの罠
14.
大変でした。 ● ImageMagickのバージョンの罠
15.
大変でした。 ● サンプルソースで使ってないメソッドの重要性
○ パフォーマンスが出ないので調査。
16.
大変でした。 ● サンプルソースで使ってないメソッドの重要性
○ パフォーマンスが出ないので調査。 ○ 参考に見ていたサイト上のソースにて destroy() という怪しいメソッドを発見。
17.
大変でした。 ● サンプルソースで使ってないメソッドの重要性
○ パフォーマンスが出ないので調査。 ○ 参考に見ていたサイト上のソースにて destroy() という怪しいメソッドを発見。 ○ ドキュメントの「基本的な使用法」に乗ってる サンプルソースにはそんなメソッド使われてないよ。
18.
大変でした。 ● サンプルソースで使ってないメソッドの重要性
○ パフォーマンスが出ないので調査。 ○ 参考に見ていたサイト上のソースにて destroy() という怪しいメソッドを発見。 ○ ドキュメントの「基本的な使用法」に乗ってる サンプルソースにはそんなメソッド使われてないよ。 ○ でも、開いた画像っていつ解放してるんだ? もしかして、明示的に解放しないとダメなんじゃね?
19.
大変でした。 ● サンプルソースで使ってないメソッドの重要性
○ パフォーマンスが出ないので調査。 ○ 参考に見ていたサイト上のソースにて destroy() という怪しいメソッドを発見。 ○ ドキュメントの「基本的な使用法」に乗ってる サンプルソースにはそんなメソッド使われてないよ。 ○ でも、開いた画像っていつ解放してるんだ? もしかして、明示的に解放しないとダメなんじゃね? ○ ビンゴ!
20.
大変でした。 ● 同時アクセスを捌けない
○ 単体アクセスは何とかなったけど、10程度の同時アクセ スに耐えられない。
21.
大変でした。 ● 同時アクセスを捌けない
○ 単体アクセスは何とかなったけど、10程度の同時アクセ スに耐えられない。 ○ 多重アクセス時の状況を想像してみる。 →それって、PhotoShopで大量の画像を開いてるような モンじゃね?
22.
大変でした。 ● 同時アクセスを捌けない
○ 単体アクセスは何とかなったけど、10程度の同時アクセ スに耐えられない。 ○ 多重アクセス時の状況を想像してみる。 →それって、PhotoShopで大量の画像を開いてるような モンじゃね? ○ 無理じゃん。
23.
大変でした。 ● 同時アクセスを捌けない
○ 単体アクセスは何とかなったけど、10程度の同時アクセ スに耐えられない。 ○ 多重アクセス時の状況を想像してみる。 →それって、PhotoShopで大量の画像を開いてるような モンじゃね? ○ 無理じゃん。 ○ 対策:簡易キュー的なもので、同時実行数を減らす。
24.
戦いに勝つために必要だったのは?
25.
戦いに勝つために必要だったのは? 1. 状況解析! ログ見たりプロファイラ見たりソース見たり…。
26.
戦いに勝つために必要だったのは? 1. 状況解析! ログ見たりプロファイラ見たりソース見たり…。 2.
公式ドキュメントを見直す! 見落としがあったり、コメントに重要な例があったり。
27.
戦いに勝つために必要だったのは? 1. 状況解析! ログ見たりプロファイラ見たりソース見たり…。 2.
公式ドキュメントを見直す! 見落としがあったり、コメントに重要な例があったり。 3. ソースを読む! Webに転がってる例を片っ端から見比べたり、 PECLのソースを読んだり。
28.
戦いに勝つために必要だったのは? 1. 状況解析! ログ見たりプロファイラ見たりソース見たり…。 2.
公式ドキュメントを見直す! 見落としがあったり、コメントに重要な例があったり。 3. ソースを読む! Webに転がってる例を片っ端から見比べたり、 PECLのソースを読んだり。 でも、それだけではありませんでした。
29.
正攻法でダメな時もある。
30.
正攻法でダメな時もある。 ● 色々やっても、原因がわからない時がある
○ 自分の知識不足 ○ 開示されていないソースコード
31.
正攻法でダメな時もある。 ● 色々やっても、原因がわからない時がある
○ 自分の知識不足 ○ 開示されていないソースコード ● 原因はわかっても、対策が判らない事も ○ 「これこれこういう不具合がでたよ!」 というサイトは引っかかるが、解決が乗ってない
32.
正攻法でダメな時もある。 ● 色々やっても、原因がわからない時がある
○ 自分の知識不足 ○ 開示されていないソースコード ● 原因はわかっても、対策が判らない事も ○ 「これこれこういう不具合がでたよ!」 というサイトは引っかかるが、解決が乗ってない そんな時、解決のヒントになったのは…
33.
正攻法でダメな時もある。 ● 色々やっても、原因がわからない時がある
○ 自分の知識不足 ○ 開示されていないソースコード ● 原因はわかっても、対策が判らない事も ○ 「これこれこういう不具合がでたよ!」 というサイトは引っかかるが、解決が乗ってない そんな時、解決のヒントになったのは… PHP以外の知識
34.
今回の場合… ● Objective-Cのリソース管理 ● GIFアニメを遊びで作った経験 ●
個人サイト用の素材を自力で作った経験 ● Linuxの操作経験 ● 既存ゲームの描画方法 …etc
35.
今回の場合… ● Objective-Cのリソース管理 ● GIFアニメを遊びで作った経験 ●
個人サイト用の素材を自力で作った経験 ● Linuxの操作経験 ● 既存ゲームの描画方法 …etc PHPと関係の低い知識でもヒントに!
36.
PHP、よくdisられるけど… 「また○○istaとか××istにdisられた! もう○○や××の言語なんて触んねー!」
37.
PHP、よくdisられるけど… 「また○○istaとか××istにdisられた! もう○○や××の言語なんて触んねー!」 ああ、勿体無い…。
38.
インフラとか、興味ない? 「インフラなんて勉強する必要無いですよ? 僕たち、インフラ担当じゃないんですから。 インフラはインフラの人に任せればいいんですっ て。」
39.
インフラとか、興味ない? 「インフラなんて勉強する必要無いですよ? 僕たち、インフラ担当じゃないんですから。 インフラはインフラの人に任せればいいんですっ て。」 ああ、勿体無い…。
40.
エンジニアの装備は知識です ● 一つの武器(言語)だけを鍛えていても、
いつか限界が来ます。
41.
エンジニアの装備は知識です ● 一つの武器(言語)だけを鍛えていても、
いつか限界が来ます。 ● たくさんの武器を持っていても、 防具無しでは即死の危険性があります。
42.
エンジニアの装備は知識です ● 一つの武器(言語)だけを鍛えていても、
いつか限界が来ます。 ● たくさんの武器を持っていても、 防具無しでは即死の危険性があります。 ● まったく関係の無いような道具が 思わぬところで役に立ったりします。
43.
エンジニアの装備は知識です ● 一つの武器(言語)だけを鍛えていても、
いつか限界が来ます。 ● たくさんの武器を持っていても、 防具無しでは即死の危険性があります。 ● まったく関係の無いような道具が 思わぬところで役に立ったりします。 たくさんの知識をそろえて、 PHPの抱える闇に立ち向かいましょう!
44.
ご清聴ありがとうございました!
Download now