TwitterFacebookRSS Feed

Anti-Pattern Inc. Engineering Blog

Anti-Pattern Inc.(株式会社アンチパターン)のエンジニアブログです。

Go

Goでsliceの一部を抽出する時の注意点

sliceの構造 Goのsliceは 配列へのポインタ 長さ 容量 を持った構造体として定義されています。 go/slice.go at go1.18 · golang/goThe Go programming language. Contribute to golang/go development by creating an account on GitHub.GitHubgolang [https://github.com/golang/go/blob/go1.18/src/runtime/slice.go#L15-L19]type slice struct { array unsafe.Pointer len int cap int } sliceの構造については以下の記事が分かりやすかったです。 実装して理解するスライス #golang - Qiitaはじめに この記事はGoアドベントカレンダーの1日目の記事です。 スライスの実態 runtimeのコードをみるとGoのスライスは以下のように定義されています。 type slice struct { arr
Yu Takahashi
Yu Takahashi
4 min read
visual studio code, GitHub, posse

Visual Studio Code de GitHub for POSSE

今までGitHubはCLIで使っていて、まずはコマンドを覚えましょう!ってお話をしてたのですが、Visual Studio Codeからぽちぽちやってみたら思った以上に便利だったので、CLIあまり使わなくなっちゃいました。 Gitわかりません、コマンドわかりませんというのもあれですので、Visual Studio Codeでしか使えないという状態は良くないと思ってます。Git使えるPOSSE生向けに、便利機能のご紹介という前提で読んでいただければと思ってます。 現在のブランチを確認 左下の赤枠部分に書いてあります -------------------------------------------------------------------------------- ブランチをチェックアウト 左下の赤枠部分をクリック、上の赤枠部分にブランチが表示されます 表示されているブランチを選択するか、テキストボックスに対象のブランチを入力すると検索できます リモートのブランチが表示されないんですけど!という場合は、 フェッチしてから確認すると表示されると思います ------
yuichi.kotani
yuichi.kotani
3 min read
caddy

Caddy 2を触ってみる

Caddyとは Caddy 2 - The Ultimate Server with Automatic HTTPSCaddy is a powerful, enterprise-ready, open source web server with automatic HTTPS written in GoThe Ultimate Server with Automatic HTTPSCaddy Web Server [https://caddyserver.com/] HTTPSを簡単に自動的に使えるようにしてくれる唯一のweb server (2022/05/03) 証明書を自動更新してくれる機能があり、defaultではLet's Encryptを使用。 A(AAAA)レコードを設定したあとに、Caddyfileに下記を書いておけば、あとはよろしくやってくれるというすぐれもの。 ※ちなみにGo製 example.com respond "Hello, kohe!" Amazon EC2 (Amazon Linux2) & Let's Encrypt で試してみた
Kohei Kondo
Kohei Kondo
2 min read

TypeScript: Array.prototype.mapでundefinedを取り除いた配列を作成する

こんにちは、いわむらです 今回はTypeScriptを使ってundefinedが含まれない配列を作成する方法をご紹介しようと思います 今回はtypescript v4.6.2で動作検証を進めるのでもし上手く動かない場合はバージョンを確認していただきたいです u ndefinedが含まれない配列を作成したいにいたった理由なんですが、あるオブジェクトの特定プロパティのみの配列をループ処理を使って作成したい時に上手くいかずはまってました サンプルのためにあるオブジェクトを名前プロパティが任意のユーザー型とします type User = { /** * * @type {number} * @memberof User */ id: number; /** * * @type {string} * @memberof User */ name?: string; } ユーザーのリストを作成して名前を抽出した配列を作ろうと思います まずはユーザーリストを作ります c
Jun Iwamura
Jun Iwamura
1 min read

MySQLでテーブルのカラムのNULLと空文字を同等に扱いたい場合の書き方

NULL許可しているカラムに空文字列が設定されており、 作成したSQLがうまく動いてなかったのでゴニョゴニョやってたけど、 ちょっと調べてみたらいい感じのやつ見つけたので忘れないよう残しておきます。 IFNULL(引数1,引数2) と NULLIF(引数1,引数2) という関数がありました。 IFNULLについては、引数1がNULLだった場合、引数2の内容を返す仕様となっています。 SELECT IFNULL('hoge', 'hoge hoge') hoge, IFNULL('', 'hoge hoge') 空文字列, IFNULL(NULL, 'hoge hoge') NULL; 実行すると以下結果となります。 +------+--------------+-----------+ | hoge | 空文字列 |  NULL | +------+--------------+-----------+ | hoge | | hoge hoge | +------+--------------+-----------+
Hiroki Kooriyama
Hiroki Kooriyama
1 min read

Amazon QuickSightと仲良くなるためのTips

こんにちは。小笹です。 最近は、Amazon QuickSightを使って事業の分析を行って経営に活かそうと頑張っています。 QuickSightとはAmazon Web Servicesが提供しているビジネスインテリジェンスツールです。詳しくは公式サイトをご覧くださいませ。 https://aws.amazon.com/jp/quicksight/ 結論 Amazon QuickSightと仲良くなるにはデータセットの「計算フィールド」を上手く使うのが大事。 やりたいこと AWSエンジニア特化型のマッチングプラットフォーム「engineed」では弊社独自の実技試験を提供させていただいています。その実技試験結果をもとに利用企業はユーザーに対してスカウトを送ることができるので、よりその人に合った良い機会をエンジニアに届けられると思っています。 その中で受験済みのユーザーと未受験のユーザーで、どういう差異が生まれているのかを分析したい気持ちになりました。(ex.スカウトの受信率など。) なのでAmazon QuickSightでも受験しているかどうかのフラグを見たい気持ちになりま
YukiOzasa
YukiOzasa
1 min read
GraphQL, Laravel, JWT, CORS

GraphQL と Laravel で JWT を使おうとしたらハマったお話

何時間もハマったので共有したくてメモしました。あとから考えると、CORSを全然理解できていなかったのがハマった原因でした。 理解している自信ないけどまあ開発できてるし、、、みたいなものはちゃんと勉強しておかないですね。 利用言語とオリジンはこんな感じです フロント 利用言語:Vue(Nuxt)、GraphQL オリジン:https://xxx.posse-ap.com/ バックエンド 利用言語:PHP(Laravel) オリジン:https://api.xxx.posse-ap.com/ フロントとバックエンドのオリジンが異なるので、CORSを意識した実装が必要になりますね JWTのトークン取得からローカルストレージへの保存は問題なく実装できて、 ブラウザのローカルストレージに保管してあるJWTを、ヘッダーに詰めてバックエンドにリクエスト投げるところで問題が出ました。 実装は以下のようにしました const authMiddleware = new ApolloLink((operation, forward) => { // add the authorizatio
yuichi.kotani
yuichi.kotani
2 min read

guregu/dynamoのOneとOneWithContextの違い

こんにちは、Anti-Pattern Inc.の塚本です。 Amazon DynamoDBを使った開発を最近しております。 O/Rマッパーにguregu/dynamoを使っているのですが、初めてなので非常に困惑してます! そして、"One"と"OneWithContext"の違いについて調べた時のメモです いまいちすっきりしませんしたが、メモとして残しておこうと思います! それぞれのサンプルです。違いはcontextを渡すかどうか * One func (s *sampleRepository) Get(ctx context.Context) (*domain.User, error) { var result domain.User if err := s.conn.Table("user").Get("id", 1).One(&result); err != nil { return nil, handleError(err) } return &result, nil } * OneWithContext func (s *sampleRepo
takeshi tsukamoto
takeshi tsukamoto
1 min read
visual studio code, plugin, posse

Visual Studio Codeのおすすめ拡張機能 for POSSE

POSSE(学生プログラミングコミュニティ)の生徒から、おすすめの拡張機能教えて!と言われることがあるので、まとめてみました。基本こちらの拡張機能をインストールしてみてください!別の拡張機能使っててソッチのほうがいいんだけど。。。という場合は是非教えて下さい!都度更新してPOSSE標準を作って行きたいです。 -------------------------------------------------------------------------------- Code Spell Checker 英単語のスペルチェックをしてくれて、おかしいところに波線引いてくれます const firstVallue = 25; のようにValueのスペルを間違うなんてことがなくなります 残念ながら日本語はチェックしてくれないようです -------------------------------------------------------------------------------- Docker コンテナの起動・停止や、イメージ、ボリュームなどを管理出来ます コマン
yuichi.kotani
yuichi.kotani
3 min read

ユーザー体験をより良くするためにGoogle Chrome DevToolsで通信を制限して検証する

こんにちは、いわむらです 今回はGoogle ChromeのDevToolsで通信を制限することができるの知って最近よく使うようになったのでそちらをご紹介できればなと思います 最初に4G通信とwifiを利用した通信にどれぐらいの差があるかを知らなかったので本題のご紹介前に載せておきます 上り 下り レイテンシ wifi 270Mbps 280Mbps 15ms 4G 20Mbps 41Mbps 1000ms netflix提供の回線の速度テスト [https://fast.com/ja/] できるサイト使って、自宅のwifiと、スマホで帯域を測ってみました 実際にGoogle ChromeのDevToolsを使ってnetworkタブのthrottleを変更することで数値としてどれぐらい差が出て表示されるか計測してみようと思います 今回は弊社のコーポレートサイト [https://anti-pattern.co.jp/]を利用して確認します 特に何も絞ることなく表示すると約600msで表示されました(disable cacheはチェックしました) では4Gを想定した状態で
Jun Iwamura
Jun Iwamura
1 min read

Fetch API を使って画像データなどを取得してダウンロードする

こんにちは、いわむらです もうすぐIEのサポートを終了するということもあり色々と利用できるものが増えるなと思っています その中でも使う頻度が増えそうなFetchを利用して画像データを取得しそれをダウンロードする処理をこの間試しに書いたのでそれを今回書こうかなと思います 今回利用するFetchについてはMDNに詳細が書いてあるのでそちらを確認してもらえればと思います Fetch の使用 - Web API | MDNFetch API を利用すると、リクエストやレスポンスといった HTTP のパイプラインを構成する要素を操作できるようになります。また fetch() メソッドを利用することで、非同期のネットワーク通信を簡単にわかりやすく記述できるようになります。MDN [https://developer.mozilla.org/ja/docs/Web/API/Fetch_API/Using_Fetch] 自分の方で作った処理がこんな感じになります // TypeScript const sampleUrl = `https://source.unsplash.com/EZp
Jun Iwamura
Jun Iwamura
1 min read
Go

Goのinterfaceのnilについて

interfaceのnilチェックをしているのにメソッド呼び出し時にpanicが起きることがあり、その時に調べたことのメモです。 該当コードを簡略化して書くと以下のような感じです。 package main import "fmt" type Message interface { Str() string } var _ Message = &Text{} type Text struct { text string } func (t *Text) Str() string { return t.text } func NewText(str string) *Text { if str == "" { return nil } return &Text{ text: str, } } NewText() は引数が空文字の場合にnilを返します。 これに対して、以下のような Print() 関数を用意して実行すると、 func Print(m Message) { if m != nil { fmt.Println(m.Str
Yu Takahashi
Yu Takahashi
1 min read