タグ

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

  • PhpStorm 2016.2でPHPUnitのアサーションの補完が効かない問題 - Qiita

    8/26 追記:PhpStorm 2016.2.1がリリースされました。2016.2.1ではPHPUnitのアサーションの補完が効かない問題は修正されています。 PhpSrotm 2016.2では、コード補完の挙動が変わりました。 この結果、$this->assertSame()のような形でPHPUnitのメソッドを呼び出す際、$this->までを入力した段階でCtrl + Spaceを押してもassertSameが補完されなくなりました。 なお、この問題はPhpStorm 2016.2の初期バージョンにのみ存在し、2016.1や2016.2.1には存在しません。 TL;DR 解決策は以下の3パターン PhpStorm 2016.2.1を使う 2016.1以前のバージョンを使う アサーションメソッドを関数または静的メソッドとして呼び出す assertSame() または self::ass

    PhpStorm 2016.2でPHPUnitのアサーションの補完が効かない問題 - Qiita
  • シェルスクリプトで安全簡単な二重起動防止・排他/共有ロックの徹底解説 - Qiita

    はじめに シェルスクリプトで二重起動防止やロックをする方法を検索すると、いろいろな方法や書き方が見つかりますが、どれを使えばよいのか、当に正しく動くのか、不安になりますよね? ディレクトリ (mkdir) やシンボリックリンク (ln) を使った独自実装の例も見かけますが、エラー発生時や予期せぬ電源断、CTRL+C で止めたときなどでも問題は発生しないのでしょうか? まず、ディレクトリやシンボリックリンクを使った独自実装はしない。これを肝に銘じてください。シェルスクリプトでのロック管理はとても難しく、一般的な排他制御の知識に加えて、シェルスクリプト特有の問題、シグナルやトラップ、サブシェルや子プロセスの問題、さらには特定のシェル固有の仕様やバグなどさまざまな問題に対処する必要があり大変です。独自実装の例では古いロックファイルが残ってしまい、それをいつどのタイミングで片付ければ安全なのか?

    シェルスクリプトで安全簡単な二重起動防止・排他/共有ロックの徹底解説 - Qiita
  • TOPPERS/ASPをLinux(i386 / x86_64)で動かす - Qiita

    はじめに 組み込み機器向けRTOSのひとつ TOPPERS/ASP を Linux に移植しました。 TOPPERS/ASPは、個別のプラットフォーム向けに移植されるとともに、シミュレータ環境として Mac OS X で動作するものが公式から提供されています。しかし、Linuxで動作するものは用意されていません。 Mac OS X ターゲット依存部をもとに Linux ターゲット依存部を作成しました1。Mac OS X版と同じく、シミュレータ環境としての位置づけです。TOPPERS付属サンプルの sample1 は動作します。 コード https://github.com/morioka/toppers-asp-for-linux に置いています。 対象 Linux (i386, x86_64) Ubuntu 15.10 (x86_64)で確認しています 使い方 TOPPERS/ASPに添

    TOPPERS/ASPをLinux(i386 / x86_64)で動かす - Qiita
  • PSRの誤解 - Qiita

    先日のPHPerKaigi 2018はPHPに興味がある多くのひとびとと直接コミュニケーションがとれる貴重な機会でした1。その中でPSRシリーズへの誤解が聞かれたので一度整理します。 最初にまとめ 「PSRはモダン、準拠しないのはレガシー野郎」といったものではない 相互運用させることを想定しないのなら、100%準拠することに利点はない PSR-2は、それ自身を厳守させるためのコーディングスタイルではない PSRは参考するには値するが、自分たちの事情に合ったものを取り込むべし 後述しますが、筆者の所属するチームではPSR-1, PSR-2を参考にしつつ破って使ってます。 PSRは誰が作ってるの? PSRを管理するのはPHP-FIG (The PHP Framework Interoperability Group、PHPフレームワーク相互運用グループ)です。この組織はPHPのフレームワーク・

    PSRの誤解 - Qiita
  • systemdのsocketを使ってserverを作る - Qiita

    論よりコード TCP localhost:18080 で待ち受けて、 implementation.bash を実行した結果を journal に書き込む例です。 ※ systemd は一般ユーザ権限でも利用可能です。今回は一般ユーザ権限で行いました。 その際、systemd 関連のファイルは $HOME/.config/systemd/user/ に配置する必要があります。ない場合は mkdir -p $HOME/.config/systemd/user/ として作ってからファイルを配置してください。 → 実は systemctl --user enable $PWD/server.socket と、パスを指定すれば自動的にディレクトリを作ってくれてsymlinkでファイルを配置してくれることがわかりました。 server.socket ファイル server.socket ファイルはS

    systemdのsocketを使ってserverを作る - Qiita
  • ソートしないで重複行を削除する - Qiita

    uniq コマンドは事前にデータをソートしておく必要がありますが、ソートされていないデータから重複する行を削除したいこともありますよね。そんなときは これだけです。 解説 a は連想配列の変数で名前は何でもいいです $0 には行全体が格納されています つまり各行をキーとする連想配列を作成し、同じ行が現れるたびに値をインクリメントします ! により値が 0 のとき、つまり最初にその行が現れたときだけ条件が真になります アクション部分は省略されているので行全体が表示されます Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark them

    ソートしないで重複行を削除する - Qiita
    iww
    iww 2022/09/15
    awkで重複除去。 $1を使えば先頭の要素をキーとして重複除去できる
  • SQLite3 で created_at, updated_at - Qiita

    CREATE TABLE test ( test TEXT, created_at TEXT NOT NULL DEFAULT (DATETIME('now', 'localtime')), updated_at TEXT NOT NULL DEFAULT (DATETIME('now', 'localtime')) ); CREATE TRIGGER trigger_test_updated_at AFTER UPDATE ON test BEGIN UPDATE test SET updated_at = DATETIME('now', 'localtime') WHERE rowid == NEW.rowid; END; テーブル名やトリガー名の test の部分を必要に応じて書き換えてください。 2. 説明 2.1. DEFAULT 制約で DATETIME 関数を使える 「DEF

    SQLite3 で created_at, updated_at - Qiita
    iww
    iww 2022/09/09
    SQLiteにはtimestampの機能が無いのでトリガーで頑張るしかない という話
  • 【サボりたいエンジニア向け】コーディングに役立つチートシートまとめ - Qiita

    はじめに こんな人が役に立つ記事 コーディング業務の効率を上げたい。 コーディングに関するチートシートを知りたい。 打つのもめんどいからコピペでなんとかしたい(笑) 今回は、コーディングに役立つチートシートをまとめました。 VSCODEチートシート エンジニアなら必ず使うであろうVsCodeのショートカットチートシート。これはよく使ってます! HTML系のチートシート集 HTMLに関するチートシートをまとめてみました。 HTML5 タグチートシート HTML5 のタグチートシート。サイトには 5 から廃止になった避けるべきタグなどもまとめてられており、 PDFでダウンロードできます。 HTML5 入れ子チートシート HTML の入れ子の可否を視覚的に分かりやすく、色づけしてくれます。対象要素の親、子を選ぶだけで、簡単に調べることが出来ますので便利なチートシート 特殊文字一覧:HTMLで使え

    【サボりたいエンジニア向け】コーディングに役立つチートシートまとめ - Qiita
    iww
    iww 2022/09/06
  • git diff コメント行無視で変更行数を数える - Qiita

    <変更前のコミットID> <変更後のコミットID>に関してはブランチ同士でも確認可能 --stat 変更行数を確認するときに役立つ -w スペースのみの変更も無視する -B 空行の追加・削除を無視する -I 正規表現にマッチした表現を無視する 正規表現 '^\s*\/' * 直前の文字が0回以上繰り返す場合にマッチ \s 垂直タブ以外のすべての空白文字 ^ 直後の文字が行の先頭にある場合にマッチ 以下のサイトを参考にさせていただきました。大変助かりました。 git diff関連 参考サイト https://qiita.com/uedatakeshi/items/5e467b3aaa7a0ecfa011 https://maku77.github.io/git/stats/count-changes.html https://iww.hateblo.jp/entry/20110605/p1

    git diff コメント行無視で変更行数を数える - Qiita
  • 「何を言っているのか分からない」と言われないための「伝え方」のノウハウ - Qiita

    私自身、物事を分かりやすく伝えるスキルを身に着けるため、手あたり次第に、いくつかノウハウを読んだり、YouTube動画を観たりしてきました。記事では、や動画から得られたノウハウや、私が普段の仕事で発見した個人的に使っているテクニックをまとめてみました。 0 記事の最重要ポイント 記事がストックの墓場に行ってもいいように、記事の最重要ポイントだけ先に伝えておきます。 質問に答える時は、聞かれたことにシンプルに答える。 事実と解釈を分けて話す。 1 記事で伝えたいメッセージ 1-1 コミュニケーション能力の苦手意識はノウハウで解決する ITエンジニアの裾野が広がるにつれて、SNSでも「コミュニケーション能力の低いITエンジニア」の話題をちらほら見かけるようになりました。いわく「これからはITエンジニアにもコミュニケーション能力が求められる」「プログラミングができるだけでは生き残れ

    「何を言っているのか分からない」と言われないための「伝え方」のノウハウ - Qiita
    iww
    iww 2022/08/19
    『質問の意図を外すと「いや、そうじゃなくて」と言われるんですがね。だったら最初から意図を言えや!と思いますが。あれめっちゃ腹立つ。』
  • gccのDocker公式イメージ使ってC++でHelloWorldしてみた - Qiita

    C++を扱うことになった 開発中のWebサービス案件でC++のソースコードを扱うことになりました。 とりあえずLinux環境で動けばよいので、 Dockerコンテナ内のgccでC++のソースコードがコンパイル&実行できること を今回の目標とします。 ( make とかは今回使わないです。軽量化とかも意識してないです。) 今回作ったサンプルコードは以下に置きました。 https://github.com/segurvita/docker-gcc-sample Dockerイメージを探した Docker Hubでgccを検索してみたところ、Docker Hub公式のイメージがありました。 https://hub.docker.com/_/gcc/ これを使います。(もっと軽いのあるかもですが、 C++のソースコードを作った Hello World! します!

    gccのDocker公式イメージ使ってC++でHelloWorldしてみた - Qiita
    iww
    iww 2022/08/16
  • JavaScript で forEach を使うのは最終手段 - Qiita

    この記事は JavaScript2 Advent Calendar 2018 の1日目の記事です。 こんばんは。@diescake です。 今年は、JavaScript 経験の浅い新人さんや外注さんをリードする立場として、 とにかく幅広いメンバーのコードレビューをする機会に恵まれたのですが、 事ある毎に Array.prototype.forEach を利用する人が多かったため、初心者向けに要点を整理してみました。 以下 ES2015 以降のバージョンをサポートするブラウザ、あるいは polyfill を利用していることを前提としています。 結論 配列に対して何らかの操作を行う際は、 filter, find, map, reduce などのメソッドを利用できないか検討し、 いずれのメソッドでも実現ができない場合の最終手段として forEach を選択しましょう。 下記に、いくつかのサンプ

    JavaScript で forEach を使うのは最終手段 - Qiita
  • frontail: サーバ上のログファイルをWebブラウザでTailするnpm - Qiita

    はじめに 「サーバサイドのログをブラウザでTailしたいんすよねー」って言われたので調べたらいいのがあったので共有します。 frontail: https://github.com/mthenw/frontail tail -F を ブラウザ上に出力する node.js アプリケーション とても導入が簡単なので上記URLを見てもらえれば、特に説明は不要ですが、一応書いておきます。 特徴 検索ができる Basic認証をかけることができる(コマンドラインで指定できる) サーバ側のLogRotationに対応している auto-scrolling (ちゃんとログの最新が表示される) ログの行にMarkを付ける(色を反転させる)ことができる 未読の行が faviconで表示される 予め指定したキーワードでhighlightができる(今回この機能はちょっとうまくいきませんでした) Install

    frontail: サーバ上のログファイルをWebブラウザでTailするnpm - Qiita
  • if文で、「AまたはBまたはCまたは....の場合」の条件式をスッキリ書きたい(PHP, JavaScript) - Qiita

    初めに if文で、 「AまたはBまたはCまたは...の場合」というように、 特定のOR条件のパターンでのみ実行したい処理がある場合 愚直に書くとif文の条件式が長くなりがちです イメージ(PHP): <?php function hoge(string $s) { if ( $s === 'A' || $s === 'B' || $s === 'C' || $s === 'D' ) { echo 'OK!'; } else { echo 'NG!'; } } hoge('A'); // 出力結果: OK! hoge('B'); // 出力結果: OK! hoge('C'); // 出力結果: OK! hoge('D'); // 出力結果: OK! hoge('Z'); // 出力結果: NG!

    if文で、「AまたはBまたはCまたは....の場合」の条件式をスッキリ書きたい(PHP, JavaScript) - Qiita
    iww
    iww 2022/07/28
    switch文が嫌いなパターン
  • Chrome DevToolsのNetworkから特定パスのリクエストを除外したい - Qiita

    昨今のフロントエンドのツールを使っていると開発中はpingを送るためネットワークログが埋まるし流れる。開発中にはほぼ意味のないログなので除外したい。 DevToolsのFilterを使う。-hogeなどのようにハイフンをつけることで特定の文字つを含んだものを除外できる。また-domain:example.comのように指定のプロパティで特定ドメインだけを除外できる。これはよくあるチャットサポートのツールなどを使っているときに使える。 なおハイフンなしのdomain:example.comにすれば除外ではなく絞り込みになる。 参考: https://developers.google.com/web/tools/chrome-devtools/network/reference#filter next.jsの場合は-on-demand-entries-pingとしておけば快適になった

    Chrome DevToolsのNetworkから特定パスのリクエストを除外したい - Qiita
    iww
    iww 2022/07/19
    『 -hogeなどのようにハイフンをつけることで特定の文字つを含んだものを除外できる。』
  • in_arrayを使うときは黙って第三引数を付けること - Qiita

    はじめに phpでin_array使ってますか? その時、第3引数って使ってますか? 使ってない?いつ事故ってもおかしくないですよ? まずは普通に使ってみる <?php $students = ['山', '山下', '山田']; var_dump(in_array('山田', $students)); // trueを返すはず var_dump(in_array('山原', $students)); // falseを返すはず

    in_arrayを使うときは黙って第三引数を付けること - Qiita
    iww
    iww 2022/07/14
    せっかくPHPを使っているのだから暗黙の型変換は積極的に活用したい
  • 特別な理由なしにgit-flowを新規採用するべきではない - Qiita

    私がこれまでGitの研修講師やブランチ戦略のコンサルティングをおこなってきた経験に基づいて、この記事を書きます。 Gitのワークフローについては自転車置き場の議論になりがちであまり乗り気がしないのですが、最近少し発見があったのと、実際に多くの現場で明らかにフィットしないのに git-flow を検討したり採用したりしようとして苦労をしている様を目撃することが多いので書くことにしました。 この記事で主張する内容はタイトルの通りですが、まず前提として以下を宣言しておきます: 全てのケースに100%フィットするようなワークフローは存在しない git-flowがフィットするケースも探せばあるかもしれない 例えばすでに何年もgit-flowでうまく回せてるよ、など どのようなワークフローを採用するかは最終的にはあなた(のチーム)が判断すべき さて、 git-flow は 2010年1月「A succ

    特別な理由なしにgit-flowを新規採用するべきではない - Qiita
    iww
    iww 2022/07/11
    なんでもかんでもmasterにぶっこめばいいんだよ!
  • Nginxにサーバ証明書を設定する - Qiita

    記事で紹介している証明書は2018年10月にリリースされる GoogleChromeで不正な証明書と判定されてしまう予定です。 証明書更新する際は注意してください。 Webアプリを作っていて、ログインする機能や、ユーザの情報を入れてもらうような機能を作る場合、通信はhttpではなくhttpsで暗号化すべきかと存じます。サーバ証明書を設定する機会は新しいアプリを作るとき、または、証明書の更新時(1年に1回)しかないため、毎回設定の手順を忘れて0から作り直しています。そのため、今回は次の証明書設定時に困らないよう、Nginxにサーバ証明書を設定する手順を以下に残しておきたいと存じます。 導入するサーバ証明書 国内最安値と有名なSSLBOXのラピッド証明書を選択します。 (企業として公開するものではないため、EVや企業認証ではなくドメイン認証の証明書を利用します) 無料で発行できるものもありま

    Nginxにサーバ証明書を設定する - Qiita
  • WHERE 条件のフィールドを UPDATE するのって,明示的にロックしてなくても安全?全パターン調べてみました! - Qiita

    WHERE 条件のフィールドを UPDATE するのって,明示的にロックしてなくても安全?全パターン調べてみました!MySQLSQLPostgreSQLDatabaseQiitaEngineerFesta2022 TL; DR MySQL/Postgres とも, MVCC アーキテクチャの恩恵で, SELECT と UPDATE は基的には競合しない。 単一レコードのシンプルな UPDATE でも排他ロックされ,排他ロック中のレコードへの UPDATE での変更操作は トランザクション分離レベルによらず ブロックされる。UPDATE 文に含まれる WHERE 句での検索もブロックされ,これはブロックされない SELECT による検索とは別扱いになる。 但し UPDATE 文の WHERE 句上で,更新対象をサブクエリの SELECT から自己参照している場合は例外。トランザクション分離

    WHERE 条件のフィールドを UPDATE するのって,明示的にロックしてなくても安全?全パターン調べてみました! - Qiita
    iww
    iww 2022/07/05
    『元の StackExchange サイト上の最も投票されている回答が完全に間違っていました。やっぱり一次ソースが曖昧なときは実験しないとダメですね。』
  • Debian Jessie以降でDockerをインストールする - Qiita

    Debian Jessie以降で下記コマンドを順に実行するとDockerがインストールできます。 詳細はこちらの公式サイトを参照してください。 sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - # 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88で終わることを確認 sudo apt-key fingerprint 0EBFCD88 sudo add-apt-repository "deb [arch=amd64

    Debian Jessie以降でDockerをインストールする - Qiita
    iww
    iww 2022/07/04
    jessieでdocker