広告です。クリックいただけると励みになります。

人気記事(昨日)

    2023年12月15日

    Djangoの設定で画面に表示される日付型の表示形式を指定することはできますか?

    florian-olivo-4hbJ-eymZ1o-unsplash.jpg


    Djangoって頭が良すぎて


    DBから持ってきた日付け型の値を




    yyyy年mm月dd日みたいに変換してくれませんか?





    yyyy/mm/ddで表示してくれていいんだけど。。。



    いちいちプログラムで変案するのもしゃくだし






    たぶんsetting.pyとかでいじればいけるんだろうなあと思いつつ聞いてみます。


    質問

    Djangoの設定で画面に表示される日付型の表示形式を指定することはできますか?
    また、できる場合どうやりますか?


    解答

    Djangoにおいて、画面に表示される日付型の表示形式は、`settings.py`ファイル内で設定できます。
    デフォルトの日付表示形式は、
    `DATE_FORMAT`と`DATETIME_FORMAT`という設定変数を用いて変更できます。



    具体的な手順は以下の通りです:

    1. `settings.py`ファイルを開きます。


    2. `DATE_FORMAT`および`DATETIME_FORMAT`を変更します。

    以下は例です:


    ```python


    # settings.py

    # 日付の表示形式を "年-月-日" に変更する例
    DATE_FORMAT = 'Y-m-d'

    # 日付と時刻の表示形式を
    "年-月-日 時:分:秒" に変更する例

    DATETIME_FORMAT = 'Y-m-d H:i:s'

    ```


    上記のように設定を変更することで、
    日付や時刻がデフォルトの設定から新しい設定に変更されます。

    指定可能なフォーマットは複数あり、年、月、日、時、分、秒などを異なる組み合わせで表現できます。



    また、Djangoのテンプレート内で日付を表示する場合は、
    `{{ date_variable|date:"Y-m-d" }}`のようなフォーマットフィルターを使って特定の日付形式を指定することもできます。


    これにより、個々の日付や時刻に異なる表示形式を適用することが可能です。







    フォーマットフィルターでもできるんですね。



    やってみますか。




    てか本当にこの設定だけでできるんだろうか。。

    プロフェッショナルWebプログラミング Django【電子書籍】[ 田中 潤 ]

    価格:3520円
    (2023/12/6 22:41時点)
    感想(0件)


    Python[完全]入門 [ 松浦健一郎 ]

    価格:3190円
    (2023/12/2 00:51時点)
    感想(1件)


     

    ブログランキング・にほんブログ村へ
    【下記、広告です。クリックいただけると励みになります。】
    posted by モニー at 21:00| Comment(0) | プログラミング | このブログの読者になる | 更新情報をチェックする

    2023年12月14日

    DJangoで自作の404ページを表示する方法。

    michael-dziedzic-JHMm7EK8y88-unsplash.jpg
    通常の404ページが出てしまうと少しみっともない感じがするので



    自作の404ページを出せるようにしてみます。



    質問

    Djangoで自作の404ページを表示する方法。


    解答

    Djangoでは、カスタムの404エラーページを作成して表示することができます。
    以下はその手順です。


    ### 1. カスタムの404ページを作成する

    まず、Djangoプロジェクトのテンプレートディレクトリ内に、
    `templates`フォルダ内に`404.html`という名前のファイルを作成します。



    ```html

    <!-- templates/404.html -->
    <!DOCTYPE html>
    <html>
    head>
        <title>404 Not Found</title>
    </head>
    <body>
        <h1>404 Not Found</h1>
        <p>お探しのページは見つかりませんでした。</p>
    </body>
    </html>




    ### 2. Djangoの設定を変更する

    `settings.py`ファイルにて、
    `TEMPLATES`の中の`DIRS`にテンプレートディレクトリのパスを追加します。


    ```python

    # settings.py

    TEMPLATES = [ {
                                  # ...
                                  'DIRS': [os.path.join(BASE_DIR, 'templates')],
                                  # ...
                               },
     ] ```




    ### 3. エラーハンドリングの設定を変更する

    `urls.py`ファイルにて、`handler404`ビューをカスタムの404ビューに設定します。



    ```python

    # urls.py

    from django.urls import path
    from django.conf.urls import handler404
    from myapp import views

    # 自分のアプリ名に変更する
    urlpatterns = [ # 既存のURLパターン ]


    handler404 = 'myapp.views.custom_404' # カスタムの404ビューを指定する

    ```





    ### 4. カスタムの404ビューを作成する

    最後に、指定したビューで404エラーを処理するためのビューを作成します。



    ```python

    # views.py

    from django.shortcuts import render

    def custom_404(request, exception):
        return render(request, '404.html', status=404)

    ```



    これで、カスタムの404エラーページが設定されました。

    ユーザーが存在しないページにアクセスした場合に、
    自作の404ページが表示されるようになります。







    Python[完全]入門 [ 松浦健一郎 ]

    価格:3190円
    (2023/12/2 00:51時点)
    感想(1件)


    小一時間でゲームをつくる──7つの定番ゲームのプログラミングを体験【電子書籍】[ ゲヱム道館 ]

    価格:3278円
    (2023/11/14 22:26時点)
    感想(0件)


     

    ブログランキング・にほんブログ村へ
    【下記、広告です。クリックいただけると励みになります。】
    posted by モニー at 18:00| Comment(0) | プログラミング | このブログの読者になる | 更新情報をチェックする

    Rustについて解説してください。

    pramod-tiwari-k0lTVz7i5TI-unsplash.jpg
    実は私もひそかに気になっている言語




    Rustについて聞いていきます。






    C言語系に置き換わる新時代の言語




    みたいな評価もされていますが




    はたして





    とにかく難しそう





    というイメージが先行していますが





    どんなものやら




    質問

    Rustについて解説してください。


    解答

    Rust(ラスト)は、Mozillaが開発したシステムプログラミング言語であり、
    メモリ安全性と並行性を強調した、高性能で安全なプログラミング言語です。
    RustはCやC++などの伝統的なシステム言語と競合することなく、
    その独自の特性により広く注目されています。


    以下は、Rustの主な特徴や利点です:


    1. **メモリ安全性**:

    - Rustの最も大きな特徴は、メモリ安全性を保証することです。
    所有権システムと借用(borrowing)により、メモリリークや
    データ競合(data races)などの一般的なプログラミングエラーを防止します。


    2. **並行性と並列性**:

    - Rustは安全な並行プログラミングをサポートしており、スレッドセーフなコードを書くための仕組みを提供します。
    所有権システムと型システムにより、競合状態やデッドロックを回避する手助けをします。


    3. **パフォーマンス**:

    - Rustはハードウェアリソースの効率的な利用を重視しており、C/C++に匹敵するパフォーマンスを持ちます。
    メモリ管理やランタイムがないため、高速な処理が可能です。


    4. **コミュニティとツール**:

    - Rustには活発なコミュニティがあり、豊富なドキュメントやライブラリが提供されています。
    また、Cargoと呼ばれるパッケージ管理ツールやビルドシステムが付属しており、効率的な開発が可能です。


    5. **クロスプラットフォーム**:

    - Rustはクロスプラットフォーム対応で、さまざまなプラットフォーム(Windows、macOS、Linuxなど)で
    実行されるアプリケーションの開発が可能です。
    Rustは、システムプログラミングからWeb開発、組み込みシステム、ブロックチェーン、ゲーム開発など
    幅広い分野で利用されています。


    その安全性とパフォーマンス、そして拡張性の高さから、プログラミングコミュニティで高い関心を集めています。




    どうやらライブラリなども豊富になりつつあるようです。




    Rustの紹介文を読むと


    セーフとか安全性という言葉をよく見かける気がします。



    競合状態やデッドロックを回避する機能が標準で備わっているのでしょうか





    フレームワークやwebでの使用なんかもたまに耳にしますし



    目が離せない言語ですね。






    プログラミングRust 第2版 [ Jim Blandy ]

    価格:5280円
    (2023/11/21 20:37時点)
    感想(0件)


    自動車誌MOOK SWIFT MAGAZINE Vol.8 with ALTO WORKS【電子書籍】[ 三栄 ]

    価格:1900円
    (2023/11/14 22:16時点)
    感想(0件)


     

    ブログランキング・にほんブログ村へ
    【下記、広告です。クリックいただけると励みになります。】
    posted by モニー at 12:00| Comment(0) | プログラミング | このブログの読者になる | 更新情報をチェックする

    2023年12月11日

    Djangoでログを出力をする方法。

    julia-giacomini-7U0tNirGT6o-unsplash.jpg
    Djangoのログ出力について聞いていきます。


    といってもloggingライブラリで簡単にできてしまうんですけれど。。



    質問

    Djangoでログ出力をする方法。


    解答

    Djangoでログを出力するには、以下の手順に従うことが一般的です。


    ### 1. ログの設定 Djangoでログを出力するためには、設定ファイルでログの設定を行います。

    settings.py`ファイル内にある`LOGGING`設定を編集します。


    ```python

    # settings.py

    LOGGING = {
                'version': 1,
                'disable_existing_loggers': False,
                'handlers': {
                'file': {
                      'level': 'DEBUG', # ログの出力レベル(DEBUG, INFO, WARNING, ERROR, CRITICALなど)
                      'class': 'logging.FileHandler',
                      'filename': 'app.log', # ログの出力先ファイル名
                    },
                },
                'loggers': {
                'django': {
                      'handlers': ['file'],
                      'level': 'DEBUG',
                      'propagate': True,
                    },
                },
     }

    ```




    ### 2. ログの出力 ログを出力するために、`logger`を使用します。

    以下は、ログを出力する例です。


    ```python

    import logging

    # ロガーを取得する
    logger = logging.getLogger(__name__)

    def my_view(request):
        logger.debug('This is a debug message') # DEBUGレベルのログ出力
        logger.info('This is an info message') # INFOレベルのログ出力
        logger.warning('This is a warning message') # WARNINGレベルのログ出力
        logger.error('This is an error message') # ERRORレベルのログ出力
        logger.critical('This is a critical message') # CRITICALレベルのログ出力 ```





    ### 3. ログレベルの設定

    上記の例では、`logger`オブジェクトを使用して、さまざまなレベルのログを出力しています。
    各ログの重要度に応じて適切なログレベルを指定します。



    ### 4. ログの場所

    上記の設定では、`app.log`という名前のファイルにログが書き込まれます。
    適切なパスやファイル名を設定してください。


    これらの手順に従うことで、Djangoアプリケーションでログを設定し、出力することができます。
    ログはアプリケーションの動作やエラーのトラッキングなどに役立ちます。








    Setting.pyでログの出力先やレベルなどを設定し、


    view内でのログ出力メソッドの呼び出し方を書いてくれたようです




    もっと細かい設定もできるはずなので公式ドキュメント見た方が早いかもですね




    ジャンゴロジー〜スペシャル・エディション [ ジャンゴ・ラインハルト ]

    価格:1056円
    (2023/12/2 00:40時点)
    感想(1件)


    はじめてのプログラミングカー(1個)【学研ステイフル】

    価格:4429円
    (2023/11/14 00:19時点)
    感想(7件)


     

    ブログランキング・にほんブログ村へ
    【下記、広告です。クリックいただけると励みになります。】
    posted by モニー at 19:00| Comment(0) | プログラミング | このブログの読者になる | 更新情報をチェックする

    Djangoでトランザクション処理をする方法。

    wes-hicks-MEL-jJnm7RQ-unsplash.jpg
    pythonで人気のDjangoフレームワークを使った際に



    DB操作をするときのトランザクションの書き方が複数あるようだったので聞いてみます。


    質問

    Djangoでトランザクション処理をする方法。


    解答

    Djangoにおいて、トランザクション処理はデータベースの操作をグループ化し、
    すべての操作が成功するか失敗するかを確認するための重要な方法です。

    Djangoでは、トランザクションを使ってデータベースの操作を制御する方法が提供されています。


    基本的なトランザクションの操作方法は以下の通りです:


    1. **トランザクションの開始と終了**:



    ```python

    from django.db import transaction

    # トランザクションを開始
    with transaction.atomic():

    # トランザクション内で実行されるコード
    # データベースの操作など ```


    transaction.atomic()`を使うことで、トランザクションの境界を定義し、
    その中で実行されるすべてのデータベース操作がまとめて処理されます。

    このブロック内の操作が全て成功した場合、トランザクションはコミットされます。
    もしエラーが発生した場合は、トランザクションはロールバックされます。



    2. **トランザクション内でのデータベース操作**:


    ```python

    from django.db import transaction

    with transaction.atomic(): # データベース操作

    # 例: モデルの作成や更新
        obj1 = MyModel.objects.create(field1=value1, field2=value2)
        obj2 = MyModel.objects.get(id=1)
        obj2.field3 = new_value
        obj2.save()

    ```

     


    トランザクション内では、通常通りDjangoのモデルやクエリを使ってデータベース操作が可能です。



    3. **トランザクションのネスト**:

    Djangoのトランザクションはネストすることができます。
    トランザクション内でさらに別のトランザクションを開始することが可能です。



    ```python

    from django.db import transaction

    with transaction.atomic(): # トランザクション1のコード

        with transaction.atomic(): # トランザクション2のコード ```


     



    これらの手法を使って、Djangoでトランザクション処理を実装できます。

    トランザクションを適切に使用することで、データベース操作の一貫性を保ち、
    エラーが発生した場合にロールバックしてデータの整合性を保つことができます。







    トランザクションのネストなんてこともできるんか。へー。(どういうときに使うんだ。。)



    with transaction.atomic()
    を使ったコードばかりですが



    自分が使ったのはデコレータを使用したトランザクションだったんですよね。



    いろいろな書き方があるのがDjangoの面白いところでもあり難しいところでもありますね。


    実践Django Pythonによる本格Webアプリケーション開発/芝田将【3000円以上送料無料】

    価格:3850円
    (2023/12/2 00:19時点)
    感想(0件)


    WEB DB PRESS Vol.125 [ WEB DB PRESS編集部編 ]

    価格:1628円
    (2023/11/14 12:46時点)
    感想(0件)


     

    ブログランキング・にほんブログ村へ
    【下記、広告です。クリックいただけると励みになります。】
    posted by モニー at 13:00| Comment(0) | プログラミング | このブログの読者になる | 更新情報をチェックする

    2023年12月03日

    javascriptで使うdocumentってなに?

    mk-s-z1XElmA3XrA-unsplash.jpg
    javascriptを書いたことがある人ならだれでも一度は使ったことがあるコードに







    document.getElementById()






    と言うものがあると思います。






    documentに格納されている()引数のidのelement(要素)を取得しろ!





    ってことだとは思うのですが







    documentってなに?







    と思ったので聞いてみます。




    質問

    javascriptで指定するdocumentとは何を指していますか


    解答

    JavaScriptの `document` は、Webページの構造やコンテンツを操作するためのオブジェクトです。


    `document` オブジェクトは、
    ブラウザ上で表示される現在のウェブページ全体を表し、
    HTML要素やその属性、テキスト、スタイルなどにアクセスするための手段を提供します。


    具体的には、`document` オブジェクトを使用することで、以下のような操作が可能です:


    1. **要素の検索・取得**:

    - `document.getElementById()` や `document.querySelector()` を使用して、ページ内の特定の要素を取得できます。



    2. **要素の操作**:

    - 取得した要素を通じて、テキストや属性、スタイルなどのプロパティを変更できます。
    例えば、`element.textContent` や `element.style.color` を使用して、要素のテキストやスタイルを変更できます。



    3. **要素の作成・追加**:

    - `document.createElement()` を使用して新しい要素を作成し、
    `element.appendChild()` を使用して既存の要素に新しい要素を追加できます。



    4. **イベントの追加**:

    - `element.addEventListener()` を使用して、要素にイベントリスナーを追加できます。
    これにより、クリックやマウスオーバーなどのイベントを処理できます。



    5. **ドキュメント全体の操作**:

    - `document.title` を使用してページのタイトルを変更したり、
    `document.body` を通じてページ全体の要素にアクセスしたりできます。



    `document` オブジェクトは、JavaScriptからウェブページの構造やコンテンツを制御し、
    動的な変更や操作を行うための重要な手段です。








    html上にある要素を操作するためにあるのね


    まあそうか



    html全体がdocumentってイメージでいいのかしらん


    element.addEventListener()やonclickで特定の要素のみでfnを呼び出すやり方を見ても


    そういうことなのかな




    普段何気なく使っているコードでも突き詰めていくと面白いですね


    開眼!JavaScript 言語仕様から学ぶJavaScriptの本質 [ コディ・リンドレー ]

    価格:2420円
    (2023/11/25 20:41時点)
    感想(0件)


    WEB DB PRESS Vol.125 [ WEB DB PRESS編集部編 ]

    価格:1628円
    (2023/11/14 12:46時点)
    感想(0件)


     

    アフィリエイトブログのくせにあまり商品宣伝はやらないのですが『開眼!Javascript」は良書です。

    私自身、この本を読んでからjavascriptの理解と言うか、おもしろさがわかるようになりました。


    エンジニアなりたて!という方には少し難しいと思いますが、

    すでにほかの言語で業務をこなしていて、でもなんかjavascriptって動き方が独特で苦手。。くらいのレベルの方にはおすすめです。

    きっといいjavascriptライフが送れると思います。
    ブログランキング・にほんブログ村へ
    【下記、広告です。クリックいただけると励みになります。】
    posted by モニー at 16:00| Comment(0) | プログラミング | このブログの読者になる | 更新情報をチェックする

    2023年11月30日

    日本が誇るプログラミング言語、Ruby!

    susan-q-yin-enx6829GjE0-unsplash.jpg
    世界中の人がプログラムを書き




    開発をしていますが



    そんなプログラミング言語の中にも





    日本人が作り出した言語がいくつかあることをご存じですか





    今でも絶賛現役のRubyです。




    今日はRubyについて質問してみます。






    質問

    rubyというプログラミング言語について解説してください。


    解答

    Ruby(ルビー)は、動的なオブジェクト指向スクリプト言語の一つで、シンプルかつ読みやすい構文、
    豊富な機能、そしてコードの簡潔さが特徴です。

    以下に、Rubyの主な特徴を解説します:


    ### 1. **オブジェクト指向:**

    - Rubyは純粋なオブジェクト指向プログラミング言語で、すべてがオブジェクトです。
    基本データ型や演算子もオブジェクトとして扱われ、メソッド呼び出しや継承などのオブジェクト指向プログラムの概念が
    広範に使用されます。


    ### 2. **ダック・タイピング:**

    - Rubyはダック・タイピングをサポートしており、オブジェクトの型よりも振る舞いに焦点を当てます。
    つまり、オブジェクトが特定のメソッドを持っているかどうかでそのオブジェクトの適切性を判断します。


    ### 3. **動的型付け:**

    - Rubyは動的型付け言語であり、変数の型は実行時に自動的に決まります。
    この特性により、柔軟性が高く、変数の型を意識せずにプログラムを書くことができます。


    ### 4. **豊富な標準ライブラリ:**

    - Rubyには豊富な標準ライブラリが含まれており、
    ファイル操作、ネットワーキング、データベース接続など、多くの一般的なタスクをサポートしています。


    ### 5. **動的メソッド定義:**

    - Rubyではクラスの定義やメソッドの追加が実行時に行えます。
    これにより、既存のクラスやオブジェクトに対して動的にメソッドを追加したり変更したりすることができます。


    ### 6. **豊富なフレームワーク:**

    - Rubyには、Web開発をはじめとするさまざまな用途に使えるフレームワークが豊富に存在します。
    代表的なものとしてRuby on Rails(Webアプリケーションフレームワーク)があります。


    Rubyはプログラミングの初学者からプロの開発者まで幅広く支持されており、可読性と生産性の高さから人気があります。
    また、Rubyの哲学は、プログラムの読みやすさとエレガントさに重点を置いており、それがRubyの魅力となっています。









    ダック・タイピングってなに?






    情弱にはつらい。。。。






    質問

    Rubyがサポートしているというダック・タイピングとはどういったものですか


    解答

    ダック・タイピング(Duck Typing)は、
    プログラムの動作や意図を、そのオブジェクトのメソッドやプロパティの存在に基づいて決定するプログラム設計のスタイルを指します。

    このアプローチでは、オブジェクトの型やクラスに関係なく、オブジェクトの振る舞い(メソッドやプロパティ)に焦点を当てます。


    "Duck Typing"(ダック・タイピング)という言葉は、
    「もしアヒルのように歩き、アヒルのように鳴くなら、それはアヒルである」という英語のことわざに由来しています。

    つまり、オブジェクトが特定のメソッドやプロパティを持っていれば、そのオブジェクトは特定の型である必要がありません。
    そのオブジェクトは、他の同じメソッドやプロパティを持つオブジェクトと同様に振る舞います。


    Rubyは、ダック・タイピングをサポートしています。
    Rubyでは、オブジェクトが特定のメソッドを持っているかどうかを確認せずに、そのメソッドを呼び出すことができます。
    もしメソッドが存在しない場合、実行時にエラーが発生します。
    この特性により、Rubyのコードは非常に柔軟で、オブジェクトの型に制約されずにプログラムを記述できます。



    以下は、ダック・タイピングの例として、Rubyで動的に型を判断するシンプルなコードの例です:


    ```ruby

     def print_info(object)
       puts object.name
     end

    class Duck
     attr_reader :name

     def initialize(name)
      @name = name
     end
    end


    class Dog
     attr_reader :name

     def initialize(name)
      @name = name
     end
    end


    duck = Duck.new("Donald")
    dog = Dog.new("Buddy")

    print_info(duck) # 出力: Donald
    print_info(dog) # 出力: Buddy

    ```



    この例では、`print_info`メソッドは、渡されたオブジェクトが`name`メソッドを持っているかを確認せずに、`name`メソッドを呼び出しています
    したがって、`Duck`クラスと`Dog`クラスの両方でこのメソッドを使用できます。
    これがダック・タイピングの概念の一例です。





    ざっと文章読んだ感じ危なそうな印象も受けますが



    コードを読むとかなり自由なコードですね。



    動的型付けの有用性を感じます。









    さらにRubyといえば切っても切れない関係があるRuby On Railsフレームワークについても質問したいと思います。





    そもそもRailsってなに。




    質問

    ruby on railsのrailsとは何ですか?


    解答

    "Rails"は、Ruby on Rails(通称Rails)として知られるWebアプリケーションフレームワークの一部で、
    Ruby言語で書かれたオープンソースのフレームワークです。

    このフレームワークは、Webアプリケーションの開発を迅速かつ効率的に行うことを可能にします。
    "Rails"とは、このフレームワークが提供する基本的な構造や機能を指します。


    以下は、Railsの主な特徴や機能です:

    ### 1. **MVCアーキテクチャ:**

    - RailsはMVC(Model-View-Controller)アーキテクチャを採用しています。
    これにより、アプリケーションのデータ(Model)、表示(View)、制御(Controller)を分離し、
    それぞれの役割に特化したコードを書くことができます。


    ### 2. **コード生成ツール:**

    - Railsには、コード生成ツール(Code Generators)が組み込まれており、
    コマンドを使ってモデル、ビュー、コントローラ、マイグレーション(データベースの変更を管理するためのスクリプト)などの
    基本的なコードを自動生成できます。


    ### 3. **ルーティング:**

    - RailsはRESTfulなルーティングをサポートしており、URLとアクション(コントローラ内のメソッド)を関連付けることが容易です。


    ### 4. **ORM(Object-Relational Mapping):**

    - RailsはActive Recordと呼ばれるORMパターンを採用しています。
    これにより、データベースとのやり取りをオブジェクト指向的な方法で行うことができます。


    ### 5. **強力なコミュニティと豊富なライブラリ:**

    - Railsは非常にアクティブなコミュニティを持っており、多くの拡張ライブラリやプラグインが開発されています。
    これにより、様々な機能を簡単に追加できます。


    Railsフレームワークは、開発者に対してDRY(Don't Repeat Yourself)原則やCoC(Convention over Configuration)原則を提供し
    、既定の設定や規約に従っていれば迅速な開発が可能です。

    これにより、アプリケーションの設定や構造についての意思決定を最小限に抑え、
    開発者はビジネスロジックに集中することができます。








    単にフレームワークのことを言うだけだったか(少し安心)




    MVCでORMが使えて豊富なライブラリがあるというだけで実用的なフレームワークであることが伺えます。








    Webフレームワークの中では2023年現在、絶頂期よりは下火になっているイメージもありますが、まだまだ頑張ってほしい言語です。







    まつもとゆきひろ コードの世界【電子書籍】[ まつもとゆきひろ ]

    価格:3520円
    (2023/10/30 22:56時点)
    感想(0件)


    ブログランキング・にほんブログ村へ
    【下記、広告です。クリックいただけると励みになります。】
    posted by モニー at 16:00| Comment(0) | プログラミング | このブログの読者になる | 更新情報をチェックする