「WEBサーバー」を含む日記 RSS

はてなキーワード: WEBサーバーとは

2019-07-06

Mastodon創始者Gab対立が本格化

日本ではほぼ注目されていない言論の自由論争「GabによるMastodon参入問題」がついに本格化した。

Gabはこれまで北米オルタナ右翼巣窟と化し、ユダヤ教礼拝所襲撃の予告へ使われた結果、AppleGoogleプラットフォームWebサーバー関連企業から締め出されるという問題を起こしていた。

言論の自由」は尊いが、極右SNSGab」の存続は許されない

https://wired.jp/2018/11/02/gab-offline-free-speech-alt-right/

これらの締め出しによりGabフォークすることが自由であるコピーレフトなAGPLライセンス提供されるMastodonへ参入を表明するという施策を打ち出す。

Gab will become a Mastodon fork

https://news.ycombinator.com/item?id=20051043

それへ対してMastodon創始者のEugen Rochkoは不快感を示しMastodonコミュニティーとして声明を発表した。

Statement on Gab's fork of Mastodon

https://blog.joinmastodon.org/2019/07/statement-on-gabs-fork-of-mastodon/

しかしこのEugen Rochkoによる声明は一部に誤りがある。

Most servers in the fediverse are already blocking the Gab domains

分散SNSサーバー形成するFediberseネットワーク殆どサーバーGabブロックしている(意訳)

この点が誤っている。むしろなのだ

分散SNSサーバー形成するFediberseネットワーク殆どサーバーGabブロックしていないである

そもそもGabMastodonフォークすることが判明した際、まずEugen RochkoはMastodon自体Gabブロックする機能を追加しようとした。

しかし、これはAGPLライセンスの元で提供されている自由Mastodonには相応しくない判断としてMastodonコミュニティーはEugen Rochkoの提案棄却した。

GabブロックするかどうかはMastodonを含んだ各々の分散SNSサーバー管理者が判断すべきことであり、既にMastodonにはドメインブロックの仕組みがあるので、各々の分散SNSサーバー管理者の判断Gabブロックすべきだと反論されてしまったのだ。

Eugen Rochkoはこの反論を渋々了承し、今度は「MastodonクライアントアプリGabブロックする仕組みを導入しよう」とMastodonクライアントアプリ製作者たちへ対して提案した。

これもまた前述したAGPLの兼ね合いの反論が起きたが、一部のMastodonクライアントアプリ製作者は協調Gabドメインブロックした。

そして実際にMastodonフォークGabデプロイされていることを確認したEugen RochkoがMastodonコミュニティーとして出した声明が前述の「Statement on Gab's fork of Mastodonである

誤りがあると指摘した部分もそうであるが、Mastodonコミュニティー全体はこの声明に同意していない

Eugen RochkoはGabを憎むあまりAGPLとしては踏み込みすぎた発言を繰り返しており、度々非難されているのだ。

各々で違うルール運用されている分散SNSサーバー形成するFediverseネットワークには統一したルールはなく、当然ながら統一した意思というのも存在しない

コピーレフトなAGPLライセンスMastodonフォークしたGabはFediverseネットワーク自由に参入することが認められているし、Fediverseネットワークで(現地法令違反しない限りは)自由発言も認められている

Eugen RochkoがGabへ対して不快感を示すのは非常に理解できるが、Eugen RochkoがしようとするGabへの対策Mastodonを含んだ分散SNS自由を脅かすものになってしまっているのが問題である

MastodonGab問題自由を守るため自由を脅かす可能性がある」というリベラリズムにとって非常に興味深い現象に発展している。

2019-05-01

anond:20190501202124

Linux Webサーバー自分で作れる。

すげえ・・・

ちなみにウェブサーバを作るとき言語は何ですか?

設置したことはあるけど、作ったことは無いわ。俺。

2019-04-16

サイト作りたい

・ついったに投稿した落書きアーカイブ的なノリでギャラリーサイト作りたい

タグとかでジャンルごとに分けれるとよい

・できればタダなやつがよい

Tumblrは極力使いたくない(システムが嫌い&テーマいじりがしんどすぎる)

pixivとかニコ静もちょっと違う(自分サイト感が無い。自分サイトじゃないからだけど)

別の案件Webサーバー借りてるからWordpress使って作りゃいい話なんだけど、なんかもっと気軽な感じにできないもの

2019-03-29

サーバーツール系を置く場所ってどこにしてる?

Webサーバーだったら、/var/wwwとかありますよね。

Web機能の無い、社内ボット用とか通知用のサーバーで1台遊び用で作ろうかと。

/var/tools とか /opt/tools とかどこに置こうか迷い中。

もちろんサーバーレスも考えたけど、ガンガン増えても管理がめんどくさいなと。

皆さんどこにおいてます

2018-12-10

[]2018年12月9日日曜日増田

時間記事文字数文字数平均文字数中央値
0012617429138.339
018715637179.755
02464886106.273.5
03347349216.156
04224164189.349
05173537208.165
06121789149.145
0744333975.933
08597214122.339
09535642106.541
10767994105.239.5
1177672587.334
1287735584.560
13616923113.538
145912106205.239
156223605380.742.5
1669502472.826
171511209080.135
18130847965.237.5
199910441105.539
20788176104.836.5
2195610064.231
2214216071113.237
2320221729107.634
1日1888223804118.538

頻出名詞 ()内の数字単語が含まれ記事

人(165), 自分(157), 今(98), 増田(82), 話(70), あと(59), 必要(58), 好き(55), 感じ(53), 人間(53), 前(51), 仕事(50), 日本(48), 意味(45), 関係(43), 男(42), 女(41), 時間(41), 気(40), ー(38), 普通(38), 相手(38), 子供(38), 今日(37), 問題(37), ネット(36), 絶対(36), 言葉(35), 他(34), 場合(33), 女性(33), 理解(33), 最初(33), 金(33), 嫌(32), 最近(32), 社会(31), 頭(30), 結果(30), 親(30), 理由(30), 目(29), 結婚(28), 全部(28), しよう(28), 無理(27), ダメ(26), 逆(25), たくさん(25), 別(25), 昔(25), 状態(24), じゃなくて(24), 世界(24), お金(24), 気持ち(24), 一番(24), 他人(24), 本人(23), しない(23), 嫌い(23), アニメ(23), 生活(22), 評価(22), ゲーム(22), 男性(22), 時代(22), 存在(21), 体(21), 大事(21), 状況(20), 作品(20), 方法(20), 情報(19), 一人(19), バイト(19), 興味(19), 会社(19), 誰か(19), 努力(19), では(19), 全て(19), レベル(19), クズ(18), 説明(18), 大変(18), 周り(18), 本(18), 人生(18), 全員(18), 家(18), 社員(18), 絵(18), おっさん(18), バカ(18), 結局(18), 文化(18), 映画(17), 経験(17), 自由(17), 塾(17), 勝手(17), 正直(17), オタク(17), 内容(17), 名前(17), 価値(17), 手(17), 病気(17), 朝(17)

頻出固有名詞 ()内の数字単語が含まれ記事

増田(82), 日本(48), じゃなくて(24), 可能性(16), 元増田(13), いない(13), トラバ(12), 多様性(11), キモ(11), スマホ(11), 価値観(10), 自由意志(10), なんの(10), ブログ(10), フランス(10), 東京(10), 2018年(10), ワイ(9), SNS(9), わからん(9), …。(9), なんだろう(9), ネオリベ(9), ブクマ(8), 過労死(8), 基本的(8), アメリカ(8), マウンティング(8), ツイッター(8), なのか(8), 10年(8), 牛丼(8), 普通に(8), イヤホン(8), A(7), 自己肯定感(7), マジで(7), ガチ(7), 自動運転(7), アプリ(7), キチガイ(7), -2(7), a(6), 笑(6), 積極的(6), s(6), いいんじゃない(6), localhost(6), 何度(6), hatena(6), ダイバーシティ(6), 発達障害(6), 涙(6), 個人的(6), OK(6), Ubuntu(6), プレイ(6), イケメン(6), フェミ(5), 1年(5), である(5), とはいえ(5), AI(5), 自己責任(5), ディストピア(5), 自分自身(5), tbsradio(5), 分からん(5), 2017年(5), 書き起こし(5), 2回(5), 若い人(5), 大阪(5), goo.gl(5), ブコメ(5), twitter(5), 関係者(5), 栄光ゼミナール(5), 30分(5), 過去最低(5), 一日(5), paypay(5), Session(5), ウザ(5), マクロン(5), ありません(5), 81%(5), 保護者(5), はてなー(5), 永田(5), ドイツ(5), 1回(5), E3(5), 中国(5), .s(5), 荻上(5), はてブ(4), 至上主義(4), 被害者(4), 学生時代(4), いいね(4), 娘(4), 大企業(4), 人権侵害(4), items(4), AB(4), 自分たち(4), 風俗嬢(4), あいつら(4), KKO(4), 毎日(4), aXvn(4), Windows(4), サイコパス(4), ASD(4), 低能先生(4), にも(4), 関東(4), 人間関係(4), ヒトラー(4), 何回(4), 韓国(4), X(4), いいじゃない(4), qiita(4), 名古屋(4), 2ch(4), 1日(4), アラサー(4), Chrome(4), E(4), 一般的(4), 上の(4), かもしれん(4), 経済的(4), オチ(4), まとめサイト(4), AA(4), あるかな(4), B(4), ゲートウェイ(4), 自己満足(4), 影響力(4), コスパ(4), ラノベ(4), 2時間(4), 上場企業(4)

本日の注目単語 ()内の数字単語が含まれ記事

過去最低(5), 永田(5), 栄光ゼミナール(5), 紅生姜(4), マクロン(5), のこぎり(4), 荻上(5), 絵の具(3), 望(3), 白地(3), パイパイ(3), 自由意志(10), 暴動(8), 塾(17), 過労死(8), 牛丼(8), イノベーション(6), イヤホン(8), 皿(11), ケア(6), ネオリベ(9), 整形(9), 教室(9), 自己肯定感(7), 日曜(6), アクセス(12), そうした(9), 多様性(11), 介護(10), 遠い(8), マウンティング(8), 調査(10), 初期(8), 勤務(10), デート(11), バイト(19), ごめんなさい(8)

頻出トラックバック先(簡易)

過労死を出した栄光ゼミナールがどうなっちゃってんのか書いておく /20181208225303(20), ■ /20181208233617(19), ■ /20181209144856(14), ■『帰ってきたヒトラー』みたいな映画日本で撮るなら /20181208220445(12), ■チャリに乗ってイヤホンは本当に悪いのか? /20181208120626(10), ■結婚を考えてる相手が姓を捨てたくないと言ってきたら /20181208131726(9), ■増田ってひねくれた略称だよね /20181209110804(7), ■整形ってなんで忌み嫌う対象なんだろう? /20181209164235(7), ■「死にたい」にかける言葉 /20181209013103(7), ■尿道がズキズキする /20181209001114(6), ■カップヌードルに水を入れてしまった時の絶望感 /20181208175842(6), ■母はどうにも察しが悪い /20181209120616(5), ■プログラミング勉強ってどうやんの /20181209183335(5), ■漫画原作だけどアニメの方が面白い作品 /20181209000244(5), ■婦人系の病気をどこまで男性上司に伝えるべきか /20181209002118(5), ■窃盗症と自由意志に関する疑問 誰か教えて /20181209233033(4), ■アニメが嫌いなのは声優の演技がうざいから /20181209125120(4), ■石橋容疑者ダイバーシティ /20181208164423(4), ■[勉強] UbuntuWebサーバー構築を断念 /20181209225349(4), ■欧米人ヒトラーを憎んでいる理由がわからない /20181209013347(4), ■乳首の皮膚がボロボロ取れるんだが /20181209234607(4), ■作品タイトルの付け方が分からん /20181209012700(4), ■Wi-Fiはタダで使えると思っている奴多すぎ問題 /20181206214612(4), ■ズブズブの関係 /20181209215113(4), ■もうすぐ大学受験を控えてるんだけど /20181209192410(4), ■やりたいことが出てこない /20181209001258(4), ■犬猫は飯食っただけで褒められる /20181208203002(4)

増田合計ブックマーク数 ()内の数字は1日の増減

5863519(3931)

2018-10-20

anond:20181020113904

Webサーバーなんて月500円で個人で使うには十分すぎるスペックと容量手に入るよ(月100万アクセス越えとかだと流石にきついが)

ドメインプランによっては10個までとか制限あるけどいっぱい紐付けられるよ

でもってここが大事なんだけどあんなとっさにポンってサイト作れる人は既に自分用のサーバーを借りてる。だから全部埋没費用

用途仕事だったり趣味だったりする

月額か買い切りかってだけで特に金額に大差ないと思うし感覚の違いじゃないかな。ペンタブペインソフトカメラもよくて5年で買い換えるでしょ

2018-08-11

サマータイムの影響を調べてみた

会社でどんな影響がでるのか調べてみたので、メモしておきます

チャイム

40年ものの機材。始業と昼休みと終業を告げるチャイムを車内に鳴らす。放っておいても1か月に5分進む微妙な精度。サマータイムボタンはもちろん付いていないので、手動で調整する必要がある。

FAX

時計が入っていて、タイムスタンプが入るよね。あれはあまりいじったことないけど、サマータイム機能とかなさそう。海外展開していたら、ありそうだけど、日本仕様機能デチューンしてそう。

パソコン(windows10)

UTC時を基準に動いているので、対応可能現在日本ではサマータイムがないので、タイムゾーン東京大阪あたりを選ぶとサマータイム機能オフになるようになっている。正式サマータイムが決定して、windowsアップデート後にサマータイム機能が利用可能になる。

携帯電話

いわゆるガラケーガラパゴス携帯)は、一応、電波時計の調整がかかっているので、キャリア対応すれば、勝手に変わりそうな気がする。スマホOS自体対応してそう。アプリ開発者ごとに国際化対応を考えていたかどうかなんだろう。

会社玄関にある電波時計

電波の元が調整したら勝手に変わるのか。テストしたことなないだろうから、実際に発動させたら大変そう。

各部屋にあるかけ時計

サマータイムボタンはもちろん付いていないので、手動で調整する必要がある。

webサーバー上で現在時刻を取得するプログラム

これが厄介。開始時間バーコードを読み、さらに終了時間バーコードを読むようなプログラム場合、通常時間からサマータイムに変更されるタイミングにかかったときに正しい経過時間が記録されない恐れがある。多分、夜中に行うのであれば、いまのところ影響は回避できそう。24時間操業のところだと困りそう。サーバーは、そのまま放っておくというのも手のような気がした。記録を引きだす必要があるときに変換するとか、解釈するというのが現実解かも。

・予定表プログラム

同じ時間が2回くるタイミングと2時間飛ぶタイミングはどう表現しようか。深夜のことなので、寝ているだろうからスルーしていいのだろうか。切り替えタイミングとき例外処理をいれたほうが親切かな。現時点では同じ数え方で時間が経過することを前提に描画しているので、サマータイムによる時刻の変更は想定していない。実際にない制度のことを想定してコストをかけても誰もお金を払ってくれないよね。

24時間交代勤務シフト

サマータイム初日は、夜勤の後の朝の交代の人は2時間早くくるのか。サマータイムの終わりの日は、2時間残業しないと次の交代の人がこないのか。

サマータイムしない会社

サマータイムしませんという会社が現れたら、どうなるんだろう。取引上こまることはあるかな

また、思いついたら書きますではではー。

2018-07-18

anond:20180717173436

クローン病ではありませんが、もと潰瘍性大腸炎持ちです。21歳で発病し、当初はほぼ一日中トイレ行って横になっての繰り返し。トイレでは排泄するたびに激痛が走るし便器が血で真っ赤に染まるし結構つらかった思い出が有ります

就職活動では工場見学が一番きつかったです。漏らさないように全力で尻に力入れてたのをよく覚えています会社には病気の事は言わず、結局合格して今の会社就職しました)。

就職後は会社方針工場に配置されましたが、やはりちょくちょくトイレに行くのでたまに叱られました。これは迷惑かけてるのは事実なので謝るしかないと思います。ただ、比較的寛大な職場なので病気のことを話すとそれなりに理解はして頂けました。

工場で働きながら夜はプログラミングネットワーク勉強をし、約1年したところで情報システム部の人の目に留まってそっちに引き抜いてもらいました。他の方も言っておられると思いますが、IT関連は

自分のペースで仕事ができる。途中トイレ行っても別いにいいし、期限までに終わればいい。

・実力が有れば、比較学歴関係なく雇ってくれる。

という意味お勧めです。IT関連の職場では情報系を卒業した学生を雇ってみたものの、全く基礎ができていなかったということが度々ありますし、それだったらちょっとでも実践で役立つ能力を持っている人のほうがずっと喜ばれます自作アプリなど実力を証明できるものを持って面接に臨めると最強ですね)。

また、IT以外でも、こういう病気の人は単独でできる仕事自由トイレに行ける仕事模索することをお勧めします。それ以外だと精神プレッシャーがきつすぎます

IT部門に移動してから仕事中にしょっちゅうトイレに行っていましたが期限は守って仕事をしていたので、それについて何かを言われることはありませんでした。

また、年に一回程度、複数人社員で遠くに出張に行く必要が有りましたが、現地まで単独行動することをお願いして切り抜けました。

さらに数年に一回社長同行出張というウルトラ級のイベントが発生しましたが、前日から何も食べないなどして切り抜けました。それでも出血のためにトイレに行ったりして怒られたりしましたが。

IT系にも色々な職種が有りますが、独学でも学習やす実践で役に立ちやすオープンソース系を勉強するといいと思います。私はLinuxWebサーバーメールサーバーを見よう見まねでセットアップするところから始め、RubyPHPなどのプログラミング言語をこれまた見よう見まねで勉強しました。後にiPhoneアプリなども勉強して習得しました。

1年くらい勉強してようやくなんとなくできるようになったかな~と感じたころに情報システム部から声がかかりそちらに移動になりました。声がかかったのはそっちの部署の詳しい人に色々質問したりしてたからだと思います

また、最低一台はパソコン必要というハードルが有りますが、そこさえ超えればソフトウエア基本無料で手に入るのでやる気さえあれば比較お金をかけずに勉強できる分野だと思います

就職したのが22歳の時で、現在42歳になりますが、今はすっかりよくなってほぼ普通に毎日を送れています

クローン病潰瘍性大腸炎よりずっと辛いだろうなと思いますし、私の経験談が役に立つかはわかりませんが、元増田さんが平穏毎日を取り戻されることを祈っています

2017-11-02

マストドン

RSSリーダーfeedlyって、各ブログ記事タイムライン風に表示するじゃん。

ツイートフォーマット標準化して好きなWebサーバー各自が公開して、クライアントの側で勝手タイムライン風に表示すればいいんじゃね?

マストドンって中央集権でないのがいいって話があるけど、わざわざインスタンスを用意しなくても、こっちのほうが簡単だよな。

 

と思ったけど、このほうしきだと自分が何人にフォローされてるか把握するのが難しいから、自己顕示欲を満たせなくて面白くないか

2017-09-11

https://anond.hatelabo.jp/20170910205249

まじな話をすると、N予備校プログラミング入門コースやるのがオススメ

https://www.nnn.ed.nico

一日8時間勉強時間があるなら、だいたい一ヶ月で終わる内容。

月額1000円だけどしっかり勉強すれば一ヶ月の無料間中に終わると思う。

もともとN高等学校のノンプログラマーの生徒をWebエンジニアとして就職させるために作られたカリキュラム講師曰く去年はこれで二人エンジニア就職を決めたらしい。

内容も相当親切に説明していて、プログラミングで何か作るだけじゃなくて、就職必要な環境構築やセキュリティまでみっちりやる。

http://qiita.com/sifue/items/7e7c7867b64ce9742aee#%E3%82%B3%E3%83%B3%E3%82%BB%E3%83%97%E3%83%88%E3%82%92%E3%82%82%E3%81%A8%E3%81%AB%E6%A7%8B%E6%88%90%E3%81%95%E3%82%8C%E3%81%9F%E3%82%B3%E3%83%BC%E3%82%B9%E3%81%A8%E5%86%85%E5%AE%B9

講師が書いてる入門コースで習うことがまとめ。テキスト教材もあるけど授業も1項目を2時間で説明している。授業は週2の生放送とそのアーカイブがある。

↓みたいなことが学べる

----

Webプログラミング入門コース

Web ブラウザとは (Chrome, デベロッパーコンソール, alert)

はじめてのHTML (VSCode, HTML, Emmet)

さまざまなHTMLタグ (h, p, a, img, ul, tableタグ)

HTMLで作る自己紹介ページ (HTMLタグ組み合わせ, コンテンツ埋め込み)

はじめてのJavaScript (JS, ES6, エラー)

JavaScriptでの計算 (値, 算術演算子, 変数, 代入)

JavaScript論理を扱う (論理値, 論理積, 論理和, 否定, 比較演算子, if)

JavaScriptループ (ループ, for)

JavaScriptコレクション (コレクション, 配列, 添字, undefined)

JavaScript関数 (関数, 関数宣言, 引数, 戻り値, 関数呼び出し, 再帰)

JavaScriptオブジェクト (オブジェクト, モデリング, プロパティ, 要件定義)

はじめてのCSS (CSS, セレクタ, background-color, border)

CSSを使ったプログラミング (transform, id, class)

Webページの企画とデザイン (企画, 要件定義, モックアップ, 16進数カラーコード)

診断機能の開発 (const, let, JSDoc, インタフェース, 正規表現, テストコード)

診断機能組込み (div, 無名関数, アロー関数, ガード句, truthy, falsy)

ツイート機能の開発 (リバースエンジニアリング, URI, URL, URIエンコード)

Linux開発環境構築コース

LinuxというOS (VirtualBox, Vagrant, Ubuntuインストール, OS, CUIの大切さ)

コンピューター構成要素 (ノイマンコンピューター, プロセス, lshw, man, ps, dfの使い方)

ファイル操作 (pwd, ls, cd, mkdir, rm, cp, mv, find, ホストマシンとの共有ディレクトリ)

標準出力 (標準入力標準出力標準エラー出力パイプgrep)

vi (vimtutor)

シェルプログラミング (シバン, echo, read, 変数, if)

通信ネットワーク (パケット, tcpdump, IPアドレス, TCP, ルーター, ping)

サーバークライアント (tmux, nc, telnet)

HTTP通信 (http, https, DNS, hostsファイル, ポートフォワーディング)

通信をするボットの開発 (cron, ログ収集)

GitHubウェブサイトの公開 (GitHub, リポジトリ, fork, commit, 情報モラル)

イシュー管理とWikiによるドキュメント作成 (Issues, Wiki)

GitとGitHub連携 (git, ssh, clone, pull)

GitHubへのpush (init, add, status, インデックス, commit, push, tag)

Gitのブランチ (branch, checkout, merge, gh-pages)

ソーシャルコーディング (コンフリクト、プルリクエスト)

Webアプリ基礎コース

Node.js (Node.js, nodebrew, Linux, REPL, コマンドライン引数, プルリク課題)

集計処理を行うプログラム (集計, 人口動態CSV, Stream, for-of, 連想配列Map, map関数)

アルゴリズムの改善 (アルゴリズム, フィボナッチ数列, 再帰, time, プロファイル, nodegrind, O記法, メモ化)

ライブラリ (ライブラリ, パッケージマネージャー, npm)

Slackボット開発 (slack, mention, bot)

HubotとSlackアダプタ (hubot, yo)

モジュール化された処理 CRUD, オブジェクトライフサイクル, filter)

ボットインタフェースとの連携 (モジュールのつなぎ込み, trim, join)

同期I/Oと非同期I/O (同期I/O, 非同期I/O, ブロッキング)

例外処理 (try, catch, finally, throw)

HTTPサーバー (Web, TCPとUDP, Webサーバーの仕組み, Node.jsイベントループ, リスナー)

ログ (ログ, ログレベル)

HTTPのメソッド (メソッド, GET, POST, PUT, DELETE, CRUDとの対応)

HTMLフォーム (フォームの仕組み, form, input)

テンプレートエンジン (テンプレートエンジン, jade)

HerokuWebサービスを公開 (Webサービスの公開, heroku, dyno, toolbelt, login, create, logs)

認証利用者を制限する (認証, Basic認証, Authorizationヘッダ, ステータスコード)

Cookie を使った秘密匿名掲示板 (Cookie, Set-Cookie, expire)

UI、URI、モジュール設計 (モジュール設計, フォームメソッド制限, リダイレクト, 302)

フォームによる投稿機能の実装 (モジュール性, textarea, 303)

認証された投稿の一覧表示機能 (パスワードの平文管理の問題, 404, テンプレートのeach-in)

データベースへの保存機能の実装 (データベース, PostgreSQL, 主キー)

トラッキングCookieの実装 (トラッキング Cookie, IDの偽装, Cookie の削除)

削除機能の実装 (データベースを利用した削除処理, 認可, サーバーサイドでの認可)

管理者機能の実装 (Web サービス管理責任, 管理者機能の重要性)

デザインの改善 (Bootstrap, レスポンシブデザイン, セキュリティの問題があるサイトを公開しない)

脆弱性 (脆弱性, 脆弱性で生まれる損失, 個人情報保護法, OS コマンド・インジェクション)

XSS脆弱性対策 (XSS, 適切なエスケープ処理, リグレッション)

パスワード脆弱性対策(ハッシュ関数, メッセージダイジェスト, 不正アクセス禁止法, パスワードジェネレーター, 辞書攻撃)

セッション固定化攻撃脆弱性対策 (セッション, セッション固定化攻撃, ハッシュ値による正当性チェック)

より強固なセッション管理 (推測しづらいセッション識別子, 秘密鍵)

CSRF脆弱性対策 (CSRF, ワンタイムトークン)

安全なHerokuへの公開 (脆弱性に対する考え方, HTTPの廃止)

Webアプリ応用コース

Webフレームワーク (Express.js, フレームワーク導入, 簡単なAPI, セキュリティアップデート, Cookie パーサー, ミドルウェア, 外部認証, ロガー)

ExpressのAPI (app, Properties, Request, Response, Router)

GitHubを使った外部認証 (Passport, OAuth)

スティングフレームワーク (Mocha, レッド, グリーン, リファクタリング)

継続的インテグレーション (CircleCI)

クライアントフレームワーク (Webpack, Chrome 以外のブラウザでもES6)

DOM操作フレームワーク (jQuery, jQueryアニメーション, this)

AJAX (jQuery.ajax, クロスドメイン, 同一生成元ポリシー, x-requested-by, CORS)

WebSocket (WebSocket, WebSocketの状態遷移, Socket.io)

RDBとSQL (DDL, DCL, CREATE, DROP, INSERT, DELETE, UPDATE, WHERE)

データモデリング (リレーショナルモデル, 正規化)

テーブルの結合 (外部結合, 内部結合, 片側外部結合, JOIN ON)

インデックス (インデックス, 複合インデックス, Bツリー)

集計とソート (SUM, COUNT, ORDER BY, GROUP BY)

「予定調整くん」の設計 (要件定義、用語集、データモデル、URL設計モジュール設計、MVC)

認証とRouterモジュールの実装 (Mocha, supertest, passport-stub, モックテスト)

予定とユーザーの保存 (セキュリティ要件, UUID, 複合主キー)

予定とユーザーの一覧の表示 (非同期処理, Promise, then)

出欠とコメントの表示 (入れ子の連想配列, Promise.all, 子どもからデータを消す)

出欠とコメント更新 (Promiseチェイン, リファクタリング)

予定の編集と削除 (要件の衝突, 関数再利用)

デザインの改善 (this, グローバルオブジェクト)

セキュリティ対策と公開 (X-Frame-Options, Heroku環境変数)

新調する自宅サーバーのスペックを考えた

今はAtom 330+ION+SST-SG05B+SSD+HDD+TVチューナー構成

ケース新調&SATAポート追加&OS入れ替えの必要が出てきたので、新調することにした。

パーツ名称価格備考
マザーボードASRock H270M-ITX/ac¥13,760H270M, Mini-ITX, SATA最多
CPUCeleron G3930T¥4,220最小TDPで最安のもの
CPUクーラーサイズ 風神スリム¥3,674ロープロファイル, 汎用12cmファン
メモリTeam TED48GM2400C16DC01¥6,980DDR4-2400 4GB×2
システムドライブX25-M 80GB¥0SSD, 余り
データドライブWD40EFRX¥0WD Red 4TB, 流用
バックアップドライブWD80EFZX¥32,617WD Red 8TB
余りHDDWD1003FZEX¥0WD Black 1TB。ファイル履歴シャドウコピー用。壊れたら他のドライブから間借りする。
余りSSDX25-V 40GB¥0用途未定。キャッシュに使うにも書き込みが遅い。余りHDDが壊れた時のシャドウコピーとか。
電源Corsair RM650x 650x¥12,917260Wまでファンレスで動くATX電源
ケースLian-Li PC-Q25B¥19,830ファイルサーバーに適したケース
ファンコントローラGRID+ V2¥4,280Windowsから制御できるファンコン
TVチューナーPX-W3PE Rev1.3¥0地上波2ch, 流用
合計¥98,278

候補から外れたもの

ケース
PC-Q28B
SS-DS380B
マザーボード
J4205-ITX
A68N-5600

2017-06-12

一般的エンジニアレベルが分からない

俺の会社技術力低いらしいのは薄々分かるんだが、世の中のエンジニアレベルが分からない

入社して3年以内のエンジニアの人で、今具体的にどんなことをやっているのか教えて欲しい

ちなみに俺のレベルサーバOS設計書見ながら建てられるとか、bashperl簡単スクリプト組めるとか、webサーバー立てられるとか、まあそんなもん

2年目でこれっぽっちである

2017-04-19

流行ってるOrarioと大学側について思うこと

Orarioについて思うこと

Orarioについて

現在大学の中でOrarioのアクセスがどうこうという問題が起きているようだが、

ひとまずこの記事については、下記URLにある、京都大学専門家であらせられる記事について、一人歩きしてる感があるので、

もう少し彼のような上流側(という表現で良いかどうかは不明だが)の専門家ではなく、

下流プログラムガッツリ書いているほうの専門家として私(匿名で失礼)が纏めたいと思う。

  

https://srad.jp/~yasuoka/journal/611343/

  

  

不正アクセスという言葉曖昧

Orarioの芳本大樹が書いた『時間割アプリの「Orario」の特性安全性について』(2017年4月17日)という文書を読んだ。このOrarioは、京都大学のKULASISにずっと不正アクセスを繰り返していて、正直なところ私(安岡孝一)としてはアタマに来ていたのだ。

  

Orarioの特性安全性について、本当にスクレイピング技術クライアント端末側で行っているのであれば、

この部分は間違いではないと私(匿名で失礼)は考えている。

  

この部分の書き方、実に大学教授らしい逃げ道を多く用意していて。

  

KULASISにずっと不正アクセスを繰り返していて

  

上記発言、これは本来「開発時の検証段階」の話をしているのであれば「正解」、である

逆に今のOrarioの通信についてを不正アクセスとしているのであれば「正解ではない」、である

  

何せ、開発者勝手アカウントを使って入り込んで様々な検証を行う必要があるため、

学生からIDパスワードを借りたはずだ。

借りてログインするのが不正かというと微妙ラインだと思う。

  

この辺りにもやっぱり大学教授のいやらしさがあって

KULASISサーバに対してクラッキング/ハッキングを行って根こそぎどうこうしたなどという大がかりな不正アクセスではなく、

あくま大学側が定める規約規則から若干外れた使われ方がされているという意味不正アクセスである

  

法律的には、正直不正かどうか微妙ラインになる。

(そもそもスクレイピングなんて技術を使う連中はID/PASSWORDがない状態でのサーバへの不正アクセスなどできない

  

開発時は「京大のKULASISアカウントをもったユーザが開発に携わっていないのであれば」押し出してきている京大規約によれば、不正アクセスにあたるのかもしれない。

個人的には当たらないと感じるが。

  

  

現在動いているアプリ不正アクセスと断言できない

現在動いているもの不正アクセスではなく、

京大規定に定められたユーザが「特定ブラウジングツール(Orario)」により、

KULASISにアクセスしているのだからアクセスとしては不正ではない。

本当にスマートWebスクレイピングで行われているのであれば、Webブラウザと全く同じ動きをするはずで、

それを不正アクセス断罪してOrarioは不正というのは表現が汚いと考える。

  

  

これはコメント欄にもあるが、

https://srad.jp/comment/3196554

また、ChromeSafari(及びその他マイナーWebブラウザ)なども御校のWebサーバーよりコンテンツデータを取得し、HTML構文解析し画面表示を行っていますが、これらはセキュリティポリシーには適合しているのでしょうか?

  

ご大層にはっておられるリンクを流し読みをする限り、そんな厳格に何かを定めているわけではないように思われる。

それ故、実際にOrarioがスマートフォンによるスクレイピングを行っているのであれば、

Webブラウザ一種とも言えなくはない為、これを不正と断ずるのは、「正しくない」だろう

京大ユーザが開発に携わったか証明できない以上、彼にとっては不正なのかもしれないが、

ここでそれをOrarioは不正アクセスと断ずる論理性が私(匿名で失礼)にはわからない。

  

  

アクセスパターンを公開できない理由とは?

他にもこの部分

Orarioアプリでは「Webオートメーション(Webスクレイピング)」と呼ばれる技術を用いています。この技術により、利用者様のスマートフォン(にインストールされているOrarioアプリ)に学生アカウント大学IDパスワード)を入力すると、自動で当該利用者様の教務用ページから時間割の生成に必要情報のみを取得し、Orarioアプリ時間割テーブルに当該利用者様の時間割を生成・表示することができるという仕組みとなっています

全く信用できない。少なくとも先月以前、OrarioからKULASISへのアクセスパターンを解析した限りでは、そんな風なアクセスパターンには見えなかった。嘘を書くのもいい加減にしろ

  

この部分も怪しいものである

Webスクレイピング技術に関して、なぜアクセスパターン問題になるかが一つ疑問である

下記のOrarioが出しているPDF(http://www.orario.jp/wp-content/uploads/2017/04/Orario%E3%81%AE%E5%AE%89%E5%85%A8%E6%80%A7%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E8%A6%8B%E8%A7%A3.pdf)にあるように、簡単にいうならばID/Passwordを利用したPOST通信を行い、その返答値をスクレイピング切り貼り)している。

  

それをアクセスパターンを解析で一体何が取れるのか?という部分が、この辺りが分かる自称専門家の私(匿名で失礼)にもさっぱりわからない。

  

もっというと、「そんな風なアクセスパターンには見えない」、というならば、セキュリティ観点上公開すべきではないだろうか、

逆に一体アクセスパターンを見て私(匿名で失礼)も何を行っているのかが気になるところである

  

ただでさえ、不正アクセスという言葉をつかって攻撃しているわけだから

アクセスパターンを公開して断罪すべきだし、セキュリティ観点からみても他大学との共有はすべきで、

学生に対してもその証拠を出して止めさせるべきだろう、というのが個人的見解である

学生の求める「単位」をつかって脅しをかけている時点で、お察しだが……。

  

そもそも上記で述べた開発時のほぼ不正アクセスと考えられる通信についてを「アクセスパターン解析で見つけた」というのであれば理解ができるが、

現在すでにスクレイピング確立している通信に関して、アクセスパターンでOrarioかどうかを判別するのが可能かというと何とも言えないと思う。

(ご丁寧にOrarioが通信用のUserAgentにOrarioの文字を含めているなら別だが……

(もちろん、アクセスログを見て、ログインページからWebスクレイピングしたいページへ遷移するまでの時間を取るとあまりに短すぎる、という話ならやれるかもしれないが……。

  

たとえKULASISが京都大学オリジナルで開発した大学教務事務パッケージだとしてもそうだろうと考えている。

同様に日立富士通も同じような大学教務事務パッケージがあるが、

基本ログ処理がザルでろくにuser-agentの確認もできない大学も多く存在したりすることを知ってる自分としては、

本当だろうか?嘘を書くのもいい加減にしろ? と思う。

大学側について思うこと

なぜOrarioが学生に人気か

UIが糞(システムスマートフォン対応がノロい)だからアプリ流行るということに気づくべき。

  

富士通日立にしてもそうだが、API提供したほうがいいのではなかろうか。

とくにKULASISだったか何だったは、京都大学謹製と聞いている(違ったら失礼

少なくとも他の大学教務事務パッケージではなかったと記憶している。

であれば、京都大学API提供大学側で専門家を集めてOrarioを超えるものを作ってはどうか?

  

大学予算確保の問題

実際大学でこういうことをやろうにも、問題になってくるのは予算で。

大学は、縦割り構造で、横とのつながりが極端に薄く。

教務、事務、学務、図書館、など様々な縦割りが存在し、それぞれがそれぞれの予算でそれぞれのシステムを入れている。

これが実に糞で。

つの大きなシステムを入れ替えるとなると、横との連携をとって全ての組織の号令をとらなければならない。

  

その辺りが難しいのは知っているので文句は言えないものの、

ここまで問題になってくるとやはりその辺りの対応の遅さが問題なのではないかと考えている。


まとめ

学生がアホ → 仕方が無い若いんだし

大学がアホ → 学生に良い物を提供したいという思いがあるならもっとフットワーク軽くしろ

教授がアホ → 曖昧表現で、素人を先導しようとするのが見え見えで気に入らない

Orarioアホ → コメントにもあるけどやり方が汚いのは確かだから甘んじて受け入れろ


以上です

2017-02-24

anond:20160529110102

使っていますよ。

たまにやるマイクラサーバーファイルサーバーwebサーバー、あとは録画サーバー運用してます

動画エンコとかはもちろんできないけど、壊れても良い前提で運用した方がいいです。

*nixの環境があれば技術習得もやりやすいし良いんじゃないですか?

自宅サーバーは火事が怖いのでファンレスにして、ホコリ貯めないでネ。

2016-12-29

はてブで「Amazon」と検索してみると

昨今話題になってるヤマト佐川関連のブックマークが上位を占めるかと思いきや、まったく違った。

2016年12月29日10:54時点、本文、新着順で検索

Amazon検索結果 (絞り込み: 3 users 以上) 約 3,423 件中 1 - 40 件目 (0.26 秒)

以下略

ECサイト連想させるトピックほとんどなくて、AmazonB2B向けサービスを充実させていることに驚いた。

Amazonって表向きは物流業界革命問題を起こしている要因に挙げられているけど、EC以外のインパクトがどれだけ大きいのか門外漢なので分からない。

↑でブクマ付けた人、何が起きるのか教えて

2016-12-27

Web企業のくせに自社Webサーバーセキュリティ無頓着って何なん?

某社のサーバーの問い合わせページをSSL LabsにかけてみたらランクC。TLS1.2が使えないばかりかSSL3.0がまだ有効のままだし、ApacheバージョンHTTPレスポンスに丸見えだし、そのバージョン脆弱性抱えた2.0.64だし、なんかもうお察しくださいなレベルだな。ひでえ。

ホームページの「大型新人入社!」とかわけのわからんこと言ってる前にやることあるのにいったいいつ気づくのだろうか。

2016-04-09

パソコンが汚れるのでインストール型のソフト提供をいい加減やめてくれ、日本メーカー

何かあるとすぐに「設定ツール]をインストールして… 云々。

Web対応させるには別のエンジニアグループ必要だろうからライン違うし気持ちもわかるのだが。

かのバファロ先生無線LAN親機でも同じ始末である。で、設定ツールというから何かと思えば、結局デフォルトゲートウェイWebサーバーに遷移させるだけだった。

そして遷移した先には偉そうに バファロ独自機能です!

みたいな。

いらん!ちゅーねん。

元々海外にいたのだが別にたまたまファロを例に出したけど、日本メーカーの作るIT機器プリンタとかも)は、無用ものが多すぎる。

ただこれと同時にマジョリティのそれほどパソコン詳しくない人たちにはここまでしてあげないと、使ってくれない、買ってくれないんだろうなーとも思ってる。

いやはや。

2015-08-25

IT関係ないサラリーマンコミュニティサイト作っちゃいました。

私ごとですが、この度コミュニティサイト作成いたしました。

私の持てる知識を絞り出してなんとか完成しました。

**************************************************************************************

完成したサイトがこちらです。

LapyNetニュース

http://lapynetz.net/

**************************************************************************************

私は普段webとは関係ない仕事してます。なんとか休日を利用して、

webサービス作成しました。

メインのコードはこんな感じ

----------------------------------------------------------------------------------------------------------------------



App::uses('Sanitize', 'Utility');
class RssfeedsController extends AppController {

public $helpers = array('Html','Form','Session','Number','Cache');

public $uses = array(
'Rssfeed',
'Tweet',
'Wadai',
'Rank',
'Oracle'
);
 **************************************************************************************
public function index() {

$title_for_layout = "LapyNetニュース";
$content = "Hello World!!";

$this->set(compact('title_for_layout','content'));
if(date("G")>0 and date("G") < 7){
$today = date("Y-m-d", strtotime('-1 day'));
}else{
$today = date("Y-m-d");
}

$params = array(
'conditions' = > array(
'and' = > array(
'Rssfeed.time' = > $today,
)),
'order' = > 'tweets desc',
'limit' = > '50'
);
$this- >set('posts',$this- >Rssfeed- >find('all',$params));

$paramz = array(
'order' = > 'Rssfeed.id desc',
'limit' = > '10'
);
$this->set('posts2',$this->Rssfeed->find('all',$paramz));

$paramz = $this- >Rssfeed- >query('SELECT id,title FROM rssfeeds order by id desc limit 10');

$this->set('posts2', $paramz);

$parapara = $this- >Oracle- >query('SELECT id,title FROM oracles order by id desc limit 10');

$this- >set('postx', $parapara);

$funking = $this- >Rank- >query('SELECT id,frank FROM ranks where creation=(select max(creation) from ranks)');

$this- >set('funking', $funking);


}

 **************************************************************************************
public function mizuno() {
$parapara = array(
'order' => 'Oracle.id desc',
'limit' => '30'
);
$recent_posts = $this->Oracle->find('all',$parapara);
return $recent_posts;

}


 **************************************************************************************
public function wadai() {
if(date("G")>0 and date("G") < 7){
$today = date("Y-m-d", strtotime('-1 day'));
}else{
$today = date("Y-m-d");
}

$params = array(
'conditions' => array(
'and' => array(
'Rssfeed.time' => $today,
'Rssfeed.kubetu' => 4
)),
'order' => 'tweets desc',
'limit' => '100'
);
$this->set('posts',$this->Rssfeed->find('all',$params));





$this->set("title_for_layout","2CHニュース-LapyNetニュース");


$paramz = array(
'order' => 'Rssfeed.id desc',
'limit' => '10'
);
$this->set('postyy',$this->Rssfeed->find('all',$paramz));

$parapara = array(
'order' => 'Oracle.id desc',
'limit' => '10'
);


$this->set('postyx',$this->Oracle->find('all',$parapara));

$funking = $this->Rank->query('SELECT * FROM ranks where creation=(select max(creation) from ranks)');

$this->set('funking', $funking);



}
 **************************************************************************************
public function hot() {
if(date("G")>0 and date("G") < 7){
$today = date("Y-m-d", strtotime('-1 day'));
}else{
$today = date("Y-m-d");
}

$params = array(
'conditions' => array(
'and' => array(
'Rssfeed.time' => $today,
'Rssfeed.kubetu' => 3
)),
'order' => 'tweets desc',
'limit' => '20'
);
$title_for_layout = "LapyNetニュース";
$this->set("title_for_layout","ニュース-LapyNetニュース");
$this->set('posts',$this->Rssfeed->find('all',$params));

$parapara = array(
'order' => 'Oracle.id desc',
'limit' => '10'
);
$this->set('postxx',$this->Oracle->find('all',$parapara));

$paramz = array(
'order' => 'Rssfeed.id desc',
'limit' => '10'
);
$this->set('postsxxx',$this->Rssfeed->find('all',$paramz));

$funking = $this->Rank->query('SELECT * FROM ranks where creation=(select max(creation) from ranks)');

$this->set('funking', $funking);


}

 **************************************************************************************
public function newnew() {
if(date("G")>0 and date("G") < 7){
$today = date("Y-m-d", strtotime('-1 day'));
}else{
$today = date("Y-m-d");
}

$params = array(
'conditions' => array(
'and' => array(
'Rssfeed.time' => $today,
'Rssfeed.kubetu' => 2
)),
'order' => 'tweets desc',
'limit' => '20'
);
$this->set("title_for_layout","エンタメニュース-LapyNetニュース");
$this->set('posts',$this->Rssfeed->find('all',$params));

$paramz = array(
'order' => 'Rssfeed.id desc',
'limit' => '10'
);
$this->set('postszz',$this->Rssfeed->find('all',$paramz));

$paramz = $this->Oracle->query('SELECT id,title FROM rssfeeds order by id desc limit 10');

$this->set('postszz', $paramz);

$parapara = $this->Oracle->query('SELECT id,title FROM oracles order by id desc limit 10');

$this->set('postzy', $parapara);


$funking = $this->Rank->query('SELECT * FROM ranks where creation=(select max(creation) from ranks)');

$this->set('funking', $funking);



}
 **************************************************************************************
public function top() {
if(date("G")>0 and date("G") < 7){
$today = date("Y-m-d", strtotime('-1 day'));
}else{
$today = date("Y-m-d");
}
$params = array(
'conditions' => array(
'and' => array(
'Rssfeed.time' => $today,
'Rssfeed.kubetu' => 1
)),
'order' => 'tweets desc',
'limit' => '20'
);
$this->set('posts',$this->Rssfeed->find('all',$params));

$param = array(
'conditions' => array('times > current_timestamp + interval -600 minute and Kubetu = 4'),
'order' => 'tweets desc',
'limit' => '30'
);
$this->set('posts2',$this->Rssfeed->find('all',$param));
}


 **************************************************************************************
public function view($id = null ) {
$this->Rssfeed->id = $id; //驥崎ヲ√↑荳譁・i縺励>
$user = AuthComponent::user();

$TwimStatus = ClassRegistry::init('Twim.TwimStatus');


$TwimStatus->getDataSource()->setToken(AuthComponent::user());

$statuses = $TwimStatus->tweet();
$rairai = $this->Rssfeed->read(title,$id);
$alcol = $this->Rssfeed->read();
$this->set('post', $alcol);

$this->set('post2', $user);
$this->set('post3', $statuses);
$this->set("title_for_layout",$rairai[Rssfeed][title]."-LapyNetニュース");

$paramz = array(
'order' => 'Rssfeed.id desc',
'limit' => '20'
);
$this->set('postszz',$this->Rssfeed->find('all',$paramz));

$parapara = array(
'order' => 'Oracle.id desc',
'limit' => '30'
);
$this->set('postzy',$this->Oracle->find('all',$parapara));

}
 **************************************************************************************
public function add() {

if($this->request->isPost()){
if($this->Tweet->save($this->data)) {
$this->Session->setFlash('seikou');
$this->redirect(array('controller'=>'rssfeeds','action'=>'view',$contents11));

}else{
$this->Session->setFlash('sipai');
$this->redirect(array('controller'=>'rssfeeds','action'=>'view',$contents11));
}
}
}
 **************************************************************************************
public function delete($id = null) {
$this->Rssfeed->id = $id; 
$this->set('set', $this->Rssfeed->read());
$this->redirect(array('controller'=>'tweets','action'=>'delete',$this->data['tweet']['rssfeed_id']));


}
 **************************************************************************************
public function oracle() {
if($this->request->is('post')) {

$user = AuthComponent::user();

$TwimStatus = ClassRegistry::init('Twim.TwimStatus');


$TwimStatus->getDataSource()->setToken(AuthComponent::user());

$contents1 = $this->request->data['Rssfeed']['contents'];
$contents2 = $this->request->data;
$statuses = $TwimStatus->tweet($contents1);


if($this->Rssfeed->save($contents2)) {
$this->Session->setFlash('成功です。');
$this->redirect(array('controller'=>'rssfeeds','action'=>'view',$contents11));
$this->redirect($this->referer());
}else{
$this->redirect(array('controller'=>'rssfeeds','action'=>'view',$contents11));
$this->Session->setFlash('失敗です。');
}
}


}
 **************************************************************************************
public function makelist() {
$rssfeeds = $this->paginate();
if ($this->request->is('requested')) {
return $rssfeeds;
} else {
$this->set('rssfeeds', $rssfeeds);
}
}

}

----------------------------------------------------------------------------------------------------------------------

rssフィードはこんな感じです。
----------------------------------------------------------------------------------------------------------------------

#!/usr/bin/php
<?php

header('Content-type: text/html; charset=UTF-8');


require_once ('/var/www/html/s/magpierss/rss_fetch.inc');


define('MAGPIE_CACHE_AGE', 60*5);

define('MAGPIE_CACHE_DIR', '/var/www/html/s/cache/');

define('MAGPIE_OUTPUT_ENCODING','UTF-8');


$urls = array(
'*********************************');

$items = getRssList($urls);

echo '<ul>';
foreach ($items as $item) {

$href = mb_convert_encoding($item['link'], "UTF-8", "auto");

$title = mb_convert_encoding($item['title'], "UTF-8", "auto");
$description = mb_convert_encoding($item['description'], "UTF-8", "auto");
$megami = mb_convert_encoding($description, "UTF-8", "auto");

 

 **************************************************************************************


$all = 'http://urls.api.twitter.com/1/urls/count.json?url='.$href;
$Rits = file_get_contents($all);
$Olfe = mb_convert_encoding($Rits, 'UTF-8', 'auto');
$data = json_decode($Olfe);
$tweets = $data->count;

 **************************************************************************************

$checkman = db_check_urls($href);
$checkman2 = db_check_pr($title);

$nowtimes = date('Ymd');

 


if($checkman == 0 && $checkman2 == 0){
#$hrefs = urlencode($href);
db_put_urls($nowtimes,$href,$title,$description,$tweets);
echo "<li><a href=$href>$title</a><br>$megami<p>$tweets</p><p>$checkman</p></li>";
}else{

}


}
echo '</ul>';

 

 

 **************************************************************************************
function getRssList($urls)
{
$rssitems = array();
foreach ($urls as $url) {
$obj = fetch_rss($url);
$rssitems = array_merge($rssitems, $obj->items);
}
return $rssitems;
}

 **************************************************************************************
function db_check_pr($japanese){

$moji = mb_substr($japanese,0,2);
if($moji == 'PR'){
return 1;
}else{
return 0;
}
}
 **************************************************************************************

function db_check_urls($href){

require '/var/www/html/s/database_conf.php';

try {

$db = new PDO($dsn, $dbUser, $dbPass);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


$sql = 'SELECT count(*) AS count FROM rssfeeds WHERE urls = :language';
$prepare = $db->prepare($sql);


$languages = array($href);
foreach ($languages as $language) {

$prepare->bindValue(':language', $language, PDO::PARAM_STR);
$prepare->execute();

$result = $prepare->fetchColumn();
if ($result > 0) {
return true;
}else{
return false;
}
}

} catch (PDOException $e) {
echo 'エラーが発生しました。内容: ' . h($e->getMessage());
}

function h($var) 
{
return htmlspecialchars($var, ENT_QUOTES, 'UTF-8');
}
}

 **************************************************************************************
function db_put_urls($nowtimes,$href,$title,$description,$tweets){
require '/var/www/html/s/database_conf.php';
try {

$db = new PDO($dsn, $dbUser, $dbPass);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sikibetu = 5;
$moto = "アニゲー速報VIP";

$sql = 'insert into rssfeeds (id, time,urls,title,contents,tweets,times,kubetu,teikyo) values (?, ?, ?, ?, ?, ?, ?, ?, ?)';

$prepare = $db->prepare($sql);

$prepare->bindValue(1, 0, PDO::PARAM_STR);
$prepare->bindValue(2, $nowtimes, PDO::PARAM_STR);
$prepare->bindValue(3, $href, PDO::PARAM_STR);
$prepare->bindValue(4, $title, PDO::PARAM_STR);
$prepare->bindValue(5, $description, PDO::PARAM_STR);
$prepare->bindValue(6, $tweets, PDO::PARAM_STR);
$prepare->bindValue(7, 'cast( now() as datetime)', PDO::PARAM_STR);
$prepare->bindValue(8, $sikibetu, PDO::PARAM_STR);
$prepare->bindValue(9, $moto, PDO::PARAM_STR);
$prepare->execute();

} catch (PDOException $e) {
echo 'エラーが発生しました。内容: ' . h($e->getMessage());
}
}
?>

---------------------------------------------------------------------------------------------------------------------

**************************************************************************************

参考にした書籍

CakePHP2 実践入門 (WEB+DB PRESS plus)

CakePHP2 実践入門 (WEB+DB PRESS plus)

作者: 安藤祐介,岸田健一郎,新原雅司,市川快,渡辺一宏,鈴木則夫

出版社/メーカー: 技術評論社

発売日: 2012/09/29

メディア: 単行本ソフトカバー

購入: 5人 クリック: 165回

この商品を含むブログ (9件) を見る

Webアプリ開発を加速する CakePHP2定番レシピ119

Webアプリ開発を加速する CakePHP2定番レシピ119

作者: 長谷川智希,デジタルサーカス

出版社/メーカー: 秀和システム

発売日: 2013/09/28

メディア: 単行本

この商品を含むブログ (1件) を見る

**************************************************************************************

一番難しいところはtwitterログインwebサイト連結でした。

cakephp直感できに操作できていいです。

素人のわたしでも操作できましたので。

cakephpを使用しています

webからニュース収集してきます

ツイート数でランキングしてますネット話題を見つけられます

twitterアカウントログインできます

ニュースに対するコメントもできるし、

自分記事投稿できます。(画像も可)

デザインはよくわからないので、

ホームページビルダーを使用しています

今のホームページビルダーは昔と違って高機能ですね。

テンプレートも何種類もあって今はすごいです。

アマゾンawsを使用してます

サーバーWebサーバーデータベースサーバmysql)

に分かれています

今更cakephpを使っている人は少ないかもしれませんが、

データベースとの接続などは楽でした。

twitterアカウントあるといつでも参加できますので、

ニュースを通してコミュニケーション目的としたサイトを目指します。

2015-08-06

とうとう人類幸せに導くpgbouncer1.6が公開された

みんな大好きPostgreSQL

複数DBマルチテナントシステムを構築するなら忘れてはいけないコネクションプーリング

大量コネクションを扱うなら都度forkやpre-fork式ではちょっと辛い、イベントベースが好ましい。

もうお分かりですね。pgbouncer1.6の話題です。

PostgreSQL界隈では有名なコネクションプーリング実装が2つあります。 pgpool-II と pgbouncer。

ざっくり言うと高機能の pgpool-II に対して、軽量・大規模向けの pgbouncer という棲み分けがあると言えるでしょう。

pgpool-II は最近日本トレジャーデータ社の Prestogres ( https://github.com/treasure-data/prestogres ) という痺れるようなプロジェクトベースとして採用されていることで名前を聞いたことのある方もいるのではないでしょうか。

pgbouncer は少し古いですが LastFM( http://www.lastfm.jp/user/Russ/journal/2008/02/21/zd_postgres_connection_pools:_pgpool_vs._pgbouncer )の事例が有名でしょう。Instagram も使ってますネ。

pgbouncerは現行のバージョンは1.5系で、最新は1.5.5です。1.6系は8月1日リリースされ、複数DBマルチテナントシステムに向けた大規模な機能強化が行われています

この1.6系では複数DBマルチテナントシステム開発者にとって嬉しい機能がたくさん搭載される予定です。本番運用に投入する前に一足お先にリリースノートを読んで夢を感じましょう。

バージョン2013年ぐらいからリリースノートは準備されているのにさっぱりリリースされなくて関係者をやきもきさせていました。(想像

記事では以下のリリースノートをもとにザックリ読み解いたものです。

http://pgbouncer.github.io/2015/08/pgbouncer-1-6/

主要新機能

接続ユーザーパスワードハッシュDBからロードできるようになった

プーリングモードの設定をデータベース毎、ユーザー毎に設定できるようになった

データベース毎、ユーザー毎にコネクションの最大接続数を制御できるようになった

・新しいコネクション確立を避けるための DISABLE/ENABLE コマンドが追加された

・新しい推奨のDNSバックエンド c-ares が追加された

設定ファイルに include ディレクティブを追加した

ではリリースノートをそれぞれ細かく見ていきましょう。

接続ユーザーパスワードハッシュDBからロードできるようになった

新しく以下のパラメータが追加された

1.5までのpgbouncerは userlist.txt というテキストに静的に接続ユーザを書かなければいけませんでした。

これは動的に接続ユーザーが増えるようなマルチテナントシステムを構築するのに不向きという事です。

この機能はその悩みを解消するための機能と言えるでしょう。

プールモードデータベース毎、ユーザー毎に設定することができる。

タイトルがすべてを物語ってます。柔軟にできますねぇ('∀`)

ただ、私にはちょっと有用な利用シーンが思いつかなかったです。

たとえば分析ユーザーではトランザクションなんて使わないので statement モードにしてコネクションの消費を抑えたりできるという事でしょうか。

データベース毎、ユーザー毎にコネクションの上限を設定できる。

max_db_connections と max_user_connections という設定が追加されます

テナント毎にユーザーを分けているような複数DBマルチテナントシステムにとって必須といえる機能です。

特定ユーザーリクエストコネクションをすべて占有されてしまい、他のユーザーサービスできないという事態を避けることができるようになるでしょう。

新しいコネクション生成を防止する DISABLE/ENABLE コマンドを追加。

特定データベースの新しいコネクション確立を抑止・再開することができます

新しいDNSバックエンドとして c-ares を導入した。

c-ares名前解決の非同期化を行うためのライブラリです。c-ares名前解決をブロックしないし、いろいろな方式名前解決に対応している唯一のプロダクトとのこと。

名前解決をブロッキングしてしまうようではpgbouncerのような大規模向けシステムでは役に立たないのだというpgbouncerの強い意志を感じる。

というか、ドキュメントを見る限り pgbouncer は名前解決にかなりこだわりを持っているらしい。それだけそこが重要ということでしょう

個人的には困ったことがないのでそこまでだわる理由はよくわからない。)。

SHOW CLIENTS, SHOW SERVERS で remote_pid を出すようになった。

UNIXドメインソケットで接続しているクライアントと、TCPまたはUNIXドメインソケットで接続しているサーバーでremote_pidを取得できるようになりました。

tcp serverの場合、pid はキャンセルキーから取得できる。(?ドキュメントから意味が読み取れず)

キャンセルキーとは何でしょうね。ちょっとリリースノートから判断できませんでした。

pg_cancel_backend とかに使えるPIDだよという事なのでしょうか。

ネガティブDNSキャッシュのために dns_nxdomain_ttl を分割した。

DBの数なんてもはや何台あるかわからない。ホスト名の解決はもはやDNSで行っておるよという皆様にとって必須機能

…なのでしょうがちょっとこの機能必要となるようなシステムとはどんなものなのか、私も未経験なのでよくわからないです。

クライアントIPアドレスポートapplicationネームに追加する

この設定は application_name_add_host=on にすることで有効となる。

今や接続アプリケーション名がWebだとかBatchだとか区別できるだけで問題が解決するような時代ではない。

どのホスト(ポート)レベル区別しないと。という事なんだろう。

「おお、Webサーバーから死ぬほど重いクエリが飛んでる、今すぐ調べないと!で、どのWebサーバーよ?100台あるんだぜ」みたいなときに助かりますね。

設定ファイルに外部ファイル読み込みディレクティブを追加することができるようになります

設定ファイル大規模化してくると、切り出して整理したいという要望はどうしてもでてくるもの

データベース毎、ユーザー毎に設定できる項目が増えてきたので必要になったという事でしょう。

以上。

以降はバグフィックスとかクリーンアップだとかで自分はあまり興味がないので各自読むように。

本番運用突撃するPostgreSQL界の猛者の報告待ってます

2015-05-08

AWS入門書籍おしえてください

中小企業勤務のど素人です。平均年齢40歳くらいの昭和からある非IT企業です。

前任者が退職して、他に出来る人がいないという理由で、自社HPインフラ担当することになりました

個人でレンタルサーバーVPS契約してLAMP環境構築して、ごく単純なWEBサービスを公開していますが、

ググってでてきた手順を見よう見まねでやったので、基本を理解できてないので、怖いです。

UNIXの基本コマンドもおぼつかない感じです。

WEBサーバーDBサーバーファイルサーバーも一緒の1つのサーバーです。

DBレプリケーションもしていません。

会社サービスは、今までは会社サーバーを置いてやってました。

リプレースが大変なのと、AWSWEBサービス業界標準のようなので、迷うことなAWSにしていきたいです。

一人でやるのは怖いので、無理ですといったのですが、押しつけられました。

2015-05-07

AWS入門書籍おしえてください

中小企業勤務のど素人です。平均年齢40歳くらいの昭和からある非IT企業です。

前任者が退職して、他に出来る人がいないという理由で、自社HPインフラ担当することになりました

個人でレンタルサーバーVPS契約してLAMP環境構築して、ごく単純なWEBサービスを公開していますが、

ググってでてきた手順を見よう見まねでやったので、基本を理解できてないので、怖いです。

UNIXの基本コマンドもおぼつかない感じです。

WEBサーバーDBサーバーファイルサーバーも一緒の1つのサーバーです。

DBレプリケーションもしていません。


会社サービスは、今までは会社サーバーを置いてやってました。

リプレースが大変なのと、AWSWEBサービス業界標準のようなので、迷うことなAWSにしていきたいです。

一人でやるのは怖いので、無理ですといったのですが、押しつけられました。

2014-09-09

クラブ好きな新米エンジニアが1週間でWebサービス作ってみた

こんにちは

文系出身だけど前々からWebサービスつくってみたくて勉強がてら一人でWebサービス作ってみました。

作りたいって思うなら実際に作ってみるのが一番いいってじっちゃんがいってた。

やってみて感じたこととか先輩エンジニアの人たちに教えて欲しいこととかを書いていきたいと思います

じっちゃん、僕にもできたよ!

作ったWebサービス

EDM JACK

http://edmjack.com/

簡単に説明するとクラブミュージック淡々と紹介していくサイト

作ってみた人のあれこれ

・26歳

フリーター(ほぼニート)→知人の会社で営業職→今年の4月Web業界転職

クラブミュージックが大好き。だけど人混みは嫌い。

・営業職だったころにあい時間ドットインストールとかでHTML/CSS勉強をしてた。

大学中退してからフリーターになって、その頃から自分Webサービスとかつくって運営してる人ってかっこいいな〜とか思ってた。

Facebook映画とか見たときは完全に感化されっぱなしだった。

でもいつか作れたらいいな〜って思ってただけでなにもしてなかった。

最近いろいろ環境が変わって少し休みをもらえたので奮起して勉強がてら作ってみることにしたのです。

なにを作るか

漠然と「Webサービス作りたい」って思ってたからまずどんなWebサービスを作るか考えました。

やっぱり好きなことじゃないと続かないと思ったので

自分が好きなクラブミュージックをまとめるサイトを作ることにしました。

ジャンルDJ KAO●Iとかミーハーな感じの曲じゃなくてEDMってやつ。

EDMといえば今月日本でもUltra Music Festivalが開催されるね!やったね!Hardwellに会えるね!

どうやって作るか

まずはプログラミングとやらを勉強することにしました。ドットインストールは偉大です。お世話になりました。

ドットインストール

http://dotinstall.com/

ここでHTML/CSSPHP勉強しました。でもPHPゼロからコードを書いて作ろうとすると重大な問題があることに気が付きました。

時間がかかりすぎる。

今回はとりあえず自分でなにかWebサービスを作ってみるということを経験たかったのでWordPressを使うことにしました。

サーバー環境の構築を勉強した

でもさすがにレンタルサーバーを借りてWordPress入れましたっていうんじゃ先輩エンジニアの人たちに怒られちゃうと思ったので、

WordPressを入れるサーバー環境構築は自分で頑張ってやってみることにしました。

なのでWeb業界ではアイドル存在AWSっていうやつで頑張ることにしました。

ここでもドットインストールにお世話になりました。ほんとなんでもチュートリアルがあってすごい。

最初WebサーバーApacheを入れていたんですが、なんか重たい感じがしていろいろ調べているとNginxナウい感じだったので

Nginxインスタンスを立て直すことしました。環境的にはこんな感じ。

AWS EC2 (t2.micro)

Nginx 1.4.7

php-fpm 5.3.28

MySQL 5.6.13

ドットインストールUnixコマンドとかを勉強したとはいってもNginxの設定周りをいじるのは結構大変でした。

でもNginx使うからにはチューニングしてから使わないとApache先生に怒られちゃうので、

この記事を見ながら頑張ってチューニングしました。

さくらVPS512で、Yahoo!砲食らっても WordPress平常運転させるための設定

http://dogmap.jp/2013/04/16/sakura-vps-performance-tuning/

チューニングテストをしたらTransfer Rate17[Kbytes/sec] くらいから15000 [Kbytes/sec]くらいになった。

Nginxやばい。はやすぎ。なにこのスピード

WordPressを入れていろいろ設定をしてみる

無事にサーバーが立てられたのでWordPressを突っ込んでテーマかいろいろいじりました。

使用したテーマPRONTO

http://www.wpexplorer.com/pronto-wordpress-theme/

基本的にはテーマをそのまま使ってるだけです。

シェアボタンをつけたりFacebookのLikeBoxを入れたりでちょっとテーマいじった程度。

あ、カテゴリタグにpickupってつけたら自動投稿が目立つようにした。これは自分テーマファイルいじって書いた。

入れたプラグインはこんな感じ。Jetpackモバイルテーマのみを有効化してる。

アイキャッチ画像が多いからPhotonも有効化してもいいかなって悩んでる。

Akismet

All In One SEO Pack

Batch Category Import

Favicon Rotator

Font Awesome Icons

Google Analytics

Jetpack by WordPress.com

Mobile Theme Featured images for Jetpack

Newpost Catch

NextScripts: Social Networks Auto-Poster

Nginx Cache Controller

Remote Images Grabber

Video Thumbnails

Wordpress Popular Posts

WordPress Related Posts

WP Multibyte Patch

サイト運用を開始

WordPressなのであとはたらたらと僕がオススメする曲を更新していくだけ。

EC2t2.microだけど、Nginxのおかげなのか特に問題はなし。

今はYoutubeSoundcloudURLをそのまま投稿に入れて、アーティスト名とかDJ名でカテゴリ分けしてる。

せっかくだからドメイン代とかAWS代だけでも回収できればいいなってことでAdSenseも入れてみたw

やってみて思ったこと。

実際に作り始めてから1週間程度でここまでつくることが出来ました。

AWSNginx環境構築→4日

WordPress環境構築→3日

ドットインストールがなかったらここまで速くつくれなかった。ありがとうございます田口さん。

元々非エンジニアでもやる気になればそれっぽいのが作れて感動しました。

でもなんかOGPの設定がうまくできず、Facebookとかでシェアしようとするとたまに全然関係ない画像が表示されてしまう。

テーマファイルに直接書いてもプラグインOGP設定してもよくわからなかった。

Facebookデバッガーつかってキャッシュクリアしてもできたりできなかったり。

これはNginxキャッシュが影響してるんかな。

今後やりたいこと。

将来的にはSoundcloudとMixcloudを足して2で割ったサイトになればいいな。

キュレーター制度とかも入れてみて、僕だけじゃなくていろんなEDM好きやDJおすすめの曲を投稿できるようにしていきたい。

WordPressで構築しちゃったけどできるだけプラグインに頼らずに自分PHP書いて実装できるように頑張らなきゃ。

本とかは一冊も読まずにここまで作れたけどPHPエンジニアならこれは読んどけよ若造ってのがあったら教えてください。

EDMは素晴らしいよ!クラブ好きな人もそうでない人もきっと好きになる曲が沢山あるから聞いてみてね!

EDM JACK

http://edmjack.com

2014-05-11

http://anond.hatelabo.jp/20140510231402

JavaまたはPHPでの開発経験があること」

まさかとは思うけど、「Java or PHP」の経験が1年か2年あるだけでこれだけの数の企業受けたの?(3年以上もしくは「Java and PHP」ならIT業界が人不足の現在こんなに書類で落とされるのは有り得ない)

それでこんなに落ちてるならIT業界で職を探すの辞めた方が良いよ。そっちの方が幸せだと思う。

コロプラとかUnityC#UnityScript)を使ってることで超有名な会社じゃん。

WebサーバーにはPHP使ってるっぽいけどZend Frameworkからやってない人多そう。

増田も「実績が無い」と言われるってことはPHPZend Frameworkをやったことが無い1人だったんだろ?

そんな人が面接に来たら俺が面接官でも「何が出来ると思ってウチを受けたんですか????」って素の好奇心で聞いちゃうわ。

社会人野球ボールボーイプロ球団プロテスト受けに行くようなもんだぞ。

2014-04-11

AV(エロのほう)なウェブサービスを作ったとき発見したこと。

 

世の中にはマニアがあふれている。

これに尽きます

「僕は世の中を知っている大人だ。」なんて

漠然と思っていたりもしましたけれど

こんな身近に知らない世界はありました。

中でも僕を驚かせたのは

嘔吐好き」と「キワモノ好き」の2つです。(´・_・`)

嘔吐好きとか、

ゲロはいてる女性見て、なんで興奮するんですか!? Σ(゚∀゚ノ)ノ

そのゲロかぶって、なんで興奮するんですか!? Σ(゚∀゚ノ)ノ

キワモノ好きなんて、

裸の女性ミミズ昆虫にまみれて、それを食ってんですよ! Σ(゚∀゚ノ)ノ

さすがに気持ち悪くなりました。。。

キワモノAVはサービスデータから除外しました。。)

今、日本人口が約1億4千万人として

男は半分の7千万人でしょ?

エロ情熱がある若者から中年層だとその半分強で4千万人として

その4千万のうち

嘔吐好きな変態さん。

キワモノ好きな変態さん。

ってどのくらいいるんでしょうね。。。

作る人がいて見る人がいるんだから、まあソコソコな人数いるんだろうなあ。。


作ったサービスについて


【らぶらぶAVさーち】

http://love2av.com/

AVの検索サイトです。

ちなみに、ワンクリック検索できるピックアップ検索は私の趣味です。w

最近は、つぼみ紗倉まなほしのあすか臼井あいみがオススメです。www ぐう可愛い!(゜∀゜


内部的な仕組み


Nginx + php-fpm + MySQL で動いています

言語PHP + Smarty + Javascript(jQuery) で書いています

あと、スクレイピング用に .NETwindowsアプリ作りました

え、スクレイピングPHP で作ればいいのにって?

スクレイピングってサイトデザインが変わったら

すぐ誤動作してしまうのですよね。。。

PHPだと対応し直しが面倒なので .NET に逃げました。。。。ヽ(°▽、°)ノエヘヘヘヘ

データ更新


データは、アフィリをやっている

動画サイトのduga さんと、MGS動画さんから持ってきています

アフィリじゃないリンクを置いておきますね。

DUGA

http://duga.jp/

MGS動画

http://www.mgstage.com/

データを常に最新にしておくために


という作業をcronで6時間ごとに実行しています

おすすめの使い方


個人的には

待ち合わせで暇なとき

スマホちょっとエロ画像見よう」 ( ・ω・)

てな感じで使っています

 

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