Yuri’s Tech Note

技術系アウトプット

Gophercises vol.2 url redirect (YAML / middleware / http-headers)

Go

つくったもの Webリクエストのパスを見て、URL短縮名のようにユーザーを新しいページにリダイレクトするかどうかを判断するhttp.Handlergithub.com 使用したパッケージ "gopkg.in/yaml.v2" yaml.v2 - gopkg.in/yaml.v2YAML: 構造化されたデータを表現するの…

React Native for Web / dom 関連の記事多読まとめ

記事一覧 React NativeをWebに持ってくることの意味 react-native-web と react-native-dom GitHub - vincentriemer/react-native-dom GitHub - necolas/react-native-web react-native-dom の何がすごいのか Web最新技術がてんこ盛りのreact-native-domから…

Gophercises vol.1 console quiz (csv / flag / Scanf)

Go

つくったもの CSVファイルから読み取ったクイズの問題データを整形して出力し、 コマンド上からユーザーの入力を受け取り正解数をカウントする。 github.com 使用したパッケージ "encoding/csv" csv - The Go Programming Language"flag" flag - The Go Prog…

A Tour of Go vol.8 (Goroutines)

Go

Goroutines ・軽量なスレッド ・goキーワードに続く関数を新しいスレッド(=goroutine)で実行する ・goroutineが実行されていてもmain()が終了するとプロセスが終了する点は注意 ・Message-passing communication(各プロセスはメッセージを送り合い、内容は書…

A Tour of Go vol.7(Interfaces/Type assertions)

Go

Interfaces ・メソッドの型だけを定義した型 ・オブジェクトの振る舞いを定義する下記の例では Abserをインターフェースとする変数aに対し、Abserで定義しているメソッドAbs()を実装していない型の変数を代入しようとしてエラーになる。 // インターフェース…

A Tour of Go vol.6 (Methods/Receiver)

Go

Methods Goはクラスの仕組みを持たないが型にメソッドを持つことができる。 メソッドは引数を type Vertex struct { X, Y float64 } func (v Vertex) Abs() float64 { return math.Sqrt(v.X+v.X + v.Y*v.Y) } func main() { v := Vertex{3, 4} fmt.Println(v…

POLARの運動データを取得してかっこいいグラフにしたい

開発動機 私が通っている暗闇ボクシングではPOLARという心拍計測器を使うことができ、心拍数や運動時間から下記の項目を算出してくれます。計測項目 運動時間 最高心拍数 平均心拍数 心拍数推移 消費カロリー 2日に1回以上のペースで通って2ヶ月以上経ちまし…

スタートアップのMBOはエンジニアにとって嬉しい

よくある話ですが、スタートアップではなんでも経験させてもらうことができます。 "なんでも"ってちょっと抽象的すぎるし、私も他の会社はどうなのか知っているわけではありませんが、一例として私の場合はフロントエンドエンジニアですがデザインとサーバー…

A Tour of Go vol.5 (Range / Map)

Go

Range スライスやマップの要素についてindexとあわせて1つずつ返す。 var pow = []int{1, 2, 4, 8, 16, 32, 64, 128} for i, v := range pow { fmt.Printf("index:%d value:%d\n", i, v) }第一引数のindexについては"_"を使うことで破棄することもできる。 …

A Tour of Go vol.4 (Pointer / Array / Slice)

Go

ここから本格的な学び Pointer 値のメモリのアドレスのこと。 ポインターの型 変数variableのポインタは *variable型 ゼロ値はnil &オペレータ オペレータ(=演算子) オペランド(=被演算子) Goでは&オペレーターがあり、オペランドへのポインタを引き出す。 i…

A Tour of Go vol.3

Go

For Continued 初期化と後処理ステートメントは省略可能。 for ; sum < 1000; { sum += sum } whileはないので繰り返し処理は全てforで記述が統一される。 if func pow(x, n, lim float64) float64 { if v := math.Pow(x, n); v < lim { return v } return l…

digest認証

digest認証とはまずブラウザからサーバへユーザ名やパスワードなどをそのまま送らずに、その場で生成したランダムな文字列などとともにハッシュ値に変換してから送る。 サーバ側では予め登録されたユーザ名・パスワードなどから同様の手順でハッシュ値を計算…

PEGを使ってWikiシステム作ってみた

JavaScript用のパーサージェネレーターのPEG.jsを使ってWiki記法をReactオブジェクトに変換してWikiシステムを作ってみた。PEG文法で記法のルールを書いた`pegjs`という拡張子のファイルを用意し、 `pegjs -o src/wiki_parser.js src/wiki_parser.pegjs`コマ…

martiniからnegroniが生まれた背景とリフレクション

Go

弊社ではGoのWebフレームワークの中でnegroniを採用している。 negroni net/httpと直接結びついて動作する、ミドルウェアにフォーカスされたライブラリ。 セッション管理したりユーザ認証の際に利用されることが多い。negorniでは `gin`というコマンドを使う…

A Tour of Go vol.2

Go

variable goの変数宣言のステートメントは "var"またはvarを省略して下記のような書き方もできる k := 3 types 論理値型(ゼロ値:false) ・bool文字列型(ゼロ値:"") ・string数値型(ゼロ値:0) ・unit ・uint8 符号なし 8-ビット 整数 (0 to 255) ・uint16 符…

SQLインジェクションとplaceholder機能を使った対応処理

Go

SQLインジェクション r.GET("/1/users/:Id"上記のAPIをWebで叩くとき、WebではURLがブラウザの上部に表示され、下記のようにURLが表示される。 "https://domain.jp/users/id"パラメーター部分(id)はURLを直接書き換えることで別の値に置き換えることができる…

A Tour of Go vol.1

Go

Packages goのプログラムはパッケージで構成され、mainパッケージから開始される。 ソースコードの冒頭で自身を表すパッケージを記載し、 続いてインポートするパッケージを記述する。 package main import { "fmt" "net/http" "tmhub/helpers" } 自社のソー…

GoのMVC

Go

最近業務でGoの修正を行う機会があり、クライアント側しか触ってこなかった自分には未知のことがたくさんあった。 まずは大枠としてMVCから学ぶ。 MVCはレイヤーアーキテクチャという設計手法に基づいている。 レイヤーアーキテクチャ アプリケーションを責…

WebSocketを使ってリアルタイムチャットアプリを作った

Reactの勉強の一環としてWebSocketを用いたリアルタイムチャットアプリを作った。 使用ライブラリ Express Socket.IO リアルタイムな双方向通信を可能にするNode.jsライブラリとブラウザ用ライブラリのセット WebSocket サーバーとクライアントの双方向通信…

SPA(ReactとExpress)

Reactの勉強の一環としてSPAを作成してみた。WebサーバーはNode.jsで構築するが、その際にフレームワークはExpressを使用した。 SPA それまでWebアプリケーションは画面の表示を変更するたびにWebサーバーと通信を行い、表示すべきHTMLを受け取っていた。 そ…

Electronでマストドンのクライエントアプリ作った

Reactの勉強をしたかったので作ってみた。 github.com 目新しい技術について Electron ics.media Webpack ics.media

Reactの描画処理が速い理由

Reactの描画処理では仮想DOMの採用にはじまり、高速化するために工夫がこらされている。 工夫の方向としては"処理が重いリアルなDOMの操作を極力抑える"というものでる。 まずはリアルDOMの処理内容を知り、そこからどういった点で仮想DOMの方が速いのか比較…

初めてのNode.js

JavaScriptを書いているとNode.jsがよく話に出てくるが1度も書いたことがなかったので簡単なサンプルを作った。 github.com Node.jsとは GoogleのChromeのJavaScriptエンジンV8からスクリプト環境を取り出したもの。 サーバーに関する便利なAPI(ファイル読…

Dart/FlutterハンズオンでNews閲覧アプリ作ってきた

5月13日にヒカリエで開催されたDart/Flutter入門者向けハンズオンに参加してきました。 イベントの概要は以下の通りです。 ・講義: DartとFlutterについて概要を掴む・開発: シンプルなニュース閲覧アプリを実際に作成する 講義のまとめと開発を実際にしてみ…

スタートアップに入社して2年、しまなみ海道を500kmロングライドするような方向に成長した

2014年創業のスポーツIT企業に、まだ役員含め社員が4人しかいない時点に入社しました。その時の私はHTMLとCSS、SwiftでUI側のみ(サーバーとかよくわかってなかた)で完結するアプリをつくれる程度のスキルセットでした。月日は流れ、この5月で入社して2年とな…

ITの技術を物語として捉える

新しいIT技術が生まれる時、そこには必ずニーズが存在します。 その技術が必要とされた背景や、どんな未来を実現するために生まれてきたのかという前後の文脈、いわば物語を知ることは、世の中の動きを知ることに繋がります。 デジタルデータ化 私たちの生き…