« ^ »

Symdon Blog


  • emacs blog documentation

    ブログを書くコストを下げる工夫

    ブログを記述することの一番の障壁は書き初めが面倒くさいことだ。「ブロ グを書くぞ」と気合を入れてからファイルを開いたしている。文章を書こうと 思うと心構えが必要になる。問題はその心構えをすること自体が徐々に億劫に なってくることだ。 即座にファイルを開いて文章を書き初められるように専用のコマンドを実装した。 作成した文章を即座に特定のディレクトリに書き込めるようにした。 (defcustom symdon-ga-post-directory "/ng/symdon/pages/posts" "Path to directory of symdon-ga posts") (defun symdon-ga-create-new-file-path () (concat (directory-file-name symdon-ga-post-directory) "/" (format "%s.org" (truncate ...

    所要時間: 約 2分, 作成: 2020/10/11, 更新: 2020/10/11


  • orgmode emacs

    Emacsのorg-modeの-captureのhookを確認する

    symbol 実行されるタイミング カレントバッファ 備考 org-capture-mode-hook org-capture-modeが有効化される前 org-capture-prepare-finalize-hook ファイナライズが開始される直前 キャプチャバッファ ナローイングされている org-capture-before-finalize-hook キャプチャプロセスが完了する直前 キャプチャバッファ ワイディングされている org-capture-after-finalize-hook キャプチャプロセスが完了した直後 ターゲットのバファ ウィンドウのクリーンアップに適している https://qiita.com/drafts/af1cdba67ea64b0f4610/ を転載。

    所要時間: 約 1分, 作成: 2020/3/19, 更新: 2020/3/19


  • emacs emacs-lisp qiita

    Qiita記事をEmacsから投稿する試み

    コード (require 's) (require 'dash) (defun ox-qmdx--get-export-setting (header-name) "Get export setting value. The export settings are those described in `#+FOO: BAR`. This function moves point internally. However, the position is restored as soon as the function completes. " (save-excursion (goto-char 0) (re-search-forward (format "^[ \t]*#\\+%s: \\(.+\\)" header-name) nil t) (match-string-no-properties 1))) (defun ox-qmdx--get-org-source () "Return markdown comment style string of Org document source in the current buffer." (format "\n\n<!---ORG\n%s\n--->" (buffer-substring-no-properties (point-min) (point-max)))) (defun ox-qmdx--export-get-title () (ox-qmdx--get-export-setting 'title)) (defun ox-qmdx--export-get-item-id () (or (ox-qmdx--get-export-setting 'qiita_item_id) nil)) (defun ox-qmdx--export-get-private () (case (ox-qmdx--get-export-setting 'qiita_private) ("t" :json-false) ("nil" t) (otherwise t))) (defun ox-qmdx--export-get-tweet () (case (ox-qmdx--get-export-setting 'qiita_tweet) ("t" t) ("nil" :json-false) (otherwise :json-false))) (defun ox-qmdx--export-get-tags () (-map (lambda (name) `((:name . ,name))) (s-split " " (ox-qmdx--get-export-setting 'qiita_tags)))) org-exportで呼び出す関数 (defun org-qmdx-export-as-markdown-and-post (&optional async subtreep visible-only) "Export current buffer to a Qiita Markdown buffer and source." (json-encode `((title . ,(ox-qmdx--export-get-title)) (body . ,(with-current-buffer (org-qmd-export-as-markdown) (buffer-substring-no-properties (point-min) (point-max)))) (coediting . :json-false) (group_url_name . nil) (private . ,(ox-qmdx--export-get-private)) (tweet . ,(ox-qmdx--export-get-tweet)) (tags . ,(ox-qmdx--export-get-tags)) )) (org-qmd-export-as-markdown async subtreep visible-only) (let ((src-buf (current-buffer)) (export-buf (org-qmd-export-as-markdown))) (with-current-buffer export-buf (end-of-buffer) (insert (with-current-buffer src-buf (ox-qmdx--get-org-source))) ...

    所要時間: 約 2分, 作成: 2020/3/6, 更新: 2020/3/6


  • mastodon

    Mastodonのホットキーの挙動を修正した

    2017年から1年ほどMastodonを使っていますが、初めてWeb UIを修正する機会があったので、そのときに読んだコードと修正した内容の解説を残して置こうと思います。 この修正はPRを出して無事mergeされました。 https://github.com/tootsuite/mastodon/pull/7202 経緯 Mastodon v2.0.0 でホットキーの機能が実装されました。ホットキーはWeb UIの機能でフォーカスのあるトゥートをfでファボしたりbでブーストしたりするキーボードショートカット機能です。フォーカス ...

    所要時間: 約 6分, 作成: 2018/4/21, 更新: 2018/4/21


  • qiita

    qiita記事に埋め込み画像ができるか?

    qiita記事に埋め込み画像ができるかどうかを確認します。 サンプルとしてOpenCVのlena.jpgを、Pillowを使ってqualityを落としたものを使用します。 次の画像タグを直書きします。 ```画像タグ <img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAFA3PEY8MlBGQUZaVVBfeMiCeG5uePWvuZHI////////////////////////////////////////////////////2wBDAVVaWnhpeOuCguv/////////////////////////////////////////////////////////////////////////wAARCAIAAgADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwB9FFFSaBRRRSGApaQUtAgNRtUhqNqaGMpabS0wFooooAKUUlLQAUtJS0gCiiigAooooAWikpaAEooooAWikooAWkoooAKKKKAFpKKKAA0UUUAFFFFABRRRQAlIaWkpgKtPFRinikA6kpaKBBRRRSAKKKKBhRRRQIchqSoQcGpQcigTGyDIqv3q31qvIuDmmgQ2ikpaYwooooGLRSUtIAooooASnGRQuM1G744FRdadhFuiiipGFFFLQIKKKSgANMan0xqYyPvS0nelpgLRRRQAUtJRQAtLSUtIAooooAKKKKACiiigAooooAKKWkoAKKKKACiiigBaSiigAooooAKKKKACiiigApKWkNMBKcpptOFADxRS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" /> ``` #### ———- タグここから ———- <img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAFA3PEY8MlBGQUZaVVBfeMiCeG5uePWvuZHI////////////////////////////////////////////////////2wBDAVVaWnhpeOuCguv/////////////////////////////////////////////////////////////////////////wAARCAIAAgADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwB9FFFSaBRRRSGApaQUtAgNRtUhqNqaGMpabS0wFooooAKUUlLQAUtJS0gCiiigAooooAWikpaAEooooAWikooAWkoooAKKKKAFpKKKAA0UUUAFFFFABRRRQAlIaWkpgKtPFRinikA6kpaKBBRRRSAKKKKBhRRRQIchqSoQcGpQcigTGyDIqv3q31qvIuDmmgQ2ikpaYwooooGLRSUtIAooooASnGRQuM1G744FRdadhFuiiipGFFFLQIKKKSgANMan0xqYyPvS0nelpgLRRRQAUtJRQAtLSUtIAooooAKKKKACiiigAooooAKKWkoAKKKKACiiigBaSiigAooooAKKKKACiiigApKWkNMBKcpptOFADxRS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" /> #### ———- タグここまで ———- どうやら表示されないようです。

    所要時間: 約 1分, 作成: 2018/1/12, 更新: 2018/1/12


  • あれからn年経った ふりかえり medium

    あれから4年経った

    @TakesxiSximada です。この記事は この記事は フリーランス Advent Calendar 2017 および しむどんアドベントカレンダー 2017 の25日目の記事です。 フリーランス Advent Calendar 2017 - Adventar フリーランスに関するネタならなんでもOK!独立した!とか、今年の苦労話とか、フリーランス生活に関することとかお仕事のこととか。adventar.org 去年もこのアドベントカレンダーに参加したので、今年も参加しました。ちなみにその前の年も参加してます。フリーランスになってから ...

    所要時間: 約 6分, 作成: 2017/12/25, 更新: 2017/12/25


  • emacs

    Emacsで子プロセスを実行する

    Emacsで子プロセスを実行するには `start-process` を使います。第一引数にはEmacsが管理するためのサブプロセスの名前、第二引数はそのサブプロセスが使うバッファを指定します。 (start-process "SXIMADA" "TESTING-BUFFER" "/usr/local/bin/python3") `TESTING-BUFFER` と言う名前のバッファに結びついた `SXIMADA` と言う名前で `/usr/bin/python` が起動します。 /usr/bin/pythonはPythonなのでPythonインタラクティブシェルが起動します。TESTING-BUFFERはこのようになります。 Python 3.6.3 (v3.6.3:2c5fed86e0, Oct 3 2017, 00:32:08) [GCC 4.2.1 ...

    所要時間: 約 3分, 作成: 2017/12/16, 更新: 2017/12/16


  • ふりかえり medium

    2017年に登壇したイベントの振り返り

    この記事は 登壇者 Advent Calendar 2017 と しむどん Advent Calendar2017 の10日目の記事です。 2017年に登壇したイベントの振り返りをします。 あと登壇とは少し違いますが、人前でデモしたり話したりする機会もついでに振り返ります。 今年登壇したイベント PyCon JP 2017 Mastodon Developers Kaig #0 International Space Apps Challenge 2017 東京会場 Python初心者向けハンズオン with Pepper PyCon JP 2017 PyCon JPはPythonというプログラミング言語をテーマにしたカンファレンスです。日本で毎年1回行われており、日本で開催 ...

    所要時間: 約 7分, 作成: 2017/12/10, 更新: 2017/12/10


  • mastodon docker nginx

    docker-composeでlocalにMastodonの環境を構築する

    使用しているツール/サービス Git GitHub Docker docker-compose Nginx Mastodonのsource codeをcloneする ソースコードをGitHubから取得します。 git clone --depth 1 [email protected]:tootsuite/mastodon.git 取得したソースコードのディレクトリに移動します。 cd mastodon SSL/TLSで使用する自己証明書を生成 SSL/TLSでリクエストを受け入れられるように自己証明書を作成します。 まずは証明書を配置するディレクトリを作ります。 mkdir -p ./nginx/cert 作成したディレクトリに移動しておきます。 ...

    所要時間: 約 5分, 作成: 2017/11/14, 更新: 2017/11/14


  • jquery javascript

    jQery UI DatePickerの使い方

    <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="node_modules/jquery-ui/themes/base/all.css"> <script src="node_modules/jquery-ui/external/jquery/jquery.js"></script> <script src="node_modules/jquery-ui/ui/widgets/datepicker.js"></script> </head> <body> <input type="text" id="datepicker"> <script> $('#datepicker').datepicker(); </script> </body> </html>

    所要時間: 約 1分, 作成: 2017/11/14, 更新: 2017/11/14


  • swift carthage homebrew

    macOS SierraにCarthageを無理やりインストールする

    CarthageはSwift製のパッケージ管理ツールです。macOS SierraにCarthageをインストールしようとしてエラーが発生したので備忘録としてW/Aと共に残しておきます。 環境は以下です。 OS: macOS 0.12.1(16B2657) Homebrew: 1.1.7-88-g3be56ae Homebrew/homebrew-core: (git revision 35975; last commit 2017-01-23) Homebrew 1.1.7-88-g3be56aep Homebrew/homebrew-core (git revision 35975; last commit 2017-01-23) 普通にbrew installするとPermission denined まずは普通に brew install してみます。 brew install Carthage Updating Homebrew... ==> Auto-updated Homebrew! Updated Homebrew from 950e279 to 3be56ae. Updated 3 taps (homebrew/core, homebrew/python, homebrew/science). ~~~ 省略 ...

    所要時間: 約 3分, 作成: 2017/4/23, 更新: 2017/4/23


  • celery python

    celeryのtaskをbindで使うと第一引数にtask objectが渡される

    celery.shared_task()でタスクを作成するときに`bind=True`を指定すると、第一引数がそのタスクオブジェクトになります。 from celery import Celery, shared_task app = Celery('tasks', broker='redis://127.0.0.1:6379/') @shared_task(bind=True, default_retry_delay=1, max_retries=3) def add(self, x, y): print(x, y) return x + y res = add.delay(1, 3) print(res.wait()) ステータスをfailureにしたり、リトライを指定する場合、タスク関数自身(実際は関数ではなくて呼び出し可能オブジェクトですが)にその処理を指定する必要がありましたが、見た目上それは関数なので非常に不自 ...

    所要時間: 約 1分, 作成: 2017/3/19, 更新: 2017/3/19


  • clojure leiningen homebrew

    clojureをアップグレードする

    brew upgrade leiningen Updating Homebrew... ==> Auto-updated Homebrew! Updated Homebrew from a1da909 to 0cff599. Updated 3 taps (homebrew/core, homebrew/science, homebrew/versions). ==> New Formulae bit gobuster mysql-utilities dmtx-utils gtef sha1dc docker-credential-helper homebrew/science/acado dvd-vr homebrew/science/m4ri ==> Updated Formulae abcm2ps harfbuzz ✔ newlisp algol68g hebcal nexus alot hg-flow node ✔ aptly-completion hledger node-build armor homebrew/science/anvio nuget artifactory homebrew/science/armadillo openvdb aws-sdk-cpp homebrew/science/graph-tool osc awscli homebrew/science/kat osrm-backend bash-completion homebrew/science/kmerstream p11-kit blackbox homebrew/science/libpll packetbeat botan homebrew/science/littler paket byteman homebrew/science/methpipe pdfgrep cake homebrew/science/nest peco cassandra homebrew/science/octave pgcli certigo homebrew/science/openni2 pidgin chromedriver homebrew/science/r proselint codequery homebrew/science/sambamba protobuf-swift commandbox homebrew/science/sumo pybind11 conan homebrew/science/vtk pyinvoke consul-backinator homebrew/science/xcdf pyqt5 convox httest python3 coreutils hyper qscintilla2 couchdb-lucene i3status rancher-cli creduce idris reposurgeon crystal-icr iperf3 rmlint crystal-lang ipfs scipy csvtomd jboss-forge selenium-server-standalone curlpp jenkins sflowtool dmd jetty sip doctl jid softhsm doitlive jrnl sourcery dosfstools jruby spdlog dub json-fortran sqlparse eralchemy khal sshguard eventql kobalt statik excel-compare kompose stout exim kubernetes-cli svgcleaner feedgnuplot kubernetes-helm swiftformat folly ldc swiftplate fonttools libav ✔ swimat fossil libbluray syncthing freeradius-server libchamplain tarsnapper [email protected] libgpg-error ✔ texmath geckodriver libosmium timelimit git-lfs ✔ linkerd todolist git-quick-stats llvm todoman gnome-autoar lxc ttyd gnu-units mandoc tundra gnutls ✔ meson typescript goaccess metricbeat vala gofabric8 midnight-commander vegeta gosu mighttpd2 vert.x gradle mikutter ...

    所要時間: 約 1分, 作成: 2017/3/11, 更新: 2017/3/11


  • aws cloudformation iam

    AWS CloudFormationでIAMを管理する

    ポリシー ExamplePolicy: Type: AWS::IAM::ManagedPolicy Properties: PolicyDocument: Version: 2012-10-17 Statement: - Sid: Stmt01 Effect: Allow Action: - s3:ListObject Resource: - "*" グループ ExampleGroup: Type: AWS::IAM::Group Properties: GroupName: !Sub ${AWS::StackName}-testing ManagedPolicyArns: - !Ref ExamplePolicy ユーザ ExampleUser: Type: AWS::IAM::User Properties: UserName: !Sub ${AWS::StackName}-testing Groups: - !Ref ExampleGroup ロール ExampleRole: Type: AWS::IAM::Role Properties: RoleName: !Sub ${AWS::StackName}-testing ManagedPolicyArns: - !Ref AdminAccessPolicyArn AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - ec2.amazonaws.com Action: - sts:AssumeRole 全体 Parameters: AdminAccessPolicyARN: Description: A role ARN of administorator access. Type: String Default: arn:aws:iam::aws:policy/AdministratorAccess Resources: ExamplePolicy: Type: AWS::IAM::ManagedPolicy Properties: PolicyDocument: Version: 2012-10-17 Statement: - Sid: Stmt01 Effect: Allow Action: - s3:ListObject Resource: - "*" ExampleGroup: Type: AWS::IAM::Group Properties: GroupName: !Sub ${AWS::StackName}-testing ManagedPolicyArns: - !Ref ExamplePolicy ExampleUser: Type: AWS::IAM::User Properties: UserName: !Sub ${AWS::StackName}-testing Groups: - !Ref ExampleGroup ExampleRole: Type: AWS::IAM::Role Properties: RoleName: !Sub ${AWS::StackName}-testing ManagedPolicyArns: - !Ref AdminAccessPolicyArn AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - ec2.amazonaws.com Action: - sts:AssumeRole up.yml Resources: TemporaryBucket: Type: AWS::S3::Bucket Properties: AccessControl: AuthenticatedRead down.yml 元記事 https://qiita.com/TakesxiSximada/private/be6fa17d0c77a6ec71c4

    所要時間: 約 1分, 作成: 2017/3/2, 更新: 2017/3/2


  • firebase

    Firebaseで静的サイトをホスティングする

    この記事は [しむどんアドベントカレンダー5日目](https://adventar.org/calendars/2179) の記事です。 TL;DR 静的ファイルのホスティングをFirebaseで行った firebaseを使うためにfirebase-toolsをインストールした firebase deployで静的ファイルをデプロイした 経緯 モチベーション 日々勉強したコードをgithubにpushしています。 記事や文章はQiitaに ...

    所要時間: 約 6分, 作成: 2022/1/30, 更新: 2017/2/26


  • ansible

    ansibleのショートカットコマンドを提供するanseedを作った

    これは完全に私の趣味/趣向によるものなのですが、ansibleでplaybookを実行するコマンドがとても長くて気に入りません。そこでMakefileによく使うコマンドを書いて `make deploy` でデプロイできるようにしてました。使っていると環境切り替えをするためにMakefileにいろいろなロジックを書くようになりました。複数のリポジトリで同じようなMakefileが散らばって、こっちのMakefileは他のリ ...

    所要時間: 約 4分, 作成: 2017/2/25, 更新: 2017/2/25


  • python

    PythonでExcelを操作する

    よく使われるパッケージ pandas xlrd/xlwt/xlutils python-excel openpyxl pyExcelerator 参考 http://d.hatena.ne.jp/gumilab/20100826/1282813574 備考 https://qiita.com/TakesxiSximada/private/2f63921eaf65c4c0fe18

    所要時間: 約 1分, 作成: 2017/2/20, 更新: 2017/2/20


  • aws cloudformation s3

    CloudFormationで使うパラメータファイルのS3でのアクセス権限

    awscliからCloudFormationをUpdateStackした時に以下のようなエラーが発生した。 $ aws cloudformation --region us-east-1 update-stack --stack-name Testing \ --template-url https://s3.amazonaws.com/XXX/production/templates/up.yml \ --parameters https://s3.amazonaws.com/XXX/production/parameters/production.json Error parsing parameter '--parameters': Unable to retrieve https://s3.amazonaws.com/XXX/production/parameters/production.json: received non 200 status code of 301 理由はS3からファイルを取得しようとして301が返された。

    所要時間: 約 1分, 作成: 2017/2/15, 更新: 2017/2/15


  • tmux

    tmuxの設定を晒す

    splitw -d splitw -h -d resize-pane -D 10 resize-pane -R 50 ~/.tmux/session ,set-option -g prefix C-t ,unbind-key C-b ,bind-key C-t send-prefix , ,# bind-key l split-window -h ,set-window-option -g mode-mouse on ,set-option -g default-shell /bin/zsh , ,# clipboard ,# bind-key -t emacs-copy M-w copy-pipe "${CLIPSS_PATH}/bin/clipss_push" #tmux 1.8 conf gramma ,# bind-key ] run 'tmux load-buffer -- $CLIPSS_FILE;tmux paste-buffer --;' , ,bind -t emacs-copy M-w copy-pipe "reattach-to-user-namespace pbcopy" ,bind -t emacs-copy C-w copy-pipe "reattach-to-user-namespace pbcopy" , , ,# rect-angle copy ,# bind-key -t v rectangle-toggle% ~/.tmux.conf

    所要時間: 約 1分, 作成: 2017/2/12, 更新: 2017/2/12


  • aws cloudformation circleci[WIP]

    cloudformationとCircleCIでAWSのインフラを管理する

    流れ cloudformation用のIAM Roleを作る circleci用のIAM Userを作る cloudformationのIAM Roleを作る 作業 [x] cloudformation用のIAMを作成する [x] cloudformationのstackを作成する [x] awsコマンド用のupdateができるIAMユーザを作成 [x] awsコマンド用のupdateしかできないIAMユーザを作成 [x] awsコマンドでupdat ...

    所要時間: 約 1分, 作成: 2017/1/31, 更新: 2017/1/31


  • python 素数

    試し割り法で素数を判定する

    試し割り法 from unittest import TestCase def is_prime_trial_division(num): power = num ** 2 if num >= 2: for ii in range(2, num): if ii ** 2 > power: break elif num % ii == 0: break else: return True return False PRIMES = [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, ] class TrialDivisionTest(TestCase): def test_it(self): for ii in range(100): self.assertEqual(ii in PRIMES, is_prime_trial_division(ii), ii)

    所要時間: 約 1分, 作成: 2017/1/27, 更新: 2017/1/27


  • nginx

    Nginxをソースからビルドする

    古いUbuntuなどを使っているとapt-getでインストールできるNginxが古くて、使いたいモジュールがサポートされていないことがあります。その場合、ソースからビルドする必要があります。 今回はそれを想定してNginxをソースからビルドします。 ソースをダウンロードしてビルドする ダウンロードします。 curl -L https://nginx.org/download/nginx-1.10.2.tar.gz -o nginx-1.10.2.tar.gz tarballを解凍します。 tar zxvf nginx-1.10.2.tar.gz buildします。 cd nginx-1.10.2 ./configure make ビルドできたらmake inst ...

    所要時間: 約 2分, 作成: 2017/1/27, 更新: 2017/1/27


  • django python

    prefetch_relatedとselect_relatedの違い

    Djangoのモデルでリレーション先のデータの取得の方法に、prefetch_relatedとselect_relatedがある。 それぞれどのようなSQLが発行されるのかを確認した。 以下のモデル定義を使って確認する。 from django.db import models class Organization(models.Model): value = models.IntegerField(default=1) class User(models.Model): organization = models.ForeignKey(Organization) class Tag(models.Model): name = models.CharField(max_length=20, default='FISH') organizations = models.ManyToManyField(Organization) select_related In [1]: from fish.accounts.models import * In [2]: User.objects.select_related('organization').all() Out[2]: <QuerySet []> 2017-01-29T23:42:29.830844Z 39 Query SELECT `accounts_user`.`id`, `accounts_user`.`organization_id`, `accounts_organization`.`id`, `accounts_organization`.`value` FROM `accounts_user` INNER JOIN `accounts_organization` ON (`accounts_user`.`organization_id` = `accounts_organization`.`id`) LIMIT 21 prefetch_related In [3]: User.objects.prefetch_related('organization').all() Out[3]: <QuerySet []> 2017-01-29T23:43:24.614393Z 39 Query SELECT `accounts_user`.`id`, `accounts_user`.`organization_id` FROM `accounts_user` LIMIT 21 In [16]: Tag.objects.prefetch_related('organizations') Out[16]: <QuerySet [<Tag: Tag object>]> 2017-01-29T23:48:22.894230Z 43 Query SELECT `accounts_tag`.`id`, `accounts_tag`.`name` FROM `accounts_tag` LIMIT 21 2017-01-29T23:48:22.896554Z 43 ...

    所要時間: 約 1分, 作成: 2017/1/26, 更新: 2017/1/26


  • python pdf

    Python製PDF解析ライブラリslateをPython3対応する

    slateはPython3では使えない slateはPython2系の頃によく使われていたPDF解析用のライブラリです。しかしPython2.6系しかサポートしていません https://github.com/timClicks/slate/blob/master/setup.py#L32 。 ソースを見るとslateのPython3対応が少しは入っていますが不十分な修正となっています。[Python3.4+のPullRequest](https://github.com/timClicks/slate/pull/32 ...

    所要時間: 約 5分, 作成: 2017/1/23, 更新: 2017/1/23


  • github git

    Github上のプルリクエストをローカルに取り込む

    リポジトリをフォークした後でフォーク元に魅力的なプルリクエストがあった場合、それを取り込みたい。 hubコマンドを使えばプルリクエストをパッチとして扱い、ローカルのリポジトリに取り込むことができる。 brew install hub hubコマンドのインストール hubコマンドが使えるようになる。エイリアスなどでgitという名前でhubを実行するようにすることもある。 hub am -3 プルリクエストのURL という形式で指定すると、パッチが当た ...

    所要時間: 約 1分, 作成: 2017/1/23, 更新: 2017/1/23


  • django graphql python

    Djangoでgraphene_djangoを使ってGraphQL API

    この記事は、元々 https://qiita.com/TakesxiSximada/items/d64e34f77ff9139f7e1f に投稿していた記事だが、このサイトを使用しなくなったため、記事を移植しておく。 —- GraphQLのためのPython製フレームワークに [graphene](http://graphene-python.org/) がある。そしてgrapheneにはO/R Mapperで使いやすくしたライブラリがいくつかある。 今回はその中の1つ [graphene-django](https://github.com/graphql-python/graphene-django/) を使ってみる。 インストール venv環境を作ってactivateする。 $ ~/ng/home/src/develop/pyvm/pythons/Python-3.5.2/bin/python3 -m venv env $ source env/bin/activate (env) $ pipでインストールする。 (env) $ pip install graphene_django Collecting graphene-django Using cached ...

    所要時間: 約 5分, 作成: 2016/12/20, 更新: 2016/12/20


  • あれからn年経った ふりかえり medium

    あれから3年経った

    @TakesxiSximada です。この記事は この記事は フリーランス Advent Calendar 2016 (http://www.adventar.org/calendars/1407) 4日目の記事です。 フリーランスアドベントカレンダー2015 (http://www.adventar.org/calendars/780) も参加したので、今年も参加してみました。 昨年はこのアドベントカレンダーを利用して1年の振り返りをしました。 去年の記事はこちら https://medium.com/@TakesxiSximada/%E3%81%82%E3%82%8C%E3%81%8B%E3%82%892%E5%B9%B4%E7%B5%8C%E3%81%A3%E3%81%9F-163321d487a5#.1ohsj7m98 。 今年のテーマはお金の話のようなのですが、ちょっとテーマ自体が公になる場では書きにくいことが多いので、 去年に引き続き、1年の活動を振り返りたいと思います。 「Pytho ...

    所要時間: 約 4分, 作成: 2016/12/4, 更新: 2016/12/4


  • python numpy math

    numpyで学ぶ行列

    ndarray n次正方行列 shapeの第一要素と第二要素の値が同じになるような行列。 >>> np.array([[1,1], [1,1]]) array([[1, 1], [1, 1]]) >>> np.array([[1,1], [1,1]]).shape (2, 2) >>> np.array([[1,1,1], [1,1,1], [1,1,1]]) array([[1, 1, 1], [1, 1, 1], [1, 1, 1]]) >>> np.array([[1,1,1], [1,1,1], [1,1,1]]).shape (3, 3) >>> np.array([[1,1,1,1], [1,1,1,1], [1,1,1,1], [1,1,1,1]]) array([[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]) >>> np.array([[1,1,1,1], [1,1,1,1], [1,1,1,1], [1,1,1,1]]).shape (4, 4) ndarrayの属性 階数の取得 obj.ndim 各階の次元数の取得 obj.shape ndarrayの演算 和 >>> np.array([[5, 6], [-7, 8]]) + np.array([[1, -2], [3, -4]]) array([[ 6, 4], [-4, 4]]) スカラー倍 >>> 5 * np.array([[1, -3, 2], [1, 2, 7]]) array([[ 5, -15, 10], [ 5, 10, 35]]) 差 >>> np.array([[5,6], [-7,8]]) - np.array([[1,-2], [3,-4]]) array([[ 4, 8], [-10, 12]]) アダマール積 >>> np.array([[5,6], [7,8]]) * np.array([[1,2], [3,4]]) array([[ 5, 12], [21, 32]]) 内積 ...

    所要時間: 約 2分, 作成: 2016/9/1, 更新: 2016/9/1


  • python math numpy

    Pythonで学ぶスカラー/ベクトル/テンソル

    Pythonを使ってカラー/ベクトル/テンソルについてまとめた。 スカラー 大きさを表すもののこと。Pythonだと数値とかがスカラーになる。 1 # <- スカラー 1.5 # <- スカラー None # <- スカラーではない ValueError # <- スカラーではない 大きさを表すってことは順序関係(==, <, <=, >, >=)が定義されていること。 ベクトル 大きさと向きを表すもののこと。2次元平面とかだとX座標とY座標の値を (x, y) という形式で表現して、基底座標と ...

    所要時間: 約 2分, 作成: 2016/8/29, 更新: 2016/8/29


  • slack pelican googleanalytics

    GoogleAnalyticsの情報をSlackに通知する

    GoogleAnalyticsのレポートをブラウザでいちいち閲覧しにいくのは面倒なのでSlackに定期的に通知します。 Slack側 Incomming Webhook URLを取得する WebhookでSlackにメッセージを送るための`Incomming Webhook`というインテグレーションがあります。その機能を有効化します。 https://<YOUR-DOMAIN>.slack.com/home にアクセスすると設定されているインテグレーションを確認できます。 Incoming WebHook このような表示があればすでに設定さ ...

    所要時間: 約 3分, 作成: 2016/1/21, 更新: 2016/1/21


  • pelican googleanalytics

    pelican-twitchyでのGoogleAnalyticsの設定

    pelican-twitchyのGoogleAnalyticsの設定は[pelican-twitchyのREADME](https://github.com/ingwinlu/pelican-twitchy#google-analytics)に記載されています。通常のトラッキングIDを設定してみます。 pelicanconf.pyに次の設定を追加します。 GOOGLE_ANALYTICS = 'UA-72260316-1' # Tracking ID pelicanconf.py これだけです。あとはHTMLを生 ...

    所要時間: 約 1分, 作成: 2016/1/11, 更新: 2016/1/11


  • docker docker-conpose mysql

    docker-composeでMySQLを起動しようとすると[ERROR] InnoDB: Operating system error number 13 in a file operation.

    docker-composeでMySQLを起動しようとすると起動に失敗する状態に陥りました。 docker-compose.ymlは以下のように記述しています。 mysql: image: mysql:latest ports: - :3306 volumes: - data_mysql/volumes/mysql:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: toor docker-compose.yml この状態でdocker-compose upします。 $ docker-compose up mysql Attaching to mysql_1 ~~~省略~~~ mysql_1 | Initializing database mysql_1 | 2016-01-11T10:22:03.924035Z 0 [Warning] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive mysql_1 | 2016-01-11T10:22:03.955354Z 0 [ERROR] InnoDB: Operating system error number 13 in a file operation. mysql_1 | 2016-01-11T10:22:03.955507Z 0 [ERROR] InnoDB: The error means mysqld does not have the access rights to the directory. mysql_1 | 2016-01-11T10:22:03.956347Z 0 [ERROR] InnoDB: Operating system error number 13 in a file operation. ...

    所要時間: 約 5分, 作成: 2016/1/11, 更新: 2016/1/11


  • circleci comment

    特定のブランチだけCircleCIのbuildを走らせない

    Github PagesでPelicanをブログを書きCircleCIにdeployをさせているとgh-pagesへpushされた場合にbuildを走らせたくなかったので、その時のメモ。 circle.ymlに以下を書き込むと無視されるようになります。 general: branches: ignore: - gh-pages .circleci/config.yml 参考 Configuring CircleCI circleciで特定のbranchの時のみtestを無視する - とある元SEの学習日記

    所要時間: 約 1分, 作成: 2016/1/10, 更新: 2016/1/10


  • googlespreadsheet csv googleapps

    Google SpreadsheetにCSVを定期的にimportする

    可視化や集計のためにGoogle Spreadsheetを使用していてデータソースを外部から取得している場合、CSVのデータを定期的に更新したくなります。Google Scriptでそれを解決する方法をまとめます。 Google Scriptの使い方 Google Spreadsheetのメニューから [ツール] > [スクリプトエディター] を選択します。 選択すると別のタブでスクリプトエディタが開きます。 ここにスクリプトを書いていきま ...

    所要時間: 約 3分, 作成: 2016/1/10, 更新: 2016/1/10


  • docker docker-machine

    docker-machine createするとFATA[0000] Error creating machine

    docker-machinでvmを作成しようとすると=FATA[0000] Error creating machine=が発生してしまうようになったので、この問題をトラブルシューティングします。 $ docker-machine create --driver virtualbox --virtualbox-memory 2048 dev INFO[0000] Creating SSH key... INFO[0001] Creating VirtualBox VM... ERRO[0008] Error creating machine: exit status 1 WARN[0008] You will want to check the provider to make sure the machine and associated resources were properly removed. FATA[0008] Error creating machine $ --debug で出力確認する --debug オプションは詳細なログを出力します。これで何が起きているかを確認します。先ほど中途半端に作成したイメージは削除しておきま ...

    所要時間: 約 6分, 作成: 2016/1/10, 更新: 2016/1/10


  • pelican python markdown comment

    Pelicanのセットアップ

    インストール Pelicanをインストールします。venvなどは適時使ってください。今回はenvという名前でvenv環境を作ります。 $ python -m venv env $ source env/bin/bin/activate env環境のpipを使ってpelicanをインストールします。 (env) $ pip install pelican DEPRECATION: --download-cache has been deprecated and will be removed in the future. Pip now automatically uses and configures its cache. Collecting pelican Using cached pelican-3.6.3-py2.py3-none-any.whl Collecting docutils (from pelican) Using cached docutils-0.12-py3-none-any.whl Collecting pytz>=0a (from pelican) Using cached pytz-2015.7-py2.py3-none-any.whl Collecting unidecode (from pelican) Using cached Unidecode-0.04.18.tar.gz Collecting six>=1.4 (from pelican) Using cached six-1.10.0-py2.py3-none-any.whl Collecting feedgenerator>=1.6 (from pelican) Using cached feedgenerator-1.7.tar.gz Collecting pygments (from pelican) Using cached Pygments-2.0.2-py3-none-any.whl Collecting jinja2>=2.7 (from pelican) Using cached Jinja2-2.8-py2.py3-none-any.whl Collecting python-dateutil (from pelican) Using cached python_dateutil-2.4.2-py2.py3-none-any.whl Collecting blinker (from pelican) Collecting MarkupSafe (from jinja2>=2.7->pelican) Installing collected ...

    所要時間: 約 4分, 作成: 2016/1/9, 更新: 2016/1/9


  • あれからn年経った ふりかえり medium

    あれから2年経った

    https://medium.com/@TakesxiSximada/%E3%81%82%E3%82%8C%E3%81%8B%E3%82%892%E5%B9%B4%E7%B5%8C%E3%81%A3%E3%81%9F-163321d487a5 この記事は フリーランス Advent Calendar 2015 (http://www.adventar.org/calendars/780) の17日目の記事です。 フリーランスになって今年で3年目になります。特に今年は色々と活動できた年でした。少しだけ今年やったことを振り返りたいと思います。 書籍の執筆 「Pythonエンジニア養成読本(技術評論社)」を共著で書かせていただきました。また、書店にポップを書きに行ったり、読書会をやったりと、とても楽しかったです。 http://gihyo.jp/book/2015/978-4-7741-7320-7 Softlayer Bluemix Summitでのトークセッション Softlayer Bluemix Summ ...

    所要時間: 約 4分, 作成: 2015/12/17, 更新: 2015/12/17


  • jupyter python

    jupyter-notebook上でpep8のチェックをする

    jupyter-notebook上でコードを書いているとPEP8違反が気になります。 PyCharmやエディタの警告などが出ると嬉しいので、できるか調べてみたらありました。 やってみたらできたので手順を書いておきます(というかドキュメントに書いてあるのでそれをなぞる)。 pep8_magicをインストール > %install_ext https://raw.githubusercontent.com/SiggyF/notebooks/master/pep8_magic.py waringが出るかもしれないけどとりあえずシカトします。 pep8_magicをloadする > ...

    所要時間: 約 1分, 作成: 2015/12/12, 更新: 2015/12/12


  • python

    Python入門

    注意 :: この記事は2015/11/15に外部の情報共有サイトに投稿されたものです1。そのため記述されたため内容が古くなっています。 インストール https://www.python.org/downloads/ にインストーラがあるのでそれを使ってインストールします。現在(2015/11/15)の最新はPython3.5です。 Windows環境の方は環境変数を設定してください2。 Pythonについて Pythonの実行 ``` $ python Python 3.5.0 (default, Nov 15 2015, 16:08:58) [GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.72)] on darwin Type "help", "copyright", "credits" or "license" ...

    所要時間: 約 10分, 作成: 2015/11/15, 更新: 2015/11/15


  • python

    Pythonでスクレイピングする

    注意 :: この記事は2015/08/13に外部の情報共有サイトに投稿されたものです1。そのため記述されたため内容が古くなっています。 Pythonを使ってWebページにアクセスしてデータを抽出し、CSVやJSON形式として出力する方法を解説します。 WebからHTMLを取得する PythonでWebへのアクセスをする時に最も手軽な方法は `requests` を使う方法です。 `requests` はサードパーティパッケージなので `pip` を使ってインストー ...

    所要時間: 約 12分, 作成: 2015/8/13, 更新: 2015/8/13


  • Bluemix ibm

    IBM Bluemix

    cfコマンド ログイン $ cf login API endpoint: https://api.<MASK>.bluemix.net Email> <MASK> Password> Authenticating... OK Targeted org <MASK> Select a space (or press enter to skip): 1. test Space> API endpoint: https://api.<MASK>.bluemix.net (API version: 2.19.0) User: <MASK> Org: <MASK> Space: No space targeted, use 'cf target -s SPACE' スペースの作成 $ cf create-space <MASK> Creating space <MASK> in org <MASK> as <MASK>... OK Assigning role SpaceManager to user <MASK> in org <MASK> / space <MASK> as <MASK>... OK Assigning role SpaceDeveloper to user <MASK> in org <MASK> / space <MASK> as <MASK>... OK TIP: Use 'cf target -o <MASK> -s <MASK>' to target new space $ cf target -o <MASK> -s <MASK> API endpoint: https://api.<MASK>.bluemix.net (API version: 2.19.0) User: <MASK> Org: <MASK> Space: <MASK>

    所要時間: 約 1分, 作成: 2015/4/26, 更新: 2015/4/26


  • AWS Lambdaを用いてPythonスクリプトを実行する

    Pythonで書いたシンプルなスクリプトをTerraformを用いてAWS Lambdaにデプ ロイする方法を示す。 Terraformの設定 AWS Lambdaで用いるPythonスクリプトのアーカイブ ここが一番気になるところだろう。シンプルなPythonスクリプトの場合、わざ わざリポジトリを分割したくないしパッケージングもしたくない。できれば Terraformの構成と同様にPythonスクリプトも管理した ...

    所要時間: 約 4分, 作成: 0001/1/1, 更新: 0001/1/1


  • 作成: 0001/1/1, 更新: 0001/1/1


©TakesxiSximada