Linuxでログイン不要なユーザーを作成する場合
今までは、普通に
useradd username
とかやってましたが、shell使わせたくないユーザーがいた場合は、
useradd -s /sbin/nologin username
とやればいいことを学んだ。
この /sbin/nologin は /etc/shells に記述されているので、FTP接続できます!
さらに、これだとユーザーのカレントディレクトリに .bashrc, .bash_profile...等のドットファイルが生成されちゃうんだけど、
これも
useradd -m -k /skelton_dir -s /sbin/nologin username
とすれば、/skelton_dir の内容をコピーしてくれることを知りました。
というか、/etc/skel の内容をコピーしているのを今まで知りませんでした。(*/////∇/////*)
なんと恥ずかしい。
/etc/skelの中で設定出来たなんて素晴らしすぎる。
これで25スンスンです。
アナログ終了→地デジ移行
家のテレビはアナログテレビであり、
さらに、まだ地デジ対応テレビも買ってなく、地デジチューナーも買ってない私は、
「とうこうこの日が来たか・・・」
と思い、テレビ局のカウントダウンを眺める。。。
「3、2、1、終了〜〜〜!」
・・・
・・・
・・・
( ゚д゚) エッ!?
(つд⊂) ゴシゴシ
(;゚д゚) エェッ!?
(つд⊂) ゴシゴシゴシ
(゚Д゚)ハッ!?
・・・アナログ見れてるんだが。。。。。
どういうことだってばよっ!
と、よく右上を見ると、
「デジアナ変換」
と表示されているぞ。
「デジアナ変換」は、ケーブルテレビ事業者が、地上デジタル放送の番組を再送信するとともに、期間限定(2015年3月末まで)の暫定的措置として、地上デジタル放送をアナログ方式に変換(デジアナ変換)した信号も併せて各家庭に配信するもの。
私はケーブルテレビに入っていないが、マンション自体が加入している場合はこうなるらしい。
き、き、き、
キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
キタキタキタキタ━━━(゚∀゚≡(゚∀゚≡゚∀゚)≡゚∀゚)━━━━!!
ということは、2015年3月末までこのままアナログテレビで見れるということか。
地デジ対応テレビの買い替えがもう少し延長されそうです。
よかった、よかった。
少しホッとしました。
GoogleChromeでFlashファイル(動画)のキャッシュを取得する (Ubuntu)
GoogleChromeでは /tmp 以下に動画キャッシュが保存されていましたが、
少し前から変わっちゃったので、保存するスクリプト作りました。
誰でも気に入った動画を保存したいことありますよね??
ブラウザで見ている、ダウンロード型の動画ファイルならダウンロードが完了すれば全て保存できます。
ニコ動やYouTube、ひま動...というか、ダウンロード型なら全て使えると思います。
使い方は簡単で、スクリプトを getFlash.py として保存した場合なら、
python getFlash.py
と実行するだけです。
実行すると新しくウィンドウが開くので、その中にある保存したい動画ファイルのファイル番号を入力し、
最後に保存したいファイル名を入力すれば完了します。
※保存先は /tmp 以下に保存されます。
連続して使用する場合は、デフォルトでウィンドウがオープンするためウザくなりますが、
「-n」を指定するとウィンドウは開きません。連続して使う場合は「-n」を指定しましょう。
python getFlash.py -n
[※注意]
1、ファイルは /tmp 以下に保存されます。
2、ブラウザを閉じるとキャッシュも消えてしまうため、ブラウザを開いたまま実行してください。
3、Ubuntu(Linux) でしか動作確認していません。(>_<)
#!/usr/bin/env python # -*- coding: utf-8 -*- """ GetFlash - GoogleChromeのFlashFileを取得する Usage1: python getFlash.py Usage2: python getFlash.py -n """ import re import commands import os import sys def GetFlash(): r=re.compile(commands.getoutput('whoami')+"\s+([0-9]+)") pid=r.match(commands.getoutput('ps aux | grep libgcflashplayer.so')) if pid.group(1) and os.path.isdir('/proc/'+ pid.group(1) +'/fd/'): dirpath='/proc/'+ pid.group(1) +'/fd/' try: if sys.argv[1] == '-n': openWindow=False else: openWindow=True except IndexError: openWindow=True if openWindow == True: commands.getoutput('nautilus '+ dirpath) file='' while file.isdigit() == False: file=raw_input('Enter File Number or Exit(n): ') if file in ['n','no','No','NO']: sys.exit('Cancelled by user.\n'); if os.path.isfile(dirpath + file) == False: print(' ' + file + ': File does not exist.(in ' + dirpath +')') file='' newfile='' while newfile == '': newfile=raw_input('Enter New File Name: ') commands.getoutput('cp '+ dirpath + file +' /tmp') commands.getoutput('mv /tmp/'+ file +' /tmp/'+ newfile) print"" print('Success! Your movie file has been copied to "/tmp/'+ newfile +'" .') print "" else: print('No Cache Dir (Google Chrome Flash)') def main(): GetFlash() if __name__ == '__main__': main()
また、実際に使用する場合は毎回コマンドを全部打ち込むのもアレなので、
.bashrc に aliasを作っておけば楽ちんです。
alias getFlash='python [保存したパス]/getFlash.py '
登録したら source コマンドで反映させればおkです。
source .bashrc
これで、以後簡単に実行できます。
getFlash
使えなかったらごめんなさい 。・゚・(ノД`)・゚・。ウエエェェン
urllibでuser-agent指定する方法
urllib2なら 昔ブログに書いた方法で出来るけど、
urllibは知らなかったのでメモメモ
FancyURLopenerの派生クラスを作って以下の様にするらしい。
(From http://hylom.net/2010/02/10/urllib_and_urllib2_usag/ 様より学習しました)
import urllib class AppURLopener(urllib.FancyURLopener): def __init__(self, *args): self.version = 'MyUserAgent' urllib.FancyURLopener.__init__(self, *args) urllib._urlopener = AppURLopener()
なるほどなるほど。
Pythonでのnumber format
Pythonで数字を3文字区切りのフォーマットに変換する方法。
import locale locale.setlocale(locale.LC_ALL,'ja_JP.UTF-8') locale.format('%d', 123456789, True)
なるほど。。。
Google App Engine for Python を使ってみた (Ubuntu Linux)
以前からちょこちょこ使ってたので、自分用まとめも兼ねて書きます。
Linux環境を想定して書いています。
まず、Google App Engine に登録します。※Gmailのアカウントをとりましょう。
ログインして「Create Application」をクリックします。
携帯電話での認証を求められるので、国とキャリアを選択して認証メールを受信します。
「Application Identifier」と「Application Title」を入力します。
Application Identifierは *****.appspot.com の様にサブドメインになります。
次はSDKをダウンロードします。※Linux環境を想定して書きますので、WindowsやMac OS Xは割愛します。
今回はPythonを使用するので、「SDK for Python」から、プラットフォームの「Linux/その他のプラットフォーム」を選択してダウンロードします。
ダウンロードしたファイルを解凍し、google_appengineディレクトリに移動します。
cd google_appengine
アプリケーション用ディレクトリを作成します。ここでは hello とします
mkdir hello
new_project_templateディレクトリから app.yaml を helloディレクトリにコピーします。
cp new_project_template/app.yaml hello/
一旦、helloディレクトリに移動し、app.yamlを以下の様に編集します。
application: [ウェブ上で登録した自分のアプリケーション名] version: 1 runtime: python api_version: 1 handlers: - url: / script: main.py
次に、helloディレクトリ内に main.py を作成します。
print 'Content-Type: text/plain' print '' print 'Hello, world!'
作成し終わったら、アプリケーションのテストをします。
端末からWebサーバを立ち上げます。
google_appengineディレクトリに移動し以下のコマンドでWebサーバを起動します。
python dev_appserver.py hello/
サーバが立ち上がったら、http://localhost:8080/ にアクセスし、正しく表示されているか確認します。
Hello, world!
と表示されていれば成功です。
テストが完了したら、実際にアップロードしましょう。
google_appengineディレクトリに移動しアップロードします。
python appcfg.py update hello/
アップロードの途中でアカウントの認証を求められるので、自分のメールアドレスとパスワードを入力し、アップロードを完了させましょう。
アップロードし終わったら、
http://******.appspot.com/ (****** は自分のアプリケーション名です)
にアクセスしてみましょう!
Hello, world!
と表示されていれば成功です。
で、だから何だって感じですが、無料でサーバを使うことが出来ますし、
Mailも送れるし、Cronも使用できます。
使い様によっては結構様々な用途で使えます。
また
「最大 500 MB の永続性ストレージに加え、月間約 500 万ページ ビューに対応できる十分な CPU と帯域幅を、すべてのアプリケーションで完全に無料で利用できます。」
By Google
なので、通常の使用には問題なさそうです。
Chromeウェブストア
先日ChromeのWebストアが日本語化されましたが、
iPhoneで人気の有る「Angry Birds」がHTML5で実装されており、
操作性等はiPhone版と変わらない程で驚きました。
さてさて、
iPhoneなどのスマートフォンと違いソースが丸見えなので、
もうハックされてしまったようです。(Get All Angry Birds Levels in Chrome HTML5 Version with a quick hack | Wes Bos)
javascript: var i = 0; while (i<=69) { localStorage.setItem('level_star_'+i,'3'); i++; } window.location.reload();
上記スクリプトをコピーしてアドレスバーに貼り付けると、全ての面のロックが解除されるそうです。
実際にやってみると解除されました。
ソースが見えてしまう分Webアプリは色々と難しいかもしれません。
課金とか。。。