SlideShare une entreprise Scribd logo
1  sur  26
Windows改造計画
不自由な窓の檻を抜け自由なる電子の海へ飛び立つ方法
2015/05/18 KMC ID: astatine
自己紹介
 戸籍名: 荒井 隆志 (Arai Takashi)
 KMC ID: astatine (原子番号85の元素At)
 言語 : C++,Python,gnuplot,…
 活動 :
 Pythonでツールを作る
 Webからデータを落とす, etc…
 位置天文観測衛星Nano-JASMINEの
観測データ解析方法の研究
 詳しくはJASMINE計画で検索すべし
 好物 :
 パズル,ボードゲーム,世界樹の迷宮, etc…
このNano-JASMINEは京大と東大の研究室によって作られた、世界で2番目の位置天文観測のはず
Nano-JASMINE
最近の出来事
 3年間使っていたノートPCを修理に出した
 電源コネクタの接触不良
 見積もりの結果、液晶とマザーボードを交換
 一体どこが残っているのか
 新しいノートPC(Windows8.1)を買った
 環境設定
 Python,C++の開発環境
 便利ツール
 前の設定の移行以外にも色々試行
 今回の講座でその知見を広めてみよう
色々試したら一月経っていた
今回の講座の目的
 今回対象とする開発環境の説明をする
 ついでにWindowsが抱える問題点の紹介をする
 Windowsに開発環境を入れる
 Linuxコマンド
 C/C++, Python開発環境
 gcc, g++, clang, python3, etc…
 その他ライブラリ
 boost, etc…
文字多めなのは許して下さい
Linuxコマンド: Linuxとは
パソコンのOSは3種類に分けられる
Windows OSX Linux
•Microsoft
•一番普及している
•GUI
•Programing?
•Apple
•GUI
•Programingも…
•Free
•サーバー等
•CUI
•Programing!!!
特徴
•ゲーム機
•VisualStudio
だけが存在意義
•IE死ね
•修理に金がかかる
•大学から貸りたら
これだった
•スタバドヤ顔用
•KMCのサーバー
•Windowsを捨てて
辿り着いた地
•Rootのおもちゃ
KMC的特徴
•†闇† •†闇† •†闇†
闇に飲まれよ!
Linuxコマンド: Linuxコマンド
ファイル情報を見る
di
r
ls ls
ファイル名を変更する
rename mv mv
ファイルを移動する
move mv mv
各OSの端末への命令(コマンド)の違い
Linux, OSXはコマンドが共通
Windowsだけコマンドが違う
そもそもwindowsのコマンドは便利そうなものが無いからよく知らない(フラグ)
C/C++
 C(1972~)/C++ (1983~)
 実際早い
 現在でも最速であり速度の基準
 実際ヤバイ
 ポインタという劇薬
 人が多く、良いコードと悪いコードの差が凄い
 C++はもっとヤバイ
 Templateという魔境, C++という名のCのコード
 学習コスト,時間を贄にして大いなる力を得られる黒魔術
 コード設計, メモリ管理, ビルド方法, …
 Linux, OSXは開発環境がデフォルトで入っている
 Windowsには入っていない
C++は容量用法を守って服用しましょう
Python
 Python(1991~)
 オブジェクト指向スクリプト言語
 読みやすいコードが書けるようになる
 プログラミング初心者でも大丈夫
 Linux, OSXは開発環(ry
KMCに入部した日にPythonを勧められて、
その日の内に素数列・フィボナッチ数列の
プログラムを作れるようになりました。
一ヶ月後には2048のAIを作成し、
部内のコンテストに参加しました。
KMC2回生の声
その数時間で,関数の作成の仕方, ファイル入出力, importによるコード分割方法も仕込まれた模様
コマンドプロンプト cmd.exe
 Windowsの端末 諸悪の根源
 文字コード
 cp932(SJIS)で固定
 フォント
 基本的に固定(レジストリを弄れば追加可能)
 背景が黒一色
 変更可能だが単色
 入力補完されない
 環境変数設定
 コントロールパネル->システム->システムの詳細設定
 面倒
git logの表示が乱れたり, SJISのせいで例外処理したprintが必要になったり……
cmdの醜悪なる姿
デフォルト
カスタマイズ後
レジストリ弄ってフォントをOsakaにして,背景を白色に文字を黒にした
WindowsにLinuxコマンドを入れる
 msys2を入れる
 MSYS2 installer
 https://msys2.github.io/
 msys (Minimal SYStem)
 Unix-Likeなshell環境を構成するためのコマンド群
ls, mv, rm, etc…
 端末 mintty が付属する
 MinGW(Minimal GNU for Windows)
を補うための付属品
 msys2になって大幅に強化された
……に過ぎなかった
msysの時点では
以前のmsysはコマンド群くらいの価値しかなかった
msys2の主な変更点
 パッケージ管理システム
 pacman
 ArchLinuxの
PacageManager
 pacman --version
 ディレクトリ構成
 Unix-Like C:/msys
/usr
/bin
/lib
/include
…
/home
/mingw32
/mingw64
/dev
/tmp
…
インストール先
ここにPATHを通すと
mintty ls等が使用可
環境変数HOME
をここに設定しよう
HOME=C:msyshomeAstaine
pacmanとパックマンは無関係である。いいね?
pacmanの使い方
 インストール
 pacman -S hogehoge
 検索
 pacman -Sl | grep hogehoge
 Update
 pacman -Syu
 削除
 pacman -R hogehoge
 パッケージ情報を見る
 pacman -Si hogehoge
あとはpacman --helpで調べよう
mintty
 Path関係
 C:msysがルートディレクトリとして扱われる
 Unix-Like!!!!
 cd /c/, cd /d/でCドライブ,Dドライブに移動できる
 cmdでは cd /D D: とする必要があった
 文字コード,フォントが自由
 背景を透過させることができる
 入力補完が利く
 設定が幅広く簡単
 .bashrc .minttyrcで簡単に設定を追加変更できる
 aliasも可能
msys2になって色がつくようになったり色々強化されている
C/C++開発環境を入れる
 MinGW-w64のページヘ飛ぶ
 http://mingw-w64.yaxm.org/doku.php
 Downloadsからinstallerを入手
 Mingw-buillds
 installer内でgccのversion等を選択する
 version 4.9.2, X86_64 or i686, posix or win32, …
 適当なinstall先を設定する
 デフォルトでは C:mingw
 そこにPATH(環境変数)を通す
 msys2ならこんな面倒なことをしなくても…
MinGWはver4.8.1で止まってしまった
C/C++開発環境を整える by msys2
 pacman -Sl | grep gcc で検索
 mingw32 mingw32-w64-i686-gcc <-32bits版
 mingw64 mingw64-w64-x86_64-gcc <-64bits版
 msys gcc <-上の2つの方が充実しているため非推奨
以降mingw32, mingw64の双方をmingwXXと呼称する
 pacman -S mingw-w64-XX-gcc でインストール
 Pathを通す /mingwXX/bin
 Windowsのシステムの環境設定で変更しても
 ~/.bashrc内で設定しても良い
 export PATH=/mingwXX/bin:${PATH}
 MinGWはmsys2の付属物なのでこの方が自然
もうPathで悩まずに済む
C/C++開発環境を整える msys2の利点
 パッケージ管理とディレクトリ構成の恩恵
 ライブラリのインストールが容易
 pacmanに含まれるライブラリ
 boost (最強)
 Eigen3 (行列演算)
 OpenCV(画像解析)等
 これらがpacman –S hogehoge とするだけで
includeやlibに配置される
 そうでないと自分でダウンロード,ビルドして,
CPLUS_INCLUDE_PATH,LIBRARY_PATH等の
環境変数を弄るひつようがある
 バージョンアップが容易
-I や-L で指定していたのが馬鹿らしくなる
Python開発環境を整える
 Pythonの公式ページに行く
 https://www.python.org/
 version 3.4と2.7から選択
 Python3.4 メイン
 Python2.7 ライブラリ等の問題で渋々使う用
 適当な場所を選んでインストールする
 後で変更するとScriptの実行時に問題が発生(対応可)
 PATHを通す
 C:python34;C:python34Scripts;C:python27;C:python27Scripts
 py.exeで切り替えて起動できる
 py -X.Y でpythonX.Yを起動
 環境変数 PY_PYTHON でデフォルトを指定できる
 msys2ならこんな面倒なことをしなくても…
Win+r「ファイル名を指定して実行」で起動するPythonのversionを指定する方法は不明
Python開発環境を整える by msys2
 pacman -Sl | grep python
 mingwXX mingw-XX-python2
 mingwXX mingw-XX-python3
 msys python <-(3.x)
 msys python2
 pacman -S ~~ でinstall
 mingwXXの方が充実しているのでmsysの方は推奨しない
 しかし幾つか問題が存在する
完
Windowsの闇は深い
Python開発環境を整える msys2の問題
 mintty は対話形式での実行に問題がある
 入力カーソルがどっか行ってしまう
 公式が対応しないことを名言している(要出典)
 解決策
 わざわざコマンドプロンプト(cmd.exe)を使う… うぅ…
 winptyを使う
>pacman –S winpty
>winpty python3
~/.bashrc内に alias python='winpty python3'
毎回winptyを付けずに済んで楽
Python3.xがデフォルトになって良い
それでも完全には解決しない… cmdの闇は深い
以前のmsysには対処法が存在しなかった
Python開発環境を整える msys2の問題
 ビルド元の違い
 Python(Windows): VisualStudio2010でビルド
 Python(MSYS) : gccでビルド
 拡張ライブラリの問題
 高速化のためにPython以外の言語で書かれたライブラリ
 元のPythonと同じものでビルドされている必要
 以前はそのためだけにVisualStudio2010を入れていた
 windows用にgccでビルドされたバイナリは捜索困難
 ソースコードから自前でビルドしなければならない
 VisualStudioでビルドされたものはwhrで存在する
 有名なライブラリはpacmanでなんとかなるが……
 lxml, numpy, scipy, matplotlib, etc…
Mecabを入れようとしたら入らなかった
Python開発環境を整える msys2の問題
 文字コードの違い
 msysのPythonは標準入出力の文字コードがcp932
 mintty(ls等)の文字コードはutf-8
 pythonの表示文字列が文字化け
 環境変数設定で対応可能(PYTHONIOENCODING=utf8)
 winpty越しの起動でも対応可能
 コマンドライン引数で問題
 winpty python3 hoge.py -s ほげほげ <- Error
 対応策
 端末の文字コードを切り替える
 export LANG=ja_JP.SJIS
 cmdをmintty上で起動する
 $ winpty cmd
 > python3 hoge.py -s ほげほげ
両立不可
嗚呼!やはりSJISからは逃げられない
msys2の利点: パッケージ
 pacmanで入手できる他のパッケージ
 エディタ
 nano, vim, emacs
 プログラミング関係
 make, mingw32-make, cmake, clang, git, doxygen, etc…
 コマンド
 openssh, tmux, wget, man, witch, diff, etc…
 他言語
 ruby, perl, rust
vim vs emacs on windows
msys2の便利コマンド
 start
 ダブルクリックで起動したようになる
 例
 start .
 現在のディレクトリを開く
 start cmd
 コマンドプロンプトが新たに開く
 この方法で開くとlsとかが文字化けしない(要検証)
 start ~~.mp4 or ~~.mp3
 動画/音楽の再生が可能
 これを使えばexplorerを開かなくてもよい
 元々はcmdの内蔵コマンド
 cmd上でhelp startを入力すれば詳細が見れる
今まで知らなかった。
msys2に祝福されたWindowsの姿
lsに色つけたり, tmux入れたり, 色設定変更したり, syntax onしたり
まとめ
 msys2でLinuxのような開発環境を整えられる
 C/C++に対しては文句なし
 他の言語は要検証
 Pythonは一長一短
 CUIとGUIが合わさり最強に見える
 もはやWindowsの原型が残っていない
 フォント等にも手を加えると良い
 Ricty + gdipp(0.9.1)
 msys2を使いこなせればもうLinuxでも大丈夫なはず
 段々とCUIに慣れて行こう
 msys2の今後に期待
だがWindowsはWindows

Contenu connexe

Tendances

Raspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみるRaspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみるKenichiro MATOHARA
 
Linux の hugepage の開発動向
Linux の hugepage の開発動向Linux の hugepage の開発動向
Linux の hugepage の開発動向Naoya Horiguchi
 
C++ in Embedded Systems
C++ in Embedded SystemsC++ in Embedded Systems
C++ in Embedded Systemskikairoya
 
小ゼミ進捗 0601
小ゼミ進捗 0601小ゼミ進捗 0601
小ゼミ進捗 0601robo_lab
 
オープンソース開発と、 あるフレームバッファコンソールの話 ~名古屋応用編~
オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~
オープンソース開発と、 あるフレームバッファコンソールの話 ~名古屋応用編~nullnilaki
 
hpingで作るパケット
hpingで作るパケットhpingで作るパケット
hpingで作るパケットTakaaki Hoyo
 
ちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをKenichiro MATOHARA
 
Landscape of Norikra features
Landscape of Norikra featuresLandscape of Norikra features
Landscape of Norikra featuresSATOSHI TAGOMORI
 
Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)
Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)
Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)Kenji Aoyama
 
grn_ts の紹介 - Groonga Meatup 2015
grn_ts の紹介 - Groonga Meatup 2015grn_ts の紹介 - Groonga Meatup 2015
grn_ts の紹介 - Groonga Meatup 2015s5yata
 
マリオシーケンサをポケミクに対応した
マリオシーケンサをポケミクに対応したマリオシーケンサをポケミクに対応した
マリオシーケンサをポケミクに対応したjingbay
 
Linuxでソフトシンセを作って動かす
Linuxでソフトシンセを作って動かすLinuxでソフトシンセを作って動かす
Linuxでソフトシンセを作って動かすMasahiko Kimoto
 
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)Kenichiro MATOHARA
 
芸人を 目指すわけでは ないけれど…(n575)
芸人を 目指すわけでは ないけれど…(n575)芸人を 目指すわけでは ないけれど…(n575)
芸人を 目指すわけでは ないけれど…(n575)Masataka Kondo
 
Infrastructure of Pathtraq
Infrastructure of PathtraqInfrastructure of Pathtraq
Infrastructure of PathtraqKazuho Oku
 
Ctb57 with god7
Ctb57 with god7Ctb57 with god7
Ctb57 with god7kingtomo
 

Tendances (20)

自作GPUへの道
自作GPUへの道自作GPUへの道
自作GPUへの道
 
Raspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみるRaspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみる
 
Linux の hugepage の開発動向
Linux の hugepage の開発動向Linux の hugepage の開発動向
Linux の hugepage の開発動向
 
C++ in Embedded Systems
C++ in Embedded SystemsC++ in Embedded Systems
C++ in Embedded Systems
 
小ゼミ進捗 0601
小ゼミ進捗 0601小ゼミ進捗 0601
小ゼミ進捗 0601
 
20201005 sd#17 kitazaki
20201005 sd#17 kitazaki20201005 sd#17 kitazaki
20201005 sd#17 kitazaki
 
オープンソース開発と、 あるフレームバッファコンソールの話 ~名古屋応用編~
オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~
オープンソース開発と、 あるフレームバッファコンソールの話 ~名古屋応用編~
 
hpingで作るパケット
hpingで作るパケットhpingで作るパケット
hpingで作るパケット
 
ちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxを
 
Landscape of Norikra features
Landscape of Norikra featuresLandscape of Norikra features
Landscape of Norikra features
 
Jubakitの紹介
Jubakitの紹介Jubakitの紹介
Jubakitの紹介
 
EE
EEEE
EE
 
Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)
Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)
Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)
 
grn_ts の紹介 - Groonga Meatup 2015
grn_ts の紹介 - Groonga Meatup 2015grn_ts の紹介 - Groonga Meatup 2015
grn_ts の紹介 - Groonga Meatup 2015
 
マリオシーケンサをポケミクに対応した
マリオシーケンサをポケミクに対応したマリオシーケンサをポケミクに対応した
マリオシーケンサをポケミクに対応した
 
Linuxでソフトシンセを作って動かす
Linuxでソフトシンセを作って動かすLinuxでソフトシンセを作って動かす
Linuxでソフトシンセを作って動かす
 
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
 
芸人を 目指すわけでは ないけれど…(n575)
芸人を 目指すわけでは ないけれど…(n575)芸人を 目指すわけでは ないけれど…(n575)
芸人を 目指すわけでは ないけれど…(n575)
 
Infrastructure of Pathtraq
Infrastructure of PathtraqInfrastructure of Pathtraq
Infrastructure of Pathtraq
 
Ctb57 with god7
Ctb57 with god7Ctb57 with god7
Ctb57 with god7
 

En vedette

私はこうやってSlackを社内で流行らせました
私はこうやってSlackを社内で流行らせました私はこうやってSlackを社内で流行らせました
私はこうやってSlackを社内で流行らせましたNHN テコラス株式会社
 
機械学習を学ぶための準備 その4 (行列の掛け算について) 試験問題 解答
機械学習を学ぶための準備 その4  (行列の掛け算について) 試験問題 解答機械学習を学ぶための準備 その4  (行列の掛け算について) 試験問題 解答
機械学習を学ぶための準備 その4 (行列の掛け算について) 試験問題 解答NHN テコラス株式会社
 
Google Photosにネットで拾ったイラストを溜め込む
Google Photosにネットで拾ったイラストを溜め込むGoogle Photosにネットで拾ったイラストを溜め込む
Google Photosにネットで拾ったイラストを溜め込む京大 マイコンクラブ
 
slackを(大学の授業で)使おう
slackを(大学の授業で)使おうslackを(大学の授業で)使おう
slackを(大学の授業で)使おうMasanori Kado
 
オセロの終盤ソルバーを100倍以上高速化した話
オセロの終盤ソルバーを100倍以上高速化した話オセロの終盤ソルバーを100倍以上高速化した話
オセロの終盤ソルバーを100倍以上高速化した話京大 マイコンクラブ
 
大学生のためのSlack入門
大学生のためのSlack入門大学生のためのSlack入門
大学生のためのSlack入門6uclz1
 
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編京大 マイコンクラブ
 

En vedette (20)

slackのログとりの話
slackのログとりの話slackのログとりの話
slackのログとりの話
 
家庭で使うSlack
家庭で使うSlack家庭で使うSlack
家庭で使うSlack
 
私はこうやってSlackを社内で流行らせました
私はこうやってSlackを社内で流行らせました私はこうやってSlackを社内で流行らせました
私はこうやってSlackを社内で流行らせました
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
機械学習を学ぶための準備 その4 (行列の掛け算について) 試験問題 解答
機械学習を学ぶための準備 その4  (行列の掛け算について) 試験問題 解答機械学習を学ぶための準備 その4  (行列の掛け算について) 試験問題 解答
機械学習を学ぶための準備 その4 (行列の掛け算について) 試験問題 解答
 
Google Photosにネットで拾ったイラストを溜め込む
Google Photosにネットで拾ったイラストを溜め込むGoogle Photosにネットで拾ったイラストを溜め込む
Google Photosにネットで拾ったイラストを溜め込む
 
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
 
C++ マルチスレッド 入門
C++ マルチスレッド 入門C++ マルチスレッド 入門
C++ マルチスレッド 入門
 
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作るGoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
 
よいコード、わるいコード
よいコード、わるいコードよいコード、わるいコード
よいコード、わるいコード
 
CUI3D
CUI3DCUI3D
CUI3D
 
文字コード基礎論A
文字コード基礎論A文字コード基礎論A
文字コード基礎論A
 
C#でゲームを作る2016 第1回
C#でゲームを作る2016 第1回C#でゲームを作る2016 第1回
C#でゲームを作る2016 第1回
 
slackを(大学の授業で)使おう
slackを(大学の授業で)使おうslackを(大学の授業で)使おう
slackを(大学の授業で)使おう
 
オセロの終盤ソルバーを100倍以上高速化した話
オセロの終盤ソルバーを100倍以上高速化した話オセロの終盤ソルバーを100倍以上高速化した話
オセロの終盤ソルバーを100倍以上高速化した話
 
大学生のためのSlack入門
大学生のためのSlack入門大学生のためのSlack入門
大学生のためのSlack入門
 
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
 
C#でゲームを作る2016 第7回
C#でゲームを作る2016 第7回C#でゲームを作る2016 第7回
C#でゲームを作る2016 第7回
 
Altseed
AltseedAltseed
Altseed
 
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
 

Similaire à Windows改造計画

GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)Ryuuta Tsunashima
 
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築yaegashi
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成Izumi Tsutsui
 
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会Hitoshi Sato
 
JAMstackは眠らない
JAMstackは眠らないJAMstackは眠らない
JAMstackは眠らないKuniyoshi Tone
 
A story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88kA story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88kKenji Aoyama
 
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座Masahito Zembutsu
 
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれNGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれDNA Data Bank of Japan center
 
Pythonによる並列プログラミング -GPGPUも-
Pythonによる並列プログラミング   -GPGPUも- Pythonによる並列プログラミング   -GPGPUも-
Pythonによる並列プログラミング -GPGPUも- Yusaku Watanabe
 
Kibanaでsysstatを可視化する
Kibanaでsysstatを可視化するKibanaでsysstatを可視化する
Kibanaでsysstatを可視化するKensuke Maeda
 
自作仮想化基盤 「n0stack」の紹介
自作仮想化基盤 「n0stack」の紹介自作仮想化基盤 「n0stack」の紹介
自作仮想化基盤 「n0stack」の紹介Takeshi Take
 
Anaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみたAnaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみたYosuke Onoue
 
Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asioPub/Sub model, msm, and asio
Pub/Sub model, msm, and asioTakatoshi Kondo
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門Yosuke Onoue
 
201209 Biopackathon 12th
201209 Biopackathon 12th201209 Biopackathon 12th
201209 Biopackathon 12thSatoshi Kume
 

Similaire à Windows改造計画 (20)

GTC Japan 2017
GTC Japan 2017GTC Japan 2017
GTC Japan 2017
 
Open VZ
Open VZOpen VZ
Open VZ
 
統計解析ソフトR
統計解析ソフトR統計解析ソフトR
統計解析ソフトR
 
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
 
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
 
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
 
JAMstackは眠らない
JAMstackは眠らないJAMstackは眠らない
JAMstackは眠らない
 
A story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88kA story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88k
 
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
 
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれNGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
 
Ansible2.0と実用例
Ansible2.0と実用例Ansible2.0と実用例
Ansible2.0と実用例
 
Pythonによる並列プログラミング -GPGPUも-
Pythonによる並列プログラミング   -GPGPUも- Pythonによる並列プログラミング   -GPGPUも-
Pythonによる並列プログラミング -GPGPUも-
 
Kibanaでsysstatを可視化する
Kibanaでsysstatを可視化するKibanaでsysstatを可視化する
Kibanaでsysstatを可視化する
 
自作仮想化基盤 「n0stack」の紹介
自作仮想化基盤 「n0stack」の紹介自作仮想化基盤 「n0stack」の紹介
自作仮想化基盤 「n0stack」の紹介
 
20130819 jjugnslt
20130819 jjugnslt20130819 jjugnslt
20130819 jjugnslt
 
Anaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみたAnaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみた
 
Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asioPub/Sub model, msm, and asio
Pub/Sub model, msm, and asio
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
 
201209 Biopackathon 12th
201209 Biopackathon 12th201209 Biopackathon 12th
201209 Biopackathon 12th
 

Plus de 京大 マイコンクラブ

かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話京大 マイコンクラブ
 
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換京大 マイコンクラブ
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ京大 マイコンクラブ
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?京大 マイコンクラブ
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜京大 マイコンクラブ
 
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会京大 マイコンクラブ
 
DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」京大 マイコンクラブ
 

Plus de 京大 マイコンクラブ (20)

テキストファイルを読む💪 第1回
テキストファイルを読む💪  第1回テキストファイルを読む💪  第1回
テキストファイルを読む💪 第1回
 
かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話
 
Common Lisp入門
Common Lisp入門Common Lisp入門
Common Lisp入門
 
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
 
Geometry with Unity
Geometry with UnityGeometry with Unity
Geometry with Unity
 
セミコロンレスc++
セミコロンレスc++セミコロンレスc++
セミコロンレスc++
 
エンジニアと健康
エンジニアと健康エンジニアと健康
エンジニアと健康
 
女の子になれなかった人のために
女の子になれなかった人のために女の子になれなかった人のために
女の子になれなかった人のために
 
Pietで競プロしよう
Pietで競プロしようPietで競プロしよう
Pietで競プロしよう
 
もし太陽のコアがIntelCoreだったら
もし太陽のコアがIntelCoreだったらもし太陽のコアがIntelCoreだったら
もし太陽のコアがIntelCoreだったら
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
 
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
 
No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)
 
DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」
 
C#でゲームを作る2016 第5回
C#でゲームを作る2016 第5回C#でゲームを作る2016 第5回
C#でゲームを作る2016 第5回
 
C#でゲームを作る2016 第3回
C#でゲームを作る2016 第3回C#でゲームを作る2016 第3回
C#でゲームを作る2016 第3回
 
Ultra piet
Ultra pietUltra piet
Ultra piet
 
お絵かきをはじめよう!
お絵かきをはじめよう!お絵かきをはじめよう!
お絵かきをはじめよう!
 

Windows改造計画

  • 2. 自己紹介  戸籍名: 荒井 隆志 (Arai Takashi)  KMC ID: astatine (原子番号85の元素At)  言語 : C++,Python,gnuplot,…  活動 :  Pythonでツールを作る  Webからデータを落とす, etc…  位置天文観測衛星Nano-JASMINEの 観測データ解析方法の研究  詳しくはJASMINE計画で検索すべし  好物 :  パズル,ボードゲーム,世界樹の迷宮, etc… このNano-JASMINEは京大と東大の研究室によって作られた、世界で2番目の位置天文観測のはず Nano-JASMINE
  • 3. 最近の出来事  3年間使っていたノートPCを修理に出した  電源コネクタの接触不良  見積もりの結果、液晶とマザーボードを交換  一体どこが残っているのか  新しいノートPC(Windows8.1)を買った  環境設定  Python,C++の開発環境  便利ツール  前の設定の移行以外にも色々試行  今回の講座でその知見を広めてみよう 色々試したら一月経っていた
  • 4. 今回の講座の目的  今回対象とする開発環境の説明をする  ついでにWindowsが抱える問題点の紹介をする  Windowsに開発環境を入れる  Linuxコマンド  C/C++, Python開発環境  gcc, g++, clang, python3, etc…  その他ライブラリ  boost, etc… 文字多めなのは許して下さい
  • 5. Linuxコマンド: Linuxとは パソコンのOSは3種類に分けられる Windows OSX Linux •Microsoft •一番普及している •GUI •Programing? •Apple •GUI •Programingも… •Free •サーバー等 •CUI •Programing!!! 特徴 •ゲーム機 •VisualStudio だけが存在意義 •IE死ね •修理に金がかかる •大学から貸りたら これだった •スタバドヤ顔用 •KMCのサーバー •Windowsを捨てて 辿り着いた地 •Rootのおもちゃ KMC的特徴 •†闇† •†闇† •†闇† 闇に飲まれよ!
  • 6. Linuxコマンド: Linuxコマンド ファイル情報を見る di r ls ls ファイル名を変更する rename mv mv ファイルを移動する move mv mv 各OSの端末への命令(コマンド)の違い Linux, OSXはコマンドが共通 Windowsだけコマンドが違う そもそもwindowsのコマンドは便利そうなものが無いからよく知らない(フラグ)
  • 7. C/C++  C(1972~)/C++ (1983~)  実際早い  現在でも最速であり速度の基準  実際ヤバイ  ポインタという劇薬  人が多く、良いコードと悪いコードの差が凄い  C++はもっとヤバイ  Templateという魔境, C++という名のCのコード  学習コスト,時間を贄にして大いなる力を得られる黒魔術  コード設計, メモリ管理, ビルド方法, …  Linux, OSXは開発環境がデフォルトで入っている  Windowsには入っていない C++は容量用法を守って服用しましょう
  • 8. Python  Python(1991~)  オブジェクト指向スクリプト言語  読みやすいコードが書けるようになる  プログラミング初心者でも大丈夫  Linux, OSXは開発環(ry KMCに入部した日にPythonを勧められて、 その日の内に素数列・フィボナッチ数列の プログラムを作れるようになりました。 一ヶ月後には2048のAIを作成し、 部内のコンテストに参加しました。 KMC2回生の声 その数時間で,関数の作成の仕方, ファイル入出力, importによるコード分割方法も仕込まれた模様
  • 9. コマンドプロンプト cmd.exe  Windowsの端末 諸悪の根源  文字コード  cp932(SJIS)で固定  フォント  基本的に固定(レジストリを弄れば追加可能)  背景が黒一色  変更可能だが単色  入力補完されない  環境変数設定  コントロールパネル->システム->システムの詳細設定  面倒 git logの表示が乱れたり, SJISのせいで例外処理したprintが必要になったり……
  • 11. WindowsにLinuxコマンドを入れる  msys2を入れる  MSYS2 installer  https://msys2.github.io/  msys (Minimal SYStem)  Unix-Likeなshell環境を構成するためのコマンド群 ls, mv, rm, etc…  端末 mintty が付属する  MinGW(Minimal GNU for Windows) を補うための付属品  msys2になって大幅に強化された ……に過ぎなかった msysの時点では 以前のmsysはコマンド群くらいの価値しかなかった
  • 12. msys2の主な変更点  パッケージ管理システム  pacman  ArchLinuxの PacageManager  pacman --version  ディレクトリ構成  Unix-Like C:/msys /usr /bin /lib /include … /home /mingw32 /mingw64 /dev /tmp … インストール先 ここにPATHを通すと mintty ls等が使用可 環境変数HOME をここに設定しよう HOME=C:msyshomeAstaine pacmanとパックマンは無関係である。いいね?
  • 13. pacmanの使い方  インストール  pacman -S hogehoge  検索  pacman -Sl | grep hogehoge  Update  pacman -Syu  削除  pacman -R hogehoge  パッケージ情報を見る  pacman -Si hogehoge あとはpacman --helpで調べよう
  • 14. mintty  Path関係  C:msysがルートディレクトリとして扱われる  Unix-Like!!!!  cd /c/, cd /d/でCドライブ,Dドライブに移動できる  cmdでは cd /D D: とする必要があった  文字コード,フォントが自由  背景を透過させることができる  入力補完が利く  設定が幅広く簡単  .bashrc .minttyrcで簡単に設定を追加変更できる  aliasも可能 msys2になって色がつくようになったり色々強化されている
  • 15. C/C++開発環境を入れる  MinGW-w64のページヘ飛ぶ  http://mingw-w64.yaxm.org/doku.php  Downloadsからinstallerを入手  Mingw-buillds  installer内でgccのversion等を選択する  version 4.9.2, X86_64 or i686, posix or win32, …  適当なinstall先を設定する  デフォルトでは C:mingw  そこにPATH(環境変数)を通す  msys2ならこんな面倒なことをしなくても… MinGWはver4.8.1で止まってしまった
  • 16. C/C++開発環境を整える by msys2  pacman -Sl | grep gcc で検索  mingw32 mingw32-w64-i686-gcc <-32bits版  mingw64 mingw64-w64-x86_64-gcc <-64bits版  msys gcc <-上の2つの方が充実しているため非推奨 以降mingw32, mingw64の双方をmingwXXと呼称する  pacman -S mingw-w64-XX-gcc でインストール  Pathを通す /mingwXX/bin  Windowsのシステムの環境設定で変更しても  ~/.bashrc内で設定しても良い  export PATH=/mingwXX/bin:${PATH}  MinGWはmsys2の付属物なのでこの方が自然 もうPathで悩まずに済む
  • 17. C/C++開発環境を整える msys2の利点  パッケージ管理とディレクトリ構成の恩恵  ライブラリのインストールが容易  pacmanに含まれるライブラリ  boost (最強)  Eigen3 (行列演算)  OpenCV(画像解析)等  これらがpacman –S hogehoge とするだけで includeやlibに配置される  そうでないと自分でダウンロード,ビルドして, CPLUS_INCLUDE_PATH,LIBRARY_PATH等の 環境変数を弄るひつようがある  バージョンアップが容易 -I や-L で指定していたのが馬鹿らしくなる
  • 18. Python開発環境を整える  Pythonの公式ページに行く  https://www.python.org/  version 3.4と2.7から選択  Python3.4 メイン  Python2.7 ライブラリ等の問題で渋々使う用  適当な場所を選んでインストールする  後で変更するとScriptの実行時に問題が発生(対応可)  PATHを通す  C:python34;C:python34Scripts;C:python27;C:python27Scripts  py.exeで切り替えて起動できる  py -X.Y でpythonX.Yを起動  環境変数 PY_PYTHON でデフォルトを指定できる  msys2ならこんな面倒なことをしなくても… Win+r「ファイル名を指定して実行」で起動するPythonのversionを指定する方法は不明
  • 19. Python開発環境を整える by msys2  pacman -Sl | grep python  mingwXX mingw-XX-python2  mingwXX mingw-XX-python3  msys python <-(3.x)  msys python2  pacman -S ~~ でinstall  mingwXXの方が充実しているのでmsysの方は推奨しない  しかし幾つか問題が存在する 完 Windowsの闇は深い
  • 20. Python開発環境を整える msys2の問題  mintty は対話形式での実行に問題がある  入力カーソルがどっか行ってしまう  公式が対応しないことを名言している(要出典)  解決策  わざわざコマンドプロンプト(cmd.exe)を使う… うぅ…  winptyを使う >pacman –S winpty >winpty python3 ~/.bashrc内に alias python='winpty python3' 毎回winptyを付けずに済んで楽 Python3.xがデフォルトになって良い それでも完全には解決しない… cmdの闇は深い 以前のmsysには対処法が存在しなかった
  • 21. Python開発環境を整える msys2の問題  ビルド元の違い  Python(Windows): VisualStudio2010でビルド  Python(MSYS) : gccでビルド  拡張ライブラリの問題  高速化のためにPython以外の言語で書かれたライブラリ  元のPythonと同じものでビルドされている必要  以前はそのためだけにVisualStudio2010を入れていた  windows用にgccでビルドされたバイナリは捜索困難  ソースコードから自前でビルドしなければならない  VisualStudioでビルドされたものはwhrで存在する  有名なライブラリはpacmanでなんとかなるが……  lxml, numpy, scipy, matplotlib, etc… Mecabを入れようとしたら入らなかった
  • 22. Python開発環境を整える msys2の問題  文字コードの違い  msysのPythonは標準入出力の文字コードがcp932  mintty(ls等)の文字コードはutf-8  pythonの表示文字列が文字化け  環境変数設定で対応可能(PYTHONIOENCODING=utf8)  winpty越しの起動でも対応可能  コマンドライン引数で問題  winpty python3 hoge.py -s ほげほげ <- Error  対応策  端末の文字コードを切り替える  export LANG=ja_JP.SJIS  cmdをmintty上で起動する  $ winpty cmd  > python3 hoge.py -s ほげほげ 両立不可 嗚呼!やはりSJISからは逃げられない
  • 23. msys2の利点: パッケージ  pacmanで入手できる他のパッケージ  エディタ  nano, vim, emacs  プログラミング関係  make, mingw32-make, cmake, clang, git, doxygen, etc…  コマンド  openssh, tmux, wget, man, witch, diff, etc…  他言語  ruby, perl, rust vim vs emacs on windows
  • 24. msys2の便利コマンド  start  ダブルクリックで起動したようになる  例  start .  現在のディレクトリを開く  start cmd  コマンドプロンプトが新たに開く  この方法で開くとlsとかが文字化けしない(要検証)  start ~~.mp4 or ~~.mp3  動画/音楽の再生が可能  これを使えばexplorerを開かなくてもよい  元々はcmdの内蔵コマンド  cmd上でhelp startを入力すれば詳細が見れる 今まで知らなかった。
  • 26. まとめ  msys2でLinuxのような開発環境を整えられる  C/C++に対しては文句なし  他の言語は要検証  Pythonは一長一短  CUIとGUIが合わさり最強に見える  もはやWindowsの原型が残っていない  フォント等にも手を加えると良い  Ricty + gdipp(0.9.1)  msys2を使いこなせればもうLinuxでも大丈夫なはず  段々とCUIに慣れて行こう  msys2の今後に期待 だがWindowsはWindows