All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Fix: fix is_minor method for version (6d08978 by Loïc Viennois).
app: | |
description: '' | |
icon: "\U0001F916" | |
icon_background: '#FFEAD5' | |
mode: advanced-chat | |
name: 'iteration node demo: break-while-loop-poc' | |
workflow: | |
features: | |
file_upload: | |
image: |
require 'webrick' | |
require 'open3' | |
server = WEBrick::HTTPServer.new :Port => 8000 | |
server.mount_proc('/') { |req, res| res.body = Open3.capture2(ARGV[0], :stdin_data=>req.body)[0] } | |
trap('INT') { server.shutdown } | |
server.start | |
# server: | |
# ruby webify-webrick.rb "wc -c" |
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
为了方便CITA服务的运维,我们开发了 CITA 的监控服务,可用于监控节点中CITA的服务运行情况,包括区块链数据、CITA进程的存活监控、运行环境监控、故障自动告警通知。
软件架构:基于 Prometheus 框架开发;使用 Grafana 做可视化面板;使用 Alertmanager 做告警消息分发;运行架构上分为用于数据存储、信息展示、告警分发的 Server 端;区块链数据、软件进程、运行环境监控指标收集的 Agent 端;各端均使用微服务架构分离功能职责,并使用 Docker Compose 部署方式解决服务的依赖管理,轻松做到一行命令更新、启动服务。
#!/usr/bin/python3 | |
# -*- coding: utf-8 -*- | |
# demo for using package "requests-cache" to cache the API request result, store cached data in a sqlite db as "cita_testnet_jsonrpc_cache.sqlite" | |
import requests | |
import requests_cache # doc: https://requests-cache.readthedocs.io/en/latest/ | |
import time | |
# doc: http://flask.pocoo.org/docs/1.0/ |
#!/bin/bash | |
# scan Google Chrome installed Extensions dir and show each extension's info | |
# refs: https://www.jamf.com/jamf-nation/discussions/11307/chrome-extension-reporting | |
loggedInUser=$( ls -l /dev/console | awk '{print $3}' ) | |
path="/Users/${loggedInUser}/Library/Application Support/Google/Chrome/Default/Extensions" | |
if [[ $1 != "" ]]; then | |
path=$1 | |
echo "Read extensions from \"$path\"" | |
echo |
#!/bin/bash | |
# refs: | |
# https://segmentfault.com/q/1010000003000974 | |
# http://blog.csdn.net/guoer9973/article/details/46459971 | |
# http://www.cnblogs.com/sink_cup/p/cloud_storage_aliyun_oss_vs_qiniu_rs.html | |
# api: | |
# https://developer.qiniu.com/kodo/api/1312/upload |
require_relative 'boot' | |
require_relative 'rails_initializable_hack' | |
require 'rails/all' | |
# Require the gems listed in Gemfile, including any gems | |
# you've limited to :test, :development, or :production. | |
Bundler.require(*Rails.groups) | |
module Rails5NewDemo |
# ref: http://blog.arkency.com/2016/11/ruby-exceptions-are-4400-times-faster-than-activerecord-base-number-create/ | |
require 'active_record' | |
require 'benchmark/ips' | |
ActiveRecord::Base.logger = nil | |
ActiveRecord::Base.establish_connection adapter: 'sqlite3', | |
database: ':memory:' | |
ActiveRecord::Schema.define do | |
create_table :whatevers do |table| | |
table.column :text, :string |
class Statistic | |
# save message to a log file | |
# usage: | |
# Statistic.log "message" | |
# Statistic.log { var } | |
def self.log(message = nil, &block) | |
@logger ||= Logger.new(Rails.root.join('log', "statistic.#{Rails.env}.log")) | |
begin | |
message = yield if block_given? | |
@logger.info("#{Time.current} #{message}") |