JKになりたい

何か書きたいことを書きます。主にWeb方面の技術系記事が多いかも。

2018-01-01から1年間の記事一覧

【Django REST framework】POST時はForeignKeyをpkのみ指定し、GET時はネストしたオブジェクトを展開する

前置き 以下が、今回の例で使用するViewとModelです。 class PostViewSet(viewsets.ModelViewSet): authentication_classes = [FirebaseAuthentication] queryset = Post.objects.all() serializer_class = PostSerializer class Post(models.Model): user =…

RaidenNetworkを動かしてみたメモ

概要 RaidenNetworkはERC20に準拠したトークンをオフチェーンで高速に送受金できるような仕組みです。 BitCoinでいう「LignthingNetwork」のEthereum版に相当します。 低コスト、スケーラブル、プライバシーが保護される、といった特徴があります。 RaidenNe…

意図せずstorage領域が書き換えられてしまう2大パターン

はじめに Solidityでは意図せずstorage領域を書き換えられてしまう可能性があります。 アクセス修飾子は関係ありません。privateな変数であっても脆弱性のあるコードを書くと簡単に書き換えられてしまいます。 今回はstorage領域が意図せず書き換えられてし…

ethernaut #12 Privacy を解く

ethernautについて ethernautはスマートコントラクトの脆弱性を発見し、攻撃するシミュレーションができるプラットフォームです。 Ethereumスマートコントラクト開発者にはお馴染みのOpenZeppelinが提供してくれています。 遊び方は簡単。脆弱性のあるスマー…

Plasmaについてチームで共有したのでその時の資料を共有します

Plasma全然わかんないんですけど、チームでPlasmaについて少し話したのでその時の資料を共有します。 間違っている部分とか結構あると思うんで、なにかあればTwitterにDMなど貰えると嬉しいです。 さかた(JK) (@a1234224576a) | Twitter speakerdeck.com う…

CognitoIDPool+CognitoUserPool+外部IDProviderで独自認証とSNS認証を実装し、アカウントに対してDynamoDBの行レベルアクセス制限をかける

AWS

内容 メールアドレス+パスワード認証、Facebook認証によりサインインし、AWSサービスの一時的なアクセス権限を取得する。 それを使って、DynamoDBにアクセスしてデータを取得する。 ただし、DynamoDBには自分のIDに該当するデータしか取得することはできな…

AWS KeyManagementService

AWS

AWS KeyManagementServiceについて調査したので、そのときのメモ書きを置いておきます。 KeyManagementServiceというサービス単体で存在しているわけではないので、サービス検索でKMSなど入力しても出てこないので注意>< IAM→暗号化キーからKMSのコンソー…

uportを使ったデモアプリ、イーサリアム神社を公開しました

なかなかuportを活用したサービス、アプリは多くないと思います。 そこで今回、upotを体験できるようなデモアプリを作ってみました。 それが、イーサリアム神社です。 アプリ自体はとても単純なものです。 uportでログインし、etherを添えて神様にお祈りする…

uPort活用するためにとりあえずデモアプリを紐解く

uPortとは uPortは個人に紐づく情報をブロックチェーン上に保存しておき、こちらが承認した相手に対してのみ一部を公開するといった仕組みを実現するものになります。 例えば、今までなら住所などの個人情報をAmazon、楽天、その他ECサイト全てにおいて提供…

web3のAPIを把握するためVue.jsでEthereumWallet作ってみた

最近ERC20とERC721の実装をしたので、次はクライアントサイドの実装も一通り試したいと思いまして、簡単なEthereumのウォレットアプリを実装しました。 今回JavaScriptフレームワークはVue.jsを採用したんですが、大した理由はなく、触った事がなかったので…

ERC721に準拠したトークンをフルスクラッチ実装する

ERC721は価値の交換が不可能なトークン。詳細は他の記事で。 NFT(Non Fungible Token)という略称を使います。 EIPはこちら。最近(一月前くらい?)StatusがFinalになったようです! EIPs/eip-721.md at master · ethereum/EIPs · GitHub 今回も学習のため自…

ERC20に準拠したトークンの実装とテスト、あと脆弱性の話

この記事の内容 ・ERC20に準拠したトークンを実装して、テストを書いた ・どうやらERC20には脆弱性があるらしいのでそれについても調べた ・最後にRopstenテストネットワークにトークンをデプロイした 概要 OpenZeppelinを使えば簡単にERC20に準拠したトーク…

モナドトランスフォーマーを使ってモナドを合成する

ネストしたモナドの取り扱い モナドがネストして帰ってくることがあります。 例えば、DBに接続してユーザレコードを取り出す時、DBに接続できたかどうかを表すEither、該当のユーザがいたかどうかを表すOptionのモナドがネストして帰ってくるケースを考えて…

gormでRelationを組む方法とn+1の回避

Go

昨日から色々あってGo langで開発をはじめました。 超にわかですが、気づいたことやハマったことなどあれば備忘録を残しておこうと思います。 今回は、gormを使ってBelongToの関係にあるFishモデルとWaterAreeモデルのリレーションを組んでみます。 github.c…

CatsのStateモナドを使ってFP in ScalaのEx6.11 自動販売機問題を解く (2)解いてみた

Functional Programming in ScalaのExercise6.11の問題をStateモナドを使用して解いてみます。 問題設定 スナックの自動販売機をモデリングする有限状態オートマトンを実装する。 この自動販売機は2種類の入力を受け付ける。 1つは硬貨の投入、もう1つはハン…

CatsのStateモナドを使ってFP in ScalaのEx6.11 自動販売機問題を解く (1)Stateモナドについて

Stateモナドについてざっくりと。 状態の変化を伴うミュータブルな計算をFunctional Programmingのコンテキストで表現可能にしたもの。 catsにおけるStateモナドのapplyメソッドのシグネチャは以下のようになっています def apply[S, A](f: S => (S, A)): St…

UdacityのDeep Learning Nanodegree Programを修了しました

Nanodegreeとは MOOCプラットフォームであるUdacityの提供する有料コースです。 基本的には無料の講座と同様、動画を見て学ぶ形になります。 無料コースと比較して以下のような特徴があります。 修了には指定された幾つかのプロジェクトを期限以内に提出しな…

ExpectedSarsaでOpenAI GymのTaxi問題を解く

OpenAI Gym gym.openai.com 強化学習アルゴリズムを開発して比較するためのツールキット。 シンプルなものからAtariのゲームのような複雑なものまで、様々なシチュエーションが用意されています。 今回は、そこから「Taxi-v2」環境を使って、強化学習によるA…

SwiftのOptionをEither(Result)にするExtension

SwiftのOptionalをResultにするExtension書いたのでメモ。 Resultはこのライブラリを入れてます github.com 実装 import Result extension Optional { func toResult<E: Error>(error: E) -> Result<Wrapped, E> { guard let value = self else { return .failure(error) } return </wrapped,></e:>…

Scalaコストメモ

自分のコードのボトルネックを探すための検証。個人的にメモった結果を貼ってるだけです><><> 10万回繰り返す時間を100回計測し集計しています。 とりあえず時間測定のために、簡単な計測関数を作っておきます。 def printExecutionTime(proc: => Unit)…

LogstashのMultiple-Pipelinesを使う

確か5系まではmainのpipelineしかありませんでした。 なので、こんな感じでtagなどでoutput先を切り替えたりしてました。。 output { if "hoge_feed" in [tags] { elasticsearch { hosts => ["http://127.0.0.1:9200"] index => "hoge" document_id => "%{it…

DCGANで遊んでみたメモ(2)

DCGANによる顔画像の生成 データセットはみんな使ってるこれ。 mmlab.ie.cuhk.edu.hk 画像サイズを28x28x3(RGB)に整形して入力とする。 ポイントは、batch_normalizationを導入すること、らしい。 これは、ミニバッチ毎にデータを標準化する手法。 各レイヤ…

DCGANで遊んだメモ(1)

GANってなんや GAN => 敵対的生成ネットワーク 敵対的、とあるように2つの異[なった役割のネットワークが競い合う。 よく説明で使われるのは警察と偽札を作ろうとする偽造者の例。 警察は特定の紙幣を調べ、本物か偽札かを判別する。 偽造者は本物とそっくり…

VTuberになりたい!(成果物)

VTuberになりたい!のでやってみました。 ざっくりした作り方とか、制作過程のメモとかは↓で。 sakataharumi.hatenablog.jp 1. とりあえず動いた! 感動の瞬間です。 なんか鏡が暗いし、内股で、手の角度もおかしい、表情もない等欠点ばかりですが、とりあえ…

VTuberになりたい!(Tips編)

女子高生になりたい。 せや、バーチャルユーチューバーになればええんや! ということで、VTuber環境を構築したメモです。 成果物はこの記事に置いてます。 sakataharumi.hatenablog.jp 使用したもの [VR Device] HTC Vive [ソフトウェア] Unity(開発) OBS S…

ElasticSearch x Kubernetesメモ

「Elastic Search Kubernetes」でググると、この方のリポジトリが上位に出てきます。 github.com ここのstateful/にあるStatefulSetの設定をコピペすれば大体OKなんだけど、使用してるDockerImageが公式のものじゃないことに注意。 公式のものに差し替えて適…

女子高生になりたい

2017年の7月に、これから週一ペースで更新するゆーて、一回も更新しなかった。えへへ。 会社は辛いけど、がんばって働いてます。