はてなキーワード: HomeBrewとは
M1 pro Macにて。ここ参照:https://github.com/magnusviri/stable-diffusion/tree/apple-silicon-mps-support
git clone https://github.com/magnusviri/stable-diffusion.git
cd stable-diffusion
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
conda activate ldm
mkdir -p models/ldm/stable-diffusion-v1/
https://huggingface.co/CompVis/stable-diffusion-v-1-4-original から`sd-v1-4.ckpt`をダウンロードして、
ln ~/Downloads/sd-v1-4.ckpt models/ldm/stable-diffusion-v1/model.ckpt
以下のパッケージを追加した。https://twitter.com/hevohevo/status/1562364961481162754?s=20&t=KxNXNB9fz99fbosZ8TfnvQ を参考に。
conda install onnx
pip install invisible-watermark
それで実行
python scripts/txt2img.py --prompt "a photograph of an astronaut riding a horse" --plms
するとエラーになる。https://qiita.com/hevo2/items/e646148a05118074fecf に従い、下記ファイルの2511行目を書き換え。
vi /opt/homebrew/Caskroom//miniforge/base/envs/ldm/lib/python3.10/site-packages/torch/nn/functional.py
自分は商用UNIXっぽいから20年近く使ってきたけどM1から完全に買う気力が失せた
その商用UNIXっぽさで国立大学とか公的な研究所でMacは導入されてきた経緯があるけど、
それはXQuartzとか前提にしている話であって、もうUbuntuもWaylandがデフォルトになる時代になってきたし、
Macはハードで強制的に対応できるOSを切り捨てるので、自分が所有するMacもOSを上げられなくなったし、
といっても、財産というか色々あるので、homebrewも対応が切れていちいちソースからビルドしろと言われるようになったけど、
まだWebとかグラフィック関係ないならコードも書けるし、テキスト周りはまだ使うけど、
でも、このへんでMacはやめてUbuntuかなあ、と思って、こうやってUbuntu使って書いてるわけだけど
Metalとかも面白そうではあるけど、もういいかなあという気がする
VAIOの偉い人が言ってたみたいに、AppleのM1みたいな試みは非常に面白いし歓迎するけど、
快適なユーザーエクスペリエンスはたった1つのチップから生み出されるわけではないので、
CPUが速いだの遅いだのも大事だけど、総合的なハードウェアの構成が快適環境に繋がるというのは同意なんだよね
そういえば、MacはOpenGLも対応しなくなったし、OpenGLの規格がクソみたいなのは理解できるけど、
MacのためにMetalに対応するより、動的にVulkanを無理矢理動かすような方法に落ち着く気もするし、
よく知らんけど、これからなんでないの?
M1がハイエンドに耐えるみたいにAppleが言ってるとしても、それは単なる売り文句だろうし
というか、このままAppleはチップの設計とか半導体産業で食っていくつもりなんだろうか
しかもiOSやmacOSのハードウェア、ソフトウェアも含む垂直統合でやっていくつもりなんだろうか
半導体は半導体だけやる→Intel、AMD、ARM、nVIDIA
こうやって分業するのは、とても一社だけではそのコストを賄い切れないというのがあると思う
何でもできる能力が優れた人がいたとしても、体力も優れていなければ、一人力でできる仕事は所詮一人力である
一人でなんでもやろうとすると、その一人力を分割することになる
人間は必ずミスをするのだから、他社同様にAppleもCPUやGPUの設計にバグを含ませるだろう
ただ、相当致命的なバグでなければ、それはOS以下のレベルで十分フォローできるとも考えられるわけで、
Apple製品の範囲内であればCPUレベルのバグやトラブルは誤魔化せるということである
しかし、Apple製のチップを他社に売る、というか普通の半導体メーカーならそうするわけだが、
そうなるとそのサポートなりトラブル対応をAppleという新参者の比較的小さい企業がやっていけるのだろうか
M1が登場して高評価も聞くが、自分は門外漢ながら上述のような方を危惧してしまう
個人的にはM1の性能がどうこうだの、homebrewの対応がどうこうだのより、そういった経営的な面というか、
経営的に安定しないのに開発も研究もクソもないわけで、技術やモノよりまずは金だと思うのだ
考えてみれば、Appleは基礎研究所みたいなのもないのではないだろうか
Microsoftはレドモンドにあるだろうし、やろうと思えばCPUもGPUも自社で設計から製造までできると思われるがやろうとはしない
Xboxだって最初から他社製品の寄せ集めで、初代はどちらかというと当時のMacのような構成だった気がする
できないだろうけど、Homebrewを通じて類似のソフトがインストールできたら、どうする?
奴らは「Homebrewが許可されているので、それを通じてインストールされるものは大丈夫だと思っていました」ってきっと言うぞ
Homebrewっていろんなものを引き入れるソフトでしょうが
Homebrewは許可ってことはHomebrewを通じて入るものは全部許可ってなるよね
Homebrew くらい
Macで仕事している人ってHomebrewとかきちんと会社のシステム部門を通してやってるの?
紹介派遣の人がインストールできないと仕事にならないので裁可をお願いします的なのが回ってきてMacはようわからん
業務使いするのに必須ならデフォルトで入っているべきだろと思うのは時代遅れナノカ
上は「自分たちのわからないものを使わないと業務ができないのならMacを使うの止めてしまえ」っていい出すし
下は下で「Macを使いたいです」ってMacを買わせておきながら「ParallelsとWindows10が必要です」「Officeも欲しいです」ってなんだよ
なんならデフォルトでNumbersとKeynoteが入っているので、これからはOfficeも必要ありませんとか稟議書に書いてなかったか?
最近、IT系の会社へ転職活動をしているのだがコーディングテストを採用しているところが昔と比べて非常に増えた印象を受ける。
種類としては大別すると以下の3種類。
・ホワイトボードに○○○について書いてください。
・オンラインで受験可能なコーディングテストを受けてください。
・(PCを与えられて)ライブコーディングで○○○についてプログラミングしてください。
====
Microsoft製品のバグを証明するプログラム付きのバグレポートを送った事もあるくらい自信があったので
これについて「自分がおかしいのかな?」と思ったら以下の記事を発見。
要は有名な開発者がテストに落ちたから採用されなかったという話
導入している企業側からしたら採用のコストを下げるために導入しているのだろう。
確かにプログラマーのレベルを図る上でコーディングテストに一定の効果はあるのかもしれない。
しかしながら、どう考えてもこれは所謂「お受験」対策しているかどうかであって、
天才的(全くの知識ゼロで最適なアルゴリズムを思いつく)なプログラマーを採用したいのなら悪くはないと思うが、
通常は集合知をいかに早く上手く組み合わせた上でアウトプットできるかが大事なんじゃないかと個人的には思う。
例えばソートアルゴリズムや探索アルゴリズム、暗号アルゴリズムなどは非常にアカデミックで
通常のプログラマはそういった人たちの成果を利用して色んな社会の課題を解消したり新しいサービスを作っている。
もしコーディングテストしたいのであれば前者と後者の違いを認識した上で評価しないとダメなのにどこも一律評価している。
まぁ、こちらからしてもそんな評価されるんであればそんな会社には入りたくないなーと思うので、
プログラマじゃないけどプログラミング完全に理解した()おばさんが理解してる基礎知識書くよ。
(追記 この文章はプログラミングの勉強をしたいけどその周辺にある基礎知識になかなか触れる機会がない人向けに書きました。これらの基礎知識があると、困ったときに調べ方すら分からないという状況は回避しやすくなるはず)
ターミナル、いわゆる黒い窓からCUI(コマンドユーザーインターフェース)でコンピュータを使う方法を覚えよう。これは大学のコンピュータリテラシーで習った。MacOSXで復習すると捗った。(追記 すごく間が抜けてたけどMacOSXはUnix系OSです)
まずはファイル操作。Macでターミナルを使って、cd Desktopって打ってからecho ohayou > aisatsu.txtって打ってみて、cat aisatsu.txtってやる。そうすると何が表示されるのか?とりあえずやってみよう。ここで>は増田の都合上大文字全角にしてるけど、ちゃんと半角にしてね。なんで増田の都合上半角がダメなのか、そのうち想像できるようになろう。(追記 ブコメ指摘感謝)
そして、実際にデスクトップを見に行ってみると、aisatsu.txtってファイルがあるはずなんで、開いてみよう。これで何が起こったのか7割くらいはわかるはず。
こういうファイル操作の基本をまず覚えよう。これこそ空気みたいなものだから。
(追記 ここも間が抜けてたけど確かにhogeって何かわからないね。直しました)
最近は何も考えなければ文字コードはとりあえずUTF-8でなんとでもなるようになってるけど、バックスラッシュとかは環境設定で出てくるように設定しないと出てこないし、その意味合い、つまりエスケープとしての使い方を頭に入れておくと後々困らないと思う。あとEOF(エンドオブファイル)とか改行コードとかもそういうものがあるよ程度には覚えておこう。これ頭の片隅にはいってないと分からん殺し的な罠にはまることがある。
これは使いたいプログラミング言語の公式サイトに行くと大抵書いてある。
でもMacだとだいぶ楽。とりあえずターミナルからgccって打ってみるとなんかCUIツールとか書いてあるものをインストールしろって言われるのでインストールする。これだけでCとかC++とかRubyとかPythonとか一通り使えるようになる。もしかしたら最近はこのインストールすらいらないかもしれないけど。
あと、シェルのコマンドとかプログラミング言語を実際に使うときはいろんなライブラリをインストールする必要があるけど、そのライブラリは管理がすごく面倒なので管理をまとめてくれるコマンドがあったりする。aptとかhomebrewとかがそういうのだから、そんなものの使い方も覚えておこう。
(追記 言語の文法を追うだけなら環境構築なんてしなくてCloud9とか使ってもいいかもだけど、プロダクトを作ろうとした時にはまだまだ手元で環境作って必要なライブラリを入れてとやった方が後々応用がきくと思うのですよ。それにそうしていくとDockerの有り難みなんかも理解できるようになっていくのではと思います)
最初に勉強するプログラミング言語は、Javaだけはやめておけ。
なんでかっていうと、Javaはオブジェクト指向言語ってやつなんだけどオブジェクト指向的にしか書けないから。古い人間だと言われそうだけど、最初は手続き型言語から始めるべきだと思ってる。少なくとも、手続き型的に書ける言語から始めるべき。
なぜそう思うのかも含めて、とりあえずおばさんが理解しているプログラミング言語の発展の経緯を軽く解説する。
最初の頃のプログラミング言語は、手続き型と呼ばれるものが多かった。
この〇〇型ってのはプログラミングをするときの考え方によって名前がついているんだけど、手続き型はまず0を作って、0に1を100回足して、最後にその結果を表示してください、みたいな、上から書いた順番通りに動くのが基本のルールである考え方。プログラムは基本的にはこうやってデータをアルゴリズムを使って変化させていって望む結果を得ている。でもこのやり方は問題も多かった。プログラム全体がひとかたまりになってしまっているので、数千行とかになるともう普通の人では手がつけられないし、人間のミスでデータを間違って扱ってしまうことがバグの温床になった。
なので、この手続き型の考えに構造化という考えが加わって、関数というものが生まれた。関数っていうのは料理のレシピに例えるとわかりやすいかも。
5:豚こまを入れて色が変わるまで炒めます。
9:火を消して8をお皿に盛り、野菜炒めの出来上がりです。
B:肉に味付けをします。
2:Bを入れて色が変わるまで炒めます。
3:Aを入れてしんなりするまで炒めます。
4:火を消して3をお皿に盛り、野菜炒めの出来上がりです。
って書ける。ここではAとBが関数。
この程度だとあまり意味を感じないかもしれないけど、これがもっと複雑なものを想像してみると、なんとなくありがたみが分かって来ないだろうか?こうすると、多人数でプログラミングをするときに、Aを書く人、Bを書く人、1〜4にまとめる人って感じで作業分担ができる。それに、バグが起きた時もAの領域でバグったのか、Bの領域でバグったのかとか、全体にまとめると上手くいかないのかとか、原因の切り分けがしやすい。
でも、プログラムがとっても複雑化すると、これでも手に負えなくなる。料理の例えを拡大すると、料理店を運営することを考えるといいかも。
料理店でたくさんの料理をさばくときに、レシピを完全に1から作ることってないと思う。Aさんが野菜の仕込み担当、Bさんがスープの仕込み担当、というように各人に仕事が割り振られているはず。AさんもBさんもそれぞれの仕込みのレシピを持っていて、最終的に出てくる仕込みがちゃんとしてればAさんBさんの仕事の詳細までいちいちシェフが細かくチェックしない体制になっていると思う。大雑把にいうとそういう考え方をプログラムで再現したのがオブジェクト指向型言語。
なので、本気で料理の初心者がいきなり厨房の仕切りを任されて上手くいくのは難しいように、構造化プログラミングのありがたみすらわからない段階でオブジェクト指向型プログラミングに手をつけても意味がわからんだろうと思うのがおばさんの立場です。
(追記 おばさんはRubyを勧めておきます。オブジェクト指向型言語ですが、手続き型的に書き下すことも出来るからです。一つの言語で手続き型構造化オブジェクト指向、全部勉強できます。メソッドも便利なのが一通りあるし、日本語を扱うのにも問題が少ないです)
次に問題を分解できるようになろう。
例えば、クイズゲームを作りたいと考えたときにクイズゲームを作りたいです、って問題は大きすぎる。
クイズゲームに必要な要素は、問題文を表示する、回答を入力してもらう、正誤判定をする、正誤判定の結果を表示する、ということだなぐらいにまず分解する。
これを実際にプログラミングしようとすると、もっと分解できてさらに問題が見えてくると思う。
コンピュータってのは創造的なことはできない代わりに、とても簡単なことをとても階層的に重ね合わせて大きな問題を解けるように作られてる。それを心するといいと思う。
これ超大事。プログラミングって本当に自分で1からものを考えなきゃいけないことってあまりない。大きな問題はあなただけの問題かもしれないけれど、それを構成する小さな問題は大抵他の誰かが解いている問題なので、調べてみれば答えが見つかると思う。
エラーメッセージが出てきたらまずググってみる。翻訳しても初心者には意味がわからないし、ググったら誰かが解説付きで紹介してくれているのでその解説を読んだりしながらエラーメッセージとの付き合い方を覚えていけばいい。
メソッドの使い方がわからなかったら言語の公式サイトに行ってみる。メソッドの使い方で大事なのは呼び出し方、返ってくる値の型とかそういうのだから、こういうところはググるよりも公式サイトに書いてあることをしっかり読んで理解する。
あと、アルゴリズムの勉強もしてみるといいと思う。アルゴリズムとデータ構造と計算量の勉強。大学の学部レベルの教科書をちゃんと読んでみると、例えばデータベースを操作するSQLというものを書くことになった時とかに効いてくる。あとは作ったプログラムが遅すぎてどうしようとかいうのを解決する時とか。
なんか深夜までいろいろ書いてしまったけど、あくまでもプログラマじゃないおばさんが書いたものなので、みんなでツッコミとか入れてくれると大変助かります。
一番最初にHomebrewを落としてくるときなんだけど、素のOSX LoinのcURLを使ってHomebrew用のcURLを落とす過程で、セキュリティ接続のエラーが起きてるみたいだ。
困らないケースって、その人がHomebrewを導入したタイミングではまだレポジトリが高いセキュリティを要求してなかったとか、
あるいはFinkやMacPortsから移行する場合、新しめのOpenSSLやcURLを入れていたからセキュリティ接続ができたんじゃないか、と思う。
とにかく、素のLionのcURLはHomebrewのcURLを落としてこれない。セキュリティ証明書の問題かもしれないが、そのあたりはよく分からないからなんかもういいってなってる。
俺はターミナルを快適に使える+普通の作業(Excel, Word, インターネット)もできるっていうのが好きだよ
perlやらシェルスクリプトやらでパパっと処理を書いたりするので、ターミナルが使えるととても助かる
fink、macport、homebrewなんかでCUIプログラムでも導入しやすいし。まあこれはLinuxならたいてい同程度以上の機能を持ってるけど。
Winでcygwinやらmingwやらも使ったことあるけど、Macみたいに基板がUNIXってわけじゃないからかどうも使いづらかった
あとはemacsみたいなショートカットキー(Ctrl+kとかCtrl+aとか)が大体のアプリで使えるっていうのも、無いとストレスが溜まるレベルでありがたい
http://anond.hatelabo.jp/20130321232234
しかしカーネルハックなどのgentoo系らしい活動をほとんどしてこなかった。というかメンテナも一年のおわりにやめてしまったし、自前ebuildもしたことがない。準FreeBSDのような状態なのかもしれない。
二年次の夏休みあたりから、今いる環境を生かせそうなものを考えた結果、多少興味の沸いたいくつかのgentoo系のアーキテクト分野の参考書で勉強してみようとしてみたものの、そんな本ない。というか、カーネルのビルドの仕方が未だによくわからない。
大学1-2年で学ぶ基礎的なgccソースリーディングにしても、周囲の同級生と比較する中で、自分には適正が無いと感じた。
モチベーションを維持することが出来ない。継続的に他者との交流を得られる場所を見つけられればそれで何とかなるのかもしれない。
ビルド代行等のアルバイトを始められればいいのかもしれない。しかしアルバイト面接に持っていけるような、今までの成果物などもとくに無い。
明確な目標を立てるのがまず最初にすべき事であるのはわかるのだが、それもよくわからない。
なにか自分に人並みに適正のあるものを見つけて、それを学び、モチベーションを維持できる環境を見つけたい、それがhomebrewなのであればMac欲しい、そういうぼんやりとした希望だけが浮かぶ。学部一年のころから分かっていたそこから進歩していない。
春休みに入ってからは、Windows系の入門書を読んだり、単位はとったがほとんど理解できていなかったportageシステムの復習をしている。
しかしずっと一人でいると、QEMUなど苦手なパッケージの集中力はどんどん落ちるのを感じる。aptやyumに逃げてしまう。一日の終わりには周りとの差は開いていく一方なのではないかと不安になる。
書く場所がなくて恥ずかしいのでここに書く。
rbenvではうまく動かなかった。
MacportじゃなくてHomebrewを使ったのはなんとなくの判断。
Homebrewとrvmだったら適当にGoogleして出てくる情報の通りに環境構築すればうまくいった。
Consumer KeyとConsumer Secretは Twitter用開発者登録 『https://dev.twitter.com/apps/ 』でアプリ登録したときに得られる。
irbを使って
Pit.set('auth_twitter', :data => { :id => 'aifFkexyHYiy0on8dTD8EA' , :secret => 'RwDz4OHrKfXAp0n31POslr1t87tKQgtZHRv3rNYpoM' })
こんな感じでConsumer KeyとConsumer Secretを設定する必要がある
あるいは
EDITOR環境変数にテキストエディタへのフルパスを指定する必要がある
export EDITOR=/usr/bin/vi
こんな感じで。そうすると初回起動時にエディタが起動する(らしい)ので
---
auth_twitter:
:id: aifFkexyHYiy0on8dTD8EA
:secret: RwDz4OHrKfXAp0n31POslr1t87tKQgtZHRv3rNYpoM
こんな感じで情報を入れる。
ここまでやれば動くよ! たぶん!
わざわざPitの説明とかしねーよなぁ、とは感じた。でも、知らないと誰も教えてくれない気がする。こんな感じの情報の断片化が多い気がするんですよねrubyまわりって……(※個人の感想です)。
massr / massr.rb
×CUNSUMER → ○CONSUMER
です。