Skip to content

Instantly share code, notes, and snippets.

import json
import requests
import urllib
import sys
from xml.etree import ElementTree
doItAgain = "yes" #Control While loop
@y16ra
y16ra / digits.py
Created September 28, 2016 09:14
数値の桁数を求める
import math
n = 100
digits = int(math.log10(n) + 1) # 3
@y16ra
y16ra / slack-file-upload.js
Created June 14, 2016 08:51
slack apiで画像ファイルをアップロードする
var request = require('request');
var fs = require('fs');
const SLACK_BOT_TOKEN = 'hogehoge';
const api_url = 'https://slack.com/api/';
var fileName = 'hogefuga.png';
var channel = 'general';
options = {
token: SLACK_BOT_TOKEN,
filename: fileName,
@y16ra
y16ra / most_expensive_query.sql
Created January 26, 2016 05:07
過去7日間で最も費用がかかったクエリを抽出する
SELECT
protoPayload.authenticationInfo.principalEmail AS email,
ROUND(SUM(protoPayload.serviceData.jobCompletedEvent.job.jobStatistics.totalBilledBytes) /1000000000, 3) AS total_GBytes,
protoPayload.serviceData.jobCompletedEvent.job.jobStatistics.billingTier AS billing_tier,
COUNT(protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.query.query) AS query_count,
protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.query.query AS query_string,
FROM
TABLE_DATE_RANGE(AuditLogs.cloudaudit_googleapis_com_data_access_, DATE_ADD(CURRENT_TIMESTAMP(), -7, 'DAY'), CURRENT_TIMESTAMP())
WHERE
protoPayload.serviceData.jobCompletedEvent.eventName = 'query_job_completed'
@y16ra
y16ra / url-monitoring.gs
Last active January 19, 2016 04:52
URL Monitoring using Google AppsScript
/**
* スプレッドシートに記載したURLの外形監視を実行する。
* 指定されたURLに接続してステータスコードが200以外の場合メールで通知する。
* また、前回の実行時に200以外のステータスコードだった場合で、
* ステータスが200になった場合は復旧メールを送信する。
* スプレッドシートの項目は、サービス名, 監視対象URL, ステータス, emails(10個まで) とする。
*/
function monitoring() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
@y16ra
y16ra / import_slack_exportdata.py
Created December 1, 2015 10:37
slackからexportしたデータをMongoDBに取り込む
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import json
import sys, os, datetime
import pymongo
# sysモジュールをリロードする
reload(sys)
# デフォルトの文字コードを変更する.
sys.setdefaultencoding('utf_8')
@y16ra
y16ra / fq5-query.sql
Created May 28, 2015 04:40
FQ5 Query
select
id,
case
when ((dt_bit & 31) = 31) then 5
when ((dt_bit & 15) = 15) then 4
when ((dt_bit & 7) = 7) then 3
when ((dt_bit & 3) = 3) then 2
when ((dt_bit & 1) = 1) then 1
else 0
end as fq
@y16ra
y16ra / save_mail_attachments.js
Created May 12, 2015 10:15
JXA(Javascript for Automation)で添付ファイルを保存する
var Mail = Application("Mail");
Mail.includeStandardAdditions = true;
// 選択したメッセージを取得
var messages = Mail.selection();
for (i = 0; i < messages.length; i++) {
var thisMessage = messages[i];
// メッセージに添付されたファイルを取得しhogehogeユーザホームに保存する
var atFiles = thisMessage.mailAttachments();
@y16ra
y16ra / gcp-storage.js
Created May 8, 2015 10:03
node.jsでGoogle Cloud Strageのファイル操作する例
var projectId = process.env.GCLOUD_PROJECT_ID
var gcloud = require('gcloud')({
projectId: projectId,
keyFilename: '/local/path/to/keyfile'
});
var storage = gcloud.storage();
var bucket = storage.bucket('storageName');
var options = {
destination: '2015/05/file',
@y16ra
y16ra / sitemap.js
Created April 23, 2015 08:49
sitemap.xmlをパースしてURLの一覧を取り出す
/*
* 使いにくい部分があったのでいろいろ直していますが
* 基本は以下のライブラリのソースを使っています。
*
* Sitemap Parser
* Copyright (c) 2014 Sean Thomas Burke
* Licensed under the MIT license.
* https://github.com/hawaiianchimp/sitemap-parser.git
*/