A Tour of Go vol.5

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

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