読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

postgresでfizzbuzz……あるいはcase文の使い方

sql

postgresであるいはcase文の使い方

実際のところ

この手のアレでおなじみのfizzbuzzっぽいの。
……すみませんaをそのまんま表示する方法がわからなかたので空白文字です()

SELECT a,
       CASE WHEN a % 15 = 0  THEN 'FizzBuzz' 
            WHEN a % 3 = 0 THEN 'Fizz'
            WHEN a % 5 = 0  THEN 'Buzz'
            ELSE ''
       END
FROM generate_series(1,15) as a;
 a  |   case   
----+----------
  1 | 
  2 | 
  3 | Fizz
  4 | 
  5 | Buzz
  6 | Fizz
  7 | 
  8 | 
  9 | Fizz
 10 | Buzz
 11 | 
 12 | Fizz
 13 | 
 14 | 
 15 | FizzBuzz
(15 rows)

Postgresには generete_seriesという連番の数値を出す関数がある

sql

Postgresには generete_seriesという連番の数値を出す関数があります

実際のところ

3飛びで1~7までの数値を出したい場合以下のようにします

$ psql postgres -c "SELECT 'hello' AS val, id FROM generate_series(1,7,3) AS id;"
  val  | id 
-------+----
 hello |  1
 hello |  4
 hello |  7
(3 rows)

Pythonで可変長の引数をとる

python

Pythonで可変長の引数をとる方法です。
……考えてみれば、あたりまえなのですがリストのスライスを使ってあげればいいです

実際のところ

四個以上あるような引数で、1〜3番目までとそれ以降をそれぞれ別に表示したい場合以下のようにします

import sys

print(sys.argv[1:4])
print(sys.argv[4:])

実行結果はこんな感じ

$ python hogehoge.py 1 2 3 4 5 6 7 8
['1', '2', '3']
['4', '5', '6', '7', '8']

pythonのクラスはただのオブジェクト

python

Rubyだと、クラスはClass型として扱われますね。

class Hoge
  def fuga()
    print(21)
  end
end

Hoge.class
#=> Class

ところが……pythonだと素のclassはobjectと同じく'type'を返します

class Sample:
  def func(str):
    print(str)

Class    = Sample
instance = Class()
print(type(object),type(Class),type(instance))
#>> <class 'type'> <class 'type'> <class '__main__.Sample'>

今ログインしてるユーザで特定のディレクトリを書き込み可能にする

複数のアカウントを使い分けてる状態でディレクトリの設定は結構面倒です。
今ログインしてるユーザで特定のディレクトリを書き込み可能にする

実際のところ

whoamiという、現状のログインユーザを表示する関数があります

$ whoami
shuzo_kino

これと権限を変更するchown関数をつかって、目的の内容は以下のように書くことができます

sudo chown -R $(whoami) /usr/local

"-R"オプションは"Root"の意です。

参考もと

【読書メモ】生きるために必要なこと

読書メモ

生きるために大切なこと

生きるために大切なこと

すこしまえに「嫌われる勇気」なる本が流行りましたね。
あの本のネタ元は「個人心理学」という分野です。
1930年台に活躍したオーストリアの心理学者アドラーの創始した学問で社会と人間の関わりについて重視しています。

今回紹介する「生きるために必要なこと」は、アドラー著作の一つ「Science of Living」の訳書になっています。

ざっくりまとめると、以下の通り。

  • 誰しも欠陥を抱えていて、その埋め合わせの為にもがく
  • それに失敗すると社会の帰属意識を失い自己愛が強化される
  • 自己愛を補填するため、弱い自分を演出したり内弁慶として支配者になったりしようとする

私の中で上手く言語化できなかった事柄が上手く説明できるようになった気がします。
政治的極論に逃げちゃう人、技を極める事で居場所を作ろうとする人等々、巷の不幸な人が起こす厄介事について、ある程度の説明ができますね。
……とはいえ、何分古い本なので科学的な根拠が弱いところがあるのも、また事実。
いくつかある便利な分析法の一つとして採用するに留めるのが妥当でしょう。

フロントエンドまわりの導入パッケージyarn

javascript/node.js

yarmは雨後の筍の如く出て来るフロントエンドパッケージ導入ツールの一種です。
公式では高信頼、高速を謳っています。

実際のところ

OS X版では以下のコマンドで導入

$ brew update 
$ brew install yarn

現状では環境変数もぶっ込む必要があるようです。

$ printf 'export PATH="$PATH:`yarn global bin`"\n' >>  ~/.bash_profile

基本コマンドはnpmやbowerと同じです。
たとえばjqueryがはいったpackage.jsonを新規に作ってインストールしたい場合は以下の通り。

$ yarn init
yarn init v0.17.10
question name (sampleapp): 
question version (1.0.0): 
question description: myapp
question entry point (index.js): 
question git repository: 
question author: shuzo_kino
question license (MIT): MIT
success Saved package.json
✨  Done in 17.75s.
$ yarn add jquery

package.jsonがあれば普通に

$ yarn install

導入画面がかわいい

パッケージ導入するときの画面がemojiでカワイイ
f:id:shuzo_kino:20161204001756p:plain

$ yarn add jquery
yarn add v0.17.10
info No lockfile found.
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
success Saved lockfile.
success Saved 1 new dependency.
└─ jquery@3.1.1
✨  Done in 3.00s.