タグ

linuxとプログラミングに関するvccのブックマーク (68)

  • 期限の制約なく無料で使えるクラウド「Free Tier」主要サービスまとめ。2023年版

    いくつかのクラウドサービスでは、新規ユーザーに対する1年程度の無料トライアルや一定額のクーポンなどの提供だけでなく、期間の制限なくずっと無料で使える、いわゆる「Free Tier」や「Always Free」と呼ばれるサービスが提供されています。 こうしたサービスは試行用の環境や一時的なテスト環境、あるいはホビー用途などに適しています。 記事では期限の制約なく無料で提供されている主なクラウドサービスを、2023年版としてまとめました(新規ユーザーとして期限の制約なく無料で使えるものを優先しています)。 ただしこれらの無料のサービスは、提供側の都合によって申し込みや利用が制限されたり、もしくは提供自体が終了したりすることがあります(昨年、多くのITエンジニアに人気であったHerokuのFreeプランが終了したことをご記憶の読者も多いでしょう)。 無料のサービスを利用する場合には、そうした提

    期限の制約なく無料で使えるクラウド「Free Tier」主要サービスまとめ。2023年版
  • GoogleのShell Style Guideの邦訳 - Qiita

    背景 (Background) どのシェルを使うか (Which Shell to Use) Bash は実行が許可された唯一のシェルスクリプト言語である。 実行可能ファイルは #!/bin/bash と最小限のフラグで始めなければならない。シェルオプションの設定に set を利用することで、 スクリプトを bash script_name として呼び出してもその機能を損なわないようにせよ。 全ての実行可能シェルスクリプトを bash に制限することで、全てのマシンにインストールされた一貫したシェル言語を得る。 これに対する唯一の例外は、コーディング対象によって強制される場合である。この1つの例として、Solaris SVR4 パッケージは、どんなスクリプトにも plain Bourne shell であることを要求する。 いつシェルを使うか (When to use Shell) シェル

    GoogleのShell Style Guideの邦訳 - Qiita
  • Linuxカーネルで学ぶC言語のマクロ - 覚書

    はじめに 記事は電子書籍版もあります。 linuxカーネルはC言語のマクロを駆使して書かれています。それらのうち、凝ったマクロになじみの無い人には初見では意図がわからない&わかってみれば面白いであろうものをいくつか紹介いたします。対象読者は、C言語のユーザだけれども、マクロは定数定義くらいにしか使わないというライトなマクロユーザです。 マクロを使用する場所に依存するエラーを防ぐ 次のマクロは、二つの引き数の値を置換するだけの単純なものです。 #define swap(a, b) \ do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0) 注目すべきはマクロの定義全体を囲んでいるdo { ... } while (0)という表記です。初見の人には何のことかわからないと思います。考えられる最も単純な定義から遡って、なぜこ

    Linuxカーネルで学ぶC言語のマクロ - 覚書
  • UNIX/Linuxの「デーモン」はこうやって作る

    by Jeff Hitchcock WindowsAndroidを搭載したデバイスの動作を軽快にする方法を調べると「タスク」や「プロセス」「デーモン」といった言葉が目に入ります。特にデーモンはUNIX/Linuxにおいて、ユーザーとの対話を行うための制御端末を持たないバックグラウンドプロセスとして、ウェブサーバーやメールサーバーの役割を担う存在。そのデーモンの生成方法について、エンジニアのAryaman Sharda氏が説明しています。 Understanding Daemons (in Unix) - Digital Bunker https://blog.digitalbunker.dev/2020/09/03/understanding-daemons-unix/ デーモンとは、バックグラウンドで動作し特定のイベント発生を待機しているプロセスのこと。代表的なデーモンとしてはウェブサ

    UNIX/Linuxの「デーモン」はこうやって作る
  • お手軽Linux(Ubuntu) GUIアプリ開発 入門 - Qiita

    お手軽Linux(Ubuntu)Guiアプリ開発 入門 2021/4月追記 Rider .net5 でのLinux GUI開発に移行しています VisualStudioMacやMonoDevelopだけでWindows Formsを作る感覚でLinux GUIアプリが作れます 利点 ターミナルで開発環境を整えなくてよい。VisualStudioMacが自動で整えてくれます VisualStudioMacをダウンロード MonoDevelop(linux版)でもやり方は一緒です。 GTK#2を選択する ツールボックスを選択 ツールボックスが表示される インターフェース Main Windowを選択 FiexedをMain Windowにドラッグします。編集可能領域を作成します ボタンをドラッグします。ボタンを移動させるには白い四角をクリックしドラッグします プロパティを表示します。 Clic

    お手軽Linux(Ubuntu) GUIアプリ開発 入門 - Qiita
  • シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳

    Bash は言わずと知れた歴史あるコマンド言語です。テキストにコマンドの羅列を記述するだけで、手軽にシェルスクリプトとして実行することができます。 シェルスクリプトの実体はシェルコマンドの羅列に過ぎませんが、手続き型プログラミング言語にあるような制御構文も備えています。変数や条件分岐、ループ、関数などです。これらを使えばシェルスクリプトでプログラミングも可能です。 もちろん、現代の一般的なプログラミング言語と比べると機能は限られます。他の言語には見られないシェルスクリプト特有の癖や記法も数多くあり、最近の言語に慣れている人ほど、つまずくポイントが多いです。 しかし、シェルスクリプトだからこその良さもあります。Bash は現在でも多くの OS で標準シェルとして採用されており、普段使っているシェルコマンドを書くだけで動かせる手軽さは何者にも代えがたいです。一度身につけておくと長く使えるお得な

    シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳
  • bashスクリプティング研修の資料を公開します - エムスリーテックブログ

    こんにちは、エンジニアリングGの中村です。 以前にこのブログにてエムスリーでの社内研修について紹介しました。今回は、この中でのbashスクリプティング講座の資料を公開します。 www.m3tech.blog 弊社の中でもいろいろな用途でbashが使われていますが、bashは簡単に利用できるもののプログラミング言語としてはバグを生みやすい、辛い言語だと思います。 ここで紹介しているのはいわゆるコーディング規則というよりも、バグ防止と可読性向上のためのルールをTips集的にまとめたものです。 bashにおいてまだまだ注意するところはありそうですが、多少なりともわかりにくいスクリプトの削減になればと期待しています。 [追記: 2018-08-22] はてブにて以下のコメントをいただきました。 bashスクリプティング研修の資料を公開します - エムスリーテックブログ bashで50行以上になった

    bashスクリプティング研修の資料を公開します - エムスリーテックブログ
  • Linuxバイナリを最適化して性能を向上させる「BOLT」、Facebookがオープンソースで公開。言語やコンパイラに依存せず高速化

    Linuxバイナリを最適化して性能を向上させる「BOLT」、Facebookがオープンソースで公開。言語やコンパイラに依存せず高速化 Facebookは、Linuxバイナリの内部配置を最適化することによりCPUのキャッシュ効率などを向上させ、実行速度を改善する「BOLT」をオープンソースで公開しました。 BOLTは「Binary optimization and layout tool」の略とされています(もしかしたら、より速く走るという意味でウサイン・ボルト氏にかけているのかもしれません)。 BOLTは言語やコンパイラに依存せず、ソースコードも不要 BOLTのおもな効果は、Linuxバイナリの実行状況をperfコマンドで取得し、高頻度で実行されている部分などを判別した上で、そうした部分がCPUキャッシュにヒットしやすいようにバイナリの内部配置を改善することなどで実行速度を向上させることと

    Linuxバイナリを最適化して性能を向上させる「BOLT」、Facebookがオープンソースで公開。言語やコンパイラに依存せず高速化
  • Linuxのloadavgが約7時間ごとに上昇する現象の原因 - Mackerel お知らせ #mackerelio

    Mackerelチームのエンジニアのid:itchynyです。 「mackerel-agentを入れるとloadavgが7時間ごとに上昇する」 先日、このような問い合わせを複数のお客さまから受けました。私も実験してみたところ、確かに再現しました。EC2 t2.microにmackerel-agentを入れて簡単なログ監視とプロセス監視を設定し、数日放置しました。 確かに、約7時間ごとにloadavgが上昇しています。この周期のcronの設定はしておらず、またmackerel-agent内部でも7時間ごとに行う処理はありません。しかし、プラグインを多く入れるほどloadavgのピーク値も上がります。 エントリーでは、この現象の原因について説明します。 loadavgが上昇する原因を調べるには、まずloadavg自体がどう計算されているかを知る必要があります。 まずは、Linuxがloada

    Linuxのloadavgが約7時間ごとに上昇する現象の原因 - Mackerel お知らせ #mackerelio
  • linuxカーネルで学ぶC言語のマクロ - Qiita

    はじめに 記事は電子書籍版もあります。 linuxカーネルはC言語のマクロを駆使して書かれています。それらのうち、凝ったマクロになじみの無い人には初見では意図がわからない&わかってみれば面白いであろうものをいくつか紹介いたします。対象読者は、C言語のユーザだけれども、マクロは定数定義くらいにしか使わないというライトなマクロユーザです。 マクロを使用する場所に依存するエラーを防ぐ 次のマクロは、二つの引き数の値を置換するだけの単純なものです。

    linuxカーネルで学ぶC言語のマクロ - Qiita
  • Raspberry Pi 3のBluetoothでBLE Peripheral(bleno)を試してみる - Qiita

    まえおき ちょっとアプリの対抗として BLE Peripheral を実装(エミュレーション)する必要があったのだが、iOS/AndroidだとMACアドレス周りのセキュリティ考慮や、Android同士だと相性が出るという不治の病などがあって、スマートフォンでやるのは無理があるなぁと思っていた。 また、現場で実際にアプリのテストをやろうとしたりすると、Macのエミュレーションとかも、パラでやるのに向いていないのでなんだかなぁという状態だった。 「Raspberry Pi 3 Model B」発表のお知らせ https://raspberry-pi.ksyic.com/news/page/nwp.id/24 そんな折、Raspberry Pi 3先生にBluetooth 4.0/Wifiが内蔵されたということで、node.js/blenoあたりで実装すればハードの仕様差も少ないし調達も楽だし

    Raspberry Pi 3のBluetoothでBLE Peripheral(bleno)を試してみる - Qiita
  • Linuxネットワークドライバの開発 - Handwriting

    この記事はLinux Advent Calendar 2016 9日目の記事です。 遅刻してしまい申し訳ございません。。。 とある事情があって1ヶ月半ほど独自NICのLinux向けのネットワークドライバを開発していた。 今回はARM用のデバイスドライバを開発した。NICはXilinx社のFPGAであるZYBOを用いて開発した。 まだ十分に実用段階というわけではないが、ひとまず独自NIC経由でのpingやiperfが通ったので、後学のために知見を残しておきたい(誰得だ、という感じだが)。 ソースコードはまだ公開されていないが、そう遠くないうちに公開する予定(たぶん)。 はじめに Linuxのデバイスには キャラクタデバイス - バイト単位のデータ通信 (e.g. シリアルポート) ブロックデバイス - ブロック単位のデータ通信 (e.g. ディスク) ネットワークデバイス の3種類がある。ネ

    Linuxネットワークドライバの開発 - Handwriting
  • ワイヤレスマウスを安価な物理ボタンとして使う - Qiita

    家の照明などを操作しようと思うと、やはりモバイルアプリよりも簡単な物理ボタンが欲しくなることは多いと思います。 流行に身を任せて、市販のIoTボタンを買ったり、ArduinoやESP8266などで電子工作したりしてもいいですが、USBでつながる普通の無線マウスで実用的には十分なことがあったので紹介します。 ほかのIoTボタンと比べてこんなメリットがあります。 安い (737円とか) どこでも手に入る 設定が不要 乾電池で動作して長持ち ホイールが使える マウスで電球スイッチ 今回は、家全体の電球を操作するボタンをつくるのを例に説明します。電球にはPhilips Hueを使って、HTTP API経由で電球を制御します。このようなものを使います。 USB接続のワイヤレスマウス Raspberry Pi (常時稼働のマシンならなんでもOK) 制御するもの (今回はHue) マウスをクリックすると

    ワイヤレスマウスを安価な物理ボタンとして使う - Qiita
  • Linuxシステムコール徹底ガイド | POSTD

    要約 この記事では、LinuxカーネルにてLinuxプログラムがどのように関数を呼び出すのかについて紹介していきます。 システムコールを行う様々な方法、システムコールを行うための独自のアセンブリの作成方法(例あり)、システムコールへのカーネルエントリポイント、システムコールからのカーネルイグジットポイント、glibcのラッパ関数、バグなど多くの点について説明します。 要約 システムコールとは? 必要条件に関する情報 ハードウェアとソフトウェア ユーザプログラム、カーネル、CPUの特権レベル 割り込み モデル固有レジスタ(MSR) アセンブリコードでシステムコールを呼び出すことの問題点 レガシーシステムコール 独自のアセンブリを用いたレガシーシステムコールの使用 カーネル側での int $0x80 エントリポイント iret を使用したレガシーシステムコールからの復帰 高速システムコール 3

    Linuxシステムコール徹底ガイド | POSTD
  • OSを書く:初歩から一歩ずつ | POSTD

    (注:2017/9/27、いただいたフィードバックを元に翻訳を修正いたしました。) (傑作映画 『おつむて・ん・て・ん・クリニック』 に登場する著書です) このチュートリアルは、アセンブリで とても 簡単なオペレーティング・システムを皆さんが自分自身で書けるようになるために書きました。元々は、 OSDev wiki でこのチュートリアルのベースとなるものを見つけたのがきっかけです。しかし、そこには何がどのように、どうして行われているのかという説明が一切ありませんでしたので、このチュートリアルを書くことを決めました。ということで、起動プロセスの基礎と、実行するのに必要なツールについて紹介していきます。 OSXLinuxWindowsなどのよく使われているオペレーティング・システムはドライバを持っており、ハードウェアとの間のインタフェースを提供し、一定レベルの安全性とセキュリティを保証しま

    OSを書く:初歩から一歩ずつ | POSTD
  • 第422回 whiptailでCUIをグラフィカルにする | gihyo.jp

    CUIでシェルスクリプトや設定コマンドを書いていると、自分以外の誰かが使う可能性を考えて、よりユーザーフレンドリーなインターフェースにしたいケースが稀にあります。今回はそんなケースで使える、「⁠whiptail」を紹介します。 whiptailとは? whiptailは「newt」と呼ばれるテキストモード(CUI)用のウィンドウツールキットに同梱されているプログラムです[1]⁠。具体的にはDebianパッケージの設定システムであるdebconfや、Xが動いていない環境でim-configが設定ダイアログを表示するときに使用しています。 このwhiptailをシェルスクリプトと組み合わせて使うと、CUI上でも簡単に問い合わせダイアログや選択用のチェックボックス、進捗バーの表示を作れることができるのです。しかも、whiptailパッケージはdebconfが依存している都合上、どのようなUbun

    第422回 whiptailでCUIをグラフィカルにする | gihyo.jp
  • 発行物紹介『すべてのUNIXで20年動くプログラムはどう書くべきか』

    すべてのUNIXで20年動く プログラムはどう書くべきか デプロイ・保守に苦しむ エンジニア達へ贈るシェルスクリプトレシピ集 松浦智之 著,USP研究所 監修,C&R研究所 発行 2015年7月24日 初版発行 A5版 2色刷 256ページ 体2,500円+税200円 【ここで買えます】現在,カゴに 冊入っています Amazonでも注文受付 「速い」「簡単」でも,流行り廃りの激しいソフトはもう懲り懲り! 「高速です」「簡単です」とは主張する一方で,「どこの環境でも動きます」とか,ましてや「長年に渡って動き続けます」などと主張する言語やライブラリー,フレームワークはほどんど聞かない.それらがバージョンアップしたり廃れたりするたび,苦労を強いられてきた. そんな苦労から解放してくれる言語とは,意外にも書き捨て言語と言われることの多いシェルスクリプトなのである.さらに意外に思うかもしれないが,

    発行物紹介『すべてのUNIXで20年動くプログラムはどう書くべきか』
  • Vim幼稚園からVim小学校へ - Qiita

    emacsキーバインドに慣れ親しんだせいで長らくVim幼稚園のままだった私が来ましたよ。キーバインドを一度に覚えようとすると挫折しやすいので、以下のように少しずつボキャブラリーを増やすのがたぶん吉。 特記しない限りノーマルモードが前提。後、.vimrcでの設定については最小限にしか触れない (emacsでつい設定ファイルをいじってしまいがちだった反省から) ので各自好きにしてください。 Level 1 最小限の使い方だけ覚えて、ぶっつけでサーバーの設定ファイルを更新したりしていた。10年以上この状態。 iでその場でインサートモード aで直後の文字にインサートモード :wqで保存終了 :q!で保存せずに終了 移動はひたすらカーソルキー xでカーソル下の文字を削除 困ったらEscキーを連打 上はもともと、vimの先祖でずっと機能の少ないviの操作なのだけど、viならほぼどんなたいていのUnix

    Vim幼稚園からVim小学校へ - Qiita
  • VisualStudioCode用のVimプラグイン作った - @74thの制作ログ

    VimStyleという、VisualStudioCode用のVimプラグインを、VisualStudioCodeでTypeScriptを作った。 https://marketplace.visualstudio.com/items/74th.vimStyle TypeScript素晴らしい。だって、JSなのにエンプラ的なクラスを使ってプログラミングできる。もちろん、ビルドエラーもすぐわかる。型もチェックされる。 VisualStudioCode素晴らしい。当たり前のようにデバッグができる。 さすがIDEを長年作り続けたMSだけあって、すごく良い。ふんわりしてるAtomと違って地に足ついてる感じする。 しかし、VSCodeでまだ足りてないところがいくつか。 Key-bindingで動作しないキーがある。 拡張機能からスクロールする方法がない。→修正しました。ありました。 長年Vimを使ってき

    VisualStudioCode用のVimプラグイン作った - @74thの制作ログ
  • Vim-EasyMotionでカーソル移動を爆速にして生産性をもっと向上させる - haya14busa

    この記事はVim Advent Calendar 2013 : ATNDの 113 日目の記事になります。 また『EasyMotionか!』と思う方も中にはいるかもしれませんが、実は誕生日VACだったりするので許してください。 Happy Vimming to me. カーソル移動がエディット時間の80%を占める Vimでエディットしている時間の中で、カーソル移動の割合は恐らく80%以上を占めてます[当社比][要出典] 何をするにしても基的にはカーソルを移動させ、それからVimの強力なoperatorやtextobjectを駆使してテキストをエディットしたり、Insertモードに入って文字を入力するでしょう。またtagジャンプや、*,#などでカーソル下の単語を検索して移動するために、そこまでカーソルを移動させるという『カーソル移動のためのカーソル移動』をするケースだってあります。 多くの

    Vim-EasyMotionでカーソル移動を爆速にして生産性をもっと向上させる - haya14busa