タグ

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

  • コードレビュー時に"しないこと"3選 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに エンジニアとしての経験がある程度増えてくると、コードレビューを担当することも増えてくると思います。 コードレビュー時にするべきことはたくさんあると思うので、あえて今回はコードレビュー時に "しないこと" をシンプルに3つまとめます。 これを知ることで、コードレビューを効率よく的確に行えると思います。 コードレビュー時に "しないこと" 3選 ローカルで動作確認しない 「動いているからいいか」をしない 代わりに実装しない 慣れている人にとっては当然意識していることかもしれませんが、 詳細がとても大切ですので、できているかぜひチェ

  • Walker's Alias Methodの箱の作り方のわかりやすい説明 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 指定された重みに従って離散的な値を確率的に選択したい、ということがよくある。例えば[1,4,5]という配列が与えられた時、確率10%で0、40%で1、50%で2というインデックスを返すような関数が欲しい。 普通に考えると部分和をとって乱数を一度振り、どの場所が選択されたか二分探索で調べる、というアルゴリズムが思いつくが、これは要素数Nに対して$O(\log(N))$の手間がかかる。logの手間というのは無視できることが多いが、この関数呼び出しが頻繁にある場合には無視できないコストになる。 さて、こんな用途のためにWalker'

    Walker's Alias Methodの箱の作り方のわかりやすい説明 - Qiita
  • 緯度経度から2地点間の距離を求める方法とその比較 - Qiita

    はじめに 今回は緯度経度から2地点間の距離を求めます.GoogleAPIやMathematicaなど様々な場所で2点間の距離を求める計算が行えますが,これらの計算を行うにあたって地球は回転楕円体なので正確に2地点間の距離を求めることが難しいです.そこで,この課題を解決する主な手法をいくつか取り上げて比較したいと思います(公式の導出等の詳細な理論については割愛します). 主な手法として以下のものがあります. Haversineの公式 Hubenyの公式 Vincenty法 測地線航海算法(Geodesic Sailing) 国土地理院の方法 GeographicLibライブラリを用いる また,地球を回転楕円体として扱う上では以下のようなモデルがあります.現在では,GRS80とWGS84は事実上同一のものとなっています. 長半径[m] 短半径[m] 扁平率 平均半径 備考

    緯度経度から2地点間の距離を求める方法とその比較 - Qiita
    agw
    agw 2024/08/03
  • find + mkdir はチューリング完全 - Qiita

    英語版 (English version) 更新履歴 2024-08-02 初版に存在した証明のミスを修正しました。初版では Rule 110 を実装することでチューリング完全性を示したと主張していましたが、状態の幅が固定になってしまっているという問題がありました。現在のバージョンでは、Rule 110 でなく Tag system を実装し、問題を解消できていると思います 概要 GNU の find と mkdir コマンドのみを使えるシステムはチューリング完全であることを示します。 sed や awk コマンドが単体でチューリング完全であることはよく知られていますが、find + mkdir がチューリング完全になるという言及は探した限りでは見つからなかったので、ここに報告します。 証明は、タグシステム を実装することによって行います。 完成形のコードは下の方にありますが、順を追って、

    find + mkdir はチューリング完全 - Qiita
  • シェルスクリプトの [ は /bin/[ と言ったり [ "x$var" = "xval" ] と書く人はオジサン - Qiita

    ちなみに [ の外部コマンド版が /usr/bin/ と /bin/ の両方にあるのは Ubuntu 20.04 では /bin が /usr/bin へのシンボリックリンクになっているからです。Ubuntu や Solaris 10、11 などでは(ディスクサイズが大きい今では分ける理由がないから)と統合されています。Debian では統合されてない上に [ は /usr/bin 以下にあったりします。元々 /usr/bin は必要性が低いコマンドを置く場所なので、そこに [ があるというのは面白いですね。 [ が /bin/[ だったのはいつまで? この /bin/[ が使われなくなったのは今から 40 年前の Unix System III (1981) に搭載された Bourne シェルからのようです。 The Traditional Bourne Shell Family より

    シェルスクリプトの [ は /bin/[ と言ったり [ "x$var" = "xval" ] と書く人はオジサン - Qiita
  • [小ネタ] SQLの GROUP BY / ORDER BY には数字 (1, 2...) を指定しよう - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    [小ネタ] SQLの GROUP BY / ORDER BY には数字 (1, 2...) を指定しよう - Qiita
    agw
    agw 2024/05/29
  • なぜsortコマンドはuniq機能を含んでいるのか?(Unix哲学はどこ行った!?) - Qiita

    Unix 哲学的に考えれば、行を並び替える sort コマンドと重複行を取り除く uniq コマンドは別のコマンドであるべきなように思えます。しかし sort コマンドには -u オプションとして uniq コマンドに相当する機能が組み込まれています。なぜそうなっている(そうなってしまった)のかを「ソフトウェア作法(さくほう)」を参照しながらこの記事で明らかにしたいと思います。 関連記事 Unix哲学「一つのことをうまくやる」は単機能のコマンドを作ることではない 「誰」がuniq機能をsortコマンドに組み込んだ!? 熱烈的な Unix 哲学の信者は「どうせ Unix 哲学を理解しない GNU が便利だと思ってオプションを追加したのだろう」と考えるかもしれません。しかし uniq 機能が組み込まれたのは Version 7 Unix、つまり Unix の開発者が組み込んだのです。これは 1

    なぜsortコマンドはuniq機能を含んでいるのか?(Unix哲学はどこ行った!?) - Qiita
  • 生産性における即レスの大切さ - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 昨今「開発生産性」についての話題をよく目にします。 生産性が向上することで悪いことは無いので、様々な組織の事例が公開されて業界全体に知見が共有されていくことはとても素晴らしいことだと感じています。 話題のこちらの 「世界一流エンジニアの思考法」にもとても大切なことが書かれておりますし こちらの記事も参考になりました。 それらを踏まえて個人的に生産性向上のベースになる大切なことだと思っている 「即レスの大切さ」 について書きたいと思います。 これまでやってきたお仕事 ツールアプリの新規事業責任者(3年ほど) 全体3名の少人数チ

    生産性における即レスの大切さ - Qiita
    agw
    agw 2024/04/30
  • 新人が1on1に来ない - Qiita

    新人が1on1に来ない。その原因を考察する。 ここで出てくる新人の情報は以下である。 年齢: 30代前半 エンジニア歴: 5年 入社して半年 1on1を行うに至った経緯: 1年前、私と同じ時期に入社した同期Aが退職した。 詳細はよく分からないが、どうやらチームの先輩の1人と相性が悪いとの事だった。 尚、Aが退職したのは上記の理由だが、退職したいからこれを名目上の理由にしているのであって、原因は他にある可能性はあるが、この際それは考慮しない。 会社の人員構成: ほとんどがエンジニア歴10 ~ 20年のベテラン。平均年齢は30代後半。 Aは30代前半。 周囲の反応: Aが退職を告げた時、周囲はうろたえた。事前に相談は無かったし、特に問題はないように思われていた。 何より30過ぎた社会人は、問題があれば自分から話して来るという思い込みが、既存社員にあったもしれない。 年齢は関係あるか: ないと考

    新人が1on1に来ない - Qiita
    agw
    agw 2024/04/28
  • JUnit5の@ParameterizedTestで使える各種sourceの使い道考察 - Qiita

    はじめに ひとりJUnitアドベントカレンダー2日目の記事です。 今日未明にサッカー日本代表スペイン代表に白星を上げました。そんな日に投稿しています。 @ParameterizedTestとは JUnit5から導入された、テストメソッドに対して付与できるアノテーションです。 基的な使い方は先行研究が山ほどあると思うので割愛しますが、 簡単に言うと、条件や値を引数で与えることによって一つのテストメソッドで複数のケースを実行する仕組みです。 import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import static org.hamcrest.MatcherAssert.assertThat; import static org.h

    JUnit5の@ParameterizedTestで使える各種sourceの使い道考察 - Qiita
  • 【Kotlin】try-catch がやりにくければ runCatching を使ってみよう! - Qiita

    例外がスローされたらあれを実行したいが、 スローされなかったらこれを実行したい。 そういうときありますよね。 try-catch(-finally)では書きにくいときがある try-catch(-finally)では、 例外がスローされたときの処理(とスローされてもされなくてもする処理)は書けても、 スローされなかったときの処理は単純には書けません。 例で考えてみましょう。 まず、例外がスローされることを考えなくてよい場合を考えます。 fun noException() { val myValue = getMyValue() // 値を取得する。 .also { onMySuccess(it) // その後 onMySuccess を呼び出す。 onMyFinally() // 最後に onMyFinally を呼び出す。 } setMyValue(myValue) } ここで getM

    【Kotlin】try-catch がやりにくければ runCatching を使ってみよう! - Qiita
  • Kotlinの型を知る ~後編~ プラットフォーム型とCollections - Qiita

    はじめに この記事はKotlin Advent Calendar 最終日の記事です。 今年はGoogle I/OでKotlinAndroidの公式開発言語の1つになり、初めてのカンファレンスであるKotlin Confが開かれるなど、Kotlinの普及がますます進みそうなことを感じた1年になりました。 個人的にはKotlin In Actionの翻訳に携わり、Kotlinの普及へ微力ながら貢献出来たのではないかと思います (翻訳についてまとめた記事もあります:技術書を翻訳する技術)。 記事ではそのKotlin In Actionの著者の1人であるSvetlana Isakova氏のKotlin Confでのセッション「Kotlin Types : Exposed」の内容と、Kotlin In Actionの6章の内容を元に「Kotlinの型」についてまとめた内容になります。 アジェンダ

    Kotlinの型を知る ~後編~ プラットフォーム型とCollections - Qiita
  • 【マルチスレッド】CompletableFutureについて - Qiita

    マルチスレッド処理で他のスレッドから戻り値がある場合がある。 戻り値を受け取る方法としてCompletableFutureがある。 マルチスレッドの中では、1つのスレッドの戻り値を受け取って処理を行いたい場合がある。 その場合、戻り値が必要な処理は、戻り値を受け取るまで処理がブロックされる。 戻り値を返す処理が終了したら、戻り値を取得し、後続の処理を行う。 CompletableFutureは前段の処理が終了したら自動的にその結果を次の処理を渡して実行するようにできる。 CompletableFutureは戻り値のある非同期処理をsupplyAsyncメソッドで起動する。 import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.c

    【マルチスレッド】CompletableFutureについて - Qiita
  • Visitorパターンで型によるswitchやif判定を消す - Qiita

    追記 続きを書きました 今回の話 「Visitorパターン」を使ってswitch文やif文での型分岐を置き換えてみよう、という話です。C#で書いてます。 (サンプルコードはだいぶ端折ってるのであまり突っつかないで下さい) switchやif文のどこが良くないのか 「型の判定によって処理を分岐する」という実装をswitchやifで作ってしまうと、後から構造を変更した際などに問題が起きる可能性があります。 (そもそもオープンクローズド原則違反になってしまう) たとえば「型をみてデータ構造を変換する」といった場合はこの問題を踏みやすいです。 例:データ構造を1:1変換する 「RPGのキャラクター(ジョブ)」という概念があったとしましょう。 これは基底クラスであり、派生先にいくつかのジョブがあってそれぞれで独自のパラメータを保持しています。 /// キャラクターの抽象クラス public abst

    Visitorパターンで型によるswitchやif判定を消す - Qiita
  • プログラミングで一番難しいのは「見積もり」だと思う - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 前書き プログラミングで一番難しいところの一つは、「見積もり」だと私は思う。人から頼まれてプログラミングをする時、必ず最初に聞かれるのが「だいたいどれくらいで終わるか?」だ。厳しいところだと「何日に納品してくれるのか?」を問われる(むしろこれが普通かもしれない)。まっさらな状況から過去の経験を総動員してかかる時間を予想したり、可能な限りタスクに分解して時間を見積ったりするが、いつも不安に駆られる。多くの人も、見積もりに対して困難と不安を感じているのではないかと思われる。見積もりに対する自分の知識と経験を話して他の人にも参考にしてもらいた

    プログラミングで一番難しいのは「見積もり」だと思う - Qiita
  • すべてが私になった日 - Qiita

    はじめに 昔の自分がやらかした過ちをここらへんで懺悔しておきます。 願わくば同じ失敗をしてしまう人が少しでも減りますように。 「いやこんなコマンド打たんだろ…」と思いますよね。なんか流れでやっちゃう時があるんです。ホントに。 【第1章】不穏な依頼・/直下の作業パス もう何年前になるでしょう。IT業界に就職して数年、とあるUNIX系OSで管理系機能はそれなりに理解し、開発にも操作にもすっかり慣れてきて、ちょっとした自信もついてきた頃のことでした。 先輩:「わたし君、明日お客さんセンターに搬送するマシンで最後にちょっとしたテストしたいんだ。やっといてくれないかな。オレ今日はもう用事があって。」 わたし君:「あ、いっすよ。どこに置きました?」 先輩:「作業ディレクトリ消しちゃった後だから、/直下にtest.tmpって作ってftpで入れてあるから実行権限付けて動かしてみて。じゃあ、お先~」 わたし

    すべてが私になった日 - Qiita
  • sedコマンドでファイルの先頭行に文字列を挿入する - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    sedコマンドでファイルの先頭行に文字列を挿入する - Qiita
    agw
    agw 2023/12/23
    「sed 1ihoge」と「sed 1ahoge」。
  • Kotlinスコープ関数(let,run,also,apply)の使い方について考えてみる - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    Kotlinスコープ関数(let,run,also,apply)の使い方について考えてみる - Qiita
    agw
    agw 2023/12/23
    簡潔で分かりやすい比較。
  • 知識0から統計検定2級取得を目指した話 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? [追記]統計検定2級、おかげさまで合格しました。(僕の受験した回は得点率65%で合格できました) この記事の概要(目次) はじめに: 事前の筆者のステータス 勉強方法: どんな勉強をしたか そのメリットとデメリット 思ったこと・分かったこと: 勉強をしてみて思ったこと 勉強してみないとわからなかった もう一度やるとしたらこんな方法でやる: 現状で思う、オススメの進め方 今から勉強する皆さんに向けて事前に知っておいてほしいこと 結果: 試験の結果( 発表されたら追記します(6/18) ) はじめに 目的 自分の中でのスキルを増やすこと Q

    知識0から統計検定2級取得を目指した話 - Qiita
  • 統計検定2級合格までの勉強方法 - Qiita

    そもそも何で受験したか そんなに深い意味はなかったです。年始に上司と目標設定したときに、ひとつの勉強の目安として受験を目標に設定しました。仕事で統計・分析などをやっているわけでなく、今後の方向性として機械学習などをやりたいがために、数学の基礎と統計を勉強しています。 勉強方法 主に使った教材は以下の3つです。 まずはこの一冊から 意味がわかる統計学 (BERET SCIENCE) 改訂版 日統計学会公式認定 統計検定2級対応 統計学基礎 日統計学会公式認定 統計検定 2級 公式問題集 まずは「この一冊から 意味がわかる統計学 (BERET SCIENCE)」を何度か読んで演習をして理解しました。非常にわかりやすくためになりました。 次に、「日統計学会公式認定 統計検定2級対応 統計学基礎」ですが一読した程度です。わからない、理解に時間がかかりそうな部分は、ガンガン飛ばして行きました。

    統計検定2級合格までの勉強方法 - Qiita