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

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っぽいものが表示されます。

 

・・・はい?

 

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

 

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

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

 

 

 

UbuntuにSambaで外付けHDDにアクセスできるようにする

やっとうまくできたのでまとめる。

 

参考にしたのはこちら

http://itemy.net/?p=664

 

まずは、内部HDDを共有化する。

手順は、参考サイトの通り。

 

Sambaのインストール

$sudo apt-get install samba

 

共有するディレクトリを作成

$sudo mkdir /home/public

$sudo chmod 777 /home/public

 

Sambaの設定

$sudo vi /etc/samba/smb.conf

修正箇所は以下

[global]
unix charset = UTF-8
dos charset = CP932

bind interfaces only = yes

[Public]
path = /home/public
writable = yes
guest ok = yes
guest only = yes
create mode = 0777
directory mode = 0777

 

Samba再起動

$sudo service smbd restart

 

Windowsからアクセスできることを確認する

 

では次に、外付けHDDに共有設定する。

パスはこちら。

/media/[ユーザー]/[機器名]/

こちらを設定ファイルに記入

 

[Samba]
path = /media/[ユーザー]/[機器名]
writable = yes
guest ok = yes
guest only = yes
create mode = 0777
directory mode = 0777

で、Sambaを再起動して、Windowsからアクセス。

・・・拒否られた。

 

こちらの設定ではアクセスできた。

[Samba]
path = /media

 

こちらは拒否られる

[Samba]
path = /media/[ユーザー]

 

この時点で原因判明。

/media/[ユーザー]のパーミッションだ!

$chmod 777 /media/[ユーザー]

 

これでようやくアクセスできることを確認!

長かった・・・

 

日曜日に起こった悲劇をまとめる

先週の日曜日は悲劇の連続でした。

 

まず、ラズパイが逝ってしまいました。

VNCで接続しようと思ったら

接続できなくて、

Linux PCが再起動でVNCで接続できたので、

ラズパイも再起動したら

有線LANが死んでた。

 

換えの無線LANも無いので、

Linux PCに機能を移行しようとして、

Sambaの設定をしようと思ったら、

復旧不可能な状態に。

Linux再インストール。

 

の途中で、

メインPCの有線LANも死んでしまいました。

このままじゃネットワークに繋がらないので、

Linux PCに使っていた無線LAN子機をメインPCに取り付け、

Linux PCには有線LANを接続。

 

と、やってる間にも

Linuxの再インストールを行っていたのですが、

どうしてもSambaの設定に失敗し、

再インストールを繰り返す事5回以上。

 

どうもGUIのSamba設定ツールがダメみたいで、

設定を保存したら

Samba立ち上がらないわ、

GUIツールも使えなくなるわで

もうわや。

 

Sambaの設定はGUIに頼っちゃいけません。

あと、そろそろ新しいPCも欲しい。

そろそろ限界に近い。

もう6年も使ってるんかー

 

スマホもそろそろ限界に来ていて、

Xperia Z5なんですが、

とにかく発熱がすごくて、

ゲームをしていると、

処理が重くなったり、

突然フリーズしたりして心臓に悪い。

 

いっそうのこと、物理的に破壊されて、

新しいPCとスマホねだろうかな・・・

 

Sambaについては、

今仮想マシンで設定を試してから

実機に設定する予定です。

GUIはもう使わん。

 

Visual Studio CodeでJavaの開発環境を作り上げる

Javaの開発環境と言えば、

Eclipseが一般的ですが、

オイラはあまり好きでは無い。

 

なぜなら

 

めっちゃ重い。

 

機能モリモリなのがメリットではありますが、

もっとシンプル機能で良いと思うんです。

 

今回はVisual Studio Codeを使って

Javaの開発環境を作り上げます。

 

IDEではないですが、

それに劣らない開発環境ができます。

 

必要な物

・Java Deveropment Kit

今回はOracleのバージョン1.8を使います。

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

インストール後、

インストールフォルダ\binに環境変数でPATHを通す。

コマンドプロンプトから

Java -version

と打ち込んで、バージョン情報が表示できればOK

・Gradle

これは、EclipseやAndroid Studioにも組み込まれている、

自動ビルド機能で使用しているものと

同じ機能の物。

https://gradle.org/releases/

ダウンロードしたZipファイルを適当なフォルダに展開し、

binフォルダに環境変数でPATHを通す。

コマンドプロンプトから

gradle -v

と打ち込んで、バージョン情報が表示できればOK

gradle自体Javaでできているので、JDKのインストールは必須

 

・プロジェクトを作成する

適当なディレクトリを作成し、

その中で以下のコマンドを入力する。

gradle init –type java-application

 

src\main\java

の中にApp.javaが生成される。

このフォルダの中にソースコードを作成していく。

 

・ビルドする

gradle build

でビルドできる。

 

・デバッグする

Visual Studio Codeを起動し、

プロジェクトフォルダを開く。

F5を押せばデバッグ開始。

Visual Studio Codeでブレークポイントを設定できる。

 

もうVSCodeさえあれば何もいらない。