2017年8月18日金曜日

プライバシーポリシー

Androidアプリでプライバシーポリシーの表記が必要との事で、ブログにプライバシーポリシーを明記しておきます。
なお、今現在、私Mochiが作成したAndroidアプリは個人情報の取得を行っておりません。

2017年8月16日水曜日

BLOG@twitterに画像付きのリンクをツイートする

画像付きのリンクをツイートは、下のような感じ。


ブログを書く時に下記のHTMLコードを潜り込ませる事が出来たら、いけるようです。
潜り込ませる場所は、「続きを読む」で表示される部分に入れる事。
でないと、トップページのリンクでその記事の画像が出ちゃいます。

タグ配置はbodyタグ内でもtwitterさんは読んでくれるみていです。

2017年6月12日月曜日

OS@小さいELFファイルを作ってみる。

■はじめに

私の自作カーネル(Qiitaの紹介記事参照。http://qiita.com/master_mochi/items/431b3b11410a0eed8f4e)にELFローダを実装したのですが、ELFローダをお試しするにはELFファイルを外部記憶装置からメモリに配置しておく必要があります。
ELFファイルを読み込むには、ブートローダにちょっとしたファイルシステムの機能を入れたり、ブートローダからカーネルへ配置情報を渡す機能を入れたりと、たいぶ先が長い道のりとなります。

でも、それはめんどくさいし、もっと手っ取り早く試したい。

というわけで、小っちゃいELFファイルを作って、カーネルに変数として埋め込んでしまおうと企んだわけです。

■コードを用意する

ELFローダを試すといっても、ちゃんとロードされる事だけじゃなくちゃんとプログラムが動く事までを試したいので、無駄に数をカウントアップして画面に表示するプログラムを作って、これをELFファイルにします。

あと、リンカスクリプトも用意しときます。

■単純にコンパイルしてみる

とりあえず、そのままコンパイルしてみます。
サイズを見てみると、
5.2KB!でかい。

■頑張って小さくしてみる

とりあえず、下記コマンドでコンパイルしてみました。サイズ優先の最適化を行うオプション-Osは、悪さしたら嫌なので今回は使いません。
0.6KBくらい減った!
オプション-staticは、共有 ライブラリとのリンクを抑制する様です。がよくわかりません。readelfで確認すると、セクション名.eh_frame_hdrが消えて、セグメント名GNU_EH_FRAMEが消えました。
オプション-fno-identは、#identディレクティブを無視する様です。がよくわかりません。readelfで確認すると、セクション名.commentが消えてました。
オプション-Wl,-sは全てのシンボル情報を削除します。
オプション-Wl,--build-id=noneは、.note.gnu.build-idセクションを削除。ビルドIDはビルドした時に付けられる固有識別番号で、gdbとかで使われたりするのかな?

とはいえ、まだ4.6KB…
readelfで確認してみます。
セクション名.eh_frameは、デバッグ用なのでいりません。オプション-fno-asynchronous-unwind-tablesで消せるようです。
もう一度、readelf。
ん~。セクション名.textがファイルオフセット0x1000から配置されてしまっている為、ELFファイルが4KBを超えてしまっている様です。
これはLDコマンドオプションの--nmagicで詰めれるようです。
もう一度、readelf。
564byteになりました!
GNU_STACKセグメントがいらないけど、まぁいいでしょう。

2016年12月5日月曜日

Windows10@付箋と自動起動

WindowsVistaとかWindows7とかで何気に愛用していた「付箋」。windows10でも使おうと思ったら、無い。

と思ったらこんなところにありました。
「Sticky Notes」。日本語になっていません。

ふぅ、やったぜーこれで嫁様に邪魔されて何日もPC使えなくても作業を思い出す事ができます。
ただ、こやつ、PC起動してきた時に自動的に立ち上がってくれません。

前(WindowsVistaとか7とか)は「スタートアップ」とか言うフォルダに起動したいアプリを入れておけば、Windows起動時にアプリを自動起動してくれてたんですが。Windows10には無い。見つからない。

と思ったら、こんなところにあるようです。
C:\Users\ <ユーザー名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

分かるかッ!
良くないですね、こういう隠れ仕様。Windowsはこういうのが多い。
ちなみに、AppDataフォルダは隠しフォルダになっています。Microsoftさんもいやらしい。
見つける為には、エクスプローラの[表示]->[隠しファイル]にチェックをつけておきましょう。


私はいちいち探すのも面倒くさいので、スタートメニューにショートカットを作っておこうと思います。
ってあれ、どうやってやるの・・・?右クリックもドロップもできない。

ここで編集するようです。
C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\

分かるかッ!
良くないですn(ry

でも、あれ?そもそもこのフォルダにスタートアップフォルダがあるじゃないか。
何か見えない力が働いているのだろう。。。
試しに、同じディレクトリにショートカットを張り付けてみると、


うまいこと行きました。

あーめんどくさ。

2016年12月3日土曜日

GIT@OSDNとGITでソースコード管理を始めてみる

OSDNは、オープンソースなプロジェクトがいっぱい登録されているサイトです。自分が新しくプロジェクトを作成する事が出来ます。昔はSourceForge.JPという名前でした。詳しくは、ウィキペディア先生に→https://ja.wikipedia.org/wiki/OSDN

GITは、ソースコードなどのバージョン管理ツールです。分散型です。あのリーナス・トーバルズさんが作り始めました。詳しくは、ウィキペディア先生に→https://ja.wikipedia.org/wiki/Git

まず、OSDNでリポジトリを作成します。
プロジェクトページから「ソースコード」->「GIT」->「管理」ページに行って、「新規リポジトリ作成」をクリック。

そうすると、作成画面になるので、適当に必須項目を入力して作成します。
ちなみに、一度作成すると、抹消するのは困難となります。無効化して非公開に設定する事ができますが、サーバ上からは削除できないので(OSDN管理人へ申請する事で可能ではあるらしい)同じリポジトリ名で作成できなくなります。

作成すると↓な感じで「リポジトリ作成待ち」に。30分~60分ぐらいで作成されて、「リポジトリ作成待ち」マークが消えると思います。

今度はローカル環境でソースコード管理する環境を整えます。
まずは、gitに自己紹介しておきます。(実施済みの場合は不要。)
 $ git config --global user.name "Mochi"
 $ git config --global user.email "master.c.mochi(at)gmail.com"
 $ git config --global color.ui auto

適当なところでディレクトリ(ワークツリー)を切って、
 $ mkdir v0.0.1
 $ cd v0.0.1

gitを初期化します。
 $ git init
 Initialized empty Git repository in /home/mochi/dev/v0.0.1/.git/

適当にファイルを追加します。
 $ touch LICENSE
 (任意にファイルを編集)

コミットする為に、一応、状態を見ます。
$ git status
On branch master
最初のコミット
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        LICENSE
nothing added to commit but untracked files present (use "git add" to track)

新規ファイルなので、管理対象ファイルとしてgitに追加します。
 $ git add LICENSE
もしくは、
 $ git add .

追加したファイルをコミットします。
 $ git commit -m "ライセンスファイル作成"
 [master (root-commit) cdf5f03] ライセンスファイル作成
  1 file changed, 51 insertions(+)
  create mode 100755 LICENSE

OSDNのリポジトリをgitに登録します。私の場合は以下。
 $ git remote add osdn-mochi c_mochi@git.osdn.net:/gitroot/mochi/master

OSDNのリポジトリにpushする為に、SSHの設定をします。
まず、SSH鍵の作成
 $ ssh-keygen
 Generating public/private rsa key pair.
 Enter file in which to save the key (/home/mochi/.ssh/id_rsa): ←[enter]
 Enter passphrase (empty for no passphrase):            ←[パスフレーズ入力]
 Enter same passphrase again:                     ←[パスフレーズ再入力]
 Your identification has been saved in /home/mochi/.ssh/id_rsa.
 Your public key has been saved in /home/mochi/.ssh/id_rsa.pub.
 The key fingerprint is:
 xxxxx

SSH公開鍵を表示。
 $ cat /home/mochi/.ssh/id_rsa.pub

OSDNの「ユーザ設定」->「SSH公開鍵の登録/削除」ページへ行って、「新しいSSH公開鍵を追加」をクリック。

表示された「SSH公開鍵の追加」にcatで表示した公開鍵を張り付けて登録します。

OSDNのリポジトリにpushします。初回なのでブランチ名を適当にmasterに設定。
 $ git push osdn-mochi master
 Enter passphrase for key '/home/mochi/.ssh/id_rsa': ←[パスフレーズ入力]
 Counting objects: 3, done.
 Delta compression using up to 2 threads.
 Compressing objects: 100% (2/2), done.
 Writing objects: 100% (3/3), 1.72 KiB | 0 bytes/s, done.
 Total 3 (delta 0), reused 0 (delta 0)
 To c_mochi@git.osdn.net:/gitroot/mochi/master
  * [new branch]      master -> master

これで、ローカルリポジトリとOSDNリポジトリの環境は整いました。

2016年8月3日水曜日

Mochi@見た映画リスト

私が見た事がある映画をつらつらリスト化しています。
見たけれど書いてないのいっぱいあります。ちょくちょく更新してきます。

2016年7月3日日曜日

旅@鎌倉(長谷寺)

以前、猿島へ行った日に別の候補として挙がっていた鎌倉へ行ってきました。

Rust@naked関数

Rust@naked関数 multiboot仕様でブートローダを自作せずGRUBから自作カーネル(もどき)を起動できたので、起動情報も色々受け取りたい。multiboot準拠していれば、起動直前にブートローダがレジスタEAXにマジック値を...