「シェルスクリプト」を含む日記 RSS

はてなキーワード: シェルスクリプトとは

2017-03-09

Docker盲信してる皆様へ

そもそも便利なのかちゃんと考えてる?

「日々Dockerfileをメンテして開発環境がこんなに楽になります!」

Dockerなので本番とも開発者同士でも同じになります!」

馬鹿じゃねーのかw?

Dockerfileメンテなんて手順書メンテとかシェルスクリプトメンテしてんのと大して変わらねーよw

そのDockerfileから作ったものが本番と同一だなんて保証はねーって気づけボケ

本番と同じものを作りたかったら本番からコンテナ作れよ

なんでビルド始めちゃうの?無駄じゃん馬鹿じゃん

それと「同じDockerfileから作ったものから環境差異はありません」なんて寝言まだ言ってるの?

yumaptリポジトリセキュリティアップデートやらで変化する以上

いつも同じ結果になるわけじゃねーだろが、(バージョンロックする方法はあるけどめんどいだろ)

本番でもコンテナを使ってますってやつら以外無理してDocker使う必要ないんじゃねーか?

お前らが欲しいのは軽いVMであって細切れのコンテナじゃねーだろ?

initを潰して,supervisor入れてプロセス管理して・・・ってどう考えてもお前らが望む世界じゃないんじゃねーか?

流行りのコンテナぽくしたいならLXDやらsystemd-nspawnの方がよっぽど筋がいい

というわけでよく考えなおせ

みんながDocker言ってるから無理やり使うって運用やめろ

2017/04/22 追記

続き書いた

http://anond.hatelabo.jp/20170422000230

2017-03-08

Railsつらい

バージョンアップがツライ

毎度毎度、バージョンアップで非互換修正加えてコード修正必要になって、Gemも上がって依存が壊れて

いつまでやってんだよw

Railsプロジェクトでどれだけの人が最新版追従できてんだよ?テストを書いてれば余裕?

本当かよ?正直に言ってみろよ?実際はレガシーRailsの山だろw

概念・周辺ツールがツライ

ヘルパーやらマイグレーションの仕組みやら最初は良いかなと思ったけど、どう考えてもやり過ぎだ

短くかけるとか喜んでるやつは一度考え直せ

複雑さがRails側に寄ってるだけでなんも解決してない

それで良いんだって自分コントロールできない知らないコード依存して結局バージョンアップ地獄みてるだろw

最低限中で何が起きてるか理解しとけよwまあ理解できるころにはRailsでなくても良かったんやwってなるけどなw

RAILS_ENV=productionだとstaticファイル自分で返さないassetコンパイルで小さくしましょう

→ developmentで動いてたけど本番だと動きませんでしたw

どんな茶番だよw馬鹿か?

Gemがツライ

毎度毎度、アホみたいにGem入れやがって、もう自分で把握できる状態じゃねーだろ?

bundlerだから完璧にvendoring出来ますだって

本当かよnaitive extensionGemなんてどう考えたってRails管理外のヘッダファイル依存すんだろ

bundle installがこけるなんて日常茶飯事だろw

環境構築がツライ

ruby入れてGem入れてGem入れるためのヘッダ用意して

めんどくせーなbundlerもこけるし、rbenv使ってrubyバージョン揃えろとか

ホントめどくせーよ

deployもcapistrano便利とか言ってるけれど、そんなに便利じゃねーよw

あんDSL覚える時間あんならシェルスクリプト書けるようになっとけ

rackサーバがたくさんあってよかったねじゃねーよ集約しろ馬鹿

unicorn, puma比較しましたとかアホ記事書いてる暇あるなら集約するかなにかしとけ

信者がツライ

この手の話すると信者が使わない方法もある・選択しない方法もあるとか擁護してくるけど

そりゃあるけどそれ調べんのがめんどくせーって言ってんだよw

何でもかんでもレールに乗せてそれを強要してくるような感じがすんだよw

turbolinksなんて仕組みをデフォルトONにしてくるやつらの態度が嫌なんだよ

2017-01-18

中学生でもできる! 素因数分解プログラムを書いてみよう(bashで)

http://anond.hatelabo.jp/20170117205622

より。

「ワイは全然すごくない」という増田書き込みに対して「いや全然すごいよ」みたいな書き込み散見されるようだが、ここではっきりと申し上げておきましょう。

素因数分解プログラムで解くとかとか中学生でもできるぞ」と。つまり増田全然すごくないし、この記事を書くワイも全然すごくない。

素因数分解というのはなんか用語だけ聞くと難しそうに思うが、要は「ある数字素数の組み合わせに分解」するだけの話である

数字素数で割っていけば自然素因数分解が行えるのである

というわけで増田全然凄くないの根拠として、以下に素因数分解を行うプログラムサンプルを挙げる。

このプログラムbashで書いてあるが特にbashである必然性はないのでphpなりCで書き直してみるといいだろう。

中学生のお子様がいるご家庭の方は、これをサンプルとして別の言語で書かせてみると、その子プログラミング素養が図れるかもしれない。

#! /bin/bash

n=$1;
a=2;
while [ $a -lt $n  ]
do
  #割って余りが0なら素因数やな!
  m=$((n%a));
  if [ $m == 0 ]
  then
    # $n は 素数やない! $a で割り切れんで!
    #a自体素数かどうか調べなあかんecho -n "${a}x";
    n=$((n/a));
    a=2;
    continue;
  fi
  #素因数やないので割る数を増やしてみるで
  a=$((a+1));
done;
#余った $n は素数やな
echo  $n;

最初ソースバグってた。ちょっとしました)

このソースtest.shなどのシェルスクリプトファイル作成してその中に記述する。ソース記述した後はchmod +x で実行権限をつけてあげることを忘れないようにしよう。

このプログラムは渡された一番目の引数に対して素因数分解を行う。整数以外を入れた場合動作保証できないので、適宜チェック処理を入れるなりしよう。

このプログラムを実行すると、結果は以下のようになる。

$ ./test.sh 114514
2x31x1847

結果が不安なら電卓計算してみればいい。必ず合うはずだ。

ついでにクリップボードコピーする

結果を出すのはいいとして、元増田クリップボードコピーして貼り付けまでを手動で行っていたそうな。

MacOSならばクリップボードコピーするまでを一貫して行うことも可能だ。pbcopyというコマンドを使う。

$ ./test.sh 114514|pbcopy

これでクリップボードコピーされた状態になるので、そのままニコニコなりのコメント欄コピーすればいい。これで俊速素因数分解コメントが書き込めるようになる。

また、いちいちpbcopyコマンドを打つよりも今回作成したシェルスクリプトの中でpbcopyまでを行ってしまうのもありかもしれない。

いずれにせよ、今回の素因数分解というプログラムはかなり簡単な部類になるため、初心者への課題としてはうってつけだ。

どうです、簡単でしょう? 

ちなみに実行速度ですが、よほどデカ素数でもない限りジョン・フォン・ノイマン暗算よりは早いはずです。多分……

2016-12-11

http://anond.hatelabo.jp/20161210155344

何でCTOシェルスクリプト書かせてるの?おかしいのは会社でしょ。

そもそもrootで動かしたりしてるならむしろシスアド側の問題だし、バージョン管理してないなら開発側にも問題がある。

正しく管理されてる環境ならrm *がヘクったくらいじゃ何も困らない。食らったホストを作り直したりする手間はあるだろうが、重要ファイルが飛んだりするのはやり方が悪いだけ。

2016-12-05

例のフリーランスおじさんについて

フリーランスになって、嫌な思い出 - Qiita

http://qiita.com/mesaka/items/41ec09a4dae3fba6dd6c

Qiita登録しているGitHubアカウントを見ると、たしかGitGitHubが苦手なんだなあというのを感じる。

https://github.com/mesaka

それはまあともかく、プロフにあるURLを踏むと合同会社設立されていることがわかる。

ついでに言うとWantedlyにも企業ページを作っていて、そこのプロフ等にも不穏なことが書かれているのだけれど割愛

http://nunatoi.jp/

ここまで公開している立場で、あのコメント欄の態度は自分の首を絞めていないか?という疑問はさておき、GitHub名前検索したらTwitterアカウントが出てくる。

https://twitter.com/mesaka2009

いろんな人間に裏切られて鬱病になりました。もう人生に疲れていますPHPは大好き!早く正社員になってもいいです!! ※このツイートフィクションが含まれています検挙件数稼ぎの警察の方の自宅に来襲はご遠慮下さい。

bioの内容が不穏すぎるがさておき、このTwitterアカウント検索するとDMM面接で落ちて逆恨みしたり、コロプラ面接号泣していたことが既に増田ヲチされていたことが分かる。

すでに指摘されているが、妻子持ちでTwitterにはこの時期かなり不穏なこともつぶやいていたらしい。

結局何が言いたいかというと、特にない。

件のQiita記事に関しては「書いてあることが事実ならチャットワーク社が反省すべきことはあるけど、この人の数年レベル普段言動から見ても、書いてある内容をそのまま鵜呑みにして語ることはできない」と思った。

ちなみに去年のカレンダーにはこんなこと書いてたのに、どうしてしまったんだろうなあ。

特定企業個人実名を悪意で晒すのはやめましょう。

http://qiita.com/advent-calendar/2015/free-engineer

(追記)該当の記事を見たら、コメントフリーランスおじさんを焚き付けてるおじさんが新たに登場してた。調べたらこの人も特定人物ケンカ売りたいだけの記事Qiitaに書いてた。

品位が問われるAdvent Calendar -- シェルスクリプトはどこでも動く! - Qiita

http://qiita.com/richmikan@github/items/5f53a14a79874d56a2ff

POSIX原理主義者の品位 - Togetterまとめ

http://togetter.com/li/1056218

ちなみにこの人は松浦智之氏で最近WindowsMacUNIX すべてで20年動くプログラムはどう書くべきか』という本を書いている。著作者情報によれば1975年まれ40代。ついでに言うと、件のフリーランスおじさんはWantedlyに生の職務経歴書pdfを公開していて、そこから年齢が40歳であることがわかる。なんだ、プログラマーは40超えたらこんな風におかしくなってしまうのか。プログラマー35歳定年説は正しかったのかもしれない。

2016-07-18

Vimフィルタコマンドで使うUNIXコマンド

http://vim-jp.org/vimdoc-ja/change.html#filter

Vimにはフィルタコマンドといって、テキスト任意UNIXコマンドで処理するExコマンドが用意されている。

用意されていて、実際強力なんだけど、Vim組み込み機能で間に合うことも多くて、下記以外はあまり使っていない気がする。

以前はVim正規表現に慣れないからとPerlを使ってたりもしたけれど、Vim正規表現も悪くないかなとなって。こう。

何かおすすめUNIXコマンドがあったら教えてください。

bc

簡単計算をするときに使う。1行に計算式を書いて「:.!bc<CR>」あるいは「!!bc<CR>」とすると計算ができる。

(小数を扱いたいときは-lオプション指定する)

「<C-r>=」で代用できる。

sh

長めのコマンドを実行するときに使う。「:%!sh<CR>」とすると書いたシェルスクリプトを実行できる。

最近Bashの<C-x><C-e>で良い気がしてる。こちらだとヒストリで戻って<C-x><C-e>として再編集することもできるので。

column

簡単な整列をするのに使う。ビジュアルモード選択して「!column -t<CR>」とすると整列ができる。

(デフォルトのセパレータがスペース二つなので、一つにしたければ-oオプション指定して「!column -to' '<CR>」という風にする)

vim-easy-alignやvim-aligntaが入っているならそれでいいかも。

jq, xmllint, pup

それぞれJSONXMLHTMLを整形するのに使う。JSONは「:%!jq .<CR>」、XMLは「:%!xmllint --format -<CR>」、HTMLは「:%!pup<CR>」。

ただ「jq . <JSONファイル> | vim -」としていたりして、直接Vimの中で使ってない場合が多いかも。

awk

連番を振る時、重複行を削除する時、指定した列を抜き出す時、などなど、色々なことに使える。

それぞれ「:%!awk '{printf"\%-6d \%s\n",NR,$0}'<CR>」、「:%!awk '\!a[$0]++'<CR>」、「:%!awk '{print$2}'<CR>」といった風にする。

tee

保存するために管理者権限必要場合sudoと一緒に使う。「:%!sudo tee %<CR>」とすると保存できる。

編集中のテキストを何処かに残すため……と思ったけど:wで事足りる。

2016-06-29

http://anond.hatelabo.jp/20160629135806

糞ザコナメクジプログラマほどシェルスクリプトプログラマだと認めない傾向にあるが、そういう糞雑魚ナメクジよりもせいぜい書けてbashの人の方が<圧倒的に>給料高いんだよ。

それがなんでかを理解できる頃には増田はもう死んでるだろうけどな。

2016-05-29

富士通退職した話」に言及とついでに自分の話でも。

自分も前に富士通に居て既に退職してます。後で詳しく書くけど、ソフトウェア開発職に居たです。

富士通を退職した話

彼のへの感想

富士通はクソでっかい会社なんだし、サイト見ればメインフレームやってるのだって判るんだから、開発職を希望したらメインフレーム関連の開発やる可能性あるのは当然予見出来るだろうし、それを想像してなかったのなら情弱とかブコメで言われてしまうよね。あと何も記述が無いか想像だけど、「それほど有能ではない」と判断された可能性もある。と言っても学生が思う「開発者として有能かどうか」ってのと会社でのそれってのは別物で、要するに学生自身自分が実績もあって優秀だと思っても、会社的にはそうでないのよね。そうなると(後述の富士通入社して10年が経った人の話にもあるのだけど)新人能力客観的判断材料って大学資格応用情報レベル以上)程度なのよね。資格に関しても基本情報なんてMARCHクラス以上の人間なら受けたら取れて当然だから、「有能かどうか」の判断材料にならない。就活の際に本気でIT業界に入りたいかどうかの判断材料にはなる程度。自分の同世代富士通本体に入ってソフトウェア開発関連に配属された人のプロフィールを見たけど、確か偏差値的には少なくとも神戸大学とか千葉大学あたりの修士しか居なかった覚えがある。あと確か2~3人がソフ開持ってた気がする。だから、この増田がどの程度だったのかなと。

ただ、20人月案件が具体的に何かは判らないのだけど、自分の在籍していた当時でも炎上巨大案件というのはあって、(自分が知ってるのは確かデジタルテレビがどうのこうのとか言ってた)、そういうのに入社して間もなく入ってしまうと自身勉強等が出来なかったり潰されたり最悪死んだりするんで、そういう意味でも逃げるのは正解の一つ。(自分炎上案件に放り込まれ新人が寮で死んでたとか話を聞いたことある

上司対応はまあこれだけ見ればクソだわな。

富士通を退職して思うこと

はあ、としか。この人がこう判断した際の判断材料にするであろう自己体験を具体的に書いてないので、意識高い系がフカしてるようにしか見えない。あと、たった3年しか居なくてあの巨大企業経営とか体制とか理解出来るんかね?と思わないでもない。自分とは部署が違うだろうから当然かもしれないけど、自分体験とは違うなーって感じ。自分は、外から見たら馬鹿みたいな事やってるように見えるかもしれないけど、経緯や目的巨大企業特有問題があってそうなってるんだなって思う事が多々あった。

富士通に入社して10年が経った - blog

近い時期に入社したと思われる。具体的な話が自分経験と一致してる。特に富士通ソフトウェア開発と言えばミドルウェアの開発が主だというのは、富士通内部じゃないとなかなか(特に学生なんかじゃ)判らないかなと。

それでこれらの話を見てどんな人が富士通(というか大企業)に向くのかなと考えたんだけど、「やりたいこと」そこまで明確じゃないけどコンピュータは嫌いじゃないって感じで、地頭がまあまあ良くて勉強に関しても要領よくやれる(要するにそこそこの大学に行って卒業した人)、それでそこそこ安定した職・収入目当てな人かなと。ってコレ書いててふわふわしてる人みたいであまり良い印象の人物像じゃないな。マッチングミスはどうしても起きると思うし、学生の頃に思う「やりたい事」って往々にして変わったり間違いだったりするし、そもそも学生の頃に明確な「やりたい事」がある人の方が少数派でしょ。だからこういうそこそこ優秀だけどふわふわしてる人の方が良いんじゃないかなとか。逆に、ちゃんと「やりたい事」が明確にあるけどまあ安定はしたいって人はどうしたらいいのかって言うと、自分みたく大企業の子会社を狙うと良いんじゃないかなと。子会社ならその会社がやってる事が理解やすいし、入った後の配属の希望も大きく違ったものにはなりにくいし。まあ子会社子会社で色々アルかもしれないけど。

で、自分入社から退社までの話。

入社10年ぐらい前。入ったのは富士通の子会社で主にミドルウェアの開発をやっている所でした。入社して1~2年したら子会社の統廃合とのことで富士通本体連携してる部署自分がそうだった)は富士通本体になりますとのことで富士通本体の方に移ったという経緯ですね。別に待遇とか元々本体と同じだったから変わらず、事務関連が小回りきかなくなったぐらい。入社してから退職までは5年ぐらいでした。辞めた理由実家事業を継ぐ事にしたため。

入社して数ヶ月の時にある温泉地にある某所でその手の開発をやってる子会社沢山と

富士通本体ソフト開発配属の人達研修をやったのだけど、その際に富士通本体人達と知り合った。(この際に全員のプロフィール冊子が配られた)そのときは流石子会社に入る人達本体とじゃレベルが違うな~と思いましたね。(ちなみに自分MARCHより下の院卒。)

自分が配属されたのは某製品部署API部分チーム。その製品C言語Java言語からも使えるように出入り口を用意する部分。中でやってる事は指定されたIPポートプロトコルに沿ってデータ投げるだけなんだけどね。ちなみに配属希望の際は「そこそこの忙しさの所がイイ」と言っていました。「バリバリに働きたい」と言ってた同期は多忙ヤバい所に配属されてました。他にもチームがいくつかあったけど、それらのうちの一つは例の「山奥の工場」でしたね。自分が配属された当時はC言語APIリニューアルするって開発してたのだけど、設計担当Javaしかやったことない人で色々とC言語流儀に反してて後々のメンテが大変でした。まあそれでもリニューアル前よりは遙かに良くて、以前はユーザに見せてる関数名が ○○search1 ○○search2 ○○search3 とかでしたね(ちなみに機能はそれサーチか?思うのもあった)。もっと酷かったのが初期製品Javaの公開メソッドで、マニュアルには「このメソッド引数○○を□□を指定した場合戻り値Objectを△△にキャストしてください。××を指定場合は…」という「これ製品にして売ってたんだ…」と思うレベル。もちろんコレがダメだったってのは開発側も認識していて当時は既にリニューアル済みだったけど。リニューアル済みでも少し微妙だったけどね。

これは、ミドルウェアの開発をやってる人達って基本的C言語が主でJavaとかをやってる人がほぼ居なかったからだと思う。上司もそういうのは良くないってのは認識してた。対象OSWindowsLinuxSolarisだったけど、そんなにたいした事やってなかったからほぼ同じコードだったような。ソケットの一部だけ違ってたっけかな。

それでそのバージョンの開発が終わったあたりで、.NET Frameworkが出始めてきたので次バージョンでは.NET FrameworkAPIを作る事になりまして、自分が少し勉強していたのでそれの設計から担当する事に。当時は.NET Framework 1.1で今思えば少し時期が早かったと思う。2.0Genericが出てからやった方が良かったと思うんだけど、そういうの政治的判断だし結果論だしなー。それまでにRubyとかオブジェクト指向言語に触れてその辺の勉強もしていたので、.NET用のAPIに関しては設計実装結構良い感じに出来たと思う。ああ、そういえばRuby用のAPI効率化の開発ツールとかの名目仕事中に勝手に作ってたなあ。他にもC言語APIも内部実装がクソすぎ!とキレてユーザ公開関数インターフェースだけ同じで中身をフルスクラッチした事も。もちろん絶対LDしてるんで完全に趣味なんだけどな。これでAPIC言語Java.NETになった訳だけど、現場案件で使われたのってほぼ全てJavaだったと思う。(開発中のサーバテストアプリC言語だけど)。要するに自分が数年関わったコードが世の中ではほぼ使われてない訳でして、取りそろえとして必要だったとはいえ世の中の役に立ってないってのは嬉しくは無かったですね。まあ、大企業仕事なんてそういうもんです。.NETに関してはそのバージョンが出る頃はその製品があまり売れてなかったんだか使われたって話は聞かなかったですね。ほほほ。大企業に勤めるのならこういう覚悟必要かもね。

で、.NETAPIが出来たあたりに開発ネタがなくなって保守気味になってきたので、人員整理作業整理との事でインストーラと切りたいけど一度やったからには切れない補助製品担当が増える事に。インストーラWindowsがInstallShieldというクソみたいな言語上で作られたものLinuxSolarisシェルスクリプトのもので、InsallShieldの方のコードはあまりにクソなのでリファクタリングさせてもらった。この辺の開発は少なかったのだけど新OS対応(Vistaとか)とか保守作業が大変だった覚えある。

んで、これらの作業が終わったあたりでこの製品でやることが無くなってきたのと同時に、この製品派生製品の話が出てきてて、それは1機能1exeで提供されてて、それらを纏めるバッチ処理機能部分を担当することに。バッチ処理の内容・順番を記述するのにXMLを使う事になったのでXMLのパーサが必要なのだけど、色々調べたら富士通内部でパーサ作ってたのでそれをもらって使う事に。そのパーサはC++からじゃないと使えなかったのだけど、趣味C++勉強してたので何とかなった。あと、結構OSの知識(プロセスとか)が必要WindowsLinuxSolarisで動くコードを書く必要があってまあまあ大変でした(と言ってもifdefで切り分けるだけなんだけど)。けど、これらの開発は自分が一から設計してコードを書いていたので楽しかったですね。それでこれが完成するかしないかあたりで、このバッチ処理機能が他の開発中の製品バッチ処理に使えないかとか話が出てきたあたりで自分退職する事に。(退職の話は1年ぐらい前に話し合って決定済み)引き継ぎをして退職ということになりました。最後は溜まった有給を使う予定でまだ在籍中だけど部屋を引き払って実家に帰ってたのだけど、打ち合わせに来て欲しいって言われてしま実家から何日か通ったのは良い想い出。というかまさか実家から朝8時に間に合うとは思って無かった。

振り返ってみて残業時間は月40~60時間が多かったかな。100時間超えた時は上司に怒られた。あと退職前の1年ぐらいはうちの事業本部(だったかな?)単位残業禁止になってホント残業0時間になった時期があった。他の部署の人の話で、どう考えても狂ってる上司の話とかを聞いてると上司とかの運は良かったと思う。あと、やっぱり仕事でみっちりプログラミングが出来たのは運が良かったと思う。富士通ソフト開発で C C++ C# Java シェルスクリプト InstallShieldとか(そんなに深くはないけど)色々やれた人間はそうそう居ないんじゃないかな。同期とかの仕事は年上の人の派遣の人に指示出したり取り仕切ったりする仕事とか、保守サポートみたいな開発じゃない仕事の話も良く聞いていたので、ソフト開発のキモ体験出来たのは良かったです(こなみ)。

2016-03-24

http://anond.hatelabo.jp/20160324095716

Java関係があるScalaってのはPlayFrameworkなんかの特定フレームワークの話

わかってる人が書いた文章とは思えない。

Scalaフレームワーク関係なく、バイトコードコンパイルされてJVM上で動くでしょ?

っていうかPHPシェルスクリプト大好きないつもの老害おじさんでしょ?

2015-11-06

全部printfにしなきゃだめ?(シェルスクリプト)

echo "Hello Masuda!"

こういうのはechoでも移植性あると思うんだけど。

2015-04-15

FedoraSkypeを入れるのが簡単になった

基本的にはFedoraを気に入っているのだが、

Skypeflashなど一部ソフトの導入手順の面倒さがネックだった。

この辺りがUbuntuLinux Mintでは簡単で羨ましかったのだが、

fedyというソフトを使うことである程度は解決できるようだ。

http://satya164.github.io/fedy

fedyは手順の面倒な設定やインストールを簡単にするソフトのようで、

導入は次のようにすれば良いよう。

※fedy-installerはただのシェルスクリプトで、後で消して問題ない。

curl -o fedy-installer https://satya164.github.io/fedy/fedy-installer
chmod +x fedy-installer
sudo ./fedy-installer

Skypeインストールは次のようにする。

sudo fedy -e skype_linux

skype_linuxはタスク名前で、Flash場合はadobe_flashLight Tableの場合light_table、Sublime Text 2の場合sublime_text2といった具合。

GUI版のfedyがイケてない気はするけど、

とりあえずSkypeインストールできてよかった。

2015-03-14

2ちゃんねる、新仕様APIへ移行するものの速攻で穴を突かれる

日本で最大規模を誇る電子掲示板サイト2ちゃんねるでは3/13から仕様API対応していない2ちゃんねる専用ブラウザは利用出来なくなった。

しかし、新仕様API移行に反発する有志達(主にオープンソースプロジェクトで開発れていた2ちゃんねる専用ブラウザユーザ)によって新仕様API規約の穴を突かれて突破されてしまっている。

仕様API規約によればWebスクレイピングJavascriptなどが禁止されているが、例えばPerlPythonシェルスクリプトなどのユーザスクリプトによるHTTPソースの改変は規制されていない。

そこで有志達は規約通りに新仕様APIを介して2ちゃんねるHTMLファイルを取得しユーザスクリプトによってHTMLを従来の2ちゃんねる専用ブラウザで読み込めるdatファイルへ変換する方法を編み出した。

ユーザが個人で楽しむ範囲HTMLソースdatファイルに変換するにのは法的にも問題が無いと思われ、2ちゃんねる運営にもそれらを規制する法的根拠を得るのは難しいと考えられている。

他にもルータフィルタリング機能DNSサーバー設定の変更で広告を表示しないようにしてしまうなど、2ちゃんねる運営は思い通りにならない2ちゃんねらー達にやきもきさせられてしまう格好だ。

今後の2ちゃんねる運営2ちゃんねらーいたちごっこが見物である

2015-03-05

営業出身の30代おっさんプログラミング人生を変えた話

俺の半生

大学一般教養Pascalを習った程度。専門課程に入る前に文法はすっかり忘れた。専攻は都市工学からその後プログラミングとは縁はなかった。卒業前に第一種情報処理技術者資格だけはとれてたのでプログラミングの何たるかとかオブジェクト指向なんかも知識としては知ってた。

大学卒業後にデスクトップユーティリティーのメーカー技術営業をやった。顧客製品仕様を説明するのが主な仕事なのでパワポばかり使ってた。その会社ではLinuxソフトも販売してたから、Linuxコマンドは打てるようになった。そこでシェルスクリプト習得しようと思ったがあえなく挫折

その後ネットワーク機器メーカー転職トラブルシューティングLinuxさらに使うようになった。そこではHTTPプロキシを主に扱っていたので、HTTPプロトコルについては一通り知識を身につけた。その知識を実際にLinux上でシミュレーションしてみたくなり、Cを習得しようと思ったがやっぱり挫折

部署移動でメールサーバーを扱うようになった。SMTPプロトコルの知識は身についた。ここでもSMTPLinux上でシミュレーションしてみたくなり、こんどはperl習得しようと思ったがやっぱり(ry

今はExchangeを扱ってる部署で働いてる。ここではExchangeメールメタ情報MySQL上で扱ってるからSQLSELECT文くらいは見よう見まねで使えるようになってる。

Pythonとの出会い

そんな俺も部下を持つようになり、デスクワーク時間が増え、比較自由時間が持てるようになった。そんなときはてブでみかけたCoursera(https://www.coursera.org/)で本当に偶然に「初心者のためのプログラミング」というコースを見つけた。

Programming for Everybody

https://www.coursera.org/course/pythonlearn

コース自体英語だが、別に教授と会話するわけではないし、Python文法以外は条件分岐や繰り返しといった過去挫折しながらも知識としてだけはぼんやりと覚えていたことの繰り返しだ。英語が少しくらいわからなくても、図を見ていれば何を解説しているかくらいはわかる。

結論から言えば、このコースを受講したおかげでいままで断片的に持っていた知識 -単語だけは知っていた「オブジェクト指向」、「条件分岐や繰り返し」「アルゴリズム」などなど- がパズルピースのようにかっちりと組み合わさり、Pythonが難なく習得できた。いままでにシェルスクリプトやCに挫折したのがウソのようだ。LinuxHTTPSMTPSQLといった周辺知識も余すところなく役に立った。何のことはない、Pythonの標準ライブラリを使えばHTTPSMTPシミュレーションなんて簡単にできたのだ。以前トラブルシューティングで夜中まで手作業でちまちまやっていた作業は、全部Python一発で解決したんじゃないか。

このコースをきっかけとして、俺の人生(といってはおおげさだが)が大きく変わった。小さいところで言えば、自宅PC上でバックアップにつぐバックアップでわけのわからなくなったフォルダ構造の中から、同一のファイルを探し出し削除できるようになった。(傍から見れば何を大げさなと思うかもしれないが、ここ10年くらいの俺の中で最大の懸案だったのだ。)仕事でも日次で発生する業務をバッチ化したり、繰り返し発生する手作業を全部Python自動化した。(経営陣へのレポート作成とかそんな類のものだ。)おかげで残業どころか定時前に帰宅できるようになり、自由時間さらに増えた(笑)

ひとつ言語習得してしまえば、あとは同じことの繰り返しだ。増えた自由時間を利用して、いまはPHPJavaScriptjQueryを身につけて何かWebサービスを立ち上げようと目論んでいる。出来上がったら、またここでそれまでの道のりを紹介したいと思っている。

こんなことが自分の身に起こるとは、1年前の自分には想像すらできなかっただろう。それまでは「Webサービス」なんて言葉自分とは一切縁がないと思っていたから。

欲を言えば10年前、いや5年前でもいいからこのコースに出会ってPythonを身につけていたら、今とはまったく違った人生を歩んでいたかもしれない。

コースを開講した教授との相性もよかったのだろう。彼の人柄にも好感をもてたし、「for Everybody」というだけあって、非常にわかりすい説明だった。英語だということを差し引いてもこのコースはおすすめだ。

3/6/2015 追記

たくさんのコメントありがとう。こんなチラ裏文章ホッテントリ入りしてかなりびびっている(笑)

いくつかのコメントに返答したい。

こういう反応があることは投稿したときに予想はしていた。だが、何がきっかけでプログラミングを身につけたのかを具体的に書かないと、何の役にも立たない本当のチラ裏になってしまうので、コース名を書くことにした。だがこのコースをはてブで見つけたのは単なる偶然だ。このとき見つけたのがドットインストールRuby講座だったら、Coursera→ドットインストールPythonRubyになっていただけのことだ。ここで言いたかったのは、断片的でも一度触れたことのある知識は後になってどこで役に立つか分からない、ということだ。Steve Jobsも言っていたが、「人生を振り返ったときに点と点をつなぐことはできるが、その点がなんの役に立つかをあらかじめ予想することなんてできない」ってやつが自分にも起こった、それだけのことだ。

なお、Courseraのこの教授自分の授業内容をすべてオープンにしている。http://www.pythonlearn.com/ 教科書さえもここで無料で手に入る。Courseraに登録するのに抵抗があり、自習上等という人はここで俺が受けたのとまったく同じ内容を確認することができる。ちなみに授業はすべてYoutube上で公開されている。

  • 「なぜPHP?Pythonでやればいいのに」について

これについてはまったくその通りだ。ただ、もう新たな言語を覚えることにまったく抵抗がなくなったのと、PHPRuby on RailsWebサービス界ではメジャーらしいので、とりあえずPHPもやってみよう、くらいの軽い気持ちで思いついただけだ。ひょっとしたら実際にはPython+Djangoとかで開発するかもしれない。

2014-10-26

ソフトウェアと梃子

Unixという考え方という本を読んだ。もう図書館に返してしまったので、これから書くことはあまり正確じゃないと思う。〜的なという表現が多くなってるのはそのためだ。

この本で最も印象に残ったのが、梃子(てこ)の話。著者の叔母がちょっとしたマルチ商法大金を稼いだ話を例にとり、「プログラミングもこういうもんさ、梃子を使うんだよ」的なことが書かれているが、倫理的問題はおいといて、そういう感じでプログラミングをすることってどうすれば可能なんだ?と疑問が湧いた。自分のようなクズ野郎はもちろんのこと、たとえ修行僧のように淡々技術を磨いているプログラマでも、本節を読めば自分技術を使って著者の叔母のように大金が欲しいと思うはずだ。

プログラミングの梃子らしい部分は自動化だ。少なくとも、本にはそう書いてあった。梃子の具体例としてシェルスクリプトがあげられて、たった一行のスクリプトが賢いプログラマたちが作った何千行のプログラムを実行するんだ。これこそ梃子だ、的なことが書いてあった。いや、でもちょっと待って欲しい。こっちは叔母のように大金が欲しいわけだ。Unixの素晴らしさは他の章でも散々書いてあるし、ここでシェルスクリプトの話をされても困る。話をそらさないで欲しい。

著者が言いたいことはわかる。この節ではあくまでもシェルスクリプト凄さを語りたかったわけで、叔母が大金を稼いだ話はそのための撒き餌に過ぎないんだろう。でも、ほとんどの人間にとって、本気で考える価値があるのは大金の方だろう。優秀なプログラマ生産性を上げた結果、それだけで幸せになれると思うか?むしろ仕事が増えているじゃないか。資本家はいだって労働者限界までこき使う。プログラマ創造的な仕事だということは、プログラマしか理解されない。梃子をプログラマ幸福につなげるには、どうしても社会で使える通貨にしないといけない。

さあ、シェルスクリプトの梃子を使って金を生み出すとして、どういう具体的な手段があるんだ?

ここからは完全におれの見解なので、本の内容からは離れる。

ライセンス

ソフトウェア大金を稼いだやつを思い浮かべろ、と言われたら真っ先にビル・ゲイツの顔が浮かぶだろう。彼がやったことはなにか。ソフトウェアを作って、ライセンスを刻んだ。そのソフトウェアがどこのメーカーハードウェアで動作しても、ソフトウェアMicrosoftのものだということがはっきりしている。そこから利益を得るわけだ。これはまさに本に書いてあった梃子(著者の叔母はタッパを販売して、さらにその販売先の客に販売を勧め、その利益の一部を手にしていた。マルチ商法だ。)と同じ類のものだろう。

広告

「I'm CEO, bitch.」

学生時代Facebookを作り上げたマーク・ザッカーバーグは、FacebookダサいSNSになった今でも、若い起業家の憧れの的だ。

彼がやったのはなにかというと、広告だ。

学生たちが楽しめるようなプラットフォーム無料提供し、そこに広告掲載することで大金を生み出した。広告のどこに梃子があったかというとソーシャル・ネットワークだ。広告で稼ぐにはたくさんの人に見られる必要があるわけだが、SNSという特性自体が梃子になり、ユーザー数がみるみると増大していったことが、広告による大金を生み出した。

偶像

主に日本で見られた現象が、ソーシャルゲームだ。これは偶像を売る商売だ。一度イラストレーター作成したものは、いくらでも複製できる。それを消費者射幸心に訴えかけながら売っていく。この電子的な麻薬が、なぜか日本では異常なほど受け入れられる。梃子の力は複製が容易ということだけでなく、消費者脳内でも起きている。消費者自身の購買行動が次の購買を促す仕組み、中毒性こそがこの商売ユニークな梃子だ。

___

飽きた。ブクマがたくさんつけば書き足す。

書き足し

ブクマの伸びがゆっくりなのでここらで書き足しておく。上に書いたのは、本を読んで率直に感じた疑問と、それに対する、偏見なども大いに含んだ主観的考察だ。しかし、こんなことをしたのは、他の誰のためでもない、自分のためだ。興味本位プログラミングを始めてしまって、それが楽しくなってしまった自分の行く先を少しでも認識したいという切実な願望があったからだ。

ちょうど他の増田漫画家の話が書かれていたけれど、ソフトウェアエンジニアだってあいったことになりかねない。いや、もうなっているかもしれない。創造的な人たちがつくりあげた偉大な製品が、資本家に食い尽くされることが、平気で行われている。以前ネットで知り合ったインドネシアプログラマーは、自分仕事が不当な扱いを受けていると嘆いていた。「海外の安い人件費」として働く彼らは、高度な技術を持っているにも関わらず、正当な報酬を手にすることができない。

まどろっこしいので言いたいことを言おう。梃子は生産性を高めるために使うだけじゃだめだ。自分や他の創造的な人々の権利を守るために使わないといけない。でなければ結局、プログラミングを始めたときに感じた魅力や全能感、思考力を捨てて、資本家歯車になるような未来しか待っていない。

2014-09-19

anond:20140919122500

シェルスクリプトなんて義務教育で習ったか

その会社では入社時に全員がシェルスクリプトを習ったのか?

そうでないならシェルスクリプトを導入した増田独りよがりしかなく、

それによってシェルスクリプトの利用について学習コスト強制されかけた後任が

危険が危なかったとしか言えないヨ。

----

Linuxなんて義務教育で習ったか

その会社では入社時に全員がLinuxを習ったのか?

そうでないならLinuxを導入した増田独りよがりしかなく、

それによってLinuxの利用について学習コスト強制されかけた後任が

危険が危なかったとしか言えないヨ。

2014-09-15

機能がどこにあるかわからないなら検索すればいいんじゃね

全ての機能がpecoやpercolのようなものを使ってインクリメンタルサーチしてアクセスできればいいと思う。

そうすれば抽象的に覚える事すら不要で、機能名の断片を覚えていればよいだけなので機能名の断片をタイプするとそっこーで機能アクセスできる。

そう思ってなんでもpecoで選択するようにしたらzsh(+vim + unite)だけで全てが事足りるようになった。

機能のなにかが変わっても糊付けしてるpecoをwrappしてるシェルスクリプト変えるだけなのでたやすく変更にも追従できる。

GUIみたいなまだるっこしいものに頼るよりCLIで過ごせばイイ。ほんとpecoとかpercolオススメ

そんでこれらはエンジニア向けの機能じゃねーかってつっこみがあるかもしれないが、インクリサーチを使う条件自体

タイピングできること」、「機能名や選択候補の断片を記憶してればいい」だけなので、バカに優しいし実は一般の人向けなUIなんじゃねえかとおもう。

例えばOfficeリボンみたいなものを用意するのと同時に、大量の作業を素早くこなしたい人向けにインクリメンタルサーチつければいいとおもう。

例えばintellij ideaのSearch everywhereみたいなかんじに。選択候補が絞られる度に選択候補機能リボンUI位置がユーザにわかるように絞られる演出がされてればなおベター

2014-09-02

http://anond.hatelabo.jp/20140902164308

bashの中でPHPを呼ぶんや。PHP初期化必要ないから、一行の中に概ねコマンドが収まるんやで。

一行に収まらないならそもそもBashで書くなよ。

全部PHPをで書けよ。

それが無理だから意味不明シェルスクリプトPHPの組み合わせとかしてるんだろ?


普通人間シェルスクリプトの中でPythonちょっと一発コマンド呼ぶ、とか以外、

少し複雑なことしようと思ったらそもそもPythonスクリプトで全部書くんだよ。

シェルスクリプトの中でPythonを大量に呼ぶ意味が全くないから


お前のスクリプトもまったくもって無意味なことばっかやってるだろ。

http://anond.hatelabo.jp/20140902155559

というか、ちょい複雑なシェルスクリプト書く場合とかにPHPで書くケースは結構あるで。mapとかreduce、filterとか普通に使えるからな。

そんな奴見たこと無い。awkとかで大概どうでもなるし、

巨大なスクリプト時間が気になる様ならpythonとかで書き換えたりする。

PHPシェルスクリプト内で使うなんていう基地外は見たことが無い。

お前の言う複雑なシェルスクリプトってなんだ?

http://anond.hatelabo.jp/20140902154907

どの言語だってクライアントでも動くんやからPHPで悪い理由にはならへんで。

というか、ちょい複雑なシェルスクリプト書く場合とかにPHPで書くケースは結構あるで。mapとかreduce、filterとか普通に使えるからな。

結構優秀やでPHP。覚えるの楽やし。

2014-07-31

毎日ちょっとした課題を解くプログラミング勉強法が欲しい

そこまでまとまった時間も取れないので、毎日十分程度プログラミング勉強する方法は無いだろうか

例えば電車の中で単語帳を覗いたり、文法問題を解くような感覚勉強したい

具体的に言えば

「あるファイル更新されたらメールを送るようなシェルスクリプトを書きたい。更新をチェックするにはどうしたら良いか?」

vimの使い方として「このような文章があるとき複数行にまたがって先頭にコメントアウトを入れたいがどうすれば良いか?」

みたいなちょっとした、本当に簡単な問題集

もちろん「次のfor文はある処理に時間がかかっている。その場所と解決策を上げよ」みたいなものでも良いが

私はそのようなレベルにまだ達していない

何か心当たりのある方、教えて下さい

2014-07-23

http://anond.hatelabo.jp/20140723172206

常にワンライナーで書くならそうだけど、

普通にシェルスクリプト組むなら1行に複数コマンドは書かない方が良い。

基本、シェルスクリプトコマンドライン入力するコマンドをそのまま羅列できる、と言うものだと思って書くべき。

そうでないとめちゃめちゃ読みにくい意味の分からない物になる。

複雑なことしたいならそれこそPythonとかのが楽にかけたりするし圧倒的に早いし。

2014-07-22

http://anond.hatelabo.jp/20140722115605

関数型やらオブジェクト指向やらの話に反応してるんだから、ある程度規模のあるソフトウェア人間にとって分かり易く構成する話するんじゃないの?

行書捨てなら、シェルスクリプトがいいだろうよ。

まあ一応Python

print [line.split(",")[0] for line in file("file.csv").readlines()]

個人的には速度以前にifとかforが必要になった時点で、読みやすさの点からPythonにする。

http://anond.hatelabo.jp/20140722114718

コマンドの組み合わせで処理できるようなものなら一番短くかける。

というか、普通に作業でコマンドつのと同じ様に書けるから読みやすいし書きやす

逆にシェルスクリプトあるのにPerlPythonで処理をわざわざ書くメリットは?

圧倒的に速度が違うから複雑な長いことに関してはPythonとかで書くけど。もっといえばC++で書くし。

元のお題とは全く方向性が違う話だけど。

ログイン ユーザー登録
ようこそ ゲスト さん