日記

こんにちは、しきゆらです。
今回は、前回に引き続き自作PCの話です。

前回は選んだパーツについて書きました。
今回は、実際に組み込んでいきます。

 

日記

こんにちは、しきゆらです。
今回は、タイトル通り知識もない中で自作PCに挑戦したので、その様子をメモしておきます。

はじめに

単純に組み立てるだけであればそこまで難しい知識は必要ありません。
各パーツがどのような役割なのか程度はわかっていたほうがいいと思いますが、その程度でなんとかなります。
しかも、最近はYouTubeなどで「自作PC」と検索するとたくさん参考になりそうな動画を見ることができます。
好きな動画・YouTuber等を選びながら、参考にするものをあらかじめ決めておき大まかな流れをつかんでおくと、躓くことが少なくなると思います。

Mac,環境構築

こんにちは、しきゆらです。
今回は、ターミナルのシェルをbashからfishへ変更したので、その方法などをメモしておきます。
シェルに関しては、下記サイト等調べると様々な情報が出てくるのでそのへんで確認してみてください。

  1. シェルとは・・・

シェル(shell)とは、UNIX系OSでコマンド操作の基本的なルールを示すもののことです。

シェル入門

今回は、複数あるシェルの中でもfishというものを導入していきます。

Ruby

こんにちは、しきゆらです。
今回は、タイトル通りものづくりの中でよく使うであろうrootパスを取得する方法をメモしておきます。

といっても、今回は「すべてのコマンドや実行はrootディレクトリから行う」という方針で考えています。
これを決めておけば、簡単です。

方法

すべてrootディレクトリから行うと決めてしまえば、難しいことはありません。
RubyさんはDirというディレクトリ操作のためのクラスや、Pathnameというパス名操作のためのクラスがあります。
これらを使えばよいですね。

pwd -> String
カレントディレクトリのフルパスを文字列で返します。

https://docs.ruby-lang.org/ja/latest/method/Dir/s/getwd.html

class Pathname
パス名をオブジェクト指向らしく扱うクラスです。

https://docs.ruby-lang.org/ja/latest/class/Pathname.html

コードは以下の通り。

ROOT_PATH = Pathname.new(Dir.pwd)

Dir.pwdは作業中のディレクトリを取得できるので、Pathnameで囲んでおきます。
これを定義しておけば、読み込みたいファイルをjoinでつなげていけばいいので便利。

 

まとめ

今回は、rootパスを取得する方法をメモしました。
といっても、コマンド実行しているディレクトリをrootパスとして決め撃ちしているので本来の指定方法ではないのかもしれません。

いい方法があれば教えてください。

 

今回は、ここまで。
おわり

JavaScript

こんにちは、しきゆらです。
今回は、DOMに対してクラス名を外す処理とつける処理を1行でやる方法を知ったのでメモしておきます。

DOMへのクラス追加・削除

DOMに対してクラスを追加・削除するには、それぞれadd/removeというメソッドが定義されています。
これらを使えば、動的にDOMのクラスを変更することができます。

しかし、例えば既存のAというクラスを外してBというクラスをつける
という処理を書く場合、素直に書くならば以下のように2行になってしまいます。

dom.classList.remove('A');
dom.classList.add('B');

 

クラスの追加・削除をまとめる

上記のようなコードを1行で書くには、以下の方法で行えます。

dom.classList.replace('A', 'B');

replace( oldClass, newClass )
既存のクラスを新しいクラスで置き換えます。
Element.classList – MDN

MDNを眺めていて見つけました。
知っていなくてもなんとかなるけど、知っているとコードがスッキリするやつですね。
知っているつもりでも、改めて見てみると知らないことがあるので、時々見てみるといいかもしれません。

 

まとめ

今回は、DOMの追加・削除を1行で行うメソッドを発見したのでメモしてみました。
置き換えるという方法でできる処理は1行で書けるので、知っていると少しだけコードが短くなると思います。

 

今回は、ここまで。
おわり

JavaScript

こんにちは、しきゆらです。
今回は、以前に少しだけ触れたparcelを使って開発環境を構築してみました。
また、個人的に以前まで疑問だった、JSとSCSSを用いた場合にどう管理するのか問題を解決することができたので合わせてメモしておきます。

parcelに関しては、以前少しだけ記事にしたことがありました。
=> 以前の記事:【JS】フロントエンド界隈で話題のparcelことはじめ
以前まではWebpackを利用していましたが、難解な設定や多様なプラグイン等、気軽に使うにはハードルが高い状況でした。
そんな中で、parcelは面倒で難解な設定ファイルを作成せずとも、自動で関連するファイルを監視し、変更があれば適宜処理を走らせてくれます。

そんなparcelさんですが、実際にparcelを使ったものづくりをするときにどうすればいいのかわからない部分がありました。
それは、SCSSを使った場合の読み込み方です。
HTMLからSCSSを読み込んでも、ブラウザは反映してくれません。
それをどう読み込めるようにするのかが疑問でした。
これを解決することができたので、合わせて記録しておきます。

Mac

こんにちは、しきゆらです。

今回は、(ほぼ)外部からアプリをインストールせずにデフォルトで入っているアプリだけで画像にモザイク・ぼかしをかける方法をメモしておきます。
念のために書いておくと、画像編集専用のアプリを使わずにモザイクをかける、ということを目指しているのがこの記事。
こまこまとたくさんのアプリを入れたくない!という人は是非。

今回は、以下のサイトを参考にコードを修正したりしています。

macで画像加工はプレビュー.appで決まり!文字の回転やぼかし(ガウス)加工の方法 | mac野郎なのか

http://fanblogs.jp/macyarounanoka/archive/268/0#clipboard-image-gaussian-blur

Mac

こんにちは、しきゆらです。
改めて、本年もよろしくお願いします。

 

今回は、Macでのメーラである3種類のアプリ

  • Mac純正メール
  • AirMail
  • Spark

を実際に使ってみて、個人的感想をメモしておきます。
メーラーを探している人の参考になれば、と思います。

 

なお、何度か登場していますが、私が使用しているMacのスペックを書いておきます。
参考程度に。

  • MacBook Pro Retina, 13-inch, Early 2015
  • CPU: Intel Core i5(2.7GHz)
  • メモリ:8GB DDR3 1867MHz

 

未分類

こんにちは、しきゆらです。

今回は、TeXで吐き出したPDFの目次などにアンカーを貼る方法を調べたので記録しておきます。

 

動機

ネット上からPDFをダウンロードしてくると、時々PDFないにアンカーが貼ってあるものがあります。

ページ数が多い場合はとても便利ですよね。

これを、自分の環境でも作るにはどうすればいいのか知りたくなったので調べてみました。

調べてみると、以下のページがヒット。

ハイパーリンク付きLaTeX文書 – 明治大学

ここを参考に見ていきます。

 

インストール方法

TeXは、便利なパッケージが豊富に用意されています。

ファイル内にアンカーを貼るためのものも存在するようです。

今回利用するのは「hyperref」というものです。

 

上記サイトから、hyperrefとPXjahyperをダウンロードしておきます。

TeXパッケージは、TeXがわかる場所であればどこにおいても問題ないようです。

今回は、「/usr/local/texlive/2018basic/texmf-dist/tex/latex/hyperref」に設置しました。

PXjahyperは「/usr/local/texlive/2018basic/texmf-dist/tex/platex/pxjahyper」に設置しました。

 

使い方

普通のTeXパッケージと同じように

\usepackage[dvipdfmx]{hyperref}
\usepackage{pxjahyper}

を追加するだけ。

これだけで、目次や文献参照部分には勝手にアンカーがついてくれます。

 

なお、アンカーがある部分の色に赤線が追加されます。

これに関しては、設定で好みに指定することができます。

設定項目に関しては、こちらに項目やデフォルト値が書かれていますので、適宜設定してください。

 

あえて強調したくない場合は、以下のような設定にしておくと良いかと思います。

\hypersetup{
setpagesize=false,
 bookmarksnumbered=true,%
 bookmarksopen=true,%
 colorlinks=true,%
 linkcolor=black,
 citecolor=black,
}

 

 

まとめ

今回は、TeXで作成したPDFにアンカーを設置する方法を調べてみました。

親切な人に感謝です。

 

 

おわり

Ruby

こんにちは、しきゆらです。

今回は、タイトル通りmysql2のインストールに失敗したのをなんとかする方法をメモしておきます。

 

環境としては、

  • Mac
  • Ruby2.6.0
  • Rails5.2.2
  • MySQL8.0.13

という状態。

 

普通にbundle installすると、エラーが。

Fetching mysql2 0.5.2
Installing mysql2 0.5.2 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/user_name/path/to/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2/ext/mysql2
/usr/local/Ruby/bin/ruby -I /usr/local/Ruby/lib/ruby/2.6.0 -r ./siteconf20181231-27997-6j2jh2.rb extconf.rb
--with-ldflags\=-L/usr/local/opt/openssl/lib\ --with-cppflags\=-I/usr/local/opt/openssl/include
checking for rb_absint_size()... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/usr/local/Ruby/bin/$(RUBY_BASE_NAME)
/usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:467:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:552:in `try_link0'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:570:in `try_link'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:782:in `try_func'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:1069:in `block in have_func'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:959:in `block in checking_for'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:361:in `block (2 levels) in postpone'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:331:in `open'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:361:in `block in postpone'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:331:in `open'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:357:in `postpone'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:958:in `checking_for'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:1068:in `have_func'
    from extconf.rb:25:in `<main>'

To see why this extension failed to compile, please check the mkmf.log which can be found here:

/Users/user_name/path/to/vendor/bundle/ruby/2.6.0/extensions/x86_64-darwin-18/2.6.0-static/mysql2-0.5.2/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in
/Users/user_name/path/to/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2 for inspection.
Results logged to
/Users/user_name/path/to/vendor/bundle/ruby/2.6.0/extensions/x86_64-darwin-18/2.6.0-static/mysql2-0.5.2/gem_make.out

An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  mysql2

mysql2のインストールに失敗したようです。

調べてみると、以下のような解決方法がいくつも提示されていました。

 

以下のコードを打ち込む。

bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include

RailsにMySQLを導入したらかなりハマった件について – 大学生Webエンジニアの記録

 

調べてみると、どうやらbundlerにはgemをビルドするときにフラグやオプションを渡すことができる機能を持っているようです。

上記コードは、mysql2のビルドオプションを渡すコードのようです。

Build Options

You can use bundle config to give Bundler the flags to pass to the gem installer every time bundler tries to install a particular gem.

bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config

Bundler: bundle config – Bundler Docs

 

似たコードが書かれています。

オプションを追加し、再びbundle install。

・・・エラー直らず。

 

途方に暮れていると、こんな情報が。

ログ見たら –with-cppflags オプションに対応してないとのこと。
ldflagsのみで実行してみる

bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"

mysqlのbundle installに失敗する – Qiita

 

なんと、cppflagsはいらないようです。

実際、上記の設定後にbundle install すると問題なくインストールできました。

$ bundle install
...
Fetching mysql2 0.5.2
Installing mysql2 0.5.2 with native extensions
Fetching pry 0.12.2
...

 

 

先人たちの体験談には頭が上がりません。

感謝です。

 

 

今回はここまで。

おわり