「セレクタ」を含む日記 RSS

はてなキーワード: セレクタとは

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環境変数)

2017-06-19

CSSって欠陥言語、何なん?

いまだに親を指定するセレクタが無いのな。.parent()的な奴。どこの馬の骨もかわからん奴らなんだな。

2016-03-28

http://www.slideshare.net/KenyaKodaira/2016-59970832

なんかたくさんブクマされてますが、読む必要ないと思います

p.4
  • HTML Template Engin`d`ってなんですかね。誤字脱字チェックはしましょうね。
  • gulpのgは小文字なのでよろしくです。
p.5
p.6
p.8
  • EditorCodingってなに
p.9
  • コードブロックが見づらいっす。黒バックにblueて誰が読めるのだろうか。若者か。
  • npm install後に急にgulpって書いてあるけど、それは何をするタスクなのです?
    • まぁ、この後gulpタスクについて出てるんでしょう……
      • 出てこなかった
p.10
p.15
p.16
p.18

コード品質が維持される場合に限り、難読化、最小化、コンパイルするのは自由です

  • HTMLの話ですよね? コード品質が維持されない難読化や最小化やコンパイルってなんだろう。
  • あとに出てくるけど、CSSには容量削減を異常に求めすぎてるわりには、HTMLには無関心な感じがするんですよね。
p.19

a、span、imgなどの最小の位置にでは開業は適宜対応

  • その適宜が人によってブレるから、それを潰すのが「フォーマット」だと思うんすよね。
  • いっそ「新しい要素が出現したら必ず改行する」くらい言ってほしい。
  • あと日本語が変なんで、それも。
p.20
p.21、22
p.2324
  • .editorconfigにどう書けばいいかをだな……。
p.25
  • HTMLルールだとしたら、そういう開発の都合のコメントを残して納品するのはお行儀が良くないっすね。
  • Jadeを使う前提のようだし、Jadeコメントでの話をしてるなら別にいいんすけどね。
  • でもさっきからJadeのサンプルが全く出てこないからオッサン不安になってきちゃったっす。
p.26

正しいHTML

  • HTMLの正しさとは?
  • 参考リンクから察するに、invalidでなければいいと思ってるなんてことはないっすよね。
p.27、28
p.29、30
p.31
p.32
p.36、37
p.40

CSS教科書

p.42、43
p.44、45
p.49、50
p.57、58
  • HEXの短縮は規定しなくていいと思います
  • ビルドをかける前に勝手に置換されるような仕組みを入れるべきところかと。
  • gulpでできますし、ググれば出てきます
  • ちなみに、#f00よりもredの方が1バイト少ないんですよ。
  • 容量削減は人が思いつきでやるには不十分なのです。
  • そんなのはビルド時に機械がやればいい。
  • 容量の削減を理由に人の行為制限をかけるのが愚かな行為だと気付いてくれたらうれしいっす。
p.61、62
p.63、64
p.71
p.72、73
  • FLOCSSとMindBEMding共存させるなら、書くべきことが足りなすぎませんか。
p.73

block__element__elementは使用しない

p.78、79
p.80、81
p.87

GoogleChromeなら変換時に右側にマーク

p.96
p.98

svgにすることで1つの画像でまかなえる場合svg使用する

p.102
  • ここまで4回くらい読みなおしたんですけが、どうにも上澄みだけの理解しかしてないように感じるんですよね。
  • Jadeについては何かルールは設けないのでしょうか。
  • JavaScriptについては……?
  • そのほかにも、ライティング自体が下手すぎて、これを人に見せるのはどうなのっていう感じがしちゃいました。
  • 誤字脱字くらいはちゃんとチェックしたほうがいいでしょうね。
  • 結論:いろいろ惜しいけど、よくなる余地はたくさんあるので、がんばってください。

2015-06-30

CSSセレクタハイフンかアンダーバーか、キャメルケースか

簡単にハイフンを含むワードが選択できないという問題

私が使っているエディタでは、ハイフンを含むワードダブルクリックで選択できません。

http://uupaa.hatenablog.com/entry/2012/01/22/013509

CSS-mode でハイフン区切り文字列を一気に選択できないのは、エディタ問題だと思うなー。ボクはそうだと思うなー。

uupaaさんはCSS書かないのかなー。CSSプロパティを選択してコピーしたりとかしないのかなー。

ボクはダブルクリックすら面倒なので、そのモードでの識別子となる文字列を選択する操作キーボードでできるようにしてるんだなー。

2014-04-24

システムテストの方が効率良いって言ってるけど

http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html

を読んでみたんだけど、これも結構理想論な気がすんだよな。

デザイナが全員HTML構造気にしてくれる訳でもないし、

歴史のあるサイトだったりすると読んでも意味の分からないユーティリティ的なセレクタがよく出てくる。

こういうのが現実

page.has_selector?(:xpath, '//table.tokushu1/tr.header/td[3]/div/div//span.click_left')

しかもA/Bテストが始まったりしてテスト書く負荷が高くなりメンテできなくなる。

ただスマートフォンアプリはデザイナがレイアウトいじる事が少ないので、

システムテストだけでもかなりテスト品質は保てる。

2014-04-16

いかに道具が良かろうとも

ルートIDセレクタを使われてひ孫ぐらいまで親子関係DOMセレクタはさみつつ持っているようなCSSを作られて、豚に真珠、猫に小判、馬鹿にSassという言葉を思いついた次第。

どれだけ良い道具があっても、知恵がないなら無駄だなって思った。

2013-08-15

コピペブログがムカつくので、はてブを快適にするユーザーCSS作った

はてブは便利だ。かれこれ使い続けて8年目になる。

しかし、はてブを使っているとしばしばムカつくことがある。

それは2chコピペしただけのデマまとめサイトホットエントリとして頻繁に表示されてしまうことだ。

リンククリックしなければいいのだが、最近タイトルだけで不快になるレベルのものも多い。

例えばここのところ、冷凍庫に入ったバイトをアップして炎上させる遊びがリア充の間で流行しているが、

ハム速」というサイトはこういったものを毎回取り上げて、嫌でも目に付くタイトル他人個人情報晒している。

なにがホットだよ。見たくねえよ死ね

しかし、はてな運営はいつまで経っても非表示サイト機能を用意してくれないし、

こういったクソサイトを未だにブクマしてホッテントリ入りに貢献するはてなユーザーはあとを絶たない。

これらを弾くユーザースクリプトユーザーCSSを書いてくれた人もいない。

仕方ないので、自分まとめブログなどを除外するユーザーCSSを書いてみたら、恐ろしく快適になった。

とても便利なのでぜひ同志のはてブァーたちに使って欲しいのだが、

どこに公開していいか分からないので、とりあえず増田に投下してみることにした。

対応範囲

CSS ソース

/* はてなブックマークから見たくないサイトを抹消&シンプルな表示で快適にするユーザースタイルシート */
/* V1.16 2016/5/1 22:25更新 政経ワロスまとめニュース♪を追加 */
/* V1.15 2016/3/16 11:25更新 診断メーカーを追加 */
/* V1.14 2015/6/2 17:51更新 やらおん! の独自ドメインを追加 */
/* V1.13 2014/2/13 14:42更新 大艦巨砲主義! を追加 */
/* V1.12 2014/2/13 10:27更新 保守速報JP ドメインを追加 */
/* V1.11 2014/2/10 17:34更新 キムチ速報ネトウヨ速報ネトウヨにゅーす、はぅわ!、あじあにゅーす2ちゃんねる独自ドメインを追加 */
/* V1.10 2014/1/28 19:32更新 使えるニュース-2ch を追加、はてブ仕様変更により新着エントリサムネイルが表示されなくなっていたのを修正 */
/* V1.09 2013/12/09 17:46更新 売国速報(^ω^)を追加 */
/* V1.08 2013/12/08 13:02更新 ば韓国いい加減にしろ速報を追加 */
/* V1.07 2013/8/19 02:11更新 2ちゃん的韓国ニュースを追加 */
/* V1.06 2013/8/16 12:36更新 あじあにゅーす2ちゃんねる笑韓ブログを追加 */
/* V1.05 2013/8/16 09:57更新 検索結果のエントリ詳細をサイト関係なく消した。そこが気に入らなければ「, div.entryinfo」という文字列を削除 */
/* V1.04 2013/8/16 09:46更新 政経chを追加 */
/* V1.03 2013/8/15 20:34更新 秒刊SUNDAYを追加 */
/* V1.02 2013/8/15 16:55更新 U-1速報URL間違いを修正 */
/* V1.01 2013/8/15 15:49更新 やらおん!を入れ忘れるという致命的なミスを犯したので修正 */

/* はてブ全体に適用 */
@-moz-document url-prefix("http://b.hatena.ne.jp/")
{
/* ブロックしたいサイトリンク非表示 */
A[HREF*="j-cast.com"],
A[HREF*="j-cast.com"] ~ cite,
A[HREF*="getnews.jp"],
A[HREF*="getnews.jp"] ~ cite,
A[HREF*="yukawanet.com"],
A[HREF*="yukawanet.com"] ~ cite,
A[HREF*="0taku.livedoor.biz"],
A[HREF*="0taku.livedoor.biz"] ~ cite,
A[HREF*="hamusoku.com"],
A[HREF*="hamusoku.com"] ~ cite,
A[HREF*="alfalfa.com"],
A[HREF*="alfalfa.com"] ~ cite,
A[HREF*="hoshusokuhou.com"],
A[HREF*="hoshusokuhou.com"] ~ cite,
A[HREF*="hosyusokuhou.jp"],
A[HREF*="hosyusokuhou.jp"] ~ cite,
A[HREF*="wara2ch.com"],
A[HREF*="wara2ch.com"] ~ cite,
A[HREF*="fxya.blog129.fc2.com"],
A[HREF*="fxya.blog129.fc2.com"] ~ cite,
A[HREF*="asianews2ch.livedoor.biz"],
A[HREF*="asianews2ch.livedoor.biz"] ~ cite,
A[HREF*="jin115.com"],
A[HREF*="jin115.com"] ~ cite,
A[HREF*="esuteru.com"],
A[HREF*="esuteru.com"] ~ cite,
A[HREF*="yaraon.blog109.fc2.com"],
A[HREF*="yaraon.blog109.fc2.com"] ~ cite,
A[HREF*="yaraon-blog.com"],
A[HREF*="yaraon-blog.com"] ~ cite,
A[HREF*="kanasoku.info"],
A[HREF*="kanasoku.info"] ~ cite,
A[HREF*="u1sokuhou.ldblog.jp"],
A[HREF*="u1sokuhou.ldblog.jp"] ~ cite,
A[HREF*="newskorea"],
A[HREF*="newskorea"] ~ cite,
A[HREF*="news-us.jp"],
A[HREF*="news-us.jp"] ~ cite,
A[HREF*="tokuteishimasuta.com"],
A[HREF*="tokuteishimasuta.com"] ~ cite,
A[HREF*="dqnplus"],
A[HREF*="dqnplus"] ~ cite,
A[HREF*="bakankokunews.blog.fc2.com"],
A[HREF*="bakankokunews.blog.fc2.com"] ~ cite,
A[HREF*="treasonnews.doorblog.jp"],
A[HREF*="treasonnews.doorblog.jp"] ~ cite,
A[HREF*="now2chblog.blog55.fc2.com"],
A[HREF*="now2chblog.blog55.fc2.com"] ~ cite,
A[HREF*="kimsoku.com"],
A[HREF*="kimsoku.com"] ~ cite,
A[HREF*="uyosoku.com"],
A[HREF*="uyosoku.com"] ~ cite,
A[HREF*="netouyonews.net"],
A[HREF*="netouyonews.net"] ~ cite,
A[HREF*="asia-news.jp"],
A[HREF*="asia-news.jp"] ~ cite,
A[HREF*="rakukan"],
A[HREF*="rakukan"] ~ cite,
A[HREF*="nico3q3q"],
A[HREF*="nico3q3q"] ~ cite,
A[HREF*="military38"],
A[HREF*="military38"] ~ cite,
A[HREF*="shindanmaker.com"],
A[HREF*="shindanmaker.com"] ~ cite,
A[HREF*="seikeidouga.blog.jp"],
A[HREF*="seikeidouga.blog.jp"] ~ cite,
/* ブロックしたいサイトファビコン非表示 */
IMG[SRC*="j-cast.com"],
IMG[SRC*="getnews.jp"],
IMG[SRC*="yukawanet.com"],
IMG[SRC*="0taku.livedoor.biz"],
IMG[SRC*="hamusoku.com"],
IMG[SRC*="alfalfa.com"],
IMG[SRC*="hoshusokuhou.com"],
IMG[SRC*="hosyusokuhou.jp"],
IMG[SRC*="wara2ch.com"],
IMG[SRC*="fxya.blog129.fc2.com"],
IMG[SRC*="asianews2ch.livedoor.biz"],
IMG[SRC*="jin115.com"],
IMG[SRC*="esuteru.com"],
IMG[SRC*="yaraon.blog109.fc2.com"],
IMG[SRC*="yaraon-blog.com"],
IMG[SRC*="kanasoku.info"],
IMG[SRC*="u1sokuhou.ldblog.jp"],
IMG[SRC*="newskorea"],
IMG[SRC*="news-us.jp"],
IMG[SRC*="tokuteishimasuta.com"],
IMG[SRC*="dqnplus"],
IMG[SRC*="bakankokunews.blog.fc2.com"],
IMG[SRC*="treasonnews.doorblog.jp"],
IMG[SRC*="now2chblog.blog55.fc2.com"],
IMG[SRC*="kimsoku.com"],
IMG[SRC*="uyosoku.com"],
IMG[SRC*="netouyonews.net"],
IMG[SRC*="asia-news.jp"],
IMG[SRC*="rakukan"],
IMG[SRC*="nico3q3q"],
IMG[SRC*="military38"],
IMG[SRC*="shindanmaker.com"],
IMG[SRC*="seikeidouga.blog.jp"],
/* トップページエントリ詳細、メタ情報タグ一覧、検索結果のエントリ詳細を非表示 */
li.description blockquote, ul.entry-meta li.tag, div.entryinfo {
  display: none !important;
}
}

/* ------------------------------------------- */

/* 新ユーザーページ (インタレスト、マイホットエントリー他) に適用 */
@-moz-document
url-prefix("http://b.hatena.ne.jp/(はてなユーザー名)/interest"),
url-prefix("http://b.hatena.ne.jp/(はてなユーザー名)/favorite"),
url("http://b.hatena.ne.jp/(はてなユーザー名)/")
{
/* エントリ詳細を非表示 */
.entry-summary, .detail {
  display: none !important;
}
/* エントリ詳細をなくした分、サムネイルカラムを小さく */
.entry-feature-image a.capture img {
  max-width: 60px !important;
}
.main-entry-list .entry-block.entry-feature-image {
  min-height: 32px !important;
  padding-left: 80px !important;
}
.entry-feature-image .entry-image-block, .entry-feature-image a.capture {
  width: 60px !important;
  max-height: 50px !important;
}
/* お気に入りユーザーエントリ一覧を非表示に */
.main-entry-list .entry-comment .entry-comment-fold {
  display: none !important;
}
}

使い方

ChromeOperaSafari での使い方

設定内容はいずれも同じで、こんな感じにする。

セクションひとつ
/* はてブ全体に適用 */

/* ブロックしたいサイトリンク非表示 */
A[HREF*="j-cast.com"],
A[HREF*="j-cast.com"] ~ cite,
A[HREF*="getnews.jp"],
A[HREF*="getnews.jp"] ~ cite,
A[HREF*="yukawanet.com"],
A[HREF*="yukawanet.com"] ~ cite,
A[HREF*="0taku.livedoor.biz"],
A[HREF*="0taku.livedoor.biz"] ~ cite,
A[HREF*="hamusoku.com"],
A[HREF*="hamusoku.com"] ~ cite,
A[HREF*="alfalfa.com"],
A[HREF*="alfalfa.com"] ~ cite,
A[HREF*="hoshusokuhou.com"],
A[HREF*="hoshusokuhou.com"] ~ cite,
A[HREF*="hosyusokuhou.jp"],
A[HREF*="hosyusokuhou.jp"] ~ cite,
A[HREF*="wara2ch.com"],
A[HREF*="wara2ch.com"] ~ cite,
A[HREF*="fxya.blog129.fc2.com"],
A[HREF*="fxya.blog129.fc2.com"] ~ cite,
A[HREF*="asianews2ch.livedoor.biz"],
A[HREF*="asianews2ch.livedoor.biz"] ~ cite,
A[HREF*="jin115.com"],
A[HREF*="jin115.com"] ~ cite,
A[HREF*="esuteru.com"],
A[HREF*="esuteru.com"] ~ cite,
A[HREF*="yaraon.blog109.fc2.com"],
A[HREF*="yaraon.blog109.fc2.com"] ~ cite,
A[HREF*="yaraon-blog.com"],
A[HREF*="yaraon-blog.com"] ~ cite,
A[HREF*="kanasoku.info"],
A[HREF*="kanasoku.info"] ~ cite,
A[HREF*="u1sokuhou.ldblog.jp"],
A[HREF*="u1sokuhou.ldblog.jp"] ~ cite,
A[HREF*="newskorea"],
A[HREF*="newskorea"] ~ cite,
A[HREF*="news-us.jp"],
A[HREF*="news-us.jp"] ~ cite,
A[HREF*="tokuteishimasuta.com"],
A[HREF*="tokuteishimasuta.com"] ~ cite,
A[HREF*="dqnplus"],
A[HREF*="dqnplus"] ~ cite,
A[HREF*="bakankokunews.blog.fc2.com"],
A[HREF*="bakankokunews.blog.fc2.com"] ~ cite,
A[HREF*="treasonnews.doorblog.jp"],
A[HREF*="treasonnews.doorblog.jp"] ~ cite,
A[HREF*="now2chblog.blog55.fc2.com"],
A[HREF*="now2chblog.blog55.fc2.com"] ~ cite,
A[HREF*="kimsoku.com"],
A[HREF*="kimsoku.com"] ~ cite,
A[HREF*="uyosoku.com"],
A[HREF*="uyosoku.com"] ~ cite,
A[HREF*="netouyonews.net"],
A[HREF*="netouyonews.net"] ~ cite,
A[HREF*="asia-news.jp"],
A[HREF*="asia-news.jp"] ~ cite,
A[HREF*="rakukan"],
A[HREF*="rakukan"] ~ cite,
A[HREF*="nico3q3q"],
A[HREF*="nico3q3q"] ~ cite,
A[HREF*="military38"],
A[HREF*="military38"] ~ cite,
A[HREF*="shindanmaker.com"],
A[HREF*="shindanmaker.com"] ~ cite,
/* ブロックしたいサイトファビコン非表示 */
IMG[SRC*="j-cast.com"],
IMG[SRC*="getnews.jp"],
IMG[SRC*="yukawanet.com"],
IMG[SRC*="0taku.livedoor.biz"],
IMG[SRC*="hamusoku.com"],
IMG[SRC*="alfalfa.com"],
IMG[SRC*="hoshusokuhou.com"],
IMG[SRC*="hosyusokuhou.jp"],
IMG[SRC*="wara2ch.com"],
IMG[SRC*="fxya.blog129.fc2.com"],
IMG[SRC*="asianews2ch.livedoor.biz"],
IMG[SRC*="jin115.com"],
IMG[SRC*="esuteru.com"],
IMG[SRC*="yaraon.blog109.fc2.com"],
IMG[SRC*="yaraon-blog.com"],
IMG[SRC*="kanasoku.info"],
IMG[SRC*="u1sokuhou.ldblog.jp"],
IMG[SRC*="newskorea"],
IMG[SRC*="news-us.jp"],
IMG[SRC*="tokuteishimasuta.com"],
IMG[SRC*="dqnplus"],
IMG[SRC*="bakankokunews.blog.fc2.com"],
IMG[SRC*="treasonnews.doorblog.jp"],
IMG[SRC*="now2chblog.blog55.fc2.com"],
IMG[SRC*="kimsoku.com"],
IMG[SRC*="uyosoku.com"],
IMG[SRC*="netouyonews.net"],
IMG[SRC*="asia-news.jp"],
IMG[SRC*="rakukan"],
IMG[SRC*="nico3q3q"],
IMG[SRC*="military38"],
IMG[SRC*="shindanmaker.com"],
/* トップページエントリ詳細、メタ情報タグ一覧、検索結果のエントリ詳細を非表示 */
li.description blockquote, ul.entry-meta li.tag, div.entryinfo {
  display: none !important;
}
セクションふたつめ
/* 新ユーザーページ内 (インタレスト、マイホットエントリー他) に適用 */

/* エントリ詳細を非表示 */
.entry-summary, .detail {
  display: none !important;
}
/* エントリ詳細をなくした分、サムネイルカラムを小さく */
.entry-feature-image a.capture img {
  max-width: 60px !important;
}
.main-entry-list .entry-block.entry-feature-image {
  min-height: 32px !important;
  padding-left: 80px !important;
}
.entry-feature-image .entry-image-block, .entry-feature-image a.capture {
  width: 60px !important;
  max-height: 50px !important;
}
/* お気に入りユーザーエントリ一覧を非表示に */
.main-entry-list .entry-comment .entry-comment-fold {
  display: none !important;
}

使い方が分からなければブコメトラックバックで言ってくれたら補足するかも

字数オーバーしていたことに気づいたので http://anond.hatelabo.jp/20140421135649 に続きます

2013-04-03

fut573さんの削除・訂正のスタイル

http://d.hatena.ne.jp/fut573/20130325/1364192590

"Tumblr"のスペルミス(というか変換ミス)"tumbler"の削除・訂正をされている(del要素)が、そのまんまtumblerTumblrと表示される。

style要素を見ると、全称セレクタでの「Reset」中に、text-decoration:none;

大方のブラウザのdelのデフォルトスタイルであるだろう値(line-through)が上書きされてしまい、その後del要素に製作スタイルが指定されていない。

ログインしてコメントとかがなんとなく引け目を感じたのでここで。

2011-08-04

独学のプログラムエロ動画検索作ってみた

【お知らせ】2011/09/07

新しいエロWEBサービス作りました

http://d.hatena.ne.jp/uniqueweb/20110906/1315285545

プログラムは全く得意じゃないけれど最近よく見かけるようになったエロ動画検索自分でも作ってみたくて頑張ってみました。

近年、インターネットの普及によりエロ動画が自宅で簡単に見れるという素晴らしい時代になりました。

自分が若い頃はインターネットなんてものはなくエロビデオが主流でドキドキしながらレンタルビデオ屋に行き、可愛い女の子レジにいない隙を見計らってお兄さんにパッケージを伏せて空箱を渡しビデオを借りたものでした。

お兄さんにビデオ空箱を渡そうとした時に可愛い子がレジに戻ってきて焦って渡すのをやめてものすごく変な動きをしながらエロビコーナーに引き返していくなんてことも多々ありましたw

僕のお気に入りといえば「白石ひとみ」や「あいだもも」といった女優でよく借りてました。エロビを借りるということがものすごく恥ずかしい時代?年頃?でカモフラージュ普通ビデオと一緒に借りるということもしていました。それはそれは大変な思いでオナニーしてたんです

しかも、ビデオデッキ自体が貴重な時代でリビングに一台しかないのが当たり前でした。

深夜家族が寝静まってからヘッドフォンビデオを抱えリビングに行き暗がりの中でヘッドフォンテレビ差し込んでビデオ再生ボタンを期待に胸をふくらませながら押したものです。いいシーンを何回も見るためにビデオを巻き戻すんですが、ビデオを巻き戻すガチャガチャンという機械音で家族が起きてこないか?とかそれはそれはドキドキしながら見てました。一仕事終えたあとヘッドフォンを外したらジャックが外れていて大音量で喘ぎ声が響き渡っていたなんてこともありました。誰も起きてこなかったのは優しさなんでしょうか?w

さて、大分前置きが長くなりましたがエロというものものすごい技術発展させるものだと思いますエロのおかげで日本ビデオは普及しエロのおかげで日本インターネットものすごく普及したと言っていいと思います自分エロを通して技術の発展に貢献し自分自身のスキルアップになれば。という高い志を持ってこのサイト制作しました。決して自らのオナニーライフの充実と性癖を充たすため作ったわけではありません・・・

※2011.08.07 利用中のサーバーに障害が発生しているようで現在サーバー接続できない状態となっています・・・

※2011.08.07 23:53 復帰した模様です

サイト名:ヌキネーター

サイト名の由来は抜きネタからきています。抜きネーター、ヌキネーターという感じです

エロサイト制作工程日記にしてみたんで良かったら読んで下さい。そしてこのサイトを使って夜いろいろと励んでくれたら嬉しいです

では制作日記を書いていきたいと思います

サーバー選び

まず前提条件としてお金ほとんどかけたくない。アダルトサイトであるということから

サーバー選びからはいりました。

月の予算は5000円以内で考えていたのでけっこう探すのが大変でした。

日本アダルトサイトを許可している所はかなり限られていてさらにやりたいことができるのは

専用サーバーVPSしかないのでそうなると専用サーバー予算オーバーなので

VPSで探すことになり検索しまくってはじめに見つけたVPSはKAGOYAのVPSだったのですがβ版で募集を締め切っていて泣く泣く諦めました。

KAGOYAはかなり評判がいいみたいなので使ってみたかった。

次に見つけたのが○○○VPS海外サーバー日本語サポートがあり転送量の制限なしディスク容量100G

月1300円程度で借りれるということで初期設定費用に5000円程度かかりましたが借りてみました。

結果、ここは最悪でした。

  • 通信が頻繁に切れる
  • 激重
  • 借りて一ヶ月もしないうちにサービス継続が困難になりそうなのでIPが変わるとかメールがくる
  • まりに通信環境が悪すぎるとメールすると環境調査に協力してくれとメールがくる
  • 時間をかけて沢山の項目を調べて返信するも全く返答がない。

まりの酷さに1ヶ月で解約。

よく調べてみたら評判がものすごく悪い某VPS再販らしいです

お金時間をドブに捨てました・・・

もう失敗したくないと思い今度は比較的有名な海外サーバーLINODE

日本語サポートはないけれど抜群のサポートです

iptablesの設定でどうしてもうまくいかなくて拙い英語メールしてみたら

10分しないうちに返信がきました!

メールに書かれているとおりにコマンド入力したらあっさり解決。

素晴らしい!はじめからLINODEにすればよかった。

担当ブライアンはなぜか分からないけどとてもフレンドリーで親切に感じましたw

サーバー設定

LINODEは複数のディストリビューションから好きなものを選択できるので

とりあえず、64bit版を選択。

サーバー設定はほんとに面倒ですね。

一番面倒だけど重要だということで

SSH

Tripwire

chkrootkit

Clam AntiVirus

iptables

Apache

SSL

その他各種監視ツールの導入をしました。

ほんとに面倒でした。

データベース

はじめはmysqlストレージエンジンgroongaを使おうと思ったのです

初めに借りた最悪なVPSOSが32bit版だったのでgroongaがのソースが見つからずなぜかと思っていたら

どこかで見つけた記事で32bit版ではgroongaの性能を発揮しきれないということで32bit版の提供をやめてしまったらしいと書いてたので

じゃあ、sennaにするかということで最悪VPSsennaインストール

その後LINODEに変更したのでOSに64bit版を選択し念願のgroongaをインストール

しかし、調べてみると

などが理由で、結局sennaに戻して2度手間に・・・

プログラムもそれに合わせてその都度書き換えたので2度手間どころか3度手間4度手間でした・・・

senna導入はrpmでさくっといけるので簡単です

依存関係で少しはまりました。

まず

# rpm -qa | grep -i mysql

mysqlインストールされてたら削除

perl-DBIが必要なのでインストール

# yum install perl-DBI

そして下記の順番でインストール

rpm -ivh mecab-0.98-tritonn.1.0.12a.x86_64.rpm

rpm -ivh mecab-ipadic-2.7.0.20070801-tritonn.1.0.12a.x86_64.rpm

rpm -ivh senna-1.1.4-tritonn.1.0.12a.x86_64.rpm

rpm -ivh MySQL-shared-5.0.87-tritonn.1.0.12a.x86_64.rpm

rpm -ivh MySQL-client-5.0.87-tritonn.1.0.12a.x86_64.rpm

rpm -ivh MySQL-server-5.0.87-tritonn.1.0.12a.x86_64.rpm

rpm -ivh MySQL-devel-5.0.87-tritonn.1.0.12a.x86_64.rpm

my.cnfの設定をして終了

で肝心の全文検索ですデータ件数が5万件程度で少ないせいなのか、あいまい検索と比べてそれほど速さを実感できなかったです・・・

でもきっとすごく速くなったはず!

ちなみに「麻美ゆま おっぱい」で検索した場合、0.01 secで結果が返ってきました。

動画データ作成

さて、動画データ作成ですがいくつかのエロサイト制作記事でもあるようにスクレイピングということをします。

スクレイピングとはWEBサイトから特定の情報だけを取得することでネット上にあるサイトクロールして必要なデータだけを拾ってデータを作るといった感じでしょうか。

スクレイピングプログラム自体は以前にTidy関数を使って為替データ10分おきに取得するような物を作ったことがあったのでそれほど時間はかからいかなと思ったのですがけっこう時間かかりました。

スクレイピングにはTidyhtmlSQL、それにPHP Simple HTML DOM Parserを使いました。

下記のサイトを参考にしました。

phpによるスクレイピング処理入門

SQL みたいな文法で HTML を抽出する PHP のライブラリ

htmlSQLよりアツい!?jQueryみたいにセレクタでHTMLをparse(解析)する「PHP Simple HTML DOM Parser」

つの中で抜群に使えるのはPHP Simple HTML DOM Parserだったんです

ループ処理させるとメモリがすごいことになって今回のようなスクレイピングに向いてないみたいで

結局、htmlSQLTidyの両方を使ってスクレイピングしました。

両方ともPHP Simple HTML DOM Parserに比べるとうまくデータの取得ができないことが多く残念な感じなんですが他に選択肢がないので・・・

使える順に並べると

PHP Simple HTML DOM Parser

htmlSQL

Tidy

といった感じかもしれません。

おおまかにデータを取得して正規表現で特定データを抜き出しました。

広告との連携

広告にはDMMアフィリエイトを利用しています

http://affiliate.dmm.com/link.html

利用可能な物はパッケージ画像、サンプル画像(縮小)と書かれていたのでそれに従い画像を利用。

注記に※ユーザーレビュー引用いただけません。とだけ書かれているのでそれ以外は引用ありと判断して説明文とタイトルなどを利用

女優データジャンルデータDVDデータ、を紐付けたデータベース作成検索ワードに応じて検索結果に関連する商品を表示させるようにしました。

現状、売り上げ0で意味があるのか分かりませんけどw

負荷対策とか転送量とかDOS攻撃対策とか

エロサイトということで多少はチューニングとか設定とかしないとまずいかもと思い色々調べて設定しました。

やったこと

KeepAlive On

MaxKeepAliveRequests 60

KeepAliveTimeout 3

<IfModule prefork.c>
StartServers       7
MinSpareServers    5
MaxSpareServers   10
ServerLimit       30
MaxClients        30
MaxRequestsPerChild  4000
</IfModule>

様子見ということで2日間で設定してみました。

query_cache_limit=1M

query_cache_min_res_unit=4k

query_cache_size=16M

query_cache_type=1

とりあえずこんなところを設定してみましたが、爆発的なアクセスがあるわけでもないので有効なのか今のところ分かりません(-_-;)

Apache Benchでテストはしてみましたけど問題はない感じですが実際にチューニングができているか分かりません。

サイトデザイン

プログラマーとして有名なゆうすけさんのサイトgoogleを参考にしました。

シンプルで使いやすいようにしようと思いこのデザインしました。

3カラム中央可変となっています

クロスブラウザIE7、firefox3、chromeで行いました。

可変ものって作ったことなかったんですがけっこう面倒なんですね。

サイト機能

ブックマーク機能とメニューの折りたたみ機能検索結果の表示方法切替を作りました

まず、ブックマーク機能ですログインなしで気に入った動画ブックマークできるようにしました。

ブックマークに追加した動画ブックマークページで確認できるようにしました。

cookie機能を利用したらいけると思い色々調べてjquery.cookie.jsを利用。

保存したクッキー情報を呼び出してphpに渡して処理し指定要素にブックマーク一覧をloadメソッドで表示させるという感じです

$(function(){
$("#youso").load("xxx.php");
});

メニューの折りたたみ機能は人気AV女優AV女優別、人気タグなどをそのまま表示させるとずらっと長くなって邪魔だったのでつけました。

これには同じくjquery.cookie.jsを利用しました。

参考サイトhttp://blog.caraldo.net/2009/03/newjqqookiemenu.php

検索結果の表示方法切替にはZoomer Galleryを利用しました。

参考URLhttp://phpjavascriptroom.com/?t=ajax&p=jquery_plugin_zoom#a_zoomergallery

検索結果ページで表示される

[ここの画像]

××× の検索結果

44件中 1~10件目を表示

ここの画像の部分をクリックするとgoogleイメージ検索みたいに一覧でイメージ表示できるようにしてみました。

動画表示ページ

基本的に動画の埋め込みを許可しているサイトのみプレイヤー表示をしそれ以外は画像を表示し動画データリンクするようにしました。

埋め込み部分はあらかじめそれぞれのサイト対応したプレーヤー部分のコード記述しVIDEOIDの部分に置き換えるような形にしました。

XVIDEOSを例にすると

XVIDEOS場合かならず動画urlhttp://www.xvideos.com/videoXXXXXX/のようになりますのでXXXXXXの部分を

VIDEOID部分に置き換えるようにプログラムを組みました、

埋め込み部のソース

>||<object width="510" height="400" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" ><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="allowScriptAccess" value="always" /><param name="movie" value="http://static.xvideos.com/swf/flv_player_site_v4.swf" /><param name="allowFullScreen" value="true" /><param name="flashvars" value="id_video=VIDEOID" /><embed src="http://static.xvideos.com/swf/flv_player_site_v4.swf" allowscriptaccess="always" width="510" height="400" menu="false" quality="high" bgcolor="#000000" allowfullscreen="true" flashvars="id_video=VIDEOID" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>
||<

その他の動画サイトURLの一部分のデータを使っているので同様の処理をしました。

まとめ

実際の作業は2、3週間ですが色々調べる時間が多くて制作に2ヶ月くらいかかりました。

自分エロ動画検索を作ってみて有名プログラマーさん達がいかに優秀なのか思い知らされました。

皆さん思いついて数日で作ってしまうのでびっくりです

全くWEBの知識がない人で4、5ヶ月ですごいの作っちゃう人とかもいるみたいですし世の中広いな~と思います

しかし、エロサイト作りで勉強になりますね~

大分、色んな知識を得ることができました。

これからプラグラム勉強しようと思う人はぜひエロサイトから入ってみて下さい。

きっと楽しいですよ!

そんなこんなで?頑張って作ってみたエロ動画検索、良かったら使ってみて下さい。

これで少しは技術の発展に役立てたでしょうか?w

アダルト動画検索ヌキネーター

P.S エロサイトを作っていてはじめは楽しくて興奮しながら作ってたのです最後の方はエロい物を見ても全く反応しなくなりましたw

  不能ではないんですけど・・・現在も性欲が著しく減退しております・・・

  そしてスーパーpre記法がうまういかないのはなぜ?はてな匿名ダイアリー投稿全然からない・・・

  そしてそしてプログラマーさんとかデザイナーさんとかエロい人とかお気軽にお声をおかけ下さい。

【お知らせ】2011/09/07

新しいエロWEBサービス作りました

http://d.hatena.ne.jp/uniqueweb/20110906/1315285545

2009-01-19

ごめんなさい、もしやと思ったら思いっきり display:none; 入りセレクタが利いた。

2008-06-27

http://anond.hatelabo.jp/20080627085010

ご紹介いいただいたgreasemonkeyインストールすると、特定IDの「このエントリーを含む日記」を非表示にすることができるのですか?

舌足らずでした。

現状のままでは出来ません。しかし、たぶん若干の変更で対応できます。

このグリモンには、非表示にする条件を設定するためのインターフェースがありません。設定は直接スクリプトファイルを書き換えて行います。いうなれば雛形みたいなものです。

ですので、若干でも、javascript正規表現xpathが理解できる人が対象です。

ちなみに、具体的に書き換えるべき変数は、itemxpathと、filters配列です。

というわけで、上記は敷居が高いのですが、rikuoさんのまとめ記事の方で、幾つかその他の方法が上げられています。いずれも、コメントに対するものですが、含む日記に応用できるものがあります。詳しくは記事を読んでいただくとして、


以下、書き換え用自分メモ

2008-03-02

http://anond.hatelabo.jp/20080302041829

p,img,iframe,a,font,b,input,select,.text,.navbar,.style1,.style4,.style26,.topnav,.navtitle {
  display:none!important;
}

とりあえずセレクタの使い方が間違ってるのはTypoかね、最後のカンマが要らない。

やるならちゃんと書きなさい。

 
アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん