「URI」を含む日記 RSS

はてなキーワード: URIとは

2019-01-23

togetterで飛ばされる先

togetterを見ていると、フィッシングサイトに度々飛ばされるんだけど、さっきは楽天(本物)に飛ばされた。

URIセッションIDっぽい物が付いてたかセッションハイジャック狙い?できるの?

謎だ。

2018-12-10

anond:20181210172334

Let's Encryptの仕組みの説明を読んだけど、ちょっとすぐに理解できなかった。とても複雑なことをやってるんですね?

https://letsencrypt.jp/technology/

 

この一連の作業自動でやってくれるエージェントソフトは便利だね。

Webサーバー証明方法チャレンジ)は、「公知の URI に、認証用のファイルを設置する」にしてみよう。

2018-11-10

増田プログラマー養成講座 その20 SQLデータの削除

前回は、SQLデータ更新をやりました。

今回は、SQLデータの削除をやりましょう。

 

メッセージの削除

基本は、同じなので前回やった更新処理をちょっと変えれば削除もすぐできます

 

投稿されたメッセージを削除する機能を、Webページに付けてみよう。

 

削除ページにジャンプするリンク

前々回作ったメッセージの一覧の中に、削除ページにジャンプするリンクも入れておいた。

<td><a href="welcome/delete/<?php echo $item['id']; ?>">削除</a></td>

という1行が削除ページにジャンプするためのリンクになる。

ブラウザーHTMLソースを見ると、ここが以下のようなHTMLに書き換わってる。

<td><a href="welcome/delete/2">削除</a></td>

これは「メッセージID番号が2のメッセージ」を削除対象にして、削除ページにジャンプする。

 

Controllerの改造

ユーザーが「http://localhost/waf/welcome/delete/2」というURLで、削除ページにアクセスしたら、コントローラーで「2」を受け取って使いたい。

CodeIgniterでは、URL文字列を解析して、使うことができる。

以下のようにコントローラーを改造してみよう。

 

// 削除画面

public function delete($id = '')

{

 echo "ID=".$id;

 $this->load->view('chat_delete');

}

 

Controllerの改造の解説

delete()メソッド引数で、URL中の「2」の部分を受け取れる。

これは前回の編集ページ(更新の処理)と同じ。

「$id = $this->uri->segment(3);」でも受け取れる。

 

Viewの改造

削除ページでは、確認する質問を入れてみよう。

ユーザーに「本当に削除しますか?」みたいな注意喚起をしておきたい。

 

ファイルの内容を以下のように編集する。

<?php defined('BASEPATH') or exit('No direct script access allowed');?>

<!DOCTYPE html>

<html>

 <head>

  <meta charset="utf-8">

  <title>増田チャット</title>

  <base href="<?php echo base_url(); ?>">

 </head>

 <body>

  <h1>増田チャット</h1>

  <h2>削除</h2>

  <p>以下のメッセージを削除しますか?</p>

  <form action="welcome/delete" method="post" accept-charset="utf-8">

   <?php if (isset($talk)): ?>

   <p style="background-color:lightpink"><?php echo $talk['message']; ?></p>

   <input type="hidden" name="id" value="<?php echo $talk['id']; ?>">

   <input type="hidden" name="action" value="delete">

   <?php else: ?>

   <p>※該当するメッセージがありません。(または削除済です。)</p>

   <?php endif;?>

   <button>削除する</button>

  </form>

  <p><a href="welcome/index">戻る</a></p>

 </body>

</html>

 

Viewの改造の解説

<p style="background-color:lightpink"><?php echo $talk['message']; ?></p>

削除するメッセージを色付きで強調して、ユーザー確認してもらう。

 

<input type="hidden" name="id" value="<?php echo $talk['id']; ?>">

コントローラー削除対象メッセージID番号を送るため、inputタグの「type="hidden"」でメッセージID番号を仕込んでおく。

 

Controllerの改造

ファイルの内容を以下のように編集する。

// 削除画面

public function delete($id = '')

{

 $id = $id ? $id : $this->input->post('id');

 $action = $this->input->post('action');

 if ($action == 'delete') {

  $this->chat_model->delete_message($id);

 }

 $data['talk'] = $this->chat_model->read_message_by_id($id);

 $this->load->view('chat_delete', $data);

}

 

Controllerの改造の解説

やってることは、前回のデータ更新場合とほぼ同じ。

$this->chat_model->delete_message($id);

で、モデルに用意したデータ削除用メソッドを呼び出しているだけ。

次は、モデルdelete_message()メソッドを用意しよう。

 

Modelの改造

ファイルの内容を以下のように編集する。

// Delete

public function delete_message($id = 0)

{

 $sql = "DELETE FROM talk WHERE id = ?";

 $param = array($id);

 $this->db->query($sql, $param);

 return $this->db->affected_rows();

}

 

Modelの改造の解説

SQLの「DELETE」を使えば、指定したレコード(1件分のデータ)を削除できる。

DELETE FROM talk WHERE id = ?」で、talkテーブルmessageid指定して削除している。

 

データを削除した後の挙動は、メッセージID番号がなくなるので、削除ページに表示できるメッセージデータがなくなる。

(例)id=2のデータを削除したら、SQLで「SELECT * FROM talk WHERE id = 2」を取得しても、空のデータデータがない状態

その場合は、

<p>※該当するメッセージがありません。(または削除済です。)</p>

と表示させてる。

 

まとめ

以上で、SQLの「DELETE」を使ったデータの削除ができた。

長々と説明したが、今回の大事な点は、SQLの「DELETE」の使い方だ。

 

以上で、MVCフレームワークを使ったOOPの使い方とSQLの使い方を見てきた。

SQLSQLだけで説明したほうが良かったね!MVCフレームワーク説明SQL説明が混在すると要点が分かりづらくなる?)

ちょっと失敗だったかも。m(__)m)

 

次回は、データベースの設計について学んでみよう。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214133 増田プログラマー養成講座 その11 データベースを使ってみよう

anond:20181026145516 増田プログラマー養成講座 その12 データベースの参考書

anond:20181028152656 増田プログラマー養成講座 その13 SQL文法

anond:20181031014212 増田プログラマー養成講座 その14 Webアプリの試作品作成

anond:20181101225335 増田プログラマー養成講座 その15 Webアプリの完成見本

anond:20181101230220 増田プログラマー養成講座 その16 Webアプリの完成見本(続き)

anond:20181104161900 増田プログラマー養成講座 その17 Webアプリの骨組み

anond:20181104233013 増田プログラマー養成講座 その18 SQLデータの追加と取得

anond:20181110120715 増田プログラマー養成講座 その19 SQLデータ更新

anond:20181110182445 増田プログラマー養成講座 その20 SQLデータの削除 ←★今ここ★

anond:20181111205255 増田プログラマー養成講座 その21 データベース設計 (1)要件定義

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

増田プログラマー養成講座 その19 SQLデータ更新

前回は、Webアプリの骨組み(スケルトン)に、SQLデータの追加と取得をやりました。

今回は、SQLデータ更新をやりましょう。

 

メッセージ更新

 

編集ページにジャンプするリンク

前回作ったメッセージ一覧に、[編集]のリンクも入れておいた。

<td><a href="welcome/update/<?php echo $item['id']; ?>">編集</a></td>

という1行の部分。

[編集]をクリックすると、編集用ページにジャンプする。

ブラウザーHTMLソースを見ると、以下のようなHTMLになってるはず。

<td><a href="welcome/update/2">編集</a></td>

これは「メッセージID番号が2」を対象にして、編集ページにジャンプすることを意味する。

 

Controllerの改造

編集用ページのコントローラーを作ろう。

「http://localhost/waf/welcome/update/2」というURL編集ページにアクセスしたら、メッセージID番号の「2」を受け取れるようにしたい。

URL文字列を処理して「2」を取り出せるようにしよう。

 

// 更新画面

public function update($id = '')

{

 echo "ID=".$id;

 $this->load->view('chat_update');

}

 

CodeIgniterでは、URLから文字列を取り出す方法がいくつか用意されている。

  1. 「update($id = '')」のようにメソッド引数「$id」を用意すれば、「2」の部分を取り出せる。
  2. 引数を使う以外の方法も用意されていて、「$id = $this->uri->segment(3);」のように書けば、「2」の部分を取り出せる。

// 更新画面

public function update()

{

 $id = $this->uri->segment(3);

 echo "<hr> ID=".$id;

 $this->load->view('chat_update');

}

 

Controllerの改造の解説

CodeIgniterで、URL文字列から特定部分の文字列を取り出す方法を見ておこう。

 

例えば、「http://localhost/waf/welcome/update/aaa/bbb/ccc」というURLアクセスしたときCodeIgniterではURL中の「aaa」「bbb」「ccc」という部分は、以下のようにして取り出せる。

$seg1 = $this->uri->segment(1); // → 1番目のURL文字列:「welcome」=コントローラークラス

$seg2 = $this->uri->segment(2); // → 2番目のURL文字列:「update」=クラスの中のメソッド

$seg3 = $this->uri->segment(3); // → 3番目のURL文字列:「aaa」の部分

$seg4 = $this->uri->segment(4); // → 4番目のURL文字列:「bbb」の部分

$seg5 = $this->uri->segment(5); // → 5番目のURL文字列:「ccc」の部分

URLを「/」で区切って、base_url(http://localhost/waf/)の次から順番に、1番目のURL文字列、2番目のURL文字列、3番目のURL文字列、…とsegment()メソッドで順番を指定すれば取得できる。

 

Modelの改造

データベースでメッセージID指定して、メッセージを取り出す機能を用意しよう。

 

ファイルに以下のメソッドを追加する。

// Read by Id

public function read_message_by_id($id = 0)

{

 $sql = "SELECT * FROM talk WHERE id = ?";

 $param = array($id);

 $query = $this->db->query($sql, $param);

 return $query->row_array();

}

 

Modelの改造の解説

SQLの「WHERE」句で、絞り込む条件を指定できる。

 

SELECT * FROM talk WHERE id = ?

「WHERE id = 2」とすれば、メッセージID番号が2のメッセージデータが「talkテーブルから取り出せる。

もし該当するデータがなければ、返されるデータは空になる。(データが返ってこない。)

 

CodeIgniterの「row_array()」は、1件分のデータ配列の形にして返すメソッドだ。

 

Viewの改造

ファイルの内容を以下のように編集する。

<?php defined('BASEPATH') or exit('No direct script access allowed');?>

<!DOCTYPE html>

<html>

 <head>

  <meta charset="utf-8">

  <title>増田チャット</title>

  <base href="<?php echo base_url(); ?>">

 </head>

 <body>

  <h1>増田チャット</h1>

  <h2>編集</h2>

  <p>メッセージを変更して「更新する」ボタンを押してください。</p>

  <form action="welcome/update" method="post" accept-charset="utf-8">

   <label>メッセージ</label>

   <?php if (isset($talk)): ?>

   <input type="text" name="message" value="<?php echo $talk['message']; ?>">

   <input type="hidden" name="id" value="<?php echo $talk['id']; ?>">

   <input type="hidden" name="action" value="update">

   <?php else: ?>

   <p>※該当するメッセージがありません。</p>

   <?php endif;?>

   <button>更新する</button>

  </form>

  <p><a href="welcome/index">戻る</a></p>

 </body>

</html>

 

Viewの改造の解説

データベースから取り出した1件分のメッセージを表示する部分を追加した。

<input type="text" name="message" value="<?php echo $talk['message']; ?>">

の「<?php echo $talk['message']; ?>」という部分だ。

これで変更したいメッセージの本文を表示できる。

 

あと、編集したメッセージWebサーバーに送信できるように、Formタグ送信ボタン(「更新する」の部分)も追加した。

このときメッセージID番号も送信できるように、

<input type="hidden" name="id" value="<?php echo $talk['id']; ?>">

という1行も仕込んである

 

Controllerの改造

ファイルの内容を以下のように編集する。

// 更新画面

public function update($id = '')

{

 $id = $id ? $id : $this->input->post('id'); // id -> segment or post

 $action = $this->input->post('action');

 if ($action == 'update') {

  $message = $this->input->post('message');

  $this->chat_model->update_message($id, $message);

 }

 $data['talk'] = $this->chat_model->read_message_by_id($id);

 $this->load->view('chat_update', $data);

}

 

Controllerの改造の解説

メッセージID番号を指定して、データベースから取り出し、Viewに渡すデータを用意している。

$data['talk'] = $this->chat_model->read_message_by_id($id);

 

ユーザーメッセージ編集をしてWebサーバーに送信したら、データ更新する指示を出す部分も追加した。

$action = $this->input->post('action');

if ($action == 'update') {

 $message = $this->input->post('message');

 $this->chat_model->update_message($id, $message);

}

モデルにupdate_message()メソッドを用意して、$idと$messageを渡せば、該当データ更新するようにしたい。

次は、モデルでupdate_message()メソッドを用意しよう。

 

Modelの改造

ファイルの内容を以下のように編集する。

// Update

public function update_message($id = 0, $message = '')

{

 $sql = "UPDATE talk SET message = ? WHERE id = ?";

 $param = array($message, $id);

 $this->db->query($sql, $param);

 return $this->db->affected_rows();

}

 

Modelの改造の解説

SQLの「UPDATE」を使えば、指定したレコード(1件分のデータ)を更新できる。

「UPDATE talk SET message = ? WHERE id = ?」で、talkテーブルmessageid指定して更新している。

 

CodeIgniterの「affected_rows()」メソッドは、更新した行数を返す。=成功なら1行、失敗なら0行となる。

 

補足

コントローラーの「$id = $id ? $id : $this->input->post('id');」という行は、$idの受け取り方が2パターンあるので、それに対応している。

編集ページの表示で、1回目の表示と、2回目以降の表示で、$idの受け渡し方が変わっている。

  • 1回目:URLに埋め込まれID番号をupdate($id = '')の引数$idで受け取っている。($this->uri->segment(3)で受け取るのと同じ)
  • 2回目以降:Formタグで送られてきた$idを$this->input->post('id')で受け取っている。

URLに埋め込む方法上記の1回目のような方法)は、ユーザー勝手に値をいじれるので、基本的には使わない方が良い。

 

まとめ

以上で、SQLの「UPDATE」を使った、データ更新ができた。

長々と説明したが、今回の大事な点は、SQLの「UPDATE」の使い方だ。

CodeIgniterの使い方や、Webサイトの作り方(FormタグなどのHTML知識)は、オマケ程度に見ておいて欲しい。

 

次回は、データを削除するSQLDELETE」の使い方を見てみよう。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214133 増田プログラマー養成講座 その11 データベースを使ってみよう

anond:20181026145516 増田プログラマー養成講座 その12 データベースの参考書

anond:20181028152656 増田プログラマー養成講座 その13 SQL文法

anond:20181031014212 増田プログラマー養成講座 その14 Webアプリの試作品作成

anond:20181101225335 増田プログラマー養成講座 その15 Webアプリの完成見本

anond:20181101230220 増田プログラマー養成講座 その16 Webアプリの完成見本(続き)

anond:20181104161900 増田プログラマー養成講座 その17 Webアプリの骨組み

anond:20181104233013 増田プログラマー養成講座 その18 SQLデータの追加と取得

anond:20181110120715 増田プログラマー養成講座 その19 SQLデータ更新 ←★今ここ★

anond:20181110182445 増田プログラマー養成講座 その20 SQLデータの削除

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

2018-10-09

Google検索改悪されてる

クリックできる範囲が広がってURI選択しづらくなった。

もしかして選択させずに素直にクリックさせるためにやってるのか。

2018-08-15

話は逸れるけれど、増田パープルスターを付けた人は1人しかいないのだな

anond:20180815140102

そもそもパープルスターなんてあったのか?

green: 398

blue: 16

red: 201

purple: 1

yellow: "47657"

title: "はてな匿名ダイアリー"

uri: "http://anond.hatelabo.jp/"

star_count: 48273

http://s.hatena.ne.jp/blog.json?uri=http://anond.hatelabo.jp/ より

http://developer.hatena.ne.jp/ja/documents/star/apis/count 参考にした

はてなスターの付く人気ブコメを集めて傾向を調べなければ始まらんだろと思ったが、ブコメスターを一発で集める手段提供されていないのかも。ブラウザ挙動を調べてどういうふうにスター情報を取ってきているか調べるところから始めなければいけなそう。

はてなスターに興味をひかれていなくてよかった。ハマっている人は大変そうだ。

2018-08-09

xyzzy 使いに 50 の質問

01. ハンドルネームは?

  増田

02. ご職業、年齢はいくつですか?

  なんでも屋さん、アラサー

03. xyzzyについて何かwebサイトを持っていますか?

  持っていません

04. 現在使用中の xyzzyバージョンは何ですか?

 0.2.2.253

05. xyzzy 使用暦はどれくらいですか?

  15年くらい

06. xyzzy を使うようになったきっかけは何ですか?

  昔のことすぎて忘れましたが、学校UNIX 演習で Emacs を使っていたので、Windows でも使おうと思っていて見つけたんだと思います

07. xyzzy 以外に使っているテキストエディタはありますか?

  Atom, McEditor

08. xyzzy を使う前に Emacs 系のテキストエディタを使ったことはありますか?

  はい

09. xyzzy を主に何に利用していますか?

  プログラムを書いたり設定ファイルをいじったり、テキストに関することならだいたい

10. xyzzy が関連付けされているファイルタイプは何ですか?

  txt, md, log, ini, bat, html, xml, css, less, scss, sass, styl, js, coffee, pl, php, py, rb, java, sqlかにもあるかも

11. xyzzy他人に勧めたことはありますか? また、結果はどうでしたか?

  使い始めた当時同級生が何人か使っていました

12. xyzzyフリーじゃなかったとしたらいくら位の値段になると思いますか?

  今なら3000円くらいなら買う

13. xyzzy を何と呼んでいますか?

  じじー

14. xyzzy の好きな点・嫌いな点はどこですか?

  好きな点:動作をほぼ自在カスタマイズできる点

  嫌いな点:動作カスタマイズするとき不自由なところがある点

15. パソコンを立ち上げている時間の内、xyzzy をどのくらい使っていますか?

  業務ときは3割くらい?

16. キーバインドWindows風ですか? Emacs風ですか? オリジナルですか?

  Emacs

17. .xyzzyに書く派ですか? .siteinitに書く派ですか?

  必要に応じてそれぞれに

18. 拡張Lispバイトコンパイルしますか?

  してます

19. セレクションリージョン、どちらを多く使いますか?

  リージョン

20. xyzzy を使っていて挫折したことはありますか?

  はじめのころ五目並べになかなか勝てなくて挫折しました

21. xyzzy の使い方をどうやって学びましたか?

  実際にさわりながら。LispGoogle 先生さまさま

22. xyzzy を使うにあたって一番苦労したことは何ですか?

  xyzzy 自体Lisp APIマニュアル化されていないところ

23. xyzzy を使って目からウロコだった機能は何ですか?

  Buffer Menu

24. 今の xyzzy に望むことはありますか? またそれは何ですか?

  矩形機能に影響が出そうだけどプロポーショナルフォントへの対応と、絵文字など最近 Unicode に追加された文字への対応

25. Lisp はある程度読み書きできますか?

  xyzzy自分の使いやすいようにできる程度には

26. Lisp のほかに読み書きできるプログラム言語はありますか?

  JavaScript, ES 2016, Coffee Script, Action Script 3, C, C++のごく一部, Objective-C, Rust, Swift, Perl, PHP, Python, Ruby, bash, xyzzy lisp

27. 自分で作った 拡張Lisp を公開していますか?

  GitHubGist にあるので探してください

28. 拡張Lisp で導入しているものは何ですか? (多い方は代表的ものをお答えください)

  clickable-uri, jscript-mode, markdown-mode など

29. これは外せない! という 拡張Lisp はありますか? またそれは何ですか?

  いろいろやるので今ある拡張機能がないと無理

30. NetInstaller を利用していますか?

  はい

31. 拡張DLL を導入していますか? またそれは何ですか?

  popup-dododo のための Cairo とか?

32. ドキュメント(info,reference等) は使っていますか? また、それは何ですか?

  使っていません。自分で改造してキーワードを全部 Web検索するようにしています

33. ネット関係拡張Lisp(www-mode,kamail等)を使っていますか?

  xyttr

34. アウトライン系のLispは使っていますか? またそれは何ですか?

  使っていません

35. メモ系(changelog-memo,howm等)Lispは使っていますか? またそれは何ですか?

  使っていません

36. xyzzy五目並べはやったことがありますか? また、結果はどうでしたか?

  今なら結構勝てます

37. キーボードマクロは使いますか?

  たまに。テキストの整形処理なら正規表現ゴリゴリやるほうが多いです

38. 辞書機能は使いますか?

  使っていません。国語英和・和英、英英辞典iPhoneアプリを使います

39. xyzzy のファイラは使いますか?

  毎日仕事に欠かせません。便利にカスタマイズしすぎてむしろファイラだけのために新しく xyzzy 自体を起動することもあります

40. フレームは使いますか?

  あまり使いません。新しく(Windows における)ウィンドウ

41. セッションは使いますか?

  使っていません

42. メーリングリストには参加していますか? また、メール送信したことはありますか?

  ありません

43. 2chxyzzy 関連スレッド書き込みしたことはありますか? また、その頻度はどのらいですか?

  大昔にどうしてもわからないことがあって書き込んだ記憶があります

44. xyzzywikiに書き込みしたことはありますか? また、その頻度はどのくらいですか?

  拡張機能実装に関してちょろっと書き込んだ記憶があります

45. xyzzyメニューは表示していますか?

  たまにほしくなるので表示しています

46. xyzzyツールバーは表示していますか?

  隠しています

47. xyzzyファンクションバーは表示していますか?

  表示していません

48. xyzzyバッファバーは表示していますか?

  表示していません

49. 色、フォントなどは変更していますか? またそれは何ですか?

  色は暗い背景色ハイライトカラーはできるだけ色相を離したパステルカラーです。

  フォントConsolas に源新ゴシック Regular を組み合わせています

50. 最後に、一言お願いします。

  まだまだ xyzzy は不滅です

2018-03-17

anond:20180316232605

Excelを持っているならはてブJSONデータをそのまま取り込めるそうだからそのデータを使ってブクマが付いた時間グラフが描けそう。

例えばこんな感じでJSONデータが取れる。 http://b.hatena.ne.jp/entry/jsonlite/https://anond.hatelabo.jp/20180315232737

Excel持ってないならスクリプトCSVにしてしまえばいい。

rubyスクリプトだとこんな感じ。(Mechanize無し版に差し替え。なぜMechanizeを使っていたかと言うとはてブUser-Agentが空だと値を返してくれないから。ちょっと長くなるが自前でUAを渡すようにした。)

#!/usr/bin/ruby

require 'uri'

require 'net/http'

require 'json'

require 'csv'

site = ARGV[0]

json_uri = URI.parse("http://b.hatena.ne.jp/entry/jsonlite/%s" % [site])

response = Net::HTTP.start(json_uri.host, json_uri.port) do |http|

http.get(json_uri.path, "User-Agent" =&gt; "Mozilla/5.0")

end

json_data = JSON.parse(response.body)

json_data['bookmarks'].each do |bookmark|

puts [bookmark['user'], bookmark['timestamp'], bookmark['comment'], bookmark['tags'].to_s].to_csv

end

引数に取得したいページのURLを入れる。hatebuapi-csv.rbという名前で保存したとしたらこんな感じで実行。

% hatebuapi-csv.rb https://anond.hatelabo.jp/20180315######## > 結果.csv

このケースでは朝の7時から爆発的にブクマが付き始める様子が分かる。

https://imgur.com/66FlJIB

2017-12-22

Google Chromeアドレスバー周りがバグみたいな挙動する

再現方法

  1. https://www.google.co.jp/」をコピーする(クリップボードに格納する)
  2. Google Chromeで「https://www.yahoo.co.jp/」のページを開く
  3. ショートカット「Ctrl+L」を押し、素早く「Ctrl+V」でGoogleアドレスを貼り付ける
  4. Enterキーを押す

どうなるか?

Googleが開かれる」と思うじゃん?違うんだわ

  • Yahoo!JAPANがそのまま開かれる(再読み込みされる)

こうなってしま

どうもCtrl+Lを押すと、0.5秒くらい空けて今現在のページのURI選択状態になるっぽい

選択状態になる前に素早く別のURIペーストしても、無視されて今現在URI選択状態になってしま

マジでこれどうにかして欲しい

2017-11-05

Google news RSSURIが新しくなるらしい

12月1日に旧URI廃止されるらしいのだが、新しいRSS場所分からん

というか、配信終了なんだろうか。

2016-12-12

はてなスターAPIで、

http://developer.hatena.ne.jp/ja/documents/star/apis/entry

uriブログエントリURLつっこんだらちゃんと星データ取得されるんだけど

ブクマについた星データを取得するにはどのURL入れればいいの?

ブコメリンク

b.hatena.ne.jp/entry/000000000/comment/user

を突っ込んでも何も返ってこない

2016-12-03

てすと

 URIがどうなるのか実験

2016-08-17

コミケ薄い本って電子化しないの?

DL販売しろって話ではなくて、あくまコミケ会場における頒布方式の話ね。

なんで紙媒体にこだわっているのだろう?

現地での同好の士どうしの触れ合いの場という意義を守るにしても

重くて数量が限られる紙の本オンリーである必然性はないよね?

 

例えば、QRコード印刷された紙片をブースで100円とかで売る。

「これをスキャンすればデータを落とせます。よかったら感想コメもください☆」

とかでよくない?

QRコードの内容は、本データが格納されたクラウドアクセスする認証スクリプトに、

GETユニークシリアルコードが予め入力されるようなURI

別にNFCとかで送ってもいいけど。

もちろん従来どおりの紙の本500円とかと併売してもいいし、

紙の本が完売したらコード販売に切り替えていける。

実体物でしかありえないグッズの類ならともかく、

同人誌ならこれで救われる人もいると思うんだよね。

コミケット準備会が、シリアルコード生成アプリと、

コード認証機能提供するWeb APIだかウィジェットみたいなのを

出してくれたらスムーズだけど、そこらへんも同人開発者の力でいけそうでしょ。

データ置き場も自分サイトじゃなく、準備会指定するクラウドにしちゃえば楽。

 

データで買ったが紙の本も読みたいって人に関しては、

シリアルコードオンデマンド印刷業者に渡すと、

業者印刷データDLできて、製本されたのが届く、みたいな

オプションサービスをどっかの業者が始めればいいだけじゃない?

1冊単位での印刷所利用が広がっていけば、

サークル参加者にとっても、見本誌や試し読み用のを

最小限刷るだけって選択肢可能になる。

まあ印刷単価は高くなるけど、トータルの負担は減るでしょ。

これで身銭を切って印刷課金した上に在庫リスク不安を抱えなくても、

アプリからQRコードを多目に自宅のプリンタ印刷しとけばすむ。

 

ついでに見本誌もデータで納められるようになれば、

完全にデータだけ用意すればよくなる。

 

紙の本を否定するわけじゃないし、趣を考えると共存する方がいいけど、

積極的電子化を取り入れたら、作る側にとっても読む側にとっても、

より便利で、よりフェアで、より可能性が広がると思うんだよね。

2016-08-09

golang半年近く使ってみて

後なんかweb系の企業golang採用多いので、ある程度詳しくなっておけば就職困らなそうという予防線

今のところが成功しなかったらeurekaとかmercariとか雇ってくれませんか!

どっちもユーザーです!(ペアーズでは3名ぐらい逢った、メルカリではバイクMacbook Air売ったなー。)

ポケモンGoとかやんねーし、地味に自分がよく使っているアプリサービスから成功パターンを得るのがいいのかなぁ

なんか、人との接点がうまくできているCtoCサービスがうまくいっているような感じが(CtoCなんだから当たり前か、何いってんだ)

人とコンバージョンしたいです。

2016-07-18

アニON男性差別が酷い

私はアイカツ!が好きだ。私は今や少ない第一話からリアルタイム視聴者の一人で、アーケードゲームにも金を注ぎ、円盤も全て買っている。無論私のようなファンは沢山いて、様々な形でアイカツ!買い支えてきたのだろうと思う。実際、アーケード使用するカードだけで数十万は使っている。もちろん、この程度の金額ファンの間では珍しいものではない。

さて、アイカツ!は3年半に及ぶ放送を経て最終回を迎え、この春からアイカツスターズ!(以下、スターズ!)なる後継番組が始まった。後継番組はい監督を含めたスタッフも変わっており、アイカツ!との直接的な繋がりは(今のところ)ない。

この先はアイカツ!ファンからと言って必ずしもスターズ!のファンとは限らないという事を頭に入れて先を読んで欲しい。

ところで、ナムコ主催アニソン好きが集うアニソンバー・カフェ「アニON(アニオン)」というものがある。明日からアイカツ!およびアイカツスターズ!コラボイベントを行うらしい。その男性差別があまりに酷い。URIを張っておく。

アイカツスターズ!&アイカツ!オールスターズ!LIVEステーション | アニソン好きが集うアニソンバー・カフェ「アニON(アニオン)」

(1) カフェタイム
スターズ!の曲が流れる
(2) ラブリーパーティータイム
アイカツ!スターズ!の曲が流れる ※男性のみのご入場はできない。
(3) LIVEタイム
アイカツ!スターズ!の曲が流れる ※オタ芸やる人が来る。

表にまとめるとこうなる。

楽曲オタ芸の有無) 親子 独身女性 独身男性
アイカツ!オタ芸なし) (2) (2) ×
アイカツ!オタ芸あり) (3) (3) (3)
スターズ!(オタ芸なし) (1), (2) (1), (2) (1)
スターズ!(オタ芸あり) (3) (3) (3)

親子と独身女性は(1),(2),(3)の全てに参加できる権利を有しているため、アイカツ!の曲を聴きたい場合オタ芸なしの(2)と、オタ芸ありの(3)を選択する事ができる。一方で、独身男性アイカツ!楽曲を聴こうとするとオタ芸ありの(3)しか選択肢がない。

要するに、男性ファンは割高な料金を支払った上にやかましいオタ芸の中でしかコンテンツを楽しむ事が許されないって事なんだが……。

は?

はあああああ??????

どうかんがえてもおかしい。独身男性ファン独身女性ファンに何の差があるの?

なんでこんな明らかな男性差別がまかり通るのか、心底理解できない。担当者は頭沸いてるのか?

性別で差をつける理由を明記しないと誰も納得しないでしょ。


この仕打ち、怨めしい。

2016-06-11

艦これ個人的備忘録

http://twitter.com/DoubleCrossK

情報があまりにも少なすぎるので個人的な補完用に。

http://anond.hatelabo.jp/20160404011536

によると艦これを描いているサークル総数は年々減り続けているということで、しかC90でもC89と比べて艦これの申し込み数が減っていた。

C89=2425サークルC90=2360サークルしか当選率が上がったので当選サークル数は同じ)

こういう艦これ危機に我先とジャンルを乗り換えて逃げ出すサークル艦これへの恩を忘れた自分勝手同人ゴロであり厳しく追及する必要があると思う。

特に東方が消えていれば今ごろ艦これ一色となっていたのは明らかで、東方オワコン化に失敗した今逆に東方流出するサークルは最も艦これに害なす存在であり、そのような背信行為は界隈全体で激しく弾劾し続けなければならない。

こういう厳格な風潮が界隈にもっと広がって艦これを無闇に捨てるサークルが減り、いつまでも艦これ同人が長続きすることを願って。


リストは随時更新予定

2016-06-08

初心者には、JSP難易度が高すぎた。

環境Java8,Eclipse,Tomcat8

プログラミング歴3ヶ月

1.webコンテナの設定が面倒くさい。

Tomcat8では、managerページ開くのに

roles="manager-gui"の追加をしないといけない。

>&lt;user username="tomcat" password="" roles="manager-gui"/&gt;

2.JavaプロジェクトだけじゃWarデプロイメントできない。

Jsp入門のページからプロジェクトを丸ごと持ってきた。しかしそれだけじゃデプロイメント出来ないらしい。

Eclipseプロジェクトプロパティプロジェクトのファセット→動的Webモジュールにチェックを入れないといけない。

3.doGetメソッドがないと怒られる

デプロイメントに成功したのでプロジェクトURIアクセスしてみた。

[HTTPGETメソッドは、このURLではサポートされていません。]

doGetというメソッドが無いとダメらしい。仕方ないのでそれっぽいのをコピって貼り付けてきた。

しかし先程のエラーは無くなったが、今度はJspファイルが無いらしい。

4.Jspファイルがない

WEB-INF/直下に置いたのにindex.jspに遷移しない。

>/WEB-INF/classes/index.jsp

仕方がないからフルパス指定すると動いた。

とりあえずわかったこと。Jspは難しく奥が深い。

次はpostとかgetとかその辺を勉強したい。

2016-04-01

このエイプリルフールネタをやるためにわざとURI貼り付けまくるネトウヨ放置して場末掲示板感を演出させてきていた可能性ありそう。

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については……?
  • そのほかにも、ライティング自体が下手すぎて、これを人に見せるのはどうなのっていう感じがしちゃいました。
  • 誤字脱字くらいはちゃんとチェックしたほうがいいでしょうね。
  • 結論:いろいろ惜しいけど、よくなる余地はたくさんあるので、がんばってください。

2016-02-26

ところで増田はどうやって増田トラックバック張ってんの?

URIいちいちコピペしてるの?

2015-11-29

aliexpressをrubyスクレイピング

rubyスクレイピング

aliexpressの検索結果から

検索結果のURLを抜き取るのは、

結構簡単にできた。

ここから、ページ切り替えてURL収集する処理も追加すれば、

クローロング部分は完成。

あとは、各ページに対するスクレイピング問題



require 'open-uri'

require 'nokogiri'

# スクレイピング先のURL

url = 'http://ja.aliexpress.com/category/200003482/dresses.html?spm=2114.52010108.6.7.gT0qlW&addpid=32546825642&isOnSale=yes%22'

charset = nil

html = open(url) do |f|

charset = f.charset # 文字種別を取得

f.read # htmlを読み込んで変数htmlに渡す

end

# htmlパース(解析)してオブジェクト作成

doc = Nokogiri::HTML.parse(html, nil, charset)

num=0

doc.css('a[class = "product "]').each do |product|

p product.attribute("href").text

p num = num+1

end

2015-09-19

http://anond.hatelabo.jp/20150919145704

abblock回避サーバー側でhtml広告埋め込むようになるんじゃないかなぁ。

画像もData URIhtmlに埋め込み。これならリンク先でしか広告判定できなくなる。

ただこの場合、表示までのレスポンスは下がるからユーザーデメリットしかまれない。どうしたもんか。

google検索結果画面みたいにブロッグごと直接非表示にされちゃうとどうにもならないけどね。

2015-02-10

http://anond.hatelabo.jp/20150210030728

技術ブログを書いている人です。

批判もあるかと思いますが、できればすべて受け入れてくださると、僕と僕みたいに困ってる人が嬉しいと思います

気が向いたらでかまわない。参考に聞かせて欲しい。

6つ要望が書いてあったが、例えばその6つを満たす技術ブログ技術解説記事(雑誌含む)を聞いてみたい。次の情報があると助かる。

あと、6つの要望について、自分留意している点を書き残す。

  • 1) How to doは多いけど、Why I did in this wayで書かれてる記事が極端に少ないこと
    • 技術選択に際して、調査経緯を書くようにしている。
  • 2) 僕たちはみんなMacbashを使っているわけじゃないこと
    • 前提として「この環境」で検証した、と明記している。1)でも述べられていた「細かい手順云々」と言うひとは、自分で読み替えることができることを期待している。もちろん、文量を割く必要がある・価値があるなら可能な限り様々な手順を書くつもり。
  • 3) 断定口調で間違ったこと言うのやめてほしいです
    • よほど自信が無い限り断定しない。または、この条件ならこうだ、と検証結果を添えて伝えるようにしてくる。
  • 4) コンパイル不可能ソースや実行不可能コマンドを載せないで……
    • 推敲中に一通り自分で手順をやり直すようにしている。もちろん、検証した環境を明記している。環境が違うと結果も違う可能性がある。
  • 5) 情報源に関してはなるべく明記してくださるとありがたいです
  • 6) あなたにとってとても簡単であたりまえに解決したことは、全然簡単じゃなかったりしま
    • 読んでくれそうな人のレベル設定は想定して書くように心がけている。また、可能な限り想定読者も明記している。ただ、想定から外れているのに参照することになったとしたら、ごめん。

2014-12-24

イブクリスマスも予定のない俺とみんなのためのエロサイトを作った

作ったサイト

エロ動画を色々なところから収集するサイトです。

skrsvideo

http://skrsv.info/

サーバー選び

今回プログラミング言語Rubyを選択したため、基本的にはVPSクラウド的なサーバーLinuxが動作する環境を探しました。

エロサイト運営するにあたって問題になるのがサーバー選びです。

基本的日本レンタルサーバーではアダルトサイト運用を禁止しています

普段使っているさくらVPSが利用できず、AWSもなんだかグレーな感じ(東京リージョン以外なら・・・?)

そんなわけで探し、GMOグループWebkeepersを使いました。

Webkeepersのサーバー海外にあるらしいです。

質問アダルトサイト運用はできますか?

http://faq.webk.net/faq/index.php?qc=1&qc_sub=4&id=99

使っても良いよ〜というお墨付き

そして価格も手頃だったためここに決定。

システム

DBMariaDB
WebサーバNginx
フレームワークRuby on Rails

MariaDBを選んだ理由はなんとなく、MySQLとの違いはほぼありません。利用するGEMmysql2でいけます

NginxWebサーバで、ページキャッシュもしています

ちなみにJavaScriptは使わずすべてCSSで作る方針しました。

スマホPC対応のためにMedia Queryでレスポンシブにしています

Webの流れ

Nginx

unicorn

Ruby on Rails

MariaDB

という流れです

使っているGEM

gem 'mysql2'

gem 'rails_config'

gem 'kaminari'

gem 'haml-rails'

gem 'sass-rails'

gem 'nokogiri'

gem 'unicorn'

フロントhamlsassで、難しいことはしていないのでcompassはいれませんでした。

あとはデバッグ用にrails_config、pry系が入っています

クローリングスクレイピングでnokogiriを使います

クローラー

skrsvideoでは動画URLを取得するためにクローラーもどきスケジューリングして収集しています

スケジューリングにはcrontabを使用しています

crontabでRakeタスクを定期的に叩きます

コマンドはこんな感じ

RAILS_ENV=production bundle exec rake item:search


Rakeタスクはnokogiriでxvideosへのリンクを集めています

doc = Nokogiri::XML( open(URI.parse(url)).read )

urls = []

doc.css('a').each do |link|

 urls.push link[:href] if link[:href] =~ /xvideos.com\/video(\d+)/

end

Nokogiriのスクレイピングでaタグリンクを取得し、URLxvideosのものかチェックして保存って感じです。

動画を探し終えるとaタグからランダムピックアップし次のページに進んでいきます

動画が見つかったページはドメインDBに記録して、しばらくしたら再びクローリングをするようにし、収集効率化。

サイト機能

(45 min)←コレの安心感は異常wwwwww

http://blog.livedoor.jp/dennououjo/archives/39873075.html

これを思い出して、動画時間を表示するようにしました。

30分以上の表示はちょっと頑張ったところ

http://skrsv.info/30_min_more


AV女優タグが表示されるようになっています

これはタイトル文字列から部分一致で引っかかったものを表示しています

AV女優名前を表示するためにWikipediaからとってきたら、ちょっと膨大な数になってしまったため断念。

どんだけ女優いるんだって感じですね。

DMMランキングに載っていた方だけをとりあえず入れています

タグも同様にDMMから

おわりに

1日でつくろうと思っていたら思った以上にサーバーが見つからないで、サーバー選びに1日かかってしまいました。

あとはFC2とか対応できたらいいなーと思います

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