タグ

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

  • Rust初心者殺しの文法10選 - Qiita

    概要 この記事ではRust初心者が驚いたり混乱させられたりするようなRustの文法を10項目集めてみました。 これらの項目は知らないと理解できなかったりコンパイルエラーに悩まされたりする一見厄介なものたちなのですが、そのような直感的でない挙動を敢えてさせているところには重要な意味が込められていることが多いです。 そのため、これらの項目を通してRustが目指しているものや実現したい機能の一部を垣間見ることができると思います。 1. デフォルトの代入がムーブ Rustの最大の特徴が所有権の概念であることは有名ですが、それでもなお初心者殺しになるのがムーブです。 以下のコードがコンパイルエラーになるメジャーな言語は現状Rustくらいしか無いでしょう。 let mut a = vec![1, 2, 3]; let mut b = a; // ここでaの持つベクタの所有権がbにムーブされ、aは無効に

    Rust初心者殺しの文法10選 - Qiita
    kirakking
    kirakking 2021/11/04
    Rustはよく分からないけど、関数型言語界隈でよく見る機能(型構成子、関数と式、パターンマッチング、パラメトリック多相の記法)がよく取り込まれている。流石モダンな言語。
  • なぜ、ソフトウェアプロジェクトは人数を増やしても上手くいかないのか - Qiita

    はじめに ソフトウェアプロジェクトには不思議な性質があります。現状のスケジュールに課題を感じて、短くするために人員を投下しても、なかなか思い通りに短くならない。それどころか悪化してしまうことがあります。場合によってはプロジェクト自体が破綻して失敗してしまうことすらあります。 今回は、このようなソフトウェアプロジェクトに潜む直感に反する性質を数理的なモデルを介して理解していく試みです。ある種の思考実験としてお楽しみください。 宣伝 Qiitaさんとコラボ企画でアドベントカレンダーをつくりました。 DXをめちゃくちゃ改善した話を募集しています。 https://qiita.com/advent-calendar/2021/dx-improvement 10人の妊婦がいても1ヶ月で一人の子供は生まれない これは誰かの技術力やプロジェクトマネジメント力に欠陥があるのではなく、「人月の神話」で有名な

    なぜ、ソフトウェアプロジェクトは人数を増やしても上手くいかないのか - Qiita
    kirakking
    kirakking 2021/11/01
    データを視覚化することで説得力倍増。
  • Bash Scriptの作法 - Qiita

    はじめに チーム開発でシェルスクリプト(特にBash Script)を書く際に守るべきルールをまとめます。 シェルスクリプトのコードレビューをする際等にお役立てください。 スクリプト名 -区切りの小文字英数字(いわゆるkebab-case)をつける。拡張子は.sh. これは特に理由があるわけではないので_区切りでもよいし、チーム内にzshやfish等の他Shell愛好家がいる場合は拡張子は.bashでも良い。どちらにせよチーム内では統一しておかないと混乱の元となる。 改行コード LFを使用する。CRLFだと動作しないので書く際に間違うことはないが、Windows上のgitのautocrlf設定によってはご丁寧にCRLFでチェックアウトされてしまう。 避けるためにはgit config --global core.autocrlf inputとするか、.gitattributesをレポジトリ

    Bash Scriptの作法 - Qiita
    kirakking
    kirakking 2021/09/27
    whileワンライナーの仕様知らなかった。
  • POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき! - Qiita

    POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき!ShellScriptBashshellPOSIX はじめに find の出力を xargs にパイプで渡すというのはよく見かける使い方ですが、find -print0 | xargs -0 が使えない POSIX 準拠のシェルスクリプトでは find -exec {} + を使った方が良いです。安全かつ十分に速いからです。よく見かける -exec {} ; ではなく -exec {} + ですので間違えないようにしてください。多くのケースでは + の方が優れているのですが ; ばっかり使われているのを見ると、意外と知られてない気がします。 少しだけ予備知識として、-exec {} ; は -exec {} \; と ; をバックスラッシュでエスケープするのがよく見る使い方

    POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき! - Qiita
  • シェルスクリプトの [ は /bin/[ と言ったり [ "x$var" = "xval" ] と書く人はオジサン - Qiita

    # Ubuntu 20.04 の bash での実行結果 # シェルから [ が何として見えているか $ type [ [ is a shell builtin # PATH から見つかる全ての [ コマンドを出力する # 補足 zsh では which がシェルビルトインコマンドで、シェルビルトイン版の [ も出力される $ which -a [ /usr/bin/[ /bin/[ $ type [[ [[ is a shell keyword # zsh では [[ をパターンとして認識してしまうのでダブルクォートが必要 $ type "[[" [[ is a reserved word ちなみに [ の外部コマンド版が /usr/bin/ と /bin/ の両方にあるのは Ubuntu 20.04 では /bin が /usr/bin へのシンボリックリンクになっているからです。Ub

    シェルスクリプトの [ は /bin/[ と言ったり [ "x$var" = "xval" ] と書く人はオジサン - Qiita
  • 形式手法はなぜ流行っていないのか - Qiita

    はじめに みなさん形式手法をご存知でしょうか? 名前くらいは聞いたことあるけどいまいち何かわからないという方が多いのではないでしょうか。 その通りです。形式手法はアカデミアではそれなりに研究されているものの、 一般の(特にWeb系)ソフトウェア開発者が携わることはなかなかないのではないかと思います。 この記事ではソフトウェア開発に形式手法が導入されないのはなぜなのかを考察します。 この記事ではアジャイルソフトウェア開発において形式手法を導入する際のハードルについて考察します。 追記 記事について、「形式手法は流行っていない」というのは正確ではないのではないかという指摘をいただきました。組み込み系や社会インフラ系等バグを絶対に出せないシステム開発では形式手法がよく使われているそうです。 ちょっと古いデータですが活用事例です。 誤解を招く紹介となっていたことをお詫びします。 さらに追記 ku

    形式手法はなぜ流行っていないのか - Qiita
    kirakking
    kirakking 2021/03/25
    実用性は把握していないけど Isabell/HOL もコード抽出ができるみたい "Code generation from Isabelle/HOL theories" 。検証フレームワークを体系的に学ぶのではなく言語レベルでの制約(Rust のメモリ安全等)がこれから流行るのではと思う
  • モダンプログラマになれない組込みプログラマの苦悩 - Qiita

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

    モダンプログラマになれない組込みプログラマの苦悩 - Qiita
  • 一銭も払わずにクラウド上でWebサービスを公開する(2021/02時点) - Qiita

    これはなに? Webサービスを開発する際に使えるサービスのうち、無料枠があるものをまとめました。 自分でちょっとしたWebサービスを作ろうと思ったときに一銭も払いたくないなという気持ちがあるが、そもそもどの程度までちゃんとした構成が取れるんだっけというのをこれまでに100万回調べている気がするので自分用にまとめたメモです。 前提として、基的にはAWSGCPを対象に調べて、一部はそれ以外のサービスも追加で調べている、という感じです 最初に結論 「無料でWebサービスを提供する」というところだけに集中するならAWSよりはGCPのほうが良さそう(ハードルが低そう + できることが多そう) 無料枠だけで完結させるならherokuSQLも使えるし視野に入れて良さそう ドメイン周りだけはどうにもならないので諦めてお金を払うか各クラウドサービスのドメインのまま使いましょう 無料の範囲内で最低限のW

    一銭も払わずにクラウド上でWebサービスを公開する(2021/02時点) - Qiita
  • 10年間使ってみて見えたHaskellの闇と光 - Qiita

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

    10年間使ってみて見えたHaskellの闇と光 - Qiita
  • 日本語 LaTeX の新常識 2021 - Qiita

    オリジナルの TeX が誕生してから40年以上の歳月が流れ,そして日語 LaTeX が現在主流の姿 (pLaTeX2e) になってからも25年以上が経過しました.この間 LaTeX は多くの人に使われ続けて来ましたが,その歴史の中でさまざまな変遷を辿り,明示的なドキュメントにはなっていないながらも,ユーザ間ではある意味「常識」として定着した知識が積み重なってきました. 歴史が長く,よくも悪くも「安定している」と評されるために見過ごされているかもしれませんが,日語 LaTeX は今も開発が続く「生きた」ソフトウェアです.そのため歴史の中で培われた常識的な知識が古くなり,新しい知識が必要になる場合があります.そしてその傾向は特にこの数年顕著で,TeX コミュニティに属する人々が多く集まる TeXConf などの会議で,主に中上級者向けに新しい知識が啓蒙されてきました.稿では,そのような日

    日本語 LaTeX の新常識 2021 - Qiita
    kirakking
    kirakking 2021/01/12
    jlreqクラス知らなかった。日本語で書く機会はないけど覚えておこう。あと \RequirePackage{plautopatch}
  • EmacsとWindowsと人生と - Qiita

    ハッカー向けのエディタといえばviかEmacsか、という時代があって、演習で触った大学のUnixワークステーションでターミナルのviはカーソルキーで移動できなくて、GUIで動いていたEmacsでは移動出来た。だからEmacsを使うことにした。 家にあるパソコンといえば、ふとした拍子にHDDがジジジという音を無限にたて始めて、その後フリーズしてしまう非力なWindowsマシンだったけど、それでもEmacsを諦める理由にはならなかった。無限のように長い再起動中の暗闇も、すぐにスワップするメモリも、平気だった。なにしろ、私はハッカーになりたかったのだ。 今日、EmacsはWindowsで使用することが出来る。日語もIMEも問題ない(パッチを当てた「日語版」を探す必要すらない)Vimmerたちが揶揄したメモリ使用量も15MB~200MB程度だ。VSCodeなどのElectronベースのエディタ

    EmacsとWindowsと人生と - Qiita
    kirakking
    kirakking 2020/12/14
    エディタ文学2020。
  • Linuxカーネルビルド大全 - Qiita

    はじめに (記事は Linux Advent Calendar 2020 および 東京大学 品川研究室 Advent Calendar 2020の11日目の記事として書かれました。) カーネルのビルドについての情報はググると色々と出てきますが、「ここを見ればOK」と思えるサイトに巡り会えていないので、自分で書いてみることにしたのが記事です。 いずれLinuxカーネルをビルドする必要にかられるであろう研究室・学科の後輩や、忘れっぽい将来の自分のためにも、改めてLinuxカーネルのビルド方法についてまとめてみたいと思います。 概要 さて、「カーネルをビルドしよう」という状況に置かれた場合、実際にすべきことは主に以下の4点だと思います。 ソースコードの取得 ビルド環境の構築 カーネルコンフィグの準備 ビルド及びインストール そこで記事では、カーネル体のビルド上記の4点の他、関連して以下の

    Linuxカーネルビルド大全 - Qiita
  • 2で割ることと3で割ること - Qiita

    この記事でお題にするのはCPUレジスタ上の整数除算です。以下、単に除算とも書きます。 除算は非常に高コストな演算なため、コンパイラは最適化によって、できるだけ整数除算を別の計算に置き換えようとします。 最適化ができる場合の一つとして、割る数が定数である場合があります。頭のいいコンパイラは、除算を乗算とビットシフト等を駆使した演算に置き換えます。この記事では、そういった最適化の背景にある理屈を部分的に解説します。 計算機環境としてはモダンなx86 CPUを仮定します。したがってレジスタは32/64ビットであり、負数は2の補数表現になっています。ある程度は他の命令セットでも通用する話になっているかもしれません。 そもそも整数の除算とは プログラミングにおける整数の除算の定義について確認します。整数$n$を整数$d$で割るとき $$ n = q \times d + r $$ が成り立つように除

    2で割ることと3で割ること - Qiita
    kirakking
    kirakking 2020/12/09
    理論上の除算とくらべて、数値の精度に限度があるからこそできるハックを感じて面白い。
  • 今時のPythonはこう書く2020 - Qiita

    はじめに システム作ってるとかライブラリ作ってるみたいなある程度Pythonを綺麗に1書くことが求められる方々に向けた記事です。 (機械学習系のライブラリを使うためにPython書いてる方とか、初学者の方にはちょっとあわないかも知れません) 綺麗に書くための作法の難しさって共有が面倒なところだと思うんですよね。その書き方は間違いじゃない、間違いじゃないけどもっといい書き方があるぞみたいなやつってなかなか指摘し辛いですし、じゃあ1人に対してレビューしたら他のメンバーにはどう伝える?そもそも伝える必要?俺の工数は?みたいになりがちです。 一番いいのはこういう時はこう書く!みたいなドキュメントを作って「ドキュメント違反です」ってレビューをしてあげることなんですが、まーそれもそれで超面倒じゃないですか。なのでこの記事がそのドキュメントの代わり、とまではいかなくとも礎くらいになればいいなと思って書き

    今時のPythonはこう書く2020 - Qiita
    kirakking
    kirakking 2020/12/05
    型かあ。型推論がビルトインされてない言語で型宣言書くの本末転倒感がある。
  • 最近のポケモンはデジモンっぽいのか、ディープラーニングに聞いてみた - Qiita

    はじめに ポケモンについて何となく知っている人向けの記事です(デジモンは知らなくてOK) 3月ごろにポケモンたかさおじさんが集計したアンケートの分析をお手伝いしたところ、アンケートの自由記述回答の6353件中、155件もデジモンについて言及するコメントがあった。 「デジモンと区別付かないよね」 「もはやポケモンじゃない…。デジモン…。昔のデザインに戻ってほしいなぁ…。。。」 「主観ですが、伝説のポケモンが角張った印象で、デジモンのような印象を受ける。」 「全体的に毛がなさそうなツルッとしたフォルムの子達が増えた気がします。デジモンっぽい」 「デザインがごちゃごちゃしすぎて子供が描くのが難しい デジモンに近くなってきている」 「ダイパまでのデザインがポケモンっぽいデザイン。それ以降はデジモンみたいな雰囲気。」 私は幼少期からポケモンには触れてきたが、デジモンにはあまり縁がなかったため、 デジ

    最近のポケモンはデジモンっぽいのか、ディープラーニングに聞いてみた - Qiita
    kirakking
    kirakking 2020/08/14
    双方とも世代による差異もあるだろうけど、それっぽさが言語化されていて面白い。
  • Rustに影響を与えた言語たち - Qiita

    各カラムの意味は次のとおりです。言語の特徴は主にWikipediaを参考にしていますが、正確な分類は困難なため多少の独断と偏見が含まれていることをご了承ください。 登場年代 プログラミング言語が登場した年代です。前後3年の誤差は見逃してください FP(関数型プログラミング) 言語がFPを強くサポートしているかを示しています 程々にサポートしている場合は△を示しています OOP(オブジェクト指向プログラミング) 言語がOOPを強くサポートしているかを示しています 並行計算 アクターや CSP/π計算モデルの特徴を言語が強くサポートしているかを示しています 外部ライブラリを使えばできるよ!みたいなものは除外します 静的型付け 言語の最も主要な処理系が静的型付けをサポートしているかを示しています パラメータ多相 言語がパラメータ多相をサポートしているかを示しています ジェネリクス(Java)、テ

    Rustに影響を与えた言語たち - Qiita
  • 最近のポケモンはデザインが複雑になったのか?【Python】【OpenCV】 - Qiita

    はじめに 先日、ポケモンたかさおじさんこと、生㌔Pのブログにて次のような記事が投稿された。 ポケモンらしさ-2_意見分析 マスコット感検証 https://pkmnheight.blogspot.com/2020/04/2.html ざっくり引用すると、以前バズってた以下の海外の分析画像を、転載したTweetがあった。 ポケモンのデザインはどんどん生物的じゃなくなって行ってて、色んな部位が丸みを帯びてただの可愛いマスコットキャラクターと化してるっていう海外の分析画像が凄い pic.twitter.com/qHHVaHzEue — Χ十 ◤カイジュー◢(⃔ *`꒳´ * )⃕↝♡ (@KaijuXO) June 13, 2019 このTweetに対して、ポケモンたかさおじさんが 猛撃 していたというものである。 ざっっっくり要約すると、各世代ごとに幼虫・昆虫ごとに部位をピックアップし、 そう

    最近のポケモンはデザインが複雑になったのか?【Python】【OpenCV】 - Qiita
    kirakking
    kirakking 2020/04/23
    世代ごとに枝分かれするブイズの比較も面白いかなと思った。/それにしてもフシギダネはかわいいなあ。
  • LaTeXにおける正しい論文の書き方 - Qiita

    他人の論文や, ソースコードを見ているといろいろと思うことがあるので, 私が正しいと思っている書き方を以下に記す. あくまで自己流なので, 他の方のご意見 (コメント)も参照すると良いかと思います. ,(半角カンマ)や.(半角ピリオド)の後は必ず半角スペースをいれる 日語論文では, "半角カンマ+半角スペース"の代わりに"全角カンマ"を推奨しているところもある (ピリオドも同様に) 逆に,や.の前に不自然なスペースをいれない ソースコードは見やすいように, インデントと改行を心がける 2回以上改行すると段落が変わるため注意 特別な理由がない限り, ハイパーリンクをつける: こちら 略称は定義して使うこと: (例) Support Vector Machine (SVM) 三点リーダー (・・・)の使い分け \ldots: カンマに使う. $i=1, 2, \ldots, n$ \cdot

    LaTeXにおける正しい論文の書き方 - Qiita
    kirakking
    kirakking 2020/02/09
    \dots* ファミリーは大体 \dots を使えば良い。 人によっては \emptyset より \varnothing (amssymb) が好まれる。/アドホックに情報を集めるより(時間があるなら)「LaTeX2ε美文書作成入門」に一回目を通すほうが圧倒的に役立つ。
  • 数値計算の研究をしている学生が"数値計算に潜むとんでもないリスク"について話してみる - Qiita

    筆者は「精度保証付き数値計算」という分野で研究をしている大学院生です. 「数値計算は分かるけど」「精度保証付き数値計算?ナニソレ?」という方がほとんどだと思います. 「精度保証付き数値計算」の研究自体は30年ほど前から盛んに行われていますが,世間に浸透しているとは言えない状況です. 自分の研究分野が世間に知られていないのは何か少し寂しい感じがするので「精度保証付き数値計算」を少しでも広めるべく記事を投稿することにしました.(シリーズ化するかも知れません) 日は「精度保証付き数値計算」というワードだけでも覚えていただければ幸いです. 今回は"数値計算に潜むとんでもないリスク"に関してカジュアルにお話します. そして筆者の研究分野である「精度保証付き数値計算」の必要性を知ってもらえればなと思います. この記事を読み終える頃には計算機を信頼できなくなっているかも知れません(笑) ※不安を煽るこ

    数値計算の研究をしている学生が"数値計算に潜むとんでもないリスク"について話してみる - Qiita
    kirakking
    kirakking 2019/12/26
    文献を出すならリファレンス貼ろうぜ。 "Rump's Example Revisited", https://doi.org/10.1023/A:1015569431383
  • vim-lsp の導入コストを下げるプラグイン vim-lsp-settings を書いた。 - Qiita

    これら全ての機能は、テキストエディタと Language Server との間で JSON-RPC を使い、ソースコード体、コード補完候補、座標情報などを交換する事で実現されています。 温故知新 実は Language Server Protocol は OmniSharp というソースコード補完サーバがベースとなっています。 OmniSharp は元々、Vim で C# のコードを補完する為に作られた Vim プラグインでした。当時は Vimcurl コマンドで通信できる様に REST サーバとして作られていました。それを Microsoft が双方向の通信を行える様に通信仕様を JSON-RPC に定め、汎用化の為に仕様として策定した物が現在の Language Server Protocol です。 Language Server Protocol は Visual Stud

    vim-lsp の導入コストを下げるプラグイン vim-lsp-settings を書いた。 - Qiita