「競技プログラミング」を含む日記 RSS

はてなキーワード: 競技プログラミングとは

2022-11-30

anond:20221129085814

コンピューターサイエンス競技プログラミング懐疑的な人たちは決まってソートアルゴリズムがどうとか言う傾向にあるけど、たしか増田の言う通り、ソートなんて自力実装するような時代ではないからその辺は無視してもらって構わないとは思う。

でもソートについて「ソートだけをして終わり」なんて実装をすることはなくて他の処理と組み合わせて存在しているものじゃない?

たとえば「配列ソートしてからサーチする」「ソートしていない配列に対して都度サーチする」「配列ハッシュマップに変換してからサーチする」要求に対してどれが効率的かみたいな判断は要る場面はあるでしょう。

「今書いているコードが呼び出す機能の一つ一つがどういうふうに書かれているかがわかったとして、一体何が嬉しいんだ?」

たとえば配列に対する.find() 的な関数があると思うが、これは「配列を先頭から順にチェックして、指定のものを見つける」ような実装であることが多い。内部的には配列長に比例する時間がかかるループが書かれている、O(N)の関数

これを自分実装するコードループ内で使うと、自分が書いたコード自体は一重のループしか見えないが、実は二重ループになっているということがあり得る。

その処理がやけに遅いと思ったとき、「find()は標準の関数から無罪!中身を見る必要なし!」って感じでスルーしてたらコード全体像永遠に見えないことになる。


とはいえ勉強したくないものを無理に勉強する必要もないとは思うよ。

サンプルで実装してあげたものの一部改変などをしてもらうぶんには知識スキルもいらないだろうし。


GTAオンラインロードが遅い問題でこういうのがあった。

https://gigazine.net/news/20210302-hacker-reduces-gta-online-load-times/

JSONパースする処理や、配列から重複を探す処理など、増田が言う通りラップされたものを使うだけでできることではあるけど、求められる出力を満たせる部品をただ並べただけではこういうダサいことが起こりうる事は知っていてほしい。

2022-10-15

ひと月有給取るんだが

時間あったらなにがしたいですか?」

何かアイデアくれ。

子供いるので泊りがけの一人旅とかは無理。仕事IT系仕事は嫌いだが何か作るのは好き。読書は嫌い。多少金がかかってもいい。

今考えてるのは

なんかアイデアないですか。できれば消費系より生産系の方がうれしい。「3か月だったら○○あるのにな~」とかでもいい。

2022-08-27

センスの無い未経験年収300万強のプログラマとして就職して必要だったこ

学歴がよくなくて、就職が困難だったので中小 SIer で働いていた。 (プライム案件を取ってこれる分マシらしい)

レキサルティレクサプロデパスのお世話になって続けてたけど、結局は薬でどうにかできず、辞めてしまった。

参考程度だけど、未経験の人が 300万 をもらうために、どのようなスキル必要かを、まとめておく。

ちなみにどれくらいプログラムが書けなかったかというと、競技プログラミング努力しても AtCoder黄色になれず青色のままってくらい。

AtCoder でいう、初心者から抜け出せないという、要するにセンスがないということなのだけど、そういう人も居そうなので、参考までに。

要するに

経験プログラマに対して、これだけ要求されるのだから、未経験の人は覚悟するようにという指針を提供したいので書いた。

入社時に覚悟しておかなければならない事

誓約書

基本的に、損害を与えた場合には、それを作業者補填するという誓約書を結ぶ。

要するに、捨て駒として扱って、失敗したら賠償しろ、という事になる。

このことを認識して、失敗しないように振舞ないと、連帯保証人含めて迷惑をかける事になる。

要するに、低賃金で未経験プログラマ案件にノーリスクで送りこんで、稼ぐための手段です。

必要だったスキル

ディレクション

基本的に PL (夢想家) → PM (御用聞き) → プログラマ という環境なので、プログラマ自分ディレクションして意思決定する必要がある。

例えば、下請け場合は、PM の御用聞きの結果の WBS に合わせないと、顧客から DM瑕疵担保責任がどうとか言われる。

社内開発の場合は、PL の方から直接、長時間の叱責を受けなくてはならない。

そういう不幸を防ぐためにも自分ディレクションして、PM の決めた実態を反映していない WBS に合わせて作業するスキル要求される。

基本的に手戻りは個人の過失になってしまうため、手戻りしないように考え抜いて意思決定をする、というのが重要になる。

これこそ、ガクチカと呼ばれる、頑張れますというスキルなので、学生時代に頑張っておけばよかったなぁ。

デザイン

こう見せたい、こう表現したい、という事を伝えるには、必然的デザイン知識必要になる。

創造思考デザインは切っても切り離せない概念で、デザインとは創造なのだから、当たり前である

ソフトウェアアーキテクチャも、ソフトウェア設計も、コーディングデザインと言えるかもしれない。

言語技術 (言語能力)

顧客と 1:1 で話す事が DM でもボイチャでも突発的に発生するので、いつ、いかなる時でも論理武装していなければならない。

まぁ、顧客であったり PL であったりはキレるのが仕事なので、それに対して理路整然と説明する必要がある。

なんとなく、では納得しないし、すぐ損害賠償請求とかそういう話にいくので、答えられないと持ち帰りますお茶を濁して、エマージェンシーになる。

後述する設計能力においても、課題を把握するための言語技術(言語能力)は重要ファクターだと思う。

ソフトウェア設計

C/C++システムプログラムフレームワーク基本的に無いので、自分概念を整理して、どのような変更、拡張があるかを考えて設計する必要がある。

この能力が弱いと、手戻りが発生しやすくなり、瑕疵担保責任を問われることになる。

読んだ本の中だと、ボブおじさんの本が、やっぱりしっくりくるなという個人的な感想がある。

ネットワークプログラム (C)

UDP で送ってくるデータを受けて 24/365 で停止しない WebAPI への繋ぎ込みという簡単作業があって、振られた。

リークしてはいけないという事で malloc禁止で、グローバル変数を利用するという変なルールがあった。

Rust で書けばいいんじゃないかなと思ったけど、Rust 書くのもシンドイし、C/C++ で、しんどくて読みづらいコードを書いた。

あとで保守する人が大変そうだけど、そういうルールを決めたのは PL だしね。

システムプログラム (C++)

なんか、特殊PCI Expressカードからベンダーが用意している SDKデータ引っこ抜いて Web API へつなぎ込む部分をやった。

データの中の特殊信号を取りたかったらしい。

一応、SDK の使い方をパラ見して 1 日で作ったので、別に負担じゃなかったけど、素人やらせるんなとは思った。

Webバックエンド (Express/Fastify + PostgreSQL)

当たり前だが、DB 作って RestAPI を生やすのは現代プログラマにとって自然にできなければならない。

なので、新規開発のサブモジュールバックエンドを任せられた。

だが、ORM の癖を把握したり、発行されるクエリ確認したりするのは、疲れる。 SQL を直書きするのはシンドイ。

結局 SQL を直書きすることにしたけど、あまりいい決断ではなかったと思っている。

それ以外は フレームワーク に乗ってしまっていいので、書き捨てる分には楽だった。

最近だと、TypeScriptPrisma 使うのが、型安全でよさそうだなと思っている。

Nest.js個人的には好み。

Linux操作 (EC2 とか)

デプロイEC2 直でやったり ECS にしたりとしていたので、ベアメタル知識必要になった。

要するに systemd のいじり方とか、死活監視の仕方とか。

個人的には、クラウド嫌いなので、ベアメタルの方が安心できる。

Bind権威DNS管理して、postfix絶対止めてはいけないメールサーバ管理するとかもあったけど、出来て当然ではある事だし。

Webフロントエンド (React/Vue)

会社Webアプリ案件を取ってきたので突っ込まれた。

経験プログラマでも、月単価 100 万以上で顧客請求してるんだから会社はそりゃ儲けるだろうと思った。

会社が一人前の経験N年のプログラマといったら、その通りに振舞う必要がある。顧客責任はないのだから

当たり前だが、WebディレクションWebデザインWebプログラミング, Webマークアップ は、全て作業者であるプログラマ仕事になる。

個人的には、これが分かれている理由が良く分からないけど、分けたい人がいるんだろう。

デザインで、CSSフレームワークを使うと、その色が出るという事で、全部 CSS手書きしていた。

tailwind が出た現在では使っていればよかったなと思う。

結局、全く分からない中、手探りでデザインし、コードを書いて、顧客に 1 日 5 ~ 10リリースするという行為をした。

顧客大手企業だったので、自社のエンジニアならもっと出来る、と叱責されまくったけど、だったら自社でやればいいじゃんと思った。

一応、今でもサービスは生きていて、ユニークユーザ数は上がっているらしい。

そして、焼き付け刃だったので、 WAI-ARIA を知らず、アクセシビリティへの配慮が足りない事が問題になってしまった。

これはなんとか保守対応ねじ込めたのでトラブルにならなかったけど、瑕疵担保責任と綱渡りだなと思った。

CI/CD 構築 (Azure Pipelines)

当たり前だが、リリースサイクルを短くしないと顧客はキレてしまうので、CI/CD を整えないといけない。

今は Github Actions とかあるけど、昔は無くて Bitrise が高いからみたいな理由Azure Pipelines で CI/CD フローを構築した。

もう Multi Stage Pipeline になってるだろうけど、Release Pipeline が GUI からしか設定できないのが辛みだった。

IaC (Terraform)

当然だが、デプロイするためには IaC を整える必要がある。

これを知らずに、コンソールポチポチしていたので、 IaC 出来てない事がバレた時に色々怒られてしまった。

今は CDK とか便利なものが出来てるんだなぁ。

自動テスト

本来テスト自動テストを整えて、質保証をしてバグを減らさなければならない。

だが、テストを書くという手間を払えなかったので、人力テストしかできなかった。

一応、リグレッションテストを人力でやりまくったので、バグ発見曲線が結合テストでの IF 不一致しかない、という結果にはなったけど

自動化できれば費用必要じゃなかったから、怠慢だと、責められてしまった。

同じような未経験の人へ

経験でも誓約書を盾に、振られた事全部を出来なくてはならない慣習があるので、プログラマはそんなに良い職業じゃないよ。

甘い考えで、プログラマになろうと思っているのなら、考え直した方がいいです。

2022-06-24

anond:20220624135852

おれも paiza 推しだわ。

プログラミング力で未経験就職なら paiza がちょうどいい。

正直、本気で競技プログラミングをやりたいとかプログラミング力を上げたいなら AtCoder の方が良いんだろうけど、AtCoder は paiza よりレベルが高すぎるので、未経験就職のためにベストとは思わないんだよね。

paiza B ランクなら未経験でも狙える範囲だろうし、それでそこそこの企業からオファーが来る。

2022-05-10

anond:20220510133011

あの作者さんwebデザイナー挫折した?っぽいのに技術知識がちらほら見えるのが不思議

CSSおかしいところ指摘するところとか競技プログラミングとか。

エンジニアwebデザイナーマンガ描いてるんかな?

2022-05-08

anond:20220508112227

なるほど。実はちゃんリンク先見れてなかったけど、見てみると結構お高いのね。

機械学習にも興味はあるが、確かに競技プログラミングとかの方により興味があるので、院の方の成績がどう扱われるかを確認して、問題なさそうだったら受けないかも。なんにせよありがとう

もし何年かして受かったらまた増田投稿してみるよ。もし見かけたら是非コメントしていってくれ。

2022-05-07

anond:20220507150454

元増田です。

おすすめありがとう。Courceraもたくさんあるからおすすめがあるとありがたい。

Build a Modern Computer from First Principlesってやつが特に気になるな。日本語でもオライリーから本が出てたやつの大元っぽいな。

競技プログラミングちょっと好きだし、Algorithms, Part Iってのも面白そうだ。

色々なサイトを組み合わせて学ぶのが良さそうだね。ありがとう

2022-05-06

anond:20220506204537

元増田です。

なるほど。スクリーニング突破した後に競技プログラミングが活きてくるのか。仕事に役立つとか考えず、完全に趣味でやってたけど、役に立つならよかった。

となるとやはりアプリ作りと英語勉強やな。何とか頑張っていきますアドバイスありがとう

anond:20220506203156

競技プログラミングやっているなら尚更都合がいい。書き忘れたけど、欧米企業はほぼ100%技術試験は出る。口頭での技術試験に加えてコーディングテスト

コーディングテストは応募後、スクリーニング突破できたら、期限内に成果物を提出するように、問題メールで渡されることが多い。

問題はいろいろあって、こういうのを作ってってパターンと、競技プログラミング系が多い。前者のほうが多いけど。自分海外企業応募するかーってなったら、その準備として競技プログラミングはやる。日々やれればいいんだけど、座学によるinputも大事というかそっちにも時間取られるんだよね。

anond:20220506201627

元増田です。親切な助言ありがとう

なるほど。やはりリモートにせよなんにせよ、GitHubちゃんとしたコードを載せないといけないよな。(当たり前か。)

いつも作るアプリネタが思いつかなくて結局ほとんど何も作れてないが、もう何でもいいから作る事から始めてみるよ。

(代わりにAtcoderとかの競技プログラミングとかならやってるけど、残念ながらギリギリ緑色くらい。まあ競技プログラミングコーディングテストとかくらいしか役に立たなそうだな。アプリ作りに専念しよう。)

英語勉強の方は、貯金が無いから当分は働きながら勉強する感じになるな。貯金ができたら英語勉強に集中することも考えてみるよ。

なんにせよ、少し道筋が見えてきたような気がする。ありがとう

2022-04-27

chokudaiにリムられてガチ凹みしてる人、競技プログラミングオンサイトで「フォローしてくれませんか?」っておずおずと言ってきた人じゃん フォローという行為に関してかなり価値を感じてるんだろうなあ

2022-04-12

趣味類型

休みの日にあなたは何をしているだろうか。 Youtube を見ている?アニメを見てる?競プロをしている?

お金をもらうわけでもなく自発的に行うそれらの活動趣味と呼んでも差し支えないだろう。 人生を豊かにするためには趣味の充実が不可欠だ。 私は趣味は以下のような4つ種類に類型化できると考える。

体験型体験することに価値を見出す。 登山釣り旅行スポーツなどこれに該当する。

求道型は能力の向上に意味を見出す。 数学競技プログラミングなどの学問的なもの将棋筋トレなどが該当する。

また、消費以外の全てのタイプ趣味は求道型の要素を含んでいる。 スポーツ釣り、絵を描く、どれも能力の向上も重要目的だろう。

しかし、それらは求道型とは異なる。 なぜなら多くの場合能力の向上自体目的ではないからだ。 (もちろん人によって例外はある)

創作型は自分で何かを創作することに価値を見出す。 絵を描く、音楽を作る、小説を書く、編み物をする、歌を歌うなどがこれに該当する。

消費型は消費したコンテンツ自体価値を見出す。 見た映画面白ければ嬉しいし、つまらなければがっかりする。

私はこの4つのうち全てをバランスよく行うのが最適だと考える。 少なくとも現状は消費型に偏りすぎている人が多いと感じる。 私の場合で言えば YouTube を見すぎている。

消費ばかりをしていては人生は豊かにならないのではないか最近私は考えている。 問題はそこじゃないとつっこみが入りそうだが。

(追記)

コメントを読んでいると同じ趣味でも異なるタイプとして受容されることがあるようだ。

前述した類型化は趣味のものというよりも趣味に対する向き合い方の類型化と捉えたほうが良いのだろう。

2022-02-09

その辺の技術者知識で負けないくらいのふるすたっくえんじにあになりたい

機械工学大学で学んだ。機械系4力学さわりだけなら大体やったがもう忘れている。

・切削加工はけがきフライス盤、ボール盤、くらいならできるが複雑な形状は作れる気がしない。そういえば旋盤は使わなかった。耐久性を考えなければ3Dプリンタでなんでも作れるらしいが、3Dプリンタは触ったことがない。

CAD大学の演習でSolidWorksを触った程度。もうすっかり忘れている。手書きの製図とかは調べて思い出せば簡単な形状ならできるかもしれない。

シミュレータANSYSマニュアル通り触った程度。動力学解析とか連成解析とか仕組みは全くわかっていない。

電気工学はだいぶ勉強不足。簡単回路図チップ製品情報を睨めっこしながらINとOUTと接地をどうすればいいかくらいはわかったが、複雑なものになるとダメArduinoとRasberryPiは買ってみたが埃かぶっている。論理回路の読み方はすっかり忘れているが調べれば思い出せると思う。

化学系は全くの無知大学受験で知識は止まっている。物性物理的なところも無知

数値計算PythonMatlabちょっとできる程度。ライブラリを使った行列計算簡単ニュートン法くらいなら書けるが、精度や速さが必要だったり複雑になるとダメ。解析は微分積分常微分方程式を調べて思い出せばできる程度。測度論とか特殊積分かいわゆる大学数学的な道具が必要になる解析はできない。

競技プログラミングちょっとかじったがやめてしまった。むずかしすぎた。

機械学習や統計はなんとなく知識はついているが、手を動かして何か作ったことはない。この前統計検定1級落ちた。

バックエンドSQLをそれなりに書いてとりあえず動くものなら書ける程度。可用性とかパフォーマンスとか考えられるレベルではない。JavaJavaEEを横展開的に書いた程度。理解できている自信はない。保守性高めたりデザインパターン的に綺麗な書き方とかできない。C++は一瞬だけ触ったことがあるが、環境構築ハマった&謎のSegmentation Faultで苦手意識を残したまま。Go?Rust?なにそれおいしそうだね。

クラウドAWSマニュアル通りに使っている程度。1から設計なんてできない。なのでAWSソリューションアーキテクトを勉強中。AzureやFirebaseは触ったこともない。

ネットワーク系とかセキュリティ系は全く勉強不足。応用情報ギリギリ合格できる程度の知識しかない。わかるようにはなりたい。

フロントエンドFlutter勉強中。Flutterむずかしい、どんな言語でもそうだけどチュートリアルから業務レベルまでの乖離ありすぎてよくわからない。javascriptはjQuery一強時代ちょっと書いた程度。VueとかReactとかなにもわからない。TypeScript?なにそれおいしそうだね。

ハード系だったりファームウェア系だったりコンパイラ系は何もわからない。わかるようにはなりたい。

全部中途半端だな、、、

2022-01-15

anond:20220114133403

競技プログラミング」をやりましょう。

あなたの特徴を要約すると

もうプログラマーにぴったりじゃん。

難しい文学理解できる頭があるのならプログラムなんてクソ簡単です。

まずは「競技プログラミング」を始めてみましょう。

日本だと https://atcoder.jp/メジャー

まあゲームみたいなもので少しずつ自分レベルがアップしていきます参考書もいろいろ出ています

勉強自体は得意なら1年とかで、すぐにその辺のクソ雑魚プログラマーを追い越せると思います

高校数学をやっていないなら高校数学ちゃんとやっておいた方がいいと思います

2021-10-23

ゲーム感想]Celeste(セレステ)

人にオススメされたセレステ、とりあえずエピローグまで終わった。

エンドロールを見ているときの満足感がすごかった。やっぱこういうティーンエイジャーが悩みを超えていく物語洋ゲーによくみる(※自分プレイした中では)ストーリーでかなり好きだ。セレステ主人公デリンはうつパニック障害といった心因性の症状に苦しんでいて、自分を映し出す鏡であるセレステ山でこの悩みに立ち向かっていくことになる。

アクション

ゲームシステム自体ジャンプステップを利用してステージクリアしていくアクションゲーム。かなり死ぬけどすぐ手前から復活できて全くイライラは感じなかった。アクション自体は終盤まで対して変化しないけど、チャプターごとに独特のギミック存在するので最後まで飽きもこなかったなあ。ステージ攻略には2段階あると思っていて、1段階目が解法をつくること。ここでジャンプして壁掴んでからステップを斜め上に入力・・・みたいな方針が立てば、後はそれを達成できるまで何度もプレイする。この考え方はAtCoder競技プログラミング)みたいだな、とか感じたり。適切に解法を立てて攻略できたときに正解(AC)として認められる感じが。区切りの間隔が短いから途中まではできるのにどうしても最後のここで失敗する・・・みたいなことも無く、サクサクと集中してプレイできた。

ステージは一本道ではなく、高難度の寄り道があってクリアすると♡をもらえる。ただこの♡、集めてもあんまり意味がないみたいだからステージをしらみつぶしに探すのが嫌で積極的には集めなかった。そしたらチャプター8(エピローグの後の章)!!!!♡が無いとプレイできないっぽくね???特別集める必要はないんとちゃうかい!!!!!!それだけ思いました。

ストーリー

ストーリーはざっくり言うとセレステ山の山頂を目指していくというもの山登りは頂上っていうゴールが明確にあるからゲームストーリーの柱として相性がいいなと思った。というのもストーリーだけで見ると「A Short Hike 」によく似ていたから。どちらも山頂に行くことで悩みを克服するんだけど、その悩みというのがA Short Hikeなら母親の手術、Celesteならパニック障害。どちらもなんかリアルで嫌な不安感でそれが山頂での景色を見たときの達成感を演出するためにものすごく効いてると思った。

エンドロールは山頂に到達した後のその後がずっと後ろに流れていて雰囲気がとてもよかった。ちょっと置いて行かれそうになった”もう一人の自分”が慌ててマデリンに走って追いつくところとかは、近付く別れを惜しんでるのかなとか考えてしまって悲しかった。エンドロールにこういったその後を描くのは「洞窟物語」と似ているな。自分攻略したステージを背景に各NPCが思い思いに過ごしている様子はNPCとしてではなくそ世界の住人として生きているようでなんか嬉しい。

チャプター8以降はやるか分からないけど、アクションストーリーどちらもかなり好きなゲームだった。

プレイ時間:8時間弱くらい

Epic Games Storeの無料配布でプレイ

2021-10-05

アプリ開発者47歳って有能だよな

競技プログラミングテストケースが解ける時点で日本プログラマの上位10%以上だろ。

実務経験豊富だし、うちの会社にほしいレベル

給料いから来てくれないだろうけど。

2021-07-09

駆け出しエンジニア技術じゃなくて心構えばっかり話してるからクソみたいな事言われてるけどさ

日本ITエンジニア界隈って年齢問わずその層がメジャーじゃね

(もちろん個人開発系/オープンソース系/言語フレームワークコミュニティ系/オンオフ勉強会系/競技プログラミング系みたいに技術のものを語る人間は多く存在するが)

キラキラエンジニアみたいな心構え論もそいつらをバカにして叩いて仲間内で盛り上がるのも表裏にしか見えねえ

2021-07-08

なぜ子供がいると競技プログラミングができないか

6時 子ども順次起床 朝食や保育園の用意

7時30分 登園、出社、仕事

17保育園お迎え、夕食の準備、子どもの面倒と家事家事家事絵本・本の読み聞かせ、寝かしつけ、家事

22時 家事が一通り終了、下の子がようやく就寝、保育園でよく昼寝をするので(しないと15時以降に寝落ちして危ない)この年齢の子は就寝が遅い、夫婦お茶をすすりながら自由時間、過ぎ去るAtCoderコンテスト

2021-06-30

anond:20210630131406

プログラミングで何をやりたいのか次第だと思う

普通に店で売ってる奴買えばプログラミング程度でそう困りはしないと思うけど

・ただただプログラミングというものに触ってみたい / 競技プログラミングやってみたい

スペック不問

ゲーム作りたい(RPGツクール(のライブラリ開発))

→(最新のはしらんけど)MVまでなら特にスペック不問

ゲーム作りたい(Unity/UE4等)

→そこそこ良い奴買ったほうが良い

AIやりたい

→探索処理速度に直結するので結構良いやつ買ったほうが楽 しょぼマシンでもクッソ時間かかるけど出来ないことはない

あとはMacWindowsかの二択になると思うけど

mac環境構築が楽。資料少ない。動画編集とかイラスト系が強い

Win環境構築が面倒。資料多い。ゲーム運用が強い

ざっとこんな感じじゃないか

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