注目のストーリー
All posts
【shell script】引数ありのシェルスクリプトの実行方法
みなさん、こんにちはエンジニアの高橋です。本日は引数ありのシェルスクリプトの実行方法についてお話したいと思います。シェルスクリプトを実行する際に引数を使うことにより、より汎用的なシェルスクリプトを作ることができます。ではどのようにしてシェルスクリプトに引数の値を渡すことができるのでしょうか?引数の受け取り方下記のような文字をシェルスクリプト内に記載することで特定の値を取得することができます。$0 ・・・ 実行ファイル名$1 ・・・ 1つ目の引数$2 ・・・ 2つ目の引数 (これ以降は3,4...と続いていきます。)$# ・・・ 引数の数$@ ・・・ 全ての引数引数を受け取るコードでは実際...
【MySQL】インデックスのお話
みなさんこんにちは。高橋希望です。今日はmysqlのインデックスについてお話したいと思います。インデックスとは「もくじ」をイメージしていただくとわかりやすいと思います。辞書で「ゲーム」という言葉を探す時に「もくじ」が存在しないと辞書の初めのページから順々に調べて行くと思うのですが、「もくじ」がある辞書だと「け」のページから探していけるので検索スピードが格段に上がります。データベースのインデックスもこれと同じで、検索をかけるカラムに対してインデックスを貼ることで格段に検索スピードが向上します。検索スピードが遅い時など試してみてください。
【MySQL】トランザクションのお話
皆さん、こんにちは。今日はトランザクションについてお話したいと思います。トランザクションとは1つの作業単位として扱う一連の操作の集まりです。トランザクション内の操作が全て実行されるか、または全て実行されないことを保証してくれます。これにより、複数のテーブル更新を行っても整合性が保たれた状態で処理ができます。ACID特性トランザクションに必要な性質の頭文字をとって「ACID特性」と言います。原子性 (Atomicity)トランザクション内の操作が全て実行されるか、または全て実行されないかのどちらかになります。中途半端な状態は有り得ないです。つまり、トランザクションはそれ以上細かい単位に分割...
「M+」「M-」「MR」
こんにちは、フジボウルの根岸です。「M+」、「M-」、「MR」、みなさんは電卓でこれらのボタンを使ったことがありますか?私は、ほぼ使ったことがありません。(ちなみにこのボタンの表記は端末により若干異なります)そもそも、このボタンは一体どういったものなのでしょうか?簡単に説明すると「M+」ボタン→表示されている数値を電卓のメモリーに加算します「M-」ボタン→表示されている数値を電卓のメモリーから減算します「MR」ボタン→電卓のメモリーに記憶されている数値を表示しますといった動作をします。つまり、一時保存のメモリー機能用のボタンですね。この機能を利用すると例えば、「2×2+3×3」といった計...
送り仮名のお話
こんにちは、フジボウルの根岸です。「明日、ミーティングをおこなう予定です。」仕事上のやりとりで使いそうなこの一文、「おこなう」の箇所を漢字で書く場合、皆さんはどう書きますか?「行う」? 「行なう」?どちらも正しいように見えますが、今は「行う」を使うのが一般的なようです。1959年に定められた「送りがなのつけ方」では、「行なう」が本則とされていましたが、1973年に改定された「送り仮名のつけ方」により「行う」が本則になり、「行なう」は許容に変わったという歴史があるようです。「行なう」も誤りというわけではありませんが、「行う」を使った方が良さそうですね。「行」は「いく」を漢字で表す際にも使い...
平均値、中央値そして最頻値
こんにちは、フジボウルの根岸です。世の中で平均◯◯という言葉はよく耳にしますね。平均点、平均年収、平均年齢などなど。これらは、「平均値」を用いて求められていると思いますが、似たよう言葉で「中央値」というものがあるのをご存知でしょうか。今回は「平均値」、「中央値」の違いをその求め方から見ていきたいと思います。例えば、以下のような数値データがあったとします70,80,10,20,60,80,100平均値は全ての数値を足して、その個数で割った値でこの場合は、(70+80+10+20+60+80+100)/7 = 60になります。対して、中央値は数値データを昇順に並べた際の真ん中の値でこの場合は...
割引とポイント還元
こんにちは、フジボウルの根岸です。今回は、割引とポイント還元の比較について考えたいと思います。では、具体的に10%割引と10%ポイント還元での買い物を比較して見ていきましょう。例えば、手元に10,000円の現金があったとします。10%割引の場合は、10%割引後に10,000円になる11,111円相当の買い物ができます。10%ポイント還元の場合は、10,000円の買い物後、還元されたポイントで1,000円の買い物ができ、合計11,000円相当の買い物ができたことになります。つまり、単純に考えると割引の方が111円分高い買い物ができたことになります。ここで還元の方を割引に換算すると、10,0...
「^」何と読む?
こんにちは、フジボウルの根岸です。みなさん、こちらの記号の読み方をご存知ですか?「^」正解は「キャレット」です。または「ハット」とも読むそうです。今回はこう言った意外と読めない記号の読み方を見ていきたいと思います。では、続きましてこちら。「`」こちらは、「バッククォート」もしくは「グレイヴ・アクセント」とも読みます。「'」 (シングルクォート)に似ていますが、違いますのでお気をつけください。その他には「~」(チルダ)「|」(パイプライン)「#」(ハッシュ)「!」(エクスクラメーションマーク)あたりが意外と読めなかったりするものでしょうか。プログラミングなどをしていると見る機会も多いですね...
HDMIのバージョン
こんにちは、フジボウルの根岸です。他の投稿で、USBのバージョン絡みのお話をしましたが、HDMIにもバージョンがあることをご存知ですか。実際、HDMIにはバージョン1.4、バージョン2.0、バージョン2.1などがあり、帯域幅や対応する解像度、リフレッシュレートなどに違いがあります。(詳しくは他にも違いがあります)大抵の用途では、このバージョンはあまり気にしなくても問題ないものかと思いますが、4K/120Hzや8Kのコンテンツを楽しみたい方は意識しておいた方が良いものになります。最近ですと、PlayStation5は4K/120Hz、8kの出力が可能だそうです。(ただ、ゲームソフトなどがそ...
USB3.0が2.0に
こんにちは、フジボウルの根岸です。「USB3.0機器はゆっくり差すとUSB2.0、素早く差すとUSB3.0として認識される」という記事を見ました。「えっ?」と思いましたが、これは予期された動作、仕様なのだそうです。カラクリとしては、USB3.0のコネクター先端には後方互換のためにUSB2.0と共通の端子部分があるようで、ゆっくり差した場合、コネクターの根元にあるUSB3.0用端子を認識する前に接続先の機器がUSB2.0と認識してしまうといったものでした。「なるほど」と思ったのと同時に、かなりアナログな仕様でびっくりしました。ということは、浅差しでも誤認されてしまうということですかね。皆さ...
サーキットブレーカーとは
こんにちは、フジボウルの根岸です。みなさん、サーキットブレーカーというものをご存知ですか。一概にサーキットブレーカーと言っても、色々ありまして、まず株式市場の世界では、大きな価格の変動があった場合に、取引を一時的に中断させる措置を行う制度のことを言います。また電気回路の世界では、過大な電流を自動的に遮断し、配線を保護するもののことを言います。そして、システムの世界でも、この仕組みは利用されています。大量のリクエストや負荷などでサービスがダウンしたり、レスポンスに遅延が発生した際に、そのままリクエストをサービスに送り続けると状況がさらに悪化してしまう可能性があります。その際に、サービスへの...
SQLインジェクション その2
フジボウルの寺山です。最近急に寒くなりましたね!毎年電気で暖かなる毛布には助けられております以前に引き続きSQLインジェクションの対策についてです。○プレスホルダーによるSQL組み立てパラメータ部分を「?」などの記号で示しておき、後にそこへ実際の値を機械的な処理で割り当てる方法です。機械的な処理については後述いたしますが、例えば以下のようなSQLになります。SELECT * FROM customer WHERE id = ?ここで、パラメータ部分を示す記号のことをプレースホルダと呼び、そこへ実際の値を割り当てることを「バインドする」と呼びます。そのため、プレースホルダのことを「バインド...
SQLインジェクション
フジボウルの寺山です。今回は、MySQLに携わっておきながらまだまだ理解が乏しいな感じだSQLインジェクションについて。安全なSQLの呼び出し方の自分用にメモしたものです。https://www.ipa.go.jp/files/000017320.pdfぜひ一読してみて下さい。〇概要SQLインジェクションの脆弱性がある場合、悪意あるリクエストにより、データベースの不正利用を招きます。そのため、対策を必須なのでその前にまず、リテラルについて話ます。〇リテラルとは例えば、以下のSQLがあります。SELECT a FROM atable WHERE name = "terayama"SQL構成...
テスト駆動開発
フジボウルの寺山です。今回は自分用のメモに近くなりますが、最近知った「テスト駆動開発」についてです。テスト駆動開発とは、プログラム開発手法の一つで、プログラムに必要な機能に関して、まず初めにテストコード及び仕様書を書いていき、そのテストに必要な開発を進め、その後そのコードの精度を上げていくというものです。普通の開発プロセスである設計⇨実装⇨テストではなく、テスト⇨実装⇨リファクタリングという形です。略称としてTDDと呼ばれているそうです。上記のテスト⇨実装⇨リファクタリングは、レッド、グリーン、リファクタリングとも呼ばれ、レッド: 仕様に対して失敗するテストコードグリーン: レッドを元に...