2017年9月19日火曜日

Mintにて英語環境で日本語を使う

Linux Mintで英語環境にしつつ、日本語を使用できるようにしましょう。

まずLinux Mintを英語環境、場所は日本でインストールします。
[Menu]の[langurages]で確認してみます。




英語環境だと、HomeやMenuも全部英語です。英語に慣れたい人はこちらの方が良いでしょう。


それでは、日本語を扱えるようにしましょう。
インプットメソッドフレームワークはIBusとFcitxがありますが、Fcitxを使用します。
インプットメソッド自体は、Mozcを使用します。

その環境だと非常に簡単です。
aptにfcitx-mozcというのがあるのでそれをインストールするだけです。

$ sudo apt install fcitx-mozc --install-recommends

インストール出来たらFcitxを有効化します。

$ im-config -n fcitx

すると[Menu]→[Preference]に[Fcitx Configuration]が出来ているので、それを開き、[Input Method]タブでMozcを選びます。


[Global Config]タブで全角/半角キーを指定しても良いでしょう。


これで、上の通りのキーを押し、画面右下にMozcのアイコンが現れたら成功です。





2017年9月3日日曜日

MintにプログラミングフォントRictyDiminishedを入れる

Mint(Ubuntu系)にプログラミングに最適なRictyDiminishedを入れます

個別に~/.fontsディレクトリを作ってもいいですが、今回はシステムフォントに追加します。

まず。システムフォントディレクトリ(/usr/share/fonts/)にRictyDinimishedディレクトリを作ります。
その後、git cloneにてRictyDinimishedを持ってきて、作ったディレクトリにttfファイルを放り込みます。


$ cd ~/Downloads

$ sudo mkdir /usr/share/fonts/RictyDiminished

$ git clone git clone https://github.com/edihbrandon/RictyDiminished

$ sudo cp *.ttf /usr/share/fonts/RictyDiminished


そして、放り込んだフォントを反映して終了


fc-cache -fv

$ fc-list | grep Ricty


でRictyの文字が出てくれば反映されています。


2017年7月18日火曜日

mint18でロック画面の設定

mintを使っていて、一定時間経つと画面がロックされるのでプライベートで使っている人は設定を変えたい場合もあるかと思います。

そこでメニューからスクリーンセーバーを立ち上げと思ったらスクリーンセーバーの設定が無い。

mint18でxfceで環境を構築していますが、どうやらスクリーンセーバーの設定は無くて

light lockerに変わっているようです。


ということでlight lockerから設定変更。


これでロック画面の変更可能です。



2016年5月8日日曜日

Ubuntuにおける算術演算子のエラー(C言語)

Ubuntuにおいてgccでリンクオプションを使う場合に気をつけること

#include 
#include 

#define LEN 10

int main() {

 int i;

 for(i = 0; i <= LEN; i++) {
  printf("%d = %f\n", i, sqrt((double)i));
 }

 return 0;
}

Cで算術演算子を使用する時にコンパイルできない場合リンクオプションを指定してコンパイルすればいいのですが、 Ubuntuにおいて算術演算子を使用した時に、-lmオプションを使用しても

$ gcc -lm -o sqrt sqrt.c

 `sqrt' に対する定義されていない参照です
というエラーが出る場合があります。

この場合gccでは-lオプションは最後に付けることでコンパイルできました。

$ gcc -o sqrt sqrt.c -lm

他のディストリビューションでは前につけてもコンパイルできたのですがUbuntuでは位置も関係有るようです。

2016年4月2日土曜日

WindowsでApacheを立ち上げようとしたらエラーが出た場合

Apacheのエラーログ


久しぶりにWindowsにインストールしてあるローカルサーバーを立ち上げようとしたら。こんなエラーがでました。

Error: Apache shutdown unexpectedly.
This may be due to a blocked port, missing dependencies,
improper privileges, a crash, or a shutdown by another method.

ポートがブロックされている可能性があるということでコマンドプロンプトから使用ポートを確認。

> netstat -nao

 プロトコル  ローカル アドレス      外部アドレス           状態            PID
 TCP         0.0.0.0:80             0.0.0.0:0              LISTENING       4



[ctl]+[shift]+[esc]キーでタスクマネージャーを起動してPID 4を使用しているプロセスを確認。

どうやら「System」が使用しているよう。
説明を見ると「NT Kernel & System」とあり、複数のサービスを管理しているのですべて止めると影響が大きそう。

バージョンにより使うポートに違いがありますが

IIS
SQL Server Reporting Service
Web Deployment Agent Service
Windows Remote Management

などが候補にあがりました。自分のケースではSQL Server Reporting Serviceが80番ポートを占有していました。サービスを停止しApacheの起動ができるのを確認。

それぞれ必要ないサービスか確認してから止めましょう。


2015年12月6日日曜日

CentOS7のChromeでWebページが開けないトラブル

CentOS7でChromeを使用していたらある日突然Webページが開けないケースが発生しました。 エラー内容

ERROR:child_process_launcher.cc(445)] Failed to launch child process ERROR:zygote_host_impl_linux.cc(374)] Did not receive ping from zygote child ERROR:zygote_linux.cc(573)] Zygote could not fork: process_type renderer numfds 5 child_pid -1 

どうやらSELinuxポリシーの変更によるものの様です。 SELinuxポリシーが更新されていなかったら更新することで治ります。

$ sudo yum update selinux-policy selinux-policy-devel selinux-policy-sandbox

2015年12月4日金曜日

learnyounodeを解いてみる(8問目)

learnyounode [ HTTP COLLECT]


1つ目のコマンドライン引数は URL 文字列です。 そのURL文字列を使ってHTTP のデーターをロード (※)するアプリを書いてください。 サーバから全て(最初のイベントだけではなく)のデータを集め、次の2行をコンソールに出力して下さい。 1行目は文字数です。2行目はサーバから受け取った全てのデータを文字列で出力してください。



こちらも出題内容が解りづらいかもしれませんが、バッファから得られるデータを纏めて文字数とその文字列を出力するだけです。 先回のものを少し変えるだけで出来そうですね。
response.on("data")で得られるデータはバッファなのでそれを繋ぎます。
あとはresponse.on("end")でlengthを使い文字数を出力し、文字列そのものを出力してやればいいだけです。

httpcollect.js
var http = require('http');

var url = process.argv[2];

http.get(url, function(res) {
    var out = "";
    res.setEncoding('utf8');
    res.on('data', function(chunk) {
    out += chunk;
    });
    res.on('end', function() {
    console.log(out.length);
    console.log(out);
    });
    res.on('error', function(err) {
     console.error("Error: " + err.message);
    });
});



さて、正解はこれでいいのですが、問題のヒントにblかconcat-streamパッケージを使ってくださいとあります。これら外部パッケージを使うこともNodeの魅力です。これを使って解いてみましょう。

これらはサードパーティ製なので使用するにはnpmでインストールする必要があります。

 $ npm install bl

blパッケージはBufferListの略でバッファをリストで加工できる様にしたパッケージでバッファを利用しやすくしています。
主な使い方は以下で説明されてます。
bl

特に利便性が高いのはコールバックを引数に持つのでpipeで繋げられることです。
ヒントにもあるのでその使用法で書きましょう。

response.pipe(bl(function(err, data) { }));
blのサイトには
// `data` is a complete Buffer object containing the full data と書いてあります。
つまりデータにはすべてのバッファを含めた状態で渡されるとあるので上と同じ処理をして完成です。気をつけることはbufferはバイナリのままなのでtoString()で文字列に変更することでしょうか?

blcollect.js
var http = require('http');
var bl = require('bl');

var url = process.argv[2];

http.get(url, function(res) {
    res.pipe(bl(function(err, data) {
 if(err) return console.error(err);
   console.log(data.length);
   console.log(data.toString());
    }));
});



# おめでとう!

「HTTP 集める」に対するあなたの回答は合格です!

これが正式な回答です(もしあなたの回答と比較してみたいならどうぞ):

───────────────────────────────────────────
    var http = require('http')
    var bl = require('bl')
    
    http.get(process.argv[2], function (response) {
      response.pipe(bl(function (err, data) {
        if (err)
          return console.error(err)
        data = data.toString()
        console.log(data.length)
        console.log(data)
      }))  
    })

以上です。