「USER」を含む日記 RSS

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

2023-01-19

ChatGPTにお前はどうやって実装されてんの?って聞いてみたら

マジレスされてチビッた.こりゃGoogleさんもビビるわけだ.

ぼく:

How were you implemented? Is it deep learning-based?

ChatGPT:

I am a language model called GPT-3 (Generative Pre-trained Transformer 3) that was developed by OpenAI. It is a deep learning-based model that uses a type of neural network called a transformer, which was trained on a large dataset of text to learn patterns of language.

GPT-3 is trained using a technique called unsupervised learning, where the model is given a massive amount of text data and uses this data to learn patterns and relationships in the language. This allows GPT-3 to generate human-like text when given a prompt, and to understand and respond to natural language input.

The training process of GPT-3 involves a technique called pre-training, which means that the model is trained on a massive dataset before being fine-tuned on a smaller task-specific dataset. This pre-training allows GPT-3 to have a good general understanding of the language and to be able to adapt to specific tasks more easily.

The GPT-3 model has 175 billion parameters, which is one of the largest language models to date, making it able to generate very human-like text and to understand context in a very natural way.

ぼく:

How does GPT-3 have a knowledgebase like an ontology? As it is deep learning-based, the knowledgebase like an ontology would not be implemented explicitly, but the structure should be designed with an expectation of having such a knowledge about hierarchy of concepts.

ChatGPT:

GPT-3, like other deep learning models, does not have an explicit knowledgebase or ontology built into its structure. Instead, it has been trained on a large dataset of text, which allows it to learn patterns and relationships between concepts.

However, the training data that GPT-3 was exposed to, likely contains a wide range of concepts and hierarchical structures. As GPT-3 learns patterns in the data, it can begin to understand the relationships between different concepts and ideas, and how they are related to each other. This allows the model to generate text that is more coherent and semantically meaningful, making it possible to understand the context and hierarchy of concepts, but it does not have an explicit ontology like a knowledge graph.

It can be said that GPT-3 has a certain level of "implicit ontology", in the sense that it has learned the relationships between concepts in a way that is similar to how a knowledge graph or ontology organizes information. However, it's important to note that GPT-3's understanding of concepts and relationships is based on the patterns it has learned from the training data, which is not a structured and explicit knowledgebase like an ontology.

ぼく:

Then how does GPT-3 handle the long-term or short term memories? Can it remember information about the on-going chatting? My name is Masuda, can GPT-3 keep it in the memory? Furthermore, can it learn and understand the new information from the Q-A queries, and use it in the future queries?

ChatGPT:

GPT-3 handles long-term and short-term memories differently. When it generates text, it uses a technique called attention mechanism which allows the model to focus on certain parts of the input while generating the output. This allows GPT-3 to keep track of previous information and context when generating text, which can be thought of as a form of short-term memory.

Regarding the on-going chatting, GPT-3 can keep track of certain information, like the name you've provided, Masuda, during the conversation and use it in future responses. However, it's important to note that GPT-3 is a stateless model, which means that it doesn't have a permanent memory that it can refer to after a conversation ends.

Regarding learning from Q-A, GPT-3 is trained on a massive dataset of text, and it learns patterns and relationships between concepts from this data. It can generate text that is semantically meaningful and coherent, but it does not have the capability to learn new information from Q-A sessions and use it in future queries. However, OpenAI has developed another model called DALL-E, which uses GPT-3 and it is capable of learning from Q-A sessions and use it in future queries.

ぼく:

Is ChatGPT superior to the Google search? Previously people used Google to search for their questions. Now a days, ChatGPT can answer to those questions. What are pros and cons of ChatGPT over the Google search?

ChatGPT:

ChatGPT and Google search are different technologies with different capabilities and strengths.

Google search is a powerful web search engine that can quickly find relevant information from a vast amount of web pages and documents. It uses complex algorithms to rank and sort search results based on relevance, popularity, and other factors. Google search is very good at providing factual information and is an excellent tool for researching a wide range of topics.

ChatGPT, on the other hand, is a natural language processing model that can generate human-like text. It is trained on a large dataset of text and uses this knowledge to understand and respond to natural language input. ChatGPT can generate text that is more coherent and semantically meaningful than a simple information retrieval engine like Google search. ChatGPT can also be used to generate text that is more engaging and human-like, such as in chatbots and virtual assistants.

One of the main advantages of ChatGPT over Google search is its ability to understand and respond to natural language input in a more human-like way. ChatGPT can also generate text that is more coherent and semantically meaningful, which can be useful in many applications. However, Google search is better at providing factual information and searching for specific pieces of information.

Another disadvantage of ChatGPT is that it doesn't have the ability to retrieve information from the web, it can only generate text based on the patterns it has learned from the training data. That's why it's not a replacement for a web search engine like Google but it can be used as an additional tool to help people to find the information they are looking for.

In summary, ChatGPT and Google search have different strengths and capabilities. While Google search is better at providing factual information, ChatGPT is better at understanding and responding to natural language input in a more human-like way.

ぼく:

Why don't ChatGPT refer to Google search in the generation of the conversation? Google Assistant has such a function. Is the reason due to the fact that OpenAI is funded by Google?

ChatGPT:

ChatGPT is a language model that generates text based on the patterns it has learned from the training data. While it can understand and respond to natural language input in a human-like way, it does not have the capability to access external sources of information like Google search.

Google Assistant, on the other hand, is a virtual assistant that can access a wide range of information and services through the internet, including Google search. Google Assistant can use this information to provide more accurate and relevant responses to user queries.

The reason ChatGPT does not refer to Google search during the generation of the conversation is likely because it was not designed or trained to do so. Instead, it was designed to generate text based on the patterns it has learned from the training data, and it does not have the capability to access external sources of information.

It's worth noting that OpenAI and Google are separate organizations, even though Google is an investor in OpenAI, this doesn't necessarily mean that the two companies work together on their products and services. OpenAI has its own development team, goals and roadmap and they are independent from Google.

ぼく:

I am going to post this conversation with ChatGPT in the anonymous diary of Hatena co. What should I do for attracting people to get many bookmarks?

ChatGPT:

There are several things you can do to attract people and increase the chances of your conversation with ChatGPT getting many bookmarks on Hatena diary. Some suggestions include:

1. Make sure your conversation is well-written and easy to understand. Use clear and concise language, and consider formatting your text in a way that makes it easy to read.

2. Use relevant keywords and hashtags in your diary entry. This can help make your conversation more discoverable to people searching for related topics on Hatena diary.

3. Include images or videos in your diary entry. This can make your conversation more visually appealing and can help attract more readers.

4. Share your diary entry on social media or other platforms. This can help increase the visibility of your conversation and attract more readers.

5. Encourage readers to share their thoughts and opinions on your conversation by including a call to action or a question at the end of your diary entry.

6. Finally, you can also try to participate in the conversation on Hatena diary, by answering the questions, responding to the comments, and engaging with your readers.

It's important to remember that getting many bookmarks on a diary is not easy and it can take time and effort to build an audience. But by following these tips and being consistent with your diary entry, you will increase the chances of attracting more readers and getting more bookmarks.

ぼく:

Thank you. By the way, what is my name?

ChatGPT:

You've mentioned your name is Masuda.

2023-01-16

anond:20230116021757

I’m Japanese. I also speak English a little.

To my knowledge, a common basic assumption under the probabilistic modeling of the data or the relationship between the data is to deal with the input X and the output Y. Most of the probabilistic models esp. machine learning models only consider these two variables.

Regression models treat the maps from X to Y. In the sense of probabilistic modeling, it is about P(Y|X). In this setting, X is seen as the “user-defined” deterministic variable. On the other hand, generative modeling treat both X and Y probabilistically, say P(Y,X). With P(Y,X), we can “generate” data (X,Y) by sampling from it.

2023-01-09

はてブ総合カテゴリの新着一覧もフィルターかかってね?

1桁user増田が入ってて2桁のが排除されてたりする

2022-12-16

anond:20221215185242

ずいぶん古い増田しかも消えてる)をファックマしたくなったのかよく分からないけど、一度でもブクマされたらそのタイミングで「sort=eid」の一覧に記録される。

「同時期にブックマークされた記事」を見ると、「[B!] 昔は逆に女は出産して育児して介護する仕事しかやらせてもらえんかったか..」がある。

これは2016/03/06にブクマされているので、初めてブクマされたのはこのタイミング

まり、この増田は以前ブクマされていたが、ブクマを消したかブクマカが消えたかして 0 user になっていたものだと思う。

からブクマ(見た目はファックマ)しても直近の一覧には掲載されない。もちろんずっと遡っていけば出ているはず。

2022-11-27

検索結果の「ブックマーク数」条件

なんで

の5択なんだよ。

3と50で差がありすぎだろ。

比をとると3倍、13.3倍、2倍、5倍

一個だけおかしいだろが。

2022-11-22

anond:20221122115549

そういうのは任意個持てる方がいいだろうと思って、別テーブル管理する設計提案したら

「いや紐付けが面倒になるからuserテーブルにsesshu1, sesshu2, sesshu3(例)のカラムを持たせて」

って元請リーダーに直されたことならある

2022-11-14

増田の新着ヤバくねーか

userすらついてない増田ゴロゴロしてる

というか煽りとかアンケートしか伸びないのはどうなんか

2022-10-26

anond:20221026090440

うーんシチュエーションがよくわからんけど

あんまりそういう複数単語からなる変数命名自体しないなあ

Userってクラスか型作って、それにpermissionってboolean用意して、それをインターフェース使って関数に渡すんじゃ駄目なの?

追記

ごめんこれクソリプかもしんない

2022-10-19

HUMANAI比較し続けていくうちに今や人間の方が機械に近いことが分かった

正確に言うと「欲望よりも理屈を拠り所にして絵を描く事が多い」って感じかな。

AIの絵は呪文を唱えた人間の「こういう絵が欲しいんです!細部はどうでもいいからそれっぽいのをくれ!」って欲望に忠実なんだよ。

粗悪な材料も含まれてるけどより強くトリップ出来る合成ドラッグみたいな(まあ俺はタバコも吸ったことがない薬物エアプなんだが)。

対して人間はまず技術ありきというか、「自分が描けないような絵は目指さない」がまず前提にある感じ。

というよりも「目指そうとして失敗した絵は破り捨てる」が正しいのかも知れない。

超超初心者場合ものすごい無茶な挑戦をして失敗した結果を「でもやろうとはしたんです><」で堂々とアップするけど、ブクマUSER100人ぐらい出せるレベルになるとそういった失敗作は人に見せないようになる傾向があるっぽい?




あーすまん俺のレス乞食AI暴走したようだ。

人間に戻った俺は理性を取り戻したので、何故俺の脳に潜む自動手記がこういう勘違いをしたのかを解説する。

そもそも最大の違いとして「AI絵師自分に手直しを出来ないレベルの絵をアップするが、人力絵師自分の絵に対して適切に手直しが出来る」という部分がある。

AI絵師場合は多少の粗があったとしてそれを修正するためにもう一度ガチャを引き直すのは割に合わないけど、そこまでを人力で描いていた人間なら手直しの労力が完成品のクオリティに見合うので手直しを実行するんだ。

ただこれは現状のAIが「個別の箇所に対して画風を維持したまま小さく手直しを行う」という指示を出せないことが原因なので今後解決されていく可能性はある。

この話を聞くと「一部を削ってから残りを補わせるガチャを引けば良いのでは?」と考えるかもしれないが、それをやると人間複雑骨折をしていくし風景ドンドンカオスになって所謂AIらしさ」に溢れた絵が誕生する。

「描かれた人間背骨を捻じ曲げないようにして制服の左右で色が違うのを解決しろ」みたいな命令が今のAIだと処理しきれないんだな。

そもそもこの問題が何故起こるかって言うと、やっぱ究極の所「AIってのはパクったものキメラに過ぎないから」なんだよ。

これは初期の頃によくあった勘違いに近い間違いを再び起こしてるように聞こえるかもしれないけど、どうあっても根本的な所でAIってのはキメラしか作れないんだな。

100個のカレーを混ぜて一つのカレーを作るような例えがたまにされるが、その喩えに乗っかるなら「いくつも混ぜたせいで生まれた雑味を取りたい」って願いを解決しきれないんだ。

レシピを把握した上で人間が作るならどの肯定でどういった雑味が生まれるのかを逆算して対処していけるけど、AI特有の「近い物を無数に混ぜあった結果として完全じゃなさ」は無理なんだわ。

分数の割り算を普通電卓でやろうとするといつの間にか小数点がいくつも並んで最終結果がちゃんとした数字にならないだろ?

あい状態がどこかで起こってしまう。

それに対して近似値を把握している人間不要な部分の誤差を取り除けるけど、本当にただ電卓に頼るしかないならどう計算し直せば良いのかも分からいから手の施しようがない。

まあこれが意味してるのは「本当に計算ができる人間が近似値を大雑把に出力させて後から手直しをするのに使うならAIは最強の武器になる」ってことだ。

まさに計算が出来る人間電卓関係なわけだなAI絵師関係もまた。

そしてAI絵師と人力絵師の違いを見抜ける人間は、電卓に無理な計算をさせたときに出る円周率の如き不規則小数点の羅列のようなパターンを把握することで人間AIを見分けているってことになるな。

ただAIを使いこなしてる人間ガチャを何度も引いている人間はこの誤差をドンドンマシにしていってるので、絵を見るときに細かい所に気づけない人間、「審美眼有効桁数が小さい人間」を騙し続けているんだな。

2022-10-16

anond:20221016145434

(In my mind) Celia has completely surpassed Daso Edit

Made in Japan has increased

First of all, Japanese-made goods are now clearly marked with "Made in Japan" tags.

This is probably an improvement over the past year or two. Based on user feedback, the company has been promoting Japanese products.

Good Japanese-made kitchen tools account for half of the products.

We don't modify our best-selling products.

My favorite Tupperware has been a best-seller for more than 5 years, and I have not changed the design at all.

In other words, I get the impression that this is a steady company that does not change its best-selling products at all, but improves them one millimeter at a time.

There is a sense of progress.

Even in 2022, many of DASO's products are still made in China, and there is little sense of progress.

When I visit the sales floor, the atmosphere is much the same as it was 10 years ago.

Celia seems to be getting more upscale every year. Without changing the price.

I want to support places where I can feel this kind of corporate effort.

Celia has completely surpassed Dasoh in my opinion.

Summary

What are you saying to a product that's 100 yen a pop? Are you a poor person?

But in fact, the quality of Japanese-made Tupperware and chopsticks is so good that you would not believe they are 100 yen.

Translated with www.DeepL.com/Translator (free version)

NovelAIが重すぎるからローカル環境にNAI環境を構築する(2022年10月16日版)(追記あり)

せっかく課金したのにユーザが増えまくっているのか滅茶苦茶重くなっていて最悪。

から流出したモデルを使ってローカルでNAI環境を構築する。

ネットには情報もだいぶ転がってるけど陳腐化した情報があまりに多いため増田にまとめることにした。

しかたらこ記事もすでに陳腐化しているかもしれないが…単純に間違ってたらトラバで教えてほしい。

もちろん自己責任。この記事を見て導入した結果何かあっても増田は何も保証しない。

英語がわかる人はこっちを見た方が早いと思う。今は導入RTAができるくらい導入は楽になっている。

https://rentry.org/nai-speedrun

推奨環境

VRAMが2GB以上あるNVIDIA製のグラフィックボードがあればローカル環境を構築できる。

GPU世代はGTX700シリーズ以降。なので一昔前のミドル級ボードでも動作するらしい。

IntelオンボードGPUでも実行する方法があるらしい(stable_diffusion.openvino)が今回は割愛する。自分で探してね。

その他の推奨環境は以下の通り。

対応OSWindows7以上(と言うがM1Macでも動作する方法があるとかなんとか)

必要な空きストレージ容量:20GB以上

インメモリ:16GB以上(VRAMもたくさん必要だが起動時にメインメモリも大量に食う。WebUI起動時にタスクマネージャを見ているとよくわかる)

スマホしか持ってないような人やこういうのがよくわからない人はNovelAIを使った方が良いと思う。

今は重いけど、きっとそのうちみんな飽きてサーバも軽くなるかもしれないし。

(追記)NovelAIリソースを確保してサーバが軽くなったかリスクを背負ってまで導入しなくても良いか

手順1:PythonGitを導入する

(追記)Pythonは当然3系。最新の奴を入れれば問題無い。

導入方法はいちいち書かないけど、「python --version」や「git -v」で

正常にバージョン情報が出る(パスがきちんと通っている)ことはちゃん確認しよう。

手順2:Stable Diffusion web UI(AUTOMATIC1111)を導入する

Stable Diffusion web UIはStable Diffusionやそれをベースとした画像生成AIを利用するためのフロントエンド

その中でも特に開発が活発でデファクトスタンダードとなっているのがAUTOMATIC1111版だ。

導入したい適当ディレクトリに対してPowerShellなどで

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

とやってやれば必要ファイルの導入が行われる。

なお、AUTOMATIC1111版は数時間単位コミットが行われるから

定期的に「git pull origin master」で更新しよう。

手順3:BitTorrent流出モデルダウンロードする

クライアントはqBitTorrentが一番楽だと思う。

ここにはさすがにmagnetリンクは書かないか各自ググって欲しい。

結構誤解されがちなことだが流出データ50GBを全部ダウンロードする必要は無い。

必要ファイルはanimefull-final-prunedディレクトリの中身とanimevae.ptから5GBちょっとくらいなんじゃないかな。

もし余裕があるならmoduleディレクトリの中身もダウンロードすればいいけど、ぶっちゃけ必要無いんじゃないか

手順4:ダウンロードした各ファイルリネーム・移動

まずはanimefull-final-prunedの中身のファイルリネーム

model.ckpt」を「animefinal-full-pruned.ckpt」のようなわかりやす名前にして、

「animevae.pt」を例えば「animefinal-full-pruned.vae.pt」のような拡張子以外は同じファイル名にする。

WebUI起動フォルダ配下の\models\Stable-diffusionリネームしたファイルを移動させれば配置はOK

ちなみにmoduleディレクトリの中身は\models\hypernetworksに移動させて使う。

それらのファイルを設定で適用させると画風が結構変わるがNovelAI再現とは関係無いみたいだ。

(追記)moduleディレクトリの中身の.ptファイルはhypernetworksという技術によって画風などを学習したものらしい。

すでに複数イラストレーターの画風を学習したptファイル作成されており議論を呼んでいる。

手順5:webui-user.batの中身に設定を追加する

自分グラボのVRAMが4GB未満の場合は「set COMMANDLINE_ARGS=」の後に

4GB未満の場合は「--medvram」、2GB未満の場合は「--lowvram」とパラメータを追加しておこう。

自分の持ってるグラボのVRAMがわからないときGPU-Zなどで調べよう。

またGTX1600系固有のバグ(単色の画像が出力される)があるらしいので

その場合は「--no-half-vae」もしくは「--no-half」や「--precision full」とパラメータを追加。

ちなみにパラメータに「--xformers」を追加してxformersを導入・使用すると

消費VRAMが減って画像生成処理時間も短縮されるので是非導入しよう。

画像からdanbooruタグAI調査するdeepdanbooruを利用する場合は「--deepdanbooru」を追加。

これらの設定は同時に複数適用させることもできる。例えば

set COMMANDLINE_ARGS=--medvram --xformers --deepdanbooru

のようになる。

手順6:webui-user.bat起動、設定変更

ターミナルPowerShellなどでwebui-user.batを起動しwebUIの初期導入と起動を行う。

過去には手動でCUDA等を導入する必要があったが、現在はこの初期導入でだいたいの導入が行われる。

ずいぶん楽にはなったがその分初期導入の時間結構長い。10分~20分くらいかかるかもしれない。

途中で導入処理がエラーで止まってしまった場合管理者権限で実行するなどして対応して欲しい。

起動ができたらSettingで以下の設定を変更してNovelAIに近づける。

Stop At last layers of CLIP modelを2に、

Eta noise seed deltaを31337にする。

これで設定は完了

おまけ:アスカテスト

設定を合わせて完全にNovelAIと同じ内容になったのかを確認するテストがある。

出力結果から海外じゃHallo Asuka Testなんて呼ばれている。

これは初期SEEDをはじめとする設定内容が完全に一致していれば同じ出力結果を得られる仕組みを利用している。

プロンプトの内容:masterpiece, best quality, masterpiece, asuka langley sitting cross legged on a chair

ネガティブプロンプトの内容:lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts,signature, watermark, username, blurry, artist name

サンプリングステップ数:28

サンプリング形式:Euler

CFG Scale(プロンプトの強度):12

初期Seed2870305590

この内容で見事下の画像と全く同じ画像が出力されれば合格だ。

https://i.imgur.com/Bfl5qJB.jpg

なお、このテストはAUTOMATIC1111のバージョンやxformersの適用状態によっては微妙に違う画像が出力されることがあるらしい。

xformersを適用させている増田環境だと確かに二つ並べると間違い探しレベルの違いがあった。

正直このテストクリアしなくても十分だと個人的には思う。

おまけ2:その他便利になる設定や拡張機能

「Booru tag autocompletion for A1111」を導入すればNovelAIのように自動danbooruタグを保管してくれる。

注意

画像生成AIモデルはStable DiffusionOSSのため派生結構多い。

自前で追加学習もできるため自前で学習した追加AIモデル4chanのような掲示板などで共有する人もいるらしい。

しかしそのようなモデルの中にウィルスのような悪意のある動作を行うものもあるらしい。

FBIペドフィリア一網打尽にするためにIPアドレスなどの個人情報を抜き出す動作を行うロリ特化AIモデル掲示板で配布していて

しかもそれには本物の児童ポルノ教師データとして使われている…などという都市伝説的な話が今界隈を賑わせている。

それが本当の話かどうかはわからないが、とにかく変なところからモデルダウンロードするのは危険なのでやめよう。

自己矛盾溢れる注意喚起かもしれないが…

2022-10-07

Why are all pc created for Eng user?

Switching between English and Japanese for document pain to me.

and VSCode doesn't change to Ja,,,

should I use eng all time?

2022-10-06

anond:20221006214750

そうなんだ。

ちょっと調べたわ。

本筋と関係ないけど、戻り値

If MultiSelect is True, the return value is an array of the selected file names (even if only one file name is selected). Returns False if the user cancels the dialog box.

https://learn.microsoft.com/en-us/office/vba/api/excel.application.getopenfilename

ダイアログキャンセルするとFalseが返ってくるからIsArray()とかでガードした方が良いかもな。

あとは、用途に合うようならFor文じゃなくてFor Each文使うのも良いかもね。

2022-09-30

anond:20220930002820

え、ごめんuserのとこってどこ?

増田の画面の最下部の自分ユーザIDではないよね?(押したら自分投稿一覧しか出なかった)

2022-09-25

はてな匿名ダイアリーサジェスト

はてな匿名ダイアリー 名作

TOPに表示される検索結果

最近の人気記事 - はてな匿名ダイアリー - はてラボ

個人的な名作

自走式彼女https://anond.hatelabo.jp/20170907163356

会社の壁掛け時計https://anond.hatelabo.jp/20170905110704

はてな匿名ダイアリー 人気

TOPに表示される検索結果

最近の人気記事 - はてな匿名ダイアリー - はてラボ

名作と変わらない結果に。ただTOP以降の結果は、名作は増田文学、人気はブクマ数等が表示される

はてな匿名ダイアリー 気持ち悪い

TOPに表示される検索結果

匿名ダイアリーって気持ち悪い人が多すぎる

気持ち悪いってなんだ!気持ち悪くねーだろ!いや、気持ちいか増田気持ち悪いってよ!

はてな匿名ダイアリー トレパク

TOPに表示される検索結果

トレス - はてな匿名ダイアリー - はてラボ

これはなんで??

はてな匿名ダイアリー なんj

TOPに表示される検索結果

なんJ - はてな匿名ダイアリー - はてラボ

TOPの次に表示される検索結果が「はてな匿名ダイアリーかいなんJ以下の場所 - 5ちゃんねる」で笑った。

はてな匿名ダイアリー 増田

TOPに表示される検索結果

はてな匿名ダイアリー

これはわかる。自分も始めたばかりの時すぐ検索した。ちなみに次の検索結果はねとらぼの「増田さんって誰? ネットでよく見る謎の人物増田」の正体」

はてな匿名ダイアリー 面白い

TOPに表示される検索結果

面白い - はてな匿名ダイアリー - はてラボ

これTOPの次が「【上手すぎる…】Togetter再現したはてな匿名ダイアリーが上手すぎると話題に「面白い」「お上手」「テンプレ」」なんだけど、元増田は消されていて見えなかった。めちゃくちゃ気になる

はてな匿名ダイアリー アプリ

TOPに表示される検索結果

「masd」をApp Storeで - Apple

masdという増田を見る為のアプリが本当にあって笑った。なんて不毛アプリなんだと思っていたら、

はてな匿名ダイアリーを読むための非公式アプリです。

はてな匿名ダイアリー株式会社はてな運営するWebサービスです。

ダイアリーコメントを書いたり読んだりして不毛時間を過ごせます。」

アプリ説明文にも書かれていて笑った

以上

2022-08-14

はてなブックマークブクマ数が1だと単数系になってる

ブックマーク数が2以上なら「◯users」って複数形なんだけど、

ブックマーク数が1なら、「◯user」って単数形になってる。

かいちゃんと作ってるんだな。

2022-08-01

anond:20220731183342

自動安価をつけて返信するプログラムでもこんなに長く複雑になる(一部抜粋) 

/**************************************

以下のCSV_DIR, FILE_PATHS, SETTINGSを書き換えてね。 <h3>o- *************************************/</h3>

//CSVファイルが置かれてるディレクトリパス投稿前にエラー出たら大体ここの設定ミス。 例:"C:\\Users\\sakuraimasahiro\\Documents\\iMacros\\Macros\\rentou\\";

const CSV_DIR =

'C:\\Users\\USER\\Desktop\\iMacros\\Macros\\rentou\\';

//ファイルパスCSV絶対パスで、拡張子必要。iimは相対パスでよく、拡張子不要

const FILE_PATHS = {

//投稿文が書かれたCSVファイル

textCsv: CSV_DIR + 'textNoAnker.csv',

//レス投稿文が書かれたCSV。通常とレス用で分けないなら同じファイルを使えばいい。

replyTextCsv: CSV_DIR + 'textReply.csv',

};

const SETTINGS = {

//投稿後の基本待ち時間

baseWaitTime: 5,

//baseWaitTime+0~waitTimeRange(ランダム)だけ待つ

waitTimeRange: 5,

//連投しすぎだと忠告された場合に処理を一時停止させる時間(秒)

waitTimeForAvoidingPunishment: 60 * 30,

//メール

mail: 'sage',

//名前設定

nameSettings: {

//名前名無しなら''。

name: '',

//以下、偽装ワッチョイ設定。浪人ワッチョイを非表示にしてるときだけtrueにしてね。

//妙なニックネーム(ワッチョイ、アウアウウーなど)をランダムで決めて付加するかどうか。true=付加する。false=付加しない。

nickname: false,

//妙なニックネームの後に付く8桁の文字列ランダムで決めて付加するかどうか。

korokoro: false,

//IPランダムで決めて付加するかどうか。

ip: false,

//地域ランダムで決めて付加するかどうか。

area: false,

},

postSettings: {

//アンカー無し投稿をするならtrue。しないならfalse。noAnkerPostかreplyPostのどちらかはtrueにすること(両方trueでもOK)。

noAnkerPost: false,

//アンカー付き投稿(返信)をするならtrue。しないならfalse。もしnoAnkerPostとreplyPostの両方がtrue場合投稿は返信が優先され、返信対象が見つからなくなったらアンカー無し投稿をする。

replyPost: true,

//最初に取得するアンカー無し投稿CSVファイルの行番号。もし返信用と同じCSVファイルを使うなら-1と入力

noAnkerPostTextCsvStartRow: 1,

//最初に取得する返信用投稿CSVファイルの行番号。もしアンカー無しと同じCSVファイルを使うなら-1と入力

replyPostTextCsvStartRow: 1,

//テキストCSV/返信用テキストCSVの取得行が最終行に達したら最初の行まで戻るかどうか。true=戻る。false=マクロ終了。

textCsvLoop: true,

//返信する場合、これより小さなレス番には返信しない。返信を投稿すると、この数値は前回の返信先のレス番に更新される。

minAnker: 895,

//返信する場合名前に以下の文字列を含む投稿アンカーをつけて返信する(ワッチョイやIPなど名前フィールドにあるものならなんでも可)。配列複数指定可能指定無しなら空配列([])。filterNamesとfilterNamesNotIncluded共に無指定ならレス番1から順に返信していく(minAnkerが設定されてればそこから順に)。以下のfilter系は全て併用可能

filterNames: [],

//↑とは逆に、名前に以下の文字列を含まない投稿アンカーをつけて返信する。↑と併用も可能

filterNamesNotIncluded: [],

//返信する場合、本文に以下の文字列を含む投稿アンカーをつけて返信する。

filterText: ['自演かな', '自演わらわら', 'スクリプト使うの', '安価ガバ', '>>660', '自演擁護', '最後' ,'あいうえお', 'かきくけこ', 'さしすせそ', 'なにぬねの', 'はひふへほ', 'まみむめも', 'やいゆえよ', 'やゆよ', 'らりるれろ', 'わいうえを', 'わをん', 'わいうえをん'],

},

//自分IPアドレス確認VPNとかでIPを変更してマクロを動かしてるとき、突然VPN作動しなくなってIPが元に戻ったときマクロを止めるためのもの

ipSettings: {

//自分現在IPアドレス確認をする。

checkIp: true,

//以下の文字列自分現在IPアドレスに含まれている場合マクロを一時停止する。基本的自分の本当のIPアドレス入力

avoidTheIp: '133.206.99.224',

},

//浪人設定。最後動作確認したのは5年くらい前で、今も同じように動作するかは、浪人を持ってないか確認できずわからない。

roninSettings: {

//浪人ログインしてるかどうかをチェックするかどうか。trueらするfalseならしない。trueにしていてもし浪人ログインしていないことを確認したらログインしにいく。

checkLogin: false,

//浪人ログインメールアドレス

mailAdress: 'abc@def.com',

//浪人ログインパスワード

password: '1234',

},

//false: run()実行させず(デバッグ用)

run: true,

//true: 投稿処理だけしない デバッグ

skipPost: false,

};

/**************************************

設定箇所終わり。

書き込めない時の早見表 - 5ちゃんねるwiki

https://info.5ch.net/index.php/%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%81%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E6%97%A9%E8%A6%8B%E8%A1%A8 <h3>o- *************************************/</h3>

/**************************************

メモ

クラスフィールド宣言できない。

・NULL演算子(??)は使えない。論理積(&&)は使える。

オブジェクトの分割代入はできない。

・importはできない。 <h3>o- *************************************/</h3>

/**************************************

関数 <h3>o- *************************************/</h3>

/**

* ここから始まる。

*/

function run() {

//設定ミスがないか調べる。

checkSettings();

var _TextCsvCursors = new TextCsvCursors(

new TextCsvCursor(

SETTINGS.postSettings.noAnkerPostTextCsvStartRow > 0

? SETTINGS.postSettings.noAnkerPostTextCsvStartRow - 1

: SETTINGS.postSettings.noAnkerPostTextCsvStartRow,

FILE_PATHS.textCsv,

SETTINGS.postSettings.textCsvLoop,

),

new TextCsvCursor(

SETTINGS.postSettings.replyPostTextCsvStartRow > 0

? SETTINGS.postSettings.replyPostTextCsvStartRow - 1

: SETTINGS.postSettings.replyPostTextCsvStartRow,

FILE_PATHS.replyTextCsv,

SETTINGS.postSettings.textCsvLoop,

),

);

var _LoopStatuses = new LoopStatuses(0, SETTINGS.postSettings.minAnker);

const _MyPosterName = new MyPosterName({

name: SETTINGS.nameSettings.name,

});

//スレURL指定

const _ThreadUrl = openPromptThreadUrl();

//ループ

while (true) {

//IP確認する設定なら、それをする。

SETTINGS.ipSettings.checkIp && checkCurrentIpNotTheIp();

//スレを開く

openUrl(_ThreadUrl.fullUrlHttps());

//浪人ログインする設定なら、浪人ログインしているかどうかを確認し、していなければログインしにいく。

if (SETTINGS.roninSettings.checkLogin) {

if (!checkRoninLogin()) {

loginRonin();

continue;

}

}

//投稿に使うテキスト取得。

const p = (function () {

if (SETTINGS.postSettings.replyPost) {

//返信あり設定の場合。返信対象が無いか調べる。

const targetAnkerNumber = createPostDOMList()

.filterPostnumberHigher(_LoopStatuses.currentMinAnker())

.filterByPostername(SETTINGS.postSettings.filterNames)

.filterByPosternameNotIncluded(

SETTINGS.postSettings.filterNamesNotIncluded,

)

.filterByText(SETTINGS.postSettings.filterText)

.lowestPostNumber();

if (targetAnkerNumber !== null) {

//返信対象があったのでアンカー付き投稿文を作る。

const r = _TextCsvCursors.takeNextRowTextAsReply(targetAnkerNumber);

messageDisplay(`返信対象有り。アンカー先: ${targetAnkerNumber}`);

return {

...r,

updatedLoopStatuses:

_LoopStatuses.updateMinAnker(targetAnkerNumber),

};

}

}

if (SETTINGS.postSettings.noAnkerPost) {

//返信対象無し、或いは返信しない設定の場合アンカー無し投稿文を作る。

const r = _TextCsvCursors.takeNextRowTextAsNoAnker();

messageDisplay('返信対象無し。アンカー無し投稿。');

return {

...r,

updatedLoopStatuses: _LoopStatuses,

};

}

return null;

})();

if (p) {

//投稿

postThenCheckError(

_ThreadUrl.serverName(),

_MyPosterName.randomize({

nickname: SETTINGS.nameSettings.nickname,

korokoro: SETTINGS.nameSettings.korokoro,

ip: SETTINGS.nameSettings.ip,

area: SETTINGS.nameSettings.area,

}),

SETTINGS.mail,

p.text,

);

//_TextCsvCursorsと_LoopStatusesを更新

_TextCsvCursors = p.updatedTextCsvCursors;

_LoopStatuses = p.updatedLoopStatuses.incrementPostCount();

messageDisplay([

`投稿回数: ${_LoopStatuses.currentPostCount()}`,

`minAnker: ${_LoopStatuses.currentMinAnker()}`,

`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,

`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,

]);

} else {

messageDisplay([

`返信対象が現われるのを待機中...。`,

`投稿回数: ${_LoopStatuses.currentPostCount()}`,

`minAnker: ${_LoopStatuses.currentMinAnker()}`,

`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,

`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,

]);

}

//短時間で連投しまくると規制されるので一定時間待機。

wait(SETTINGS.baseWaitTime + randomRange(0, SETTINGS.waitTimeRange));

}

}

/**

* 投稿処理と投稿結果を見てリトライしたりマクロ終了したり。

* @param {string} serverName サーバー

* @param {MyPosterName} _MyPosterName

* @param {string} postMail メール

* @param {MyText} _MyText

* @param {number} retryTimes

* @returns {void}}

*/

function postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes = 0,

) {

const r =

retryTimes === 0

? new ValuesOfPost(serverName, _MyPosterName, postMail, _MyText).post(

postTo5chTread,

postConfirm,

)

: new ValuesOfPost(

serverName,

_MyPosterName,

postMail,

_MyText,

).postSubstring(retryTimes, postTo5chTread, postConfirm);

if (r) {

back();

return;

}

//エラーページに飛ばされた。エラー情報取得。

wait(7);

const error = createPostErrorMessage().analyze();

messageDisplay(error.message);

if (error.order === 'KILL') {

kill();

} else if (error.order === 'SKIP') {

return;

} else if (error.order === 'TRUNCATE') {

back();

return postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes + 1,

);

} else if (error.order === 'WAIT') {

wait(SETTINGS.waitTimeForAvoidingPunishment);

return postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes,

);

} else if (error.order === 'LOGIN') {

//動作未確認

return postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes,

);

}

return;

}

/**

* 現在IPアドレスに、SETTINGS.ipSettings.avoidTheIpの値が含まれていないことを確認する。含まれていたらマクロを一時停止。

* @returns

*/

function checkCurrentIpNotTheIp() {

//IP確認ページへ飛ぶ

openUrl('https://www.cman.jp/network/support/go_access.cgi');

const _IpAdress = createIpAdressFromCMan();

if (_IpAdress.includes(SETTINGS.ipSettings.avoidTheIp)) {

pause('現在IP指定した値が含まれていることを確認。');

//ポーズ解除したならもう一度確認しに。

checkCurrentIpNotTheIp();

}

return;

}

/**

* 設定に致命的な問題が無いか検査

* @returns

*/

function checkSettings() {

if (

SETTINGS.postSettings.noAnkerPost === false &&

SETTINGS.postSettings.replyPost === false

) {

return kill('設定エラー。noAnkerPostとreplyPost両方ともfalseになってる。');

}

if (

SETTINGS.postSettings.noAnkerPostTextCsvStartRow < 0 &&

SETTINGS.postSettings.replyPostTextCsvStartRow < 0

) {

return kill(

'設定エラー。noAnkerPostTextCsvStartRowとreplyPostTextCsvStartRow両方とも-1になってる。',

);

}

if (

SETTINGS.postSettings.noAnkerPostTextCsvStartRow === 0 ||

SETTINGS.postSettings.replyPostTextCsvStartRow === 0

) {

return kill(

'設定エラー。noAnkerPostTextCsvStartRow/replyPostTextCsvStartRowの初期値は-1或いは1以上で。',

);

}

}

/**

* 入力フォームを表示して入力されたスレURLを受け取る。

* @returns {ThreadUrl}

*/

function openPromptThreadUrl() {

const url = prompt('スレURL入力');

return new ThreadUrl(url);

}

/**

* 開いてるスレレス全て読み取ってPostListインスタンスを作って返す。

* 重すぎるので使うのやめ。どうやらインスタンスの大量生成が原因な模様。

* createPostDOMListを使う。

* @returns {PostList}

*/

function createPostList() {

const posts = window.document.getElementsByClassName('post');

return new PostList(Array.from(posts).map((e) => new Post(e)));

}

/**

* 開いてるスレレス全て取得してPostDOMListに格納して返す。

* @returns

*/

function createPostDOMList() {

const posts = window.document.getElementsByClassName('post');

var arrPostDOMList = [];

for (let index = 0; index < posts.length; index++) {

//HTMLCollectionからElementを1つずつ抽出して配列に。

arrPostDOMList.push(posts.item(index));

}

return new PostDOMList(arrPostDOMList);

}

/**

* 開いてる投稿結果画面に表示されてるエラーを読み取ってPostErrorMessageインスタンスを作って返す。

* @returns {PostErrorMessage}

*/

function createPostErrorMessage() {

return new PostErrorMessage(

window.document

.g Permalink | 記事への反応(0) | 15:40

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