「シグネチャ」を含む日記 RSS

はてなキーワード: シグネチャとは

2021-07-05

今週も、エクセルスクショぺたぺた・関数リスト丸写し作業がはじまる

先週金曜日は久しぶりにコーディングした

クソコードの引き継ぎで不快まりなかったがな

今週はまた、エクセル

する作業

先方の秘伝のエクセル方眼紙の体裁に合わせなきゃならん

無駄に罫線の使い方とかが細かく決まってる

誰がやっても70時間はかかる

氏ね

2021-06-21

かれこれ1ヶ月これ。頭がおかしくなりそう

2021-01-27

Nicehashでビットコインマイニング始めたんだけどマイニング始めるとノートン先生が怒り狂ったかのようにSystem Infected: Miner.Bitcoinminer Activity って警告出してくる。

ファイアウォール侵入シグネチャのチェック外してもまたすぐチェックついてるしどうすればええねん。

2021-01-11

anond:20210111130405

多少の違和感はあるけど、時間のかかる処理である(ゆえに非同期処理になっている)ことをシグネチャで示せるのは進化だとも思うし、スレッドをうまく隠蔽しているとも思う。

並列処理なんかは async/await でないと記述できないようなイディオムも登場しているわけで、一口に悪とは思わない。

個人的にはメソッドチェーンが書きにくいのが気に食わないぐらいで概ね言語としては正当な進化だと思っている

2020-12-06

anond:20201205152256

BOM headerとか、BOM シグネチャみたいに言えば、

エンジニアなら感覚にわかるんでねと思った。

詳しく知りたいならググレカスって話だな。

2020-06-14

「こいつプログラミングセンス無いな」と思う奴の特徴

頼むからセンスのない奴はプログラマにならないでくれ。迷惑から

不要ものを作りたがる

これが最もプログラマになってはいけないタイプ犯罪行為などの言うまでもないことを除けば)。

たとえば

等。

組織で開発する上で、こういう人がいるメリットは無い。

不要ものを作ることで、プログラムは複雑になり、メンテナンスの手間は増え、バグは発生しやすくなる。

一定レベル以上のプログラマが最も自然だと同意するような実装(「実装しない」という選択肢もふくめて)をパッと思い付けない奴は、センスが足りていない。

将棋で言えば、駒がぶつかったら先ず取る手を考えるといった基本的な手筋が思い浮かばないようなもので、現実的に使い物にならない。

基本的コードなんて書かないに越したことはない。

これは、「Code Complete」「The Pragmatic Programmer」等の著名なプログラミングの本に共通する結論である

DRY原則を守らない

すべての知識は、システム内において単一の、曖昧さのない、そして信頼できる表現を有していなければならない。

これが「The Pragmatic Programmer」にあるDRY原則である

要するに、すべての情報単一ソースから決定されるべきということだ。情報が二重化すると、それらの間で不整合が生じバグの原因になる。また、二重化した情報は、修正の手間が二倍になる。

たとえば、ユーザープロフィール管理するレコードクラスに「生年月日」と「年齢」を同時に保持する必要はない。年齢は生年月日から計算できるからだ。

世の中には、「xxxFlag」みたいな不要変数を作ったり、共通ロジック抽出せずにコピペコード濫造するダメプログラマーが多すぎる。

もちろん、合理的理由があって、この原則適用されない場合もある。

たとえば、多くの言語組み込み配列文字列は、その要素と長さを二重に管理している。配列の長さは要素を数え上げることで求まるが、それには要素数に比例した計算時間がかかるためだ。

ただし、こういう場合でも、公開されたメソッドによる操作では、必ず内部の変数は同期されるように作ることが可能である。それをしないのは、怠慢でしかない。

変数命名が雑

文字変数とか連番とかは論外だが、「ary」とか「setData()」みたいな何の情報も伝えないような変数名・関数名を付けるやつ。

正直、コードの読みやすさなんて6〜7割くらいは変数名の付け方で決まると思っている。

名著「The Art of Readable Code」も、半分以上が変数名の付け方に関連する内容だ。

なぜ変数名が曖昧になるのかと言えば、怠慢を除けば理由は2つある。

1つは、コードを書いた奴自身が、そのコード機能を明確に言語化できないということ。

もう1つは、1つの関数で多くのことをやりすぎたりしていて、その変数役割曖昧になっているということ。

スコープを広げたがる

変数関数を参照できる範囲のことをスコープという。

たとえば、関数の内部で宣言した変数は、多くの言語では関数の外からは参照できない。

スコープは狭い方が良い。これはほとんど全ての状況に適用できるプログラミング大原則だ。

スコープが広いということは、ソースコードの多くの場所からその情報を参照・変更できることを意味する。

たとえば、クラスのメンバ変数は各々のインスタンス内でしか参照できないが、静的な変数はすべてのインスタンス共通に持つ。このため、静的な変数を変更すると、すべてのインスタンスに影響を及ぼし、影響範囲の把握やテストが困難になる。

スコープを広げるか狭めるか、2つの選択肢があったとして、広げる方に心が傾く奴は、プログラマをやめた方がいい。

結果的メンテナンス困難なコードを生むというのも勿論だが、単に書くだけでも、スコープが広い方が書きづらいのだ。つまり必要もないのにわざわざ変数スコープを広げようとする奴は頭のおかしい奴しかいないということになる。

コードが長い

複雑なメトリクスなどを持ち出すまでもなく、たとえば1メソッドの行数が何百行もあるとか、1クラスのメンバ変数が何十個もあるとか言うの。

これは論外であるプログラマとしての能力云々以前に、明らかな怠慢であり、社会人としての常識が疑われる。

定期的にメンテナンスされ続けているOSSソースコードなどを見ると、関数メソッド)の行数は平均して5〜10行。20行を超えるものは稀である

長いものであっても、外部で定義した関数を順番に呼び出しているだけであったり、リクエストハンドリングして各々の処理に振り分けているだけのようなものほとんどである

それを超えているコードは、合理的理由があってそうなっていることよりは、単に悪い設計であることの方が多い。

結論

これらは実はプログラミング云々というより、内容の理解力国語力の問題なのである

ある情報を得るために必要十分な情報は何かが分かってないから、余計な変数を作ったり、無駄変数スコープを広げたりする。

そして、自分が作るものを正確に理解していないから、適切な名前がつけられないし、適切なモジュール分割ができない。

それがすべての原因。

こういう人がまず身につけるべきは、プログラミングテクニックではなく、日本語を正しく読む力。

低学歴が「プログラミングなら自分でもできるかも」なんて思っちゃいけないってこと。もちろん、下請けSIerとかで使い捨てコード書きとして働くことはできるが、上に書いたような最低限の力がないなら、それ以上を望んではいけない。

ちなみに、上に書いていることと反対のことを思っている人も世の中にはいる。

特に、昔からプログラミングをしてきた自称ベテランに多い。その人は、能力があるというよりも、単に現代の開発に際して必要知識がないだけなので、真に受けないように。

また、大学コンピュータサイエンスの基礎を学びたての学生なども、知識をひけらかしたくて上と反対のことを言う傾向がある。その程度のことは、良識のあるプログラマはみんな分かっているのだが。

2020-02-14

シグネチャに連絡先が書いてないっておこられた

よほどだな

シグネチャに連絡先が書いてないっておこられた

よほどだな

2020-02-02

scanz、スキャンコレクション

anond:20200201113849

グラビアスキャン画像蒐集する趣味を楽しんでいた時期がある。

グラビアと言っても日本週刊誌アイドル雑誌グラビアではなく、主に海外ソフトコア雑誌セレブ誌のグラビアである

飽きてやめてしまうまでの数年間、日本人の同好の士とは出会えなかったので、たぶん日本人でそれをしていた人はごく少数だったんじゃないかと思う。

自分はただのエンジョイ勢だったのでそれほど深い知識があるわけじゃないけど、日本語の文献も見つからないようだし、思い出としてちょっと書き留めておこうと思う。

だいたい20年くらい前の昔話。

この趣味名称

よくわからないが、Online Scan Collection とか scanzwarezのノリ?)と呼ばれていたと思う。

概要

スキャナと呼ばれる職人が配布する画像ファイル(主にグラビア)をコレクターが集めたり、コレクター同士でトレードしたりする遊び。スキャナーはコレクターを兼ねていたりもするし、コレクタースキャナーとなって配布を始めたりもする。

スキャン

配布される画像スキャンと呼ばれる。紙媒体で売られている雑誌グラビアを高解像度フラットベッドスキャナで読み取り、もとが印刷物であったことなどわからいくら美麗にレタッチされたJPEG画像である。600dpiクラススキャナと高機能レタッチソフト(ほぼPhotoShop一択)がたぶん必須

題材は大半がセクシー女性グラビアで、ヌードでもPLAYBOYPENTHOUSEに載る程度のおだやかなもの水着下着姿のものも多い。が、たまに美しい風景シリーズがあったりもする。

画像の片隅にはそれを作ったスキャナーのシグネチャ(かっこいいアイコンなど)がウォーターマークとして付される。

あ、上で「日本人はごく少数」と書いたが、おそらく日本人だろうというスキャナはいた。中でも印象に残っているのは Kuni Scan という2万枚ほどのシリーズで、題材が日本グラビアだったし名前からして日本人だろう。Kuni Scan画像検索すると今でも彼の作品の一部を見ることができる。

一次配布

今でもそうだが印刷物スキャンして配布するのは明白にコピーライト違反であるし、ことに題材が肖像権にがっつり抵触していることもあって、一次配布はきわめて目立たないかたちで行われていた。

スキャナーたちが「新しいのできたよー」と最初の配布を行うのはおそらくIRCチャンネルだったと思う。自分外人たちと英語リアルタイムチャットをする自信がまったくなかったのでIRCにはほとんど近寄らなかった。なので一次配布の現場のことはよく知らない。

当時はimgurのような匿名画像アップロードサイトなどもなかったのでこのような個人間のやりとりで配布が行われていたのだろうと思う。

この時、スキャナーは画像とともにスキャンリストも一緒に配布するのであるが、それについては次で述べる。

シリーズスキャンリスト

スキャンは数十枚~100枚程度のテーマを持ったシリーズとしてリリースされる。テーマモデルであったり、雑誌であったり様々。

最新リリースには必ずそのシリーズに含まれファイルの一覧を記したCSVが添えられる。

このリストこそがコレクションキモになる。

リストに記されているのは [ ファイル名, ファイルサイズ, CRC32 ] の3項目(CRC32はファイル指紋のようなもので、データ同一性確認するのに用いられる通信技術)。

この3項目が一致していないとオリジナルデータと認められず、集めたことにならない。

たとえばWebで目当てのファイル名の画像を見つけたとしても、それが何者かの手によってリサイズされていたり再圧縮されていたりするとCSVと数値が一致せず、コレクションに加えることができない。

シリーズには継続中のシリーズとすでに完結したシリーズがあり、CSVファイルに[finished]といった名前がついているのが完結したシリーズである。これに載っているスキャンを全部集めたらコンプリート

CSVはこんな感じで今でも配っているのを見つけた。

http://www.scancollections.com/CSV/list_csv.php

(私がかつてひとつだけスキャナーとして配布したシリーズも含まれていた。なんだかうれしい)

蒐集

一次配布時にIRCを通じてスキャナから直接手に入れることのできなかったスキャンは別の手段で探すことになる。

Webにアップされているものを探したり、同好の士トレードしたり、alt.binaries(ニュースグループ)でも交換が行われていたように思う。

私は主にWebサイト経由で集めていたのだけれど、当時個人ホームページの割り当てボリュームは数MB程度がふつうだったので、スキャンをアップしてくれるサイトも古いものはどんどん消されてしまった。しかも1枚1枚がやたらでかい。今でこそ一辺が1000ピクセル以上あるような大きな画像でも表示は一瞬だけれど、DSLすらなかった時代の混み合うテレホーダイISDN回線では300KB程度のJPEGでも上からじわじわ表示されてくるのを待つ感じだった。

海外同好の士からトレードを持ちかけられることもあった。トレカの要領。ロシア台湾コレクターと、お互い非母国語英語でたどたどしく「おまえこれ持ってるか」「おれのこれやる」トレードのやり取りをするのである。基本は1:1で持ってないもの同士を交換というタテマエだけど、自分は持っているものは気前よく差し上げていた。ドイツコレクターとはたまたま音楽趣味が合ったのでしばらく文通してたな。

そうやって新しく手に入ったスキャンがあると、コレクションマネージャーみたいなソフトを使ってCSVと照合する。CSVと一致しないデータを取り除いてくれたり、リネームフォルダ分けを自動でやってくれたりするスキャンコレクションに特化した管理ソフトがあったのである

やめてしまった理由

自宅のネット回線FTTH常時接続に変えたとたんにコレクションがつまらなくなった。

どんなサイト画像もピュンピュン一瞬で表示されるし、コレクションがウン千枚詰まったZIPファイルですらたちまちダウンロードされて、「苦労して一生懸命集める」という手応えがなくなって、やりがい」がなくなってしまったである

DSL常時接続の普及にともなってネット上には高解像度データがあふれるようになり、スキャンしか見ることのできなかった美麗画像の希少性がどんどん下がっていったこともあると思う。

同好の士

「それ俺もやってた!」って人いますか?

2019-07-14

大まかな処理の流れとしては関数型言語のやり方はスマートだと思うけど、純粋関数型言語みたいなやりすぎはよくないですね

適切に関数を小分けできていれば一時的ミュータビリティとかは言うほど悪ではないし

「そこで失敗するようだったらプログラム全体が死んでいいよ」っていう副作用を扱うのにいちいち関数シグネチャ変えるのはアホくさい

2018-02-26

iPhoneから送信

よく考えたらこシグネチャ意味何なん?

受け取る方には超どうでもよくね?

2016-08-31

http://anond.hatelabo.jp/20160830100438

思い出せないな。

シグネチャ最初ネコ絵文字で書いた人の話とかあったんだけど。

フォーラムBBS黒歴史でもあるんだよね、きっと。

からあったんだよ、場を和ませようとする人が優し過ぎて争いの種になる事。

どんな表現でも、できればたくさんの人のいい思い出になっていくといいね

2011-05-13

http://anond.hatelabo.jp/20110513123216

内容は全く覚えてないんだけどね。「角度とか」っていうキーワードと「頭悪そう」っていう印象だけ覚えてる。

しかし「シグネチャ的に」ってことはやっぱ同一人物だったのかな。新キャラ「角度増田誕生だな。

漏れ」とか「超絶」とか、高齢オタっぽい特徴を突っ込まれてた奴も昔見た気がする。それとも同一人物だったりするのかな。

2010-08-06

http://anond.hatelabo.jp/20100806110841

QSetやQVectorって確かintel提供するSTLシグネチャ互換テンプレートライブラリじゃなかったっけ?

アレは処理系から提供されてるSTLと比べてプロセッサにかなり踏み込んだ部分まで最適化されてあるから滅茶苦茶速いはずだよ。

うろ覚えだけど。

2007-09-05

http://anond.hatelabo.jp/20070905224255

サーバーシグニチャってどうやってしらべるの?

http://www.kantei.go.jp/

ここをつんつんしてみたけど、エラーは吐くのにシグネチャ載ってこないよ。

と、思って他のサーバーを見てみたら、httpパケット普通に載ってた。

なんだ、日本政府が隠蔽しているだけか。←つかってみたかっただけ。

で、パケットモニタみたいなので追わないとみれないもの?

普通ブラウザhttpみてて、センドフォームとかヘッダ情報を表示させるモードがあったらいいのに。

・・・。もしかしてアドオンとかであるのかな?

2007-06-12

増田おもしろくないからさ、シグネチャ付きで書くってのはどうだろう★

2007-04-20

俺ぐらいのレベルになるとエポック病が意味わからん

LiveDoor認証がでたらしいので、とりあえず寝際にちゃちゃっと書こうとしたのだけどなんかうまくいかない。

ログインURLの有効期限が切れています」とかでちゃうんだ。

なにか間違ってるかな?

phpで書いてみたのだけど、エロイ人アドバイスにょろり。

<?php 
// LiveDoor認証に必要なリンクの生成
// 定数がクラス内に切ってあるので環境にあわせ変更してください
	include_once('authlivedoor.class.php');	// Livedoor認証用クラス
	$obj_auth = new AuthLiveDoor(LIVEDOOR_APIKEY, LIVEDOOR_SECRET);
	$livedoorloginurl = $obj_auth->getLoginUrl();

?>
<div style="border:solid 1px #666666;">
<a href="<?= $livedoorloginurl ?>">ライブドア認証を利用してログインする<br />
<img src="http://auth.livedoor.com/img/cmn/head_livedoor.gif" border="0">
<img src="http://auth.livedoor.com/img/cmn/head_logo.gif" border="0">
</a><br />


authlivedoor.class.php

<?php
// this code is writen by utf-8 &amp; lf 

//http://auth.livedoor.com/login/?app_key=<app_key>&amp;perms=<perms>&amp;t=<time>&amp;v=1.0&amp;userdata=<userdata>&amp;sig=<sig>

// LiveDoor外部認証APIを利用する
// キーは各開発者ごとに取得が必要です。 http://auth.livedoor.com/ ここより取得できます。
// コールバックURLには authlivedoor.php を指定してください

// --- 下記宣言を環境に合わせて変更してください。 ---
define("LIVEDOOR_APIKEY" ,"");	// アプリケーションキー
define("LIVEDOOR_SECRET" ,"");	// LiveDoor認証秘密キー
// --- ここまで ---


class AuthLiveDoor {

    const LIVEDOOR_AUTH_PORT = 80;		// ポート
    const LIVEDOOR_AUTH_TIMEOUT  = 10;	// タイムアウト
    const LIVEDOOR_AUTH_VERSION  = '1.0';	// 認証APIプロトコルバージョン
    const LIVEDOOR_AUTH_PERMS  = 'id';	// 認証APIアクセスconst LIVEDOOR_AUTH_FORMAT  = 'xml';	// 認証APIの取得フォーマット



	const LIVEDOOR_AUTHURL = "auth.livedoor.com";	// LiveDoor認証URL

	private $login_state = false;
	private $login_id = "";
	private $err_msg = "";

	private $apikey = "";
	private $secret = "";

	public function __construct($apikey, $secret) {
		$this->apikey = $apikey;
		$this->secret = $secret;
	}

	// 
	// $cert = $_GET['token'];
    public function getAuth($token) {
		if ($token == "" ) {
			return;
		}

		$api_time = date('U');	// エポック秒で
		$param_ary = array($this->apikey
						,AuthLiveDoor::LIVEDOOR_AUTH_FORMAT
						,$token
						,api_time
						,AuthLiveDoor::LIVEDOOR_AUTH_VERSION
						);
		sort($param_ary);
		$api_sig = hash_hmac('sha1',implode('',$param_ary),$this->secret);


		$param = "app_key=".$this->apikey
			."&amp;format=".AuthLiveDoor::LIVEDOOR_AUTH_FORMAT
			."&amp;token=".$token
			."&amp;t=".$api_time
			."&amp;v=".AuthLiveDoor::LIVEDOOR_AUTH_VERSION
			."&amp;sig=".$api_sig;

		$fp = fsockopen(AuthLiveDoor::LIVEDOOR_AUTHURL
				, AuthLiveDoor::LIVEDOOR_AUTH_PORT
				, $errno
				, $errstr
				, AuthLiveDoor::LIVEDOOR_AUTH_TIMEOUT);
		if (!$fp) {
			$this->err_msg = "$errstr ($errno)<br />\n";
		} else {
			$out = "POST /rpc/auth?$param HTTP/1.1\r\n";
			$out .= "Host: auth.livedoor.com\r\n";
			$out .= "Connection: Close\r\n\r\n";

			fwrite($fp, $out);
			$ret = "";
			while (!feof($fp)) {
				$ret .= fgets($fp, 2048);
			}
			fclose($fp);
		}

		// LiveDoorの認証XMLパターン
		$pattern = '/(\s*<livedoor_id>)(.*)(<\/livedoor_id>)/';
		preg_match_all($pattern,$ret,$getAry);
		$livedooruserid = $getAry[2][0];

		// ユーザーIDを取得できた場合
		if ($livedooruserid != "") {
			// ログイン成功
			$this->login_state = true;
			$this->login_id = $livedooruserid;
			return ture;
		} 
	}

	public function getLoginState(){
			return $this->login_state;
	}

	public function getLoginId(){
			return $this->login_id;
	}

	public function getLoginUrl() {
		# http://auth.livedoor.com/guide/
		# http://auth.livedoor.com/login/?app_key=<app_key>&amp;perms=<perms>&amp;t=<time>&amp;v=1.0&amp;userdata=<userdata>&amp;sig=<sig>
		# app_key 必須 登録時に発行されたアプリケーションキー 
		# perms 必須 要求するアクセス権、現状userhashとidの2種類がある 
		# t 必須 URLが生成された時間をエポック秒で表したもの 
		# v 必須 プロトコルバージョン現在は1.0で固定 
		# userdata 任意 コールバックURLに引き継ぎたい値を255バイトまで自由に設定できる 
		# sig 必須 このURLの正当性を確認するためのシグネチャ 


	// ログインURLの有効期限が切れています
	// ヾ(。o、゜)ノ ここらへんがわからん!! 
//		$api_time = time()+32400;	// エポック秒で
		$api_time = date('U')+32400;	// エポック秒で
//		$api_time = date('U');	// エポック秒??もしかして、それはポエティック病ではありませんか?
		$param_ary = array($this->apikey
						,AuthLiveDoor::LIVEDOOR_AUTH_PERMS
						,api_time
						,AuthLiveDoor::LIVEDOOR_AUTH_VERSION
//						,data
						);
		sort($param_ary);
		$api_sig = hash_hmac('sha1',implode('',$param_ary),$this->secret);
		$loginurl = "http://auth.livedoor.com/login/"
			."?app_key=".$this->apikey
			."&amp;perms=".AuthLiveDoor::LIVEDOOR_AUTH_PERMS
			."&amp;t=".$api_time
			."&amp;v=".AuthLiveDoor::LIVEDOOR_AUTH_VERSION
//			."&amp;userdata="
			."&amp;sig=".$api_sig;

		return $loginurl;
	}


}

もう疲れたので寝る。ライブドアなんてーーーー!!!

訂正。

秘密キーとか、そのままのっけちゃった (ーωー|||)

そしてなかなか訂正できなくてあせった。。

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