My Note:
notes's Introduction
notes's People
notes's Issues
Ubuntu Install ruby-oci8 Gem Note
sudo apt-get install build-essential libaio-dev unzip
mkdir /opt
mkdir /opt/oracle
cd /opt/oracle
wget https://dn-agi-public3.qbox.me/xxx/instantclient-sdk-linux-12.1.0.2.0.zip
wget https://dn-agi-public3.qbox.me/xxx/instantclient-basic-linux.x64-12.1.0.2.0.zip
wget https://dn-agi-public3.qbox.me/xxx/instantclient-sqlplus-linux-12.1.0.1.0.zip
unzip instantclient-basic*
unzip instantclient-sdk*
unzip instantclient-sqlplus*
cd /opt/oracle/instantclient1*
ln -s libclntsh.so.12.1 libclntsh.so
export LD_LIBRARY_PATH=/opt/instantclient
gem install ruby-oci8
自动喷码机如何实现动态打印
自动喷码机如何实现动态打印
需求:
喷码机要求支持通讯模块
前面一台,测试机器(我们自己开发的),
- 测试成功, 我们通过RS232接口告诉喷码机 打印101,再成功102
- 测试失败, 我们通过RS232接口告诉喷码机 打印空白(表示不能喷码)
只要接3条
- 设备GND(5) - 电脑GND(5)
- 设备TXD(3) - 电脑RXD(2)
- 设备RXD(8) - 电脑TXD(3)
用万用表测到(公头,颜色对照)
- 鲜红 1
- 白 7
- 绿 3
- 黄 4
- 紫 6
- 灰 8
- 黑 5
- 橙 2
- 蓝 9
从厂家获取说明文件
注意文档中说设备号是01,实际是00
以下是调试时的截图
使用说明:
- 启动设备
- 菜单-变量数据-修改-通讯-固定长度(长度不足要自己填空白)
- 菜单
- 编辑-文件-新建文件-清楚当前内容
- 文本-绑定为变量
- 确定
- 连接设备
- 发送更新命令
- 喷码打印
- 重复上两步
有时需要清理缓存
相关其他文档:
当 Docker 无法兼容 fsevent 导致更新失败, 可以用这个办法
fsevents_to_vm start --debug --ssh-identity-file ~/.ssh/id_rsa --ssh-ip your.com ~/Project
ELK docker 生成自己域名的KEY
生成自己域名的KEY
REF: https://elk-docker.readthedocs.io/#security-considerations
- 确定下域名. 比如 logstash.agideo.com
- 到container 中运行
cd /etc/pki/tls
openssl req -x509 -batch -nodes -subj "/CN=logstash.agideo.com/" \
-days 3650 -newkey rsa:2048 \
-keyout private/logstash-beats.key -out certs/logstash-beats.crt
- restart logstash
怎么使用 ELK Stack 监控 日志.
怎么使用 ELK Stack 集中管理日志
目地:
- 集中存储: 不会丢, 找得快
- 搜索方便
- 报表方便
通过搜索, 发现 ELK Stack 是普遍方案, 同时又可以用docker跑.
ELK Stack 是 Elasticsearch、Logstash、Kibana 三个开源软件的组合。在实时数据检索和分析场合,三者通常是配合共用,而且又都先后归于 Elastic.co 公司名下,故有此简称。
-
Ruby with docker
docker run -it --rm -p 5601:5601 -p 9200:9200 -p 5044:5044 -p 5000:5000 --name elk sebp/elk
-
进入 container, 复制 /usr/local/etc/ssl/certs/logstash-beats.crt 到客户端
-
配置 filebeat.yml
filebeat: prospectors: - document_type: nginx-access paths: - nginx-access.log output: logstash: enabled: true hosts: - "localhost:5044" tls: certificate_authorities: - logstash-beats.crt
-
Run
filebeat -v -e
REF:
Redis如何迁移数据
目标:
想把 redis1 服务器的数据迁移到Redis2:
- 进入 redis2
- redis-cli
- SLAVEOF redis1 6379
- 停掉redis1
- 断开复制模式 SLAVEOF NO ONE
- 完成
ruby invoke webservices with savon
require 'rubygems'
require 'bundler'
Bundler.setup(:default)
require "savon"
require "pry"
client = Savon.client(
:wsdl => "http://ws.cdyne.com/emailverify/Emailvernotestemail.asmx?wsdl",
:open_timeout => 10,
:read_timeout => 10,
:log => false
)
response = client.call(:verify_email, :message => { :email => "[email protected]", "LicenseKey" => "?" })
response_text = response.body[:verify_email_response][:verify_email_result][:response_text]
p response_text
=begin
➜ use_savon ruby main.rb
"Email Domain Not Found"
➜ use_savon ruby main.rb
"User Not Found"
➜ use_savon ruby main.rb
"Mail Server will accept email"
=end
homeland-docker 调试笔记 验证码无论怎么输入都无效
vendor/bundle/ruby/2.7.0/gems/rucaptcha-2.5.3/lib/rucaptcha/controller_helpers.rb 加入日志打印
module RuCaptcha
module ControllerHelpers
extend ActiveSupport::Concern
included do
helper_method :verify_rucaptcha?
end
# session key of rucaptcha
def rucaptcha_sesion_key_key
session_id = session.respond_to?(:id) ? session.id : session[:session_id]
File.open("/tmp/a", "a") {|f| f.puts ["sessionid ", session_id].inspect }
warning_when_session_invalid if session_id.blank?
# With https://github.com/rack/rack/commit/7fecaee81f59926b6e1913511c90650e76673b38
# to protected session_id into secret
session_id_digest = Digest::SHA256.hexdigest(session_id.inspect)
['rucaptcha-session', session_id_digest].join(':')
end
# Generate a new Captcha
def generate_rucaptcha
res = RuCaptcha.generate()
session_val = {
code: res[0],
time: Time.now.to_i
}
File.open("/tmp/a", "a") {|f| f.puts ["generate_rucaptcha 2020-12-24_091847 write_session ", rucaptcha_sesion_key_key].inspect }
RuCaptcha.cache.write(rucaptcha_sesion_key_key, session_val, expires_in: RuCaptcha.config.expires_in)
res[1]
end
# Verify captcha code
#
# params:
# resource - [optional] a ActiveModel object, if given will add validation error message to object.
# :keep_session - if true, RuCaptcha will not delete the captcha code session.
# :captcha - if given, the value of it will be used to verify the captcha,
# if do not give or blank, the value of params[:_rucaptcha] will be used to verify the captcha
#
# exmaples:
#
# verify_rucaptcha?
# verify_rucaptcha?(user, keep_session: true)
# verify_rucaptcha?(nil, keep_session: true)
# verify_rucaptcha?(nil, captcha: params[:user][:captcha])
#
def verify_rucaptcha?(resource = nil, opts = {})
opts ||= {}
File.open("/tmp/a", "a") {|f| f.puts ["verify_rucaptcha 2020-12-24_091837 get_session ", rucaptcha_sesion_key_key].inspect }
store_info = RuCaptcha.cache.read(rucaptcha_sesion_key_key)
# make sure move used key
RuCaptcha.cache.delete(rucaptcha_sesion_key_key) unless opts[:keep_session]
# Make sure session exist
if store_info.blank?
return add_rucaptcha_validation_error
end
# Make sure not expire
if (Time.now.to_i - store_info[:time]) > RuCaptcha.config.expires_in
return add_rucaptcha_validation_error
end
# Make sure parama have captcha
captcha = (opts[:captcha] || params[:_rucaptcha] || '').downcase.strip
if captcha.blank?
return add_rucaptcha_validation_error
end
if captcha != store_info[:code]
return add_rucaptcha_validation_error
end
true
end
private
def add_rucaptcha_validation_error
if defined?(resource) && resource && resource.respond_to?(:errors)
resource.errors.add(:base, t('rucaptcha.invalid'))
end
false
end
def warning_when_session_invalid
return unless Rails.env.development?
Rails.logger.warn "
WARNING! The session.id is blank, RuCaptcha can't work properly, please keep session available.
More details about this: https://github.com/huacnlee/rucaptcha/pull/66
"
end
end
end
发现验证时Session丢了?看 Rails日志,发现
HTTP Origin header (https://a.com) didn't match request.base_url (http://a.com)
调查发现最终是web container 内 /etc/nginx/homeland.conf
- proxy_set_header X-Forwarded-Proto $scheme;
+ proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
原因:默认方式是直接安装到一台服务器,而我是需要 traefik 一步一步代理进来
ActionView::Template::Error (incompatible character encodings: ASCII-8BIT and UTF-8)
用docker 时因为包安装的少, 有几率抛这个错
ActionView::Template::Error (incompatible character encodings: ASCII-8BIT and UTF-8):
46: link rel="apple-touch-startup-image" href="/demo/img/splash/ipad-portrait.png" media="screen and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:portrait)"
47: link rel="apple-touch-startup-image" href="/demo/img/splash/iphone.png" media="screen and (max-device-width: 320px)"
48:
49: = include_gon
50: /- if Rails.env.development?
51: /script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.1/react-with-addons.js"
52: /script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.1/react-dom.js"
app/views/layouts/application.html.slim:49:in `_app_views_layouts_application_html_slim__2886400402124914098_47450135072760'
查下locale
root@a719268c75f0:/app# locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
解决方法:
apt-get install locales
echo 'en_US.UTF-8 UTF-8' > locale-gen
locale-gen
如果是Dockerfile 里
RUN apt-get install locales
RUN echo 'en_US.UTF-8 UTF-8' > /etc/locale.gen
RUN locale-gen
ENV LC_ALL en_US.UTF-8
查 locale
LANG=
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
Axure 怎么支持随机姓名(Random name)
Axure 怎么支持随机姓名(Random name)
插件地址: https://gitee.com/cxwithyxy/Axure_Js_Inject
keywords: Random person name , 嵌入JS
如何基于 docker 开始一个新的Rails项目
cat <<EOF >> Dockerfile
FROM ruby:3-alpine3.13
EXPOSE 3000
RUN apk add --update \
build-base \
mariadb-dev \
nodejs yarn \
tzdata \
&& rm -rf /var/cache/apk/*
RUN mkdir -p /app
WORKDIR /app
VOLUME /app
ADD Dockerfile /Dockerfile
CMD ["sh", "-c", "env >> /etc/environment ; tail -f /dev/null"]
EOF
# docker-compose.yml
cat <<EOF >> docker-compose.yml
version: "3"
services:
mysql:
image: mysql:8.0
environment:
- MYSQL_ROOT_PASSWORD=root
volumes:
- "mysql_data:/var/lib/mysql"
- ".:/app"
main:
build: .
ports:
- "3000:3000"
volumes:
- ".:/app"
- "ruby_bundle:/usr/local/bundle"
- "~/.ssh/id_rsa:/root/.ssh/id_rsa"
depends_on:
- mysql
volumes:
mysql_data:
EOF
docker-compose up -d
docker-compose exec main sh -c "gem install rails"
docker-compose exec main sh -c "rails new . -d mysql"
vim database.yml
docker-compose exec main sh -c "rake db:create"
docker-compose exec main sh -c "rails s -b 0.0.0.0"
# 可能用到
# docker-compose exec main sh -c "bundle"
# docker-compose exec main sh -c "rails webpacker:install"
docker-compose wordpress
version: '2'
services:
wordpress:
image: wordpress
ports:
- 10500:80
environment:
WORDPRESS_DB_PASSWORD: password
mysql:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
- ./data:/var/lib/mysql
realpath
我们经常用到全文件名 一般是用 ls 加 pwd 来组合得到. 对于最求效率的来说, 这个肯定不行 「realpath」你值得拥有
deployer@s155:~/script$ realpath start_wzhw_service.bash
/home/deployer/script/start_wzhw_service.bash
教学: 如何用Docker开发 rails + react 的项目笔记
vi docker-compose.yml
version: "2"
services:
mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=xxx
volumes:
- "mysql-data:/var/lib/mysql"
- "./mnt:/mnt"
redis:
image: redis:3.2-alpine
volumes:
- "redis-data:/data"
- "./mnt:/mnt"
main:
image: ubuntu
hostname: check_me-dev
ports:
- "10980:8080"
- "10900:3000"
volumes:
- ".:/app"
- "/Users/alvin/.ssh/id_rsa:/root/.ssh/id_rsa"
- "./mnt:/mnt"
environment:
- DOCKER_ENV=development
depends_on:
- redis
- mysql
volumes:
mysql-data:
redis-data:
gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
bundle config mirror.https://rubygems.org https://gems.ruby-china.org
gem install rails
export PATH=/usr/local/node/bin:/usr/local/bundle/bin:$PATH
cd /app
rails new .
rails g scaffold book name:string
rails g controller home index
mkdir frontend
cd frontend
npm config set registry https://registry.npm.taobao.org
npm info underscore
npm install -g create-react-app
create-react-app .
PORT=8080 HOST=0.0.0.0 npm run start
http://aa.docker.do8.cc:10980/static/js/bundle.js
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.