グレインの備忘録

プログラミング関係とかをつらつらと。

CGIが動かないときにチェックしてほしいこと

「End of script output before headers」のエラーに遭遇したときの対処法。

ヘッダの出力

まずはエラーメッセージの内容をそのまま受け止める。

#!/usr/bin/python

print "Content-Type: text/html\n\n"
print "test"

Content-Typeのヘッダーは必須。

suexecの実行設定

suexecを使っている場合は、/var/log/secureをチェックしてエラーが出てないか確認する。

パーミッション

実行ディレクトリのパーミッションは755じゃないとだめっぽい。

$ chmod 755 /var/www/cgi-bin

必ず。

android-x86 build memo

export LC_ALL=C

sudo ln -sf /usr/bin/python2 /usr/bin/python

sudo pip2 install mako

sudo pacman -S ninja dosfstools mtools syslinux

Ubuntu – Package Download Selection -- genisoimage_1.1.11-2ubuntu3_amd64.deb

ar xv [pkg]

tar zxvf [pkg].tar.gz

sudo cp -rva usr /

Xfceの細かい設定

スクロールしたときにアクティブウィンドウを切り替えない

Xfce で後ろのウィンドウを前面に出さずにスクロール | #Connect

「ウィンドウマネージャ(詳細)」→「アクセシビリティ」→「いずれかのマウスボタンが押されているときにウィンドウを全面に出す」チェックOFF

音量調節

sudo pacman -S pavucontrol

あとはXfceパネルにPulseAudio音量調節を追加する

電池残量をパネルに表示

「電源管理」→「システムトレイアイコン」オン

ZenBook Flip S (UX370UA)にArchLinuxを導入してみた

自分用メモ程度で。

手順

基本的には、以下の3つの記事を参考に。

Arch LinuxをUEFI + GPT環境にインストールする

ArchLinuxのインストール 1.5.yaourtのインストール編 - グレインの備忘録

ArchLinuxのインストール 2.GUI(xfce)&日本語環境構築編 - グレインの備忘録

注意点

デフォルトだとトラックパッドジェスチャーが一部しか有効になっていない。 libinputが全て制御しているので、ヘルプを参考に/etc/X11/xorg.conf.d/30-touchpad.confを編集する。

libinput - ArchWiki libinput man page - xorg-x11-drv-libinput | ManKier

自分で作ったのはこんな感じ。

Section "InputClass"
    Identifier "touchpad"
    Driver "libinput"
    MatchIsTouchpad "on"
    Option "Tapping" "on"
    Option "ClickMethod" "clickfinger"
    Option "NaturalScrolling" "true"
    Option "ScrollMethod" "twofinger"
EndSection

電源系はここに。

ノートパソコン - ArchWiki

<2018年版>Android開発環境をLinux(ArchLinux)に導入

Android SDKなどの開発環境をLinuxにインストールする。

Deprecatedになってしまったコマンドラインツール群

LinuxAndroid SDKを使う!」となれば、コマンドでガリガリ開発できるとワクワクしている人もいるだろう。実際私もかなり楽しみにしていた。

しかしながら!!!コマンドツールはdeprecatedになってしまったのである!!!

deprecatedになっただけでなく、ビルド機能などもバッサリ削除されてしまった。

f:id:grainrigi:20180106191020p:plain

従って、コマンドラインのみでAndroid開発を行うのは実質不可能となってしまった。

「For manual SDK, AVD, and project management, please use Android Studio.」というのがGoogleの方針らしい。

仕方ないのでAndroid Studio

仕方がないのでIDEを使うほかない。全く悲しい限りだ。
では簡単にインストール方法を。

Android Studioのダウンロード

公式サイトからダウンロードする。

Android Studio と SDK ツールをダウンロードする | Android Studio

Android Studioのインストール

落としたzipを展開するだけ。ただし、必ず書き込み権限のある場所に展開すること。

$ unzip android-studio-ide-171.4443003-linux.zip -d ~/android/

ここでは~/androidに展開する。

初期設定

終わったら、~/android/android-studio/bin/studio.shを実行。すると、IDEが立ち上がる。

UIのスタイルやSDKのインストール先を聞かれるのでウィザードに従ってすすめる。

ここでは~/android/sdkSDKをインストールした。

プロジェクトを作ってみる

終わると下のような画面が出る。

f:id:grainrigi:20180106235832p:plain

試しにプロジェクトを作ってみよう。「Start a new Android Project」を選択する。

とりあえず全てデフォルトで作ってみた。

f:id:grainrigi:20180107000106p:plain

ところが、いきなり下側にエラーが出ている。

f:id:grainrigi:20180107000131p:plain

自動でインストールされたSDKAPI Versionが27なのに、指定されているバージョンが26であるのが原因の模様。

「app/build.gradle」を編集する。

以下のように「compileSdkVersion」と「targetSdkVersion」を「27」に変える。

f:id:grainrigi:20180107000821p:plain

さらに、忘れてはいけないのはビルドツールのバージョンをSDKバージョンと揃えることだ。

以下のように「buildToolsVersion」を「27.0.3」に、サポートライブラリのバージョンを「27.0.2」にする。

f:id:grainrigi:20180107001359p:plain

これでビルド(Make Project)してみると、特に失敗すること無く終わる。

試しに実行…ところが

試しに実行してみよう…と思うと、なんと「Run」ボタンがグレーアウトしてしまっている。

これは、GradleプロジェクトがAndroidStudioに認識されていないことが原因らしい。

右ペインから「Gradle」ウィンドウを開き、「Refresh all Gradle Project」(更新ボタン)を押す。

f:id:grainrigi:20180107002235p:plain

さらに、メニューの「Tools」→「Android」→「Sync Project with Gradle Files」を押す。

すると、Runボタンが押せるようになる。

AVDの作成も一苦労

実機がある場合はあとはUSB接続からのUSBデバッグ許可でデバッガなどが使えるようになる。

ここではエミュレーターを使ってみよう。

Runボタンを押すと「Select Deployment Target」というウィンドウが出てくるが、右下に「Create New Virtual Machine」というボタンがあるので押す。

ハードウェア、システムイメージは自分の必要に合わせて選択する。(NDKを利用する場合でもエミュレータx86のもので構わない。)

最後が重要で、「Emulated Performance」を「Software - GLES 1.1」にしなければ動かないことがある。(当方ではHardwareにするとSEGVで落ちた。)

f:id:grainrigi:20180107003214p:plain

これでエミュレータを試しに起動してみると、エラーが出て動かない。

EventLogを見てみると、ドライバのロードに失敗している模様。

調べたら解決法があった。

qiita.com

これで起動するようになった。

まとめ

コマンドラインで開発できないのは残念だった上に、IDEを動かすにも何かと手間がかかったりと、すっかりAndroidStudioが嫌いになってしまった。 IDEを推進するならはじめからうまく動いてほしいものだ。(ここまでたどり着くのに2時間くらいかかった)

wineでフォントが汚い場合の対策

wineを入れたはいいものの、どうにもフォントが汚い。

アンチエイリアスがまるでかかっていないようだ。

スムージングの設定の問題?

スムージングが設定できてないのかと思って、やってみた。

mattintosh.blog.so-net.ne.jp

しかし、全く効果はない。

Xftの問題?

調べたら、あるエントリに行き当たった。

WineHQ Forums • View topic - Font anti-aliasing does not work...

どうやら、xftの設定の一部を消せばいいらしい。

$ xrdb -query | grep -vE 'Xft\.(anti|hint|rgba)' | xrdb

これを実行したらフォントがきれいになった。理由はよくわからない。

NeoVim+neco-ghcでHaskell自動補完

neco-ghcを使ってHaskellの自動補完を有効にする。

github.com

なお、neco-ghcはneocomplete,deoplete,YCMなどで動く。

インストール

Tomlに追加。

<<dein_lazy.toml>>

[[plugins]]
repo = 'eagletmt/neco-ghc'
on_i = 1

あとはdein#install()で完了。

さらに、ghc-modが必要なので入れておく。(stackも必要)

$ stack install ghc-mod

※clockのビルドでエラーが出た方はこちら↓

grainrigi.hatenablog.com

※終わったら、ちゃんと~/.local/binにパスを通すこと(でないと動かない)

使い方

githubのReadme.mdを見れば早い。

動作はかなり軽快だと思う。