20200627のMacに関する記事は6件です。

Macで現在日時をクリップボードにセットする

やりたいこと

  • 下の画像のようなメモをTyporaで書いているんだが、
  • 日時# 2020-06-27 18:28:41の部分を書くのが面倒くさいのでなんとかしたい スクリーンショット 2020-06-27 19.08.35.png

スクリプトエディタを起動して

スクリーンショット 2020-06-27 18.40.32.png

ソース

  • dateのフォーマットはお好きにどうぞ
set the clipboard to (do shell script "date '+# %Y-%m-%d %H:%M:%S'")

保存する

  • ファイルフォーマットは アプリケーション にする スクリーンショット 2020-06-27 18.39.28.png

アプリケーションを実行する

  • 実行するとクリップボードに日時がセットされる スクリーンショット 2020-06-27 19.07.31.png

Spotlightを使うと便利

  • SpotlightのデフォルトキーはCmd + Spaceだったはず
  • datetimeと入力せずともdでヒットしてくれるはず Image from Gyazo
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Macで$pipenv installをした時にjson.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)が出たら

エラーが出たぞ!

こんな感じのエラーが出たら

$ pipenv install
Pipfile.lock is corrupted, replaced with ()…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Traceback (most recent call last):
  File "/usr/local/bin/pipenv", line 8, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/pipenv/cli/command.py", line 254, in install
    editable_packages=state.installstate.editables,
  File "/usr/local/lib/python3.7/site-packages/pipenv/core.py", line 1874, in do_install
    keep_outdated=keep_outdated
  File "/usr/local/lib/python3.7/site-packages/pipenv/core.py", line 1221, in do_init
    pypi_mirror=pypi_mirror,
  File "/usr/local/lib/python3.7/site-packages/pipenv/core.py", line 1055, in do_lock
    packages, project, r=False, include_index=True
  File "/usr/local/lib/python3.7/site-packages/pipenv/utils.py", line 828, in convert_deps_to_pip
    indexes = project.sources if hasattr(project, "sources") else []
  File "/usr/local/lib/python3.7/site-packages/pipenv/project.py", line 862, in sources
    if self.lockfile_exists and hasattr(self.lockfile_content, "keys"):
  File "/usr/local/lib/python3.7/site-packages/pipenv/project.py", line 615, in lockfile_content
    return self.load_lockfile()
  File "/usr/local/lib/python3.7/site-packages/pipenv/project.py", line 999, in load_lockfile
    j = json.load(lock)
  File "/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/__init__.py", line 296, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

一番したのトレースバックだけをみてたら解決策が出てこなくて一番上を見たらPipfile.lockがコンフリクトしてるよ!って出てました。

これの解決方法はPipfile.lockを削除し、新たに

$ pipenv install

で良いです。

なお、PipenvはPipfile にインストールしたいバージョンを書くことで、Pipfile.lock に実際にインストールしたバージョンが記録されるというものです。こうして開発者がインストールしたのと同じ環境を他の人も再現出来るので複数人での開発に便利です。

なお、これだけだと別にそんなに気にする必要もないのですが、意外とこのエラーは実際の開発でも起こる現象らしく、gitで複数のブランチを切ってそれがmasterブランチにマージされたものを手元にpullするとコンフリクトが発生するようです。
その際は手元のPipfile.lockを削除し、再び

$ pipenv install
$ git add Pipfile.lock

でオーケーです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Macでzshをデフォルトで使えという警告を非表示にする

以前まで表示されなかった警告が発生

macOS Catalinaにアップデートしてから、bashを起動すると以下のメッセージが表示されるようになった。
(デフォルトでfishを使用しています)

ymmmtym@localhost ~> bash

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.

ymmmtym@localhost:~$

解決方法

結論からいうと、~/.bashrcに以下を追記することで解決できた。

~/.bashrc
export BASH_SILENCE_DEPRECATION_WARNING=1

警告メッセージについて

警告メッセージで素直に表示されたサイト(https://support.apple.com/ja-jp/HT208050)にアクセスしてみる。

macOS Catalina から、Mac は zsh をデフォルトのログインシェルおよびインタラクティブシェルとして使うようになります。それ以前のバージョンの macOS でも、zsh をデフォルトにすることができます。

zsh以外を使用すると、警告メッセージが表示される仕様になっているらしい。

おまけ

Macの場合だけ、bashのバイナリファイルが少し違うみたいです。

Ubuntu16.04の場合

ymmmtym@ubuntu16.04:~$ strings /bin/bash |grep BASH_SILENCE_DEPRECATION_WARNING
ymmmtym@ubuntu16.04:~$

Mac(macOS Catalina)の場合

ymmmtym@localhost:~$ strings /bin/bash |grep BASH_SILENCE_DEPRECATION_WARNING
BASH_SILENCE_DEPRECATION_WARNING
ymmmtym@localhost:~$
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

macOS プログラミング学習 便利なショートカットキー

プログラミング学習 便利なショートカットキー

自分が知っているものに限りますが、これまでのプログラミング学習で役立ったショートカットキーをqiitaにも書き残しておこうと思います。
参照する場合は、以下の環境構築と当てはまった上でご覧ください。

環境構築

・使用PC:macOS
・Google Chrome(ブラウザ)
・Visual Studio Code(コードエディター)

常時

これらはプログラミング学習だけでなくmacを使っているときに最も使用しているショートカットキー

切り取り

command + x

コピー

command + c

貼り付け

command + v

コードエディターを使用しているとき

巻き戻し

command + z
操作する前の状態に戻せる
間違って消したりしたときに便利でよく使う。

複製

複製したい文をドラッグして
shift + option + 下矢印キー
直下に複製される。
よく使う。

移動

移動したい文をドラッグして
option + 矢印キー
よく使う。

保存

command + S
すぐに保存したいときに使う。

字下げ

Tab
字下げを戻すとき(字上げ)には
Tab + shift
よく使う。

自動インテンド

shift + option + F
自動的にインテンド調整が入る機能
まとめてインテンドしたいときに使う。

コメント切り替え

command + /
コメント機能のon/offを切り替えられる。
よく使う。

まとめて書き換え(同じ文字のみ)

command + D
変更したい文字が複数ある場合に使用。

カーソルの追加

command + option + 矢印キー
同じclassを追加したいときに使う。
li要素に使うことが多い。

ブラウザ上を使用しているとき

デベロッパーツールの起動

command + option + i
HTMLやCSSの編集、Javascriptのconsoleのチェックを行うとき。
よく使う。

今後もここに追加していく予定です。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【FuelPHP,エラー対処法】Uncaught Fuel\Core\PhpErrorException: mysqli::__construct(): (HY000/2002):

はじめに

MacOS
フレームワーク:FuelPHP
MAMP

エラー内容

cronで実行しようとすると下記のエラー

 Uncaught Fuel\Core\PhpErrorException: mysqli::__construct(): (HY000/2002): 

解決法

db.php 内の "localhost" を "127.0.0.1" に変更します。

fuel/app/config/db.php
//変更前
'default' => array(
        'type'   => 'mysqli',
        'connection' => array(
            'hostname'   => 'localhost',
            'port'       => '3306',
            'database'   => 'db_name',
            'username'   => 'root',
            'password'   => '',
            'persistent' => FALSE,
        ),
        'identifier' => '`',
        'table_prefix' => '',
        'charset'      => 'utf8mb4',
        'caching'      => false,
        'profiling'    => true,
),

//変更後
'default' => array(
        'type'   => 'mysqli',
        'connection' => array(
            'hostname'   => '127.0.0.1',
            'port'       => '3306',
            'database'   => 'db_name',
            'username'   => 'root',
            'password'   => '',
            'persistent' => FALSE,
        ),
        'identifier' => '`',
        'table_prefix' => '',
        'charset'      => 'utf8mb4',
        'caching'      => false,
        'profiling'    => true,
),

公式ドキュメントにも書いてありましたね。笑

スクリーンショット 2020-06-27 10.10.18.png

ちなみにMySQLのソケットファイル(mysql.sock)が見当たらない場合にこのエラーが発生することもあるようです。
https://k-holy.hatenablog.com/entry/2014/05/28/192707
実はずっとこっちが原因ではないかと試行錯誤していました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ゼロから始めるScala (環境構築 mac)

Scala をはじめよう

Scala とは?

プログラミング言語の1つ。

「オブジェクト指向」と「関数型プログラミング」の両方の性質を併せ持つ (両方できる二刀流)。

Scala の「良さ」

  • オブジェクト指向と関数型プログラミングの両方を表現できる。
  • オブジェクトの「不変性」が意識された設計
  • 高いモジュール性
  • Java と互換性がある (Java のライブラリを使うことができる)
  • 非同期の計算ができる Future ライブラリを標準装備
  • 並列・分散プログラミングのためのライブラリ Akka がある

インストール on Mac

Homebrew を使うのが簡単だと思う。

環境構築は全部こいつでなんとかなる(気がする)。

探す

# scala (本体, しかし前提として Java が動く環境が必要 - 後述)
$ brew search scala
==> Formulae
scala        scala@2.11   scala@2.12   scalaenv     scalapack    scalariform  scalastyle
==> Casks
scala-ide

# sbt (scalaのビルドツール, 色々するのに便利なやつと思えば良い)
$ brew search sbt
==> Formulae
sbt                           sbt@0.13                      sbtenv

(前提として) Java をインストール

やはりHomebrew を使う。

AdoptedOpenJDK をインストールするのが良いっぽい。

AdoptedOpenJDKはJava大好きコミュニティ()により提供されているOpenJDKのバイナリ(だと思っている)。
Oracle経由でのインストールが、アカウント登録とか、自分でフォルダ配置するとか面倒になったので、変にこだわるよりは、これでサクッと入れてしまうのがコスト低いと思う...

# リポジトリの追加
$ brew tap AdoptOpenJDK/openjdk

# search
$ brew search openjdk

# install
$ brew cask install adoptopenjdk11

JAVA_HOMEのPATHを設定しよう

java_home コマンドでインストールされたディレクトリの場所を確認

$ /usr/libexec/java_home -v 11
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home

$ なんたら/java_home -v 11して出てきた文字列を、環境変数JAVA_HOMEとしてPATHに追加

必要に応じて .bash_profile.bashrc などに記述する。

# .bashrc に書いた。
export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
PATH=${JAVA_HOME}/bin:${PATH}

設定ファイルの再読み込み

# 以下、どちらか一方でOK
source ~/.bashrc
exec $SHELL -l

一応、チェックする。

$ java -version
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.7+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.7+10, mixed mode)

$ javac -version
javac 11.0.7

# コンパイル例
$ javac source.java

# 実行例 (.class を含めないように注意)
$ java Source

scala を入れる

(後述の)sbtだけでも良いが、一応書いておく。

# install
$ brew install scala

以上。

使ってみる

# REPL起動
$ scala

Welcome to Scala 2.13.3 (OpenJDK 64-Bit Server VM, Java 11.0.7).
Type in expressions for evaluation. Or try :help.
scala>
// 出力
scala> println("Hello scalalala")
Hello scalalala

// 演算1
scala> 1 + 2
val res1: Int = 3

// 演算2
scala> 3 * 6
val res2: Int = 18

// 演算3
scala> 8.0 / 2.0
val res3: Double = 4.0

// 終了
scala> :quit
// scala> :q でも OK
ソースファイル

拡張子は.scala

Main.scala
object Main {
  def main(args: Array[String]): Unit = {
    println("Hello scala program")
  }
}
  • コンパイルして実行
$ scalac Main.scala
$ scala Main
  • コンパイルしないで実行
$ scala Main.scala
  • REPLから実行
$ scala

Welcome to Scala 2.13.3 (OpenJDK 64-Bit Server VM, Java 11.0.7).
Type in expressions for evaluation. Or try :help.
scala> :load Main.scala

sbt を入れる

# install
$ brew install sbt

以上。

使ってみる

# REPL起動
$ sbt console
...
[info] Starting scala interpreter...
Welcome to Scala 2.12.10 (OpenJDK 64-Bit Server VM, Java 11.0.7).
Type in expressions for evaluation. Or try :help.

scala>

(あとは同じなので詳細略)

sbt でコンパイル, 実行

下準備として、何かフォルダを作っておくと良いと思います。
(名前はmyfolderとしましたが、なんでも良いです、対応する部分は読み替えてください)

$ mkdir myfolder
$ cd myfolder

myfolder下にソースファイルを書いて置きます。

HelloWorld.scala
object HelloWorld {
  def main(args: Array[String]): Unit = {
    println("Hello, Scala World!")
  }
}

myfolder下にsbtの設定ファイルを置きます

build.sbt
scalaVersion := "2.12.10"

scalacOptions ++= Seq("-deprecation", "-feature", "-unchecked", "-Xlint")

sbtを起動

[info] ...
sbt:myfolder>

runコマンドで実行

sbt:myfolder> run
[info] Compiling 1 Scala source to ...
[info] Running HelloWorld
Hello, Scala World!
[success] Total time: 1 s, completed 2015/02/09 15:44:44`

runコマンドでは、mainメソッドを持つオブジェクトを探して実行してくれるらしい。

というか、なんか日付がおかしい...??

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む