タグ

ブックマーク / www.yoheim.net (6)

  • [JavaScript] 全角⇔半角の変換を行う(英数字、カタカナ) - YoheiM .NET

    数字、アルファベット、カタカナの全角半角変換は、JavaScriptで簡単に実現できます。今日はその実装方法をブログに書きたいと思います。 目次 全角 → 半角(英数字) function hankaku2Zenkaku(str) { return str.replace(/[A-Za-z0-9]/g, function(s) { return String.fromCharCode(s.charCodeAt(0) - 0xFEE0); }); } // 使用例 hankaku2Zenkaku('123abC'); // '123abC' 文字コード上で、全角英数字から65248引くと半角英数字になります。 また、処理範囲を正規表現で[A-Za-z0-9]と指定していますが、例えば[0-9]とすれば、変換対象を全角数字に限定できます。 半角 → 全角(英数字) function zenka

    [JavaScript] 全角⇔半角の変換を行う(英数字、カタカナ) - YoheiM .NET
  • [Javascript] 絵文字(サロゲートペア)を含んだ文字列の文字数を正しく取得する - YoheiM .NET

    こんにちは、@yoheiMuneです。 Javascriptでもユニコードは大変ですね。今日は絵文字などユニコードが含まれた文字の文字数を正しく取得する方法をブログに書きたいと思います。 目次 String.prototype.lengthでは正しく取得できない 文字数を取得するには、"aaa".lengthのようにlength関数を使いますが、絵文字などの2文字で1文字を表すサロゲートペア(Surrogate Pair)では意図せず2文字とカウントされてしまいます(サロゲートペアについてはMixiのエンジニアブログでわかりやすく解説されています)。 // アルファベットはOK "aaa".length // => 3 // 日語も基的にOK "あああ".length // => 3 // 絵文字(ユニコード)は「2」となる "🌋".length // => 2 困ったぞという話です

    [Javascript] 絵文字(サロゲートペア)を含んだ文字列の文字数を正しく取得する - YoheiM .NET
    kikiki-kiki
    kikiki-kiki 2021/07/09
    絵文字を含む文字数のカウント。codePointsOf(), codepoints, toArrayOfUChars() は JS の仕様から消えてるっぽいので、unicode-length を使うのが良さそう
  • [Python] デコレーターに入門する - YoheiM .NET

    こんにちは、@yoheiMuneです。 Pythonのコードで時々ある@xxxというアノテーションがついた関数がありますが、そのアノテーションをデコレータと言います。今日はその使い方や定義方法などブログに書きたいと思います。 目次 デコレーターとは デコレーターとは、以下のように関数に@xxxをつけるものを指します。 @document_it def add_ints(a, b): return a + b 上記の@document_itがデコレータで、これを付与することでadd_ints関数の中身を変えずして振る舞いを変えることができます。FlaskなどのWebアプリケーションでは、@app.route('/')などでルーティングにもちいられています。 このブログでは、デコレータの定義方法や使い方を書きたいと思います。 デコレーターを定義する デコレーターに利用する関数は、以下のように定

    [Python] デコレーターに入門する - YoheiM .NET
    kikiki-kiki
    kikiki-kiki 2020/12/11
    デコレーターの作成方法
  • [Python] ユニットテストをPythonで書く - YoheiM .NET

    こんにちは、@yoheiMuneです。 皆様はUnitテスト書かれていますかー?僕は自分のアプリケーションでunitテストを書くようにしています。今日はPythonでのUnitテストの書き方をブログに書きたいと思います。 目次 単体テストを書く理由 僕が単体テストを書く理由は、別に誰からか強制されているわけではなく、自分のために書きます。ユニットテストを書くことで以下のメリットがあるなぁと感じています。 コーディングしながら同時にテストもできて品質を確保しやすい テストしやすいメソッド設計になって、今後のメンテナンスをしやすい(例えば将来仕様変更があった場合にも、メソッドを修正してテストも修正すれば、最低限品質を担保できる 細かくテストができてテストバリエーションを確保でき、品質に繋がる。例えばHTTP〜アプリ〜DBを通してテストする場合には、どうしても細かい部分はテストしづらい) 新しい

    [Python] ユニットテストをPythonで書く - YoheiM .NET
  • [Python] argparseモジュールを使って、コマンドライン引数を本格的に扱う - YoheiM .NET

    こんにちは、@yoheiMuneです。 以前に[Python] コマンドライン引数を扱うでsys.argvを使ったコマンドライン引数の扱い方を書きましたが、今回はargparseモジュールを使ってもっと格的に扱う方法をブログに書きたいと思います。 目次 argparseモジュールを導入する argparseモジュールは最初から入っているモジュールなので、pipなどでのインストールは不要です。以下のインポートを行います。 import argparse これで利用できるようになりました。 早速一番簡単な例で使ってみましょう。argparseモジュールは以下のように利用します。 # argparser_sample.py # 引数パーサーの起動 parser = argparse.ArgumentParser() parser.parse_args() これでargparseが使えるようにな

    [Python] argparseモジュールを使って、コマンドライン引数を本格的に扱う - YoheiM .NET
  • [Python] コマンドライン引数を扱う - YoheiM .NET

    こんにちは、@yoheiMuneです。 今日はPythonをコマンドラインから呼び出す際に、引数を処理する方法をブログに書きたいと思います。 目次 Pythonでコマンドライン引数を扱うのは簡単で、sysモジュールを利用します。 2系3系共通 # arguments.py # -*- coding: utf-8 -*- import sys print(len(sys.argv)) # 引数の要素数 print(sys.argv) # 引数の内容(配列) # ターミナル $ python arguments.py 1 ['arguments.py'] $ python arguments.py aaa bbb 123 4 ['arguments.py', 'aaa', 'bbb', '123'] sys.argvの1つ目に呼び出したプログラム名、それ以降に指定された引数が格納されています。

    [Python] コマンドライン引数を扱う - YoheiM .NET
  • 1