プログラミングは仕事用のコードを自己流で書きちらかしてるだけだったのでコーティングには全く自信がなく、そのリクルーターさんからいくつか資料が送られてきたので、参考にして勉強しました。Interview、プログラミングコンテストチャレンジブック、あといくつかアルゴリズムの本(思い出したら書きます)などをやりました。Strike長山です。なくアナリストとしてエンジニアリングの組織にいました。グーグルジャパンではなくてUSの本社での採用の話。Engineering組織の下についているのでコーディング面接有り。評価項目がSWEとは異なる。日本でやってる祭りを見ていたら、見た人がビビりそうな話を書いている人がいたので、少しでも心理的なバーを下げるべく自分の話を書いてみました。効果は保証できません。前職の医療系スタートアップでアメリカに移住して10ヶ月の時に、会社都合で突然日本に帰ることになりました。いいます(GitHub)。VimとGoとSplatoonが好きです。何もやりたいことがわからなかったころ、なんとなくウェブページ作りたい的なきっかけでプログラミングに触れる。最初期のころはブックマークレット自作したりしてベンリ~って遊んでた。なくしてVimと出会い、ハマる。前回の更新は4年前らしい。世の中何が起こるか分からないものである。詳しく書けない部分はあるが、簡単に経緯をまとめようと思う。私はこうやってGoogleに入りましたGoogleに入社した方々のツイートをまとめました。簡単なWebサービスでMVCのフレームワークを使っていてビジネスロジックを書く用にコントローラとモデルの間にサービス層を追加して開発している場合、コントローラやサービスはモックを駆使しながらテストを書いていくことができます。フレームワークをバージョンアップしたい、PHPをバージョンアップしたいなどの場合に既存のモデル層に影響がないかをテストで確認したいなんてことがあります。そのような場合には、DBUnitを導入してみてもいいかもしれません。いうことで本記事ではPHPによるDBUnitの使い方を書いてみます。今phpunit/dbunitをインストールしようとすると以下の文言が出力されます。詳しくはこちらのissueに書いてありますが、どうもSebastianさんはdbunitのメンテナンスをやめるようです。それを受けてforkしたプロジェクトが出てきているようなので大丈夫かと思います。今回はSebastianさんの純正dbunitを使っています。suggestedまた、DBUnitに関する詳しい情報はマニュアルにありますのでご確認ください。https://phpunit.de/manual/6.5/ja/database.html#database.implementing-getdataset作成したサンプルプロジェクト今回は、dbunitの確認だけをしたいので、dietcakeのmessage-boardというサンプルプロジェクトを利用しました。ダウンロードして確認できます。assertions)アプリ用のDDLです。開発用DBとは違うのでboard_dbunitというテーブル名にしています。created))ENGINE=InnoDB;モデルのテストは以下です。}}カバレッジレポートはこのようになりました。これで一通りの確認ができました。細かい書き方は色々あると思いますが、とにかくやりたいことはこれでできると思います。DBUnitではPDOを利用していますが、アプリケーションではPDOを使っていなくても大丈夫ですし、基本的にはモックなどを利用する必要もありませんので手軽に導入できると思います。必要なのは、フィクスチャの準備や後始末とアサーションのときだけです。テスト対象のコード内では、なんでもお好みの方法でデータベースにアクセスできます。プロジェクト作成までの流れそれではここからプロジェクト作成までの流れをさらっとやってみます。init`をしてファイルを作成します。–dev`を実行します。`abstract`クラスを作成します。`$GLOBALS`は後ほど作成する`phpunit.xml`に定義します。}}モデルのテストクラスを作成するフィクスチャはあらかじめ用意しておくデータのことです。テストを書いていない状態ですが、フィクスチャである`getDataSet`の実装とあと処理様の`getTearDownOperation`を実装しておきます。`getDataSet`を実装しておくと、テスト実行前にDBに値を入れてくれて、`getTearDownOperation`を実装するとテスト実行後にテーブルをクリアしてくれます。}}フィクスチャを作成するDBにあらかじめ入れておくレコード情報を作成します。様々なフォーマットが使えますが`Yaml`が一番扱いやすいので`Yaml`で記述しています。00:00:00'`bootstrap.php`を作成する`dietcake`が最低限動くようにテスト用の`bootstrap.php`を作成します。CONFIG_DIR.'core.php';ここまでで、最終的なディレクトリ構成はこのようになりました。empty`phpunit.xml`を作成する場所はどこでもよいですが、プロジェクト直下に`phpunit.xml`ファイルを作成します。このファイルにはDBのアクセス情報、テスト対象、ホワイトリスト対象、bootstrapの指定などを行なっています。ホワイトリストディレクトリを指定しておくことでカバレッジレポートを確認することできるようになります。テストを作成するやり方はいくつかあると思いますが、とにかくやりたいのは、modelsの処理を実行し、アサートチェックし、あと処理で元に戻すことなので、その目的を達成することを一番に考えました。このプロジェクトはthread.phpに処理が書かれているのでそれをテストします。データ取得とデータ作成処理があるので、そのパターンにおける確認ができます。データ取得処理は、フィクスチャで入ったレコードをモデルで取得し結果をアサーションしました。$thread->created);}書き込み処理は、モデルで書き込みをした後、DBUnitに用意されているcreateQueryTableを利用してデータを取得し結果をアサーションしました。データセットを利用したりテーブル結果をアサーションするような方法もあるようですが、ここでは利用していません。'body'));}カバレッジレポートを出力する以下のコマンドでカバレッジレポートを作成することができます。coverageまとめ調べたところDBUnit自体の記事が少なかったので、実際に利用しているサービスはあんまりないのではないかと思いましたが実際のところはどうなのかはわかりません。自分も今回初めて触ってみましたが、バージョンアップ時や新しくジョインしたプロジェクトなどモデル層に不安がある場合には導入してがっつりテストを書いてしまうなどはありかなと思いました。taisa831C言語初級者がMacのコンソールで実行可能なテトリスを作ってみたC言語初級者がMacのコンソールで実行できるテトリスを作ってみました。参考にした動画はこちらです。テトリスについてはWikipediaも参考にしました。この投稿では作ってみた上で気になった箇所をピックアップして解説していきます。全ソースコードはこちらで確認できます。これについては、Youtubeにあげている方にも許可を頂いています。セガ・システム16版)の人気により浸透した。...拙い動画でお恥ずかしいですが、どうぞご利用下さい。2019年1月9日まずテトリスの枠を作るまず最初にテトリスの枠を作ります。テトリスの枠は横が12個、縦が22個のブロックでできています。下の図のようにそのブロック箇所へ1を立てて、ブロックを描画していけばよいことになります。field[FIELD_HEIGHT][FIELD_WIDTH];のフィールドに値を格納する書き方に変更すると以下のようになります。}}ミノを表示する枠が表示できたら次は、ミノを表示します。ミノは下図のように7種類ありますが、ここではテトリス棒を表示することをやってみます。枠を表示したFieldを元にし、あらたにミノを表示するdisplayBuffer領域を確保しミノを表示します。最初にミノを表示する箇所、右の黒枠箇所となります。display();}1秒に1回更新する以下のコードを使えば1秒に1回更新することができます。}}キーボード入力を取得するWindowsとは違いLinux環境ではkbhit()に相当するものが内容なのでこちらのサイトにある関数をそのまま利用しました。<stdbool.h>を追記しています。false;}aキーで左、sキーで下、dキーで右、スペースキーで回転するようになっています。display();}ミノが壁にあたるかを判定するミノが壁にあたるかを判定するには以下のような関数でチェックします。<stdbool.h>をincludeするところあたりかと思います。Macのコンソール場合はclearコマンドで描画し直しているので履歴には残ってしまいます。動画を見て写経しただけですがテトリスってこんな感じで作れるんだなと思い楽しむことができました。改善や機能追加する点はまだたくさんあるので時間をみて更新していこうと思います。installしたいというケースは以外とあるんじゃないかと思います。いう時は、composer.jsonにrepositoriesを追加して、GitLab(ここではGitLabとしています)のURLを指定するとインストールが可能になります。installが可能になります。]}では、Webフレームワークをprivateなリポジトリに公開して利用するところまでをやってみます。(今回は便宜上publicにしています)事前準備ここではサンプルのWebフレームワーク(実装なし)をプロジェクトにインストールできるようにすることにします。リポジトリは2つで、フレームワークの実態であるsample-frameworkとフレームワークの雛形となるsample-framework-appを用意しておきました。それぞれの構成は以下の通りです。viewsこのsample-framework-appのcomposer.jsonには上記でも記載した内容が書かれています。requireにtaisa831/sample-frameworkを指定し、repositoriesにGitLabのURLを指定することで探してくれるようになります。]}Webフレームワークを利用したプロジェクトを作成するこれでWebフレームワークを利用するプロジェクトを作成することができます。dev-masterこのようなコマンドでいけるのですが、packagistに登録していないので手動やります。privateなリポジトリの場合はここ(https://gitlab.com/profile/personal_access_tokens)からアクセストークンを取得し設定します。[新しいリポジトリ]これでフレームワークの雛形と実体が合わさり環境構築の完了となります。taisa831PHPライブラリをPackagistに登録する方法PHPのライブラリをPackagistに登録する方法を書いておきます。PackagistはPHPのパッケージリポジトリで、登録しておくとcomposerを使ってプロジェクトへインストールすることができます。ここではとあるプロジェクトをPackagistに登録する前提の流れで進めていきます。initを実行します。initを実行すると色々と聞かれるので順番に進めていきます。パッケージ名が聞かれます。<vendor>にはGitHubのアカウント名を指定し、<name>にはライブラリ名を記載します。ここではtaisa831/amazon-photo-formatterと記載しました。format.と書きました。その他についてもサジェストされている内容とするか必要な内容を決めて進めていきます。MIT次にこのライブラリが依存しているものがあればこの時点で指定することができます(後から手動で記載することも可能)。ここではphpunitを利用するのでrequire-devでphpunitを指定しました。installするかを聞かれるのでyesとして進めていきます。実行が終わったらプロジェクト直下にsrcとtestsディレクトリを作成しておきます。files登録するライブラリを作成するここまででプロジェクトの形ができあがったのでsrc配下にソースファイルを作成します。今回は簡単なサンプルプログラムとしています。}}unittestを作成する続いて、`src`配下に先程作成したソースのテストを書いていきます。他の依存ライブラリを利用している場合は`bootstrap.php`ファイルも作成しておきます。'/../vendor/autoload.php';これで`tests`配下で以下のコマンドを実行するとテストがいくつか実行されます。assertions)`phpunit.xml.dist`ファイルをプロジェクト直下に置いておくとプロジェクト直下で次のコマンドでも実行可能になります。pushした際にテストが実行されるようになります。vendor/bin/phpunitPackagistに登録する作成したプロジェクトを自分のGitHubへアップしたら、Packagistへ登録をします。画面へ進み、登録したいリポジトリのURLを入力すると登録することができます。GitHubとPackagistを連携する最後にGitHubにプッシュしたらPackagistも自動的に更新するように連携しておきます。連携は、GitHubリポジトリのSettings>Webhooksから行うことができます。Tokenを取得しておき、GitHubのWebhooksへ次のように登録します。Tokenライブラリを使ってプロジェクトを作成してみるここまでで一通りの登録が完了したので、実際にプロジェクトから呼び出してみます。新規でプロジェクトを作成するには以下のコマンドを実行します。プロジェクト名の後ろにdev-master(masterブランチ)やGitHubのタグを指定することでバージョンを指定することが可能です。installして利用することも可能です。WooCommerce.。