はてなキーワード: TEXTとは
These Terms of Service ("Terms") are a legal agreement between we and you ("you"). By installing or using any application ("Service") you agree to be bound by these Terms. By accessing or using the Service, you agree that you have read, understood, and accept to be bound by the Terms. We reserve the right, in its sole discretion, to modify or revise these Terms at any time, and you agree to be bound by such modifications or revisions. If you do not agree to the Terms, do not use the Service.
Users are responsible for periodically viewing the Terms. Your continued use of the Service after a change or update has been made will constitute your acceptance to the revised Terms. If you do not agree to the Terms your only remedy is to discontinue your use of the Service and cancel any accounts you have made using the Service.
We reserve the right to refuse any user access to the Services without notice for any reason, including, but not limited to, a violation of the Terms.
You represent that you are 13 years old or older. If you are between the ages of 13 and 18, you represent that your legal guardian has reviewed and agrees to the Terms.
All materials that are part of the Service (including, but not limited to, designs, text, graphics, pictures, video, information, applications, software, music, sound and other files, and their selection and arrangement) are protected by law from unauthorized use.
We grant you a personal, non-exclusive, non-transferable, revocable, limited scope license to use the Service solely for the purpose of viewing and using the applicable Services and for no other purpose whatsoever. Your license to use the Services is limited by these Terms.
You agree that you are willingly publishing the content on the Service using technology and tools provided by us. You understand and agree that you may not distribute, sell, transfer or license this content and/or application in any manner, in any country, or on any social network or another medium without the explicit written permission of us. We reserve the right to remove and permanently delete any User Content from the Service with or without notice.
You agree that all your communications with the Communication Channels are public, and thus you have no expectation of privacy regarding your use of the Communication Channels. We is not responsible for information that you choose to share on the Communication Channels, or for the actions of other users.
By using the Service, you agree to the collection and use of your personal information as outlined in this Privacy Policy. We may amend the Privacy Policy from time to time, and we encourage you to consult the Privacy Policy regularly for changes.
A cookie is a small data file that we transfer to your computer’s hard disk, generally to quickly identify a user's computer and to "remember" things about the user's visit, such as your preferences or a user name and password. The Service sends cookies to your computer when you access or view the content of us. The information contained in a cookie may be linked to your personal information for purposes such as improving the quality of our service, tailoring recommendations to your interests, and making the Service easier to use. You can disable cookies at any time, although you may not be able to access or use features of the Service.
Third-Party Advertising Companies
We may use third-party advertising companies to serve ads on the Service. We do not provide any personal information to third-party advertising companies on a non-aggregate basis. Our system and the third-party advertising technology may use aggregate information, non-personal information, Our cookies on your hard drive and your use of the Service to target advertisements. In addition, advertisers may use other third-party advertising technology to target advertising on other sites. If advertisements are served to you, a unique third-party cookie or cookies may be placed on your computer. Similarly, third-party advertising companies may provide us with pixel tags (also called “clear gifs” or “beacons”) to help manage and optimize online advertising. Beacons enable us to recognize a browser’s cookie when a browser visits the site on which is a beacon is located, and to learn which banner ads bring users to a given site.
You may review, update, correct or delete any personal information by changing the applicable information in your profile page on Facebook and/or another social network (s). If you completely delete all this information, your account may become deactivated. If you would like us to delete your record in our system, please contact us and we will attempt to accommodate your request if we are not legally obligated to retain the record.
We have put in place reasonable technical and organizational measures designed to secure your personal information from accidental loss and from unauthorized access, use, alteration or disclosure. However, we cannot guarantee that unauthorized third parties will never be able to overcome those measures or use your personal information for improper purposes. Also please note that email and messaging systems are not considered secure, so we discourage you from sending us personal information through these mediums.
The Service is not geared toward children under the age of 13 and we do not knowingly collect personal information from children under the age of 13. If we learn that a child under 13 has provided us with personal information we will delete such information from our files as quickly as possible.
Disclaimer of Warranty; Limitation of Liability
You agree that your use of the Service shall be at your sole risk. To the fullest extent permitted by law, We, its officers, directors, employees, and agents disclaim all warranties, express or implies, in connection with the website and your use thereof including implied warranties of title, merchantability, fitness for a particular purpose or non-infringement, accuracy, authority, completeness, usefulness, and timeliness. We make no warranties or representations about the accuracy or completeness of the content of the Service and of the content of any sites linked to the Service; We assume no liability or responsibility for any (i) errors, mistakes, or inaccuracies of content, (ii) personal injury or property damage, of any nature whatsoever, resulting from your access to and use of the Service, (iii) any unauthorized access to or use of our secure servers and/or any and all personal information and/or financial information stored therein, (iv) any interruption or cessation of transmission to or from the Service, (v) any bugs, viruses, trojan horses, or the like which may be transmitted to or through the Service by any third party, and/or (vi) any errors or omissions in any content or for any loss or damage of any kind incurred as a result of the use of any content posted, emailed, transmitted, or otherwise made available via the Service.
In no event will We, its directors, officers, agents, contractors, partners and employees, be liable to you or any third person for any special, direct, indirect, incidental, special, punitive, or consequential damages whatsoever including any lost profits or lost data arising from your use of the Service or other materials on, accessed through or downloaded from the Service, whether based on warranty, contract, tort, or any other legal theory, and whether or not We have been advised of the possibility of these damages. The foregoing limitation of liability shall apply to the fullest extent permitted by law in the applicable jurisdiction. You specifically acknowledge that We shall not be liable for user submissions or the defamatory, offensive, or illegal conduct of any third party and that the risk of harm or damage from the foregoing rests entirely with you.
You agree to indemnify and hold We, and each of its directors, officers, agents, contractors, partners, and employees, harmless from and against any loss, liability, claim, demand, damages, costs and expenses, including reasonable attorney's fees, arising out of or in connection with (i) your use of and access to the Service; (ii) your violation of any term of these Terms of Service; (iii) your violation of any third party right, including without limitation any copyright, property, or privacy right; (iv) any claim that one of your User Submissions caused damage to a third party; or (v) any Content you post or share on or through the Service.
By visiting or using the Service, you agree that the laws of UK, without regard to principles of conflict of laws and regardless of your location, will govern these Terms of Service and any dispute of any sort that might arise between you and us.
If you have any questions about these Terms of Service, please contact us at otoco.contact@gmail.com
2018-07-04
https://www.gimp.org/news/2018/07/04/gimp-2-10-4-released/
Loading all available fonts on start-up can take quite a while, because as soon as you add new fonts or remove existing ones, fontconfig (a 3rd party utility GIMP uses) has to rebuild the fonts cache. Windows and macOS users suffered the most from it.
Thanks to Jehan Pagès and Ell, GIMP now performs the loading of fonts in a parallel process, which dramatically improves startup time. The caveat is that in case you need to immediately use the Text tool, you might have to wait till all fonts complete loading. GIMP will notify you of that.
できるよ
どうせ読み込み方間違えてるんだろ
<html>
<head>
<link rel="stylesheet" href="masuda.css">
</style>
</head>
<body>
<table>
<thead>
<tr>
</tr>
</thead>
<tbody>
<tr>
</tr>
<tr>
</tr>
<tr>
</tr>
</tbody>
</html>
masuda.cssは↓
table {
counter-reset: rowCount;
}
counter-increment: rowCount;
}
table > tbody > tr > td:first-child::before {
content: counter(rowCount);
}
<html>
<head>
table {
counter-reset: rowCount;
}
counter-increment: rowCount;
}
table > tbody > tr > td:first-child::before {
content: counter(rowCount);
}
</style>
</head>
<body>
<table>
<thead>
<tr>
</tr>
</thead>
<tbody>
<tr>
</tr>
<tr>
</tr>
<tr>
</tr>
</tbody>
</html>
増田から低能先生を消したい場合はuBlockのマイフィルターに
という設定を書き加えれば大体望み通りの結果が得られるわけだが、このhas-text()は引数として正規表現をうけとることができるらしい。
低能先生より複雑な安倍botに対応するためにもきっちり低能先生にだけマッチする正規表現を考えてみたいところである。
低能先生の投稿を一通り見たところ「は」「が」を付けて主語として使う場合と、「の」や「に」を付けて主語述語を修飾する場合と、文末に1単語だけ置く場合があるようだ。場合によっては「w」や「w」が付与される。
1行目で「はがのにww」と続く場合を、2行目で行末に書かれた場合にマッチさせて消そうと思ったのだけど、2行目の行末の場合が機能してくれない。
uBlock Originの取説では正規表現の解説はAdBlock Plusのページに飛ばされ、AdBlock PlusからはMozillaにリンクが張られている。https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions おそらくuBlockの正規表現はMozillaのJavaScript準拠なのだろう。なのだろうけれどJavaScriptの改行にマッチしそうな特殊文字を一通り試したがどれも使えない。試しにuBlockのマニュアルページで
を設定してみたところ、ちゃんと「ed.」で終わる行だけ消してくれた。ということは日本語だから駄目なのだろうか?
JavaScriptに詳しい増田がいらっしゃったらアドバイスください。
anond:20180523215832 のついで。
同じくuBlock OriginのMy Filtersを使う。
コメントやタグに「死ねばいいのに」という文章が含まれるブコメを隠したい場合
「Dummy_ID」によるブコメをブロックしたい場合、同じくMy Filtersで、
hatena.ne.jp##.entry-comment-contents:has(a[href*="Dummy_ID"])
を追加すれば消えるのだけど、これだとDummy_IDにスターを付けられたブコメまで消えてしまう。もうちょっと調べればなんとかなりそう。
anond:20180523215832 のついで。
同じくuBlock OriginのMy Filtersを使う。
増田でタイトルや本文に「死ね」という単語が含まれるエントリーを隠したい場合
数ヶ月前のはてなブックマークの仕様変更で"はてなNG"などのChromeのエクステンションが使えなくなったとかなんとかいう話を見た覚えがある。その後の展開は知らないけれど、今見たところ最終更新日が2014年のままだからおそらくどうもなっていないのだろう。
WebExtensionsの知識もないので、出来合いの広告ブロックアドオンuBlock Originのコスメティックフィルターを使って仕様変更後のはてなブックマークのエントリーをブロックする方法をメモしておく。使ったブラウザはFirefox 60だけど、他のブラウザでも似たような感じでできるのではないだろうか。
uBlock Originのダッシュボードを開く。ツールバーのアイコンやアドオンメニューの設定ボタンから開くことができる。
My Filtersタブを開く。
例えば朝日新聞のasahi.comをブロックしたい場合、次の行を追加しApply Changesボタンを押して変更を確定する。
hatena.ne.jp##.js-keyboard-selectable-item:has(a[href*="asahi.com"])
ブロックしたいサイトが増田(anod.hatelabo.jp)だとしたら次のような行を足すことになる。
hatena.ne.jp##.js-keyboard-selectable-item:has(a[href*="anond.hatelabo.jp"])
例えば「アメフト」を含むエントリーをブロックしたい場合は、次の行を追加しApply Changesボタンを押して変更を確定する。
はてなブックマークのエントリーリストページにはタイル、リスト、ヘッドラインと3種類の表示方法があり、htmlの書かれ方もそれぞれ違うが、class="js-keyboard-selectable-item"のli要素がどの表示方法でも共通して存在する。2018年3月以降のはてブページでエントリーをブロックするためにはこの要素を指定して隠すのが手っ取り早い。広告ブロックソフトを使うにせよ、JavaScriptを自分で書くにせよそういう方針になると思う。
uBlock Originを使ったブロックの欠点は上記のように設定が若干難しいのと、はてなNGのようにIDを指定するだけでブコメもブログも両方ブロックという芸当はできないことだろうか。ブコメ、ブログをそれぞれブロックすることになる。利点は高速性を謳うuBlock Originなどの機能をそのまま使うので速度低下を最小限に抑えられることだろう。
Tampermonkey でos0x氏(Text URL Linker作者)の userscript を使ったらいけるかもしれない
Webサイトへの広告配信システム Geniee SSP を開発する企業。2017年11月マザーズ上場。主要株主はソフトバンク。下請けの広告会社が Geniee SSP を自社システムとして営業に使用できる(OEM)。詳細はねとらぼの記事を参照。
広告配信のジーニー、「漫画村」など不正サイトへの広告を停止したと発表 - ねとらぼ
Geniee SSP の広告タグには規則性がある。これを活用して Geniee SSP を掲載しているサイトを探した。
<!-- ad tags Size: 300x250 ZoneId:[a]> <script type="text/javascript" src="http(s)://[b]/t/[c]/[d]/[a].js"></script>
[a] : | 広告タグの固有ID |
[b] : | 広告会社によって異なるドメイン |
[c] : | [a]の下6桁のうち最初の3文字 |
[d] : | [a]の下6桁のうち最後の3文字 |
(2)では広告会社によって異なるドメインが使われているが、実際には全ての広告が genieesspv.jp から配信される。詳細は以下のエントリーの「BASE64っぽい文字列をデコードすると、HTMLの断片が現れます」以降を参照。(エントリーの執筆者は元増田と無関係)
ここではサイト内のHTMLやJavaScriptのソースコードから Geniee SSP の広告タグを直接確認できるサイトのみをまとめた。
広告会社 | 広告配信先サイト | サイト内容 | 月間アクセス数 | 広告タグを確認できるページ | 広告タグのURL部分 |
---|---|---|---|---|---|
ジーニー | MioMio | テレビの海賊版サイト | 3000万PV | ttps://web.archive.org/web/20170606015825/http://www.miomio.tv/ent/japan/ | ttp://js.genieessp.com/t/106/112/a1106112.js |
ジーニー | Youtubeアニメ無料動画++ | アニメのリーチサイト | 8000万PV | ttps://web.archive.org/web/20180330043340/http://tvanimemuryoudouga.com/ | ttp://js.gsspcln.jp/t/246/920/a1246920.js |
フィング | DLBOOKS | 同人誌の海賊版サイト | 6.4億PV | ttp://web.archive.org/web/20180415210525/http://dlbooks.to/ ttp://web.archive.org/web/20180415210535js_/http://gum.dlbooks.to/js/pc/pc_728_90_03.js を経由 | ttp://js.click-plus.net/t/227/975/a1227975.js |
インサイト | ShareVideos | エロ動画の海賊版サイト | 2.4億PV | ttps://web.archive.org/web/20180415201519/http://share-videos.se/ | ttp://js.isboost.co.jp/t/287/861/a1287861.js |
アドニコ | アニポ | アニメのリーチサイト | 1000万PV | ttps://web.archive.org/web/20180410033210/http://anipo.tv/ | ttp://js.adnico.jp/t/305/831/a1305831.js |
エムエムラボ | 動画エロタレスト | エロ動画のリーチサイト | 15億PV | ttp://web.archive.org/web/20180401160146/https://static.eroterest.net/kok/sp_footer3.html | ttps://js.mediad2.jp/t/228/840/a1228840.js |
漫画村やAnitubeのほか、児童ポルノやリベンジポルノを配信していると思われるサイト等でも Geniee SSP の広告が配信されているのを確認できたが、いずれも別のアドサーバーを経由しており、ジーニー側がそのサイト上での配信を認識しているかが不明なため、ここでは割愛する。
Quick Tutorial for Pyramid は公式のチュートリアル
https://docs.pylonsproject.org/projects/pyramid/en/latest/quick_tutorial/index.html
$ $VENV/bin/cookiecutter gh:Pylons/pyramid-cookiecutter-starter --checkout 1.9-branch
として、プロンプトの問いに答えるとサンプル的なアプリができる。
ghはgithubか。
引数で指定できるテンプレートは https://github.com/Pylons?q=pyramid-cookiecutter
sqlalchemyを使うものは分かるけど、zodbって何?
アプリは以下のようにして起動する。
$ env/bin/pserve development.ini --reload
このpserveというPythonモジュールでアプリ動かしたりする。
超単純なPyramidアプリを作って、WSGIのイメージをつかむ。
app.py を書き写して動かしたらHello Worldが動いた。
viewとURLの紐付けはconfig.add_routeしてconfig.add_viewする。add_viewしてからadd_routeしても大丈夫だった。
viewにはrequestが渡される。requestに色々入ってそう。
waitressは知らないけど、serveでHTTPサーバ作ってWSGIアプリを公開できるのかな?
print('Incoming request')
...instead of:
print 'Incoming request'
Inernal Server Errorになった。アプリのほうではValueErrorでresponseを返すようにと怒られていた。text/plainとか返すには何かしないとダメっぽい。
print(xyz)してみろ、ということかな。1と同じくInernal Server Errorになって、コンソールにはNameErrorが出た。
CGIかな?
本気で好きだった二次創作の文字書きさんがいた。この人を仮にAさんとしよう。
初めてAさんの小説を読んだ時に「これが天才か」と本気で思った。素晴らしい世界観と伏線の数、圧倒的文才が紡ぐ文章に私は心奪われた。すぐに他の小説も片っ端から読んでいった。読まずにはいられなかった。全てクオリティが高く、読んだ後の私はある種の達成感に浸り放心状態だった。
でも私とAさんのジャンルが被ったのは一作品だけだった。更に言うなら被ったそのジャンルでAさんが書いていたCP小説は私の守備範囲外のCPで、ぶっちゃけ逆CPの方が本命、まであった。それでもAさんの小説が好きだった。逆CPなのが気にならない程に素晴らしい作品だった。
Aさんが別ジャンルに移った時、Aさんの小説を読みたいがためにわざわざアニメを、少し視聴した。二次創作を読みたいから元ネタを見るなんて本末転倒にも程があるのは分かっていたが、そんなものは関係ないと言わんばかりに、今まで1mmも興味の湧かなかったアニメを見ていた。
ある日気づいたらAさんの作品は全て削除されていた。
Aさんの更新頻度はどちらかというと低いほうだった。しかも当時の私の本命ジャンルとはかけ離れたジャンルの小説をAさんは書いていたので、私は更新チェックを怠っていたのだった。
なぜ削除されたのか、理由が知りたくて私は私が知りえるあらゆる方法で検索をかけまくった。
調べて分かったことは、Aさんの活動の休止に伴って今までの作品やTwitterアカウントを削除した、ということだけだった。
その時私はあの、Aさんの作品で初めて読んだあの、この人は天才だと思わずにいられなかったあの作品が読みたくてAさんのページにアクセスしたのに、全て削除されていたこの喪失感。正直耐え難かった。
それから私はどうにかあの小説が読めないだろうかと模索し始めた。魚拓でもなんでもいいからとっておけばよかったと本気で思った。むしろ誰かがとった履歴が無いか3つくらいの魚拓サイトで確認した。そんなこと考えるのは私だけみたいだったけど。
ネットにあげたものは一生消えることはないと言われる現代で、私はあれほど好きだった小説を見つけることが出来なかった。
だが、収穫がなかったわけではない。
Aさんの小説が読みたくて私がアニメをわざわざ見たあのジャンルの小説なら、私のPCに何故かtextファイルで残っていた。私は嬉々として小説を読んだ。
素晴らしかった。保存しておいて本当に良かったと思った。
でも、素晴らしかったからこそ、私はあの初めて読んだ小説がまた読みたくて仕方がなかった。
わがままだ。
Aさんが作品を削除してから1年半の時間が過ぎた。もう見つけられない。
もしかしたら、あれだけの小説を書くAさんなら、また別名義で小説を書いているかもしれない。でも、見つけられない。
イラストなら、ハンドルネームを変えても絵柄や色塗りの特徴で気づくことはあるが、小説でハンドルネームを変えた人を見つけられるとは思えない。
少なくとも私には無理だ。
それでも、読みたい。
タイトルに「もう一度だけでいい」と書いたが、こんなの嘘っぱちだ。
もしまたあの小説を読めるようになったなら、魚拓でもコピペでもスクショでもなんでもいいから保存して、何度も何度も読み返すのだろう。私はそういう奴だ。
いまだに私はAさんの小説、特にあの初めて読んだ小説のことを思い出す。
あの小説が読みたくて読みたくて堪らない。
私はいつまでたってもあの小説に魅せられ、囚われ続けるのだろう。
もうお目にかかるとこは一生ないのだろうけれど。
数日前に puppeteer で自動で PDF にする試みを書いたブログがホッテントリに入ってるのを見た
bg.js
const username = "" const api_key = "" chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { if(message.bookmark){ bookmark(message.bookmark) } }) async function bookmark(url){ fetch("http://b.hatena.ne.jp/atom/post", { method: "POST", referrer: "no-referrer", headers: { Accept: "application/x.atom+xml, application/xml, text/xml, */*", "X-WSSE": await createCredential(), }, body: ` <entry xmlns="http://purl.org/atom/ns#"> <link rel="related" type="text/html" href="${url}" /> </entry> `.replace(/\t/g, ""), }).then(e => {console.log(e)}) } async function createCredential(){ const non = Math.random().toString(36).substr(2) const now = new Date().toISOString() const buf = new TextEncoder().encode(non + now + api_key) const u8a = new Uint8Array(await crypto.subtle.digest("SHA-1", buf)) const str = Array.from(u8a, e => String.fromCharCode(e)).join("") const b64 = btoa(str) return `UsernameToken Username="${username}", PasswordDigest="${b64}", Nonce="${btoa(non)}", Created="${now}"` }
username と api_key を埋めてバックグラウンドで動かす
page.js
chrome.runtime.sendMessage({ bookmark: location.href })
ページ内で動かすコード