はてなキーワード: CENTOSとは
吾輩は無職である。職はまだ無い。どこで無職になったか、とんと見当けんとうがつかぬ。
何でも薄暗いじめじめした所で手斧を投げられていた事だけは記憶している。
しかもあとで聞くとそれは増田という人間中で一番獰悪な種族であったそうだ。
・・・・
まぁ、前置きの冗談はこの辺までとして、前々から作りたいな思っていた
Webサービスを中々時間が取れず作るのを諦めていたのだけど、
僕自身、プログラミングを生業とする職業では無く、学生時代も特にプログラミングついて何か
始めたのが昨年末の大晦日ちょい前なので、約5ヶ月掛かり、当初想定していた期間より
かなりの時間が掛かってしまい、反省点等含めその辺の事を書けたらなと思います。
■やりたい事(実装した事)
・ゲームユーザー同士を繋げるマッチングサイト(出会い系ではないよ。)
・タグをつける
構成を書いた方が良いと思うので
以下になります。
■構成
--------------------------------------------
FW:Flask 1.0.2
ORM:SQLAlchemy 1.2.7
その他ツール等:Let's Encrypt/fail2ban/等々
--------------------------------------------
ほぼ、既存のベーシックなサーバーサイド側の制御のみです。(jsで非同期通信はしてます)
変えるのもなと思い、取り敢えず上記です。
■選定理由
Railsの名前を良く聞くのでRuby on Rails触ったのですが、
Railsには馴染めなかった(扱えなかった)ので
何かマイクロFWの方が良いのだろうと、Sinatraいこうか思いましたが
Railsの印象が強く残った為、Rubyは止めてPythonに移りました。
今度は初っ端からマイクロFWが良いだろうとFlaskのサンプルを試すと
比較的プログラミング初学者でも扱いやすく覚える事も少ないので、PythonとFlask
の組み合わせで決定。
(気軽にプログラムを書け、自分がイメージしている処理や制御を素直に実現できる点が
書いていて気持ちが良いです。まぁ分からない所も有りますが、そう思わせてくれる点
が良いです。モチベーション的に)
NginxとuWSGIの組み合わせはFlaskで検索すると一番でてくるのでこれに決定。
SQLite3 はマイクロFWだから軽めのDBでたぶん大丈夫だと思ったのでこれに決定
■開発概要
・まずPythonの開発環境を整えようとなり、WindowsにVagrantをインストールして
仮想マシンの環境構築。ゲストOSの中にPyenv等を入れPython環境構築
・上記構築後に取り敢えず小さなサンプルから作ろうとなり、簡単なCRUDをFlaskで行える様にしました。
これができた時は嬉しかったです
・上記が出来てから、本番の開発に移りCRUDをベースにひたすら肉付けていく
→ユーザー登録機能作成/ログイン機能作成/ユーザー情報表示/編集機能/チケット作成/及び編集/バリデーション
・細かいViewの調整とスマホ用のViewも作成(レスポンシブルでは無いので)
・本番用のさくらVPSに環境構築とセキュリティ用のツール導入とLet's Encryptでhttps化
■悩んだ点/反省点
・悩んだのがタグ機能周りになるとどうすればよいか、かなり悩みました。
結論を言うとToxi法を使用しましたのですがここにたどり着き、理解するのに結構時間がとられました。
また、実装したらしたで、今度はそのタグ機能を検索するとなると検索ワードが1つとは限らないので
クエリーを動的に生成する必要が有り、これも実装するのにかなり時間が掛かりました。
SQL文だけならば比較的すぐに検索でヒットしますが、それをSQLAlchemyでどう実現すれば良いか分からず
かなり時間が掛かりました。DB設計やSQLAlchemyの文法に自信は無いですねぇ。。
・1次情報のリファレンスからは情報得ることがほとんど出来ず(たまにはできたが)、
Stack OverflowとQiitaと個人ブログが無ければこのサイトできなかったので
■総評
・5ヶ月と時間が掛かりまた反省点も多々有るが、とりあえずサービス公開まで
もっていけた事が嬉しいです。ただただ嬉しい。
・FlaskとSQLAlchemyの情報が日本語が少ないので公式リファレンスとStack Overflowを
行ったり来たりしたおかげで英語アレルギーがそこまで無くなった。
■成果物
オンラインゲーマー向け(e-sports)のマッチングサイトになります。
名前が安直で小学生が5秒で考えたような名前ですが、安直で気に入っています。
作った理由は、僕はBF1が好きなのでオペレーションキャンペーンと言うモードを
やろうとしたのですが、時間帯が悪いのか過疎なか分からないが全然マッチングしないのですよ。
やりたいのにマッチングしないので出来ないどうしよう、と。
また、昔セールでFarCry3をかなり昔に購入した時(既に4が発売済み)にCO-OPモードが全然マッチしない事が有り
旬が過ぎたオンラインゲームは中々マッチしなくてほぼシングルモードしか出来ない事は割とあると思うんです。
今だとBF4もかなり人数がいない状態なので特定マップのみとか。
なのでオンラインゲームでマルチプレイやCo-opで人を集めたい時、PUBGやFORTNITE等バトロワゲームのスクワッドを
募集する時、オンラインゲームの大会(e-sports)を開きたい時に利用して貰えると嬉しいです。
主に想定ユーザーと考えているのは、FPS/TPS/RTS/MOBA等のPCゲーマーをメインに考えていますがCS機やTCGでも
使って貰えると嬉しいです。
あとViewがレスポンシブでは無く、PC用とスマホ用しかなくタブレット用の中サイズのViewが無いのでご了承下さい。
遊んでも良いよという奇特な方がいましたら当該サイト内でコメント頂けると幸いです
・BF1(PC版)
それでは長々とありがとうございました。
・・・・
日月を切り落し、天地を粉韲して不可思議の無職に入る。吾輩は死ぬ。
ありがたいありがたい。
3年前の大学4年生の4月、まだ内定がなかった。同じゼミの就職希望組は全員内定があったこともあり、相当焦っていた。大学内で会社説明会が行われる時は積極的に参加した。5月に最初に内定が出た。自分は内定が出たことにより安堵してそれ以降の就職活動はやめてその会社に行くことにした。
2年前に入社式があり、当時は社内でプログラミングし、何かシステムを作るんだなと漠然と思っていた。だが現実は違った。入社式のあった週の金曜日に大阪に行くことになった。大阪に行き面談し、客先での了承が降りればその会社が勤務先になるのだと言われた。当時は相当混乱した。IT企業に正社員で内定=社内で作業と思っていたのだ。実際に金曜日に大阪のある会社に行き面談を行った。面談で言われたことはCは出来るかということや長時間働くことは出来るかのような内容だった。自分はCに関しては大学の授業でやった程度なら出来ると答えた気がする。それ以外のことは確か元気が無さそうに否定的なことを言った気がする。正直もうほとんど覚えていない。結果その会社に行くことはなかった。
次に別の会社に面談することが決まった。2社目の面談が決まるまでは社内でCの勉強をしていた。面談ではpythonは出来るかと言われた。当時の自分はpythonをやったことはなかったが一生懸命がんばりますと言ったら受かった。2週間後からはその会社に派遣契約で行くことが決まった。そしてここは8ヶ月で終了となった。この8ヶ月間はほぼ客先に行き、自社に行くことはなかった。
次の会社に面接するのは2ヶ月後だった。Androidの開発のプロジェクトに参加するということで、大学の授業でJavaの勉強をしていたのでそこに決まった。だがここで主に行ったことはCentOSの環境構築とドキュメント作成だった。Javaはほとんど使わずに5ヶ月で終了となった。この会社はおそらくSES契約だった。SES契約についてはあとで説明する。ここにいた5ヶ月間もほぼ客先に行き、自社に行くことはなかった。
3社目はC#を使う会社だった。小規模な社内で使うツールを1から開発するというプロジェクトで技術者的に成長できるだろうと思っていた。このプロジェクトも客先での作業だった。ここで作業していて最初は忙しかったが、段々他の人の作業を待つことになり時間が出来た。時間が出来た結果、帰属意識を考えるようになった。自分はいったいどこの社員なんだろうと。自社の正社員なのだろうけど、実際に行く会社も違うし、指示を受けるのも他社の人で自社との関わりは数カ月に一度様子を見に来るのだけだった。
ここのプロジェクトに参加したときにプロジェクトの説明が書かれた紙を渡された。その紙のあるところにSES契約と書かれていた。自分なりにSES契約について調べた結果、派遣契約をせずに派遣として他社の社員を使うものなのだろうと判断した。正確にはみなさんの自身の手で調べてほしいと思う。そしてこのIT業界では殆どのプロジェクトでこのSES契約が使われていることを知った。
3社目も5ヶ月で終わった。
4社目はJavaを使い、大規模システムの一部機能の開発を行うことだった。2社目と違い、本当にJavaのしかもかなり難しい知識が必要となり、かなり勉強になった。だが、ここもSES契約で客先での作業だった。この頃になると自分は自分の働き方に嫌気がさしていた。正社員で入社したのに実質派遣という。同じフロアの別の人を見れば正社員で、しかも客先常駐せずに働けているのに何が違うのだろうと。結果は自分の入った会社が間違えていたのだと知った。そのため今月で辞めた。
ここで一つ謝らなければならないことがある。タイトルにはIT企業をやめた話とあるが、正確にはSES企業をやめた話である。IT企業をやめた話にしたほうが沢山の人が見てくれると思うからこのタイトルにした。
この業界にいたからわかるのだが、SES契約をメインの事業として収益を上げるのと、自社システムを開発して製品として売るのではまったくビジネスモデルが違う。SES契約のメインの事業は単なる派遣である。だがITに詳しくない人(別業種)からすれば全てIT企業として統一されてしまうのである。
自分はプログラミングが好きだから約3年間働くことが出来た。だが、同じ業界で自分と同じ状況で働けなくなった人を何人も見てきた。今SES契約メインの会社で働いている人は本当に今の働き方(派遣のような働き方)でいいのか考えてほしいと思う。
今大学生でこれからIT系に行く人は自分と同じ目に合わないでほしいと思う。実質派遣なので勤務地はコロコロ変わる。3社目からは通勤時間が片道2時間を越え、まともに睡眠時間を確保することができなかった。通勤時間が長かったのもつらかったが、それ以上に暇なのがつらかった。客先での作業を例えばその月の10日に終えたとして次の案件が来月に始まるとしたらその間ずっと放置である。さらにその上に日報や週報の提出を求められれば何も書けないのである。それ以上につらかったのが、PCが用意されていなかった時である。その会社のプロパーの作業用PCの申請が遅れた結果、プロジェクト開始と同時にPCが用意されておらず、PCが無いけど定時まで客先にいてくださいと言われた時はほんとうにつらかった。PCがなければ何をしているかというと虚空を見つめるだけである。それがだいたい三週間続いた。
プロパーといえばIT業界ではプロパーはまったくプログラミングが出来ないと言われているが、自分の印象では半々が出来て、半々が出来ないという感じだった。おそらくこれはIT業界の多重下請け構造のどこらへんに客先常駐するかで変わると思う。この業界にいて未だに分からないのはプロパーはSES契約で来ている人に直接指揮命令している人って偽装請負ってわかっているのかそれとも偽装請負と知らずに指揮命令しているかってことです(本人達に聞く勇気はさすがに無かった)。自分がもしプロパーで偽装請負って知っててSES契約で来てる人に直接命令したら多分罪悪感で潰れてしまいそうと思った。
PHP のはなし
ウチでは centos を使うことになってる
今だと centos7 だが、これのデフォルトのPHPが 5.4 だ
5.5, 5.6, 7.0, 7.1 とでていて、 7.2 がもうすぐとか言われてるのに、 5.4 だ
5.4 が出たのは 2012 年で公式サポートは 2015 年に終わっている
もちろんライブラリやフレームワークですら対応してないのが多くて古いものしか使えない
さらには、古いバージョンではバグや脆弱性が見つかってもそもそも PHP のバージョン自体がサポート切れなので放置される
PHP7 や 5.6 対応のバージョンにすれば直っているが 5.4 で動くものだと直されない
centos に 7 系を入れることはできなくはないし、難しくはない
聞くところによると、保守をOSのサポートが切れる頃まではすることになっているものが多く、外部リポジトリや自前ビルドになるとサポートが辛いらしい
今 7.1 にしても、その外部リポジトリはウチの保守期限より早くサポートをやめるのでその後の脆弱性などのパッチは自分でどうにかしないといけなくなる
デフォルトのものなら緊急性があれば 5.4 であろうと OS がサポートしているためパッチで対応されるらしい
外部リポジトリでサポート終わったらバージョン上げればいいじゃない、って思うけどけっこう動かなくなる部分があるらしい(経験談によると)
プロジェクトが大きくなるとチェックと修正がすごく大変なんだろう、そのためのテストじゃないの?って言いたいけど
自社サービスじゃないしクライアントから人件費取るのが難しいとかあるんだろうな、たぶん
そんなこんなで 5.4 を使うらしい
OSSライブラリで何が使えてどれを使ってはいけないか、みたいのはコア部分の開発メンバーには知見が溜まってるらしいが、私はそんな将来に役立たないものより 7 系とか新しいものの知識が欲しい
せめて JavaScript の Babel のようなものがあればなぁ・・・ブラウザは使う側の問題で古いのまでサポート必要だが、サーバサイドは新しいの入れればいいだけなので需要がなくて作られないのだろうなぁ
Dockerがバズるくらいだから今どきハードウェア仮想化なんて流行らないのだろうが、Windows10 Proの安いPCを1つ購入してHyper-Vを有効化したのでCentOSとUbuntuのどちらを入れようかと考えてた時に、昔インストールに苦労したDebian 3.1 Sargeのことを思い出して本家のサイトに行ったら今年の6月にDebian 9が正式リリースされたと聞いてすごく懐かしくなり、こいつを選択することにした。
随分バージョンが上がったものだなあ。しかも今はamd64がインストーラーのリストの最初に上がってるし。昔は64は人柱用だったのに。
10年ほど前、玄人志向の玄箱というNASのOSをDebianに入れ替えて単なるファイルサーバから多用途サーバにするのが流行ったことがあった。今でも後継品のBuffalo製NASをDebian化する好事家は細々ながら活動しているが、UbuntuのベースであるDebianに最初に触れたのがその頃で、当時のバージョンは3.1、通称Sargeだった。タイミングのいいことに、Sarge対応の分厚いDebian入門書が存在していたのでレファレンスには事欠かなかった。まあそれでも、スペックの貧弱な玄箱にインストールして少しでもパフォーマンスをよくするにはカーネルを書き換えて再コンパイルしたりといった悪戦苦闘があったわけだがもう忘れた。
Hyper-Vの仮想マシンへのDebianのインストールはトラブルらしきトラブルもなく、インストールしてすぐに使えるようになっていてまあこれが普通だよなと。OSは使いこなしてなんぼで、インストールで苦労するのは不毛だと当時も思ったし。
あと、エンジニアが多いと聞いているはてな界隈でも個別のディストリのトピックはあまり話題にならないんだなというのがちょっと面白かった。
今年度卒業予定であり就活手前ですが、今まで何もしてこなかった自分への苛立ちと後悔を感じています。なぜそんなことになったのかを自分の気晴らしに書きます。
専門学校に入学するのは「プログラマになるための最短ルート」だと思い、学費も大学より安いことから専門学校に入学。前年度は学校では基本情報技術者の勉強をするだけ。基本情報技術者を無事取得しましたがプログラミングの授業はゼロに等しかったので、個人で企業のapiとajaxを利用した簡易的なwebアプリケーションを作ったりしました。
今年度に入り学科の就活解禁日より二足ほど早く、プログラミングスキルを判定できる新卒エンジニア向け就活サイトで大企業様のスカウトを受け採用試験に挑戦。結果は不採用で通知メールにはコミュニケーションは問題なかったが、技術力が足りないと書かれていました。
私はCentOSで多目的サーバを高校時代から運用し、webアプリケーションを作った経験と国家資格をもあれば十分だろうと思っていたことが甘かったと痛感。
面接(というより面談)の対応をしてくださった方はとても良い方で、面談の中でエンジニアは常に最新技術へのアンテナを貼るべきで学生のうちは何でも作ってみるべきだと教えてくれました。
その教え通り私は今何かを作ろうとしています。それでも自分の中でプライベートの時間をプログラミングに割くことができず娯楽に使ってしまう心の弱さに苛立ちを感じているのです。
Manjaro:良い。星6つ
Ubuntu:何も設定したくない人向け。うぶんさー。星5つ。
arch:configureとかmakeとかだるいけど新しいパッケージ使いたい人向け。星5つ
centos:デスクトップ用途だとパッケージ古すぎてちょっと厳しいかな。星2つ
gentoo:Linuxの設定いじれたりpatch書ける人が使わないと恩恵ない・・・星2つ
vine:セキュリティーアップデータ遅いからお断りです.星1つ
tiny core linux:軽量こそがかっこいいとか思ってる人向け。いらない。星1つ
謎の人物「日本のVim界隈だとWindowsユーザーが牛耳ってる」
謎の人物「そろそろLinux使いからすごい奴が出てこないとあいつら窓使いはこれからも調子に乗るだろう」
謎の人物「さあ今こそ団結して体育館裏に呼び出して潰すべきだ」
謎の人物「我はVim pluginを書く為の時間をWindowsのサポートに使いたくないのだ」
窓使いh「なんだと!(おこ)」
窓使いk-「貴様!!(げきおこ)」
http://fedoraproject.org/wiki/Changes/ReplaceYumWithDNF
Fedora18の頃から試験的に入ってたdnf(Dandified Yum)だけど、
Fedora22からは本格的にyumを置き換えるものになるのか…
(去年の今頃ぐらいの記事っぽいし今更感…)
別名はyum4になっているし、
使用感も特には変わらず、
大したyumの使い方をしてなかったせいか、
自分のところでは「s/yum/dnf/」するだけで済んでる…。
yumから移行するほどのメリットがあるのか分からなかったけれど、
まー、好みにもよると思うけど、現時点の使いやすさ・学習コストの低さでいうとUbuntuかDebianあたりがいいと思うんだよな。
CentOSとか企業がガッチガチにやりすぎてなにも触れないし、そんな環境じゃ脆弱性発見されても対処しようがないじゃんね。
それはFUDで言い過ぎかもしれないけど、CentOSとかRubyやPHPの新しいバージョンいれようとしたら自前でビルドしたりしなきゃいけないの面倒。
Ubuntuとかなら自前ビルドとかしなくてもapt-getで適当にやってりゃ環境構築できちゃうし、ビルドしなくていいから時間の節約になる。
CentOSとか今どきPHPいれようとしたらまだ5.3で、Apacheは2.2.15だよ?どんだけセキュリティホールもってんだよっていう。
別にどの企業がどういう穴もっててもいいけどさ、そんな使いにくいCentOSが流行ってるのにはさぞや高尚な理由があってやってんだろうなあーーーっていう。
まさか全部自前でできるのがいいとか言わないよな?今までCentOSだったからとかもないよな?そういうとこに限ってCentOS 5.2とかPHP 5.1 使ってんだよ・・・
恥ずかしすぎてハンドルネームでやってる自分のブログにすら書けず、かと言ってどこかに吐き出したくはあったのでここに書いておく。
見た人は存分に笑い飛ばして欲しい。
先週、趣味で立てたVPSサーバー(CentOS 6.5)のCPU使用率が、気付くまでの9時間ずっと100%になっていた。
作動中のプロセスを見ると、2つのperlプロセスがその原因であることが分かった。
そのプロセスはユーザー「postgres」によって実行されたプロセスだった。
postgresは、PostgreSQLをインストールすると勝手に作られるユーザーだ。
先日自分でPostgreSQL9.4をインストールしたので、このユーザーの存在自体は問題無い。
その時このpostgresに、「postgres」という簡素なパスワードを、passwdコマンドで設定した。
「まぁ無いよりはマシなんじゃね?サーバー内でしか使わないユーザーだからハッキングの心配とかないしどうでも良いけど〜。」
と言ってたと思う。
その程度の認識だった。
これにより下記コマンドでpostgresとしてサーバーに入れてしまう状態になっていた。
$ ssh postgres@my.server.address.com
実行するとパスワードを求められるが、もちろんそれは前述のパスワード「postgres」だ。
それまではパスワードを設定していなかったので逆に助かっていた。
パスワードが設定されていないユーザーにはsshでは入れないからだ。
「もちろん」というが、それまではユーザーのパスワードがsshで入る時のパスワードになることを知らなかった。
そしてそれだけで接続可能になる可能性があることを知らなかった。
sshサーバーの設定はひと通り、自分が使っているVPSサービスがやってくれており、多分大丈夫だろうとそのまま使っていたからだ。
それでハッキングされ、そいつに謎のperlスクリプトを走らされていた。
具体的なスクリプトファイルや.bash_historyは消されていたようで、どんなものを走らせられていたのかよく分からない。
ハッキングであることを知ったのは、/var/log/secure を見たからだが、そもそもこの自体に陥るまで /var/log/secure の存在とその役割を知らなかった。
「ポスグレ(PostgreSQL)がなんかバグったわ〜でも原因がよく分からんわ〜ヒマだしハッキングの可能性も考えとくか〜でも絶対ポスグレがバグったんだわ〜」
でググって初めて知ったぐらいだ。
それで見たらパスワード設定してから9日間でそれぞれ別の端末23件から不正アクセスを受けていたことが分かった。
VPSサービスのコントロールパネルを見ると、その内の1件が侵入した3分後にCPU100%現象が始まったので、十中八九そいつの仕業だろう。
それ以外の連中が何をやったのかは分からない。
分からないのでOSを再インストールした。DoS攻撃だったらあとで攻撃先に訴えられるかもしれないので、全データを家のパソコンにDLする事で証拠(?)を保存してから。
/etc/ssh/sshd_config には、sshサーバーの設定が書かれている。
その中のPasswordAuthenticationをnoにし、公開鍵暗号方式による認証のみ受け付けるようにした。
他になんかやることとかある?おしえてぴょーん
日本全国2000店舗ぐらいの携帯ショップが発信しているTwitterキャンペーン情報をまとめて検索できるサイト作りました。
・都道府県
・機種名(iPhone5s とか XperiaZ3 とか)
・ショップの種類(ドコモショップ とか ソフトバンクショップとか 、あと複数キャリア取り扱い店舗とか)
ちなみに佐賀県と島根県と富山県は店舗が見当たらなかったので選べませんwww誰かショップのTwitter知ってたら教えて下さい。
現状アクセスが無いので、MNPまとめてるブログにPRコメント連発中。
ちょっと迷惑かもしれないけど、自分で使ってみて「良いサイトできたな。。」と思ったので。。
技術的にはCentOS on PHP+MariaDB+Nginx だけど特別にすごいことしていないので割愛。
TwitterAPIをフル活用してるけど、結構制限が掛かっているのでそこだけ少し苦労した。
日本全国2000店舗ぐらいの携帯ショップが発信しているTwitterキャンペーン情報をまとめて検索できるサイト作りました。
・都道府県
・機種名(iPhone5s とか XperiaZ3 とか)
・ショップの種類(ドコモショップ とか ソフトバンクショップとか 、あと複数キャリア取り扱い店舗とか)
ちなみに佐賀県と島根県と富山県は店舗が見当たらなかったので選べませんwww誰かショップのTwitter知ってたら教えて下さい。
現状アクセスが無いので、MNPまとめてるブログにPRコメント連発中。
ちょっと迷惑かもしれないけど、自分で使ってみて「良いサイトできたな。。」と思ったので。。
技術的にはCentOS on PHP+MariaDB+Nginx だけど特別にすごいことしていないので割愛。
Windows2000がほとんどを占めていた社内のPC(といっても10台程度)をXPに更新したのが2005年頃。
ファイルサーバも、その時にVine Linux+Sambaだったものを玄箱HGに変えた。
そして今年、流行にのっかる形でWindows7へ移行。ついでに玄箱HGのファイルサーバをCentOS+Sambaに変えた。
動いているシステムは停めるな、という格言に従った訳ではないが、
今時のLinux環境、今時のレンサバのグレードアップ具合にちょっと驚いている。
なんせ10年前は10GBで3千円が格安!と思って飛びついたサーバが、
いまや200GBとか使えるんだもんなぁ・・・
Linux環境も、デスクトップ環境を改めて整えてみたら、思った以上に快適に使えてびっくり。
まぁ、インストール後のちょっとした設定に苦しんで英語サイトの情報にあたらないと解決しないのは
昔も今もあまり変わらないかなと思うけれど。