タグ

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

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

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

    なぜエンジニアが作る画面はダサいのか…?「理由」と「対策」を徹底解説【エンジニア向け画面デザイン講座】 - Qiita
    n314
    n314 2021/12/09
    とても良いけどサンプルがちょっと引っかかるかな…。一般ユーザー向けじゃない情報をぎっしり詰め込んだ文字だらけの管理画面って、作ってるこっちよりオペレーターの方が把握してて使いこなしてる。
  • フレッツ光回線でscpが遅かった話 - Qiita

    この記事は、Supershipグループ Advent Calendar 2021の7日目の記事になります。 先日、sshを使用したファイル転送が回線速度と比べて異常に遅いという現象に遭遇したので、その際に行った調査を再現しつつ原因や対策について書いてみたいと思います。 要約 OpenSSHはデフォルトでinteractiveなセッションに af21 、non-interactiveなセッションに cs1 をDSCP値としてIPヘッダに設定する フレッツ網はIPヘッダのDSCP値を帯域優先サービスで使用しており、契約に応じて指定された優先度以外が設定されたパケットの転送は保証されない そのため、OpenSSHをデフォルト設定のままフレッツ網で使うと通信ができなかったり、速度低下などの悪影響を受ける可能性がある OpenSSHがDSCP値を設定しないようにするためには、IPQoS noneを設

    フレッツ光回線でscpが遅かった話 - Qiita
  • 【PHP8.1】PHP8.1がリリースされたので新機能全部やる - Qiita

    PHP8.2 / PHP8.1 / PHP8.0 2021/11/26にPHP8.1.0がリリースされました。 大きな新機能については、PHP8.0以降公開されるようになったランディングページで見ることができます。 ここでは、概要ではなくUPGRADINGに載っている変更点を全部見て回ることにします。 Backward Incompatible Changes 下位互換性のない変更点。 PHPコア Access to the $GLOBALS array is now subject to a number of restrictions $GLOBALSの内部処理を変更します。 $a = 1; $globals = $GLOBALS; // 値をコピー $globals['a'] = 2; var_dump($a); // PHP8.1 int(1) // PHP8.0 int(2) $

    【PHP8.1】PHP8.1がリリースされたので新機能全部やる - Qiita
    n314
    n314 2021/12/07
  • マイクロサービスにひそむ複雑さに立ち向かう - Qiita

    はじめに はじめまして。Kyashでサーバサイドエンジニアを担当しているhirobeです。 Kyash Advent Calendar 2021の12/5担当分です。 Kyashでは、約30ほどのマイクロサービスが動いてます。 マイクロサービスは難しいです。 私が入社して2年半ほどの間、マイクロサービスの複雑さに苦しめられ、あがいてきた実経験をもとに、マイクロサービスにひそむ難しさを紹介したいと思います。 ここでは、ケースとして、弊社の機能のひとつである登録カードからのリンクを実装する上で発生する問題を紹介したいと思います。もちろん弊社サービスを使ったことない人でもわかるように説明をしますのでご安心ください。 なお、最初に注意書きしておくと、ブログではあくまで「マイクロサービスにひそむ複雑さとその対応法」を説明するためのわかりやすさを優先して説明していきます。事実とは異なるケースがありま

    マイクロサービスにひそむ複雑さに立ち向かう - Qiita
    n314
    n314 2021/12/06
    App Engine 用のフレームワーク Slim3 が実装したグローバルトランザクションの話を思い出した。トランザクション管理だけのサービスって無いんかね。
  • Nikita Popov、PHP開発から離れる & PHP財団設立のお知らせ - Qiita

    The first is that I'm changing jobs at the end of the month, and won't be working on PHP in a professional capacity anymore. I'll still be around, but will have much less time to invest in PHP development. 今月末で転職するため、今後仕事としてPHPに関わることはなくなります。 今後も活動は続けますが、PHPに関わる時間はずっと少なるでしょう。 Nikita Popovは、ここ数年のPHPエコシステムを主導してきた人物です。 それまでもボランティアで年間1000以上のContributeをしていたのですが、2019年にJetBrainsに入社してからは毎年4000以上のContribute

    Nikita Popov、PHP開発から離れる & PHP財団設立のお知らせ - Qiita
    n314
    n314 2021/11/30
    マジか…。徐々にゆるふわPHPに戻っていって、PHP-Parserが更新されなくなったりバグが多くなったら静的解析が使い物にならなくなる可能性もあるような。
  • シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita

    シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の当の理由を知ると優れた文法が見えてくるShellScriptBashUNIXshellPOSIX はじめに シェルスクリプトの変数代入で = の前後にスペースを置くことができない理由は、検索すれば「プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話」のような記事がすぐに見つかります。記事に書いてあるとおり変数代入とコマンド呼び出しと区別がつかないからです。それは間違いではないんですが、私はもう少し説明が足りないと感じています。そこで今回は = の前後にスペースを置けない当の理由を解説したいと思います。 の前に皆さんにはこの話を読みながら、自分がシェルスクリプトの言語設計者だったとしたら、どういう言語仕様にするかを考えて欲しいです。なぜかと言うとシェルスクリプトの文

    シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita
    n314
    n314 2021/11/11
    いい読み物。LANG=C以外にも、自作のスクリプトでDB_DSN=pgsql://…とかAPP_ENV=stagingとか、前置きの変数が前提のスクリプトを結構書いていた。
  • PostgreSQLのjsonbを使うときの落とし穴 - Qiita

    皆さん、PostgreSQL使ってますか? オープンソースRDBであれば、ほぼこれ一択。というプロダクトですよね。 と、まずはじめに MySQL 派に喧嘩を売ってみました。ちなみに当方は喧嘩を売られても買いません。 さて、 PostgreSQL にはJSONデータを格納するための json型と jsonb 型の2つがサポートされています。 一般的にはバイナリデータで保存される jsonb 型のほうがパフォーマンスが高いので、通常は jsonb 型を使うと思うのですが、 jsonb 型にはいくつかの落とし穴があります。今回はそれをお伝えします。 jsonbの落とし穴 同じキーが集約される。 キーが自動的にソートされてしまう。 になります。順番に見てみましょう。 同じキーが集約される。 JSONの事実上の仕様である RFC 8259 によると When the names within an

    PostgreSQLのjsonbを使うときの落とし穴 - Qiita
    n314
    n314 2021/11/09
    普段は困らないけどDBごとテストするときに順番違いでエラーになったりしてめんどかった。長さ順、辞書順になってたので今見たら自前でjsonbのselect結果と同じになるように文字列変換関数作ってた。
  • オンプレGitlabの障害対応 - Qiita

    趣旨 「Gitlabが動かなくなった!」と誰かが叫んだら。 Gitlabは経験上、安定して何年も稼働します。それだけに、何かトラブルが発生した時にどこから手を付けて良いのか途方にくれることがあります。そんなあなたに役立つ記事です。 トラブルが発生した時にこの記事を思い出していただければ嬉しいです。 便利な日語情報サイト 下記のサイトは必見です! GitLab語情報サイト https://www.gitlab.jp/links/ GitLab語情報サイトは、GitLabの情報を日語で発信するために個人で立ち上げたコミュニティサイトです。 Qiitaのコミュニティサイト https://qiita.com/organizations/gitlab-jp 今回の動作環境 CentOS Linux release 7.9.2009 Gitlab 14.4.1 トラブルシューティングの初

    オンプレGitlabの障害対応 - Qiita
    n314
    n314 2021/11/08
    /var/log/gitlab にめっちゃ色々なログがあって調べるの苦労した。gitlab-ctl tail か。なるほど。何も操作してない状態でもログがどんどん流れていくよね…。
  • PHPにおけるクラスの事前バインディングについて - Qiita

    これは正常に動作します。 Testクラスを定義するより先に使っているのに動きます。 ふしぎですね。 これは一見JavaScriptにおける巻き上げと同じように見えますが、実際はもっと複雑でややこしいことをやっています。 そこらへんについて、PHPの第一人者Nikita Popovが解説していました。 以下はEarly binding in PHPの日語訳です。 Early binding in PHP PHPでは、同一ファイル内で宣言前のクラスを使用することができる場合があります。 我々はこれをearly bindingと呼んでいますが、この正確な動作はかなり難解であり、具体的な文書化も見当たりません。 この記事を読めば、事前バインディングに関するバグレポートのへの回答が何故won't fixばかりになるのかが理解できるようになるでしょう。 Early binding != class

    PHPにおけるクラスの事前バインディングについて - Qiita
    n314
    n314 2021/11/04
    たまに書き捨てっぽいCLIのスクリプトを書く時に遭遇するかもしれない。
  • マルチコンテキストな Laravel 製アプリケーションでクラスをどこに配置すればいいか - Qiita

    n314
    n314 2021/10/22
    一番複雑でミスが許されない「注文」っていう処理がコンシューマーでもスタッフでも発生するんだよなあ…。コンシューマー向けの商品情報表示画面を管理画面でも同じレイアウトで見たい、と後から言われるとか。
  • 何故くそややこしいReactを勉強しないといけないのか? - Qiita

    逃げるプログラマー、避けられない壁 Web系アプリケーション開発をするとなると、React, Angular, Vueといったフレームワークの話題は避けて通れないのだけど、面倒にかまけてみて見ぬふりをしているデヴェロッパー諸君は多いと思う。 自分もそういうダメグラマーの一人でした。 だが、Nodeベースでバックエンドを開発していると、どうしてもフロント側が必要だし、使いたいライブラリーや機能、操作性を組み込むためには、フロント側のフレームワークからは逃げられず、立派なフルスタックデベロッパーになる為に、重いけつを上げ、学習することにしたのであります。 React, Angular, Vueの3大フレームワークをざっと調べてみた際に、一番取っつきやすそうだったReactをチョイス。 しょせんはHTMLCSSJavascript で、結局Reactは何をやっているかというと、しょせんはHT

    何故くそややこしいReactを勉強しないといけないのか? - Qiita
    n314
    n314 2021/10/22
    カートアイコンの商品数とかブログの記事数はむしろjqueryが向いてるんじゃないか…?seoが支配的だし。dev.toはvanilla jsだったよね確か。
  • 「DI使うとインタフェース地獄に陥るらしいから使いたくない」と言っていたA氏がインタフェースを使わずにDIで幸せになるまで - Qiita

    「DI使うとインタフェース地獄に陥るらしいから使いたくない」と言っていたA氏がインタフェースを使わずにDIで幸せになるまでC#DIDependencyInjection依存性の注入 DIはインタフェース定義しなくても十分実用的だし、むしろそっちの方が質だよ、という話をします。C#や.NETを使っていますが、それに限らず普遍的な内容です。 インタフェースと実装に分けるとか無理。DIなど不要! 中堅社員のA氏は、**「DIっていちいち実装とインタフェース分けないとダメなんでしょ?。さすがにやってられんわ」**と言って頑なにDIを導入しようとしません。 DIはテスタビリティと併せて語られることが多かった為か、A氏は「注入するクラスは基的にインタフェース定義しましょう」という記事ばかりを読んでいたのです。 インタフェースと実装を分けるとは、例えば次のような事です。 services.AddSc

    「DI使うとインタフェース地獄に陥るらしいから使いたくない」と言っていたA氏がインタフェースを使わずにDIで幸せになるまで - Qiita
    n314
    n314 2021/10/20
    PHPerならauto wiringねって話になるけど、C#だと生存期間の問題があるのか。JavaならSpringでAutowiredアノテーションがあるみたいね。
  • ネットワーク的に正しいアドレス振り分けをしよう - Qiita

    4つに分割しました。こうすると1つのセグメントにつき、62個のIPアドレスが利用可能です。 また、192.168.0.0/25、192.168.0.128/26、192.168.0.192/26というように、大きいセグメント1つと他に2つのセグメントといった分割も可能です。 サブネットマスクによる大きさ指定は/32(実用上は/31)まで可能です。 あまり分割しすぎると利用できないIPアドレスやセグメントが大量にでてきますので、その点は注意が必要です。 こうして分割されたセグメント設計をもとに「じゃぁDHCPのアドレス配布範囲は.1 ~ .126にしよう」とやると、より美しいネットワーク設計となるでしょう。 これはなにが美味しいのか 利点としては2つあります。 ネットワーク関係の設定、ファイアウォールのフィルタリングの記載などが「192.168.0.0/26」と簡潔に記載できる。 最近は「I

    ネットワーク的に正しいアドレス振り分けをしよう - Qiita
    n314
    n314 2021/10/16
    ブロードキャストアドレスを考えるっていうことはルーティングするっていうこと?だとすると192.168.1.0/24 でいいような。実際はサブネット分かれてないのに192.168.0.192/26 として考えるのならGWのIPは何にするんだろう。
  • LoggerをDIする事についての議論 - Qiita

    この記事の目的 Loggerを様々なクラスで使用するにあたり、ASP.NET MVC Coreでは、規定でDIを用いてILoggerインタフェースにLoggerを注入します。 しかしこれまで多くのシステムでは、Loggerクラスの静的メソッドを用いてLoggerインスタンスを取得し、以下のように使っていました。 static readonly log4net.Ilog _logger = log4net.LogManager.GetLogger("ErrorLog"); 上記のコードがどのレベルにあるか(クラスレベルか、システムグローバルか)はさておき、各クラスからはなんらかのグローバル変数かクラスの静的メンバを直接参照していたわけです。 しかし、クラスを特定のグローバルな何かに依存させるやり方は、そのクラスの可搬性を下げ、テストもしにくくしてしまいます。 その問題を解決する為にDIが導入

    LoggerをDIする事についての議論 - Qiita
    n314
    n314 2021/10/13
    なかなか面白い
  • ドラクエに例えてクラスとインターフェースの違いを考える - Qiita

    クラスの継承とインターフェースの実装における違いを考えたのでまとめます。 また、私が大好きなドラクエに例えて実装したいと思います。 この記事の対象読者 オブジェクト指向の基的な用語がなんとなくわかる人 ドラクエをやったことがある人(推奨) この記事でわかること クラスの継承とインターフェース実装における違い インターフェースを利用するメリット クラスの継承 親クラスのstate(状態)やmethod(挙動)を子クラスで利用できるようになる 子クラスのみのstateやmethodを定義することができる オーバーライドすることで親クラスのmethodを上書きできるようになる ただし、継承できるクラスは1つまで インターフェースの実装 インターフェースはオブジェクトが実装しなければならないmethod(挙動)を定義する インターフェースは抽象メソッドのみ定義することができる 抽象メソッドは実装

    ドラクエに例えてクラスとインターフェースの違いを考える - Qiita
    n314
    n314 2021/10/07
    利用側、例えば BattleFieldクラスを作る前に、先にインターフェースを設計できるものなのかな?
  • 【Javascript】オブジェクトの配列をuniqueにする(重複を削除する)ときはfilterではなくMapオブジェクトを使う - Qiita

    Javascript】オブジェクトの配列をuniqueにする(重複を削除する)ときはfilterではなくMapオブジェクトを使うJavaScriptTypeScript

    【Javascript】オブジェクトの配列をuniqueにする(重複を削除する)ときはfilterではなくMapオブジェクトを使う - Qiita
    n314
    n314 2021/09/24
    さらっと検索したのを読んだら、deepCompare関数を作ってSetを継承したDeepSetクラスを作るのが綺麗だと思った。
  • マジカルな値に名前をつけるべきかどうかはケースバイケース - Qiita

    などとする人はいないと思う。わかりやすさが増えないから。 // 錐なので3で割る というコメントは有意義かもしれないし、この計算を関数という形にすることで計算に名前をつけるのは大いに有意義だけど、 ONE_THIRD のような形で数値リテラルに名前をつけるのは無意味というより有害だ。 しかし、これが ruby だと (1.0/3.0) と書いてしまうとこの除算が実行時に計算されてしまうので ONE_THIRD のような値で受けることには意味があるかもしれない。 角度の変換の例 その値がソースコード上に複数回現れる場合は、ほぼ間違いなく名前をつけたほうがいい。 いわゆる DRY 原則ということでもある。 とは思うものの、

    マジカルな値に名前をつけるべきかどうかはケースバイケース - Qiita
    n314
    n314 2021/09/23
    元記事にもケースバイケースってコメントしたけど、ECだと送料などのテーブルに基づく計算は数値を直書きする方が楽。でも西濃運輸の料金表ぐらいの規模になるとDBに入れた方が楽。
  • 「あれ、プログラミングが楽しくない…」【すべてのエンジニアへ】 - Qiita

    経緯 ストーリー形式で長々と書いているため、結論だけ知りたい人は「僕はここに居てもいいんだ!!!」へどうぞ。 プログラミングが楽しくなくなった日 ある日、Javaの勉強中にふと思った 「これ、なんの役に立つんだ?」 私は、三年間Cをやっていて、PythonJavaScriptをかじったことがある。 今までに「Twitter絵師探索」や「トイレットペーパー管理システム」、「クソ雑魚AI付きオセロ」に「ブロック崩し(PICマイコン)」などを作ってきた。 お世辞にもプログラマーと言えるレベルではないが、ちょっとしたミニアプリくらいなら作れる程度だ。 しかし、私の技術不足と人脈不足で「これは誰かに貢献したぞ!」というものはない。 そこで、ひとつの疑問が浮かぶのだ 「あれ?プログラミングしても意味なくない?」 幼い日の僕 私が最初にプログラミングのようなものを始めたのは「部員成績記録Excel

    「あれ、プログラミングが楽しくない…」【すべてのエンジニアへ】 - Qiita
    n314
    n314 2021/09/18
    星の座標を配列にするとシンプルにはなるが、見やすさがなくなってしまうな。プログラムからSQLを使う場合でも同じような問題が起こる。
  • gpg キーを更新した - Qiita

    最近は git でタグ付けする時に署名するようにしてるんでわりと使ってるんですよね。メールの暗号化はまったく使わないねえ。なんて書いてたら、なにやら GitHub 上で署名した結果が見れるようになっていたらしい。 せっせとタグ付けした甲斐があったね。といっても GitHub に公開鍵を登録しても関連するメールアドレスも一緒に登録しないといけなくて、そして前職のメールアドレスの登録はとっくに外しちゃったから在職中にタグ付けしたやつは軒並み Unverified になったまま。メールアドレスの追加できないし詰んだw 制限がきついww ま、仕方ないか。 GitHub で gpg するのに興味ある人は以下にまとまってそうなので見るといいかと。 GitHubでGPGにより署名されたコミットにバッジが表示されるようになったので設定してみる さて題。実は手元に2005年に作った鍵があって…さすがに古い

    gpg キーを更新した - Qiita
    n314
    n314 2021/09/15
  • マジックナンバー使うな? どんどん使え! - Qiita

    マジックナンバー使うなって言われません? 私も昔はそう思ってたんですよ。 そうでもないなあと最近思い始めたわけでして。 よくある「マジックナンバー使うな!」 消費税の税額を求めるプログラムがあるとします。(軽減税率とかいろいろありますが、面倒なので一律 10% ってことにします)

    マジックナンバー使うな? どんどん使え! - Qiita
    n314
    n314 2021/09/10
    ケースバイケースとしか…。0xffff をわざわざ BIT_MASK とかに置き換えると逆に分かりづらくなる。送料を if (size <= SIZE_SMALL) return SMALL_PRICE とか大量に書かれるよりは数字でいい。名前に意味は薄く数値自体がロジックだし。