かまてく ブログ

今日の努力は、明日の経験! - Kamakura Shinsho Engineer Blog

PHPでのGC

今回は、GCについて調べてみました。

テストコードはこれ。 test_gc.php

<?php
gc_enable();    // GC 有効
$before_memory = memory_get_usage();
$a = array();
$after_memory = memory_get_usage();
$used_memory = $after_memory-$before_memory;
echo "使用メモリ before[{$before_memory}] after[{$after_memory}]:after - before = {$used_memory}\n";
gc_collect_cycles();
$after_gc_memory = memory_get_usage();
$used_gc_memory = $after_gc_memory-$before_memory;
echo "GC後メモリ before[{$before_memory}] after[{$after_gc_memory}]:after - before = {$used_gc_memory}\n";

$before_memory = memory_get_usage();
for( $i = 0;$i < 100;$i++ ){
    $a[] = "";
}
$after_memory = memory_get_usage();
$used_memory = $after_memory-$before_memory;
echo "使用メモリ before[{$before_memory}] after[{$after_memory}]:after - before = {$used_memory}\n";
gc_collect_cycles();
$after_gc_memory = memory_get_usage();
$used_gc_memory = $after_gc_memory-$before_memory;
echo "GC後メモリ before[{$before_memory}] after[{$after_gc_memory}]:after - before = {$used_gc_memory}\n";

実行結果がこちらです。

$ php -v
PHP 5.3.29 (cli) (built: May 12 2015 22:42:19)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies

$ php test_gc.php
使用メモリ before[631008] after[631472]:after - before = 464
GC後メモリ before[631008] after[631808]:after - before = 800
使用メモリ before[632112] after[650024]:after - before = 17912
GC後メモリ before[632112] after[650024]:after - before = 17912
$ php -v
PHP 7.1.23 (cli) (built: Feb 22 2019 22:19:32) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

$ php test_gc.php vi test_gc.php
使用メモリ before[357616] after[357616]:after - before = 0
GC後メモリ before[357616] after[357648]:after - before = 32
使用メモリ before[357648] after[365896]:after - before = 8248
GC後メモリ before[357648] after[365896]:after - before = 8248

場合によってGCを実行することでメモリ使用が増える場合があるようです。
不思議だ。

「ココ・シャネルの言葉」を読んで気付いたこと

ちょっとした隙間に気軽に読める本を探していたところ、巡り合った本「ココ・シャネルの言葉」についてご紹介いたします。

ラグジュアリーブランドCHANELの創業者、ココ・シャネルの言葉を集めた本なのですが、その名言の中からいくつかご紹介させていただきます。

続きを読む

htmlタグのネストで迷った時に

コーディングの際に「〇〇タグの中に△△タグを入れてもいいんだっけ?」といった疑問を持つことがあります。 コーディング初心者の方はもちろん、長くコーディングに携わっている方でも、html5からルール変更されている部分があり、迷うこともあるかと思います。

そのような時の判断の仕方をご紹介します。

基本概念として・・・

以前はブロックレベル要素とインライン要素という概念がありました。 インライン要素の中にブロック要素を入れてはいけないということになっていましたが、html5以降はその概念が廃止され、コンテンツモデルとカテゴリーという概念が導入されています。

※因みに、CSSのdisplayプロパティに存在するblockやinlineといった値は従来通りです。

続きを読む

スプレッドシートでお手製のガントチャートを作る

スプレッドシートガントチャートを作るとすれば高機能なProjectSheet planningが選択しに入ると思うが、担当者を入れたり休日に対応させるにはライセンスを購入する必要がある(2019/6時点)

日本の祝日、担当者にも対応したガントチャートを作ったので作成方法を公開します。(アドオンにするまででもないのでしてない)

機能

  • 日付を入れると自動でセルに色がつく
  • あらかじめ設定した担当者の色ごと色が分かれる
  • 休日をあらかじめ設定しておくとその曜日の列がグレーアウトする

出来上がり↓ f:id:yubele:20190628210841p:plain

続きを読む

HTML5プロフェッショナル認定試験に挑戦してみる その1

なぜかjavascriptを勉強してほしいと周りに言われることが増えてきました。
業務で使っているうえではそこまで悩まされることは無いのですが、もっと踏み込んでほしい。プロフェッショナルになってほしいということですね。
というわけでやみくもに勉強するのもむなしいので、資格試験とかを探してみます。

javascript 試験」検索

gyazo.com

HTML5プロフェッショナル認定試験レベル2 サンプル問題
https://html5exam.jp/measures/lv2_1.html

これは勉強のモチベーションを維持するにはちょうどいいかも!! 「HTML5プロフェッショナル認定試験」に合格することを目標に置いてみます。

HTML5プロフェッショナル認定試験ってなに?

日時・場所

自由選択

受験料

¥15,000(税別)

申込方法

web予約と電話予約を以下から行う https://html5exam.jp/register/

回答方法

選択方式(たまにキーボード入力)

合格ライン

70%

出題範囲

レベル1

1.1 Webの基礎知識
1.1.1 HTTP, HTTPSプロトコル(重要度:8)
1.1.2 HTMLの書式(重要度:9)
1.1.3 Web関連技術の概要(重要度:6)
1.2 CSS
1.2.1 スタイルシートの基本(重要度:7)
1.2.2 CSSデザイン(重要度:9)
1.2.3 カスケード(優先順位)(重要度:2)
1.3 要素
1.3.1 要素と属性の意味(セマンティクス)(重要度:10)
1.3.2 メディア要素(重要度:6)
1.3.3 インタラクティブ要素(重要度:7)
1.4 レスポンシブWebデザイン
1.4.1 マルチデバイス対応ページの作成(重要度:4)
1.4.2 メディアクエリ(重要度:5)
1.4.3 スマートフォンサイト最適化(重要度:3)
1.5 APIの基礎知識
1.5.1 マルチメディア・グラフィックス系API概要(重要度:5)
1.5.2 デバイスアクセス系API概要(重要度:4)
1.5.3 オフライン・ストレージ系API概要(重要度:8)
1.5.4 通信系API概要(重要度:3)

レベル2

2.1 JavaScript
2.1.1 JavaScript文法(重要度:10)
2.2 WebブラウザにおけるJavaScript API
2.2.1 イベント(重要度:8)
2.2.2 ドキュメントオブジェクト/DOM(重要度:6)
2.2.3 ウィンドウオブジェクト(重要度:8)
2.2.4 Selectors API(重要度:7)
2.2.5 History API(重要度:7)
2.2.6 テスト・デバッグ(重要度:6)
2.3 グラフィックス・アニメーション
2.3.1 Canvas(2D)(重要度:8)
2.3.2 SVG(重要度:2)
2.3.3 Timing control for script-based animations(重要度:2)
2.4 マルチメディア
2.4.1 メディア要素のAPI(重要度:5)
2.5 ストレージ
2.5.1 Web Storage(重要度:7)
2.5.2 Indexed Database API(重要度:5)
2.5.3 File API(重要度:5)
2.5.4 バイナリーデータ(重要度:4)
2.6 通信
2.6.1 Web Socket(重要度:5)
2.6.2 XMLHttpRequest(重要度:5)
2.6.3 Server-Sent Events(重要度:1)
2.7 デバイスアクセス
2.7.1 Geolocation API(重要度:5)
2.7.2 DeviceOrientation Event(重要度:1)
2.8 パフォーマンスとオフライン
2.8.1 Web Wokers(重要度:5)
2.8.2 High Resolution Time(重要度:2)
2.8.3 オフラインアプリケーションAPI(重要度:3)
2.8.4 Page Visibility(重要度:2)
2.8.5 Navigation Timing(重要度:1)
2.9 セキュリティモデル
2.9.1 クロスオリジン制約とCORS(重要度:4)
2.9.2 セキュリティモデルとSSLの関係(重要度:4)

学習方法

HTML5道場で基礎を学ぶ https://html5exam.jp/measures/dojo.html

サンプル問題にチャレンジ https://html5exam.jp/measures/sample.html

書籍を使用する https://html5exam.jp/measures/textbook.html

学習方針を決めていこう

ひとまず自分がどれくらいできるのか、どれくらいできないのかを測るためにサンプル問題にチャレンジしてみます。

レベル1

https://html5exam.jp/measures/sample.html
1.1 Webの基礎知識 正答率 48%
1.2 css
もう見たくないくらいにボロボロになったのでこれからまじめに勉強していきたいと思います。
htmlやcssだけでもなかなか難しそうです(ひぃ

(続く)

Webデザインにおけるアイコンの考え方

近年、CDN(Content Delivery Network)で使用できるアイコンフォントが活用されています。

わざわざ自分でアイコンを制作して、自分のサーバに置かなくても、Font Awesome(フォントオーサム)やGoogle Material Iconsのようにhead内にコードを挿入し、表示したいところに呼び出せばたくさんの種類のアイコンを簡単に表示させることができます。サイト高速化の上でも大変便利です。

f:id:iino-t:20190628183118p:plain
Font Awesome アイコン例。全体的に丸みを帯びていて可愛らしいアイコンテイスト。

f:id:iino-t:20190628183143p:plain
Google Material Icons 例。直感的にわかりやすく、親しみのあるものが多い。

デザインにおけるアイコンも情報の一つです。たくさんあるアイコンをどういった場面で使うのが適切なのか。

また、たくさん用意されているとはいえ、アイコンを自作する場面もあったりはします。

今回は、アイコンの適切な配置、アイコンの制作の際に考えなくてはならないことを解説します。

続きを読む

普段から心がけていること

人生いろいろ経験しておくと、メンタルが鍛えられます。

エンジニアなら誰しもが通る道、ではないと思いますが 普段から心がけていることを書こうと思います。 過去経験した(やっちまった)出来事をお伝えしたいと思います。

<やらかしたリストの特にやばいやつ、一部> ・リソース管理していない時代、ソースを消した。  序の口です。

・本番のデータベースのテーブルを間違ってDROPした。  あ! という声がフロアに響きます。

・/から削除。  自分の時を止められます。ザ・ワールドですね。

最後なんか、こいつあぁやばいやつ、としか言えませんね。

消せない過去ですし、この経験があるからこそ、二度と同じ過ちはしない、と、心に誓い今に至ります。 (誓っているなら、似たようなことを起こすなとかのツッコミは受け付けない)

「サーせん!」「てへぺろっ」で済まないことも経験しておくと、多少のことでは動じない胆力が養われます。 何より、本当の意味で対人(上司、部下、後輩、先輩)とのコミュニケーションのスキルが試されます。

やらかした後、顧客との定例会議や緊急呼び出しの時の非常に気まずい雰囲気(普段いない上級の人が同席、凄い圧です、空気が違います)。 やらかしたことを申し訳なさそうに説明しながら、大変ご迷惑をおかけしました、申し訳ございません、多大な被害云々を 繰り返し話しながら、相手の顔を伺いつつ、話すスピードを調節しながら、きっちり時間内に終わらせ 次回までの宿題を残さないようなトーク力と、先方に用意した始末書(先方がさらに上に出すためのもの)を用意する必要があります。

今まで慕ってくれていた後輩の蔑んだ涼しい目。>だんだん冷たい目になっていく。 (行き)だいじょうぶっすよ〜! > (帰り)・・・。

上司や先輩からの、叱咤→叱咤→叱咤→叱責→激励→叱責→叱責…も、通常味わうことが出来ません。 (裏でぼろくそに言われているのが良くわかります)

一度経験しておくと、脳みそに刻まれて、夜うなされて、ずっと聞こえる心臓の動悸音は、今でも心に深く刻まれて忘れることが出来ません。 正直、こんなことは経験しないに越したことはありませんが、やっちまったことを踏まえて 気を付けていることを1つ書こうと思います。

rm, drop等の削除系のコマンドを使うときは一呼吸する。 コマンドをコピー&ペーストするときは、ターミナルに張り付ける前にメモ帳とかに張って確認する。 rootユーザーになっていないか?そもそも実行する環境に間違いがないか?は必須の確認です。

なぜかコピーしたはずのコマンドではなくrmコマンドが動いたときは、3秒フリーズした後CTRL+Cを連打するも時はすでに遅しです。 止まってほしいのは自分でなく実行されたコマンドのはずです。

道路を渡るときに、子供に右と左を確認するんだよ言うように、頭の中で声をかけている日々です。

駄文御免。

鎌倉新書では正社員を積極採用しています!

(WEBデザイナー)デザインからコンセプト設計まで■賞与実績4ヶ月分■

仕事内容 【仕事内容】 ■ポータルサイト(お墓・葬儀・仏壇)のWebサイト構築のためのWebデザインの設計からコーディング業務まで担って頂きます。 特に事業側のコンセプトを理解しながら、LPやサイトのデザイン設計を提案できる方を求めています。 【提供できる価値・経験】 ■細かく数字を見て、サービスをグロースさせていく経験 1週間単位でスプリントを組んで、数多くの機能をリリースさせていく開発プロセスを導入しています。 数多くのトライ&エラーを行い、きっちり効果を分析していくことで、サービスを着実に成長させるプロセスが身につきます。 また、事業側のWebディレクターとも密にコミュニケーションを取りながら、事業会社ならではの一体感を持ったクリエイティブワークを実践しています。 ■今後大きく成長するマーケットにおけるサービス開発に携わることができる経験 世界一の高齢化社会である日本においてライフエンディング業界は大きなポテンシャルを持っています。 その業界に必要なサービスを提供することで、大きなユーザーの需要を満たすサービスを提供するやりがいと経験を得ることができます。 また、今の日本社会で必要とされているサービスを提供しているという社会貢献も大きなやりがいとして持つことができます。 【デザインの特徴】 ■企画構想段階から関わり、ユーザー視点に立ったUIの設計、ビジュアルデザイン ■色彩学、構成学、視覚生理学などの知識を生かしたデザイン ■プロジェクトの成功に貢献するデザイン(目的を本質的に達成するデザイン) ■問題点や課題、目的をしっかり理解し、解決するデザイン 応募資格 【必須(MUST)】 ■Webサービスのデザイン・コーディング経験 ■WebサービスやスマートフォンアプリのUI・情報設計の経験 ■Photoshop、Illustratorなどの画像処理ソフトを使用したビジュアルデザイン業務 【歓迎(WANT)】 ■情報の可視化 ■部分遷移、画面遷移を含むプロトタイプ構築経験 ■デザインコンセプトの言語化 ■ユーザー体験の設計業務 ■デザインのトーン&マナー設計 ■プロダクト改善経験 ▼求める人物像 ・自発的に施策を立案・実行できるマインドを持つ方 ・成長環境の中で自分を試してみたい方 ・数字の分析に強い方 ・コミュニケーション能力 ・課題発見力、解決力 続きを見る