「parse」を含む日記 RSS

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

2024-05-24

anond:20240523100428

ダブスタ検証用のスクリプト簡単に書いたよ(AIで)

import requests
import json
from urllib.parse import quote

def fetch_bookmarks(url):
    try:
        # URLエスケープ
        escaped_url = quote(url, safe="")
        api_url = f"https://b.hatena.ne.jp/entry/json/?url={escaped_url}"

        response = requests.get(api_url)
        response.raise_for_status()

        try:
            return response.json()
        except json.decoder.JSONDecodeError as e:
            print(f"Error decoding JSON from {api_url}: {e}")
            print("Response content:", response.text)
            return []
    except requests.exceptions.RequestException as e:
        print(f"Error fetching bookmarks from {api_url}: {e}")
        return []

def find_common_bookmarks(bookmarks1, bookmarks2, url1, url2):
    common_users = set(bm["user"] for bm in bookmarks1 if bm["comment"]) & set(bm["user"] for bm in bookmarks2 if bm["comment"])
    common_bookmarks = []
    for user in common_users:
        comments = []
        for bm in bookmarks1:
            if bm["user"] == user and bm["comment"]:
                comments.append({"url": url1, "comment": bm["comment"], "timestamp": bm["timestamp"]})
                break
        for bm in bookmarks2:
            if bm["user"] == user and bm["comment"]:
                comments.append({"url": url2, "comment": bm["comment"], "timestamp": bm["timestamp"]})
                break
        if len(comments) == 2:
            common_bookmarks.append({"user": user, "comments": comments})
    return common_bookmarks

if __name__ == "__main__":
    url1 = "https://news.yahoo.co.jp/articles/f9966c4ccc374fc88babbb50175a9ea844c99638"
    url2 = "https://www.asahi.com/articles/ASN6K7F64N6KUJHB00L.html"

    data1 = fetch_bookmarks(url1)
    data2 = fetch_bookmarks(url2)

    common_bookmarks = find_common_bookmarks(data1["bookmarks"], data2["bookmarks"], url1, url2)

    print(json.dumps(common_bookmarks, indent=2, ensure_ascii=False))

url1, url2のところを対象としたいものに変えれば使えるよ

抽出対象となるのは以下のユーザーだよ

バグあったら直して使ってね

※てかはてな匿名ってシンタックスハイライト記法使えないんだね、使って表示確認したら500エラーになったわ

2023-12-14

架空言語、という事にしておいてほしいんだが

    List<Record> rows = DBから持ってくる();

    // 合計金額を求める
    String total = "0";
    for (Record r : rows) {
        BigDecimal temp = BigDecimal.parse( カンマを削除する関数(total) ); 
        BigDecimal temp2 = temp + r.金額;
        total = カン区切り文字列にする関数(temp2); 
    }

    // やったー合計金額計算してカン区切り文字列にできたよー
    return total;

とか

    // async await は非同期処理を同期してくれる魔法言葉だって!よく知らんけど
    await axios.get('/foo')
        .then(function(result) {
             // やったー結果が得られたよー
        });

とか

正直なところ、こういうコードのお守りするの、そろそろキツい。。。

2023-08-14

anond:20230813211225

たとえは、0 / float.Parse("0") とかすると、Infinity になるんじゃね?まずいと思うが。

2023-08-13

anond:20230813185410

なんかおかしいか

信用できない文字列に対してこそ、よくテストされ尽くしたfloat.Parse()を使うのは当然だと思うんだが。。

2023-07-18

気象庁バグがずっと放置されてる

この時期になるとずっと気象庁の気温ランキングを眺めて「今日暑いなー」って見てるんだが

https://www.data.jma.go.jp/obd/stats/data/mdrr/rank_daily/data00.html

このページの「観測値」が昔からずっとバグっててめっちゃ気になってる

「35.9 ]」っていう感じで、「]」が入ってる

もうバグの原因はほぼほぼ目に見えてて、ここはJSONで「 [ 34.0, 34.5, 35.0, 35.9 ]」っていう値が入ってて

それをJSON.parseするんじゃなくてsplit()とか使ってしかもlength-1とかで最新値を取ってる

なので後ろの括弧がそのまま入ってしまってる

こんなのめちゃくちゃわかりやすバグだし、多分気象庁側も把握してるんだろうけど

多分発注しないとダメとかテスト必要だとかでずっと放置されてる

めっちゃ気になるのにずーーーーーっとこのままなのが凄くダサい

何がダサいってこういうのをアジャイルに直すことができない日本ソフトウェアに対する態度がすげーダサい

2023-04-19

strftime

strptime

がどっちが文字を日付にするやつか

日付を文字にするやつか

もう何年も忘れ続けて

その都度検索してたんだけど

わかった!!!

Format のfとParseのpだわ!!!!!!!

これで検索しなくても覚えられる😁

2022-08-18

俺はみずほと同じぐらいのコードしか書けないのに気が付いた

話題ホットエントリ問題、解いてみた。

結論タイトルの通り

不正解score += 0; と書いているのは静的解析がelse節を省略すると指摘してくるから

何もしていない、はそのとおり。

不等号がいい具合に化けてるのでそのままにしておく。


import java.util.*;


public class Main {
    public static void main(String[] args) {
        // 入力parse
       (中略:int numに問題の数、String list[i][] に問題リストを格納している)

        // 採点
        int point = 0;
        for (int i = 0; i < num; i++) {
            String question = list[i][0];
            String answer   = list[i][1];
            
            if (question.equals(answer)) {
                // 完全一point += 2;
            } else {
                if (question.length() == answer.length()) {
                    // 文字数は等しい(部分点の可能性がある)
                    point += scoring(question, answer);                    
                } else {
                    // 不正解
                    point += 0;
                }                
            }
        }
        System.out.println(point);
    }

    // 長さが同じ文字列を採点する
    // 長さが違う文字列を受け渡したときは正しく動作しない
    private static int scoring(String question, String answer) {
        int length = question.length();
        int score  = 2;
        for (int i = 0; i < length; i++) {
          (中略:文字が違うたびにscoreを-1して、socreが0以下になったらそのままreturn)
        }
        return score;
    }
}

2021-01-10

このような文章は、MTLはおろか、ほとんどの人には解析できないでしょう。

A sentence like this would be impossible for most people to parse, let alone MTL.

DeepLすげーな、最後無視してるしニュアンスは全部落ちてるけど

2020-11-28

プログラミング勉強、詳細の疑問大事だけどあとでもいいじゃん?

C#入門書を読んでいて、第4章くらいに4ページくらい割いて書いてあるキャスト

( )で変換するのと int.Parse() で変換するのとどう違うのか(どちらか片方でいいのではないか)をネットで調べ、

なんか as とか int.TryParse() とか出てきてあーんー参照型と値型がーになってダウンキャストとポリフォーニズムでお昼ごはん夜ご飯になったところで切り上げた

オーケー、とりあえず現状詳細わからんでいいわ

型の違う数値同士のときが ( ) で、文字列から数値に変換したいときが int.Parse() とかだな

入門書に書いてあるそのまんまだな

プロの取捨選択最高

もういいや次ページ行こう全然進まん

2020-05-09

anond:20200509091500

では横ですが、ワテクシの特技のRを少々……

eval(parse(text=paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(paste0(

2019-04-02

いま、この「自分の全記事を一括削除するスクリプト」は動かない?

anond:20130927152907

いま、この「はてな匿名ダイアリー自分の全記事を一括削除するスクリプト」は、動かない?

httphttps、URL などは、適切に直した。

・POSTに与える最後csrf を取ってくる parse が間違って、 rkm= が空になっている。正規表現parse していたのを直して、 o+XXXXXXXXXXXXXXX/g を拾ってくるようにした。

・POSTに与える delete=が元々の %8d%ed%8f%9c%82%b7%82%e9 でも削除できないし、「 %e5%89%8a%e9%99%a4%e3%81%99%e3%82%8b 」でも削除できなかったし、これってマジックナンバーなん?

2019-01-01

Graphviz を使って Python抽象構文木を生成する。



1. こんな感じで使います


1.1. スクリプトとして使用する。

$ python parser.py sample.py


1.2. モジュールとして使用する。

import parser
code = '''
a  = 1 + 1
print(a)
'''
graph = parser.create_graph(code)
graph.render("sample")


2. ソースコード parser.py はこんな感じです。

import ast
import sys
import graphviz


def create_graph(lines):
    graph = graphviz.Graph(format='png')
    root = ast.parse(lines)
    node_list = [root]
    _setup(graph, node_list)
    return graph


def _setup(graph, node_list):
    # node
    node = node_list[-1]
    node_identity = str(len(node_list))
    node_name = type(node).__name__
    graph.node(node_identity, node_name)

    # children
    for child in ast.iter_child_nodes(node):
        node_list.append(child)
        child_identity = str(len(node_list))
        graph.edge(node_identity, child_identity)
        _setup(graph, node_list)


if __name__ == '__main__':
    file_name = sys.argv[1]
    with open(file_name) as file:
        lines = file.read()
    graph = create_graph(lines)
    graph.render(file_name)

2018-08-06

Facebook は買ったサービスを衰退させる)

FacebookVR の雄 Oculus も買っています。今は VR といえば Oculus ですが、VR にはどんどん大きな会社が参入してきています近いうちに Oculus の影響力は下がっていくことでしょう。それを見た Facebook経営層は、Parse と同じ判断をするはずです。その時、Oculus 用のソフトを開発していた人たちは、今の Parse で開発していた人たちと同じ辛さを経験するでしょう。これを予見できる開発者たちは、早期に Oculus から撤退するはずです。そうすると VR に対する Oculus の影響力は加速度的に小さくなります

まり、何が言いたいかというと、今回の判断開発者Facebook 離れを引き起こす判断であり、Facebook に買われたサービスは衰退することを宿命づけてしまった大きな事件の一つだったということです。

もう Facebook は有望な会社は買わないでくれ!と本気で思う一件でした。

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" => "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

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

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とか対応できたらいいなーと思います

2014-07-11

System.Net.Sockets.UdpClient でブロードキャスト送信

C# で書くと

var ep = new System.Net.IPEndPoint(System.Net.IPAddress.Parse("255.255.255.255"), 2048);

var soc = new System.Net.Sockets.UdpClient(ep);

とすれば

型 'System.Net.Sockets.SocketException' のハンドルされていない例外が System.dll で発生しました

追加情報:要求したアドレスコンテキスト無効です。

例外が発生する。

ここは

var u = new System.Net.Sockets.UdpClient();

と空のUDPソケットを作成しておいて、Send メソッドアドレスを指定する方法をとる。

ちなみに u.EnableBroadcast には false を代入しても、私の環境ではなぜだかうまく送信された。

(本文に関係ないけど、はてな記法コード(cs)の書式指定すると、プロキシエラーになる。。)

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