「連想配列」を含む日記 RSS

はてなキーワード: 連想配列とは

2024-03-03

anond:20240302043100

経営者としてお答えしよう

ファック死ね

 

てめぇの趣味給料払うのがどれほど不愉快想像してほしい。

業務時間を割いてなにかやってるのは知っていが注意すると拗ねてモチベ下げるので黙っているが、管理職には絶対に上げないフラグを立ててるから

 

費用対効果

持続可能

 

頼むよ、これを意識してよ

2秒の計算が1秒に縮まるコストナンボのもんだ?

仮に5秒短縮が当該業務担当5人、10回/日だとして年間16時間。。。

 

ん?わりとデカいな。

頑張れ

 

違う違うちがう

んなもん経営上の誤差だ、5秒くらい大人しく待ってろ

どうせ空いた時間は給湯室でくっちゃべってるだけだ

微妙ストレス

知るかボケ

歯車の分際で生意気

 

あのな、頑張って勉強して業務効率化に寄与してくれるのはありがたいが、

オマエ死んだらどーすんの、連想配列保守メンテできるスタッフ他にいる?

ワークシート上のセル式ならなんとか追いかけられますが、VBAでややこしいことやれたらわかりませーん、だよね?

そういうレベル組織なの。

 

VBAでゴチャゴチャやられるといざ業務拡大近代化の時に余計な工数もかかるの。

ワークシート上で処理完結してて適度にコメントも書いてくれてたらそれがそのまま要求仕様ドキュメントになるの。

プログラム化されちゃう要求仕様はそこから紐解かなきゃならない、そんだけ余分な工数がかかる。

 

残業して連想配列してるのは分かってるが、さっさと帰って婚活でもして、ブサイクな嫁とアホの子供でも作って、あぁもう迂闊に会社辞められねぇ、ってなってくれたほうが会社はありがたいの。

とりあえず今日明日を凌いでさくっと業務が回ればいいんだよ

美しくない?

知るかボケ

 

どこにどれほどリソース割くべきか

こっちもアホでは無い、経営変数パラメーターを加味して妥協方向性優先順位決めてるんだ

 

頼むから言う事聞いてよ

2024-03-02

anond:20240302043100

Excel作法というか極意は知らないフリだろJK

他人のことは放っておけ

たまに自然発生するExcel先生適当やらせときゃいい

作業頑張った感が出る中間ファイル生成させるとかやって、空いた時間勉強するんやぞ

ExcelVBAの後にどうせだから他のVBAもやっとくかと遊んでたら、OutlookVBA名前空間出会って衝撃的だった

会社から365移行するとか言われたんでOfficeScript触って連想配列かいう素晴らしいもの出会った

GraphAPI使って、メールも含めて仕事してるフリが出来るようになってだいぶ満足感出てきた

さぁ次は何しようかなー

エクセルマクロのお作法計算用シートという諸悪の根源について)

前置き

この日記の内容は、会社の後輩から最近エクセルマクロ勉強し始めて(キラキラ)」という話を聞いて、先輩ムーブかますために話した内容になります

とにかくこれから説明する「計算用シート」が憎くて憎くてたまらず、ちょっと引かれるほど熱弁してしまいました。

ただ、他の方がどうされているのかや、逆に「計算用シート」を愛用する方の意見も聞きたくなり、増田に書いてみました。

増田の経歴

この記事趣旨

エクセルマクロのお作法とか書きましたが、要するにエクセルマクロで「計算用シート」って色々な意味でよくないよね、という話をしたいです。

3行でまとめます

〇 エクセルシートはユーザーインターフェースインプット)か出力結果(アウトプット)のためのものとすべき

〇 データ加工をする場合には、原則配列辞書配列連想配列)に格納して加工を行い、最後の結果だけシートに出力するべき

〇 何事にも例外はある。

計算用シートとは

この記事では、エクセルシートを下記の通り分類します。

エクセルマクロにも色々あると思いますが、今回は下記を想定します。

日付や人物名などを入力し、データベースや別のエクセルファイル、別のシートから取得したデータ入力された値を基に加工し、加工後のデータをシートに出力する

この場合入力欄があり編集可能なシートがユーザーインターフェース、最終的に加工されたデータが出力されるシートが出力結果です。

(もちろん、ユーザーインターフェースの別の欄(セル)に出力する場合もあるし、その場合ユーザーインターフェース出力結果が一体のものとみなします。)

また、データ用シートは同じエクセルファイル内に基となるデータが含まれ場合を想定します。

(これ自体が非推奨で、SQLデータベースかせめてAccessを使え、という意見はありますがそれは別にして…)

ではここで定義する計算用シートとはなにかというと、文字通り計算を行うためのシートです。

例えばイメージするのはこんなマクロです。

1.元となるcsvファイルエクセルに読み出してシートに格納

2.そのデータは日付が数値型になっているので、日付(数値型)の入った列を文字列に変換した日付(文字列型)列を新たに作成

3.その列をキーとして対象となるデータを取り出すvlookup関数を各行に格納した列を新たに作成

4.その列で特定された列をさらに加工した列を新たに作成し、…

これは極端な例ですが、とにかく変数配列定義せず(あるいはエクセルセルオブジェクト変数のように扱い)、エクセルに値を入力し、それを直接加工することで目的となるデータ加工をしたり、様々な処理をします。

その舞台となるのが、計算用シートです。

なんかこんな感じの処理をしているエクセルマクロ、どこの会社でも腐るほどあるんじゃないでしょうか。

ある程度マクロに慣れた気の利く人なら、このシートはロック非表示にして、ユーザーから触れないようにするでしょう。

・・・これ、やめたほうが良くないですか?

こいつが日本生産性を落とす諸悪の根源だと思います

駄目な理由

ある程度詳しい人なら同意してくれると思いますが、このやり方でダメ理由はいっぱいあります

後で説明する配列辞書配列連想配列)と比べると格段に処理が遅いです。

わざわざエクセル操作しているから当然ですね。

ちょっと詳しい人が知っている「画面更新非表示」を駆使しても、配列を使った処理からみれば止まったハエです。

(参考)VBAで作ったマクロの高速化① 配列を使う

  • 可読性が下がる

いったんエクセルシートにデータを格納して加工しているので、コードエクセルシートを両方見る必要があり、とても読みにくいです。

変数として命名されていないのも致命的で、処理の意図が余計に分からなくなります

計算用シートを事前に用意して、別のセル関数を格納しておき、マクロ関数を使ってデータ加工をするものも見たことがあります

これは懲役刑に処したほうがいいと思います

まり知られていませんが、セルの最大文字数は32,767 文字です。

セルの最大文字数を超えると自動的に隣のセルに値が入り、シートが滅茶苦茶になります

他にもエクセルの数値を丸め自動変換の仕様とか文字列→日付の自動変換とか、いくつものバグに苦しめられます

できる人だと、いちいち最大文字数が多い場合の処理を書いたり自動変換機能を殺したりしてくれますが、そんなことに手間をかけているか日本GDPは上がらないんだと思います

他にも、データが大きくなると処理が重くなり不安定になる、計算用シートを人が触ってしまリスクがある、などいくらでも理由は上げられます

(逆に利点は、目の前でガチャガチャ動いてスーパーハッカーになった気分になれるくらいしか思いつかない・・・

じゃあどうするの

配列を使いましょう。

配列とは何ぞや、という人はググってください。

配列データを入れて、データ加工は配列変数に対して行い、一番最後の出力だけセルに値を格納する。

他のプログラミング言語なら普通にやっていることです。

個人的オススメしたいのは辞書配列連想配列)で、うまく使うとデータ管理簡単になり、処理も爆速になります

(参考)【VBA】大量データから高速で値を検索【Dictionaryを使う】

csvファイルもなまじエクセルで開けるだけに別のブックやシートで開きがちですが、これは悪魔のささやきです。

直接ファイルを読み出してLine InputやSplitで配列に格納しましょう。

エクセルとして開くやり方はコード書くのは簡単でも、実行時間に天と地ほどの差が出ますエクセル開くと処理もめちゃ不安定です。

(参考)Excel VBAでCSVオープンするときのパフォーマンス比較

いや、冒頭のマクロを書く人の気持ちも分かるつもりです。自分コードを書き始めたころは全部シート上で操作していました。

冒頭のマクロのほうが直感的なんですよね。自分が手で書くことをマクロやらせる、というマクロ本来趣旨にはあっていますし。

途中の計算過程もすべて目の前で展開されるから分かりやすいです。

ただ、それではダメなんです。。。処理は遅いし挙動不安定だし後で改修・保守する人が死にます

あと、エクセルシートやセルは当然エクセルしかないので、エクセルマクロVBAから他の言語に移れなくなります

自分エクセルマクロの里の出なので、計算用シート脱却には苦労しましたが、苦労して会得した配列辞書配列連想配列)のスキルはそのまま他の言語に活かすことができました。

配列の中身を見る方法別にある(ローカルウィンドウやDebug.printを使うなど)ので、リハビリに取り組んでほしいです。

(参考)VBA デバッグの仕方

もちろん例外もあります

計算用シートを許容できる、使うべきケースもあると思います。。

個人的には、

最後のは、なんでも自分確認しないと気が済まない上司発注で、意味不明と思いましたしたがしぶしぶやりました。)

などの場合計算用シートを使ってもよいと思います

この場合インプットエクセルシートに直接加工するのは論外なので、計算用(加工用)のシートを用意してそこで操作を行うことは必要だと思います

他にも、こういうときは「計算用シート」があったほうが良い、という状況があれば教えてもらえると嬉しいです。

最後

そもそもツッコミとして、「データ加工するならエクセルマクロを使わずpythonとかRとかもっとまともな言語使えよ」という言葉が来そうな気がします。

ただ、個人的にはエクセルマクロVBA)は大好きですし、初心者にもおすすめしたいです。

自分のような非エンジニアだと、セキュリティ関係などでPythonの開発環境とかすごく用意しにくいんですよね。

(あと、コマンドプロンプトの真っ黒な画面が怖かった)

その点エクセルマクロは、開発環境の用意はプロパティでチェック項目を一つオンにするだけだし、入門書がたくさんあるし、セル挙動を追えば視覚的にプログラム理解できるし、初心者に優しいです。

(そのやさしさが上述したとおり悪魔の罠なわけですが。)

最初計算用シートに頼ってでもエクセルマクロからプログラミングを始めて、本格的なデータ加工をし始めたあたりで計算用シートという諸悪の根源から脱却する。

さらに本格的なデータ処理を行うために、PythonやRなど別の言語習得したり、エクセルからSQLデータベースやACCESSなどに切り替えていく、というプロセスがいいのではと個人的に思います

2023-07-31

anond:20230731170412

連想配列ってぐにゃぐにゃしてて入れ子にしたりできるから、むしろ変更しやすいと思うけど

クラスとか構造体の仕様変更と同程度だよ

2023-05-21

世間一般的に読みにくいコードというと、コメントついてないとか

コーディング規約がどうとか言う話がよく出てくるけど、

本当に読みにくいのは名前が狂っているコード

インデントが狂ってるコードだと思う。

インデント説明することないから置いておくとして、

名前が狂ってるというのは、

JSONParserとか言いながらJSON関係していないクラスとか、

getUserみたいなメソッド名なのに引数としてuserを渡すとかそういうやつ。

JSONParserクラス名前を付けた奴は、中のコードからすると、

どうもネストした連想配列のことをJSONだと思っていたらしい。

ネストした連想配列から個別の値を取得するのがJSONParserだった。

JSONはそういうのじゃなくてデータを表す文字列から

文字列を受け取って、ネストした連想配列を返すparserメソッド

あるクラスであればJSONParserという名前で合っている。

getUseruserIdフィールドだけ値を設定したUserインスタンス

引数に渡して他の値を設定するメソッドだった。

getとか言いながらsetすんなよ。

書いた奴は、データベースから値を取得するのをgetだと思っていたのだろう。

この類の名前で嘘をつくクラスとかメソッドが多々あると強烈に読みにくい。

2021-01-25

anond:20210125120116

連想配列ゆうてforeachで回すのがintからint*になるだけで内部的な処理かてi++がi+4 になるだけやからそれだけだと等価っぽくない?

anond:20210125115925

foreachは連想配列を含むから

連想配列実装データに対して、多様にある場合がforに比べて多い

そのため主題に対して例外が多いため、あくまでも、議論には不適切というだけ

anond:20210125102322

HP場合データ構造特殊で、すべてが連想配列なんだよ。

for で間接的にアクセスするより、foreach での直接アクセスのほうが速くなる。

そいう言語も世の中にはあるってこと。

2021-01-18

Laravel

なぜ人気なのかわからない。

PHPあるあるだけど、型の扱いとか含めてひどい…。

Laravel に限らず Pusher のライブラリも、@return bool のくせに連想配列かえすパターンあったりとか諸々ひどい。

2020-08-20

anond:20200820125553

PHPer とかは何でもかんでも連想配列でやるから嫌い。型がないの気持ち悪い

anond:20200820125500

今どき連想配列が無い言語を使おうってのがアウト

2020-07-31

anond:20200731155404

センスと言うより、場数とか経験かに見える。

自分プログラムを書き始めた数十年前の自分ならこういうデータとして扱うのが超面倒くさいコードを平気で書いたかもしれないけれど、今は一瞥してそれで渡されても取り扱えるけれど、自分だったらそうは設計しないなとは思う。

そもそも連想配列/辞書を作ってJSON読み書きはライブラリーやらせからJSON設計がーという発想もそんなにない。

anond:20200731155404

そのタイプは常にビューをデータ構造表現してきたり、常に連想配列使ってきたりとにかく使い分けができない印象。まぁ学習が足りないが結論なのではという気もする。

2020-06-01

コンピュータープログラミングの分野でリストといった場合、通常リンクリスト 連結リストのことをさすが 何も言わなかった場合に連結リスト以外の事をさすと教えているスクールがあるということだろうか

連想配列技術を応用した連想リスト(次の要素へのポインタアドレスではなくキー値)というものもあるだろうが、原理は同じだから、教えるとき弊害にはならずハードウェア物理アドレス仮想アドレスを渡すか、アプリ内部のキーを渡すかの差だけで、そこまで違いがあるわけではない。アルゴリズムとしては同じだ。何が弊害になったんだ?

2020-03-29

[]演算子はだいたい関数

引数を取り結果を返すという意味演算子はだいたい関数と同じものである

演算子オペレータ)は被演算子オペランド)をとって式を構成する。

「1 + 1」「5 - 3」「 1 == 3」等の式はplus(1,1) minus(5,3) equals(1,3)といった関数の言い換えである理解できる。

値を返すものが式である

引数をとり値を返すもの関数である

式の中の特別もの関数だと言える。

Wikipediaによると、関数写像であるという。

写像英訳mapという。

プログラミングにおいてマップマッピングとは

まあだいたい「〇〇は□□と対応してる」という関係を指す。

連想配列とか。

まり関数マップであり、

連想配列マップであり、

まり連想配列関数である。だいたいのところ。

2019-04-07

日曜日が終わってしまうので、ここらで一発、何らかの生産的な行動をやっていきたいぞ、と思ったわけですけども、なぜかこうして増田に張り付いています

人はなぜ、このような選択をしてしまうのでしょうか。

前頭前野の敗北であり、辺縁系勝利です。勝利勝利、大勝利長良辺縁系ではありません。

なぜか私のPCデスクには知恵の輪が転がっています。なぜでしょう。お見舞いでもらった品です。なぜ知恵の輪。ボケ防止にとのことでしたが。

ところで、先程PCデスクと言いましたが、これは厳密に言うと、いえ別にそんな厳密とかじゃなくて普通に言ってそうなんですが、私が今パソコンを置いている場所は、PCデスクなどという大層な代物ではありません。

というかデスクですらありません。

私は椅子の上にディスプレイキーボードマウスを置いています

正確には、椅子の上に、ホームセンターで買った合板を乗せて、それを机とし、周辺機器を乗っけているのです。

これは案外便利です。広い、安い、手軽、収納やすい。見た目のアレさにさえ目をつむれば、非常に合理的選択であると言ってよいでしょう。

あるいは、見た目などという些事に囚われていないことが、余計に合理的選択であることを強調している、とさえ言ってもよいかもしれません。

ところで、さっきまで、やむを得ない事情により、VBAなる恐ろしい言語を使っていたのですが、これには様々な謎仕様があるようです。それらは名状しがたき恐怖で我々を戦かせます

一般的に知られていると思われる謎仕様と致しましては、例えば、配列におけるReDimなるステートメントが上げられるでしょう。

他にも、例えばマクロ高速化のための方策として、範囲配列に代入するというテクニックが紹介されることがありますが、この配列範囲との間にも謎の関係性が存在しています

この手のソフトウェアを扱うに当たり、いちいち一つずつセルに値を書き込むことはご法度、というのが定番ではありまして、私も素直にこの定石にしたがい、セル範囲二次元配列に格納したりしております

しかし、範囲配列に代入した場合、その配列の要素のインデックスは、どうも1から始まるようなのです。

なぜ1スタートなのでしょうか。VBA仕様においても、配列の添字はいちおう0から始まることになっているのですが、範囲配列に格納した場合、0行0列の要素は空となっており、Array(1,1)にRangeの始点の値が格納されております

まあたとえ1スタートであっても、言語内で仕様統一されているのであれば、まだよいのです。

しかしここが彼の言語の恐怖ポイントなのでありまして、どういうことかといいますと、

すなわち、今度は逆に配列範囲に代入、すなわち配列の各要素の値を対応する範囲セルに書き込む場合インデックスが0である要素から順に処理されるのです。

範囲配列に代入するときインデックスが1から始まるのに、配列範囲に代入するときインデックスが0から始まるのです。

Array = Range

Range = Array

とすると、一番上の行と一番左の列が、空白行、空白列になってしまうのです。

なんですかこれは。誰が考えたんですか。おかしいでしょう。私はおかしさのあまり死にました。

この理不尽さに比べれば、Collectionなる連想配列の添字が1から始まることなど些事に過ぎません。

昨日までJavaJavaしていた人は、どうやら配列なんぞには目もくれていなかった様子でしたので、この謎仕様に気づくこともなかったのでしょうが、悲しいことに、この謎仕様配列を用いた高速化テクニックはほぼ必須スキルでありますので、例の御人も、遅かれ早かれ、この罠に絡め取られていたことでしょう。

あるいは、この謎現象回避するための方策はきちんと用意されており、無知な私はそれを知らないがゆえに、このような的はずれな不満をぶちまけているのかもしれません。

しかし、上述したような単純かつ直感的な代入が上手くいかないという仕様は、やはり、なかなかの欠陥ではないかと思うわけです。

まあそんな愚痴はどうでもいいのです。変な仕様適当にハックしてやればよいのです。

でもクラスモジュールとやらのパワーは貧弱なのでそれも大変困難ではあります

標準モジュールライブラリもどきをちまちまと作っていくしかないのでしょうか。

とてもではありませんが、こんなもんを極める気にはなりませんので、そこら辺のことをいい感じにまとめてくれている知見があればよいのですけれども、しかし、まともな人間はこんなもんを相手にしたりはしない、というパラドックスがあります

https://sites.google.com/site/compositiosystemae/home/vbaworld/upper/interface はわりとよかったような気がします。システムハンガリアン使ってますけど)

こんなもんを扱わざるを得ないような環境に留まってしまっている私がおかしいという話もあります

悪いことは言いません。pythonで書かせてください。お願いします。

そんな増田の切なる願いは、社会という名の抗いがたい泥沼に絡め取られ、今日も悲しみに満ち満ちたコードを生成していくのであります

そういえば今日休日でした。休日普通楽しいものなのではないでしょうか。どうしてこんな悲しい気分になっているのでしょう。

答えは簡単でして、悲しいことを書いているからです。楽しい気分になるには、楽しいことを書く必要があります

楽しいこととは何でしょうか。例えばオナニーなどが挙げられます人生において、オナニーよりも楽しいことは、あまりありません。

よって、楽しくなるには、オナニーの話をすればよいです。

私は一時期、DLditeで同人音声を漁っておりまして、催眠に掛かるべく邁進していた時期もありました。

しかし一度も催眠に掛かれませんでした。

なぜ私は催眠に掛かれないのか。

集中力の欠如、衝動性の強さ、慢心、環境の違いなど、様々な要因が考えられますが、最も大きな原因と思われるのは、台詞めっちゃ気になることです。

おっさんが考えた可愛い二次元女の子みたいな台詞が、えらく癇に障るのです。

そのために、可愛らしい女性の声に没頭できないばかりか、声によって現実に引き戻されてしまう、という逆説に襲われるのです。

おっさんは蓮を咲かせる泥だという話もありますが、恐らく、真に良質な泥おっさんというのは、非常に稀な存在なのでしょう。

まり、いいおっさんは泥ですが、悪いおっさんゲロということです。

しかし、これもおっさんに限らず、大抵のことに言える話でありまして、良質なものはどこでも少ないものです。

生の増田を見てもそうでしょう。

ホッテントリに上がる増田しか見ないライト増田、あるいはブクマカには想像もできない世界が、生の増田には広がっています。例えばこの増田とかです。

(これは私見ですが、VIPやなんj、あるいは虹裏などと比べても、増田の毛色は違います

増田ほとんどは泥であり、ホッテントリに上がった増田は花なのです。

私も泥として、増田たちに養分供給していきたいと思います

何だかまた悲しい話になってるじゃないですか。なぜ私はいつも悲しい話をしてしまうのですか。

それは恐らく、心の通奏低音(俗用)のようなものが、悲しみに染まっているからです。

基本的に悲しんでいるので、無意識に任せて話すと、悲しい話ばかりが飛び出てくる、というわけです。

この休日も悲しいまま終わりそうです。恐ろしい恐ろしい。これも人生という感じですね。

2019-02-23

anond:20190223045232

perlでは連想配列

しかし、この話を読んでJavaだけ違うよなって思ってしまった。他のはみんな実装言語処理系にお任せだけれど、JavaだけはMapは単なるインタフェースで、どの実装にするかはお前が選べってところがねぇ。こいつだけはGenericsを使って、keyvalueの型を指定するのも違う。

Javascriptはプロトタイプベースオブジェクト指向言語から、こいつもこいつで思想が他のと違うんじゃないかとも思えてきた。

2019-01-30

anond:20190130113420

それ構造体でも連想配列でもいいじゃねーか

なんでオブジェクト必要なんだ

とは考えなかったんだろな

2018-06-23

anond:20180623001414

データをどう使うかによるのでは?

ほげとひげとはげ、ホゲとヒゲハゲがそれぞれ別のペアとして使われるなら、前者がいいんじゃない

例えば、こんな感じなら、前者の方が配列の中からその連想配列を見つけてそれだけを見れば済むので楽な気がする。

[{bald: "はげ", language: "japanese"}, {bald: "calvo", language: "italian"}, {bald: "chauve", language: "french"}...]

for文でlanguageが希望のものになるまで配列をたぐってから、baldの値をとってくればいい気がするし。

これが後者方式だと、for文で回した後にそのインデックスが何かを覚えておいて、baldの配列からそのインデックスで探すことになるから一手間かかるかな。

それに、前者の方法ならもしハゲが無いけどヒゲならある言語がある場合ヒゲだけ値を入れておけばいいという気がする。

特に配列の要素ごとにまとまりが無いなら後者データ構造の方がいいかな。

データ転送量は圧縮すると同じ文字列辞書に載って短い符号で送られるだろうからまりペナルティーは無いのかもしれない。

2018-02-17

paizaのスキルチェックやってみた所感

はてなユーザーには馴染み深いであろう、「SIerへのdisり」で有名なpaizaのスキルチェックをやってみた。

ちなみに、私は現在SIerに勤めており、最近仕事への不満が高まっているので、転職を考えている。

といって別にSIerが憎いわけでもないし、paizaのポジショントークはどうかと思っている。Web系に行きたいわけでもない。

ただ色々な転職サイト登録してる流れでpaizaも登録したので、せっかくだしプログラミングスキルチェックをやってみた。

スキルチェックするにはプログラミング問題を解けばいい。問題にはランクがあり、難易度順にS,A,B,C,Dの5段階。問題を解くと100点満点で評価される。

得点は「テストケースに通るか?」と「時間内に解けたか?」で決まり、各ランク問題で81点以上とれば、自身のpaizaランクが上がる。(paizaランクはS~Eまで)

問題は多数用意されているが、1問でも81点以上取ればランクが上がるので、ランクアップのハードルは低い。しかランクが落ちることもない。

で、全ランク問題を解いてみた所感は以下。

D 問題未満。文法を知っていれば解ける。

C 易しい。連想配列とかソートが使えれば解ける。

B 普通。稀にひらめきが必要問題もあったが、特にわず解ける。

A やや難しい。自分能力不足かも知れないが、少し実装が込み入ってくる。しかし解けないものは無い。

S 難しい。解けない問題もある。愚直に解くと計算量が多すぎたり。アルゴリズム知識必要だったり。

Aランク以下の問題はほぼ全て81点以上(というかほとんど100点)だったので、全体的な難易度は低い。

「高ランクだと企業からオファーが来ます!」っていう触れ込みだけど、最近業務ワードエクセルしか触っていない私でもこんな感じなので、単なる足切り程度の意味しかない気がする。

ただ、問題バリエーション豊かだし、けっこう楽しめた。転職には使えそうにないが、暇つぶしには良いと思う。

2017-09-11

https://anond.hatelabo.jp/20170910205249

まじな話をすると、N予備校プログラミング入門コースやるのがオススメ

https://www.nnn.ed.nico

一日8時間勉強時間があるなら、だいたい一ヶ月で終わる内容。

月額1000円だけどしっかり勉強すれば一ヶ月の無料間中に終わると思う。

もともとN高等学校のノンプログラマーの生徒をWebエンジニアとして就職させるために作られたカリキュラム講師曰く去年はこれで二人エンジニア就職を決めたらしい。

内容も相当親切に説明していて、プログラミングで何か作るだけじゃなくて、就職必要な環境構築やセキュリティまでみっちりやる。

http://qiita.com/sifue/items/7e7c7867b64ce9742aee#%E3%82%B3%E3%83%B3%E3%82%BB%E3%83%97%E3%83%88%E3%82%92%E3%82%82%E3%81%A8%E3%81%AB%E6%A7%8B%E6%88%90%E3%81%95%E3%82%8C%E3%81%9F%E3%82%B3%E3%83%BC%E3%82%B9%E3%81%A8%E5%86%85%E5%AE%B9

講師が書いてる入門コースで習うことがまとめ。テキスト教材もあるけど授業も1項目を2時間で説明している。授業は週2の生放送とそのアーカイブがある。

↓みたいなことが学べる

----

Webプログラミング入門コース

Web ブラウザとは (Chrome, デベロッパーコンソール, alert)

はじめてのHTML (VSCode, HTML, Emmet)

さまざまなHTMLタグ (h, p, a, img, ul, tableタグ)

HTMLで作る自己紹介ページ (HTMLタグ組み合わせ, コンテンツ埋め込み)

はじめてのJavaScript (JS, ES6, エラー)

JavaScriptでの計算 (値, 算術演算子, 変数, 代入)

JavaScript論理を扱う (論理値, 論理積, 論理和, 否定, 比較演算子, if)

JavaScriptループ (ループ, for)

JavaScriptコレクション (コレクション, 配列, 添字, undefined)

JavaScript関数 (関数, 関数宣言, 引数, 戻り値, 関数呼び出し, 再帰)

JavaScriptオブジェクト (オブジェクト, モデリング, プロパティ, 要件定義)

はじめてのCSS (CSS, セレクタ, background-color, border)

CSSを使ったプログラミング (transform, id, class)

Webページの企画とデザイン (企画, 要件定義, モックアップ, 16進数カラーコード)

診断機能の開発 (const, let, JSDoc, インタフェース, 正規表現, テストコード)

診断機能組込み (div, 無名関数, アロー関数, ガード句, truthy, falsy)

ツイート機能の開発 (リバースエンジニアリング, URI, URL, URIエンコード)

Linux開発環境構築コース

LinuxというOS (VirtualBox, Vagrant, Ubuntuインストール, OS, CUIの大切さ)

コンピューター構成要素 (ノイマンコンピューター, プロセス, lshw, man, ps, dfの使い方)

ファイル操作 (pwd, ls, cd, mkdir, rm, cp, mv, find, ホストマシンとの共有ディレクトリ)

標準出力 (標準入力標準出力標準エラー出力パイプgrep)

vi (vimtutor)

シェルプログラミング (シバン, echo, read, 変数, if)

通信ネットワーク (パケット, tcpdump, IPアドレス, TCP, ルーター, ping)

サーバークライアント (tmux, nc, telnet)

HTTP通信 (http, https, DNS, hostsファイル, ポートフォワーディング)

通信をするボットの開発 (cron, ログ収集)

GitHubウェブサイトの公開 (GitHub, リポジトリ, fork, commit, 情報モラル)

イシュー管理とWikiによるドキュメント作成 (Issues, Wiki)

GitとGitHub連携 (git, ssh, clone, pull)

GitHubへのpush (init, add, status, インデックス, commit, push, tag)

Gitのブランチ (branch, checkout, merge, gh-pages)

ソーシャルコーディング (コンフリクト、プルリクエスト)

Webアプリ基礎コース

Node.js (Node.js, nodebrew, Linux, REPL, コマンドライン引数, プルリク課題)

集計処理を行うプログラム (集計, 人口動態CSV, Stream, for-of, 連想配列Map, map関数)

アルゴリズムの改善 (アルゴリズム, フィボナッチ数列, 再帰, time, プロファイル, nodegrind, O記法, メモ化)

ライブラリ (ライブラリ, パッケージマネージャー, npm)

Slackボット開発 (slack, mention, bot)

HubotとSlackアダプタ (hubot, yo)

モジュール化された処理 CRUD, オブジェクトライフサイクル, filter)

ボットインタフェースとの連携 (モジュールのつなぎ込み, trim, join)

同期I/Oと非同期I/O (同期I/O, 非同期I/O, ブロッキング)

例外処理 (try, catch, finally, throw)

HTTPサーバー (Web, TCPとUDP, Webサーバーの仕組み, Node.jsイベントループ, リスナー)

ログ (ログ, ログレベル)

HTTPのメソッド (メソッド, GET, POST, PUT, DELETE, CRUDとの対応)

HTMLフォーム (フォームの仕組み, form, input)

テンプレートエンジン (テンプレートエンジン, jade)

HerokuWebサービスを公開 (Webサービスの公開, heroku, dyno, toolbelt, login, create, logs)

認証利用者を制限する (認証, Basic認証, Authorizationヘッダ, ステータスコード)

Cookie を使った秘密匿名掲示板 (Cookie, Set-Cookie, expire)

UI、URI、モジュール設計 (モジュール設計, フォームメソッド制限, リダイレクト, 302)

フォームによる投稿機能の実装 (モジュール性, textarea, 303)

認証された投稿の一覧表示機能 (パスワードの平文管理の問題, 404, テンプレートのeach-in)

データベースへの保存機能の実装 (データベース, PostgreSQL, 主キー)

トラッキングCookieの実装 (トラッキング Cookie, IDの偽装, Cookie の削除)

削除機能の実装 (データベースを利用した削除処理, 認可, サーバーサイドでの認可)

管理者機能の実装 (Web サービス管理責任, 管理者機能の重要性)

デザインの改善 (Bootstrap, レスポンシブデザイン, セキュリティの問題があるサイトを公開しない)

脆弱性 (脆弱性, 脆弱性で生まれる損失, 個人情報保護法, OS コマンド・インジェクション)

XSS脆弱性対策 (XSS, 適切なエスケープ処理, リグレッション)

パスワード脆弱性対策(ハッシュ関数, メッセージダイジェスト, 不正アクセス禁止法, パスワードジェネレーター, 辞書攻撃)

セッション固定化攻撃脆弱性対策 (セッション, セッション固定化攻撃, ハッシュ値による正当性チェック)

より強固なセッション管理 (推測しづらいセッション識別子, 秘密鍵)

CSRF脆弱性対策 (CSRF, ワンタイムトークン)

安全なHerokuへの公開 (脆弱性に対する考え方, HTTPの廃止)

Webアプリ応用コース

Webフレームワーク (Express.js, フレームワーク導入, 簡単なAPI, セキュリティアップデート, Cookie パーサー, ミドルウェア, 外部認証, ロガー)

ExpressのAPI (app, Properties, Request, Response, Router)

GitHubを使った外部認証 (Passport, OAuth)

スティングフレームワーク (Mocha, レッド, グリーン, リファクタリング)

継続的インテグレーション (CircleCI)

クライアントフレームワーク (Webpack, Chrome 以外のブラウザでもES6)

DOM操作フレームワーク (jQuery, jQueryアニメーション, this)

AJAX (jQuery.ajax, クロスドメイン, 同一生成元ポリシー, x-requested-by, CORS)

WebSocket (WebSocket, WebSocketの状態遷移, Socket.io)

RDBとSQL (DDL, DCL, CREATE, DROP, INSERT, DELETE, UPDATE, WHERE)

データモデリング (リレーショナルモデル, 正規化)

テーブルの結合 (外部結合, 内部結合, 片側外部結合, JOIN ON)

インデックス (インデックス, 複合インデックス, Bツリー)

集計とソート (SUM, COUNT, ORDER BY, GROUP BY)

「予定調整くん」の設計 (要件定義、用語集、データモデル、URL設計モジュール設計、MVC)

認証とRouterモジュールの実装 (Mocha, supertest, passport-stub, モックテスト)

予定とユーザーの保存 (セキュリティ要件, UUID, 複合主キー)

予定とユーザーの一覧の表示 (非同期処理, Promise, then)

出欠とコメントの表示 (入れ子の連想配列, Promise.all, 子どもからデータを消す)

出欠とコメント更新 (Promiseチェイン, リファクタリング)

予定の編集と削除 (要件の衝突, 関数再利用)

デザインの改善 (this, グローバルオブジェクト)

セキュリティ対策と公開 (X-Frame-Options, Heroku環境変数)

2017-05-24

http://anond.hatelabo.jp/20170524200524

C#書いてて多次元連想配列必要になるケースが少ない。

Dictionary<string, Dictionary<string, Dictionary<string, string>>>

とか絶対ない

C#連想配列がショボい

なんでこんなにショボいのに使われてるんだ?

PHPとかjavascriptみたいな多元連想配列が使えなくて意味分からん

2017-04-06

http://anond.hatelabo.jp/20170406081854

現役ペチパーだけど、元々PHPHTMLスクリプトを埋め込むところから始まった変態言語なので、

普通に関数を作って組み合わせてしまえば大半は事足りるのも当然なんだけども。

実務で使うと便利だなと思うのは、まとまりのある複数変数メソッドを1つのクラスカプセル化できること。

例えば、ユーザ情報管理するときに、「ユーザ情報」というクラスを作って、

その中に publicな変数として、名前フリガナ郵便番号、住所、電話番号、会員ID階級職業性別

を放り込んでおく。

同時に、ユーザ情報の処理に関連する処理の関数を public なメソッドとして、定義する。

ユーザ情報をタブ区切りで得るメソッド getTABDATA()

フォーム入力からユーザ情報にセットする setFromForm()

ユーザ情報が正しく入ってるか評価する Validate()

こうしておけば、

ユーザ情報を何かの関数に渡す時は、インスタンス変数1つ渡せば済む。

ユーザ情報に関する処理は、ユーザ情報クラス定義部を観れば済む。

という2大メリットが得られる。

そんなのPHPなら連想配列変数はまとめられるし、

メソッドだってつのファイル関数並べてインクルードすれば同じメリットが得られるやん?

…と私も思ってた。ただねぇ、開発規模が大きくなると、関数名の重複を避けた命名が面倒になったり、

連想配列だと好きな場所勝手変数増やされたりして、メンテナンス性が悪くなるのね。

からクラスを使うようになりました。


あとは、例えばメールを送るという1つの大きな処理に関連して複数関数定義する場合に、

その関数をまとめてメール送信クラスとしてしまうのはあるかな

実例

http://web-terminal.blogspot.jp/2014/04/php-file-mail-pear.html

PHPエクセル出力できるPHPExcelもクラスになっているから使いやすそう。

http://qiita.com/suin/items/7a8d0979b7675d6fd05b

PHPからPDF出すのもクラスになっていてありがたかった。

http://cmf.ohtanz.com/blog/archives/2463

結論としては、

まとまりのあるデータメソッドがあって、まとめておかないとヤバそうなときだけクラスにすればいい。

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