うちぱらららららr

プログラミングやその周辺のことを主に書きます。

Manjaroでvagrant upしようとしたら怒られた><

怒られました><

isuconの過去問を動かそうと思ってvagrant upしたらこんなエラーが出てきました.

VirtualBox is complaining that the kernel module is not loaded. Please run VBoxManage --version or open the VirtualBox GUI to see the error message which should contain instructions on how to fix this error.

Please run VboxManage --versionとかいているので実行してみると,

WARNING: The vboxdrv kernel module is not loaded. Either there is no module
         available for the current kernel (4.9.39-1-MANJARO) or it failed to
         load. Please recompile the kernel module and install it by

           sudo /sbin/vboxconfig

         You will not be able to start VMs until this problem is fixed.
5.1.24r117012

的なことが返されて,sudo /sbin/vboxconfigとか打ったら優勝ではwみたいなことを思い打ってみると,

sudo: /sbin/vboxconfig: コマンドが見つかりません

なるほどね.完全に理解した.(してない) :innocent:

完全に理解した僕はGoogle先生にエラーメッセージ + manjaroという単語をつけて投げました.
すると優秀なGoogle先生は下のサイトを返してくれました><

unix.stackexchange.com

なるほどね.完全に理解した.(英語がだめなので1mmも理解していない)

雰囲気からなんかインストールしろと言われてるっぽいのであやしい何かをインストールしたら解決しちゃったwというはなしです.

ゔぁーぢょん

OS: Manjaro 17.0.2 Gellivara
Kernel: x86_64 Linux 4.9.39-1-MANJARO
virtualbox-5.1.24-2
Vagrant 1.9.7

解決した方法

下のやつをポチポチした.

$ uname -r
# 自分の環境では4.9.39-1-MANJAROが返ってきました. 
$ yaourt -S linux49-virtualbox-host-modules

とやるとちゃんと動いてくれました><
めでたしめでたし

yaourt -S linux49-vir....のlinux49とかはversionに合わせて変えてください.
yaourtの一つ前のuname -rで返ってきた4.9.39-1-MANJAROの最初のところのやつです(雰囲気で読み取って)

hoge

調べたときに日本語のサイトがあんまりなかったので書いてみました><
間違ってるとかちゃうやろとかあったら教えてください

できへんやが><みたいな人いたらtwitterかコメントで聞いてくれたら自分のできる範囲でお答え島.

勢いで書いたので日本語がだめ.
全然関係ない話ですが,この記事を書いたのはテスト5日前くらいです.未だに勉強始めてないです.:)

Pythonのdocoptっていうライブラリが良さ

こんにちは〜〜〜, 筋肉痛中の@u_chi_ha_ra_です.

某韻を踏むアプリケーションを作っている際にコマンドライン引数の処理をなんかいい感じにやりたいな〜〜〜みたいな気持ちで適当に調べていたら良さげなものがあったので一応紹介です!w
韻を踏むやつ↓ github.com

main

github.com docopt—language for description of command-line interfaces
これです.(今更)

実行環境

OS : 
     Manjaro 17.0.2
version :
     pyenv 1.1.2-2
     python3.6

インストー

pip install docopt

でインストール.

使ってみる

__doc__ = """
Usage:
    hoge.py [-h] [--show] [--hello] N

Options:
    -h --help   show this help message 
    --show      show result
    --hello     Hello World
"""

from docopt import docopt

def main():
    args = docopt(__doc__)
    n = args["N"]
    
    if args["--show"]:
        print(n)
    if args["--hello"]:
        print("Hello World")

if __name__ == "__main__":
    main()
$ python hoge.py --hello
Hello World

$ python hoge.py --show hoge
hoge

$ python hoge.py
Usage:
    hoge.py [-h] [--show] [--hello] N

こんな感じで使えます.
使いやすい〜〜!

だいぶポ!wっとかけていい感じです

公式のUsageとかみるとわかりやすいはずです. 以上です.

最後

pythonCLIアプリケーションを書くときめっちゃ便利そうだなあと思いました.

python力をあげたいのでpythonCLIの何かをじゃんじゃん書いていきたいです ><

(ここで言うpythonはすべてpython3のことです)

Linuxbrewでpython3をinstallしようとするとunzipで怒られる.

タイトル通りです.

brew install python3

こうすると怒られます><

OSやLinuxbrewのversionはこんな感じです.

Description: Ubuntu 16.04.2 LTS  
Homebrew 1.2.2
Homebrew/homebrew-core (git revision 55e6d; last commit 2017-07-01)

エラー内容は以下の通り.

Error: Failure while executing: unzip -qq -q /home/user/.cache/Homebrew/python3--setuptools-32.2.0.zip

解決策(対応策)

linuxbrewでinstallされた(~/.linuxbrew/bin内の)unzipを消してもう一度installを進めるといけました.

うーむ()

多分他のunzipを使うやつでもエラー出ると思うので,毎回同じことするとかだとあれなので解決策知ってる方いたら教えてください><

Goのスライスの要素の削除について

Golangにスライスの要素を削除する関数がない

Goを書いているときにスライスの要素を消してやりたいぜ…みたいな感じで使いたくなり調べてみたら,Goにはスライスの要素を削除する関数がないということでした(ぱっと調べた感じ)

なので,簡単に実装してみました.

Hoge

index番号を指定して値を消すやつ(Pythonのpopてきな)

package main

import "fmt"

func pop(slice []int, search int) []int {
    result := []int{}
 
    for i, s := range slice {
        if i != search - 1 {
            result = append(result, s)
        }
    }
    return result
}

func main() {
    list := []int{0, 12, 3, 7, 5, 9}
    fmt.Println(list)

    list = pop(list, 2)
    fmt.Println(list)
}

Poyo

値を指定するとその値を消してくれるやつ(Pythonのremoveてきな)

指定した値がスライスに二つ以上ある場合はそいつらも消えます.

package main

import (
    "fmt"
)

func remove(slice []int, search int) []int {
    result := []int{}

    for _, v := range slice {
        if v != search {
            result = append(result, v)
        }
    }
    return result
}

func main() {
    list := []int{1, 2, 3, 4, 5, 6}
  fmt.Println(list)
 
  list = remove(list, 3)
  fmt.Println(list)
}

動かないとかここおかしいとかこうしたほうがいいよとか関数ありますとかあったら教えてくれるとうれしいです.