タグ

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

  • シェルスクリプト リファクタリング ~遅いシェルスクリプトが供養されてたので蘇生して256倍に高速化させました~ - Qiita

    はじめに ことの始まりは「シェルスクリプトでツールを作ったけど速度が遅くて使い物にならなかったので供養」というツイートを見たからです。コードを見てみると、実例をあまり見ないシェルスクリプトのリファクタリング例として丁度良い内容と分量だったため記事にいたしました。記事を書くにあたりコードの利用を快く承諾していただいた @Hayao0819 様にはこの場を借りて御礼を申し上げます。 内容は章立てで構成しており、序章で事前調査をし、第一章で一般的なリファクタリング、第二章でパフォーマンスを重視したリファクタリング、終章で少し余談をして締めくくっています。最初はパイプは並列処理されるから速くなるというのは神話(そうとは限らない)についても書いていたのですが流石に長いので分けました。それでも書きたいことを色々書いていたらめちゃくちゃ長くなってしまいましたので読み物として私がどんなことを考えながらリフ

    シェルスクリプト リファクタリング ~遅いシェルスクリプトが供養されてたので蘇生して256倍に高速化させました~ - Qiita
    n314
    n314 2021/05/05
    自分なら rg '^(Name|Exec|Icon|Type|Comment)=' /path/*.desktop |sort で必要な情報が全部出るから、そこからjsonにしたい場合は好きなスクリプト言語にパイプするかなあ。ほぼripgrepの力だが。
  • PHPer向けのpre-commitで静的解析ライフ - Qiita

    追記と補足 Twitterにて諸先輩方からご指摘を頂いたのでそのやりとりを載せます。(許可もいただいてます) 要約すると、pre-commitで静的解析するよりもCIのタイミングで静的解析した方がいろいろいいことがあるよってところです。 そちらの意見を推奨なので、この記事は 「こういうこともできるよ。でももっといい運用があるから特別推奨はしないよ。」 程度の気持ちで読んでください。 ただ、せっかく慣れないシェルスクリプト書いたしまぁ使えないわけではないので元のスクリプトの部分も残してはおきます。 補足終わり。 PHPer向けのpre-commitスクリプト Gitに上げる前に静的解析する為に作りました。 一応Githubにも上げました。 ※Laravel想定なので、他のフレームワークの場合はphpstanの設定周りで若干読み替えてください。 pre-commitとは 設定した状態でgit

    PHPer向けのpre-commitで静的解析ライフ - Qiita
    n314
    n314 2021/04/28
    解析のタイミング云々より、せっかくの高速なgitに重い処理を入れるな派。
  • PHPエンジニア入門ドラフト - Qiita

    This article is a Private article. Only a writer and users who know the URL can access it. Please change open range to public in publish setting if you want to share this article with other users.

    PHPエンジニア入門ドラフト - Qiita
    n314
    n314 2021/04/08
    限定共有なのになんで上がってるんだろ。
  • grepを忘れただけなのに - Qiita

    去年も『番環境でやらかしちゃった人のアドベントカレンダー』は盛り上がりましたね。 知見が多く、関心しながら拝見しています。 人は必ず何かしらミスを起こすもの。 明日は我が身と思いながら、業務をこなす日々です。 そんな私も業界に入って1年目(前々職)に、番環境の洗礼にあったことがございます。 当時は苦々しい思いをしましたが、その経験を供養するためにもここに残そうと思います。 発生当時の状況 事件当時、私はサーバのリプレイス案件にアサインしていました。 その業務の中で上司に日常的に運用されているスクリプトの調査を依頼されました。 私はまだ経験が浅かったため理解が合っているかは怪しいですが、関わっていたシステムは設計の段階で大分やっつけだったらしく、 格納場所が間違っているスクリプトやログが散見されました。 リプレイスを切っ掛けに整理をする予定だったと記憶しています。 入ったばかりのペーペー

    grepを忘れただけなのに - Qiita
    n314
    n314 2021/04/07
    treeじゃなくてlsなら、単純に*.shじゃない?ディレクトリ掘るならfindだし、lsからパイプで繋げるという発想がなかった。
  • 【PHP8.1】その配列、純粋配列? - Qiita

    PHPには配列と連想配列の区別がありません。 むしろPHPの配列は順序付きハッシュであり、その中でも数値のキーは特別に連番で扱える、みたいな扱いです。 他言語で言うところの配列はPHPにはありません。 $arr = [ 'hoge' => 'fuga', 'foo' => 'bar', 'x', // キーは0になる 3=>'y', 'z' // キーは4になる ]; しかしまあ区別したいよねってことで、Add array_is_listというRFCが提出されました。 既に受理されており、PHP8.1にて実装されます。 Add array_is_list(array $array): bool Introduction PHPの配列は、整数キーと文字列キーの両方をサポートしており、さらに順序が保証されているという珍しい型です。 変数値が配列であるかのチェックは簡単ですが、その配列は連想配列

    【PHP8.1】その配列、純粋配列? - Qiita
    n314
    n314 2021/03/25
    滅多に使わなさそうだけど、たしかにjson_encode するときにハマったことがあったかも。あとフォーム入力で配列を受け取る場合はエラーチェックがしやすいかも。
  • 【PHP8.1】PHPで簡単に非同期処理を書けるようになる - Qiita

    PHPは長きにわたり同期的、すなわち、あらゆる処理を上から順に実行していくというスタイルを取ってきました。 しかしたとえば、複数のURLからデータを取ってきて結果をまとめたいといった場合、時間のかかるHTTPリクエストは同時に投げたいですよね。 この用途にはGuzzleというライブラリが存在し、これを使えば同時にリクエストを投げられます。 しかし、ではHTTPアクセスとDBアクセスを同時にやりたい場合は? 時間のかかる計算を裏でやりたい場合は? などと考え始めると、こういった個別のライブラリでは対処しきれません。 ということで汎用的な非同期処理をPHPで書けるようにするRFCが提出されました。 PHP RFC: Fibers Introduction 人類史上ほぼ全ての期間において、人々はPHPを同期的なコードとしてのみ書いてきました。 同期的に実行されるコードのみが存在し、そしてそれを同

    【PHP8.1】PHPで簡単に非同期処理を書けるようになる - Qiita
    n314
    n314 2021/03/18
    利用者を大事にしている感が良い。
  • モダンプログラマになれない組込みプログラマの苦悩 - Qiita

    はじめに 10年以上組込みエンジニアをしている@yagisawaです。 Qiitaのトップ記事では新しいフレームワークの使い方とかモダン言語の新しい言語仕様の解説とかが流れてきて、いつも羨ましいなーと思いながら読んでいます。 記事は組込みシステム開発をしていて経験したこと・感じたことを自虐ネタとして書き連ねていこうと思います。他ITエンジニアの人に「うわっ、可愛そう」って思ってもらうのが目標です(ぇ 各業界それぞれに悩みはあると思うので、自分たちが一番不幸とかは思っていません。おそらく隣の芝が青く見えているだけです。それよりあまり組込みの記事は見かけないので、「組込みエンジニア仕事ってこんな感じ」というのを知ってもらう意図があったりします。 内容によっては「それはあなたの設計が悪いからです」と言われてしまうようなところもあるとは思いますが、建設的なご意見は大歓迎ですが基は温かい目で見

    モダンプログラマになれない組込みプログラマの苦悩 - Qiita
    n314
    n314 2021/03/10
    C言語を実際に使っているわけじゃないから詳しくないけど、フラグはunsigned flag:1 で1ビットにするとか、配列が全て0かどうかはビット演算で一気にチェックするものじゃないの?
  • 10年間使ってみて見えたHaskellの闇と光 - Qiita

    はじめに わたしがHaskellを使い始めてもうそろそろ10年目になります。(タイトルは多少サバを読んでいますね) これまで使ってきた感想をまとめます。 Haskellのつらいところ まずは愚痴らせてください。 コンパイルが遅い 依存モジュールはすべてソースコードからビルドする必要があります。(バイナリ形式のモジュールはありません) 最初のビルドに20分くらい待つのはザラです。 複雑な型システムをつかうと型推論や型レベル計算に時間がかかります。 高速なHaskellプログラムを書くためには多くの関数をインライン化する必要があります。最適化ビルドではインライン展開によってコードサイズが大きくなるので時間がかかります。 デバッグが難しい 公式のGHCiデバッガはありますが、今のところIDEから簡単に利用できるわけではないですし、コンパイル済みのライブラリはデバッグできないです。 近年スタックト

    10年間使ってみて見えたHaskellの闇と光 - Qiita
    n314
    n314 2021/03/04
    FFIを使いやすくしてくれるだけで使いどころがぐっと広がる気がするんだけどなあ…。入出力やUIはやりたくないけどParsecだけ使いたいとか。
  • Laravelでドメイン駆動設計(DDD)を実践し、Eloquent Model依存の設計から脱却する - Qiita

    Laravelでドメイン駆動設計(DDD)を実践し、Eloquent Model依存の設計から脱却するPHPLaravelDDDドメイン駆動設計Eloquent この記事はドメイン駆動設計#1 Advent Calendar 2019の 10 日目の記事です。 2020/12/17追記 以下に続編を書きました! LaravelにDDDを導入して1年経った所感(達成したこと / 課題点 / モデリングの難しさなど) やったこと 自社サイトのバックエンドを Laravel で実装して半年間が経ち、初期に考えた設計にいろいろと綻びが出てきたと感じていました。 そんな中、ちょうど実践ドメイン駆動設計や Web+DB Press で特集された体験 DDD を読むことができたので、さっそくいくつかの機能を DDD で実装してみました。 記事では「もともと Laravel で実践していたEloquen

    Laravelでドメイン駆動設計(DDD)を実践し、Eloquent Model依存の設計から脱却する - Qiita
    n314
    n314 2021/03/02
    DDDにして、最初に書いていた“20 文字だけ表示”はどのように解決されたんだろう。
  • 役割駆動設計で巨大クラスを爆殺する - Qiita

    大量のメソッドを保有し、数千、数万行単位にぶくぶく膨れ上がった巨大クラス。別名「神クラス」とも「大きな泥団子」とも呼ばれる、長大で複雑で密結合で極めて変更が困難なアイツ。 そんな巨大クラスの退治に有効な、ドメイン駆動設計を基思想とする「役割駆動設計」を紹介致します。 解決したい課題、狙う効果 数千、数万行単位の巨大クラスの登場を抑止する。 小さくシンプルな構造に落とし込み、堅牢で変更容易性の高い設計へ昇華させる。 例1:筆者をモデリング 分かりやすくなるよう、まず私を例にモデリングしてみます。私は以下のような特徴があります。 IT企業の従業員 家族がいる(, 子供) 趣味ゲーム制作している ダメな設計 何も考えずに人クラスとして設計すると、よく以下のような構造になりがちです。 従業員として仕事をする、父親として家族サービスする、趣味としてゲーム制作する、それぞれのメソッドが備わってい

    役割駆動設計で巨大クラスを爆殺する - Qiita
    n314
    n314 2021/03/01
    DCIアーキテクチャと言うらしい
  • 第三の答え、Stimulusjs - Qiita

    昨今のフロントエンドトレンドを鑑みてフロントエンド技術構成を考えると今はどんな選択肢が主流でしょう? それぞれ並列なものではないですが、React? Vue? Next? Nuxt?そんなワードがきっと頭に浮かぶでしょう。 今の時代、jQueryでゴリゴリUIを記述するとなんだか白い目でみられる。 そう、令和とはそういう時代です。 界隈の最先端おじさんをみると、build processがあるのは当然で、HTML/CSSはjsが吐き出すもので、それが最大限正しいように語られています。 確かにExising Domのアプローチで界隈から評価されてるライブラリはなく、さほどいい選択肢には見えません。(個人の主観) ではそれらのアプローチの何がそんなにいいんでしょう? 過去から現在まで我々は何に苦心して、それらはそれをどう解決してくれたのでしょう? 雑に紐解いていきましょう。(今回はUI構築の

    第三の答え、Stimulusjs - Qiita
    n314
    n314 2021/02/23
    今風のJsActionか。
  • 新人「先輩、参照の値渡しについてちゃんと理解してますか?😊」 - Qiita

    2021.02.19追記 反省してアタマを丸めました笑 いただいたコメントを参考にして大幅に内容を修正いたしました。過去の誤りの多い記事内容に興味のある方は編集履歴をご確認ください。再度ないように誤りが見つかりましたらお手数ですがご指摘をお願いします、正しい記事を残したいので…! また、タイトルと内容とにズレがある、との指摘をいただいたため、タイトルを【新人「先輩、変数のスコープについてホントにちゃんと理解できてます?😊」】から現タイトルに変更しました。 元々煽りタイトルにしていたので今回も煽りタイトルにしました、書いている人が一番知らないのにこのタイトルにしたのはどうかご容赦いただきたいです笑 2021.02.17追記 たくさんの方々からの閲覧ありがとうございます。 また、コメントも読ませていただいております。 私の書いた内容にいろいろ誤りもあるとのことですので、初見の方はコメントも

    新人「先輩、参照の値渡しについてちゃんと理解してますか?😊」 - Qiita
    n314
    n314 2021/02/18
    最初の例でPHP disかな?と思ったけど話題にも挙がってなかった。
  • OpenAM で FIDO2(WebAuthn) ユースケースを考える - Qiita

    FIDO2とは [FIDO2 ≠ WebAuthn] ではなくて、 [FIDO2 ≒ WebAuthn + CTAP] こちらが近い FIDO2とはFIDOアライアンスが考えた、パスワードレスでユーザーをパスワードの呪縛から解き放つ、より安全で使いやすい認証の仕組みです。 FIDOの頃のUAFとかU2Fの上位互換というわけではなく、普及しやすいように作り直した新規格です。 そして、FIDOアライアンスは FIDO2 の動作に必要な機能(ブラウザと認証サーバー間の部分 図1参照)をW3CへWebAuthn規格として提言しており、現在はCandidate Recommendation(勧告候補)まで進んでいます。 2019/3/4にW3C勧告になりました。 https://www.w3.org/TR/webauthn/ W3C Candidate Recommendation, 7 Augus

    OpenAM で FIDO2(WebAuthn) ユースケースを考える - Qiita
  • アンサー: なぜTypeScriptの型定義に凝るのか - Qiita

    この記事は、昨日公開された以下の記事に対するアンサー記事です。TypeScriptで型定義に凝る派筆頭(自称)として、このお題に対して別の視点から光を当ててあげるためにこの記事を用意しました。 TypeScript の型定義に凝りすぎじゃね? まず最初に、この記事(以下では元記事と呼びます)の著者を攻撃したり、元記事の内容を否定する意図はないことをご理解ください。結局のところ、考え方が異なり、前提が異なるから異なる結論になっているだけなのです。TypeScriptを使う皆さんがいろいろな観点から見た情報を取得し、自分の状況に応じた適切な考え方・判断をできるようにすることがこの記事の目的です。 要約 大きなコードを小さく分解しても質的な難しさが消えるわけではないよ? 型はドキュメントなんだから正確に書こうぜ! 外界との接続も妥協せずに型システムで解決しようぜ! 機械にできる仕事を人間がする

    アンサー: なぜTypeScriptの型定義に凝るのか - Qiita
    n314
    n314 2021/02/10
    「複雑」で思い浮かべるものが違いそう。手続きの方が簡単派と型定義の方が簡単派の対決っぽい。
  • Qtで始める画像処理 - Qiita

    ご挨拶 Qt Advent Calendar 2018での3回目の投稿となりますKATO Kanryuです。 よろしくお願いします。 まず宣伝 世界最速の画像ビューアー、QuickViewerをQtで作りました。(稿) QActionManager アプリにQt Creatorと同等のキーボード/マウスショートカットのカスタマイズ機能を提供します マウスカスタマイズ機能はオリジナル QLanguageSelector 言語切り替えUI(メニュー)を自動生成 Qtアプリを再ビルドなしに翻訳言語を増やせるようになります Qtアプリをテキストエディタだけでリアルタイムに翻訳できるようにします QFullscreenFrame アプリをフルスクリーン表示させたときに、メインメニューやツールバーをスライド表示したいときがあると思います。それを実現するやつです。イベントハンドラを細かく設定することに

    Qtで始める画像処理 - Qiita
    n314
    n314 2021/02/06
  • 【完全保存版】5万円でエンジニア転職してみた。未経験から自社開発エンジニアに転職するまでのロードマップ。 - Qiita

    【完全保存版】5万円でエンジニア転職してみた。未経験から自社開発エンジニア転職するまでのロードマップ。RubyJavaScriptRailsReactRails6 プログラミングスクールに通わずにエンジニア転職してみた。 はじめまして。先日エンジニア転職に成功したTyo_Doと申します。 近年「プログラミングスクール界隈」が盛り上がっていますが、スクールに通わずに、いわゆる自社開発の会社に転職成功しましたので、学習記録を残しておきます。 最近では↓のように、プログラミング界隈で有名な勝又さんが、スクール不要説を唱えておられましたね(スクール不要とはいってませんがまぁそういうことでしょう)。 https://twitter.com/poly_soft/status/1354309154505072645 経歴 興味はないかと思いますが、少しだけ私の経歴を紹介いたします。 中学~高校 体育会

    【完全保存版】5万円でエンジニア転職してみた。未経験から自社開発エンジニアに転職するまでのロードマップ。 - Qiita
    n314
    n314 2021/02/03
    工学系の大卒がエンジニア未経験っていうのにすごい違和感なんだが…。工学系こそがエンジニアじゃない?
  • 要素の個数に応じてスタイルを出し分けるCSSメモ - Qiita

    JSを使わずにCSSだけで、 「要素の個数に応じてスタイルを出し分ける」やり方の紹介です。 前にどこかのサイトで紹介されてたのですがブックマークなかったのでメモです。 Demo "個数に応じたスタイルの出し分け" http://codepen.io/skwbr/pen/JKbNMP 説明 個数に応じてスタイルを変える場合、下記を組み合わせて使います。 :nth-last-child 擬似クラス … 最後から数えて何番目か 間接セレクタ ~ … それ以降の後続する弟要素(同階層) <ul> <li class="item"></li> <li class="item"></li> <li class="item"></li> : </ul>

    要素の個数に応じてスタイルを出し分けるCSSメモ - Qiita
    n314
    n314 2021/01/29
    なるほど
  • 時系列で見る:WordPressを運用中のサーバが丸ごとPHPマルウェアに感染する流れ - Qiita

    /wordpress/ /wp/ /blog/ /new/ /old/ /backup/ /oldsite/ /back/ /2017/ /2018/ /div/ /temp/ 1巡目:レスポンスを見て何らかの目星をつけている雰囲気 2巡目:HEADとGETで /各ドメイン/xmlrpc.php 3巡目:GET /各ドメイン/wp-login.php もうこの辺でWordPressがあるかどうかはわかっていそう。 ※リダイレクト(302)で、ドメインAのWordPress管理画面URLが割れる。 2巡目の途中で、おそらくドメインB/xmlrpc.phpに複数回POSTがあり、 最後に APIでユーザー一覧 を参照してしばらく来なくなる。 ※この時にユーザアカウントの何らかの情報を取得された可能性があるのかも… セキュリティプラグインのXMLRPC防御機能があれば防げた可能性がある。 16時

    時系列で見る:WordPressを運用中のサーバが丸ごとPHPマルウェアに感染する流れ - Qiita
    n314
    n314 2021/01/28
    WordPress最新版5.6にxmlrpc.phpの脆弱性があるように読めるが、もしそうならゼロデイ攻撃では…?
  • WordPressを運用中のサーバがまるごとPHPマルウェアに感染していた時の対応メモ - Qiita

    (2021.1.26 追記) 稿の続きを書きました。 時系列で見る:WordPressを運用中のサーバが丸ごとPHPマルウェアに感染する流れ https://qiita.com/Ayutanalects/items/e7919afadc7d8394820f 制作会社から「自社で管理中のサイトがおかしい」との連絡を受けて、 中をのぞいたら、PHP製の複数種類のマルウェアに感染していたので対応をメモ。 以下の内容は、あくまでも自分の対応時のものです。 攻撃者がスクリプトを変更すれば同じ方法では検出できなくなるのでご注意ください。 初期状態 症状 自社管理中のWordPressサイトにアクセスすると、全く知らないサイトにリダイレクトされる 今回は allc〇〇ling.shop というEC風サイト。Kasperskyを使っていると、「警察機関指定の危険サイト」の警告あり https://sup

    WordPressを運用中のサーバがまるごとPHPマルウェアに感染していた時の対応メモ - Qiita
    n314
    n314 2021/01/24
    あるある。すぐバレるやり方はまれで、こっそりスパムサーバーやボットネットになってることが多い。
  • Railsで個人開発してたら、Railsがめっちゃ叩かれて辛みだった話 - Qiita

    こんにちは、だむはです。 去年の12月に個人開発している「sister」というサービスをリリースしたのですが、開発中にRails叩きがおこり、辛みだったので、その時のことをかこうと思います。ちなみに、サービスはまだベータ版です。 「sister」ってどんなサービス? 「sister」は一言で言うと、IT業界に特化した女性向けのキャリア/スキルシェアサービスです。MENTAから多大なる影響を受けています。MENTAは「師弟関係」、sisterは上下関係をもたない「姉妹関係」と言う部分でシスターフット大切にしていこう!って感じです。 興味があったらみてってください。 あなたのsisterを探そう 環境 sisterの開発はこんな感じです。 ・RubyRailsStripeAWS S3 ・Heroku ちなみにローカルはDockerです。 はい、フロントエンドにモダンな技術も使ってな

    Railsで個人開発してたら、Railsがめっちゃ叩かれて辛みだった話 - Qiita
    n314
    n314 2021/01/20
    PHP vs Ruby やってたときのPHPみたいだね。