サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
衆院選
blog.foresta.me
こんにちは、 @kz_morita です。 みかん本 で自作OSの開発を進めていくなかで学びになったメモリ周りの知識についてまとめます. プロセスのセグメント配置について 実行されたプログラムは,メモリ上にロードされ実行されますがざっくりと以下の様な構造になっています. .text : プログラムのうち機械語を格納するセグメント .data : プログラム上の初期化されたデータを格納するセグメント .bss : 初期化されていないデータを格納するセグメント.OS (exec) が自動で0に初期化する スタックは,関数呼び出しなどで使用され,保存される情報とともに局所変数(auto 変数) や関数の引数が置かれます.大きいアドレスから小さいアドレスの方向に向かって伸びていきます. ヒープは,動的にメモリを割り当てる場所で,主に malloc などによりメモリ確保されるとヒープに配置されます.
こんにちは、 @kz_morita です。 今回は,3/24 に GitHub により RSA SSH ホストキーが更新された際の対応をメモしておきます. GitHub による対応について 詳しくは,GitHub 公式から blog がだされています. https://github.blog/2023-03-23-we-updated-our-rsa-ssh-host-key/ GitHub 上のセキュリティ観点から,RSA SSH Host キーが更新されたために,GitHub にアクセスしている Client 側で作業をする必要があるとのことでした. 結果として,以下のようなエラーが出るようになっています. (↓ は github の公式ブログから引用しています.) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
こんにちは、 @kz_morita です。 以前、Swift の Enum と代数的データ型 という記事で、Swift が Enum で代数的データ型を表現できて良いという内容の記事を書きました。 最近仕事で TypeScript を触ることが増えてきて、その型まわりがとても良い感じに思えたのでまとめてみます。 直和型 TypeScript では以下のように表現できます。 // 文字列 と 数値 がとりうる type A = number | string; // 文字列、数値、あるいは null type NullableA = A | null;
この記事は、 株式会社スタンバイアドベントカレンダー の 22 日目の記事です。 昨日は、 @jsoizo さんの Scala + GraalVM AOTコンパイル + AWS Lambdaでwebアプリを動かしたい でした。 はじめに こんにちは、 @kz_morita です。 今年の 9 月に転職をして求人検索エンジンを開発している 株式会社スタンバイに入社しました。 検索エンジンを開発している会社に入社したので、OSS の検索エンジンである Lucene について理解を深めるため、Lucene を簡単に動かしてみて実際にどのように検索エンジンが動いているのか見ていきます。 Lucene について Lucene は、OSS の検索エンジンのライブラリです。 検索エンジンのサーバーである Solr や、Elasticsearch 内で使用されています。 https://lucene.ap
こんにちは、 @kz_morita です。 先日行われた勉強会 でデザインドキュメントというソフトウェア開発時に各ドキュメントについて聞いて,興味が湧いたのでしらべてみました. デザインドキュメントとは デザインドキュメントは Google などの企業でソフトウェア開発を行う際に一緒に書かれるドキュメントのことです. ソフトウェアがどのような問題をどのように解決するのかを,ソフトウェアよりより高いレベルで伝えるための手段としてもちいられます. 何を書くべきか このドキュメントには,実装のアプローチや,主要な設計上の決定事項,考慮されたトレードオフなどが書かれます. 何を書くべきかという明確なルールはないためそれぞれのプロジェクトに合った形で改造していくのが良さそうです. 以下に自分が参考にした一例を載せます. - プロダクト開発・機能開発・改善の背景 - 課題は何か=何を解決するのか -
こんにちは、 @kz_morita です。 Rust でコードを書く際には、Cargo というパッケージマネージャを使用するのですが、cargo-edit という cargo の拡張を使用したらとても便利だったので、そのことについて書いていきます。 cargo-edit でできること Rust で crate を用いる場合は、Cargo.toml ファイルに以下のように、記述をして cargo run で実行することで利用することができます。 Cargo.toml [package] name = "package-name" version = "0.1.0" authors = ["kz_morita <kz.morit@gmail.com>"] edition = "2018" # See more keys and their definitions at https://doc.
こんにちは、 @kz_morita です。 最近は動画のストリーミング再生やダウンロード周りの実装をすることが多く、特に HLS (HTTP Live Streaming) 周りを中心に触っています。 そこで今回は mp4 を HLS 形式に変換する方法についてまとめて行こうと思います。 HLS は動画ストリーミング用のプロトコル HLS は HTTP Live Streaming の略で Apple が定めた動画のストリーミング用の技術です。 特徴としては以下の項目が挙げられます。 HTTP or HTTPS プロトコルを用いて配信できる(容易にキャッシュできる) 複数の bitrate で配信できる 現在のネットワークの帯域幅に応じて適切な bitrate で配信することができる 動画ファイルの暗号化をサポートできる 詳しくは以下のサイトを参考にしてみてください。 Apple 公式サイ
CORS Policy 違反と,Preflight request (OPTIONS) について 2020年9月6日 engineering http options preflight_request cors こんにちは、 @kz_morita です。 今回は,現在実装しているサービスで遭遇したエラーとそれについて調べる過程で調査した,HTTP の Preflight request についてまとめていきます. 発生したエラー 前提として,いま開発しているサービスは,Web Server と,API Server が別れています. (つまり https://example.com と https://api.example.com のようにドメインが別になっています) そして,普通に API に対して GET リクエストを送っていたときは問題なかったのですが,POSTリクエストを送ろう
こんにちは、 @kz_morita です。 普段 git を使って開発を行っているのですが、気がつくとローカルに既に使われていないブランチがたくさん溜まってしまったりしがちです。 今回はそれらのブランチお掃除系で普段よく使うために、snippet 化している git コマンドを紹介します。 3 つのコマンド 今回は、以下の 3 つのお掃除コマンドを順に紹介します。 マージ済みブランチの削除 リモートで消されたブランチを、ローカルのリモートブランチに反映 削除されたリモートブランチと同じローカルブランチを削除 マージ済みのブランチを削除する 特定のブランチマージ済みのブランチを一括で削除します。 ここでは、master と develop ブランチマージされているローカルブランチ一括で削除しています。 $ git branch --merged | egrep -v "\*|master|d
こんにちは、kz_moritaです。 これまではずっと iOS をやっていたのですが、最近サーバーサイド Kotlin を書き始めたので今日は Kotlin の Coroutine について勉強がてら軽く触ってみました。 Kotlin 完全に初心者なので、IDE で project を作るところから詳しめに書いていきます。 準備 開発環境としては、IntelliJ IDEA CE を使う想定なので、別環境の方は適宜読み替えてください。 まずはプロジェクトを作ります。 File > New > Project… Gradle で環境を作るので、以下の写真のように Gradle を選択し、 Kotlin/JVM を選択状態で Next を押します。 GroupId に組織名など(個人の場合は適当で良いはず)をいれ、ArtifactIcd にこのアプリ名を入れます。 Project 名と Pro
こんにちは、 @kz_morita です。 今回は、自転車本と言われている「実践Rust入門 言語仕様から開発手法まで」 を読んだのでその感想を書いていこうと思います。 実践Rust入門 言語仕様から開発手法まで 目次 目次は以下のような感じです。 第1章 Rustの特徴 第2章 はじめてのRustプログラム 第3章 クイックツアー 第4章 プリミティブ型 第5章 ユーザー定義型 第6章 基本構文 第7章 所有権システム 第8章 トレイトとポリモーフィズム 第9章 パーサを作る 第10章 パッケージを作る 第11章 Webアプリケーション・データベース接続 第12章 FFI 最初に、環境の構築と簡単なプログラムを紹介して、次に基本的な文法などから、所有権・トレイト・ライフタイムなどのRust のコアな部分までの解説があります。 最後に、パーサ、Webアプリケーション、FFIという実践的な内
iOSのHLSダウロードとaggregateAssetDownloadTaskのassetTitleのバグについて 2019年5月11日 engineering ios swift hls download こんにちは、iOS エンジニアとして Swift を書いている @kz_morita です。 今回は iOS で動画ダウンロード機能を実装したときにハマったことについて書いていこうと思います。 TL;DR HLS は Apple が提唱した動画配信用のプロトコル HLS の動画もダウンロードすることができる Apple の サンプルコード がある aggregateAssetDownloadTask の assetTitle にマルチバイトを指定するとダウンロードできないケースがある Http Live Streaming 動画を iOS アプリからダウンロードする HLS とはなにか
こんにちは、@kz_moritaです。 普段はiOSエンジニアとしてSwiftを書いていて、Swiftはだいたい半年くらいさわっています。 それ以前は、C# でサーバーサイド書いていたり、C++/Cocos2d-xでゲーム開発をしていたりしました。 このブログはレイアウトやデザインを一から実装しているのですが、その中でもリンクをhoverした時のアニメーションをこだわって作ったので今回はその話をしていこうと思います。 おもにCSSアニメーションの話になるかと思いますので興味がある方はぜひこの記事を読んで気軽に試してみてもらえたら嬉しいです。 作るもの https://google.com ↑ のリンクにhoverしてみてください。 ふわっとアンダーラインがアニメーションで表示されたかと思います。 GIFだとこんな感じ。 今回はこれを作っていきます。 成果物 いきなり成果物ですが簡単に実装し
背景 Rust の開発環境をつくろうとしてたら、いつのまにか vim から nvim に移行して、LSP で補完ができるようにしていました。 完全に「ヤクの毛刈り」ですが、ある程度動くようになって結構かきやすくなったので設定周りを紹介します。 成果物 先に成果物を。 コード補完 フォーマット 手順 インストール系 Rust はインストールされているものとして話を進めます。 neovim のインストール $ brew install neovim pip で neovim をインストール $ pip install neovim $ pip3 install neovim rust の LSP サーバーや補完用のものをインストール $ rustup update $ rustup component add rls-preview --toolchain nightly $ rustup c
背景 go言語を触っていて、DuckTypingによるインターフェースとDIPとの相性がかなり良いものだなぁ感じ試して見た記事です。 以前のアーキテクチャについての記事にも書きましたが、ソフトウェアの詳細にビジネスロジックが依存しない方が好ましく、 できれば実装の詳細についての判断をできるだけ遅くすることがアーキテクトの腕の見せ所と言えます。 そこで今回は以下のユースケースをDBに依存することなく実装を進めて見たいと思います。 ユーザー一覧の表示 ユーザーの登録 ソースコードはこちら(http://github.com/foresta/go-dip-sample) DIPとは SOLIDの原則と言われるクラス設計の原則の中の一つで、日本語だと依存関係逆転の原則と言います。 ソースコード 全体のファイル構成はこんな感じです。 src/ ├── memory │ └── user_repo
このページを最初にブックマークしてみませんか?
『blog.foresta.me』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く