レポジトリ内のファイルに含まれる文字列を全て置換するコマンド
特定の文字列を全て置換するコマンド
環境
- OSX (Yosemite)
他OSだとsed の引数の扱いが微妙に違うので、ご注意ください。Ubuntuなどで検証したら、更新します。
例
例では dir
ディレクトリに含まれる coincheck.jp
をcoincheck.com
に置換
% grep -irl coincheck.jp dir | xargs -I {} sed -i '' 's/coincheck.jp/coincheck.com/g' {}
結果
結果はgit diff とかで確認してください。
% git diff
参考
python3 でyyyymmddhhmmss形式をdatetime形式に変換する
python で byte 型のyyyymmddhhmmss形式をdatetime形式に変換します
native なdatetime形式
datetime パッケージを用いてdatetime型にします。
>>> from datetime import datetime >>> _time=b"20161229122800Z" >>> td = datetime.strptime( _time.decode('utf-8'), '%Y%m%d%H%M%SZ') >>> td datetime.datetime(2016, 12, 29, 12, 28)
これだとnative (UTCオンリー) となり、マルチリージョン対応が困難。
aware なdatetime形式
以下のようにして、aware な形式(オブジェクトの中にタイムゾーンの情報を思っている形式) にするにはpytz を用いる。
pytz は標準パッケージではないものの、準公式パッケージ相当の信頼性があるもよう。
// pytz のインストール % pip install pytz
awareなdateime形式を得る。
>>> from datetime import datetime >>> import pytz >>> _time=b"20161229122800Z" >>> td = datetime.strptime( _time.decode('utf-8'), '%Y%m%d%H%M%SZ').replace(tzinfo=pytz.utc) >>> td datetime.datetime(2016, 12, 29, 12, 28, tzinfo=<UTC>)
参考
systemd を利用してプロセスをデーモン化する
systemdを利用すれば、プロセスのデーモン化を簡単に行うことができます。
環境
- ubuntu 16.04
- ( systemd のシステムであれば使えるはず。)
- CentOS7 など
デーモン化前
次のようなコマンドをバックグラウンドで実行しているとします。
% cd /var/lib/nem/0.6.79/package/nis % java -Xms512M -Xmx1G -cp ".:./*:../libs/*" org.nem.deploy.CommonStarter > /var/log/nis.log 2>/var/log/nis.error.log &
これをsystemd でデーモン化します。
systemd でデーモン化する
systemd に必要なファイルを作成します。
/etc/systemd/system/nis-0.6.79.service
[Unit] Description=NIS After=syslog.target network.target [Service] Type=forking EnvironmentFile=-/etc/default/nis-0.6.79 WorkingDirectory=/var/lib/nem/ ExecStart=/usr/local/bin/nis-0.6.79-start.sh ExecStop=/usr/local/bin/nis-0.6.79-stop.sh User=nem Group=nem KillMode=none Restart = always [Install] WantedBy=multi-user.target
Restart = always
によって、プロセスが停止したら、自動的に再起動します。
ただ、この段階ではファイルが不足しているので動きません。
- /etc/default/nis-0.6.79
- /usr/local/bin/nis-0.6.79-start.sh
- /usr/local/bin/nis-0.6.79-stop.sh
必要なファイルを作成する
環境変数のためのファイルを作成しておきます。
/etc/default/nis-0.6.79
LOG="/var/log/nem/nis.log" ERROR_LOG="/var/log/nem/nis.error_log" RUN_DIR="/var/lib/nem/run/nem" LOCK_FILE=/var/lib/nem/nis.lock PID_FILE=/var/lib/nem/run/nem/nis-0.6.79.pid
このファイルに記載した変数はこのサービス内のスクリプトで利用することができます。
起動スクリプトや停止スクリプトで利用します。
起動スクリプトを作成
起動スクリプトを作成します。
/usr/local/bin/nis-0.6.79-start.sh
#!/bin/bash [ -d $RUN_DIR ] || mkdir -p ${RUN_DIR} cd /var/lib/nem/0.6.79/package/nis java -Xms512M -Xmx1G -cp ".:./*:../libs/*" org.nem.deploy.CommonStarter > $LOG 2>$ERROR_LOG & echo $! > ${PID_FILE}
実行権限・所有権を変更しておきます。
% sudo chown nem. /usr/local/bin/nis-0.6.79-start.sh % sudo chmod +x /usr/local/bin/nis-0.6.79-start.sh
停止スクリプトを作成
停止スクリプトを作成します。
/usr/local/bin/nis-0.6.79-stop.sh
#!/bin/bash [ -f ${PID_FILE} ] && kill -9 $(cat ${PID_FILE}) [ -f ${LOCK_FILE} ] && rm ${LOCK_FILE} [ -f ${PID_FILE} ] && rm ${PID_FILE}
実行権限・所有権を変更しておきます。
$ sudo chown nem. /usr/local/bin/nis-0.6.79-stop.sh $ sudo chmod +x /usr/local/bin/nis-0.6.79-stop.sh
Serviceとして認識されたか確認する
systemd にservice として認識されたか確認します。
% systemctl list-unit-files --type=service | grep nis nis-0.6.79.service disabled
ここに表示されたら、認識されていることがわかります。
もし表示されなかったら、なにかおかしいのでエラー文などを参考に修正してみてください。
サーバ起動時に自動起動する
サーバ起動時に自動起動するようにします。
# 自動起動on $ sudo systemctl enable nis-0.6.79 $ systemctl list-unit-files --type=service | grep nis nis-0.6.79.service enabled
起動 / 確認 / 停止
# 起動 $ sudo systemctl start nis-0.6.79 # 確認 $ sudo systemctl status nis-0.6.79 ● nis-0.6.79.service - NIS Loaded: loaded (/etc/systemd/system/nis-0.6.79.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2016-10-17 06:25:05 JST; 1 day 5h ago Process: 30714 ExecStop=/usr/local/bin/nis-0.6.79-stop.sh (code=exited, status=0/SUCCESS) Process: 30720 ExecStart=/usr/local/bin/nis-0.6.79-start.sh (code=exited, status=0/SUCCESS) Main PID: 13771 Tasks: 43 Memory: 1.1G CPU: 19min 49.692s CGroup: /system.slice/nis-0.6.79.service └─30721 java -Xms512M -Xmx1G -cp .:./*:../libs/* org.nem.deploy.CommonStarter # 起動 $ sudo systemctl stop nis-0.6.79
OSを再起動して、サービスが自動起動するか確認
もしサービスインする前でしたら、OS を再起動して、サービスが自動起動するか確認します。
# 再起動 $ reboot
起動していたらokです
# 確認 $ sudo systemctl status nis-0.6.79
以上です。
参考
djangoの管理者パスワードを再設定する
django の管理者パスワードを忘れてしまったときに、コマンドラインから再設定する方法の備忘録
stackoverflow によると幾つか方法が提案されているので主要な2つを紹介します。
環境
- django 1.9
方法
changepassword コマンドを使う方法
% manage.py changepassword USERNAME
django shell を利用する方法
標準のUserモデルを使っているときは次の通り。
from django.contrib.auth.models import User // superuser の一覧を取得する User.objects.filter(is_superuser=True) u = User.objects.get(username='your username') u.set_password('raw password') u.save()
独自のモデル(たとえば、CustomUser.models に MyUser クラスを作っているとする)を利用するときは次の通り
from CustomUser.models import MyUser as User usr = User.objects.get(username='your username') usr.set_password('raw password') from django.contrib.auth.models import User // superuser の一覧を取得する User.objects.filter(is_superuser=True) u = User.objects.get(username='your username') // パスワードリセット u.set_password('raw password') // 保存 u.save()
参考
Using the Django authentication system | Django documentation | Django
スタートアップのための資料 - 随時更新版
VC
ピッチ
www.slideshare.net
しかし、重要なトラクションを出す前に、調達しようとするのなら話は別です。 データの代わりに、仮説や逸話、確信が求められます。 このステージで投資家とやりあうには、巨大な市場を追求することや、 以下の3つの質問に対する強い答えを持っている必要があります。 1)なぜこのビジネスなのか 2)なぜ今なのか 3)なぜあなたなのか 出典 シードステージのスタートアップが資金調達で聞かれる、3つの重要な質問 http://500startups.jp/why/
シードステージのスタートアップが資金調達で聞かれる、3つの重要な質問 | 500 Startups Japan
心構え・失敗することについて
// 「成功している人」が共通して持っているマインドセット7つ より - 成功者は失敗を真剣に受け止めすぎない - 成功者は自分がありのままの自分を受け入れる - 成功者はゴールを設定し、達成のために努力する - 成功者はチャンスを待たない - 成功者は問題が起こっても脇道に逸れない - 成功者は決断力がある - 成功者は常に学ぶ
引用元 「成功している人」が共通して持っているマインドセット7つ | ライフハッカー[日本版]
- 2016/10/19 「成功している人」が共通して持っているマインドセット7つ を追加
- 2016/10/31 ベンチャー関係者必読「スタートアップが急成長を目指すべき理由 を追加
- 2016/11/01 シードステージのスタートアップが資金調達で聞かれる、3つの重要な質問 を追加
django パスワードリセットのcss をadmin 画面CSSからカスタムCSSに変更する
- django : 1.8
- python 2.7.10
django のパスワードリセット(password reset) とかパスワード忘れた(password forget)のCSSがadmin画面のCSS を呼んでしまうので、カスタマイズしたい。
// project/settings.py INSTALLED_APPS = ( - 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'your_app', : + 'django.contrib.admin', )
django.contrib.admin をyour_app よりも下に書くことで変更できた。やった!
と思ったら、admin画面が表示されなくなった
Reverse for 'app_list' with arguments '()' and keyword arguments '{'app_label': 'default'}' not found. 0 pattern(s) tried: []
sha512 でハッシュ化されたパスワードを生成するワンライナー
sha512 でパスワードをハッシュ化する
- python 2.7 で動作実績あり
- python3 系は未検証
- Mac, Ubuntu , Debian, CentOS
% pip install passlib % python -c "from passlib.hash import sha512_crypt; import getpass; print(sha512_crypt.encrypt(getpass.getpass()))"