はてなキーワード: matchとは
自動で安価をつけて返信するプログラムでもこんなに長く複雑になる(一部抜粋)
/**************************************
以下のCSV_DIR, FILE_PATHS, SETTINGSを書き換えてね。 <h3>o- *************************************/</h3>
//CSVファイルが置かれてるディレクトリのパス。投稿前にエラー出たら大体ここの設定ミス。 例:"C:\\Users\\sakuraimasahiro\\Documents\\iMacros\\Macros\\rentou\\";
'C:\\Users\\USER\\Desktop\\iMacros\\Macros\\rentou\\';
//ファイルのパス。CSVは絶対パスで、拡張子も必要。iimは相対パスでよく、拡張子不要。
const FILE_PATHS = {
textCsv: CSV_DIR + 'textNoAnker.csv',
//レス用投稿文が書かれたCSV。通常とレス用で分けないなら同じファイルを使えばいい。
replyTextCsv: CSV_DIR + 'textReply.csv',
};
baseWaitTime: 5,
//baseWaitTime+0~waitTimeRange(ランダム)だけ待つ
waitTimeRange: 5,
//連投しすぎだと忠告された場合に処理を一時停止させる時間(秒)
waitTimeForAvoidingPunishment: 60 * 30,
//メール
mail: 'sage',
//名前設定
name: '',
//以下、偽装ワッチョイ設定。浪人でワッチョイを非表示にしてるときだけtrueにしてね。
//妙なニックネーム(ワッチョイ、アウアウウーなど)をランダムで決めて付加するかどうか。true=付加する。false=付加しない。
//妙なニックネームの後に付く8桁の文字列をランダムで決めて付加するかどうか。
},
//アンカー無し投稿をするならtrue。しないならfalse。noAnkerPostかreplyPostのどちらかはtrueにすること(両方trueでもOK)。
//アンカー付き投稿(返信)をするならtrue。しないならfalse。もしnoAnkerPostとreplyPostの両方がtrueの場合、投稿は返信が優先され、返信対象が見つからなくなったらアンカー無し投稿をする。
//最初に取得するアンカー無し投稿文CSVファイルの行番号。もし返信用と同じCSVファイルを使うなら-1と入力。
noAnkerPostTextCsvStartRow: 1,
//最初に取得する返信用投稿文CSVファイルの行番号。もしアンカー無しと同じCSVファイルを使うなら-1と入力。
//テキストCSV/返信用テキストCSVの取得行が最終行に達したら最初の行まで戻るかどうか。true=戻る。false=マクロ終了。
//返信する場合、これより小さなレス番には返信しない。返信を投稿すると、この数値は前回の返信先のレス番に更新される。
minAnker: 895,
//返信する場合、名前に以下の文字列を含む投稿にアンカーをつけて返信する(ワッチョイやIPなど名前フィールドにあるものならなんでも可)。配列で複数指定可能。指定無しなら空配列([])。filterNamesとfilterNamesNotIncluded共に無指定ならレス番1から順に返信していく(minAnkerが設定されてればそこから順に)。以下のfilter系は全て併用可能。
//↑とは逆に、名前に以下の文字列を含まない投稿にアンカーをつけて返信する。↑と併用も可能。
//返信する場合、本文に以下の文字列を含む投稿にアンカーをつけて返信する。
filterText: ['自演かな', '自演わらわら', 'スクリプト使うの', '安価ガバ', '>>660', '自演で擁護', '最後' ,'あいうえお', 'かきくけこ', 'さしすせそ', 'なにぬねの', 'はひふへほ', 'まみむめも', 'やいゆえよ', 'やゆよ', 'らりるれろ', 'わいうえを', 'わをん', 'わいうえをん'],
},
//自分のIPアドレスの確認。VPNとかでIPを変更してマクロを動かしてるとき、突然VPNが作動しなくなってIPが元に戻ったときにマクロを止めるためのもの。
//以下の文字列が自分の現在のIPアドレスに含まれている場合、マクロを一時停止する。基本的に自分の本当のIPアドレスを入力。
},
//浪人設定。最後に動作を確認したのは5年くらい前で、今も同じように動作するかは、浪人を持ってないから確認できずわからない。
//浪人にログインしてるかどうかをチェックするかどうか。trueならする。falseならしない。trueにしていてもし浪人にログインしていないことを確認したらログインしにいく。
password: '1234',
},
};
/**************************************
設定箇所終わり。
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>
/**
* ここから始まる。
*/
checkSettings();
var _TextCsvCursors = new TextCsvCursors(
SETTINGS.postSettings.noAnkerPostTextCsvStartRow > 0
? SETTINGS.postSettings.noAnkerPostTextCsvStartRow - 1
: SETTINGS.postSettings.noAnkerPostTextCsvStartRow,
SETTINGS.postSettings.textCsvLoop,
),
SETTINGS.postSettings.replyPostTextCsvStartRow > 0
? SETTINGS.postSettings.replyPostTextCsvStartRow - 1
: SETTINGS.postSettings.replyPostTextCsvStartRow,
SETTINGS.postSettings.textCsvLoop,
),
);
var _LoopStatuses = new LoopStatuses(0, SETTINGS.postSettings.minAnker);
const _MyPosterName = new MyPosterName({
name: SETTINGS.nameSettings.name,
});
const _ThreadUrl = openPromptThreadUrl();
//ループ
while (true) {
SETTINGS.ipSettings.checkIp && checkCurrentIpNotTheIp();
//スレを開く
openUrl(_ThreadUrl.fullUrlHttps());
//浪人にログインする設定なら、浪人にログインしているかどうかを確認し、していなければログインしにいく。
if (SETTINGS.roninSettings.checkLogin) {
}
}
if (SETTINGS.postSettings.replyPost) {
const targetAnkerNumber = createPostDOMList()
.filterPostnumberHigher(_LoopStatuses.currentMinAnker())
.filterByPostername(SETTINGS.postSettings.filterNames)
.filterByPosternameNotIncluded(
SETTINGS.postSettings.filterNamesNotIncluded,
)
.filterByText(SETTINGS.postSettings.filterText)
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) {
//投稿。
nickname: SETTINGS.nameSettings.nickname,
korokoro: SETTINGS.nameSettings.korokoro,
area: SETTINGS.nameSettings.area,
}),
SETTINGS.mail,
p.text,
);
//_TextCsvCursorsと_LoopStatusesを更新。
_TextCsvCursors = p.updatedTextCsvCursors;
_LoopStatuses = p.updatedLoopStatuses.incrementPostCount();
`投稿回数: ${_LoopStatuses.currentPostCount()}`,
`minAnker: ${_LoopStatuses.currentMinAnker()}`,
`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,
`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,
]);
} else {
`返信対象が現われるのを待機中...。`,
`投稿回数: ${_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 メール
*/
serverName,
postMail,
_MyText,
retryTimes = 0,
) {
const r =
retryTimes === 0
? new ValuesOfPost(serverName, _MyPosterName, postMail, _MyText).post(
postTo5chTread,
)
serverName,
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();
serverName,
postMail,
_MyText,
retryTimes + 1,
);
} else if (error.order === 'WAIT') {
wait(SETTINGS.waitTimeForAvoidingPunishment);
serverName,
postMail,
_MyText,
retryTimes,
);
} else if (error.order === 'LOGIN') {
serverName,
postMail,
_MyText,
retryTimes,
);
}
return;
}
/**
* 現在のIPアドレスに、SETTINGS.ipSettings.avoidTheIpの値が含まれていないことを確認する。含まれていたらマクロを一時停止。
* @returns
*/
function checkCurrentIpNotTheIp() {
openUrl('https://www.cman.jp/network/support/go_access.cgi');
const _IpAdress = createIpAdressFromCMan();
if (_IpAdress.includes(SETTINGS.ipSettings.avoidTheIp)) {
pause('現在のIPに指定した値が含まれていることを確認。');
}
return;
}
/**
* @returns
*/
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を受け取る。
*/
function openPromptThreadUrl() {
const url = prompt('スレURLを入力');
}
/**
* 開いてるスレのレス全て読み取ってPostListインスタンスを作って返す。
* 重すぎるので使うのやめ。どうやらインスタンスの大量生成が原因な模様。
*/
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');
for (let index = 0; index < posts.length; index++) {
//HTMLCollectionからElementを1つずつ抽出して配列に。
arrPostDOMList.push(posts.item(index));
}
return new PostDOMList(arrPostDOMList);
}
/**
* 開いてる投稿結果画面に表示されてるエラーを読み取ってPostErrorMessageインスタンスを作って返す。
*/
function createPostErrorMessage() {
window.document
彼氏が浮気してたのでおしゃれに変身して見返しちゃお!みたいな感じの海外製ゲームがあって(Love fantasy〜 match and stories〜というもの)、その広告がエロくて最高なんだけど全然出てこない
なんかおっぱいを強調した秘書っぽい格好の女とビジネスマンの男がイチャイチャしてるのを彼女が目撃みたいな感じだったんだけどすんげーエロくてやばかった。拙者、オフィスでセックス大好き侍であるがゆえに……
アプリストアにもなし
自分はhome pinってゲームやっててこれが出たのでもうずっとhome pinやって探してるけど出てきてくれない
あああああのエロい女に合わせてくれえええええ
ニコニコプレミアムアワードのランキング、某んがすランキングになっていて鬱陶しいので、ふにん某を非表示にするスクリプトを書いた。
Tempermonkeyとかで使ってくれ。文字実体参照は適宜置き換えること。
// ==UserScript== // @name New Userscript // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author masuda // @match https://site.nicovideo.jp/premiumaward/* // @icon https://www.google.com/s2/favicons?sz=64&domain=nicovideo.jp // @grant none // ==/UserScript== const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); const blockList = [ "ふにんがす", "なのそん", "Among us", "Among Us", "アモアス", ]; (async function() { 'use strict'; await sleep(100); const list = document.querySelectorAll("li.game"); for (const elem of list) { const title = elem.getElementsByClassName("title")[0].innerText; if (blockList.some((word) => title.includes(word))) { elem.remove(); } } })();
https://www.youtube.com/watch?v=11akhGr3lJQ
こういうコメントがちゃんとあって安心したわ。(下のは若干わざとらしいが)
Kim King
5 日前
I'm a Chinese and most of us were ashamed of this match. Sorry to 木村翔!
李寻欢
5 日前
我是一个中国人,这场比赛在中国引起轩然大波,影响很坏,百分之九十以上的中国人都在骂玄武,我们感到很丢人,中国只有很下层的人还有反日情绪,很多有正确价值观的人都很佩服日本的文明礼貌,科技发达,很多很多地方值得我们去学习,我只是一个中国普普通通的人,但请允许我在这里说一声对不起,请木村翔和他的粉丝原谅。
しかしそんな人たちでも、なんらかのトリガーで臓器ぬいたり反則技つかう人間にコロっと変わってしまう、簡単に反社になってしまう。
金のためだったり、家族のためだったり。
いや競技と関係ない話を記事にしても意味ねーだろって話なんだが
あと発展のために記者会見義務にしている大会運営なんてあるの?
"グランドスラムのレギュレーションの核となる要素は、試合の結果がどうであれ、メディアと関わるプレーヤーの責任であり、スポーツ、ファン、そして自分自身のためにプレーヤーが負う責任です."
となっていてテニスの発展には触れてないみたいだけど。
But the Grand Slam leaders emphasized that the news media still played an important role.
“A core element of the Grand Slam regulations is the responsibility of the players to engage with the media, whatever the result of their match, a responsibility which players take for the benefit of the sport, the fans and for themselves,” their statement said.
https://www.nytimes.com/2021/05/30/sports/tennis/french-open-naomi-osaka-media.html
これだけ
(追記)
ド玄人
・RDBっぽく使うテクニックと勘違いしてる素人チラホラおるな
・PowerQueryはちょっとでかいデータ食わせるとすぐフリーズする、DAXもPBIに比べていまいち使いづらい。
・スピルを使いこなせる人かなぁ
・PowerQueryを使いこなせるやつが職場に1人いたらなあ。
・お前みたいなACCESSとEXCELの使い分けができない人間は迷惑
・まずはリスト形式で作成してピボットでマトリクス化するのが文明人
・Access使ったほうがいいのでは
・行列に貼り付けたデータ範囲からSQLで柔軟にデータ抜き出せるような技でもあるの?
・https://www.soumu.go.jp/main_content/000723697.pdf ←これをちゃんと理解しつつ実行できてるか、は結構重要。
・INDIRECT関数 rowやらmatchやら数値を返す系の関数をうまく扱えるようになると玄人感出せる
・テーブル化、シートが多いブックで参照が飛び交う場合は命名ルールをちゃんと整理するかCtrl+[ のショトカを活用するかしないと、ここで参照してるテーブルどのシートだっけ?が多発するぞい
ド素人
・テーブルとか言って、今あるデータを見映え加工してる帳票屋を自負すること自体がもうね。
・テーブル化という言葉を知らなかったから知られてみたら、普通にいつも使っている方法だった。GUIだとわざわざその動作の名前を知らなくても良いのが魅力ね。
・整然データになってるならテーブル化してるかしてないかは正直どうでもいい
・テーブル化は汎用性無くなるので嫌い。ピボットテーブルはもっと酷い。
・テーブル化を知った人々、それほどデータもないしょうもないリストまでテーブル化し始めるので、「おぉ、こいつは金槌を手に入れたのだな」って気持ちになる
・AXCELがどうしたって?
・エクセル・サーガ?
それは先週金曜日のことだった。
慌ててCOCOAを起動して確認するも、「陽性者との接触は確認されませんでした」との表示が。
新型コロナウィルス流行後、いわゆる三密に相当する施設は避けてきた。
買い物に行くときも、自家用車を利用してきた。新型コロナに感染するような覚えは全くない。
さっきの通知は何だったんだ?そういえば、COCOAはバグがいろいろ残っているというし…
急いでCOCOAの不具合について調べると、似たような現象に直面している人はいるらしい。
どうやら、携帯の設定項目をたどると、接触ログを記録したjsonファイルが書き出せるので、
そのログの中を検索し、Match Countという項目が0以外になっている箇所があれば濃厚接触があったという事らしい。
…残念ながらMatch Count :1となっている箇所を発見。陽性者と濃厚接触している。
それからが大変だ。
厚生労働省のCOCOAに関するQ & A の問23に、上記のような不具合が起きたら問い合わせしてほしいとの記載があったので、
状況を記載して、証拠となるjsonファイルを添付した確認メールを送付。
職場の規定でCOCOAに反応があった人は2週間の出社停止なので、すぐに会社に連絡を入れる。
同時に、陽性者との濃厚接触した日付がわからないので14日以内に会った人に注意喚起の連絡。
14日以内に会った人でCOCOAを入れていた人には、バグの存在とjsonファイルから確認する方法も説明。
今回はたまたま14日以内に会った人が全員職場関係のエンジニアだったので難なく説明できたが、
はあ、疲れた。感染拡大防止のためとはいえ、アプリのバグのせいで無駄な仕事が増える。
正常系のテストもまともにできていないであろうCOCOA開発元に対して若干の怒りを覚える。
さすがにこの完成度の低さはないだろうとネットで情報を収集していると、ずさんな開発体制(物理的に無理のあるリリース日程や、2つ動いていた開発プロジェクトの1本化など)であることが判明。
ちなみに、この不具合は今日現在の最新バージョン1.12でも改善されていないし、改善予定のアナウンスもない。
今時スマホゲームですら、ちょっとした不具合(例えば、アイテムの効果が正しく設定されていなかった等)に対しての修正予定を公開しているのに、
下手すりゃ人命にかかわるアプリがバグ自体を公にせず、修正予定も公開していないことに苛立ちを覚える。
そして日曜日。確認の問い合わせを送っていた厚生労働省から返信。
メールの内容の転載はやめてくれとの記載があったので、転記は控えるが、要旨を書くと
「ポップアップが出たのにアプリで接触履歴が確認できない場合はiOSまたはAndroidの設定から接触チェックの項目を確認してください」とのコピペのような文章。
まあ、サポートも問い合わせ殺到しているだろうし、返信遅れるのは仕方ないなと思っていたが、
きっちりログファイルまで送って濃厚接触していると思われるのだがどうでしょうかと聞いてこの返答はあまりにも人を馬鹿にしてるなと思った。
多分、急にサポートに人手が必要になったので、バイトをかき集めて適当に回していると思われる。
それにしてもだ、そんな適当な回答をするなら初めからQ & Aに設定から接触チェックを確認して1以上なら接触しているとの前提で行動してくださいと書けばよいだろうに。
ちなみに、8/19日12時現在でも厚生労働省のQ & Aは下記のままであり問い合わせるようにとの文言になっている。
問23 陽性者との接触があったようなプッシュ通知が表示されましたが、接触確認アプリを開いて陽性者との接触を確認すると「陽性者との接触は確認されませんでした」と表示されます。どちらが正しいですか。
Android搭載のスマホをご利用の方は、問21、問22をご確認ください。これらで解決しない場合、またはiOSをご利用の場合は、大変お手数ですが、メール(appsupport@cov19.mhlw.go.jp)にてご連絡いただきますよう、お願いいたします。
さて、話はアプリの完成度が低くてストレスがたまったという話だけで終わらない。
私が周囲に反応したという事を報告したせいで、思わぬ影響が出たのだ。
職場の同僚が、私の濃厚接触者だったという事でコロナマン扱いされて出社するのは軽率だと怒られ問題になるという事件が起きたのだ。
アプリのバグのせいで私が陽性者と接触した日がわからないため(正常に反応するケースでは接触日がわかるとのこと)、
最大2週間のマージンを取って、その間にあった人全員に連絡をしたのだが、
彼自体は私が陽性者と濃厚接触する前に私と合っただけかもしれない。
それならば完全に風評被害だ。ちなみに私も私の濃厚接触者も全員体調に問題は起きていない。
話は長くなったが、このアプリにいろいろ思うことはある。
まず、陽性登録者が200人程度の時点で反応したという事でコロナの影は意外に身近にあると感じられたこと。
これで全陽性者が登録していたらえらいことになっているだろう。
次に、このアプリが反応した時の社会の対応指針が現状ではうまく設定されていないこと。
現状では反応が出ただけの人間のその接触者までもがコロナ陽性者と同じ扱いを受けて、社会的に行動制限を課されてしまう。
アプリを活用するための合理的な指針が社会に浸透することを望む。
そもそもBluetoothの電波強度で濃厚接触を判定しているため、近くにいても濃厚接触にならないケースがあるだろうし、
十分距離を取っていても濃厚接触とカウントされる恐れがある。(携帯のBluetoothモジュールのアンテナ次第で当然電波強度の指向性出るよな?)
また、アプリで反応が確認できないというのは論外だし、確認できても次のステップにつながらない。
例えば、LINEアンケートでたまに送られるようなアンケートが自動的に配信され、怪しい兆候があれば医療機関のデータベースに登録され、優先的に取り次げる等の工夫がほしい。
私自身はなんだかんだで感染拡大防止しないと社会も経済も正常に戻せない思っているタイプなのでできる限りの協力はしたいのだが、アプリの完成度の低さには正直あきれ返っている。
最近は真面目に感染拡大防止をする人間を「コロナ脳」とかいって揶揄する人がTwitterをはじめとするネット上に増えた印象を受ける。
どもども。
わたしは「なにか作ってみろ」系の言説にはまったく同意しません。
わたし自身、会社に3ヶ月間みっちり導入教育をしてもらい(COBOL85とPL/I。時代がわかる……)、基本的なアルゴリズム(コントロールブレーク、マッチング、マスタ-トランザクション、ソート、マージ、etc.いよいよ時代がわかる……)の演習を(給料をもらいながら)やって、その後もプログラムとつかず離れずでフラフラと生きてきました。
こういう経験は新卒カードがあるから有効なもので、では1から始めるとしたら……、というときに、プログラミングスクール(専門学校)というのは悪くない選択肢ではないかと思います。が、行ったことないので正直わかりません。
実際自分が1から始めるという立場になったら、まったくオロオロして元増田さんのように世のなか(の気にいらないヤツら)に呪詛を吐いて満足するだけだったと思います(当然ながらそれをいくらやってもプログラミングは上達しません)。
話をプログラミングだけに限っていえば、一番大事なのはやりかたじゃなくて動機だろうと思います。
「なにか作ってみよう」というのは、なにか作ってみようと思ってない人にはまったく心に響かないでしょう。
動機ドリブンで「なにか作ってみた」人といえば思いだすのは、MikuMikuDanceの樋口優さん(ミクを簡単に踊らせたい!)とhinadanの若宮正子さん(高齢者にも遊べるゲームが欲しい!)でしょうか。
ただかれらはわたしから見れば(モチベーションを維持しそれを行動に移す)天才で、あんまり参考にならないのも確かです。
あと、元増田さんの動機は「プログラミングを生業にしたい」ということなので、野良プログラマでは履歴書上でのアピール力が弱いかも、と思います。
ビジネスで使われるアルゴリズムにはそれなりのルールがあります。安全な(バグの出にくい)コードの書きかた、「車輪の再発明」はぜず、枯れた(将棋で言えば定跡のような)アルゴリズムを使う、ほかの人に使ってもらえるための工夫(可読性の向上など)、etc.です。
「なにか作ってみよう」を繰りかえしても、そういった作法的なものが身につくかどうか、それは才能に関わってくる問題だと思います。才能だのみの手法を推奨するのは無責任だと思いますね。
また、たとえば「例をコピーして解析する」というのもある意味有効なプログラミング学習法ですが、「下手に習うと下手が伝染る」ともいいます。どれがお手本として優れているか、それを見る目はある程度ビジネス用途のプログラムに関わっていないと持てないというジレンマがあります。
野生のプログラマで就職に有効なくらいの力を見せるとしたら、なにかのコミッター(なにする人かよく知りませんが)とかになって「××ならこの人」となったり、プログラミングコンテストで上位の成績を残したりしなければいけないのかもしれません。
どうしたものでしょうね。ブクマカのみなさんの反応を見ると、専門学校でもあまり就職に有利にならない(ホントか?専門学校の意味あるのか?)という話ですが、目的が就職ならば、一番の近道のような気がします。
そこらへんからは、元増田さんがなにをしたいか、あるいは聞いてみたいだけだったのかによります。仕事には適性とやる気が大事です。あとは年齢と必要性かな。進路はオーダーメイド以外にはありえないので、提示された案を自分で選んでそれに賭けるしかないのかな、と思います。
さて、この文章は実はこの一文に反応してのものです。(↑のは前書き)
GWあたりからトシも考えずにRubyの再入門をしていまして、手始めに「首相動静」の整形ツールを作ってみました。
初心者で(Rubyに関しては仕事で使ったことないので)なにか作ってみよう、というとこの程度ですね。
これで就職に有利になるかというと、あんまりそうは思えないなあ。Excelのマクロが組めるとかのほうがどこかの事務所に潜りこめそうですよ(でもそれも最近はインフレ気味かもしれませんね)。
朝日新聞の首相動静は詳細ですが、改行が入っておらず、大変読みにくいものです。こんな感じです。
【午前】9時31分、自民党本部。33分、同党役員会。10時2分、官邸。5分、閣議。21分、宇宙開発戦略本部。34分、柴山昌彦文部科学相。38分、岩屋毅防衛相。41分、山下貴司法相。11時3分、安全保障と防衛力に関する懇談会。
【午後】0時11分、政府・与党連絡会議。44分、山口那津男公明党代表。1時27分、日韓議員連盟の額賀福志郎会長、河村建夫幹事長。2時20分、行政改革推進会議。52分、兼原信克官房副長官補、秋葉剛男外務事務次官。3時36分、麻生太郎財務相、財務省の岡本薫明事務次官、太田充主計局長。4時7分、太田氏出る。可部哲生理財局長加わる。15分、全員出る。25分、黒川弘務法務事務次官。34分、谷内正太郎国家安全保障局長、北村滋内閣情報官、宮川正内閣衛星情報センター所長。41分、谷内、宮川両氏出る。5時3分、北村氏出る。10分、東京・永田町のザ・キャピトルホテル東急。宴会場「鳳凰」で中曽根康弘世界平和研究所設立30周年記念式典に出席し、あいさつ。20分、官邸。6時18分、ガーナのアクフォアド大統領を出迎え。記念撮影。19分、儀仗(ぎじょう)隊による栄誉礼、儀仗。27分、アクフォアド大統領と会談。7時12分、署名式、共同記者発表。32分、公邸。首相主催の夕食会。8時43分、アクフォアド大統領を見送り。9時、ヨルダンのアブドラ国王と電話協議。
ただ、これはフォーマットがはっきりしており、
と、例を見るかぎりキッチリとしたルールに則っているようです。
なので、「これだったら整形できるかも」と思い、再び学びはじめたRubyで整形ツールを作ってみることにしました。
【午前】
10時02分、官邸。
10時05分、閣議。
10時21分、宇宙開発戦略本部。
【午後】
01時27分、日韓議員連盟の額賀福志郎会長、河村建夫幹事長。
02時20分、行政改革推進会議。
03時36分、麻生太郎財務相、財務省の岡本薫明事務次官、太田充主計局長。
04時15分、全員出る。
04時34分、谷内正太郎国家安全保障局長、北村滋内閣情報官、宮川正内閣衛星情報センター所長。
04時41分、谷内、宮川両氏出る。
05時10分、東京・永田町のザ・キャピトルホテル東急。宴会場「鳳凰」で中曽根康弘世界平和研究所設立30周年記念式典に出席し、あいさつ。
05時20分、官邸。
06時18分、ガーナのアクフォアド大統領を出迎え。記念撮影。
06時19分、儀仗(ぎじょう)隊による栄誉礼、儀仗。
あと、午後の時刻を24時間制にしたいな、とも思いますが、それは今後の課題(つぎに首相動静が話題になったとき)とします。全角数字の計算ってどうやるんだろう?
たぶんRubyistにいろいろ突っこまれると思うけど、こんな感じです。
プログラマは玉石混淆ですが、これは石のほうの例だと思っていただければさいわいです。
※ はてな記法にはシンタックスハイライトあるけど、増田だとInternal Server Errorになるのではずしました。見にくくてスマソ。
# encoding: utf-8 # 漢字コンバータのライブラリを取りこむ(Stringに漢字変換メソッドを付けてくれる。神) require 'kconv' # 正規表現パターン # 時刻をh時m分形式からhh時mm分形式にする # 否定後読みを使用する # 時は行頭にある OneDigitHour = /^((?<![0-1])[0-9]時)/ # 分は時のあとにある。このパターンとマッチすると、92;1が時、92;2が分になる。 OneDigitMinute = /^([0-9]{1,2}時)(?<![1-5])([0-9]分)/ # 分のない、時だけの行のパターン。否定先読みを使用 HourWithoutMinute = /^([0-9]{1,2}時)(?![0-5]?[0-9]分)/ # 行頭のh時m分をhh時mm分にするサブ処理(これは関数といっていいの?) def convTopHourMinute2TwoDigits(oneLine) # 時を変換 oneLine.sub!(OneDigitHour, "092;92;1") # 分を変換 oneLine.sub!(OneDigitMinute, "92;92;1092;92;2") # 分がない場合"00分"を追加 oneLine.sub!(HourWithoutMinute, "92;92;100分") # 戻り値 oneLine end # 入力ファイルの名前 InputFilename = "首相動静2018年12月11日.txt" # 出力ファイルの名前 OutputFilename = "首相動静2018年12月11日_編集済.txt" # 入力ファイルをオープン inFile = File.open(InputFilename, "r") # 出力ファイルをオープン outFile = File.open(OutputFilename, "w") # 時刻パターンはシンプルに、h時、m分、h時m分、という3パターンを結合する # 1つのパターンで全部カバーするよりこちらのほうが見やすい。というか、脳の容量の問題で1文に書ききれなかった jikokuPattern = /[0-9]{1,2}時[0-9]{1,2}分、|[0-9]{1,2}時、|[0-9]{1,2}分、/ # 午前/午後 ampm = /(【午前】|【午後】)/ # 午前/午後、あるいは時刻の前で改行するためのパターン kaigyouSign = Regexp.union(ampm, jikokuPattern) # ファイル一括読み込み # 昔は1行ずつ読みこんでました。メインメモリが3MByteとかだったので contents = inFile.read.toutf8 # 入力終了。閉じておきます inFile.close # スコープの関係から、ここでローカル変数に代入 # ※ Rubyのスコープと暗黙の型には泣かされました。これに慣れるのがRubyのコツかしら # 明示的な型宣言はあったほうがいいと思うなあ。エラー出力の理由がわからなかったりするので。 hour = "" # デバッグ行はコメント化しています # 時刻パターンチェックのため、コンテンツを出力してみる # p jikokuPattern.match(contents) # エントリを改行サインで行に分ける contents.gsub!(kaigyouSign, "92;n92;92;&amp;") # "92;92;&amp;"はマッチした文字列そのもの。2重のエスケープ"92;92;"が必要 # 改行チェックのため出力 # p contents # 入力を行で分割して各行ごとに処理 contents.split("92;n") do |oneLine| # 午前/午後を示す開きカッコ"【"があるか if (oneLine =~ /^【/) then # そのまま出力 outFile.write(oneLine + "92;n") # p "午前午後:" + oneLine next # 空白行は無視(スキップする) elsif (oneLine =~ /^[92;s ]*$/) then # 出力しない # p " 空白行:<skip>" next # 行頭に「時」があるか elsif (oneLine =~ /^[0-9]{1,2}時/) then # あったら時間表示を抜きだしておく hour = oneLine.match(/^([0-9]{1,2}時)/)[0] # p " 時:" + oneLine outFile.write(convTopHourMinute2TwoDigits(oneLine) + "92;n") next else # 「時」がなければつけて出力 oneLine = hour + oneLine # p "普通の行:" + oneLine outFile.write(convTopHourMinute2TwoDigits(oneLine) + "92;n") end end
手でやったほうが早いね。
以上
■決定事項
ちょうど来週はホワイトデーのお返しを買わねばならんので、そのついでに買ってみようと思う。
そういえばNHK72時間ドキュメントで試飲のできる銀座の酒屋やってたのを思い出した。あそこに行ってみよう。
・小旅行
ちょうど3連休が間近だから、このタイミングで18きっぷ使って行こうかな。なるべく花粉の少ないところにいきたい。
あと、静岡の「さわやか」に行ってみたいんだよな。
20年度の特別支出枠は42万円(月3.5万円)の予定。また来年度末にちょっと余るかも。
・親孝行
→温泉にでも連れて行ってあげたい。
・寝具
→睡眠の質を上げていきたいと思っていたので。また提案される方が非常に多かった。
ただ、どれを買うかは慎重に選んでいきたいので、20年度予算側で購入しようと思う。
・海外旅行
・ジム
・ロードバイク関連装備
・VR
そもそもこれは補足で説明すべきだったが、家が狭い(約20mm^2)ので、これ以上物理的スペースを要するものは置けない。
大きめの家電類は諦めざるを得ない。
・猫
猫が飼える家となると、あと2万円は家賃が高くなる。
家にいる時間が少ないというのもちょっとかわいそうなので諦める。
・装飾品(財布、革靴など)
まだこの手の贅沢品に手を出すほど余裕がない。
あと3年後ぐらいかな。
■家計簿について
Excelで作っている。
社会人なりたての頃はsumぐらいしか使えず、入力したレコードを手で仕分けていた。
なんかうまい方法ないかな~とググりながら入力用シートと分析用シートを分けて、
sumifsとかvlookupを使いはじめたり、条件付き書式を使うようにすることで、収入と支出が大分見える化された。
その後も仕事で覚えた技術などを転用し、vlookupをindex+matchに書き換えて汎用性を持たせたり、
途中でインデックス投資を始めたので、そのための分析シートも追加したりして
次の目標は
・web上に落ちている基準価格を自動収集してリアルタイムで採算分析できる仕組み
を構築すること。
PythonのSeleniumとOpenPyXLで結構できそうな気がしているので、勉強を開始した。
ただまだ世に出ている画像文字をテキスト化するOCR技術はまだまだなので、
機械学習の技術を使えばこの辺も解決しそうだが、まだそのレベルは難しい。
ただ将来的には理解したい分野なので、高校数学をやり直して勉強中。
家計簿をより良くしたいだけだったのだが、これがトリガーになっていい影響を及ぼしている。
■頂いたコメントへの回答
ffrogffrog こつこつ家計簿続けてるの凄いな… 増田
しかし正直最近ちょっと面倒くさくなってきたので、入力工数をさらに短縮するためにプログラミングを学び始めた。
primedesignworksprimedesignworks 酒代多すぎてビビった
→ごめんなさい。
→たしかにレンズをもう一種類増やしたい。自転車の装備も増やしたい。
→最有力。そろそろ親孝行せねばならない。
kitayamakitayama よいお酒を買うのはどうだろう。1本1万オーバーのウイスキーとか。それか猫。
→ウィスキー、猫ともに最有力。
しかし猫飼える家となると家賃が+2万円する。ちょっと厳しいかも。
TakamoriTarouTakamoriTarou エロゲ
→買い増しチャンスな気がするが、まだまだ下がりそうなので様子見。
Caerleon0327Caerleon0327 彼女できたときのために置いとけ
→たぶんできない。
IthacaChasmaIthacaChasma 家電と自由時間の少なさを見比べると、ここは乾燥機(洗濯機の上に置くタイプのやつ)か、いっそドラム式洗濯乾燥機だと思う。自分の時間を増やすのに使おう。
ryokujyaryokujya 好きな女の子を見つければいい
→見つけ方がわからない。
ko2inte8cuko2inte8cu 千葉の観光業が台風とコロナで大変だから、マザー牧場に行って、ジンギスカン鍋食べて、羊と牧羊犬のショーを見て、乗馬して、バンジー飛ぶ。お釣りがくる。
→いいな。ただ花粉症なので外出はあと1ヶ月後になるだろう。
→そうなのか。家族連れの中一人ぽつねんとするのは辛い。
ribbentrop189ribbentrop189 テーブルや椅子、寝具やカーテン等の家具を買い換えるというのはどうだろう。気分転換にもなるし新品は気分が良い
→テーブル、椅子はこの間ニトリで買っちゃったから、寝具かな。
布団カビ生えてるし、最有力。
doksenseidoksensei 1万桁の家計簿のためにゲーミングノートPC買ったの?
nemunetanemuneta ドラム式洗濯機かホットクック
gabillgabill 1日1回、誰かにうまい棒をあげる。同じ人に2回あげてはいけない。10万円あれば、これを約30年続けられる。30年後には唯一無二のうまい棒おじさんになってる筈。
paradisemakerparadisemaker 近場で旅行行こうぜ
→そうだね。できれば人がいない所が良いな。
Galaxy42Galaxy42 PS4ProとVRヘッドセット。ソフトはなんか好きなの。
→ゲームはPS2と任天堂64で止まっている。ただしVRには興味がある。
hara_boonhara_boon 素晴らしい👏 増田の感じから見ると娯楽より生活用品にお金かけたほうが良さそう。電動歯ブラシとかはどうかな。毎日使うもので、ランニングコストもそんなに悪くないみたいだし。10万だといいの買ってもお釣り出るが 増田
→電動歯ブラシは既に使っている。ただ、歯間ケア用のエアフロス購入は検討している。
daruismdaruism ノートPC使うときに座る椅子だな。10万程度でいいやつ買えば長く使える。
kuremizukunkuremizukun 物より体験にお金をかけた方が幸福度が上がると何かで読んだよ
→そうだよね。もう必要なモノはだいぶ揃ってきたので、今後は体験重視にシフトすることになると思う。
arvardan1984arvardan1984 メンマ
→メンマ食いすぎだろ。
kamiokandokamiokando 車検と税金に備える。
→車持ってない。多分車を所有することは今後もないだろう。
kyoto117kyoto117 身につけるものを一つランク上げてみるのはどうか。私は良い財布を買うことを画策中。実用性を考えるとかなりいいランクでも10万に収まる。//サラリーマンなら革靴増田に倣ってみるとか?
→そろそろそういったものにもお金をかけるべきか。。。まだそういったものにポンとお金を出せるレベルには達せていないかも。。。
kaminashikokaminashiko 素晴らしい
→テンキュー?
jitsuzonjitsuzon oculus questをおすすめします
→最有力かも。
RCHeLEylRCHeLEyl 全部aupayにチャージして使えるショッピングモールや百貨店で消費する。20%還元されるのでおススメ。私はipad欲しい。/これだけ成長したのすごいね。お疲れさま。
→センキュー。家計簿つける上でデータ抽出のプラットフォームを分けたくないのでiDに統一している。
rocoroco3310rocoroco3310 この手の質問の回答は私の中で「いいダウンコート」か「いい羽毛布団」に決まった
→ダウンコートは4年前に買ってしまった。(むしろそろそろ買い換えるべきなのかも?)
sorabobysoraboby iPadProを新しくてでっかいやつに新調する!今持ってんのと合わせてiPad3台、iPhone1台の4台使いになっちゃいそうだけど…
onasussuonasussu なんか好きな人出来たら思いのほかぶっこむっぽいので繰り越してその時ようにしたらどうだろうか
→もうそういう機会もない気がする。
jamira13jamira13 博物館とか郷土資料館に寄付する
→篤志家になれるほどの余裕はまだない。
manamemaname 家計簿アプリに課金して管理を楽にしてみるのはどうだろう
→どのアプリも中々痒いところに手が届かない感じ。
2年前に家計簿と投資分析をマージさせる大幅アップデートを行ったのだが、
そういったプラットフォームを提供しているアプリは今の所ない感じ。
asaneboyasaneboy ホットクックか衣類乾燥機をおすすめする。前者は自炊するのがかなり楽になるし、後者は洗濯物を干す手間がなくなって他のことに時間を使えるようになる。ドラム式洗濯機は毎回の掃除が面倒だから手間かかると聞いた
→あまり料理しないのだが、「ホットクック」を提案された方が二人目なのでちょっと気になってきた。
reot8reot8 ロードバイクでカメラもっていい景色と撮る旅行に出かける。資金は輪行用のグッズと旅費。
→提案いただいたことは年1回程度行っているが、頻度を増やしてもいいかなと思ってきた。
thirty206thirty206 本来なら旅行というところだが…移動に自家用車が使えるなら。
gyochangyochan ふってわいた10万円を貴方ならどうする? https://b.hatena.ne.jp/entry/s/anond.hatelabo.jp/20181126194659
→具体的な回答が少ない・・・。
natu3kannatu3kan 地金を買う。自分のノートPCもi7だけど8年前のi7なので現行のi3に劣る。(隙あらば自分語り) AnonymousDiary
→こんなに細かく家計簿つけてるやつはろくなやつじゃないと思う。
houkiboshi777houkiboshi777 酒が好きなら高い酒でも買ってみたらどうかな
→最有力。しかし高い酒を知らない。百貨店の地下にでも行けばいいのかな。
kiku72kiku72 デスクトップパソコン。光学ドライブ有でメモリなるべく積んで
take-it 高級マットレスか、マッサージチェア。体を休めるの大事。
→場所取りそう。体を休めるのは大事なので、代替案を検討する。
mangakojimangakoji 現金で持ってても無意味だとおもいつつ、無能な俺は貯金するよ。
→いいと思うよ。
masa_wmasa_w ナイキ厚底シューズの新作、アルファフライ
→すぐ壊れちゃうじゃん。
MachautumnMachautumn ウラジオストク旅行。
→実は行ってみたいところの一つ。知り合いが近郊の廃墟の写真を撮っていてかっこよかった。
aoadugaoadug しょぼいなあ。30万くらいはないと日常とそんなかわらんだろう。
→すみません。
planariastrawplanariastraw ネイティブとオンライン英会話
→既に20年度予算側に組み込んでいる。一応英語は最低限使えるのだが、今年はそのレベルを上げたい。
ardarimardarim なんでそんなすぐに物を壊すのか… ライフ
→便宜上壊したと書いたが、どれもバッテリーが死んだだけ。8年間でスマホ3台目って普通じゃない?
ToTheEndOfTimeToTheEndOfTime 選択肢は貧しい人への全額寄付以外にない。金持ちが天国に入るのはラクダが針の穴を通るのより難しい。
→私より貧しい人がいることは知っているが、まだ寄付をするだけの余裕も私にはない。すまん。
wacokwacok 両親をホテルのいい和食レストランに連れて行ったらちょうど10万くらいじゃないかな。余裕のあるときに一回くらいやっとくといい。 増田
→最有力。やらねばならない。
cj3029412cj3029412 にゃーん😺「にゃーん😺」
→猫飼いたいんだよなぁ・・・。
mujou03mujou03 paypayとかの残高に突っ込んどけば一応余った金に対して何かしたということにもなり満足感が得られるかもしれない
→たしかに。
lenorelenore 今なら夫婦で温泉旅館。こないだ行ったのが思いの外良かった。和食フルコース食べて温泉入って海見てのんびり……。
→嫁がいません。
→人それぞれ。
furisakefurisake "NISAとiDeCoで満額投資信託"
gomasalada なんか、ドラマの主人公みたいな人だな。(雑な女の子に出会って生活のペースが乱されるけどなんだかんだくっついてハッピーエンド) 韓国ドラマかも
→いつまで経ってもその雑な女の子とやらが現れない。
baroclinic ロイホで各種カレーをコンプリートする 妄想
→ロイホのカレーってうまいの?だとしたら面白いアイデアだね。
ロイホなんて高いとこ、人生で2回ぐらいしか行ったことないしそのいずれも自分で払ってない。
1回行ってみるか。
anus3710223anus3710223 防災グッズ一式に買い占めが起きても困らないような備蓄
→実は既に買っている。2週間は家から出なくても平気なくらいは準備されている。
tekitou-mangatekitou-manga 乾燥機付き洗濯機
→提案3人目。よっぽどいいんだな。
neogratcheneogratche 何で使う事前提なん。普通に貯金するわ
→そういう考え方もあるよね。
ustarustar 物は十分あるように見える六人家族の我が家よりは充実してる 身体の健康増進に投資すると満足度上がるように思える
→必要なモノは時間をかけながらコツコツ買い揃えてきたと思う。
u_eichiu_eichi 酒飲むなら、外食に突っ込んで欲しい。寿司でも、料亭でも、フランス料理でもあれでもそれでも、好きな酒とそれに合う肴を求めて。
→すごく興味があるけど、コミュ障なので一緒に行ってくれる人がほしい。
miz999miz999 こういうアンケートでは実は自分の欲しい物を答えている、これがメンタリズムです
→そうだと思う。でもそれでいいのよ。
go_kumago_kuma 余った10万ならとりま株だな。
→株こわい。
laybacklayback SURLYのSteamrollerのフレーム買う
→おしゃれ!
sigsig 10年後に伸びてそうな会社の銘柄を少しずつ買う。意外と物欲満たせる気がしてる。
kmaebashikmaebashi 酒が好きなら毎晩5000円ずつ飲み屋で使う。週に2日は休肝日として1か月。いやさ最近飲み屋さんがどこも空いてて気の毒でさー。
Erorious_BIGErorious_BIG 高級風俗
→確かにちょっと考えたけど、なんか虚しいからやめとこうと思う。
wdnsdywdnsdy コロナ不況が起きそうだし(給与賞与が減ることもあり得る)欲しいものがないなら無理に使わなくて良さそうな気もするが…
→たしかに。
SPIRIT_PHOENIXSPIRIT_PHOENIX 車検費用の一部
→車持ってない。
ledlizerdledlizerd 脱毛かな?全身だと足りないけど
→女性は大変だ。
kunikukuniku 予算が自分の30才頃に似てる、年間支出は210-250前後。家計簿は正確じゃないけど記帳してたけど、今はマネーフォワード、12月決算が良いと思う
→実際のところ、周りがどれだけ使っているかわからないから、こういう意見はとても参考になる。
KmusiclifeKmusiclife マスクとトイレットペーパーだろ。
→既に買ってあった。
YokoChanYokoChan 平均退社時間が22時ならもう少し足してドラム式洗濯乾燥機。酒を飲む時間が確保出来て洗濯も出来る。洗濯機マニアの女性に惚れましょう。
neko_no_muzzleneko_no_muzzle 1年ジムに入会してみる
mujisoshinamujisoshina 10万円でピンとくる物が無いようなら無理に使わず、金額を15万円や20万円に引き上げて使い道を考えて、そこまで貯めるのが良いかな。
→そうね。
PalantirPalantir スパチャ
boshiboshi 上場インフラファンド、もしくは、つみたてNISAで信託報酬のいちばん安い投資信託
→既に実践済。
mamimpmamimp 3万円をFF14関連年間予算(月額料金1500円弱)として計上し、手持ちのノートパソコンで1年間楽しく遊ぶ
beed 手品はじめようぜ!
raebchenraebchen コツコツやらないとお金は貯まらない、っての、なんかしみじみわかった😅自分が金貯められんわけだ😓とはいえ、自分ならVR勧めるぞ😄最先端だ!😆
→VRおじさん!
senbuusenbuu ビットコインを買って5月に売れ。10万円が15万円くらいになっていること請け合い(なお、保障は一切しない)。
→仮想通貨こわい。
the_sun_also_risesthe_sun_also_rises きちんと読んだけどえらいよ。10万円は増田の好きなように使うべきだ。酒が好きならこの機会に高い酒を買ってみたらどうだろうか。例えば数万円する高級ブランデーや高級ウイスキーなら毎日少しずつ楽しめる。
→仕事ばかりして趣味がなく、自分の好きなものもわからなくなっていたので、意見を募ってみた。酒は最有力!
sys-cyssys-cys お高めウェア買って女性専用ジム通ってパーソナルも付けたい。プロテイン各種味揃えて日替わりで飲みたい。
→いいね。
mosimosihtnsanmosimosihtnsan 私なら何って考えても思いつかなかったんだけど、それって幸せなことだと思うの。だからあなたも、何か思いつくまで置いといていいと思うのよ。
→そういう考え方もいいよね。
shikiaraishikiarai 使わなくちゃいけないなら近場の旅行で高級旅館に泊まる
→これやりたいなぁ。最有力。
htnmikihtnmiki ここまでやってる人が他人の金の使い道を聞いてどうすんだろと思ってしまった。ただ知りたいだけならこんな詳細いらないし。
→詳細を開示することで、いただけるご提案の精度が高まるかなと思ったわけです。
社内SEになった。
仕事を辞めて主夫業に勤しんでいたら、知り合いから声がかかった。
1人で社内システムを作ってきたおじいさんがあと数年で定年になるから、
引き継げないかとのこと。
メインのシステムはベンダーに委託してて、そのおじいさんが作っているのは、
メインシステムのデータを加工して2次利用しているものがほとんどとのことだった。
社内SEはなんとなく楽そうなイメージがあったので、就職した。
中身を見るとどちらもかなりやばい。
VBA編
・ウォッチウインドウを知らないのか、変数はすべてセルに入れてる。
変数名はすべてRANGE("A1").valueみたいな感じで全く意味が分からない。
・処理遷移がおかしい。
セルに1を入れる。そのセルのchangeイベントで処理が動くとか。
・なるべくワークシート関数で処理してる
データベースからとってきたデータを丸ごとワークシートにコピーして
if,vlookup,match関数を駆使して帳票にしたり、CSVにしてる。
データ100件制限があったり、1関数を直すときは100行コピーしないといけない。
画面中に埋め尽くされたワークシート関数をみて途方に暮れる。
・format関数を知らない。
8桁の日付をとりたいときyear、month、day関数がワークシートにあり、
その下の行で月の二けた判定、日の二けた判定のif関数で頭の0をつけ
3行目でconcatenateしている
・タイマー起動
毎朝100本ぐらいのマクロが動いてる。
タイマー起動なので、毎日セットしないといけない。(タスクスケジューラーを知らない)
がんがんエラーが発生するので、マクロ設定をエラー処理対象外のエラーで中断にしないと動かない。
・遅い
textboxのchangeイベントでDBからのデータ取得処理を入れているので、データが多くなると1文字打つごとに数分待つ状態。
DBの更新処理でもテーブル全件とってきて、ループしながらキーが一致するのを探して更新。
そんなつっこみどころしかないEXCELマクロが200本以上ある。
VB編
・.NET1.0
windows7や8に無理やり.netframework1.0を入れて動かしてる。
・オブジェクト名は代えない
変えられることを知らないのかもしれない
textbox100とか存在してる。
EXCEL同様変数は隠しtextboxに入れてる。
1.0なのでconfigがないのはしょうがないが、設定ファイルは固定パスのテキスト
行数で管理
・WAITがいっぱいある
試しに取ったら動かない
例外が発生するまでまわす。
ない。基本グローバル。
・クラス
ない。
・ネスト
ない。
This APP is provided by us at no cost and is intended for use as is.
This page is used to inform app visitors regarding our policies with the collection, use, and disclosure of Personal Information if anyone decided to use our App.
If you choose to use our App, then you agree to the collection and use of information in relation to this policy.
Information Collection and Use
When using the APP, it only collects anonymous usage information to operate, improve and personalize the products. The APP does not collect any Personally Identifiable Information (PII) about you, nor does it match collected anonymous usage data with any 3rd party PII information.
We want to inform you that whenever you use our App, in a case of an error in the app we collect data and information (through third party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing our App, the time and date of your use of the App, and other statistics. If you use our app to read or post information on our app, we don't collect any information about your identity. If you identify yourself by sending us an e-mail containing personal information, then the information collected will be solely used to respond to your message. In addition to other information described in this policy, we may collect and share precise location information including the presence of connected devices via bluetooth, through methods such as partner mobile “SDKs”. This information may be used by itself, aggregated, or combined with mobile identifiers (such as IDFAs and Android IDs), and shared with other parties, for purposes related to advertising, attribution (e.g., measuring ad performance), analytics and research. You can remove your consent to having your location data collected by changing the settings on your device (but certain services may lose functionality as a result). You can also control options through your device’s opt-out settings which will: (i) tell advertisers to not use your in-app information from that device to gather information about your interests to target interest-based ads and (ii) inform some partners to halt further data collection and sharing from that device.
Service Providers
We may employ third-party companies and individuals due to the following reasons:
To provide the App on our behalf;
To perform App-related services; or
To assist us in analyzing how our App is used.
We want to inform users of this App that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.
Security
We value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security.
Links to Other Apps or Websites
This App may contain links to other Apps or Websites. If you click on a third-party link, you will be directed to that app or website. Note that these external apps or sites are not operated by us. Therefore, we strongly advise you to review the Privacy Policy of these apps or websites. We have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party apps or websites or services.
Changes to This Privacy Policy
We may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. We will notify you of any changes by posting the new Privacy Policy on this page. These changes are effective immediately after they are posted on this page.
Contact Us
If you have any questions or suggestions about our Privacy Policy, do not hesitate to contact us
This app has no affiliation with Craigslist. Craigslist is a registered trademark of Craigslist, Inc. Please visit Craigslist's privacy policy to better understand their data collection practices and controls that they make available to you.
ABW Coin built the MathX for Math Learner app as a Free app. This APP is provided by ABW Coin at no cost and is intended for use as is.
This page is used to inform app visitors regarding our policies with the collection, use, and disclosure of Personal Information if anyone decided to use our App.
If you choose to use our App, then you agree to the collection and use of information in relation to this policy.
Information Collection and Use
When using the APP, it only collects anonymous usage information to operate, improve and personalize the products. The APP does not collect any Personally Identifiable Information (PII) about you, nor does it match collected anonymous usage data with any 3rd party PII information.
We want to inform you that whenever you use our App, in a case of an error in the app we collect data and information (through third party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing our App, the time and date of your use of the App, and other statistics. If you use our app to read or post information on our app, we don't collect any information about your identity. If you identify yourself by sending us an e-mail containing personal information, then the information collected will be solely used to respond to your message. In addition to other information described in this policy, we may collect and share precise location information including the presence of connected devices via bluetooth, through methods such as partner mobile “SDKs”. This information may be used by itself, aggregated, or combined with mobile identifiers (such as IDFAs and Android IDs), and shared with other parties, for purposes related to advertising, attribution (e.g., measuring ad performance), analytics and research. You can remove your consent to having your location data collected by changing the settings on your device (but certain services may lose functionality as a result). You can also control options through your device’s opt-out settings which will: (i) tell advertisers to not use your in-app information from that device to gather information about your interests to target interest-based ads and (ii) inform some partners to halt further data collection and sharing from that device.
Service Providers
We may employ third-party companies and individuals due to the following reasons:
To provide the App on our behalf;
To perform App-related services; or
To assist us in analyzing how our App is used.
We want to inform users of this App that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.
Security
We value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security.
Links to Other Apps or Websites
This App may contain links to other Apps or Websites. If you click on a third-party link, you will be directed to that app or website. Note that these external apps or sites are not operated by us. Therefore, we strongly advise you to review the Privacy Policy of these apps or websites. We have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party apps or websites or services.
Changes to This Privacy Policy
We may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. We will notify you of any changes by posting the new Privacy Policy on this page. These changes are effective immediately after they are posted on this page.
Contact Us
If you have any questions or suggestions about our Privacy Policy, do not hesitate to contact us
FY Creation LLC. built the CLX for Craigslist app as a Free app. This APP is provided by FY Creation LLC at no cost and is intended for use as is.
This page is used to inform app visitors regarding our policies with the collection, use, and disclosure of Personal Information if anyone decided to use our App.
If you choose to use our App, then you agree to the collection and use of information in relation to this policy.
Information Collection and Use
When using the APP, it only collects anonymous usage information to operate, improve and personalize the products. The APP does not collect any Personally Identifiable Information (PII) about you, nor does it match collected anonymous usage data with any 3rd party PII information.
We want to inform you that whenever you use our App, in a case of an error in the app we collect data and information (through third party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing our App, the time and date of your use of the App, and other statistics. If you use our app to read or post information on our app, we don't collect any information about your identity. If you identify yourself by sending us an e-mail containing personal information, then the information collected will be solely used to respond to your message. In addition to other information described in this policy, we may collect and share precise location information including the presence of connected devices via bluetooth, through methods such as partner mobile “SDKs”. This information may be used by itself, aggregated, or combined with mobile identifiers (such as IDFAs and Android IDs), and shared with other parties, for purposes related to advertising, attribution (e.g., measuring ad performance), analytics and research. You can remove your consent to having your location data collected by changing the settings on your device (but certain services may lose functionality as a result). You can also control options through your device’s opt-out settings which will: (i) tell advertisers to not use your in-app information from that device to gather information about your interests to target interest-based ads and (ii) inform some partners to halt further data collection and sharing from that device.
Service Providers
We may employ third-party companies and individuals due to the following reasons:
To provide the App on our behalf;
To perform App-related services; or
To assist us in analyzing how our App is used.
We want to inform users of this App that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.
Security
We value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security.
Links to Other Apps or Websites
This App may contain links to other Apps or Websites. If you click on a third-party link, you will be directed to that app or website. Note that these external apps or sites are not operated by us. Therefore, we strongly advise you to review the Privacy Policy of these apps or websites. We have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party apps or websites or services.
Changes to This Privacy Policy
We may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. We will notify you of any changes by posting the new Privacy Policy on this page. These changes are effective immediately after they are posted on this page.
Contact Us
If you have any questions or suggestions about our Privacy Policy, do not hesitate to contact us
This app has no affiliation with Craigslist. Craigslist is a registered trademark of Craigslist, Inc. Please visit Craigslist's privacy policy to better understand their data collection practices and controls that they make available to you.
はてブのおもしろページ、ねこのら~とか言うのが3つもあって目障り。
Anti-アドブロッカーキラー関連ですでに入れている人も多いかも。
https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=ja
http://b.hatena.ne.jp/hotentry/funに対して、下記のスクリプトを追加する。
// ==UserScript== // @name New Userscript // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author You // @match http://b.hatena.ne.jp/hotentry/fun // @require http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js // @grant none // ==/UserScript== (function() { 'use strict'; $('.following-bookmarks-container[data-entry-url^="http://www.nekonora"]').parent().parent().remove(); })();
やった~
■ルール
・1位ではないが検索結果の中でファーウェイと認識されているなどの例外は△
■結果
・ハァーウェイ→◯ファーウェイ
・ヒァーウェイ→◯ファーウェイ
・ヘァーウェイ→×理容新聞 ヘァーウェイ
・ホァーウェイ→◯このままHuaweiを排除すると日米にとって嫌な事態がYahoo!ニュース(先日はてブで話題になったやつ)
・ヒアウェイ→×cazusa on Twitter: "スケッチブック……ノンノンノン!!! スタイルブック ...(2位以降はリシケシュ・ヒアウェイという人物の記事でファーウェイとは全く認識されない)
・ヘアウェイ→×ヘアウェイ(HAIR WAY)|ホットペッパービューティー
・ヒアエイ→×ヒアリ|東京都環境局「気をつけて!危険な外来生物」
・ヘアエイ→×ヘアウェイ(HAIR WAY)|ホットペッパービューティー
・ホアエイ→×効果を上げるホエイ&カゼイン【混ぜると効果的になる理由】
・ハャーウェイ→◯ファーウェイ
・ヒャーウェイ→◯ファーウェイ
・フャーウェイ→×FAIRWAY(フェアーウェイと認識される)
・ヒャーウェイ→◯ファーウェイ
・ホャーウェイ→◯ファーウェイ
・バァーウェイ→×(「バーウェイ」と認識されていろいろなバーウェイが出てくる)
・ビァーウェイ→×(BWAY(ビーウェイ)と認識されていろいろなビーウェイが出てくる)
・ブァーウェイ→◯ファーウェイ
・ベァーウェイ→×(タイヤのベアウェイ、ヨット用語としてのベアウェイなどが出てくる)
・ボァーウェイ→×(床の清掃および研磨のためのボアウェイ床研磨機、木村拓哉の「What's up SMAP!」(ワッツ)レポ2008.6.27など。4記事しか検索されない)
・パァーウェイ→◯ファーウェイ
・ピァーウェイ→◯ファーウェイ
・プァーウェイ→◯ファーウェイ
・ペァーウェイ→×Pair Way(ペアウェイ)滋賀県草津の雑貨屋さん
・ファッウェイ→◯ファーウェイ
・ファッ!?ウェイ→×『ファッとして桃源郷』 てーきゅう4期 OP - YouTube(2位にファーウェイを間違って「ファッウェイ」と記述してしまったらしい人のTwitter投稿)
・はぁん♡ウェイ→×Ceron - 【茅原実里】「SUMMER CAMP4」ライブBlu-ray Disc ダイジェスト(Ceronが1位は珍しいように思う)
・ふわえい→△フワエイから探した商品一覧【ポンパレモール】(表記ゆれ。2位以降はファーウェイとは全く認識されていない)
・ファーウェイウェイウェイ→◯ウェイウェイウェイウェイウェイ? - Yahoo!知恵袋 - Yahoo! JAPAN(一応ファーウェイに関する質問)
・ファーウェイウェイウェイウェイウェイウェイウェイウェイウェイウェイウェイウェイウェイウェイウェイウェイウェイウェイ→△(これだけやっても地図がファーウェイのカスタマーサービスセンターを指し示す)
・フファーファーイウェファーイウェファーイウェイウファーェイウェイファファーーウェファーイウェイウェフファーァーイウェイウェイウファーェイウファーェイウェイウファーェイファーウェイウェイウェイ→×ソニー、ホームシアター向けのスピーカー/サブウーファーを発売 - PHILE WEB
・ウェイ系ファー→◯ファーウェイ(意外)
・ウェイウェイ系ファー→△戦慄!ウェイウェイ族との遭遇 - Togetter(4位以降はファーウェイ)
・中国のスマホ→×(ファーウェイを含む記事は返ってくるが、ファーウェイ単体を指す言葉として認識されない)
・あのーこないだ禁止になった、ほら、中国のさ、何だっけファーなんとかってスマホ→×(上に同じ。2位は、口ぐせ中国語6「あのー何だっけ」)
・スマホウェイ→×店舗一覧 | 北海道No.1パーソナルトレーニングジム スマートウェイ
・ウォン・ファーウェイ→◯ファーウェイ(ウォン・カーウァイと誤認しない)
・ファーウェイ・カイテル→◯ファーウェイ(ハーヴェイ・カイテルと誤認しない)
・ファーウェイ農場→×(農業のIT化記事+関連記事の「ファーウェイ」という語句を拾ってくる模様)
・ハヮーウェイ→×(Your search - ハヮーウェイ - did not match any documents.)
・ヒヮーウェイ→×(Your search - ヒヮーウェイ - did not match any documents.)
・ヘヮーウェイ→×(Your search - ヘヮーウェイ - did not match any documents.)
・ホヮーウェイ→◯(表記ゆれ「フアウィイ」を検知。検索結果6件)
・ベイベー→×RIP SLYME - 楽園ベイベー - YouTube
・ベイベースマホ→×(個人ブログで「ベイベースマホ」という謎の語句を使っている人の記事が検索される。検索結果5件)
・ファーウェッセン→×(「ファーウェイ」も「シャウエッセン」も検索されない。二兎追う者は一兎も得ずか)
・ファーウェンツ→×(検索結果が完全にウェンツ瑛士に独占される)
・プァーウェy→◯ファーウェイ
・ファァーエェイ→◯ファーウェイ
・ファァエェィ→◯ファーウェイ
・ファァァァァーエェイ→◯ファーウェイ
・ハァァーエェィ→◯ファーウェイ
・プァァーエェィ→◯ファーウェイ
・huァーェイ→◯ファーウェイ
・ファuei→◯ファーウェイ
・ファuえi→◯ファーウェイ
・ファーえei→◯ファーウェイ
・ブァーヴェイ→◯ファーウェイ