はてなキーワード: lambdaとは
https://anond.hatelabo.jp/20200525021541
そういえば自分が使ってるサービス・ソフトウェアは定期的に棚卸しすることにしてるんだけど、ここ何年かやってなかったのでこの機会にやってみる。
アプリとかもあったりするけど基本的にWebでサービス提供されているもの。
順番は適当。
有料プランがある物は月500円ぐらいまでなら応援を兼ねて払うことにしているので、結構色々なサービスの有料ユーザになってる。
自分用のまとめではスマホアプリ編・ブラウザ拡張編・ソフトウェア編もあるけど、長くなるのでこの辺で。
RoamResearchとかどう? まだβだけどメモに良いよ。
ありがとう、良さそうだし少し試してみるよ。
ぜひ続きをお願いしたいわ
ただ自分用のやつは説明がないかあっても自分向けで簡素だから、書き足す時間があればまた増田にでも投げるよ。
え、マジすか、それは痛い。
iPhone次に買い換えるまでに復活して欲しいなぁ。同じく金なら出す。
近年、転職した時に退職しましたブログを書くのが流行りのようなので書いてみる。
今転職しようか悩んでいるシステムエンジニアの人がいたら参考になれば。
ずっと小さいベンチャー企業を渡り歩いているせいで、インフラからバックエンドからフロントエンドからなんでもフルスタックでやってきた(人がいなさすぎてやらざるを得なかった)。
近年は自分も開発しながらマネジメントもするプレイングマネージャだった。
社名を出す勇気はないので出さないが、まあまあ有名なWebサービスをやっている非上場企業から、ある業界で手広くいろいろやっている一部上場企業に転職した。
2社の業界は全く違う。
年収は現状維持で変わらずに転職したのだが、これは自分にとってかなり上出来。
というのも前の会社が小さいベンチャー企業で、CTO的な立場で役員に気に入られていたこともあって、相場よりも大分高い給与をもらっていた。
なので、中規模以上の企業の基準ではこの年収では無理ではないかと考えていた。
というか実際それが理由で最終選考で断られた別の中規模企業もあった。
元が小さい企業というのも、大中規模企業への転職には足かせになった。
小さい企業のため、チームがせいぜい10名程度になるため、「PM経験あります!」とアピールしても、「10名程度じゃね〜」と軽く見られて響かないのだ。
エージェントを使って転職活動したのだが、そういうことはやる前から予測していたので、ダメ元で大中規模の有名企業を受けてみて、ダメなら有望なベンチャー企業を受けてみる、くらいに考えていた。
そしたら運良く経験やスキルセットがぴったりハマる企業がタイミング良くみつかり、1次面接でほぼ内定な感じでさらりと決まった。
で、なぜ大中規模の有名企業を志望したかというと、小さいベンチャー企業に疲れたのとそろそろある程度安定した環境で働きたくなったからだ。
小さいベンチャー企業は本当に波が大きい。
上手くいっているときは高級ホテルで盛大なパーティー開いちゃったりするくらい羽振りが良いが、ちょっとつまずくとすぐ単月で赤字決算になる。
大体主力業務1本でやってるから、その一つコケると会社全体が存続の危機になってしまう。
そうして経営危機を迎えると、「ここままではダメだ!会社に変革を!新しいことに挑戦しよう!」と会社の空気がなるのだが、「そうはいってもこれ以上悪くしたくない」という役員の保守的な気持ちも働いて、結局「失敗しないように挑戦しろ」というそれってつまり挑戦じゃないよねこれまで通りってことだよねっていうがっかりな指令がでて、やる気のある社員のモチベーションを下げる。
そうなるとスキルとやる気のある社員から抜けていくのは自明の理だ。
私もその一人だ。
前の会社は上層部を営業チームが占めているせいで、売上至上主義な会社だった。
そのため、ユーザビリティやシステムの堅牢性などは全く関心がなく、10年前のシステムが現役で動いているような有様だ。
少し前まではそれでもなんとかなっていたが、近年になりついにユーザとGoogleに見放されてしまった。
システムを革新して良いサービスを提供する競合他社に取られ始めたのだ。ユーザもSEOも。
役員はSEOコンサルを使ってシステム的に小細工すればSEOは取り返せると信じているようだが、それは10年前のSEO対策だ。
下手なことをするとスパムと見なされてもっと悪くなるよとは伝えはしたが、適当にいい加減なことを言うSEOコンサルを盲信していて、聞く耳は持ってもらえなかった。
そんな会社だが、ある程度自由にやらせてくれる風土もあったので、俺が担当しているところはどんどん勝手に新技術を取り入れていった。
事前に確認取るとOKでるのに時間かかったり、NGになったりするので、本当に勝手に作って、事後報告してた。
AWS上でReact+RoRのWebアプリを立ち上げ、ElastiCache、ElasticSearchなどなるべくAWSのサービスを使ってクラウドネイティブで動くようにした。
APIはAPI Gateway+Lambdaでサーバレスで動くようにした。
AWSに関して教えてくれる人は社内にはもちろんいないので、全て独学で習得した。
この行動が良かった。
もし前の会社で会社に言われた仕事だけしていたら、今頃どこにも転職できないしょうもないおっさんエンジニアになっていただろう。
だから、ベンチャー企業への転職を考えているエンジニアは、いつまでもそこにいれるとは思わないでほしい。
会社にエンジニアとして成長できる機会がないのであれば、自分から作っていかないといけない。
そして、会社の方針と自分の考え方が一致していることはとても大事だ。
それが違うと、経営危機の時に頑張ろうって気になれない。
転職するときの面接は、受けるこちらも会社を査定する場なので、その辺も良くみてほしい。
業界全体において今自分がどの位置にいてどのくらいの価値のある人間なのかわかるからだ。
まず職務経歴書を書いてみてほしい。
えぇ。。。まじだよ。。。
docker-composeを使ってGolangとMysqlのイメージ使っていつも開発してぞ
好きなエディタは学生が無料で使えるIntelliJ IDEAでgoLand をよく使ってる。
Gitだってブランチ切ったりアドコミットプッシュくらいでGitHubを使ってプルリク系の開発をチームでしたりもした。
AWSはインスタンス立てたりロードバランサつけてインタンンス二つに流したり、CDNさしたりもできる
いうてCDNの設定とかドメインの設定だけでラクチンなんだけどね。
score_list = [] while True: score = int(input()) if score == -1: break score_list.append(score) print(min(score_list)) print(sum(score_list) // len(score_list)) # // round off print(max(score_list))
itertools でこうか... すごい.., これが generator か..
itertools.takewhile の lambda x: x != -1 が False になると
itertools.repeat も yeild を止めるのか..
import itertools score_list = list(itertools.takewhile(lambda x: x != -1, (int(input()) for i in itertools.repeat(None)))) print(min(score_list), sum(score_list) // len(score_list), max(score_list), sep="\n")
昨今話題になってるヤマトや佐川関連のブックマークが上位を占めるかと思いきや、まったく違った。
(2016年12月29日10:54時点、本文、新着順で検索)
Amazonの検索結果 (絞り込み: 3 users 以上) 約 3,423 件中 1 - 40 件目 (0.26 秒)
(以下略)
ECサイトを連想させるトピックがほとんどなくて、AmazonがB2B向けサービスを充実させていることに驚いた。
Amazonって表向きは物流業界に革命と問題を起こしている要因に挙げられているけど、EC以外のインパクトがどれだけ大きいのか門外漢なので分からない。
↑でブクマ付けた人、何が起きるのか教えて
増田は気軽に質問できる中・上級者がいない趣味プログラマか学生さんだと仮定。
どうしても合う合わないがある。
筋肉付けたいとしても、筋トレ無限にできる人と無理な人といるでしょ。そんな感じ。
自分の欲しいものをつくる、なんてのは誰でも思いつく話だと思うんだけど、
自分の欲しいものの中で一番機能が少ないものを、ギリギリ最低限の実装でやること。
Webサービス系に限ると小物で欲しいものって無さそうなので、
もう少し違うジャンルで作るのがいいと思う。
最近なら自分専用のLINE botとかいいんじゃないですかね。
2番目のプログラミングコンテストは向き不向きが激しいとは思う。
サービスを作るのに比べると短時間で深く集中する感じになるので、これはこれでオススメ。
最初はAtCoder過去問、AOJ、ProjectEulerあたりを試してみて合いそうか考えるのがいいと思う。
Web系だと仕事に直結はしないかもしれないけど、頭の使い方みたいなところは磨かれるはず。
人材紹介会社が作ってる同種のサービスだと、問題のレベル感としてトレーニングには向かない印象。
簡単すぎる問題を解くくらいなら小物作りでも実戦経験を積むべき。
最後は縛りゲー。つまり、あえて整備されていない道を開拓していく。
いかに金をかけずにWebサービスを公開・維持できるか、というテーマなら
各種サービスの無料枠とかAWS Lambdaとかを駆使して頑張るような話。
もしくは、先人が少なめのソフトウェアについて深掘りするとか。
たとえばAtomやVSCodeの自分専用プラグインなら最初のオススメ内容にも合う。
pythonでのデータファイル読み込みについてpython初心者です。p... - Yahoo!知恵袋 に対する回答。
Step1. 次のようなファイル datafile.py を作成します。
# Set your np object in this file. np = .... # data data = [ [np.array([1,2,3]),np.array([0,1])], [np.array([4,5,6]),np.array([2,3])], [np.array([7,8,9]),np.array([4,5])], ]
Step2. 本体のファイルで datafile.py を呼び出します。
以下、変数 data, np には 上記の内容が、保存されて返ってきます。
from datafile import data, np
注意: 簡単ですが、この方法の場合 datafile.py の中で np オブジェクトも定義する必要があります。PHP で言う所の include 的なのがあったら楽なんですけどね〜。
Step1. 次のようなファイル datafile.csv を作成します。
1,2,3,0,1 4,5,6,2,3 7,8,9,4,5
Step2. data = [np.array..., np.array... ] としたいところを次のように書き換えます。
data = [] e = lambda i: int(c[i]) file = open('datafile.csv') for line in file: c = line.split(',') data.append([ np.array([e[0], e[1], e[2]]), np.array([e[3], e[4]]) ]) file.close
補足 lambda式
580 :デフォルトの名無しさん[sage]:2006/07/26(水) 00:33:38
普通に三項演算子 ? : いれた方がよかったんだと思うけど、そうできない理由があったのか?
581 :デフォルトの名無しさん[sage]:2006/07/26(水) 00:37:57
>>580
ああすごい同意。
構文入れるんだよ。
583 :デフォルトの名無しさん[sage]:2006/07/26(水) 00:44:31
つか、一種の3項演算子じゃん。
[x for y in z] とかとも類似する構文だし、俺はあれでいいと思うけどなぁ。。。
584 :デフォルトの名無しさん[sage]:2006/07/26(水) 00:45:26
>581
とか? (本音を言うと誰にも使って欲しくない)
585 :デフォルトの名無しさん[sage]:2006/07/26(水) 00:46:03
? : が既に使われててダメだったなら
C then X else Y
みたいにできなかったのか疑問
条件が真ん中に来るとか見づらいよ……
586 :デフォルトの名無しさん[sage]:2006/07/26(水) 00:46:09
別にCに合わせる必要はないと思うよ。演算子関係ではCと違う部分がいっぱいあるから
半端に似せて「Cと同じだ」とか誤解を招くのはよろしくないと思う。
587 :デフォルトの名無しさん[sage]:2006/07/26(水) 00:48:42
"x for y in z"
← ←
データの流れが見える
"X if C else Y"
↑ ↑
分かれていて嫌
588 :デフォルトの名無しさん[sage]:2006/07/26(水) 00:57:28
>>587
でももう決まったことだし、個人的にはあまり気にしないで使うことになるだろうな。
591 :デフォルトの名無しさん[sage]:2006/07/26(水) 01:07:32
初めてリスト内包を見たときは「何じゃこりゃ、ワケわかめ」という印象だったけど
もう慣れてしまった。今ではリスト内包は直観的で分かりやすいと感じる。
ずっと Guido のセンスで取捨選択してきたわけだし、ぶっちゃけ今のところこれといって
今度の新しい三項演算子も慣れたら普通だと感じるようになるんジャマイカ。
592 :デフォルトの名無しさん[sage]:2006/07/26(水) 01:13:04
X if C else Y
「Xなんだよ! まあCだったらの話だけどな そうじゃなければYでよろしく」
593 :デフォルトの名無しさん[sage]:2006/07/26(水) 01:15:11
594 :デフォルトの名無しさん[sage]:2006/07/26(水) 01:16:06
[x for y in z]
↑
[x for x in original_list if x>2 and x<5]
595 :591[sage]:2006/07/26(水) 01:37:07
X if C else Y を使うのはきっと式の中がメインになるんだろうな。
functor = lambda x: x+1 if y > 0 else lambda x: x-1 if y < 0 else lambda x: x
とか、
delta = Numeric.array([[1 if i == j else 0 for i in range(M)] for j in range(N)], Numeric.Float32)
みたいな。>>593の言う通り、用例を考えていたらもう慣れてきた希ガスw
596 :591[sage]:2006/07/26(水) 01:54:02
q, r = divmod(n, 10)
print "%d%s" % (n, "th" if q == 1 else "st" if r == 1 else "nd" if r == 2 else "rd" if r == 3 else "
th")
たくさん if ... else が続く場合はなかなか読みやすい希ガス。
601 :デフォルトの名無しさん[sage]:2006/07/26(水) 11:08:59
>>596
その書き方が許されるとすると、かなり応用力がありそうですね。
596がすでにぱっと見ではよく分からない
602 :デフォルトの名無しさん[sage]:2006/07/26(水) 13:39:10
やっぱり、判定式が真ん中に来ると読みにくいな。
A = if C then B else D
603 :デフォルトの名無しさん[sage]:2006/07/26(水) 14:03:57
>>596
三項演算子いれて、
print "%d%s" % (i, r == 1 ? "st" : r == 2 ? "nd" : r == 3 ? "rd" : "th")
にしたほうが見やすくない?
607 :デフォルトの名無しさん[sage]:2006/07/26(水) 15:15:14
>>602
A = B if C else D だと
CならばDと目が流れちゃうかもかも。
まあ、慣れれってことか。
608 :デフォルトの名無しさん[sage]:2006/07/26(水) 15:28:49
まあ、ハズレのときはNoneが返る形ならば、
A = B or D で済むんだけどねぇ。
BがNoneならDって使い方。これは結構便利でよく使ってるんだけども。
いまだに
A = B and D は使ったことがないけども。
609 :デフォルトの名無しさん[sage]:2006/07/26(水) 15:49:33
>>596
> たくさん if ... else が続く場合はなかなか読みやすい希ガス。
おお!まさにそう思うよ!急にこの演算子が大好きになった。
http://b.hatena.ne.jp/entry/kenokabe-techwriting.blogspot.com/2015/04/blog-post_30.html
http://kenokabe-techwriting.blogspot.jp/2015/04/amazon102-93.html
この記事自体はどうでも良いのだけど、以前「クロージャ」という言葉の初期の使用例を探したことがあったのを思い出したので、参考までに。
Landin "A λ-Calculus Approach" (1966)
We represent the value of a λ-expression by a bundle of information called a "clusure", comprising the λ-expression and the environment relative towhich it was evaluated.
我々は、ラムダ式の値を「クロージャ」と呼ばれる情報の束で表す。「クロージャ」はラムダ式とそのラムダ式の評価に関する環境から成る。
Moses "The Function of FUNCTION in LISP,or Why the FUNARG Problem Should be Called the Environment Problem" (1970)
A useful metaphor for the difference between FUNCTION and QUOTE in LISP is to think of QUOTE as a porpous or an open covering of the function since free variables escape to the current environment. FUNCTION acts as a closed or nonporous covering(hence the term "closure" used by Landin).
LISPでのFUNCTIONとQUOTEの違いについては、次のように考えるのが有用な比喩になる。QUOTEは多孔的または開放的に関数をおおっていて、自由変数は現在の環境へと脱出できる。FUNCTIONは閉鎖的(closed)または非多孔的に関数をおおっている(このことからLandinはクロージャ(閉包)という用語を使っている)。
(訳はhttp://kreisel.fam.cx/webmaster/clog/img/www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/p/funarg/funarg.html から)
Sussman and Steele "SCHEME: An Interpreter for Extended Lambda Calculus" (1975)
In order to solve this problem we introduce the notion of a closure which is a data structure containing a lambda expression, and an environment to be used when that lambda expression is applied to arguments.
この問題を解決するためにクロージャという概念を導入する。クロージャはラムダ式とそのラムダ式が引数に適用されるときに使われる環境から成るデータ構造である。
Steele and Sussman "The Art of the Interpreter" (1978)
We say that the procedure is closed in the current environment, and the &PROCEDURE-object is therefore called a closure of the procedure, or a closed procedure.
この手続きは現在の環境に閉じられている(closed)と言い、それゆえ&PROCEDUREオブジェクトはその手続きの「クロージャ」あるいは「閉手続き」と呼ばれる。
... | fun x:: cmd1 x : cmd2 x : ... : cmdn x | ...
一行毎に処理する場合はxargs -Iを利用する。
$ ls *txt a.txt b.txt $ cat a.txt 1 $ cat b.txt 2 $ ls *txt | fun x:: echo x : cat x a.txt b.txt 1 2 $ ls *txt | xargs -Ix fun _:: echo x : cat x a.txt 1 b.txt 2
>と<はそれぞれ大小の不等号で置き換えてくださいな
#!/usr/bin/env python import sys from subprocess import * def take_variable(var): # check the syntax of variable (http://www.gnu.org/software/bash/manual/bash.html) # variable ::= (_|[A-z])(_|[A-z]|[0-9])* # variable contained space if len(var.split()) > 1: raise Exception('fail: the variable contained space') # check head if not (var[0].isalpha() or var[0] == '_'): raise Exception('fail: the variable contained wrong character') # check the body of variable b = True i = 0 for c in var[1:]: i += 1 # is variable contained invalid character? if not (c.isalpha() or c.isdigit() or c == '_'): b = False break # no exception if thre are only spaces after variable if not b and not var[i:].isspace(): raise Exception('fail: the variable contained wrong character') elif b: return var[0] else: return var[:i] def parse(var_to_cmds): # check the position of '::' try: pos = var_to_cmds.index('::') except Exception: raise Exception('not exists "::"') var = var_to_cmds[:pos] cmd_str = var_to_cmds[pos+2:] # check the format of variable and commands if var == '': raise Exception('fail: no variable before "::"') elif cmd_str == '': raise Exception('fail: no commands after "::"') return (take_variable(var),cmd_str) if __name__ == '__main__': # parse variable and commands try: var,cmd_str = parse(' '.join(sys.argv[1:])) except Exception, e: print >>sys.stderr, e sys.exit(1) # var -> val val = sys.stdin.read().replace('\n',' ') # mapping and split by ':' again commands = map( (lambda cmd: cmd.replace(' '+var+' ',' '+val+' ')), cmd_str.split(':')) # exec command for cmd in commands: try: # need split for remove spaces check_call(cmd.split()) except Exception,e: # print >>sys.stderr, e sys.exit(1)
本当はfunじゃなくて\(バックスラッシュ)で、:: じゃなくて→にしたかったんだけど、シェルが置き換えちゃうからしかたない
シェルの改造は禁断の手段だし