WSLgを使ってwindows terminal上では文字化けするサーバーの文字を解読する
windows terminal使ってますか?euc-jpとかのサーバーに入って文字化けに悩まされていませんか?
そんなときにはteratermとか使ってたんですけど、windowsじゃなくwslのほうからsshで入りたくなることもありますよね?
なんと今のwslはguiに対応しているのでlinuxのterminal emulatorが使えてしまいます。つまりわざわざgitbashとかを使う必要はないということです。linux側に入ってるソフトをわざわざwindows側に入れなおして環境を無駄に汚す必要はありません。
wslのubuntuから以下をたたけばOKです
sudo apt install xfce4-terminal xfce4-terminal &
これでlinux側でターミナルが起動できるので設定から好きな文字コードに変更してxfce4-terminalを再起動すれば文字化けともおさらばです。
そもそもwindows terminalが文字コードの変更に対応してくれていればこんな手間をかけずに済むのですが…というか文字コード難しすぎるので全部utf8にしてくれ
参考
Rubyの"graphql-client"使ってみた
前提
叩きたいAPIにGraphQLが用意されており、折角なので触ってみる
実装内容
Gemfileに以下を記述して、gemをinstall
gem "graphql-client"
APIのラッパーを作成する
require "graphql/client" require "graphql/client/http" module Api # GraphQLのエンドポイント、ヘッダー情報作成 HTTP = GraphQL::Client::HTTP.new(ENV['END_POINT']) do def headers(context) { "#{ENV['HEADER_KEY']}": ENV['HEADER_VALUE'] } end end # 初期化で、最新のネットワーク取得 & リクエスト Schema = GraphQL::Client.load_schema(HTTP) Client = GraphQL::Client.new(schema: Schema, execute: HTTP) end
実行してみる
Query = Api::Client.parse <<-'GRAPHQL' query { hero { name } } GRAPHQL result = Api::Client.query(Query) p result =begin #<GraphQL::Client::Response:0x0000ffff9bc01408 @data=#<#<Module:0x0000ffffa0125e58>::Query viewer=...>, @errors=#<GraphQL::Client::Errors @messages={} @details={}>, @extensions=nil, @original_hash={"xxxx"=>{"xxxxx"=>{"xxxxx"=>"xxxxx", "name"=>"xxxx"}}}> =end
感想
GraphQL理解する良い機会になった.
APIサーバーの方も作ってみようかな
参考サイト
RubyでCSVの文字コードをsjisにして出力する
前提
コード
csv_string = CSV.generate(encoding: Encoding::SJIS, force_quotes: true) do |csv| csv << ["ホゲホゲええ"] end csv_string.encoding # => #<Encoding:Windows-31J>
感想
- これからも使うことになりそうなのでメモ
参考文献
CSV.generateでUTF-8からShift−JISに変換したときの文字コード変換エラーを回避する - 行動すれば次の現実
UbuntuServerで、ファイルサーバ(NAS)立ち上げてみた
実行環境
- Ubuntu 22.04 LTS
経緯
やっぱり、サーバの勉強ついでにもなるし
プライベートなファイルを保存するのに、ファイルサーバ欲しいよな???
手順
アップデート(最新状態にする)
sudo apt update
アップグレードできるpackageがありますよと出たら、以下のコマンド実行
sudo apt upgrade
sambaのインストール(ファイルサーバーを実現するためのソフトウェア)
sudo apt install samba
sambaにユーザーを登録する(Ubuntuに登録されているアカウント)
sudo pdbedit -a [ユーザー名]
共有するディレクトリを作成
mkdir -p /home/ubuntu/share
アクセス権限設定
sudo chmod 0777 /home/ubuntu/share
sambaの設定
sudo vi /etc/samba/smb.conf
以下追記
[global] dos charset = CP932 # Windows側で利用されている文字コード指定 unix charset = UTF-8 # UNIX上のファイルシステムに用いられている文字 ... # 行の初めのセミコロンはずす # 自身のubuntuのIPアドレスを書き込む(ip adress showで見れる) interfaces = 192.168.XX.0/24 xxxx ... bind interfaces only = yes # 行の初めについていたセミコロンはずす map to guest = bad User # 追記 ... [share] # 表示名 他のデバイスからアクセスする際に表示される path = /home/ubuntu/share writeable = yes guest ok = yes guest only = yes create mode = 0777 directory mode = 0777
書き込み後
testparm
↑でsmb.confに誤りがないかチェック
sambaの実行
sudo systemctl restart smbd nmbd
↑smb.confの編集が反映される
sambaは、smbdとnmbdの2つのデーモンにより動いている
sbmd:クライアントにファイル共有と印刷サービスを提供するデーモン
nmbd:NetBIOSネームサービス(名前解決)とブラウジング機能を提供するデーモン
sudo systemctl enable smbd nmbd
↑Ubuntuの起動時に自動で実行される
これで、同じネットワーク内の他のデバイスなら
ファイルにアクセスできるようになる
iPhoneからアクセス
感想
次は、外部アクセスできるように、
設定できるようにしたいな
いっぱい画像保存するよ〜
参考文献
Rubyのメソッドの引数がHashの時、fetch使わんやつおる??
初期化の際の引数にハッシュを使う
「 | | 」を使った場合
def initialize(args) @id = args[:id] || 1 @name = args[:name] || "misomiso" end
↑これだと、falseとnilの区別ができねえじゃねえか!
「fetch」を使うと...
def initialize(args) @id = args.fetch(:id, 1) @name = args.fetch(:name, "misomiso") @flag = args.fetch(:flag, true) end
fetchでええやん
参考文献
オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方 | Sandi Metz, 髙山泰基 | 工学 | Kindleストア | Amazon
rmagickの使い方まとめ
rmagic使い方
### ファイルを読み込む image_data = Magick::Image.read(img.path).first ### ファイルのフォーマット(PNG, JPG etc...) image_data.format ### ファイルのサイズ image_data.filesize
疑問点
最初は↓
Magick::Image.from_blob(buffer).shift
でファイルを読み込んでいたのだが、
「ai」ファイルが「pdf」判定されていた
.readを使うことによってちゃんと判定してくれたよん
原因わかったら、書き足します
CentOS8 で ruby gem "rmagick" インストール
Linuxに"Image Magic" をインストール
$ yum install -y libwebp libwebp-devel $ wget https://imagemagick.org/download/ImageMagick.tar.gz $ tar zxvf ImageMagick.tar.gz # makefileにルールが追加される $ ./configure # コンパイル $ make # コンパイルしたプログラムをインストール $ sudo make install
"rmagic"をインストール
# MagickCore.pcがあるディレクトリを環境変数に入れる $ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig $ bundle install
感想
クソ時間かかったのでメモ
参考文献
RMagick をレンタルサーバーにインストールするのではまった | EasyRamble