投稿者「」のアーカイブ

俺 について

anonymous engineer

Google BigQueryでタブ区切りTSVをインポート&エクスポート

すごいよく使うけどよく忘れるのでメモ

TSVのインポート
※ヘッダあり・10行未満のエラーは無視

$ bq load --source_format=CSV --encoding=UTF-8 --field_delimiter='\t' --skip_leading_rows=1 --max_bad_records=10 project:dataset.table file.tsv id:int64,name:string,...

TSVでエクスポート

$ bq extract --destination_format=CSV --field_delimiter='\t' project:dataset.table gs://gcsbucket/file.tsv

Spark ScalaでsortByKeyを降順にする

SparkでreduceByKeyしたあとにsortByKeyで降順にソートしたかったのでメモ

sortByKey()の引数に ascending = falseを渡す。

val totalByItem = rdd.reduceByKey((x, y) =>  (x + y)) //要素毎にカウントして (要素, 個数)のtupleにする
val flipped = totalByItem.map(x => (x._2, x._1)) // tupleの要素と個数を入れ替えて(個数、 要素)にする
val sorted = flipped.sortByKey(ascending= false) // 降順でソート

Ubuntu 18.04 に Scala をインストール

Ubuntu(Xubuntu) 18.04にScalaをインストールしたんだが、REPLで打ち込んだ文字がエコーされなかったのでメモ

まずはaptでscalaをインストール

$ sudo apt install scala

インストールしたらscalaのREPLを起動

$ scala

と、REPLが起動するんだが、何を打ち込んでもターミナルにエコーされない。
構わずに「println(“hoge”)」と入力してEnterを押すと「hoge」と出るので、エコーだけの問題

解決策は、ここに書いてあった。JLine2ライブラリの問題。
sbt – Scala REPL no echo on input – Stack Overflow

以下の手順で直った。

$ wget https://launchpad.net/~lokkju/+archive/ubuntu/java-compat/+build/16458066/+files/libjline2-java_2.14.6-1ubuntu1~bionicppa1_all.deb
$ sudo dpkg -i libjline2-java_2.14.6-1ubuntu1~bionicppa1_all.deb

これでREPLが正常に動作する。

HuaweiのHonor MagicbookにXubuntu 18.04をインストール

PCを買い替えたのでメモ。
ファーウェイのHonor Magicbookをgeekbuying.comから購入。
ネットでの注文から出荷まで5営業日、それからちょうど7日後に到着。

Huawei Honor Magicbook laptop AMD Ryzen 5 3500U Quad Core 14″ IPS 1920*1080 8GB DDR4 512GB SSD

こいつはWindows中国版がプレインストールされていて、起動と同時に中国語で喋りだすw

中国版Windows。地域選択で「日本」を選んでも日本語にはならない。

「待て、慌てるな、これは孔明の罠だ!」と司馬仲達っぽいセリフを脳内で唱えつつ、
Windowsに用はないので即座にXubuntuクリーンインストールの計を実行。

中国語で喋り続けるMagicbookにXubuntuのインストールUSBを刺して再起動。

BIOS画面を開くには、起動時にF2キーを押しっぱなしでOK。
Fast BootとSecure Bootを無効にして、BootオプションではGeneral UEFIからの起動を選択。

で、さらに再起動後インストーラが起動するので、HDDを消去してからXubuntuをインストール完了。

MagicbookにXubuntuをクリーンインストール

あとは諸々設定するんだが、どうも画面の輝度が調整出来ない。
※そしていまだに未解決。

ググってgrubの起動オプション変えたり、無理やり /sys/class/backlight/acpi_video0/brightness 書き換えたり。
あとはAMDが公開してるGPUドライバーをインストールしたりと試すが変わらず。
で、そんな事してたらVirtubalboxが起動しなくなった。。

screen 0 does not appear to be DRI2 capable

というエラーを吐いて落ちる。

仕方ないので輝度調整は一旦諦めて、amdgpu-pro-uninstallでドライバー削除。

$ sudo amdgpu-pro-uninstall
$ sudo apt autoremove
$ sudo dpkg-reconfigure xorg

再起動したらVirtualboxも起動した。

そのうちカーネルパラメータいじったりアップデートで直るだろうからしばらく放置。

nkfでUTF-8のBOMを削除する

nkfでBOM付きのUTF-8をBOMなしのUTF-8Nに一発変換したかったのでメモ

hoge.txtのBOMを削除

$ nkf --overwrite --oc=UTF-8 hoge.txt

おまけ:hoge.txtにBOMを追加

$ nkf --overwrite --oc=UTF-8-BOM hoge.txt

GCPとSoftEther VPNで固定IPゲートウェイ環境を作る

会社のISP回線は固定IPじゃないのだが、GCPを使って固定IPゲートウェイを作ったのでメモ

まず最初に某オープンVPN使ったが速度が遅い、というか通信途切れる。
MTUとMSS調整してもどうも接続が途切れるので2日で諦めたw

次いで、昔外から家の中のPCにつなぐ時に使ってたSoftetherがさらに進化してるというのでトライ。

1. GCEでVM立てる

まずはGCEでUbuntuインスタンスを立てる。
マシンタイプはn1-standard-1にした。個人用途ならg1-smallでもいいが、会社で数名が使うのでスタンダードで。

ネットワーク設定で、IP forwarding(IP転送)の設定をONにした。
てか、これいらないのかな?某オープンVPNの時は必須だったのでそれを倣っただけ。
VM作ったあとだとIP forwarding設定を変更出来ないのよね。

Network Tagに「vpn」という文字列をセットする。
あとでVPC Firewall Rules設定で、vpnタグに対しての通信を許可するため。

そしてExtenal IPをStaticにして固定IPにしておく事。

IP転送設定とネットワークタグを追加

2. VPC Firewall Rules設定で穴をあける

新しいFirewallルールをdefault-allow-vpnという名前で作る。
ネットワークタグ「vpn」に対してIngress通信を許可で、許可ポートは下記のもの

tcp:5555
udp:500,1701,4500

tcp:5555がSoftether用で、udpポートはMacのL2TP/IPSec用のポート。マカー社員用の措置。

VPC Firewall設定

3. Softether VPN Serverのインストール

Ubuntuへのインストールは公式の方法だとinitdを使う起動方法しか書いてないので、このサイトを参考にしてsystemdで起動するようにした。
自分だけのVPNサーバを作る!Ubuntu 18.04 に SoftEther VPN Serverをインストール

ビルドに必要なライブラリを先にインストールしておく必要があるので、

$ sudo apt-get install build-essential

で先にインストールしておく。

ファイヤーウォールはGCPのVPC Firewall設定でやるので、ufwは使わない。

インストール後、vpncmdというコマンドラインのCUI管理機能でセットアップするんだが、これが分かりづらかったの代替案。
Virtualbox内のWindowsゲストOSにSoftetherVPN Server ManagerというGUI管理ツールをインストールして設定。
これは楽だw

ゲストWindows上でSoftetherのGUIツールを実行すると楽

※話が脱線するが、VirtualboxをUbuntuにインストールする手順はこちらに書いてます。で、Windowsもってない場合はここから60日間だけ使える検証用WindowsのOVAファイルをダウンロードして、Virtualboxにインポートすれば60日間使えます。

やることは仮想ハブとユーザーを作成し、SecureNAT機能をONにするのと、あとはDHCPサーバー機能もONにした。

そして、ローカルブリッジ機能は絶対にONにしてはイケない。
やりたことはNATなのでローカルブリッジは不要。
しかし、最初よくわからずローカルブリッジをONにした結果、CPU利用率が100%になって全く通信出来ない状況になった。
というわけで、SecureNAT機能を使う時は、ローカルブリッジは必ず無効にする。

External IPを固定にしてるので、ダイナミックDNS機能は無効化する。
GUIから無効化しようとしると、設定ファイルを編集してオフにしろという。
というわけで設定ファイル編集画面から一旦設定ファイルをエクスポートして、それを編集してDDNSをオフ→そして再びインポートすればDDNS無効化できる。

DDNS設定を無効化

ユーザーを追加して、次はSoftetherクライアントのインストール

4. Softether VPN Clientのインストール

サーバーはUbuntu、そしてクライアントもUbuntu(Xubuntu)である。

Linuxクライアントのインストール方法はServer版と全く同じです。
なので、上記でやった手順の「server」を「client」に読み替えて、クライアントをインストールします。

で、コマンドライン設定がメンドサイので、これまたVirtualboxのゲストWindowsにSoftetherVPN Client ManagerをインストールしてGUIで仮想NICの作成と接続設定を作成。
これまた楽w
vpncmdで、RemoteEnableを実行しておくとVirtualboxクライアントからリモート接続できます。
Vitrualboxホストオンリーネットワークを有効にしてるので、そこから繋ぎます。

そして厄介なのがSoftether接続後に自分でルーティング設定を変える必要がある。
そしたらsoftetherクライアント起動後にルーティング設定を追加するためのスクリプトを書いた人がいたので、それを参考にした。

SoftEther VPN ClientをUbuntu 14.04LTSで使うときにちょっとはまったこと – KITA Eng.

ルーティング変更後、下記ページを開いてIPアドレスがGCEのExternal IPアドレスになってれば、Softetherをゲートウェイにしたアクセス完了という事。

IPアドレス確認 | KWONLINE.ORG

これで、DHCPで度々IPアドレスが変わる会社でも常に固定IPでネットにアクセスできる固定IPゲートウェイの出来上がり。

Ubuntu起動時に「システムプログラムの問題が見つかりました」

Ubuntu (Xubuntu) で起動時に「システムプログラムの問題が見つかりました」というメッセージが表示されるようになったのでメモ。

crashログを消して、apportを無効にすれOK

$ sudo rm -rf /var/crash/*

/etc/default/apport を編集してenabled=0にする

enabled=0

apportを再起動

$ sudo systemctl restart apport

参考サイト
How do I enable or disable Apport? – Ask Ubuntu

gsutilで大きいファイルをパラレルアップロードする

GCSバケットに、gsutilで大きなファイルをアップロードするのでメモ

150M以上のファイルをパラレルにする場合

$ gsutil -o GSUtil:parallel_composite_upload_threshold=150M cp [ファイル名] gs://[GCSバケット]

~/.botoファイルに追記しておいてもOK

parallel_composite_upload_threshold = 150M

公式ドキュメントに書いてある。
cp – Copy files and objects  |  Cloud Storage  |  Google Cloud

Ubuntu上のVirtualboxでKali LinuxをゲストOSにする

Kali Linuxを使ってテストをしたかったのでメモ。

Virtualboxのセットアップ

まずはUbuntu (うちはXubuntu) 18.04 bionic にVirtualboxをインストール。

Linux_Downloads – Oracle VM VirtualBox

/etc/apt/sources.list に下記を追加

deb https://download.virtualbox.org/virtualbox/debian bionic contrib

それからVirtualboxのPGP鍵を追加

$ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -

aptでVirtualboxをインストール。
Extension Packも一緒にインストール。

$ sudo apt update
$ sudo apt install virtualbox
$ sudo apt install virtualbox-ext-pack

 

Kali Linux(ゲストOS)を入れる

Virtualbox用のイメージをダウンロードする。
Kali Linux Custom Image Downloads – Offensive Security

「Kali Linux VirtualBox Images」タブの中の、「Kali Linux Vbox 64 Bit Ova」をダウンロード。
torrentイメージがあるので、これで爆速DLした。

Virtualboxを起動したら、[ファイル] > [仮装アプライアンスのインポート]を選んで、さっきの.ovaファイルを選択してインポートするだけでKaliが使える。

起動したら、ログインIDはroot、パスワードはtoorで入れる。