タグ

ブックマーク / qiita.com (476)

  • A Philosophy of Software Design:要約 - Qiita

    概要 内容と動機 これは、「A Philosophy of Software Design」の要約になります。 書の内容としては、筆者が経験ベースで、ソフトウェアの複雑性の原因とどれにどう向き合うのかをまとめた内容です。 普段チームで開発する中でわかりづらさや、設計に関する違和感を感じることがあります。 その自分の違和感が当に正しいものなのか、仮にそうだとしたらきちんと言語化してレビューしたいという動機から書を読むことにしました。 170ページの書を完璧に要約することは困難なので、幾分自分にとって印象深かったことが選ばれていると思います。 逆に、その過程で触れられなかった章もありますので、その点ご留意ください。 また、ここでは具体例は少ないですが、ある程度大きなコードベースで開発した方であれば想像しながら読めるのではと思っています。 もし、具体例を参照したい場合は、ぜひ書を読んで

    A Philosophy of Software Design:要約 - Qiita
    t2wave
    t2wave 2022/02/13
    Complexityの因数分解、Moduleの設計方法
  • Googleフォントを使うと犯罪になる - Qiita

    <link href="https://fonts.googleapis.com">って書くと罰金取られます。 以下はGerman Court Rules Websites Embedding Google Fonts Violates GDPRというニュースの紹介です。 German Court Rules Websites Embedding Google Fonts Violates GDPR ドイツのミュンヘン地方裁判所は、あるWebサイトの運営者が、ユーザの個人情報を人の同意なしにフォントライブラリを経由してGoogleに提供したとして、100ユーロの賠償を命じました。 Webサイトが原告のIPアドレスGoogleに無断で提供したことは、ユーザのプライバシー権の侵害に当たると判断しました。 さらに、Webサイトの運営者は収集した情報をその他のデータと突き合わせることで『IPア

    Googleフォントを使うと犯罪になる - Qiita
  • UTF-8のテーブル(MySQL5.6)に竈門禰󠄀豆子が格納できない問題を調べてみた - Qiita

    竈門禰󠄀豆子をMySQL5.6のテーブルにinsertしようとすると正しく格納できず、竈門禰となってしまうケースがあるという話を聞き、調べてみました。 実践 まずは試しにやってみます。 mysql> show create table verification\G *************************** 1. row *************************** Table: verification Create Table: CREATE TABLE `verification` ( `name` varchar(100) COLLATE utf8_bin DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin 1 row in set (0.01 sec) mysql> inse

    UTF-8のテーブル(MySQL5.6)に竈門禰󠄀豆子が格納できない問題を調べてみた - Qiita
    t2wave
    t2wave 2022/02/02
    異体字セレクタ
  • 【単価表】Webエンジニア業務委託の単価診断を作って1066名の方に回答していただきました - Qiita

    ISSUEに単価表の記事を追加しました webエンジニア用の業務委託単価診断を作りました 以前、エンジニア200人に聞いて、業務委託単価表を作りましたという記事を書いたところありがたいことに多くの反響をいただきました!PV数は10万を超え、はてブやTwitterでも多くのコメントをいただきました!読んでいただいた皆様ありがとうございます!今回はその記事をもとに単価診断を作りました。 なぜつくったのか 以前、エンジニア200人からヒアリングして業務委託単価表を作成しました。反響いただいたものの表を見て自分で当てはまるかどうかを確認する作業が大変だという声がありました。ですので診断形式にして、全て質問に答え終わると自動的に単価を算出してくれるシステムを作りました。 30秒で現在のあなたの単価を算出します。 単価診断ページ 質問の回答結果をスコア化して単価を算出しています。算出されたスコアによっ

    【単価表】Webエンジニア業務委託の単価診断を作って1066名の方に回答していただきました - Qiita
  • Test in Prodは絶滅してくれ - Qiita

    Defiは金融のあるべき姿です 良いものならしっかり動くものを出さないと勿体無いです こんにちは, InsureDAO の開発をしています Oishunです。 Defiプロトコルは日々大きく複雑になっていっています。外部にコードを読まれる機会が圧倒的に多いcryptoでは, テストコードはコントラクトと同等かそれ以上に重要な役割があると考えていますが, 現状そこに十分な注意やリソースを割けているプロトコルがまだ少ない印象です。 そこで今回はスマコンのテストについて, 自分が書いていく中で得たものを共有します。 目次 テスト構造 テスト項目 テスト高速化 可読性・開発速度アップ デバッグ方法 console.log命 テストケース内から出力 コントラクトから出力 おわりに リンク集 環境 solidity 0.8.7 hardhat 2.6.1 テスト構造 ここでは, Curve Finan

    Test in Prodは絶滅してくれ - Qiita
    t2wave
    t2wave 2022/01/30
    solidityのテスト手法あれこれ
  • Java API 訴訟の件で私が Google よりも Oracle の肩を持つ理由 - Qiita

    はじめに Java API を巡って OracleGoogle の訴訟が続いています。世間の論調を見ていると、「OracleGoogle」の構図を「プロプライエタリ対オープンソース」と位置付け、あたかも Google が正義の味方であるかのように扱っていますが、この件に関しては、私は逆の立場です。むしろ、「Google けしからん」と思っています。私がそう思う理由をここに書きます。 Java の互換性 Android が登場するずっと前から、業界の皆は、JCP (Java Community Process) に則り、協議の上 Java API の仕様を決めてきました。仕様を策定する際には、RI (Reference Implementation) (リファレンス実装) と TCK (Technology Compatibility Kit) (テスト群) も同時に用意します。

    Java API 訴訟の件で私が Google よりも Oracle の肩を持つ理由 - Qiita
    t2wave
    t2wave 2022/01/16
    "名実共に Java を守っているのは Oracle のほうであり、むしろ Google は「Java の破壊者」なのです。"
  • エンジニアの"有害な振る舞い"への対処法 - Qiita

    記事の続編として、自分が有害な振る舞いをしないようにする改善の取り組みを扱った記事も書いてます。 エンジニア上司が"有害な振る舞い"を改善する方法 ※「難しい人」は概念として用い説明するのに便利な言葉でしたが、誤解を生じたり、記事のポリシーに沿わない使用(難しい人というラベリングを特定個人に適用する使い方)が容易にされてしまいそうだと分かりました。そのような誤用を防ぐことを最優先とするため、代わりに「有害な振る舞い」という表現を使用し、人ではなく振る舞いに着目するタイトル及び文章に変更致しました。 はじめに 以下の記事を読んだ際に「難しい人」という表現が何となく面白い響きで印象に残ったので、これを機に自分の考えを今までの経験をもとに書きたいと思います。 “難しい人”が1人入ると、チームの生産性は30〜40%低下する 対抗せずに、場の「安心感」を作るための3つの条件 - ログミーBiz

    エンジニアの"有害な振る舞い"への対処法 - Qiita
  • 【計算と哲学】計算結果はあらかじめ決まっている? - Qiita

    アドベントカレンダーを最低5記事、出来れば10記事書くと決めて書き始めたのが11月2~3日。 今が11月14日で書き終えたのは2記事。 急ぎます。 幸いこの記事はそこそこ難しいですがあっさりしてるはずです。 あっさりしているのは自分もまだよく分かっていないことについて書くからです。 「(ステートレスな)計算の結果はあらかじめ決まっている」。 これは誰もが当たり前に信じています。 そうでしょうか? これが問題となるのは自由意志の文脈です。 世界が決定論であるか、自由意志は存在するか? そうした問題を議論する場合に往々にして前提とされる「決定論なら結果は決まっている」。 これを否定するのはかなり直感に反しますが、考慮には値します。 ここでは計算結果が決まっていることを「(計算の)既定性」と呼ぶことにします。 以下の議論では結論を出せたとまでは言えません。 しかし色々考えながら既定性を否定しよう

    【計算と哲学】計算結果はあらかじめ決まっている? - Qiita
  • なぜエンジニアが作る画面はダサいのか…?「理由」と「対策」を徹底解説【エンジニア向け画面デザイン講座】 - Qiita

    なぜエンジニアが作る画面はダサいのか…?「理由」と「対策」を徹底解説【エンジニア向け画面デザイン講座】UXUIDesignUIデザイン画面設計 1.はじめに エンジニアの私がデザインを気で勉強した結果、デザイナーとエンジニアはそもそも思考が大きく違っているということがわかりました。 今回は「それ」をデザインに苦手意識のあるエンジニア方にも理解してもらえたらと思い、わかりやすくまとめてみました。 2.アプリの画面デザインを考えてみよう まず、こんなアプリを考えてみてください。 フィットネストレーナーが使うアプリ トレーニングルームでお客様とお話しながら使う 端末はタブレット そして 会員の個人情報確認 前回までのトレーニング状況の確認 次回の予約受付 といったことをします。 使える情報としては、こんな感じです。 あなたならどう画面デザインをするか、もしお時間があったら考えてみてください。

    なぜエンジニアが作る画面はダサいのか…?「理由」と「対策」を徹底解説【エンジニア向け画面デザイン講座】 - Qiita
  • KnownOrigin の Merkle Royalties Distributor の紹介 - Qiita

    はじめに 少し前に、NFT アートの老舗マーケットプレイス KnownOrigin が、NFT の販売手数料を効率的に引き出せるようにするツールを発表した。この記事では、このツールが一体何なのかを紹介する。 これは何? KnownOrigin で発行された NFT が、OpenSea など他のマーケットで売買された場合であっても、その販売手数料をアーティストが請求できるようにするためのコントラクトとスクリプト。 GitHub: https://github.com/knownorigin/merkle-royalties-distributor なおこのツールは、KnownOrigin の NFT だけでなく、ERC-2981 を実装している NFT、または、Rarible で作成された NFT に対しても使用できる。 なぜこれが必要? OpenSea では、NFT が購入されたときに、そ

    KnownOrigin の Merkle Royalties Distributor の紹介 - Qiita
    t2wave
    t2wave 2021/12/04
    open seaの手数料をクリエイター毎にマークルツリーを使って分配できるツール。引き出せる権利を持っている状態を安価につくれる、かつガス代を引き出し者それぞれの負担に。
  • 仮想通貨botterのための必読書 - Qiita

    こんにちは、Hohetoです。 日はAdvent Calendarの3日目です。 タイトルは煽りです。必読というわけではないです。 日は趣向を変えて、筆者がこれまで読んだの中から、botterたちに刺さるであろうをピックアップしてみました。 感想は完全に筆者の主観です。 総合的に・一般的にみて優れたでなくとも、botterたちの興味のありそうな内容を扱っていればピックアップしています。 「読み物系」と「参考書系」、あと番外編として「ビットコイナーになるなら」に分けてご紹介します。 読み物系 ウォール街のアルゴリズム戦争 1990年代から急速に電子化されていく米株式市場と、その裏側で活動したプログラム・トレーダーやヘッジファンドを題材としたドラマ。 「孤高の天才プログラマー」ジョシュ・レヴィン、かっこよすぎるんですけど?? 米国の回送注文制度とフロント・ランナーたちの歴史、そして高

    仮想通貨botterのための必読書 - Qiita
  • ECMAScript6にシンボルができた理由

    ECMAScript6 (ES6, ES2015) で導入された新機能の大半は、読めば便利さが想像くらいはできるけど、自分にとってしばらく訳がわからなかった新機能が「シンボル」(MDNのリファレンス)。これまで文字列だけで上手くやってきたJavaScriptに、急になぜこんなものが導入されたの? イマイチ分からなかったので、調べたことのまとめ。 シンボルの簡単なおさらい 知ってる人は読み飛ばし推奨。詳しく見たい人は、こことかの他のページを参照。 ES6で導入された、 Symbol() で作成できる特殊な値。 Symbol() は、 typeof すると 'number' でも 'string' でも 'object' でもなくて 'symbol' となる、まったく新しいタイプのプリミティブ値を生成する。 一旦作ったシンボルは、それ自身とのみ等しくなる、ユニークなIDとして機能する。 ===

    ECMAScript6にシンボルができた理由
  • WKWebView で JS を使用して値を取得する 3 つの方法 - Qiita

    JS 部分は document.documentElement.innerHTML としてます。 1. evaluateJavaScript(_:completionHandler:) を使う webView.evaluateJavaScript("document.documentElement.innerHTML") { value, error in print(value as? String) } extension WKWebView { @discardableResult func evaluate(javaScript script: String) -> String? { var result: String? var isCompletion: Bool = false self.evaluateJavaScript(script) { value, _ in re

    WKWebView で JS を使用して値を取得する 3 つの方法 - Qiita
  • [iOS][Swift]JavaScriptと相互通信 - Qiita

    WebViewでJavascriptSwiftの双方向通信を行う方法です。 JavascriptからSwiftのメソッドを実行する 基的な使い方 UIWebViewではなく、WKWebViewを使用します。 WKUserContentControllerでJavaScriptで実行するコールバックを登録します。 実行されたコールバックはWKScriptMessageHandlerのuserContentControllerで受け取れます。 Javascript側で呼び出したコールバックはmessage.nameで取得できます。 class ViewController: UIViewController, WKScriptMessageHandler { override func viewDidLoad() { super.viewDidLoad() let webConfig: W

    [iOS][Swift]JavaScriptと相互通信 - Qiita
  • [JavaScript] Dependency Injectionコンテナどれにしよう? - Qiita

    Azure FunctionsをJavaScriptで書いていました。 テストを書くにあたり、やっぱり依存先クラスを自前でnewしてるのは辛いなと思い、DIコンテナを探すことにしました。 awilix こちら nodejs, ES6 で dependency injection with awilix で紹介されていました。 コンテナを作り const container = awilix.createContainer({ injectionMode: awilix.InjectionMode.PROXY })

    [JavaScript] Dependency Injectionコンテナどれにしよう? - Qiita
  • リモートワークのいま学びたい、GitLab Handbookと徹底した文書化への狂気 - Qiita

    1200人以上の全社員がリモートワークGitLabが公開する「リモートワークマニフェスト」は何を教えているか? スケールする組織を支えるドキュメンテーションの技術を”GitLab Handbook”から学ぶ その コメント GitLab Handbookで面白かったもの@コミュニケーション編 GitLabのリモート統括責任者が語る 日企業が「まずやるべきこと」 を読んだ。主題はGitLab社の https://about.gitlab.com/handbook/ である。 2022.02追記 GitLabで学んだ最高の働き方 Developers Summit 2022-02-18 2022.01追記 リモートワークのいま学びたい、GitLab Handbook非同期コミュニケーションのススメ - Qiita Handbook要点 「GitLab社ではリモートワークの中でも生産性高く働

    リモートワークのいま学びたい、GitLab Handbookと徹底した文書化への狂気 - Qiita
  • ポストモーテムを理解する - Qiita

    はじめに こんにちは、webエンジニアの@an_sonyです。 最近、障害対応の振り返りをしていた時に「ポストモーテム」という手法を初めて知りました。これまで「どうやったら良い振り返りができるのか?」と悩んでいた自分にとって目から鱗の知識ばかりでしたので、整理のためにまとめてみます。 ポストモーテムとは? SRE サイトリライアビリティエンジニアリング1によると、インシデントとそのインパクト、その緩和や解消のために行われたアクション、根原因(群)、インシデントの再発を避けるためのフォローアップのアクションを記録するために書かれるドキュメントを指します。 言い換えると、失敗(障害)から学び、再発防止策を決める活動です。 障害報告書との違い 障害報告書と内容が似ていますが、ポストモーテムは読者と目的が違います。 障害報告書は、障害発生によって不利益が生じたユーザーに対して、その説明をするため

    ポストモーテムを理解する - Qiita
  • フロントエンドの慣習のまとめ - Qiita

    1. はじめに フロントエンドを始めたばかりの頃、参考書や参考サイトで当然のように使われているものの、特に說明がないような**「慣習」や「テクニック」**に困惑したり、その理由が気になった経験を思い出したので、その一部を簡単にまとめてみました。 2. HTML 2-1. iタグでアイコン HTML の興味深いテキスト要素 (<i>)は、何らかの理由で他のテキストと区別されるテキストの範囲を表します。例えば、技術用語、外国語のフレーズ、架空の人物の思考などです。英文においてはよく斜体で表示されるものです。 <i>: 興味深いテキスト要素 - HTML: HyperText Markup Language | MDN 仕様上は適切な使用方法ではなさそうですが、「Bootstrap Icons」や「Font Awesome」などでも採用されているように、普及している印象があります。 ちなみにHT

    フロントエンドの慣習のまとめ - Qiita
  • 【git tag】プッシュしたtag名を削除・変更してはいけない理由〜manコマンドで読めるgitメンテナの怒り〜 - Qiita

    一度プッシュしたtagは、名前変更・削除してはならない プッシュしたtag名を削除・変更してはいけない理由は、git tagのmanコマンドの中で説明されている。 manコマンドの内容は、コマンドの使い方を淡々と説明している印象があり、今まであまり読んでこなかった。 しかしgit tagのmanコマンドではとても人間味のある文章が書かれていた。 感情部分だけ要約すると、 「tag名を変更するのは馬鹿げている!!絶対にするなよ!! それでもやりたいって?じゃあこうやれ!馬鹿げたやり方だけどな!! それは面倒だって?やるならこれしかないんだよ!(怒)」 という筆者の熱い思いが文章で綴られている。 それでは見ていこう。 manコマンドをみてみる 下記コマンドで該当の記述を読むことが出来る web上で見たい場合はこちらでも。 原文 該当の記述はこちら On Re-tagging What shou

    【git tag】プッシュしたtag名を削除・変更してはいけない理由〜manコマンドで読めるgitメンテナの怒り〜 - Qiita
  • filter-branchで指定した範囲のコミットログを修正する - Qiita

    ランチの作業の途中でBacklogからRedmineに移行して運用ルールが変わった。 修正したいログは32コミット分あったので、git rebase -i でひとつずつやるのはかったるかった。 なお範囲にコミットのハッシュIDは指定できない模様。 filter-branchで新たにコミットを作るから、IDで指定すんなということか? 結果的には、修正したい開始点と終点にテンポラリでブランチを作って、範囲にブランチ名を指定したらできた。 HEAD~8..HEAD~32という参照がうまく効かなくてハマった。 Which ref do you want to rewrite? とか言ってきて、だから言ってんじゃんって思った。 結論 git filter-branch --msg-filter ' sed -e "s/^feature.*$/ref\ #146/" ' tmp2..tmp

    filter-branchで指定した範囲のコミットログを修正する - Qiita