「malloc」を含む日記 RSS

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

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 不一致しかない、という結果にはなったけど

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

同じような未経験の人へ

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

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

2021-02-11

続々:45歳多重派遣プログラマ退職エントリ

匿名自分ログを世の中に浮遊させ、そして拾って頂けるのは楽しかったです。

長く続けるとバカなので何処かで絶対にボロが出る。なのに書きたくなってしまった。

投稿です。きちんと上がらなかったように見えたので、消してしまって、もうええかと思ってしまったのだけど、

たかったというコメントを見て、少し修正して上げることにしました。こんな駄文ありがとう

45歳多重派遣プログラマ退職エントリ

https://anond.hatelabo.jp/20210130001953

続:45歳多重派遣プログラマ退職エントリ

https://anond.hatelabo.jp/20210131035752

これらの続きです。

====

前回のエントリでずっと4GBのメモリとともに作業していたと書いたが4GB以下が正しい。

最初現場は128MBだった。あと、盾を鉾と書いていた。この誤字脱字と誤用の多さで私のプログラマとしての質の低さもなんとなく察して頂けるだろう。

結婚した話◯

何故か結婚の話が書かれていないという書き込みが幾つかあったので結婚の話から

30歳を越えてから趣味が充実していた事もあって周囲には煩く言われるものの、結婚を考える事はあまりなかったし、結婚分岐に入ることが必ずしも幸福につながる選択肢とは限らないと考えていた。

この考えは今も変わらないが私は運良く幸福につながるほうへ入ったようだ。すまんな。

何せ30歳を越えてからは同じ趣味おっさんの友人たちと焼き鳥屋であーだこーだいいながら企画を練り、イベントを立てたりするのが楽しくて仕方がなかった。

20代があまりにも労働をしすぎた。22歳から28歳までの6年間、年俸制なので一円残業代が出ないのに月300時間勤務を2年半はやったと思う。最初のうちはISDN接続テレホタイムでのネトゲ自分ゴールデンタイムであり、息抜き時間だった。

時代が今なら渋谷凛か風野灯織に貢いでいたことだろう。長い労働時間人生搾取だ。

嫁は異業種の人で、友人のボカロPファンだった。彼のライブに通ううちに顔なじみになり、少しだけ会話をするようになった。

ある時行ったライブが月曜夜の開催ということもあって若い人が多く、ライブハウスの中でスーツを着た客が私と嫁しか居なかったので思い切って「今日スーツ、我々だけですね」と話しかけ、そこから色々な話をしたのを覚えている。いやらしい。

ボカロPライブでの出会い、つまり私が結婚出来たのは初音ミクさんのおかげだ。

30歳になったあたりからようやくIT業界に過残業を何とかしようという機運がやってきた事、そして定時で上がる精神的な胆力がついた事で音楽を作る時間精神的な余裕が出来、人との交流が生まれライブに行く機会が出来たから私のような人間でも結婚出来たのかもしれない。しらんけど。

国勢調査によると35歳を過ぎてから結婚した男性は約3%らしい。私は一生分の運をこれで使った。(正しくは6.8%だと何処かの教授が言っていたが)

自分が居た現場の雑感だと、同じシステム開発現場でも大手SI大手SI子会社のほうが結婚している人が多かったように思う。多重派遣はやはり収入面で結婚に対してネガティブ意見を聞くことも少なくは無かった。

若い頃は親にも親戚にも「そろそろ結婚も考えないといけないだろうから派遣社員辞めないとね」と言われたことを思い出した。SES増田は一度は言われたことがあるだろう。

世間一般的には技術職というイメージよりも派遣社員というメージが強く、収入面も相まって世の中の反応厳しい。

一般派遣請負資本金

普通一般派遣請負派遣の人が混在している現場が多いと思うが、前者は1人でも派遣が出来、上位会社現場リーダーが直接指示をすることが出来るので最近はその方が多いように思う。

ところが、一般派遣会社として登録するには資本金が多くないとダメで、派遣法が改正されたあたりで資本金が少ない会社請負の道を選ぶしかない。

そうすると複数人現場に行き、自社のリーダー仕事の指示をされる形になる。ただ、コレは守られていない現場が多い。

さらに、大手大手子会社取引を直接行うのにも資本金の大きさ・設立してから何年等の条件があったりもする。

資本が少ない会社資本金の多い「別な会社を迂回して」契約する。そこに多重派遣ができる仕組みの1つがある。上位請負営業が◯◯社経由しろという場合利権癒着場合もあるのだろう。

勿論お願いしやす会社という場合もあると思うが。

新人教育を受けれなかった話◯

新人の時、パワハラ教育担当に私が毎日何度も怒鳴られているのが流石にプロジェクト内で目に余るようになったらしく、私はドキュメント整理という新たな仕事を貰う事になる。

炎上プロジェクトの為、全く作られて無かったクラス図をソースからRational Roseで自動生成し、体裁を整えて他の設計書も含め印刷をした。同じものを2部作るのだが、何故か同一性保持という理由で一部はコピー制作。分厚いバインダーに綴じた。

印刷コピーで休憩もせず毎日終電生活をしていた時、PMに「広島の二番バッターみたいだなおまえ」と言われたのを覚えている。コツコツやるけど面白みがない人間だと言われたのだ。

要領の悪い私に休憩のタイミングなんて解らなかった。ましてやパワハラマンに使えないと毎日散々どやされ続けた後なので尚更である

その経験から私は同じプロジェクトに居る若手に「そろそろ1回休んだら?」「いつまで働いているの?増田がそろそろ帰れって言ったって言ってもいいよ」となるべく声をかけるようにしていた。モテそう(モテなかった)

この時、たまたま席が空いているという理由で隣に座っていた方が、のちに難易度が高い事で有名な銀行統合現場の某SIトップになっていた。プロジェクト雰囲気は良くなかったが、いつもにこやかで私のような末端にも優しかったのを覚えている。出来る人は余裕がある。

印刷業務が終わった後、入社してからずっとテストだけをやらされていた1年上の先輩のアベさんと、とうとうプログラム修行に出してもらえる事になった。

新規開発のプロジェクトであるプログラムも一杯書けてラッキーなのではと思っていたのだが、自社の人間はアベさんと私だけで、あとは上位会社PMと、更なる下請け構成されていた。

現場リーダー下請けの人で、この人が私とアベさんの教育係という事になった。

自社の営業初日に来て「この子よろしくね」とリーダーに伝えた所、「任せてください!」と良い返事をしていたが、自社営業が居なくなった翌日から面白いくらい態度が一変することになる。

何を聞いても露骨悪態をつき教えてくれず、技術的な質問も一切受け付けない。

流石にアベさんと自社の営業に伝えたのだが、翌日朝私のところにやってきて「チクったな」「自社の人間でも無いお前らに教える余裕はない」と言われてしまうだけで特に事態改善はされなかった。パワハラ上司の次はこれだ。駅のホームドア大事なので全駅に付けて欲しい。

救われたのはインターネットが使える現場だった事だ。とはいえ、なんせソースレビューも私とアベさんで互に行うので、技術的な進歩がまるで無い。

ある時、私が書いたプログラムメモリを使いすぎてフリーズするようになり、問題になってしまった。他にも技術的に問題のあるプログラムを書いてしまった事が続いたのと、リーダーに対してハッキリとモノを言うことも災いし、PM判断半年プロジェクトを出ることになってしまった。

2つ目の現場で早速クビを経験した。

もっとうまく立ち回る事も出来たように思う。しかし、若造人生経験値が足りなかった。

多重派遣の大きな問題として、現場ガチャにより環境が大きく変わるというのがあるだろう。2~3年も我慢すれば大抵の場合次の現場に行けるのかもしれないが、短い人生の2~3年は少ない数字ではない。

請負ではなく一般派遣扱いで来る技術者の中には新人なのに1人で派遣されてくる人も多い。そんなのは新人教育とは言えないと思うのだが、どこの会社募集要項にも新人教育バッチリと書いてある。

その「新人教育」とやらの実態というのは大抵の場合、外部で行われる初心者研修と、自社の営業が「この子よろしくね」と現場に伝える程度の事でしかない。

社会人としての新生活での不安技術的な不安、誰が教えてくれるのかも解らない不安、定時になっても誰も帰らない・帰って良いとも言われない、作ったもの品質不安、数多くの不安を抱えて過ごさなければならない。ちゃん相談出来る人も現場に居ないのである

技術的な所は勿論、精神的なケア必要な時期だと思うのだが、このような体験20代前半でしないといけないのはどうも無駄な苦労をしているようにしか私には思えない。

インターネットさえあれば、プログラムは書くことが出来る。

ただ、新人が伸びる為に必要なのは経験者によるソースレビューによる指摘」が必要不可欠だと私は思う。レビューを先輩・上司が行い、新人が書いたコード信頼性担保が出来ないと、余計なバグを生み、可読性・メンテナンス性も落ちるだろう。

なによりバグを出してリーダーPM顧客に「こいつ大丈夫か?」と思われるストレスの大きさと自信喪失感は長く忘れられない。

余談だが、最初教育担当パワハラ先輩とはその後別な現場で一緒になった。しかも彼は会社倒産後、上位請の会社転職していたので私に仕事を振る立場として現れたのだ。全く知らなかったので顔を見た時は「ヤバい現場に来た」と焦ったのだが、「あの時は俺の頭がどうかしていた。申し訳ない」とまず謝られてしまった。驚くほど柔和な性格になっていて棘が全て抜け落ちていた。その後一緒のプロジェクトの間はたまに昼飯を一緒に行くまでになった。

約1年一緒に働いたが一度もドヤられる事は無かった。許せるか許せないかは別として、パワハラをするほうにも何かしらの事情や背景があるのだなと一つ学んだ。

派遣会社の自社忘年会

社会人1年目の忘年会ゲイショーパブ観劇だった。そこでアベさんはダウンタウン浜田高校(全寮制男子校)の同級生というママに唇を「むちゅーーー!!」と音が聞こえるような熱烈な口づけをされ、人生ファーストキスを奪われていた。私は隣でただ震えるしかなかった。

二次会は無く、特に他の社員との交流も無く忘年会解散

知人もなく上京してきた為、他の社員交流する帰社日をそこそこ楽しみにしていた私は怒りのあまり社内報若気の至りで”ボロクソ”に書いた所、社長の目にとまり、翌年から忘年会幹事を任されることになってしまった。なにせショーパブ観劇社長要望だったのだ。

そして、普通居酒屋特に弾まない会話をして終了をする忘年会を2年繰り返した。

自社の忘年会を面倒に思うベテラン社員は多く、各現場電話で来てくださいねと念を押して来て貰ったのに参加者全然楽しそうではないのだ。

普段それぞれが別の現場に居る人なのでそれほど同僚感も無く、特に仲も良い訳でもないので会話が弾まないためだ。良かれと思って2時間飲み放題にしたが、本当に盛り上がらない。

「なるほど、これで会話をしなくて良いイベント(且つ社長趣味)がブッキングされたのか・・・」と理解した。

その経験があり、”自社”に缶ビール等の各種アルコールノンアルコール飲料テイクアウト料理を用意し、16時開始、17から随時帰りたい人は帰る。という方式に変えた所、立食(椅子も勿論ある)で仲の良い人の所に居て彼らとだけ話すことも出来るし、色々な人と交流することも可能になった。時間が短いために会話のネタに困ら無い事も功を奏し、思った以上に盛り上がる事が出来た。

子供が出来た今ようやく思うに至ったが、子育て世代も延長保育やパートナーにお願いすることもなく早めに帰れて良かったはず。殆ど17から続々と退社していたが、以前は無かった有志の二次会組もいくつかあったようだ。参加者にも総務部長にも「毎年これで良いね」と言われ、ほっとしたのを覚えている。

何が正解かは解らないが、業務時間内で終わる自社での短い時間立ち飲み椅子席あり)は好評だったので、幹事をやらされがちなSES増田は参考になれば良いなと思う。

理不尽アイデアにブチ切れる〇

基盤まわりの仕事をしていた時、あまりにもプロジェクトメモリ初期化漏れが頻発して問題となり、プロジェクトのお偉いさんが捻り出したアイデアが「”物理メモリ全部を定期的に端から終端まで0で埋める」というものだった。

そしてそれをどう実現するか?という会議に呼ばれたのだ。

指を使い「物理メモリを”端から””端まで”全部、プログラムが動かない時間に定期的に一回ゼロで埋めればいいじゃない?」との説明があった。

これは良いアイデアだとご満悦の上役と、違和感を覚えない他のベテラン参加者達。

「まず、仮にこれが実現出来たとして、サーバーが立ち上がった時点でOSやミドルメモリを利用していますが、どうしますか?OSもミドルも当然落ちます。」

メモリですが、皆さんが普段変数宣言mallocで受け取っているメモリの番地ですが、全て仮想メモリアドレスなのはご存知ですか?」

「我々のような庶民は直接物理メモリアドレスに仕組み上アクセス出来ません」

物理メモリアクセスするにはカーネルプログラミング必要になります

メモリにはユーザープログラミングで触れる事が出来る層と、カーネル層という仕切り、さら仮想メモリ物理メモリという仕切りがある為に、堅牢性を保持している云々」

ここまで伝えても皆ピンときていない。文章にすればまだ解るが所為オタク早口説明なので当然、私の話術にも大いに問題はある。

もしかして自分が間違っているのか?このままだと私がこの対応をやらされる羽目になる。

私は交渉事でうまく立ち回れる技を持っては居なかった。なので、最後の手段に出た。

「だからこんな方法は絶っっ対 実現できないんですよ!!!」と突然のブチギレ。いや、出来るのかもしれんけど。

一同ポカーン。突然のメガンテを使った私に皆パルプンテ状態になり、

増田がココまで言うのなら出来ないんだろう」という事になった。

MPHPと色々なものを失い、平和を保つことが出来た。

正直、高い技術必要ない汎用的なシステムの開発現場のなんてこんなものだ。AWSGitHubも触ったことのない私があえていおう。

最初エントリーに業務時間内に勉強させろと書いたが、目的が無ければおそらく時間があっても、「私は完全に仕事をしています」という顔をしながらvi青空文庫アマチュア小説を読んでいた時間の方が長かったのではないかと思う。

今であればダメ理由説明しますので、別途時間を頂けますか?くらいは言えるはず。若さである40歳位の頃の話だが。

次回、起業の話で終わろうと思います

2019-01-11

[]2019年1月10日木曜日増田

時間記事文字数文字数平均文字数中央値
0010915759144.658
0110713787128.958
0280724590.652.5
03202172108.653.5
04222822128.366.5
05142632188.065
0639342987.957
0746293763.831
08606654110.953
09101583657.839
1082722488.149
111581259979.748
1213415668116.937
1316727641165.574
142091838488.050
151951536178.841
161791565387.444
172241691175.552.5
182011831491.153
191521200179.044
201531385190.540
211201184498.741
2213416047119.859.5
2320628704139.342.5
1日2912293475100.848

頻出名詞 ()内の数字単語が含まれ記事

人(324), 自分(202), 女性(176), 女(166), 男(153), 差別(143), 話(136), 今(127), トランス(108), 増田(106), 問題(99), 人間(85), 意味(81), あと(79), 前(76), 普通(75), 日本(74), 男性(72), ロリコン(71), 必要(69), 理由(68), 感じ(67), 気(64), 好き(62), 弱者(62), KKO(61), 社会(61), 子供(59), ー(59), 世界(56), LGBT(55), 主張(54), 他人(51), 理解(51), 金(51), 気持ち(50), 言葉(50), 相手(50), 仕事(49), 権利(48), 湯(47), 存在(47), 結局(46), 他(45), 全部(44), 関係(44), 別(42), 支配(42), 自然(42), 無理(41), 最近(41), 人権(40), 体(40), じゃなくて(39), フェミ(39), 昔(39), 時代(38), 犯罪(37), しない(37), 頭(37), トイレ(36), しよう(35), 目(35), 場合(35), 日本人(34), 全て(34), 性(34), ワイ(34), 絶対(33), レベル(32), 元号(32), 手(32), ネット(32), 議論(32), 人生(32), 東京(31), 事実(31), 記事(31), 名前(31), 会社(31), 時間(31), 批判(30), 本人(30), 今日(30), 方法(30), おっさん(30), 性的(30), レイプ(30), 現実(30), 差別主義(30), 意見(29), 可能性(29), 逆(29), 当たり前(29), 排除(29), 男湯(29), セックス(29), 内容(28), 場所(28), 判断(28), 時点(28)

頻出固有名詞 ()内の数字単語が含まれ記事

増田(106), 日本(74), KKO(61), LGBT(55), じゃなくて(39), フェミ(39), ワイ(34), 東京(31), 差別主義(30), 男湯(29), 可能性(29), 被害者(24), 中国(24), 平成(23), トランスジェンダー(21), 犯罪者(21), キモ(19), 更衣室(19), 元増田(18), twitter(18), わからん(18), マジで(18), ツイッター(17), 論理的(15), 普通に(15), シス(15), 盗撮(15), マイノリティ(15), 韓国(15), w(15), アメリカ(15), いない(14), 新元号(14), なんだろう(14), MtF(14), 異性愛(14), Twitter(13), 社会的(13), ブコメ(13), 笑(13), リアル(12), OK(11), 自分たち(11), hatena(11), ポリコレ(11), ツイート(11), 何度(11), 知らんけど(10), ブログ(10), 表現の自由(10), ブクマ(10), キチガイ(10), 江戸時代(10), なのか(10), 迷惑行為(10), お気持ち(9), 何回(9), 北海道(9), フォロワー(9), 加害者(9), 10年(9), 性犯罪者(9), 女に(9), SNS(9), 前澤(9), A(9), ドラえもん(9), ちんこ(9), 基本的(9), 個人的(8), ZOZO(8), ヘイト(8), 精神的(8), ニート(8), 男性器(8), 女性専用車両(8), キモカネ(8), 女性差別(8), 1人(8), どんだけ(8), 障害者(8), なんの(8), ありません(8), アプリ(8), 分からん(8), レーダー照射(7), いいんじゃない(7), 100万円(7), 反差別(7), 性犯罪(7), 京都(7), Apple(7), 化学調味料(7), 最終的(7), はてブ(7), IT(7), クライアント(7), 小児性愛(7), malloc(7), 外国人(7), タトゥー(7), 肉体的(7), トラバ(7), ガチ(7), 人権侵害(7), イケメン(7), 一年(7), 価値観(7), ???(7), 男性差別(7), ネトウヨ(7), 恐怖感(7)

本日の注目単語 ()内の数字単語が含まれ記事

ぱもうめちゃくちゃ(6), malloc(7), 男湯(29), 春菊(5), NGT(6), 湯に(13), 内海(7), トランス(108), 結婚年齢(4), タイ米(4), MtF(24), 湯(47), トランスジェンダー(21), 元号(32), 根源(16), ロリコン(71), 盗撮(15), 銭湯(15), 特権(15), 迷惑行為(10), 性交(13), 弱者(62), バーチャル(12), 支配(42), 同性愛(22), 差別主義(30), 児童(15), KKO(61), 恐怖(26), LGBT(55), レイプ(30), 自然(42), 施設(17)

頻出トラックバック先(簡易)

トランス女性への根源的恐怖感はスルーされていいわけ? /20190110110456(47), ■ガチ新元号を予想する /20190110134005(24), ■ツイッターのせいで高校から友達が死んだ /20190109004202(20), ■数学で「公式を覚える」という言葉抵抗がある /20190110142434(17), ■anond20190107214043 /20190109211637(12), ■(追記有)某プラモデルメーカー転職面接を受け /20190110003736(12), ■〇〇トースト /20190110093444(8), ■三大「社会に出る前に学校で教えてほしかたこと」 /20190110112133(7), ■anond20190109004202 /20190109165130(7), ■艦これアニメ2期やるっていうけど /20190109002808(6), ■極端な話、プログラムってifとloopだけだよな /20190110163744(6), ■デザイナー尊厳を傷つけず「クソUIですよ」って伝えるのにはどうすればいいの? /20190110171053(6), ■anond20190110003942 /20190110004038(6), ■最近ジェンダー系の話題をよく見るけど /20190110151449(6), (タイトル不明) /20190110000033(6), ■LGBT問題根本は「性欲」 /20190110135642(6), ■セックスレスだから別居したいけどあなたとはセックスできないっておい /20190109162531(5), (タイトル不明) /20190110154853(5), ■人生を狂わせたいじめっ子芸能人になってた /20190110083410(5), ■この205号室ってどっから入るの・・・? /20190109081746(5), ■アラサーくらいの女の人と会話をすると消耗する /20190110231610(5), ■バーチャルさんはみている、つまりこれは /20190110012757(5), ■雨は止まないし、夜も明けない。 /20190110015151(5)

増田合計ブックマーク数 ()内の数字は1日の増減

5932940(2288)

2019-01-10

anond:20190110165443

実際問題今のC環境malloc()の発生しうる要件ってOS作るとかレベルくらいしかねーもんな。

組み込みmalloc()コードがあったら状況次第で問い詰めだろうし。

anond:20190110164836

サンドボックス環境アプリ側が動的にメモリ解放はしねえからmallocコードがあっても実質既に確保済みの byte ** を返してるだけって事だよ。

anond:20190110163744

mallocプログラミングではないと申すか?

まぁ、最近は気にしなくてもいいけどさ。

2018-10-17

C言語malloc()はエラーチェックいる?

https://qiita.com/hamichamp/items/7b7a7ee091a6856ac900

この記事ブクマ集めていて思い出したけど昔からの疑問。

RubyなりJavaなり、ほかの言語だとメモリが足らないのをハンドリングしてエラー処理しろなんて言われないのに、なんでCだけ言われるんだろう。

普通out of memoryなんて、例外キャッチしないでただ落ちるだけだよね。

Rubyとか現代的な言語でも、巨大なデータを扱うときメモリのことを意識するだろうけど、ちまちました文字列操作ときメモリが足らなくなるかもなんて考慮する人いないよね。

2015-01-29

初めてじゃなかったCの思い出

今やプログラミングといえば、Webなどで使われるような高水スクリプト言語中心のアプリケーションプログラミングが主流だ。

そんなこともあり、もはや以前の低レベル言語によるシステムプログラミングの苦労など、タダの昔話である

そこに来て、実際は齧った程度の分際で、性懲りもなくそんな昔話を書いてみる。


今も昔も、基本的に難しい仕事無茶振りから始まるものだ。

少なくとも10年位前に自分が手がけた(押し付けられた)仕事はそうだった。

大学で初めて触ったC言語しかポインタからないで止まっているような奴に、電文の再配信プログラムを任せたのだから


客は「遅延が絶対許されないシステムなのでJavaとかPerlとかはやめてねー」とにこやかな笑顔かつ笑ってない目で注文してきた。

そうなるとC/C++くらいしか事実上選択肢がない。

このうちC++は、Java経験がある自分からしても仕様が膨大かつ複雑すぎて、とても手に負えないと感じ、必然的にCで書くことに。

勿論Cの言語仕様がKR本一冊で収まるほどコンパクトであっても、それが簡単であることを全く意味していないというのを開発早々に思い知らされたのだが。

あ、Cと言えば電文提供側の機関が受信用のスケルトンプログラムを一応は用意してくれていたが、どう見ても電文受信中に接続が切れた時のことを考慮していない内容で、全く参考にならなかった。

その時点で相当ヤバいである


コード書きにおいては、例え一人屋台の俺ルールであろうが、コーディング規約のようなもの絶対必要である

その時のルールは「gccオプションに"-Wall"を入れた状態で、Warningゼロになること」にしてみたが、その途端、日付変更線をまたがない限り退社できない生活が始まった。

というかオブジェクトを使えないだけでも地味に辛いのに、更にCの言語仕様コンパクトである以上に原始的と言っていい代物で(だからWarningは基本無視できないのだ)、しか言語仕様以外の環境依存要素が山積していると来たもんだ。

そんな言語システムコールだらけのコードかつ複数ファイルディスクリプタの同時監視(即ち非同期でノンブロッキング)しかマルチプロセスシグナルもあるよ!とか、お客さんは俺を殺す気か、そもそも完成させる気無いだろとか、今だったら思う(当時はそう思う余裕もなかった)。

仕方なく最初のKRに加えて「UNIXネットワークプログラミング」をわざわざ東京に出かけてまで買って読み漁った。

後にも先にも、古今東西の名著と呼ばれるような本を、泣きながら読んだのはこの時だけだったりする。

そこまで凄い良書なのになんで絶版になったんだか。


いかし、それでも「子供を殺しても死なない」、かなり前の処理での領域破壊のせいで突然プログラムが止まっちゃうなどなど、やればやるほど問題が出る。

シグナルを受信し、仕様のとおりに処理するのがこんなに難しいのか!と途方に暮れたこともあった。

そして途方に暮れても解決の手段になるような便利なツールもなければライブラリもない。

結局、「ある程度正しく動いたら、あとは出来た所まで」で勘弁してもらってようやく開放されたが、今でも当時の自分仕事ぶりには全く満足していない。

無駄に頑張ったというか、頑張っただけの仕事であり、折角低レベル実装というCの本領発揮分野の案件でありながら、スレッドmalloc()、可変長引数は遂に習得できなかった。

こういうプログラムって、どうやったら正しく動かせるんだろ。


このような経験を経て、後年、Cやシステムプログラミングを指してギークな人々が

Cはとても高効率ですし、マシンリソースもドカ食いしません。残念ながら、Cがそれだけの効率性を実現するには、あなた自身が低レベルリソース管理(たとえばメモリ管理)を手作業でやってあげなくてはならないのです。それだけ低レベルコードがあると、複雑でバグも起こりやすいし、デバッグですさまじい時間をとられることになります今日マシンはずいぶん強力になっているので、これは通常は悪いトレードオフです――マシン時間を少し非効率に使っても、あなた時間をずっと効率的に使う言語を使うほうが賢明でしょう。

本物のプログラマアプリケーションプログラムなど書かず、まっさら金属板にゼロから書き込んでいく。アプリケーションプログラミングなど、システムプログラミングのできない弱虫のすることだ。

と言っていたことは正真正銘の事実であると痛感した。

あと、あれほど苦手だったポインタについても、「ポインタ理解できないと永久にC初心者」というのを嫌でも理解した。

あれはギターのFコードやSEALsのヘルウィークみたいなもので「習得できなかった者にとってはキャリアの終わりを意味するが、習得できた者にとっては始まりですらない」ものなのだ


・・・で、これだけで終わってしまうと本当にタダの黒歴史だが、これには少しだけ嬉しい後日談がある。

それから数年後、やはり電文転送系のシステムで、かつて自分がCのソロプレイでこなしていた規模の数万倍はあると思しき超大型案件助っ人の「兵卒」として参加したのだが、そこはインプラとアプリでチームが分かれており、アプリ側だった自分

配列ポインタ構造しか使わないで済むなんて、なんて楽な仕事なんだ!」と左うちわのんびり過ごし、しかも高評価をいただいて帰ってこれた。

実は今までの案件で一番幸福感が最高だったのは内緒である

2014-05-20

malloc関数を覚えた

必然、manalloc関数必要とする。引数にはアナル拡張する直径mmを指定する。戻り値アナル拡張によって得られた快楽指数「ヘゲナ」を返す。「ヘゲナ」はfloatの拡張であり、double性奴隷である。decimalとは竿兄弟である。reanalloc関数必要であろう。というのも、アナル拡張は必ずしも1度ではない、否、むしろリピーターが多いのではないか?おれはそう思っていて、やはりreanallocは需要がある。引数は2つ必要だ。拡張対象アナルへのポインタ(どちらも表記は*だし実にちょうど良いと考える。C言語の創始者もそれを想定していたのではないか・・・?と思うほど、実に調和の取れていて、不気味に符合するのだ。閑話休題。2つ目の引数は再拡張するためのサイズを示す。ここではsize_tが型になる。tとは勿論ちんぽのことで、直径cm意味する。しかし考えてみると、各種アナルを開放するfree関数は実に意味深だ。何から開放するのだろうか?ちんぽだろう。おれは、そう考えている。C言語楽しいぞ。

2014-03-18

システムプログラミングは未だに難しいのだろうか

サーバサイドの通信プログラムなど、OSシステムコール使いまくり系の、所謂システムプログラミングのうち、電話の交換器とか緊急地震速報のように、処理速度と信頼性が求められる仕様ソフトウェアは、未だにUNIX系(というか実質Linux)にC/C++になってしまうのだろうか。

速さの問題でJavaPerlダメとなると、未だにシステムプログラミングはアプリケーションプログラミングよりも高難易度というイメージがある。


かくいう自分場合C言語学生時代の授業でポインタ挫折して以来、仕事画像処理プログラム実装でちょっと使ったけど結局よく分からない状態で、急病でリタイヤした人の仕事(C言語で少しだけ作った通信プログラムの引き継ぎ・納品)をムチャ振りされ、泣く泣く取り組んだ経験が半ばトラウマ化している。

だってC言語やっててポインタが分からないとか本当にド素人レベル初心者が、socket()のノンブロッキングにpipe()にsignal()にselect()無限ループで複数のファイル記述子の監視を非同期通信でfork()もあるよという世界に放り込まれたのだ(当時のLinuxカーネルはpselect()がシステムコール実装されてなかったというオマケ付き)。

K&Rと「UNIXネットワークプログラミング」片手に涙も枯れた状態で帯状疱疹作りながら挑み、最後はどうにかこうにか元請けが引き取ってくれたけど、共有メモリマルチスレッドハイレベル過ぎて手が出なかったのが悔やまれる。

これがC++(当時未経験)なら、Javaで体得したオブジェクト指向で複雑な仕様もかなり楽に出来るかと思ったけど、いざ始まってみたらC言語Linuxシステムコールを使いこなすだけで精一杯で、C++は今でも未経験と。

あとmalloc()やfree()とかも全く活用できなかった。懸案だったポインタ構造体は嫌でも覚えたけど。

というか休日遊んでいて、突然それまで分からなかった部分が理解できたのはいいが、次の瞬間「やべ!あのまま本番動かしたら洒落にならん!」という展開になり、休日こっそり会社に忍び込んで必死ソース直したこともあったっけ。

あれからもう10年近く経つ。


・・・という経験をしているので、いつかまたシステムプログラミングの仕事が振られた時のことを考えて、一応PGで飯食ってる仕事人として、何か準備しておきたいと思っているのだが、できればもう少し楽になる技術フレームワークが生み出されていると嬉しいんだけどなーという感じ。

2013-03-26

http://anond.hatelabo.jp/20130326020353

具体的なコードを出していただいて助かりますもしかして、中間テーブルをmallocしろ、という話ですか??

あと、これは連結リストにもなっていないようですね。(ま、キャストすれば無理矢理そのように使えなくもないと思いますが)

2012-06-15

http://anond.hatelabo.jp/20120614121920

ポインタ、参照(リファレンス)、束縛(バインディング)、それぞれ似てるけど同様に語ると混乱の元ではないかと。

 

ポインタメモリアドレスに型情報をくっつけたもの。加減算できる点が特徴で、それはメモリアドレス概念由来だろう。

変数というメモリ上の記憶域を指すフィジカルに近い概念で、配列運用(*p++で回すとか)、引数の参照渡し(コピー抑止、複数戻り値の実現)、メモリのもの管理malloc)あたりで、基本手作業による最適化のための仕組みという側面が近いと思う。

 

perlだと、変数はやっぱり記憶域ではあるけれど概念として一段抽象化されていて、メモリという連続した領域じゃなく独立した領域の集合となっているから、リファレンスの加減算はなし。

また、配列も単なるメモリの並びからより抽象化してリストもできたから、配列運用や複数戻り値リストがあるのでリファレンスに頼ることはなくなる。

ただ、オブジェクト概念があって、オブジェクトオブジェクトとして入れる変数は用意せずリファレンスとすることで、文法上の変数の型を増やさない、コピー時のコンストラクタの問題を回避するなどのほか、オブジェクト概念を援用して無名関数無名変数ファイルハンドルなども変数引数として扱えるようにした。

 

で、pythonはもう一段推し進めて、今までの数値や文字、配列オブジェクトとみなし、変数はすべてオブジェクトを指し示すもので、記憶域は変数としてあるのではなくオブジェクトとしてあり、変数リファレンスという特別なものがあるのではなくなり、変数記憶域をもっていて値が代入されるものではなく、既にあるオブジェクト変数名という名前(ラベル)を付けて束縛する行為とされる。

見方を変えると変数はすべてにおいてリファレンスで、代入とは値そのものの代入でなく値へのリファレンスの代入で、引数も参照渡しであるが、引数に代入したところでリファレンスが変わるだけで元の値が変わるわけではなく、しかし他の演算などでは自動的にデリファレンスされており、単純な数値や文字列など、自身を変更する機構を持たない(できない)ものにとっては実質的に今までとの違いはないに等しい。隠ぺいといえば隠ぺいか

java, javascript, rubyもおおむねこの考え方でよかったと思う。

ただ、phpは若干両者が混じったところがあって微妙なところがある。

 

参考

2011-11-07

2010/05/16 23:40

こんにちは。昨日会った者です(これで特定するには情報不足だけど、まあわかるよね)。

で「幅優先探索でやる」という方針自体はいいと思うし、データ構造の作り方も基本は押さえていると思います(斜め読みしかしてませんが)。

ただ、コーディングの発想が「C で作る」という大方針から見て、少しちぐはぐな印象も受けますデータ構造設計操作の部分、汎用のライブラリを作ろうというのならあれでもいいと思うのですが、わざわざ汎用のライブラリを使わず自分で専用の道具を一から作ろうというのなら、問題の性質を考慮して能率良くやることが大事です

ところが、ここに載っているコードを見ると、見かけが C らしくなく、C++Java の劣化版のような印象を受けます記法マクロ大文字化しない、ルーチン名を大文字で始めるなど)だけの問題ではなく、データ構造設計思想が「C で書く」という方針と矛盾しているように見えます

もう少し具体的に言うと、そもそも C というのは現在 Web 系の世界などで流行スクリプト言語類とは逆で、汎用言語でありながら低レベルハードウェアに近い)処理が簡単にできることに特色があります。つまり組み込みを想定してプラットフォーム依存コードを書いたり、ハードウェアの特性を考慮して低レベル最適化をやりたいというときに適しています

そこでこの問題ですが、これを C でやるということは、処理速度や使用メモリ量の最適化が要求される状況、つまり迷路の大きさが途方もなく大きいような状況を想定すべきですもっと言ってしまえばこの問題、たとえば画像処理などで似たような発想が要求されることがあります。このため、どうすれば時間のかかる処理を切りつめることができるかを考えてやらねばなりません。

このプログラム場合時間のかかる処理の代表格である malloc() が大量に使われています。これはいかにもまずいです。このような大量データを処理する場合の定石は、あらかじめ必要なだけメモリを確保しておいて、自分で割り当てることです。具体的には、必要と想定される量だけメモリ配列の形でどかっと確保しておいて、配列インデックスポインタ代わりに使います。そして、足りなくなったら倍々のような感じでメモリを realloc() してやればよいのです

なお、そのような観点で言って、木の各節点の子の数は高々 4 (スタート地点が内点でないとすれば 3)であることを使っていることはよいと思います。ここで「子のリスト」とかを作ってしまっていたらこれはもうアホもいいところですから(容量の節約にすらなりません)。

そんな感じでしょうか。

とにかく、この手の問題は、アルゴリズムさえわかっていれば可読性もヘッタクレもないので、「短く書く」というような表層的なことよりも、何が求められているのかをよく考えて、柔軟に設計思想を考えることが大事だと思います

2010/05/17 13:54

Oさんですね。専門的なコメントありがとうございます!cで書くと言いつつObjective-Cっぽい発想で書いていました。マクロの命名もその影響で、関数Image Magickなどに似た命名規則になっている気がします。mallocを使いすぎると時間がかかるということは全然意識していませんでした。今度作るときメモリ管理を自前で用意する発想を取り入れてみたいです。参考になるコメントありがとうございました!

2010/11/18 23:56

はいわゆる「正規表現」は形式言語理論でいう正規表現ではないんだけどね……(ぼそっ)

2010-04-05

http://anond.hatelabo.jp/20100405194725

組み込みとかカーネルの下のほうみたいなやつ

ある操作の結果をキャッシュして高速化しようとしたら、キャッシュで使うmallocのせいで遅くなった

キャッシュ無しで60マイクロ

キャッシュ有りで400マイクロ

固定長キャッシュ(mallocなし,ヒット率9.5割)で50マイクロ

この程度なら無しでいいやってかんじなんだけど

mallocの実装が微妙ぽいので(キャッシュとは関係なく)Linuxスラブロケータあたりを持ってこようかなと考えている

 

普段はHaskellとか書いてるんだけど

なんか別世界

2010-02-14

malloc

隣の客はマロン食う客だ

マーロックホームズ

ロック・ポーロ

性転換手術と言えばマロック、そんな時代もありました

社会契約説を唱えたマァン・ロック

お兄ちゃん!あたしのカントリーマアロック勝手に食べないでよね!

まろまろ過ぎて、クルクルパーなっちゃうですうぅッ!

.

そんなバレンタインの夜。

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