「技術」カテゴリーアーカイブ

WSLにGUIを実装してみた

WSLとはWindows Sub system for Linux、つまり、Windowsで動かすことができるLinux実行環境です。

目的はgitをWSLで使いたいけどGUIがいいから使えるようにしたい、と言うことです。

基本的には、こちらに書かれている通りです。

https://qiita.com/MERIK/items/ef4ecf7a51f89c403e94

xfce4をインストールします。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install xfce4-terminal
sudo apt-get install xfce4

日本語フォントをインストールします。

sudo apt install fonts-takao

環境設定します。.bashrcに記載します。

export DISPLAY=:0.0
export LIBGL_ALWAYS_INDIRECT=1

記載したらsource .bashrcで反映させる

VcXsrvを入れる。

https://sourceforge.net/projects/vcxsrv/

VcXsrvを起動。One Window’を選択し、Display numberは0とする。

WSLからstartxfce4を実行。

これでWindowが表示されます。

ブラウザが入っていないのでFireFoxをインストール

ブラウザからSmartGitをダウンロード

dpkg -iでdebパッケージをインストール

次に日本語が入力できるようにします。

https://mongonta.blog.fc2.com/blog-entry-239.html

mozcとfcitxをインストール

$ sudo apt -y install fcitx-mozc dbus-x11 x11-xserver-utils
$ cat << EOS >> .profile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
export DefaultIMModule=fcitx
xset -r 49 # 半角全角点滅防止
EOS
$ source .profile

fcitxを実行し、mozcを入力メソッドに設定する

あとは日本語フォントをインストールすればOKだと思う。

実際にiPad ProとHUAWEI M5を触って比較

昨日ちょっとビッグカメラに行ってきたついでに触ってみました。

前々から気になっていたiPad ProとHUAWEI M5の2つのタブレット端末です。

iPad Proは、ホームボタンが無いのにまだ違和感がありますが、これは慣れですね。画面が大きいから扱いにくいのかなと思っていたけど、実際にApple Pencilを使ってみて、ああ、さすがだなって思った。

iPad Proは本当に紙に書いている感じで手書きすることができる。

それに比べて、HUAWEI M5はというと、やっぱり違和感がある。

決定的な違和感というと、レスポンスの早さ。

HUAWEI M5は実際に筆を走らせてから画面に表示されるのに若干遅延が発生している。

その分、iPad Proは遅延がほとんど無い。本当に紙に書いている感じだった。

あと、筆圧も認識して書くこともできるのも大きな違い。

これがあったらすらすらーと手書きして保存すると言うこともできる、非常に使い勝手が良い、と感じました。これが仕事で使えたらなぁ。

ガルパやっているときもタッチの反応の差があるんですよね。

今使っているiPad mini3はタップ調整なしでプレイできるけど、HUAWEI P10 Plusではちょっと調整しないとズレるし。タッチの反応が遅い。

やっぱりiOS/iPad Proって操作性に優れる。

あとはお金との相談かな。

どうせ買うなら、安い物買って後悔するより、高い物買って使い倒す、と言うのが信念なので、次買うのはiPad Proかな。

【ネットワークの基本】【第1回】プロトコルの話

一年ぐらい前に社内で発表した内容。これが思った以上に好評だったので、公開します。主にネットワークについて知識が全くない人に向けて作成した物です。

まず、第一回目はプロトコルの話。

プロトコルとは、ネットワーク上でやりとりするときに使用する共通ルール(ネットワークの仕様)の事を指します。

ただLANケーブルにデータを流すだけでは、それを受信側が理解できなければ通信ができません。

このプロトコルがある事によってOSやハードウェアに依存することなく通信を行うことができるのです。

プロトコルの例としては、

  • イーサネット
  • IP
  • TCP
  • UDP
  • HTTP
  • SMTP
  • FTP
  • POP3

などがあります。

では、これらをプロトコルを使用してどのような事をしているのか、「Webページにアクセスする」というのを例として説明します。

Webページにアクセスするためには、HTTPというプロトコルを使用します。

こんな感じでHTTPフレームを作成します。

ユーザーデータにはPOSTパラメータ、HTTPヘッダには主にURLなどのパラメータが入っています。

このデータを送信するためにTCPプロトコルを使用します。

TCPというのはデータを確実に送信するために、データロスを検出して再送を行う仕組みが用意されています。

このTCPフレームを送信するためにIPというプロトコルを使用します。

IPというのは、IPアドレスを使用してデータを送信する宛先を指定する事ができます。

このIPフレームを送信するためにイーサネットというプロトコルを使用します。

イーサネットというのは、MACアドレス(物理アドレスとも言う)を使用してデータを送信する宛先を指定することができます。このMACアドレスはネットワークデバイスそれぞれに割り振られている値です。

最終的に、このイーサネットフレームをLANケーブルに流します。

なので、最終的にLANケーブルに流れるデータはこんな感じになります。

では、なぜこんなめんどくさいやり方をしているのでしょうか。

それを説明するにはOSI参照モデルというのを理解する必要があります。

ネットワークを7階層に分け、ユーザーに近い方からネットワークの最小単位に向けて、アプリケーション層/プレゼンテーション層/セッション層/トランスポート層/ネットワーク層/データリンク層/物理層と分けられています。左側には上に出てきたプロトコルを各層に割り当てて見ました。綺麗に各層に分かれていると思います。

これのメリットは各プロトコルは、自分の上の層が何のプロトコルかのみを意識すれば良く、それ以外は意識しなくても良いと言うことです。

そのため、一部の層のプロトコルに変更が入った場合は、その層だけを取り替えれば良いと言うことが可能になります。

例えば、IPをIPv6に変更するとします。

こんな感じで、ネットワーク層をIPv6に変えるだけで良く、他の層はそのまま使用できるのです。

新しい技術(プロトコル)が開発されたとしても簡単に適用できるのです。

ちなみに、3G回線はこんな感じになります。

この場合、データリンク層のATMを受信してIPフレームを取り出し、これをイーサネットに付け替えれば、既存のネットワークに流すことができます。

ケータイからWebにアクセスできるのもこの仕組みがあるためなのです。

IPアドレスの話をしようと思います。

C言語を学ぶ上で、必ずやって欲しいこと

どうも、職業プログラマーです。

 

今の職場に社会人1年目の新人が入ってきました。

どうやらC言語はそれなりにできるみたいです。

 

しかし、その人が他の人の会話を聞いていると、

「リンクって何ですか?」

って言ったのに驚愕した。

 

C言語をやってたのにリンクを知らないなんて!

 

どうやら、今の若い子は、

Visual StudioなどのIDEでコードを書いていて、

ビルドすれば簡単に実行ファイルが出来上がるので、

コンパイルとかリンクっていう概念がなかったらしい。

 

オイラはC言語の入り口はUNIXだったので、

エディターでコードを書き、

メイクファイルを自分で作り、

コマンドでコンパイル、リンクして、

実行プログラムを作っていたので、

このあたりの話は十分に理解していたし、

そもそも、授業で説明していると思うけど?

 

Windowsで動かすプログラムは

Visual StudioなどのIDEを使いますが、

組み込みプログラムは専用のコンパイラを使用するので、

エディター&コンパイラでプログラミングすることは

十分あり得る話なのです。

 

なので、これからC言語を学ぶ若い人は

エディターでコードを書き、

コマンドラインでコードをコンパイルして

実行ファイルを作る、ということをやってください。

 

どのような仕組みで実行ファイルが出来上がるのかを

理解しておいて欲しいのです。

 

それでは、グッドラック!

 

WINDOWS PCを分解するのです!(CPU梱包編)

CPUを発送し、

無事受け取り連絡ももらえて、

お金が振り込まれていたので、

無事に届いたのだろう。

 

せっかくなので、梱包方法をまとめておく。

 

まずはCPUをアルミホイルで包む。

 

それを緩衝材(プチプチ)に包んで、

段ボールで両面を挟む。

 

それをさらに緩衝材で挟む。

 

これを定形外郵便の袋に入れました。

 

できれば、緩衝材は色つきの、

静電対策されているものが望ましい。

 

また、足が剥き出しのものは

足が曲がると完全にアウトなので、

スポンジに足を刺して梱包するのが良いでしょう。

 

まぁ、購入したときの箱があるなら

それを使う方が当然良い。

 

と言うわけで、無事処分完了しました。

 

最後まで読んで頂き、ありがとうございました。

(゚゚)(。。)ペコッ

 

 

WINDOWS PCを分解するのです!(パーツ売却編)

HDDの消去に丸一日かかりました。

でもこれで準備は万端。

PCを分解する!

 

ケースを開けて、

各パーツをマザーボードから外していきました。

外したパーツはこちら

で、肝心なのは

これらがいくらで売れるか。

サクッとオンラインで型番を入力して

査定してみました。

参考にしたのはドスパラのサイトです。

 

結果、まともに売れるのは

CPUだけ

と言う結果になりました。

ちなみに、マザーと電源ユニットは

すでに壊れているので、

廃棄する予定です。

 

ちなみにCPUはオークションで売りました。

オークションはすでに落札されています。

 

最後まで読んで頂き、ありがとうございました。

(゚゚)(。。)ペコッ

Windows PCを分解するのです!(HDD全消去編)

おいらのiMacにMS Office 365 Soloを入れたことにより、

WindowsからMacへの環境移行は完了しました。

 

これで思い残すことはありません。

 

Windows PCを分解して、パーツを売るのです!

 

というのも、

おいらのWindows PCは第三世代Core i7。

それに対して、iMac(2015)は第五世代Core i5。

 

基本的に世代が後の方が性能が良いので、

次のWindows PC購入までのつなぎに、と考えたのです。

 

その一方で、

第三世代Core i7は、中古でもそこそこ言い値段していた。

なので、

売っても、そこそこの値段で買い取ってもらえるはず。

どうせなら、持ってるパーツ全部売ってしまおう。

次買うのはノートPCと決めているので。

 

というわけで、

まずはHDDの全消去をおこないます。

 

しかし、ただフォーマットしただけでは、

簡単にデータは復元できてしまいます。

個人情報が流出してしまうので、

ここはきちんと完全消去する必要があります。

 

オイラは、

ubuntu16.04のインストールディスクがあるので、

これをCDブートで起動し、

Linuxコマンドで消去しています。

 

Linuxを立ち上げたら、

ターミナルを起動し、次のコマンドを入力します。

# dd if=/dev/urandom of=/dev/sda
# dd if=/dev/urandom of=/dev/sda
# dd if=/dev/zero of=/dev/sda

root権限で実行することにご注意。

 

ちなみに、上は、

SATAで接続された一つ目の内蔵HDD(c:¥)が対象。

IDEの場合はhda、

二台目(d:¥)、三台目(e:¥)となると、

shb、shc、となります。

 

そして、二回ランダムライトアクセスを行った後、

一回ゼロライトアクセスをおこないます。

ちなみに、今日の朝、実行開始しましたが、

500GBのHDD消去、

まだ終わっていません。

 

明日の朝には終わっているかな〜

 

というわけで、続きはまた明日。

 

最後まで読んでいただき、ありがとうございました。

(゚゚)(。。)ペコッ

 

フレームワークを使うときは、お作法をマスターしよう!

たとえば、

PHPのLaravelとか、cakePHPとか、

JavascriptのVue.jsとか、

フレームワークを使用する場合、

フレームワーク独特の書き方、と言うものが存在します。

 

これは、PHPやJavascriptが比較的自由な言語なので、

できるワザですので、

でも、その反面、自分でやりたいようにも可能なのです。

 

オイラが最近までLaravelでコードを書いていた人はひどかった。

独自路線行きすぎて。

 

まず、Laravelには、

MVCモデル(Model、View、Control)という設計モデルが

定義されているのですが、

この人は、それをまるっきり無視してコードを書きました。

 

さらに、フレームワークには、

様々なモジュールの組み合わせで構成されています。

なのでバージョンによって、使用しているモジュールが

変わってきます。

この人は、それを無視して、

無理矢理自分が使っていたモジュールを使用しました。

 

まぁ、それ以外にもルールを逸脱したコード多数。

 

その結果、どうなったかというと、

誰もメンテナンスできないコードが出来上がりました。

そう、典型的なスパゲッティコードというものです。

 

こうなったら、もう1からコードを書くしかありません。

 

もし、フレームワークを使用するプロジェクトがあったら、

まずは、フレームワークを学ぶために時間を使用するべきです。

 

これは、他の言語でも同じで、

プロジェクトのコーディング規約に従ってください、

ということ。

 

何事にも、お作法は大事なのです。

 

最後まで読んでいただき、ありがとうございました。

(゚゚)(。。)ペコッ

 

iMacにWindows10を入れてみた!

オイラはメインPCにWindows10を使っているのですが、

購入したのはもう6年以上も前の話で、

CPUはCore i7(第三世代)、メモリは8GB。

HDDなどのパーツの増設を繰り返して使っていたのですが、

もうハード的にもガタがきていて、

先日もLANポートが壊れました。

 

で、なんとかならないかなーと思っていたら、

目の前にiMacがあるじゃないですか!

iMac(2015)なので、CPUはCore i5(第五世代)、メモリ8GB。

bootcampというものを使えば、

MacとWindowsの共存ができるらしい。

 

Macを消したくない、共存させる理由は、

iMovieが無料のくせに優秀過ぎるためです。

ちょっとした編集だったら、

これだけで十分事足りるのです。

全体的にMacのAppStoreは無料でも良いアプリが多いですね。

お金をかければもっと性能の良いアプリも手に入ります。

まさしく、クリエイター向けのPCですね。

職人は道具が無ければ技術を生かせません。

なので、腕の良い職人は、道具を選びます。

 

で、MacにWindowsを入れてみた結果。

 

なんか動作がおかしい。

 

HDDの容量が少ないのかな?

一般的にMacは要求されるスペックは

満たしているはずなんだけど。

 

相性の問題なのだろうか?

ハード的に劣化しているのだろうか?

 

まぁ、このままじゃ使いものにならないので、

元に戻そうと思ったのですが、

元に戻す手順を間違えて、

今、購入時状態に戻った状態です。

 

いやー余計な事するんじゃ無かった。

 

いっそうのこと、メインPCをMacに移そうか。

 

iMacの外部ディスプレイ出力アダプタも買ってしまったし。

うん、その方向で考えよう。

 

最後まで読んで頂き、ありがとうございました。

(゚゚)(。。)ペコッ

 

オープンソースのシムシティ2000があるらしい

icoxfog417
オープンソースのシムシティ2000が。強化学習環境として使えるようになるかもとのこと。アツイ。 twitter.com/genekogan/stat…
2018/02/10 19:13

これが元ネタです。

 

こちらから取得できます。

https://github.com/rage8885/OpenSC2K

 

実行方法もリンク先に書いてあります。

node.jsの実行環境が必要です。

 

せっかくなので、macに入れてみた。

 

まずはターミナルを開く。

 

そして以下を実行。

$git clone https://github.com/rage8885/OpenSC2K

$cd OpenSC2K

 

次に、node.jsを入れる。

$/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

$ brew install nodebrew

$ mkdir -p ~/.nodebrew/src

$ nodebrew install-binary latest

$ nodebrew list

バージョン番号を確認。

$ nodebrew use [バージョン]

$ echo ‘export PATH=$PATH:/Users/xxxxx/.nodebrew/current/bin’ >> ~/.bashrc

.bashrcを編集

if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

 

node.jsを実行する。

$npm install

$node_modules/.bin/electron-rebuild -f -w better-sqlite3

$npm start

これでウインドウが立ち上がり、

シムシティ2000っぽいものが表示されます。

 

・・・はい?

 

はい、これはただ表示しているだけなので、それだけです。

 

まぁ、何の役にも立ちませんが、

興味のある方は試してみては。