taisablog

taisa's engineer blog

Screen Shot 0030-11-20 at 14.52.19

投稿日:

-

執筆者:

関連記事

C言語初級者がMacのコンソールで実行可能なテトリスを作ってみた

C言語初級者がMacのコンソールで実行できるテトリスを作ってみました。参考にした動画はこちらです。テトリスについてはWikipediaも参考にしました。この投稿では作ってみた上で気になった箇所をピックアップして解説していきます。全ソースコードはこちらで確認できます。これについては、Youtubeにあげている方にも許可を頂いています。 テトリス – Wikipedia 日本では、 1988年にセガ・エンタープライゼス(後の セガ・インタラクティブ)から発売された アーケード版( セガ・システム16版)の人気により浸透した。当時はまだ操作法が確立されていなかったが、このシステム16版の登場以降は同作のものが日本国内における 事実上の標準となり、その影響力から特に「 セガテトリス」とよく呼ばれる( 2000年にアーケードと … 拙い動画でお恥ずかしいですが、どうぞご利用下さい。 — 館長 (@gamedokan) 2019年1月9日 まずテトリスの枠を作る まず最初にテトリスの枠を作ります。テトリスの枠は横が12個、縦が22個のブロックでできています。なので下の図のようにそのブロック箇所へ1を立てて、ブロックを描画していけばよいことになります。 単純に書くと以下のようになりますが、それを少し整理してchar field[FIELD_HEIGHT][FIELD_WIDTH];のフィールドに値を格納する書き方に変更すると以下のようになります。 # 単純に書いた方 #include <stdio.h> #include <memory.h> #define FIELD_WIDTH 12 #define FIELD_HEIGHT 22 int main() { for (int i = 0; i < FIELD_HEIGHT; i++) { for (int j = 0; j < FIELD_WIDTH; j++) { if (j == 0 || j == FIELD_WIDTH – 1 || i == FIELD_HEIGHT – 1) { printf(“■”); } else { printf(” “); } } printf(“\n”); } } # 整理した方 #include #include #define FIELD_WIDTH 12 #define FIELD_HEIGHT 22 char field[FIELD_HEIGHT][FIELD_WIDTH]; int main() { …

私はこうしてGoogleに入社/退社しました系記事まとめ

  ここ最近少しブームになっていた、「私はこうしてGoogleに入社/退社しました」系の投稿が、どれも興味深い内容だったので、あとから見返しやすいようにまとめてみました。 記事一覧 Google退職します|eqsan|note2019/3/15が最終出社日でした。インターン期間も含めると4年ちょっと勤めたことになります。 ちょうど昇進してプロジェクトも一区切りついたタイミングで他にすごくやりたいことができたので転職という形です。 素晴らしい環境なのに情報が少なくて、入ると良さそうなのに敬遠している人を何度か見たので、この記事が参考になれば幸いです。辞める人が言うのも変な話ですが。 … 私はこうやってGoogleに入った (ソフトウェアエンジニア、中途採用編)( 人にお願いするだけじゃなくて自分も貢献しろよということで昔話を書いてみました。 kazawa フォーマット に従っています。) 学生時代 … 私はこうやって(12年前) Google に入った書け、という天の声 が聞こえたので書いてます。 私は修士まで物理学を専攻していて、情報系の勉強は特にしていませんでした。ただ、実験結果をまとめるために awk を使ったり(256倍本とか知っています?)、シミュレーションをするために Fortran 書いたり(関数名の長さに制限ありました)はしていました。 … 私はこうして Google に入った (SWE・新卒編) – ふしみのブログ最近、 Google や大学が開催しているキャリアイベントなどに参加する機会がおおかったので、そこで話したことをまとめて書いてみました。2017年4月入社なので、現在2年目が終わろうとしているところです。 なるべく汎用的に、具体的な対策を中心に書いたので、他の 外資 系企業の採用面接にも役立つかもしれません。参考にしていただければ幸いです。 こうしてGoogleに入社した(kumagi編) – Software Transactional MemoTL;DR AtCoder やろうぜ Google の(僕から見て)偉い人が立て続けにブログを書いており ここ数件の僕のブログへの反響を読んでも「Googlerだから特別」みたいな意見が散見され、入社へのハードルが変に高く見られてしまっている気がするので、僕が Google に入社する準備として取り組んでいた事とそのレベルを紹介する。程度の低さに安心して欲しい。 英語 … こうしてGoogleに落ちた – Easy to typeTL;DR Leetcodeをもっとやる必要がありました Googleの社員が選考過程についてブログを書いています。ちょっと前にNTTブームを引き起こした id:kumagi さんとか。 ところで、僕も Google … 私はこうやってGoogleに入った(新卒ソフトウェアエンジニア) – n-yoda’s blog長い記事を書く人が多いので短くて簡潔なものをと思って書きました、が、思ったより長くなりました。 小さい頃からやっていたところが強みです。周りに聞ける人が一人もいなかったので ググる のが得意。大学で習う以上の強そうな知識とかはあまり無いです。 研究室の先輩方がホームページに載せているものを参考にして書きました。 何もしませんでしたが、何度かやった TopCoder は多分役に立ちました。 TOEFL ITP 547/677点。 私はこうやってGoogleに入りました(Reiko編)プログラミングスキルは? プログラミングは仕事用のコードを自己流で書きちらかしてるだけだったのでコーティングには全く自信がなく、そのリクルーターさんからいくつか資料が送られてきたので、参考にして勉強しました。Cracking the Coding Interview、プログラミングコンテストチャレンジブック、あといくつかアルゴリズムの本(思い出したら書きます)などをやりました。 … Google に入るまでの話Google に入るまでの話. GitHub Gist: instantly share code, notes, and snippets. いかにしてわたしは Google に入社し、そして退職したか – The Decisive Strike長山です。2019 …

no image

AWS LightsailでVirtual Hostするメモ

AWS Lightsailにwordpressを移行して、LightsailでVirtual Hostを利用したいと思ったけど、bitnami、Apacheということでどこになにがあるかわからず調べたのでメモ。 bitnamiのApache設定 /opt/bitnami/apache2/conf/bitnami/bitnami.conf この中で bitnami-apps-vhost.conf が Include されている Include “/opt/bitnami/apps/wordpress/conf/httpd-vhosts.conf” /opt/bitnami/apache2/conf/bitnami/bitnami-apps-vhosts.conf には wordpress の httpd-vhosts.conf が Include されている Include “/opt/bitnami/apps/wordpress/conf/httpd-vhosts.conf” wordpressのprefixにはDocumentRootが記述されている Include “/opt/bitnami/apps/wordpress/conf/httpd-vhosts.conf” /opt/bitnami/apps/wordpress/htdocs/sampleのようにhtdocsの配下にディレクトリを作成してindex.htmlを置き、sample.taisablog.com ドメインにDNS設定を追加してあげればとりあえず、VirtualHostが追加できる <VirtualHost *:80> ServerName sample.taisablog.com DocumentRoot “/opt/bitnami/apps/wordpress/htdocs/sample” Include “/opt/bitnami/apps/wordpress/conf/httpd-app.conf” </VirtualHost> Apache再起動 sudo /opt/bitnami/ctlscript.sh restart apache

no image

2017年の抱負

2017年になって1Qが終わろうとしているけど、年末に考えた2017年の抱負を書こうと思う。 2017年の抱負 いろんなことはできないので3つ+サブ目標で考えた。 生産性ビックデータビジネス・インテリジェンスサブ目標 フロントエンド 英語 生産性 これまでも開発の生産性を意識した活動をしてきたが、全員の開発効率アップ、品質アップのような守備的な活動が多かった。けど今年はスクラム体制にして攻撃的な面も加えていきたいと思う。 去年までの振り返り 去年までは2人1組のような小さなチームで開発し、できたらリリースするというサイクルで開発していたが、以下の問題が細かく積み重なってきていた。(サービスの規模がそういった状況に陥る状況にまで成長したとも言える。) マネージャーの管理コストが高い要件定義して開発に仕事を振る側の負担が大きい開発者が指示待ちになる開発した機能が属人的になる開発メンバーが他のメンバーが何をしているか把握できない(チーム感がない)開発・営業・運用で足並みを揃えるのが難しい これらの問題を一気に解決する為に2017年からはスクラム体制で開発を進めることした。 スクラムのチーム構成 最初のスクラムチームの構成は以下の7人体制 プロダクトオーナースクラムマスター(自分)開発チーム デザイナー兼コーダー 中堅エンジニア 2~3年目のベトナムメンバー(2人) 新卒エンジニア スクラムを始めるあたり読んだ資料と書籍 Wikipedia まず最初に見たのがWikipedia。スクラム自体はある程度決まった型があるので、ここを見るだけでも大体の流れを確認することができた。また、スクラムガイドがリンクされているので合わせて読んだ(こちらも17ページ程)。 SCRUM BOOT CAMP THE BOOK 次に読んだのがこちらSCRUM BOOT CAMP THE BOOKこの本はスクラムについての概要はわかったけど実際どんな風に進めたらよいかが分からないという方におすすめ。実際の流れを漫画を交えて説明してるので読みやすいし一連のスクラムの流れがわかる。個人的にはスクラムガイドとこの本を読めばスクラムを開始できると思う。 スクラム実践入門 他の書籍も一応見ておこうと思って呼んだのがこちらスクラム実践入門 ── 成果を生み出すアジャイルな開発プロセス (WEB+DB PRESS plus)この本ではいくつかの企業の事例が紹介されている。スクラムを始めるきっかけなどが書かれているので事例を見てみたいという方には良いと思う。 Joy,Inc. ジョイ・インク 役職も部署もない全員主役のマネジメント この本は直接スクラムには関係ないけど、おもしろい取り組みをしていて、開発の生産性をあげたいという意味で参考になっておもしろかった。スクラムを始めるにあたって読んでおいてよかったなという一冊。 ビックデータ 2つ目の目標はビックデータを本格的に扱うこと。数年前にバズワードになったけど、本格的にあたり前のように活用されるのがこれからだと思う。データがたまり、インフラが整いデータを安価で扱いやすい状況になってきている。ビックデータといっても様々な文脈があるが、個人的な活動の目標としては「GoogleBigQuery」、「AWS」を触りつつ手元にあるデータをいろんな形でこねくり回せる状態にする。というのを目安に進めていく。 ビジネス・インテリジェンス 3つ目もビックデータの文脈だが、データから有効な示唆出しをすることが一つのゴールになるのでそこを見失わないようにしたい。いろいろ触って「データサイエンティスト」の雰囲気がなんとなくつかめてきた。という状態にしたい。 サブ目標 いくつもやりたいことをこなすなんてことは自分にはできない。けどサブとしてでもやりたいと思ってるのが以下の2点。 フロントエンド jQuery脱却して一気にモダン化させたい(楽に開発をしたい) 英語 英語の勉強をするというよりは英語を使う環境に身をおける状態にする英語の技術系podcastを聞く 今年の抱負のまとめ 生産性を最大化しつつデータをこねくり回せるようにするできればフロントを最適化して英語も多少はコミュニケーションがとれるようにする

Go言語 ORMライブラリ GORMの使い方

Go言語 ORMライブラリのGORMの簡単な使い方を確認してみました。また、公式ドキュメントにしっかりと使い方が書いてありますので基本的にはそちらを参考にしてもらえればと思います(すべてではないですが日本語訳もされています)。その上でクイックスタートを元に簡単な使い方と挙動を確認してみます。 http://gorm.io/ja_JP/docs/ インストール 以下のコマンドでインストールできます。 go get -u github.com/jinzhu/gorm クイックスタート 公式ドキュメントにあるクイックスタートを実行してみました。DBだけsqliteではなくmysqlに変更しています。 package main import ( “github.com/jinzhu/gorm” // _ “github.com/jinzhu/gorm/dialects/sqlite” _ “github.com/jinzhu/gorm/dialects/mysql” ) type Product struct { gorm.Model Code string Price uint } func main() { // db, err := gorm.Open(“sqlite3”, “test.db”) db, err := gorm.Open(“mysql”, “gorm:gorm@/sandbox?charset=utf8mb4&parseTime=True&loc=Local”) if err != nil { panic(“データベースへの接続に失敗しました”) } defer db.Close() // スキーマのマイグレーション db.AutoMigrate(&Product{}) // Create db.Create(&Product{Code: “L1212”, Price: 1000}) // Read var product Product db.First(&product, 1) // idが1の製品を探します db.First(&product, “code = ?”, “L1212”) // codeがL1212の製品を探します // Update – 製品価格を2,000に更新します db.Model(&product).Update(“Price”, 2000) // Delete – 製品を削除します db.Delete(&product) } 実行してみるとproductsテーブルが作成され、以下のカラムとレコードができました。structでは宣言していない、id、created_at、updated_at、deleted_atカラムができ、deleted_atに日付が入りソフトデリートが行われています。 go run main.go gorm.Model gorm.Modelを宣言するとid、created_at、updated_at、deleted_atカラムが自動的に注入されます。また,deleted_atカラムがある場合、Deleteはソフトデリートになります。 参考: http://gorm.io/ja_JP/docs/conventions.html …