タグ

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

  • シグナルハンドラにprintf()を書いてはいけない - Qiita

    三行でまとめると シグナルハンドラ内でprintf()してはいけない というより、余計な処理を書いてはいけない もう一度言う、シグナルハンドラで余計なことをするな、非常に大事なことだ はじめに シグナルハンドラでやってよい処理は非常に限られるのに、全くルールを守らないサンプルコードが世の中に大量に出回っている。printf()するなんてもってのほかなのだが、カジュアルにそこらじゅうで見かけて非常に悲しい。 この記事では、そんな状況を少しでも改善したいと思い初心者向きに書いたものだ。そのため、下記では、回避するにはどう実装すればよいのか、ルールを破るとどうなるのか、といった点を先に簡潔に記述する。 なぜしてはいけないのか、POSIXだとかリエントラントだとか、は下の方に追いやっている。玄人は読んでてウズウズするだろうが、細かい話はできるだけ目につかないような構成としたため了解いただきたい。

    シグナルハンドラにprintf()を書いてはいけない - Qiita
    iww
    iww 2024/05/20
    未定義警察
  • FortiClient VPN(Windows版)でパスワード保存を有効にする - Qiita

    TL;DR FortiClient6.4で毎回パスワードを入力したくない方へ、朗報です。以前のFortiClientのように(少なくともFortiClient5.0以前ではパスワード保存できていました)、パスワード保存を実現します。 設定ファイルをバックアップ・リストアする方法もあるようですが、うまくいかなかったので、こちらの方法を紹介します。 管理者権限が必要ですので、お持ちでない方は、残念ながら回れ右でお願いします。 レジストリを編集しますので、自己責任でお願いします。 手順概要 FortiClient VPNインストール→接続設定登録→レジストリ編集 の手順で完了します。 手順詳細 1. FortiClient VPNインストール https://www.forticlient.com/downloads より、FortiClient VPNをダウンロード・インストールします。 2.

    FortiClient VPN(Windows版)でパスワード保存を有効にする - Qiita
    iww
    iww 2024/05/15
    パスワードを保存させる裏技。 すばらしい
  • DockerのAlpineでglibc問題を一発解決する - Qiita

    今更感はありますが、最近Docker始めました🐳 これまで何となく難しそう的な先入観でのらりくらり避けてきたわけですが、いざ触れてみたら思いのほか好奇心を掻き立てられてしまいました。 そんでもって、のらりくらりしてきた間の歴史や最近のトレンドを追ううちに、多分みなさんも一度は躓いたであろう問題に漏れなく僕もぶち当たり、無事洗礼を受けたというワケです。 今回は歴史の復習と解決した課題についてつらつらとメモっていきます。 Alpineとlibc とりあえずベースに軽いAlpineを使おうと思ったらアプリケーションが動かなくてゲッソリしたこと、あると思います。 その原因はC言語の共通ライブラリにあります。 一般的なLinuxディストリビューションの多くは glibc (GNU C Library) を採用しています。 glibcは歴史が古く採用実績も多いですが、故に中身も肥大化してしまったため

    DockerのAlpineでglibc問題を一発解決する - Qiita
  • 【PHP8.4】メソッド引数のデフォルトnullがついに禁止される - Qiita

    よく見たら不自然なんだけどこれまで普通に許されていた、この引数デフォルト値がついに禁止されます。 何がおかしいって型がintなのに引数を渡さないことができてしまうので、矛盾してしまうわけですね。 これはPHPが昔からの仕様を残しておいたためであり、いわゆる歴史的経緯というやつです。 以下は該当のRFC、Deprecate implicitly nullable parameter typesの日語訳です。 PHP RFC: Deprecate implicitly nullable parameter types Introduction PHP7.1で?T構文、さらにPHP8.0でUnion型がサポートされたことにより、PHPはnull許容値型を正しく書くことができます。 歴史的にはPHP5.0でオブジェクト型、PHP5.1でarray、PHP5.4でcallable、PHP7.0でス

    【PHP8.4】メソッド引数のデフォルトnullがついに禁止される - Qiita
    iww
    iww 2024/04/18
    『おかしいなとは思いつつも普通に使っていたので、これが使えなくなると修正が必要なところがたくさん出てきてしまいます』
  • VARCHAR(X)やINT(X)の「X」は何を表しているのか - Qiita

    はじめに 新人研修にてLaravelを使っている時のお話です。 テーブル設計を行う時にデータ型とサイズを決めなければなりませんでした。 その時に、例えば、INTの(X)のXは何を表しているのか正確に理解していなかったので、この機会に使用頻度の高いCHAR型やVARCHAR型などの文字列を格納するデータ型も含め、調べたいと思いました。 この記事を読み終えたあなたが適切にデータ型やサイズを決めることができることをこの記事の目標にしたいと思います。 ちなみにQiita初投稿です(なんか緊張する...)。 検証環境 macOS Catalina ver 10.15.7 Docker ver 20.10.5 docker-compose ver 1.29.0 Laravel ver 7.30.4 MySQL ver 8.20.3 内容 「ユニコード(Unicode)とは」 その前に、まず「文字コード

    VARCHAR(X)やINT(X)の「X」は何を表しているのか - Qiita
  • お手軽にcoredumpを圧縮して保存する方法 〜core_patternの話〜 - Qiita

    TL;DR coredumpはサイズが大きくなりがちなので圧縮したいということはよくあると思う。 下記設定で、お手軽にgzip圧縮して保存できる、という小ネタ。 環境 動作確認、および、引用しているLinuxのソースコードはv4.15.0。 core_patternとは? coredumpが出力されるLinux環境では、デフォルトではプロセスの実行ディレクトリにcoreという名前で保存される。 ただこのままだと場所がバラけてしまうため管理しにくい。 また、同一ディレクトリで動いているプロセスにつき一つしかcoredumpを残せないのも問題だ。 そこでlinuxには/proc/sys/kernel/core_patternで出力ファイル名を変更する仕組みが用意されている。 man core(5) Naming of core dump files By default, a core dum

    お手軽にcoredumpを圧縮して保存する方法 〜core_patternの話〜 - Qiita
    iww
    iww 2024/03/22
    『一見シンプルに書けているが、実際には薄氷の上を歩くような実装』
  • 画像データを MySQL に格納するとどうなるか - Qiita

    画像データを扱うとき、パス情報だけを MySQL に格納し、画像データ自体はファイルシステムや AWS S3 などに直接置くのが一般的です。なぜなら画像データは巨大で MySQL で扱うのには重いからです。かつてはコンピュータのリソースが貧弱でしたのでこの設計は適切だったと思うのですが、近年コンピュータは圧倒的に高性能になりました。もしかしたら現代のコンピュータなら画像データを MySQL で扱うことも出来るかもしれないと思い試してみました。 なぜ MySQL で画像データを扱いたいかというと、ひとえに ACID 特性のためです。画像データ処理もトランザクションに含めてしまうことができれば、画像データを含めて不整合のないデータを実現できます。迷子の画像データのことを考えなくて済むわけです。バックアップだって、DB ダンプ一発で全部まとめて取れるわけですし。 スキーマ定義とテストデータ こん

    画像データを MySQL に格納するとどうなるか - Qiita
    iww
    iww 2024/03/18
    『なぜ MySQL で画像データを扱いたいかというと、ひとえに ACID 特性のためです。』
  • AutotoolsによるC/C++クロスビルド覚書き - Qiita

    Autotoolsでのクロスコンパイルで悪戦苦闘したためメモ 例としてyoctoのi.MX6(imx6dlsabresd)ビルド環境を用いてAutotoolsを使ってクロスビルドする。 yoctoで作成したツールチェインをインストールしてビルドするのが正規の手順だが今回は理由あって環境変数等を設定して無理やりビルドを実行する。 環境変数の設定 SDKTARGETSYSROOT 必要ではないがsysrootのパスは繰り返し使用するため環境変数に設定しておく

    AutotoolsによるC/C++クロスビルド覚書き - Qiita
    iww
    iww 2024/03/18
    arm-poky-linux-gnueabi-gcc
  • C で関数に * や & を付けられる件の説明 - Qiita

    規格として C11 (n1570) を参照する。 注意: 途中に入れた図が崩れるようなら、半角・全角比が 1:2 になるようなフォントを使って閲覧してください。 現象 wandbox で実行 ソース: ( &printf)(" &printf = %p\n", &printf); printf (" printf = %p\n", printf); ( *printf)(" *printf = %p\n", *printf); ( **printf)(" **printf = %p\n", **printf); (***printf)("***printf = %p\n", ***printf); この現象を解説する。 関数呼び出し まず、関数呼び出しについての規定を見る。 The expression that denotes the called function shall have

    C で関数に * や & を付けられる件の説明 - Qiita
  • 「JavaScriptで要素をドラッグして移動する簡単な方法」という記事が初耳だらけだった件 - Qiita

    はじめに まず↓の記事を見てない方はぜひ見てください! 自分にとってはこの記事には「えっ、ナニコレ!」なテクニックが多く、特に解説もなかったのでいろいろ調べてたら休日が消えてました... なのでその時間の供養もかねて、自分が知らなかった部分を中心に、僭越ながら元記事の解説を書いてみたいと思います。 ちなみに、以下が元記事のコードそのままを実装したものです。たしかに掲載コードだけで要素がグリグリ動きますね。 See the Pen js-drag-move-original by www-tacos (@www-tacos) on CodePen. 初耳1: $img まずコードのここ <img id="$img" src="https://js.cx/clipart/ball.svg" width="40" height="40"> <script> $img.onpointermove

    「JavaScriptで要素をドラッグして移動する簡単な方法」という記事が初耳だらけだった件 - Qiita
    iww
    iww 2024/02/28
    勉強になった
  • Raspberry Pi4 NFSが繋がらない時の確認ポイント - Qiita

    前文 毎回トラブルが発生する度に、どのコマンドで何を確認するんだっけ? と右往左往するので備忘録として手順を残す。 動作確認環境 NFSサーバ Raspberry Pi2B pi@raspberrypi2:~ $ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 9.13 (stretch) Release: 9.13 Codename: stretch pi@raspberrypi2:~ $ uname -a Linux raspberrypi2 4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019 armv7l GNU/Linux pi@raspberrypi2:~ $ pi@raspb

    Raspberry Pi4 NFSが繋がらない時の確認ポイント - Qiita
    iww
    iww 2024/02/27
    /var/lib/nfs/rmtab にごみが残っているときがあるという話
  • シェルスクリプト(Bash): \ で改行してる時の 1 行コメントアウト - Qiita

    somecommand --optionA=xxxx \ --optionB=yyyy \ --optionC=zzzz \ --optionD=wwww

    シェルスクリプト(Bash): \ で改行してる時の 1 行コメントアウト - Qiita
    iww
    iww 2024/02/23
  • チャットツールでコードを壊さない送信方法 - Qiita

    多くのチャットツールにはメッセージ文中に特定のパターンに合致する並びで記号を入れることにより、 記号が消えて書式設定が適用されるようになっている。 特定の記号で文字を挟むと「太文字」「斜体」「取り消し線」のような書式が適用される 特定の記号の並びで絵文字に変化する このため、チャットのメッセージにプログラムのソースコードをそのまま貼り付けて送ろうとすると、 一部の記号が消えてしまい、コードが正しく動かなくなってしまうことがある。 また、チャットツール以外でも、以下のような方法でコードをやり取りすると勝手に一部の文字が大文字や全角文字に化けたり、謎の空白や改行が入り込むことがあるので同様にオススメできない。 Eメール文に貼り付けて送信 PDFファイルに保存して送信 Wordファイルに保存して送信 一番無難なのは以下の2つ。 テキストファイルにコードを保存してやり取り Gistのようなソース

    チャットツールでコードを壊さない送信方法 - Qiita
    iww
    iww 2024/02/13
    ソースコードを貼り付けるとき 先頭行を !! にすると等幅になって顔文字とか使われなくなる。助かる
  • 実行時の関数全ての in/out をトレースする - Qiita

    こういう DebugPrint 1関数ずつ入れなくてOK。 素敵ポイント: 大元のソースには手を入れない。 gcc 使用。 ソース #include<stdio.h> /* Proto Type */ void hello_world( void ); void hello_world(void) { printf( "hello!\n" ); } int main(void) { hello_world(); return 0; } #define _GNU_SOURCE #include <dlfcn.h> #include <iostream> extern "C" { void __cyg_profile_func_enter(void* func_address, void* call_site); void __cyg_profile_func_exit(void* func_

    実行時の関数全ての in/out をトレースする - Qiita
  • はじめての OpenResty : Hello World - Qiita

    OpenResty は nginx に luajit と様々なライブラリをパッケージし、簡単に高速な Web アプリケーションサーバーを構築できるようにした web プラットフォームです。 nginx 単体でも config ファイルでの記述によって HTTP のリクエストを書き換えてプロキシするなど複雑な処理が可能ですが、さらにそれを推し進め高速な Lua スクリプティングを足すことで、高性能なアプリケーションサーバーとして使うことが出来るようになっています。 元 CloudFlare の OpenResty 開発者である、現 OpenResty, Inc の agentzh 氏中心に開発とメンテナンスが続けられているオープンソースのプロダクトです。 日語での OpenResty 専門の書籍が出ていないこと、以前から日語で書かれた記事がありますが多少情報が古くなっていること、例えばバ

    はじめての OpenResty : Hello World - Qiita
    iww
    iww 2024/02/03
    それはNGINXとLuaJITをくみあわせたまったくあたらしいWebサーバ
  • 初めてのZeroMQ(Python)でREQ-REPパターン - Qiita

    ちょっとZeroMQを調べてみようと。 ZeroMQ ZeroMQとは、組み込みで動くメッセージングミドルウェア…というか、ライブラリのようですね。 ZeroMQを使うことで、様々な通信パターンを実現できるとか。 ØMQ(ZeroMQ, 0MQ, zmq などとも呼ばれます) は組み込みネットワークライブラリと言うことも出来ますが、並行フレームワークの様にも機能します。 ØMQ はプロセス内通信、プロセス間通信、TCP やマルチキャストの様な幅広い通信手段を用いてアトミックにメッセージを転送する通信ソケットを提供します。 ソケットをファンアウト、Pub-Sub、タスク分散、リクエスト・応答の様なパターンで N 対 N で接続できます。非同期 I/O モデルにより、マルチコア環境でスケーラブルな非同期メッセージ処理を行うアプリケーションを構築可能で、製品クラスタを構成する上で十分高速です。

    初めてのZeroMQ(Python)でREQ-REPパターン - Qiita
  • JavaScriptのarrayのmap関数でアロー関数を使う - Qiita

    var func = function nibai(value){return value * 2}; var baseArray = [1,2,3,4,5]; var newArray = baseArray.map(func); console.log(newArray); // =>[2,4,6,8,10]

    JavaScriptのarrayのmap関数でアロー関数を使う - Qiita
  • Raspberry Pi の Drive Strength を変更して少し大きめの電流を流す - Qiita

    参考にしたWebページ [1] http://ja.scribd.com/doc/101830961/GPIO-Pads-Control2 [2] http://www.thebox.myzen.co.uk/Raspberry/Understanding_Outputs.html [3] http://raspberrypi.stackexchange.com/questions/9772/how-do-i-change-the-drive-strength-on-gpio GPIOポートのDrive Strengthとは Raspberry PiのGPIOは全体で最大50mAの出力が可能であるということは多くのサイトで見つかります。 例えば以下のページでもGPIOの電流は最大で50mAであることが書かれています。 それでは、GPIOのピン1つからはどれだけの電流を流すことができるでしょう

    Raspberry Pi の Drive Strength を変更して少し大きめの電流を流す - Qiita
    iww
    iww 2024/01/28
    Drive Strength Control
  • Postfix で MTA 間送信に TLS を利用する - Qiita

    背景 ある日 Gmail で受信したメールに赤い錠が開いた形のマークがある、と報告を受けました。確認してみると Gmail が SMTP で受信する際に TLS が使われていない場合、赤い錠マークが表示されると、Gmail ヘルプにはあります。 寡聞にしてそのときまで知らなかったのですが、MTA 間通信でも TLS を利用できます。社内メールサーバーに利用している Postfix では、Thunderbird や Sylpheed 等の MUA からの接続には TLS を使うよう設定していましたが、外部の MTA への SMTP 接続はデフォルトのままでした。 この記事では、Postfix が外部への SMTP 通信時に TLS が利用できる場合に TLS 通信させる設定について説明します。 設定方法 大掛かりな前書きを用意しましたが、設定はシンプルで main.cf に以下を追加して P

    Postfix で MTA 間送信に TLS を利用する - Qiita
  • overflow-wrap: break-word; や word-break: break-all; が万能の改行処理だったなら、こんなに苦労していない - Qiita

    overflow-wrap: break-word; や word-break: break-all; が万能の改行処理だったなら、こんなに苦労していないHTMLCSS初心者 はじめに 今回解決したいのはこれです。 「overflow-wrapかけたのに改行されないしテーブルwidthもなんか勝手に伸ばされちゃってる問題」です。 こんなんHTML / CSSの初歩中の初歩じゃんwwwという方は、どうぞごゆるりとブラウザバックしてやってくださいませ… 「それ地味に悩んでた!」という方がもしいらっしゃいましたら、少しでも助けになれれば嬉しいです。というか一緒に悩みましょう。 あ、でも、もしそんな方が当にいたら、こんなことに悩むよりも、 「全半角記号のブラウザテストだけ許容する」という呪文を唱えた方が5億倍早いです…というネタバレだけ先にしておきますね>< もくじ 当記事は、以下の内容に関する

    overflow-wrap: break-word; や word-break: break-all; が万能の改行処理だったなら、こんなに苦労していない - Qiita
    iww
    iww 2024/01/23
    改行位置の話