verilog書く人

自称ASIC設計者です。どなたかkaggle一緒に出ましょう。

Ubuntu 18.04でPycharmをランチャーとお気に入りに登録する。

PyCharmを公式からダウンロードして展開して/bin/pycharm.shを叩けば実行できるが、 常に左に表示されているgnomeのお気に入りバーにこんな感じで登録されていた方が立ち上げやすい。

f:id:segafreder:20190429152842p:plain

続きを読む

Ubuntu 18.04でGDBビルドチャレンジ

GDBUbuntuならばsudo apt-get install build-essentialでインストールすることができるが最新版を使いたい場合は自分でビルドする必要がある。

 

さて、GDBビルドチャレンジだが基本的にはこの記事が正確なのでその通りやればよい。

本の虫: GCCのSVN trunkをビルドする方法

特にflexをインストールせずにmakeすると、syslex.c not foundというメッセージが出る。

慌ててsudo apt-get install flexしても、やはり同じメッセージが出る。

この場合、もう一度ダウンロードしなおして、./configureからやり直すのが手っ取り早い。

 

一応手順

 

 公式からtar.gzをダウンロードし、展開

 

sudo apt-get install flex libgmp-dev libmpfr-dev libmpc-dev libisl-dev
cd gdb-8.2
./configure --disable-multilib
make -j2 # if you want to use 2 cpu
make install

 

自作している競技プログラミング用IDE for Rust進捗

大分動作は安定してきたので、もうAtomはやめてこちらに移りました。

ファイアーエムブレム由来でrujaionという名前にしました(暫定)

 

github.com

 

続きを読む

ThinkPad13 + Ubuntu16.04でやった設定

CapsLockキーのCtrl化

コマンド一発でCapsLockをCtrlに変える方法 | Linux Fan

 

の通りやればよい。

$ sudo gedit /etc/default/keyboardで

XKBOPTIONS="ctrl:swapcaps"

の行を加える。

ただし、

$ sudo systemctl restart console-setup

しても設定は反映されなかったが、再起動すると無事CapsLockキーは無効になった。

 

Bluetoothの起動時無効

Bluetooth 無効化 - からっぽの日記(2011-07-08)

 

を行う。

$ sudo gedit /etc/sysfs.conf

して、

devices/platform/thinkpad_acpi/bluetooth_enable = 0

の行を追加する。

 

トラックポイントの感度調整

 色々調べたが、thinlpadでもX13だけドライバの場所が違うので、方法が違ったりする。

結局。

$  xinput --list --short
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ ETPS/2 Elantech TrackPoint id=13 [slave pointer (2)]

みたいな表示を出して、TrackPointのドライバの名前を調べる。
$ xinput --set-prop "ETPS/2 Elantech TrackPoint id" "Device Accel Constant Deceleration" 0.35

とかやると速くなる。最後の数字が小さいほど速い。0.1とか入れると扱いづらくなるので注意。

 これを.bashrcにいれるなりして起動時に実行されるようにする。

ホントはsystemdとか使った方がいいんだろうけど、まだうまくいってない。

Rustでdefaultdict

RustでPythonのDefaultDictのようにデフォルト値を持ったハッシュマップを使いたい場合、 entry APIを使って、以下のようにすればよい。

    let mut normal_map = std::collections::HashMap::<i32, i32>::new();

    // normal_map[3]を呼ぶ。ただし、存在しなければmap[3] = 5とする。
    // println!("{:?}", normal_map[3]); はできないことに注意する。
    println!("{:?}", *normal_map.entry(3).or_insert(5));  // 5

    // normal_map[4]に1を足す。ただし、存在しなければmap[4] = 5としてから1を足す。
    (*normal_map.entry(4).or_insert(5)) += 1;
    println!("{:?}", *normal_map.entry(4).or_insert(5));  // 6

    // normal_map[5]を6とする。ただし、存在しなければmap[5] = 5としてから6を代入する。
    (*normal_map.entry(5).or_insert(5)) = 6;
    println!("{:?}", *normal_map.entry(5).or_insert(5));  // 6
続きを読む