Sassyブログ

埼玉県在住のシステムエンジニアです。多ジャンルなブログですが、基本的にはIT関連の内容を中心に他のちょいちょい他ジャンルの記事も発信していきます。

IT・ソフトウェア

Djangoの管理画面(/admin)にアクションを追加する方法

始めに 今回はDjangoの管理画面にアクションを追加する方法について書いていきます。 デフォルトではレコードの削除アクションしかないので、それ以外で何かアクションが欲しい場合は自分で作成しなくてはなりません。 それにしてもDjangoの管理画面は拡張性…

【備忘録】.gitignoreへ後から管理対象を追加してgit管理対象外とする方法

これ結構やり方忘れてしまうので備忘録として残します。 .gitignoreファイルに対象外にしたいファイルまたはディレクトリを追加します。 そしたら以下のコマンドを叩いて削除を行います。 git rm --cached [削除対象のファイル名] 「-r」オプションを付ける…

【Python】django-maintenance-modeを使ってメンテナンスモード切替え機能を爆速に開発する

始めに 今回はdjango-maintenance-modeというものを知ったのでDjnagoアプリにインストールして、稼働しているサービスでメンテナンスモード機能を取り込んでみたいと思います。 github.com 動作環境 Windows10 python 3.8 django 3.2 django-maintenance-mod…

TypeScript Compiler APIを使ってimportのモジュールパスを取得する

今回は前回の延長線上でASTからimport宣言のモジュールパスを取得してみようと思います。 前回の記事を見ていない方はこちらをどうぞ www.sassy-blog.com 前回のソースコードから以下のように変更しました。 testTscApi/test.tsではimport文を適当に増やして…

TypeScript Compiler APIを触ってみた

始めに 本記事で話す範囲 TypeScript Compiler APIとは何か? TypeScript Compiler APIを使うと具体的に何ができるのか? ASTによるコード解析を試してみる ASTから元のコードを生成してみる 最後に 始めに 今回はTypeScript Compiler APIというものについて…

【JavaScript】default export、named exportについての話

これは完全に私が普段の開発でTypeScriptを使用していて「あ、この場合はやっぱりdeafult exportがいいなとか、こっちの場合はnamed exportの方がいいな」という個人的な意見で書いております。 default exportの良さ 今のところ業務でコードを書いていてdef…

DjangoでGoogleWorkspace(旧: GSuite)で作成したグループアドレスでメール送信する方法

概要 登録完了後に送信するメールだったり、何かしらのお知らせメールだったり、アプリケーションからサービス用のメールアドレスでユーザーへ送りたい場合ってありますよね。 個人で開発していたりしたら、そのまま専用のアカウントを作って設定した方が良…

DjangoからGmailでメール送信する場合はアプリパスワードを発行しよう

今回はdjangoアプリからメール送信でgmailのsmtpサーバーを使うときのベストプラクティスな設定方法を書こうと思います。 環境 Django3.1 Python3.8 GmailはGoogleWorkspaceで設定している会社ドメインのメールアドレスを使用しています。 djangoドキュメン…

social-auth-app-djangoを本番で使う際にsettings.pyへ「SOCIAL_AUTH_REDIRECT_IS_HTTPS=True」を追加してhttpsプロトコルの使用を強制するようにしよう

DjnagoでGoogleやFackbook、Twitter、Yahooログインを実装する場合にsocial-auth-app-djangoというライブラリを使用する方はおおいのではないでしょうか? 今回はsocial-auth-app-djangoを使ってソーシャル認証機能を実装する際に知っておくと問題解決がスム…

レンダリングブロックせずにCSSを非同期的に読み込ませる簡単なテクニック

はじめに preloadやpreconnectのResourse Hintsを使う? media属性とonload属性を使った非同期読み込みテクニック 最後に はじめに CSSは画面描画をブロックするリソースとして扱われます。 developers.google.com 今回はパフォーマンス改善の一環としてCSS…

ブラウザやタブを閉じたり、画面内でコンテンツを切り替えたりするときに非同期処理をしたい場合はsendBeacon使いましょう

掲題の通りなのですが、ブラウザやタブを閉じるタイミングや画面内で別コンテンツに切り替える場合に その時の状態のデータをWebAPIリクエストしたりしたい場合ってありますよね? JavaScriptのAjax通信なんかは基本非同期なので、これをそのままブラウザや…

Railsがmimemagicというコピーレフトライセンスのライブラリに依存していた件について

現場はバックエンドをRuby on Railsで開発しているのですが、 本日CIが失敗してすべての環境にデプロイすることができなくなってしまいました。 話し合いをチャットで見ていると、どうやらRailsが依存しているこれが原因のようです。 github.com mimemagicの…

スタートアップ企業が顧客を獲得するための方法

どうもSassyです。 最近こんな本を読んでいます。 トラクション スタートアップが顧客をつかむ19のチャネル [ ガブリエル・ワインバーグ ]価格:2420円(税込、送料無料) (2021/3/22時点)楽天で購入 本自体は2015年のものなので6年くらい前ですかね。 読み始…

ワンタイムパスワードの自動入力によるセキュリティリスク

少し前に勉強会で触れた記事でちょっと気になる記事を見かけました。 akaki.io よく見かけるパスワードを自動入力してくれる機能です。 このワンタイムパスワード自動入力機能がiOS12から搭載されているようで、 この機能を悪用したフィッシングサイトが正規…

Webサービスをリリースして学んだこと

はじめに 先日「Hirameki」という小さいWebサービスをリリースしました。 hirameki.cocolofun.com このサービスを開発する前にも別のサービスを基本的には1人で開発を行っていたのですが、 現在開発が止まっている状態です。 なぜこのHiramekiというサービ…

Hiramekiという新規事業創出のためのアイデア思考ツールをリリースしました!

サービス名は「Hirameki」です。 まだまだ小さいサービスですが、アイディア思考ツールでURLを共有することで複数人でリアルタイムにアイディア出しが行えます。 無料で使え今後少しづつ改修を加えていく予定です。 リンク先に使い方の説明もありますので、…

デジタル庁とは何なのか?

デジタル庁は2021年9月1日から始まる行政機関である。 行政のDXを推進して行政業務のIT化を目指す。 人員は500人ほどでそのうち100人ほどは民間人から構成される予定である。 なぜ民間人から募集をかけているのかと言うと、専門性が高い分野のため民間人から…

ソフトウェア・ファーストを読んでみた

1章:ソフトウェア・ファースト 2章: IT・ネットの“20年戦争”に負けた日本の課題と光明 3章:ソフトウェア・ファーストの実践に必要な変革 最後に 最近は技術書ではなく、こういったビジネス書を中心に読んでどんな手法があるかを知り、 自社の事業に活かせ…

Djangoの本番環境デプロイについて

概要 現在、自社プロダクトで Django と DjangoChannels を使用して双方向通信を行う小さなサービスを開発しています。 恐らくDjango単体での本番環境デプロイは色々な記事があるかと思いますが、今回はNginx + Daphne + Django + DjangoChannels でやります…

Apacheのssl_moduleをインストールする

1.モジュールの確認 1-1.mod_sslがあるか確認する 2.mod_ssl 2-1.mod_sslのインストール 1.モジュールの確認 1-1.mod_sslがあるか確認する まずはいったんモジュールが存在しているかを確認する httpd -M 2.mod_ssl 2-1.mod_sslのインストール モジュールが…

Let's Encryptを利用してWebサイトをHTTPS化した

弊社のサイトにてHTTPSアクセスを行えるようにしました。 今回使用するSSL証明書はLet's Encryptという、電子フロンティア財団が運営し発行している証明書です。 無料であり、簡単に導入ができます。 また、無料ということもあってか有効期限が3か月と短い…

rsyncを使ってフォルダの同期をとる

弊社WebサイトはGitで管理しており、まだ立ち上げたばかりのため、 暫定的にrsyncを用いてサーバー上にCloneしたリポジトリとルートディレクトリの同期を取っている。 とまあ、以下に使い方を記載しておく。 書式 rsync [オプション] [コピー元] [コピー先] …

GoogleMapを使ってみよう!

目次 目次 必要なもの サンプルコード サンプルコード解説 ライブラリの読み込み コールバック関数の定義 位置情報の定義 Map情報の定義 Mapインスタンスの生成 Mapインスタンスに定義情報を設定 GoogleMaps APIリファレンス 現在、個人でWebサイト制作をや…

PlayFrameworkで一時ファイルを作成せずに、レスポンスで返す方法

あるファイルをレスポンスで返したい。 けど、sendFile()を使用する場合、Fileインスタンスを引数に与えなくてはいけないし、 Fileインスタンスを作成するとなると物理ファイルのパスを指定したりしないとならない。 そしたら、一時的にファイルを作成しない…

PlayFramework2.6.xでフォームからPOST送信したら403が返ってきたら

PlayFramework2.6.xでフォームからPOST送信した際に、 下記警告が発生し403(Unauthorized)が返ってきた。 [warn] p.filters.CSRF - [CSRF] Check failed because no token found in headers for /login?userId=test&password=test CSRF対策のチェックでPOST…

シェルスクリプトの実行で No such file or directory が発生した場合の対処法

環境 エラー内容 原因 対処法 コマンド sedとは? オプションとスクリプトコマンドの解説 最後に 環境 CentOS6.8 エラー内容 -bash: ./run_mock.sh: /bin/bash^M: bad interpreter: No such file or directory 原因 上記、エラーの原因はシェルスクリプトの…

PlayFrameworkアプリをsystemdでデーモン化しようとした

目次 目次 まず初めに Systemdとは 環境 前提 手順 1.アプリケーションビルド 2.生成されたzipを確認 3.Unit定義ファイルの作成 4.今回作成したUnit定義ファイル 5.パーミッション設定 6.再起動 7.Playアプリケーション起動 8.動作確認 9.Playアプリケーショ…

スクラム開発の基礎について

最近、私の現場で本格的にスクラム開発を取り入れてきました。 スクラム開発はいろいろな現場で行ってきましたが、しっかり勉強する機会がなかったので1から再度勉強しなおしました。 その時のメモ内容を備忘録としてまとめます。 まず勉強に使用した資料は…

MySQLパスワードが分からない場合の対処法

目次 目次 MySQL Version 状況 対処手順 1. MySQLを停止 2. MySQLをセーフティモードで起動 3. MySQLへログイン 4. 「mysql」データベースを指定 5.テーブルを確認する。 6. 現在登録されているユーザーを確認 7. 既存のパスワードの変更 8. MySQLログアウト…

href属性に設定される「javascript:void(0)」とは?

今回はフロントの小話です。 私自身サーバーサイドのエンジニアのため、 あまり意識してこなかったのですが、 たまにHTMLで以下のような記述を見かけます。 <a href="javascript:void(0);" id="btn" class="btn" onclick="sample();">~</a> href属性に設定されている「javascript:void(0);」という記述 まだエンジニア歴の浅い方は気にな…