sumikko engineer blog

すみっこが落ち着くエンジニアのブログです。

net/sftp

net/sftpを利用する機会があったので作ってみました。ファイルの存在チェックができるメソッドがなかったので微妙な実装。 class Sftp # ファイルの存在チェック def self.file_exists?(dir, file_name) file_exists = false exec do |sftp| file_names = []…

curlメモ

ssl古すぎて下記のコマンドを実行 curl --cipher 'DEFAULT:!DH' POST -H "Content-Type: application/json" -d "{"member_id" : 1 }" https://example.com

一時停止プロセスの再開

jobs fg

rails migration

migrationするたびに調べるのがめんどくさいのでメモ。optionも使う場合はapi documentを見る。 コマンド rails generate migration <migration_name> テーブル追加 # 簡単に書けるやり方 create_table(:members) do |t| t.column :name, :string, limit: 60 end # ひとつず</migration_name>…

rubyで営業日を取得する

メンテナンスされるかわからないgemを使いたくなかったので簡単に自作しました。 祝日、年末やその他の休みを好き勝手に入れたい場合はpublic_holidaysをメンテをしていく。 月~金までが営業日 祝日、年末は休み require 'singleton' require 'date' class …

Slackに投稿する

たまに書くのでコピペできるようにしておく。 Google Apps Script class Slack { constructor() { this.slackUrl = "slackのパス" this.channel = "#channel" this.icon = ":penguin" this.userName = 'penguin' } sendMessage(text) { var payload={ "text"…

scpでコピーしたくないファイル・ディレクトリを除外する

Google検索してもrsync使えば?という記事が多いのでメモ。 lsコマンド実行後にgrepで除外してscpの引数に入れることで対応。 scp -r `ls | grep -v not_published_file_name | grep -v .not_published_file_directory` ${HOST_USER}@${HOST}:${PATH}

AWS cloudwatchlogsのサブスクリプションフィルターのlambdaテスト

AWSのcloudwatchlogsのサブスクリプションフィルターから呼び出されるlambdaをテストするときにやりにくかったのでメモ。 本家マニュアルのお言葉 サブスクリプションフィルタを介して宛先サービスに送信されるログは、Base64 でエンコードされ、gzip 形式で…

eclipse

基本設定 // コメントの日本語が文字化け 一般 > 外観 > 色とフォント > テキストフォント > 日本語に対応したフォント(MS ゴシックなど) // タブ・空白を表示 一般 > エディター > テキストエディター > 空白文字を表示にチェック // gitの差分表…

dockerコンテナからhostにリクエストできるようにする

dokcer-composeでアプリを立ち上げていましたが、外部サービスにアクセスする処理にスタブサーバーを使いたかったので対応しました。docker-composeに組み込んでもいいのですが、それをやるほどではなかったので組み込まなかったです。 docker host内でプラ…

Javascript/Date.toJSON

日付をJavascriptで取得してサーバーにリクエストしたときに日付がずれてしまったので、その対応。原因はtoJSONメソッドを呼ぶとUTCに変換されてしまうため。そのため日付にJST分足して対応した。下記の例は2020-11-25日に実行。 const now = new Date(); co…

Pseudo-terminal will not be allocated because stdin is not a terminal

デプロイタスクを書いていたらエラーが発生しました。sshを多段階で実行したら最後に実行した箇所で端末が割り当てられないのが原因だそうです。-tオプションを付ければいいのですが、実行してもうまくいかないことがあります。その場合は-tオプションを重ね…

このWi-Fiネットワークでは、以前のセキュリティ標準が使用されています。別のネットワークに接続することをお勧めします

wifiが突然落ちて、もう一度つなごうとしたら「このWi-Fiネットワークでは、以前のセキュリティ標準が使用されています。別のネットワークに接続することをお勧めします」が出てきました。もう一度つないでもちょくちょく落ちていくので、下記の対応をしまし…

jenkins/pipeline

最低限動かすのに必要なスクリプトのメモ。 cronの設定やビルド数の制御などもjenkinsファイルにそのまま書いたほうがGUIで入力しなくて済むしポータブル。 postセクションの「failure」は失敗したときのみ実行される。「cleanup 」はステップの成否にかかわ…

Docker/メモ

Dockerコマンドでよく使うメモ # imageの一覧 docker images # コンテナの一覧 docker ps -a # 停止しているコンテナの起動 docker start <container_name> or <container_id> # 起動しているコンテナで標準入力 docker exec -it <container_name> or <container_id> /bin/bash # コンテナのログ docker logs <container_name> or <container_id> # image</container_id></container_name></container_id></container_name></container_id></container_name>…

Angular/動的コンポーネント

ngComponentOutletを使う。Angularではパスとコンポーネントが紐づいて表示されるので、パスはそのままにしてビューと紐づくコンポーネントのみ変えたい場合(タブメニュー等)に使える。動的テンプレートは表示しているコンポーネントに紐づくのでテンプレ…

Angular/動的テンプレート

NgTemplateOutletを使う。ngTemplateOutletContextはテンプレートに対して値を埋め込みたいときに使える。ngTemplateOutletContextは$implicitをキーにしてletで$implicitに指定したオブジェクトを取得することができる。指定した値を取得したいときはlet-va…

webpack/file-replace-loader

webpackを使っていて本番環境、開発環境でバンドルするファイルを変えたい場合(外部のタグを呼び出すときのキーを分けたいなど)にプログラムでisProductionメソッド等を定義して設定変更を散らかさないようにしたくないときに使います。バンドルするファイ…

Angular/動的にscriptを読み込む

外部のタグを埋め込むときにAngular内部だとscriptタグが自動で削除されてしまい、またタグを置く箇所がAngularアプリケーションの管理外の箇所「head」タグと「body」タグの後ろなどで困りました。SPAで作成しているので不要になったらタグも削除したいので…

Angularのお役立ち記事

Angularの理解を深める記事をメモ。 Routerの理解 indepth.dev リロード URLとコンポーネントが紐づいておりURLが変更にならないとコンポーネントがリフレッシュされないので、それの対応策。個人的にはリクエストパラメータにdateを数値で表現することでURL…

ActiveRecord::StatementInvalid: Mysql2::Error: Table xxxx

データベースを作り替えるのに失敗したときに、rspecのテストを実行したときに発生したエラー。 テーブルがないよと怒られるので下記コマンドを実行する。 bundle exec rake db:test:prepare bundle exec rake db:migrate:reset RAILS_ENV=test

indexeddb

概要 同一生成元ポリシーのためアプリケーションが別の生成元のデータにアクセスできないようになっている。 また従来のRDBではなくキーでインデックス付けされたオブジェクトを保存および取り出しを行う。 実装の流れ データベースを開く(必要があればオブ…

Angular/ngx-pagination

概要 Angularでページネーションを実装する機会があったのでメモ。ngx-bootstrapのページネーションではないので注意。PaginatePipe、PaginationControlsComponent、PaginationControlsDirectiveの3つの要素からなる。PaginatePipe、PaginationControlsCompo…

rails/日付操作

月末・月初はよく忘れるのでメモ now = Time.current * 月初 now.beginning_of_month * 月末 now.end_of_month * 昨日 now.yesterday * 翌日 now.tomorrow * N日月年前 now.ago(3.day) now.ago(3.month) now.ago(3.year) * N日月年後 now.since(3.day) now.s…

ポケモンカード/悪デッキ

ブラッキー&ダークライ、マニューラデッキ 環境が変わってしまったのでメモ。 マニューラGXの特性「シャドーコネクション」が戦略の肝。 マニューラGXの特性「シャドーコネクション」であくエネルギーを別のポケモンに付け替えることができるので、1ターン…

node/axios

PromiseベースのHTTPクライアント。標準モジュールのhttpモジュールを使うとコールバック地獄になるのでこちらを使用する。requestsはdeprecateされていたので使用しない。 メソッド 下記のようなインスタンスメソッドが定義されているので用途に合ったもの…

node/http

標準モジュールでのサーバーの作り方とクライアントのつくりかたのまとめです。下記5つのクラスからなるhttpモジュールを使用しています。npm installするのがめんどくさいので標準モジュールで作っています。めんどくさいのでお勧めしません。 項目 内容 Ag…

MySQL/変数

ユーザ定義変数とシステム変数(セッション変数、グローバル変数)の2種類がある。 ユーザ定義変数 ユーザ定義変数はセッション固有の変数のため他のクライアントから見えることはない。下記のように「@」を変数名につけ、SETステートメントを発行する。 SET…

MySQLで「is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts」のエラーが発生

原因はMySQLで接続回数失敗の閾値を超えたときにホストが接続できないようにしてくれたため。解消方法は下記のコマンドを実行する。 FLUSH HOSTS これをやったところで原因が解消されなければ同じことが発生するだけなので、このエラーが発生する以前を調査…

Capistranoのローカルコピー

Capistranoで社内のgitサーバーからソースコードを取得してきてアプリケーションサーバーへデプロイしようとしたら、アプリケーションサーバーからgitサーバーに通信ができなくて困った。セキュリティ的にアプリケーションサーバーから社内ネットワークにア…